- Updated the SSL certificate for yuri.phx-erp.de with a new signed certificate. - Added a new NGINX configuration file for pgAdmin reverse proxy under the subpath /pgadmin4. - Enhanced the main NGINX configuration with improved logging, security headers, and real IP handling. - Implemented health check endpoints for both system and worker services with IP whitelisting. - Created a new entrypoint script for pgAdmin to manage .pgpass and servers.json configuration. - Removed the redis.conf file and commented out Redis session caching in the configuration.
201 lines
6.8 KiB
TypeScript
201 lines
6.8 KiB
TypeScript
/* tslint:disable:no-console */
|
|
import path from 'path';
|
|
import { DataSourceOptions } from 'typeorm';
|
|
import { WinstonLogger, LogLevel, TypeOrmLogger, SystemConfig, DefaultJobQueuePlugin } from '@phoenix/core';
|
|
import { AssetServerPlugin } from '@phoenix/asset-server-plugin';
|
|
import { ADMIN_API_PATH, API_PORT, SHOP_API_PATH, SUPER_ADMIN_USER_IDENTIFIER } from '@phoenix/common';
|
|
import { EmailPlugin, FileBasedTemplateLoader, defaultEmailHandlers } from '@phoenix/email-plugin';
|
|
import { BillBeePlugin } from "@phoenix/bill-bee-plugin";
|
|
import { ChannelPilotProPlugin } from "@phoenix/channel-pilot-pro-plugin";
|
|
import { ShopifyPlugin } from '@phoenix/shopify-plugin';
|
|
|
|
// RedisSessionCachePlugin
|
|
|
|
/**
|
|
* Config settings used during development
|
|
*/
|
|
export const customConfig: SystemConfig = {
|
|
apiOptions: {
|
|
port: API_PORT,
|
|
// sslPort: API_SSL_PORT,
|
|
//sslCertPath: path.join(__dirname, '../secrets/certificate.crt'),
|
|
//sslKeyPath: path.join(__dirname, '../secrets/certificate.key'),
|
|
adminApiPath: ADMIN_API_PATH,
|
|
shopApiPath: SHOP_API_PATH,
|
|
cors: {
|
|
origin: true,
|
|
credentials: true,
|
|
},
|
|
},
|
|
authOptions: {
|
|
disableAuth: true,
|
|
sessionSecret: 'some-secret',
|
|
requireVerification: false,
|
|
tokenMethod: "bearer",
|
|
superadminCredentials: {
|
|
identifier: SUPER_ADMIN_USER_IDENTIFIER,
|
|
password: process.env.SUPER_ADMIN_USER_PASSWORD || 'superadmin'
|
|
}
|
|
},
|
|
dbConnectionOptions: {
|
|
// synchronize: true,
|
|
// logging: true,
|
|
logger: new TypeOrmLogger(),
|
|
...getDbConfig(),
|
|
// logging: ["error"]
|
|
},
|
|
// paymentOptions: {
|
|
// // paymentMethodHandlers: [examplePaymentHandler],
|
|
// },
|
|
customFields: {
|
|
Product: [
|
|
{
|
|
name: 'testo',
|
|
type: 'string',
|
|
}
|
|
],
|
|
DocumentLineItem: [
|
|
],
|
|
PostProductionDetail: [
|
|
],
|
|
},
|
|
searchableFields: {
|
|
processResource: [
|
|
"scanId"
|
|
]
|
|
},
|
|
logger: new WinstonLogger({ level: LogLevel.Debug }),
|
|
workerLogger: new WinstonLogger({ level: LogLevel.Info }),
|
|
//importExportOptions: {
|
|
// importProductAssetsDir: path.join(__dirname, 'import', 'product-assets'),
|
|
//},
|
|
defaults: {
|
|
defaultTakeNumber: 100,
|
|
},
|
|
plugins: [
|
|
// RedisSessionCachePlugin.init({
|
|
// namespace: 'phx-session',
|
|
// redisOptions: {
|
|
// host: process.env.REDIS_HOST || 'redis',
|
|
// port: process.env.REDIS_PORT ? parseInt(process.env.REDIS_PORT) : 6379,
|
|
// db: process.env.REDIS_DB ? parseInt(process.env.REDIS_DB) : 0,
|
|
// password: process.env.REDIS_PASSWORD || 'admin'
|
|
// }
|
|
// }),
|
|
AssetServerPlugin.init({
|
|
route: 'remote-assets',
|
|
assetUploadDir: path.join(__dirname, 'assets'),
|
|
port: 5002,
|
|
assetUrlPrefix: "\\remote-assets\\" // to make it relative for client
|
|
}),
|
|
DefaultJobQueuePlugin.init({
|
|
useDatabaseForBuffer: true
|
|
}),
|
|
EmailPlugin.init({
|
|
sendRealEmails: true,
|
|
route: 'mailbox',
|
|
handlers: [...defaultEmailHandlers],
|
|
// Dynamic Email Templates
|
|
templateLoader: new FileBasedTemplateLoader(path.join(__dirname, '..', '../email-plugin/templates')),
|
|
globalTemplateVars: {
|
|
verifyEmailAddressUrl: 'http://localhost:4201/verify',
|
|
passwordResetUrl: 'http://localhost:4201/reset-password',
|
|
changeEmailAddressUrl: 'http://localhost:4201/change-email-address',
|
|
}
|
|
}),
|
|
BillBeePlugin.init({
|
|
active: process.env.BILL_BEE_ACTIVE === 'true',
|
|
}),
|
|
ChannelPilotProPlugin.init({
|
|
active: process.env.CHANNEL_PILOT_PRO_ACTIVE === 'true'
|
|
}),
|
|
ShopifyPlugin.init({
|
|
active: process.env.SHOPIFY_ACTIVE === 'true'
|
|
}),
|
|
// DefaultStoragePlaceRankPlugin.init({})
|
|
// new DefaultSearchPlugin(),
|
|
// new ElasticsearchPlugin({
|
|
// host: 'http://192.168.99.100',
|
|
// port: 9200,
|
|
// }),
|
|
// DocusignPlugin.init({
|
|
// devMode:true,
|
|
// handlers: defaultDocusignHandlers,
|
|
// assetDownloadDir: path.join(__dirname, 'docusign'),
|
|
// assetUploadDir: path.join(__dirname, 'docusign'),
|
|
// port: API_PORT,
|
|
// route: "docusign"
|
|
// }),
|
|
// new AdminUiPlugin({
|
|
// port: 5001,
|
|
// }),
|
|
]
|
|
// ApolloEngineApiKey: "service:Logic-Bits-2900:5w1aCP5YUtF-1ErRG0KNQw"
|
|
};
|
|
|
|
function getDbConfig(): DataSourceOptions {
|
|
const dbType = process.env.DB || 'postgres';
|
|
const dbHost = process.env.DB_HOST || 'localhost';
|
|
const dbPort = +process.env.DB_PORT || 5432;
|
|
|
|
const connectionPoolMax = process.env.CONNECTION_POOL_MAX ?? 20;
|
|
|
|
const dbUsername = process.env.DB_USERNAME || 'postgres';
|
|
const password = process.env.DB_PASSWORD || 'admin';
|
|
const database = process.env.DB_NAME || 'phoenix'
|
|
|
|
if (password == "admin")
|
|
console.warn("default postgres password is used!");
|
|
|
|
if (process.env.DB_HOST)
|
|
console.log(`using DB Host ${dbHost} from env`);
|
|
|
|
console.log(`using Database ${database}`);
|
|
console.log(`using User ${dbUsername}`);
|
|
|
|
switch (dbType) {
|
|
case 'postgres':
|
|
console.log('Using postgres connection at ' + dbHost);
|
|
return {
|
|
synchronize: false,
|
|
type: 'postgres',
|
|
//host: '127.0.0.1',
|
|
host: dbHost,
|
|
port: dbPort,
|
|
username: dbUsername,
|
|
password: password,
|
|
database: database,
|
|
// logging: "all",
|
|
extra: {
|
|
max: connectionPoolMax
|
|
}
|
|
};
|
|
case 'sqlite':
|
|
console.log('Using sqlite connection');
|
|
return {
|
|
type: 'sqlite',
|
|
database: path.join(__dirname, 'phoenix.sqlite'),
|
|
};
|
|
case 'sqljs':
|
|
console.log('Using sql.js connection');
|
|
return {
|
|
type: 'sqljs',
|
|
autoSave: true,
|
|
database: new Uint8Array([]),
|
|
location: path.join(__dirname, 'phoenix.sqlite'),
|
|
};
|
|
case 'mysql':
|
|
default:
|
|
console.log('Using mysql connection');
|
|
return {
|
|
synchronize: true,
|
|
type: 'mysql',
|
|
host: '192.168.99.100',
|
|
port: 3306,
|
|
username: 'root',
|
|
password: '',
|
|
database: 'phoenix-dev',
|
|
};
|
|
}
|
|
}
|