summaryrefslogtreecommitdiff
path: root/src/server/api/endpoints/federation
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2021-04-17 14:06:32 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2021-04-17 14:06:32 +0900
commit61461b7f5935a49ea96cdb6f8963c1a4e2434d3f (patch)
tree84d6c2b61bb3d3dc967b3369a7e185aab17c5597 /src/server/api/endpoints/federation
parentTweak UI (diff)
downloadsharkey-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.ts43
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,
+ };
+});