singbox.ts 872 B

12345678910111213141516171819202122232425262728
  1. const unsupported = Symbol('unsupported');
  2. // https://sing-box.sagernet.org/configuration/rule-set/source-format/
  3. export const PROCESSOR: Record<string, ((raw: string, type: string, value: string) => [key: keyof SingboxHeadlessRule, value: Required<SingboxHeadlessRule>[keyof SingboxHeadlessRule][number]] | null) | typeof unsupported> = {
  4. 'IP-ASN': unsupported,
  5. 'URL-REGEX': unsupported,
  6. 'USER-AGENT': unsupported
  7. };
  8. interface SingboxHeadlessRule {
  9. domain?: string[],
  10. domain_suffix?: string[],
  11. domain_keyword?: string[],
  12. domain_regex?: string[],
  13. source_ip_cidr?: string[],
  14. ip_cidr?: string[],
  15. source_port?: number[],
  16. source_port_range?: string[],
  17. port?: number[],
  18. port_range?: string[],
  19. process_name?: string[],
  20. process_path?: string[]
  21. }
  22. export interface SingboxSourceFormat {
  23. version: 2 | number & {},
  24. rules: SingboxHeadlessRule[]
  25. }