mirror of
https://github.com/LLM-Red-Team/glm-free-api.git
synced 2025-03-13 17:17:28 +08:00
68 lines
1.9 KiB
TypeScript
68 lines
1.9 KiB
TypeScript
|
import path from 'path';
|
||
|
|
||
|
import fs from 'fs-extra';
|
||
|
import yaml from 'yaml';
|
||
|
import _ from 'lodash';
|
||
|
|
||
|
import environment from '../environment.ts';
|
||
|
import util from '../util.ts';
|
||
|
|
||
|
const CONFIG_PATH = path.join(path.resolve(), 'configs/', environment.env, "/service.yml");
|
||
|
|
||
|
/**
|
||
|
* 服务配置
|
||
|
*/
|
||
|
export class ServiceConfig {
|
||
|
|
||
|
/** 服务名称 */
|
||
|
name: string;
|
||
|
/** @type {string} 服务绑定主机地址 */
|
||
|
host;
|
||
|
/** @type {number} 服务绑定端口 */
|
||
|
port;
|
||
|
/** @type {string} 服务路由前缀 */
|
||
|
urlPrefix;
|
||
|
/** @type {string} 服务绑定地址(外部访问地址) */
|
||
|
bindAddress;
|
||
|
|
||
|
constructor(options?: any) {
|
||
|
const { name, host, port, urlPrefix, bindAddress } = options || {};
|
||
|
this.name = _.defaultTo(name, 'glm-free-api');
|
||
|
this.host = _.defaultTo(host, '0.0.0.0');
|
||
|
this.port = _.defaultTo(port, 5566);
|
||
|
this.urlPrefix = _.defaultTo(urlPrefix, '');
|
||
|
this.bindAddress = bindAddress;
|
||
|
}
|
||
|
|
||
|
get addressHost() {
|
||
|
if(this.bindAddress) return this.bindAddress;
|
||
|
const ipAddresses = util.getIPAddressesByIPv4();
|
||
|
for(let ipAddress of ipAddresses) {
|
||
|
if(ipAddress === this.host)
|
||
|
return ipAddress;
|
||
|
}
|
||
|
return ipAddresses[0] || "127.0.0.1";
|
||
|
}
|
||
|
|
||
|
get address() {
|
||
|
return `${this.addressHost}:${this.port}`;
|
||
|
}
|
||
|
|
||
|
get pageDirUrl() {
|
||
|
return `http://127.0.0.1:${this.port}/page`;
|
||
|
}
|
||
|
|
||
|
get publicDirUrl() {
|
||
|
return `http://127.0.0.1:${this.port}/public`;
|
||
|
}
|
||
|
|
||
|
static load() {
|
||
|
const external = _.pickBy(environment, (v, k) => ["name", "host", "port"].includes(k) && !_.isUndefined(v));
|
||
|
if(!fs.pathExistsSync(CONFIG_PATH)) return new ServiceConfig(external);
|
||
|
const data = yaml.parse(fs.readFileSync(CONFIG_PATH).toString());
|
||
|
return new ServiceConfig({ ...data, ...external });
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
export default ServiceConfig.load();
|