import { EggAppConfig, EggAppInfo, PowerPartial } from 'egg';

export default (appInfo: EggAppInfo) => {
  const config = {} as PowerPartial<EggAppConfig>;

  // override config from framework / plugin
  // use for cookie sign key, should change to your own and keep security
  config.keys = appInfo.name + '_1600244957952_7142';

  // add your egg config in here
  config.middleware = [];
  
  config.cluster = {
    listen: {
      port: 7500
    }
  };
  // add your special config in here
  const bizConfig = {
    sourceUrl: `https://github.com/eggjs/examples/tree/master/${appInfo.name}`,
  };
  
  config.mongoose = {
    url: 'mongodb://127.0.0.1:27017/zyz', // 内网
    options: { useNewUrlParser: true, useUnifiedTopology: true },
  };

  config.security = {
    csrf: {
      enable: false,
      ignoreJSON: true
    },
    domainWhiteList: ['http://localhost:9000']
  };

  // 配置上传
  config.multipart = {
    fileSize: '100mb',
    mode: 'stream',
    whitelist: [
      '.json', '.ts', '.zip'
    ],
    fileExtensions: ['.json', '.ts', '.zip', '.tar.gz'], // 扩展几种上传的文件格式
    autoFields: true
  };

  config.alinode = {
    appid: '86043',
    secret: '54ef0364995b0c4f2ab42150e29ad30df8327a3a',
    error_log: [ '/root/logs/zyz/zyz-web.log', '/root/logs/zyz/common-error.log', '/root/logs/zyz/egg-agent.log' ],
    packages: [ '/root/zyz/web-server/package.json' ],
  };

  // the return config will combines to EggAppConfig
  return {
    ...config,
    ...bizConfig,
  };
};
