surfboard.ts 965 B

12345678910111213141516171819202122232425
  1. import { noop } from 'foxts/noop';
  2. import { SurgeRuleSet } from './surge';
  3. import { OUTPUT_SURFBOARD_DIR } from '../../constants/dir';
  4. import { appendSetElementsToArray } from 'foxts/append-set-elements-to-array';
  5. export class SurfboardRuleSet extends SurgeRuleSet {
  6. public override readonly name: string = 'surfboard for android ruleset';
  7. protected result: string[] = ['DOMAIN,this_ruleset_is_made_by_sukkaw.ruleset.skk.moe'];
  8. constructor(public readonly type: 'ip' | 'non_ip' /* | (string & {}) */, public readonly outputDir = OUTPUT_SURFBOARD_DIR) {
  9. super(type, outputDir);
  10. }
  11. override writeDomainWildcards = noop;
  12. override writeUserAgents = noop;
  13. override writeUrlRegexes = noop;
  14. override writeIpAsns = noop;
  15. override writeSourcePorts(port: Set<string>): void {
  16. // https://getsurfboard.com/docs/profile-format/rule/misc
  17. appendSetElementsToArray(this.result, port, i => `IN-PORT,${i}`);
  18. }
  19. override writeOtherRules = noop;
  20. }