/** * GEO 数据库的四类文件。名字和默认下载地址都来自内核源码, * 界面(资源一节)和服务端(查文件大小和时间)共用这一份。 */ export interface GeoFileStatus { /** 界面上显示的名字 */ key: string /** 在配置 geox-url 段落里的键名(config.go:363-368) */ configKey: string /** 下载地址:配置里写了用配置的,没写是内核默认 */ url: string /** 文件字节数。文件还没下载过是 null */ size: number | null /** 文件修改时间,ISO 格式。没下载过是 null */ updatedAt: string | null } /** * 文件名与内核一致(constant/path.go:18-20、144)。 * GeoIP.dat 和 GeoSite.dat 内核在目录里大小写不敏感地找(path.go:193-224), * 服务端查文件时也要同样处理。 */ export const GEO_FILES = [ { key: 'MMDB', configKey: 'mmdb', file: 'geoip.metadb' }, { key: 'ASN', configKey: 'asn', file: 'ASN.mmdb' }, { key: 'GEOIP', configKey: 'geoip', file: 'GeoIP.dat' }, { key: 'GEOSITE', configKey: 'geosite', file: 'GeoSite.dat' }, ] as const /** 内核的默认下载地址(config.go:578-583)。配置里没写 geox-url 时就是这些。 */ export const DEFAULT_GEOX_URLS: Record = { mmdb: 'https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip.metadb', asn: 'https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/GeoLite2-ASN.mmdb', geoip: 'https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip.dat', geosite: 'https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geosite.dat', }