parse-dnsmasq.ts 820 B

12345678910111213141516171819202122232425
  1. import { createReadlineInterfaceFromResponse } from './fetch-text-by-line';
  2. import type { UndiciResponseData } from './fetch-retry';
  3. import type { Response } from 'undici';
  4. import { fastNormalizeDomain } from './normalize-domain';
  5. export function extractDomainsFromFelixDnsmasq(line: string): string | null {
  6. if (line.startsWith('server=/') && line.endsWith('/114.114.114.114')) {
  7. return line.slice(8, -16);
  8. }
  9. return null;
  10. }
  11. export async function parseFelixDnsmasqFromResp(resp: UndiciResponseData | Response): Promise<string[]> {
  12. const results: string[] = [];
  13. for await (const line of createReadlineInterfaceFromResponse(resp, true)) {
  14. const domain = extractDomainsFromFelixDnsmasq(line);
  15. if (domain && fastNormalizeDomain(domain)) {
  16. results.push(domain);
  17. }
  18. }
  19. return results;
  20. }