diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2021-04-17 14:06:32 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2021-04-17 14:06:32 +0900 |
| commit | 61461b7f5935a49ea96cdb6f8963c1a4e2434d3f (patch) | |
| tree | 84d6c2b61bb3d3dc967b3369a7e185aab17c5597 /src/server/api/endpoints/federation | |
| parent | Tweak UI (diff) | |
| download | sharkey-61461b7f5935a49ea96cdb6f8963c1a4e2434d3f.tar.gz sharkey-61461b7f5935a49ea96cdb6f8963c1a4e2434d3f.tar.bz2 sharkey-61461b7f5935a49ea96cdb6f8963c1a4e2434d3f.zip | |
Improve client
Diffstat (limited to 'src/server/api/endpoints/federation')
| -rw-r--r-- | src/server/api/endpoints/federation/dns.ts | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/server/api/endpoints/federation/dns.ts b/src/server/api/endpoints/federation/dns.ts new file mode 100644 index 0000000000..a188f46ac1 --- /dev/null +++ b/src/server/api/endpoints/federation/dns.ts @@ -0,0 +1,43 @@ +import { promises as dns } from 'dns'; +import $ from 'cafy'; +import define from '../../define'; +import { Instances } from '../../../../models'; +import { toPuny } from '@/misc/convert-host'; + +const resolver = new dns.Resolver(); +resolver.setServers(['1.1.1.1']); + +export const meta = { + tags: ['federation'], + + requireCredential: false as const, + + params: { + host: { + validator: $.str + } + }, +}; + +export default define(meta, async (ps, me) => { + const instance = await Instances.findOneOrFail({ host: toPuny(ps.host) }); + + const [ + resolved4, + resolved6, + resolvedCname, + resolvedTxt, + ] = await Promise.all([ + resolver.resolve4(instance.host).catch(() => []), + resolver.resolve6(instance.host).catch(() => []), + resolver.resolveCname(instance.host).catch(() => []), + resolver.resolveTxt(instance.host).catch(() => []), + ]); + + return { + a: resolved4, + aaaa: resolved6, + cname: resolvedCname, + txt: resolvedTxt, + }; +}); |