From 81ff06001c2acfaff2e2c99ce1c702b32a8ec05d Mon Sep 17 00:00:00 2001 From: b1ek Date: Sat, 27 Jul 2024 23:34:20 +1000 Subject: [PATCH] init: add ubuntu keyserver --- src/keys/indexes.ts | 4 ++-- src/keys/keys.module.ts | 13 +++++++------ src/keys/providers/all.provider.ts | 5 +++-- src/keys/providers/utils.ts | 25 ++++++++++++++++++------- 4 files changed, 30 insertions(+), 17 deletions(-) diff --git a/src/keys/indexes.ts b/src/keys/indexes.ts index 0dc3c00..f157125 100644 --- a/src/keys/indexes.ts +++ b/src/keys/indexes.ts @@ -165,8 +165,8 @@ export function serializeIndexes(indexes: Indexes): string { out .map((x) => x.map(x => x ?? '') - .map(encodeURIComponent) - .join(':') + .map(encodeURIComponent) + .join(':') ) .join('\n') + '\n' ); diff --git a/src/keys/keys.module.ts b/src/keys/keys.module.ts index fb197b8..911e0a1 100644 --- a/src/keys/keys.module.ts +++ b/src/keys/keys.module.ts @@ -1,11 +1,12 @@ -import { Module } from '@nestjs/common' -import { HKPController } from './controllers/hkp.controller.js' -import { OpenPGPKeysProvider } from './providers/openpgp.provider.js' -import { AllKeysProvider } from './providers/all.provider.js' +import { Module } from '@nestjs/common'; +import { HKPController } from './controllers/hkp.controller.js'; +import { OpenPGPKeysProvider } from './providers/openpgp.provider.js'; +import { AllKeysProvider } from './providers/all.provider.js'; +import { UbuntuKeysProvider } from './providers/ubuntu.provider.js'; @Module({ - providers: [OpenPGPKeysProvider, AllKeysProvider], + providers: [OpenPGPKeysProvider, UbuntuKeysProvider, AllKeysProvider], controllers: [HKPController], - exports: [OpenPGPKeysProvider, AllKeysProvider], + exports: [OpenPGPKeysProvider, UbuntuKeysProvider, AllKeysProvider], }) export class KeysModule {} diff --git a/src/keys/providers/all.provider.ts b/src/keys/providers/all.provider.ts index d103132..350a905 100644 --- a/src/keys/providers/all.provider.ts +++ b/src/keys/providers/all.provider.ts @@ -5,6 +5,7 @@ import { } from './abstract.provider.js' import { Indexes, InfoLine } from '../indexes.js' import { OpenPGPKeysProvider } from './openpgp.provider.js' +import { UbuntuKeysProvider } from './ubuntu.provider.js'; /** * This provider searches all key providers and returns their combined result @@ -14,10 +15,10 @@ export class AllKeysProvider implements AbstractKeysProvider { readonly url = Object.freeze('http://none'); - constructor(private openPgpKeysProvider: OpenPGPKeysProvider) {} + constructor(private openPgpKeysProvider: OpenPGPKeysProvider, private ubuntuKeysProvider: UbuntuKeysProvider) {} getAll(): AbstractKeysProvider[] { - return [this.openPgpKeysProvider] + return [this.openPgpKeysProvider, this.ubuntuKeysProvider] } @Get() diff --git a/src/keys/providers/utils.ts b/src/keys/providers/utils.ts index 82ae91e..e07e725 100644 --- a/src/keys/providers/utils.ts +++ b/src/keys/providers/utils.ts @@ -1,4 +1,4 @@ -import type { ResponsePromise } from 'ky'; +import type { KyResponse, ResponsePromise } from 'ky'; import ky from 'ky' import type { AdditionalData, @@ -30,11 +30,12 @@ export function proxyRequest( headers: { 'User-Agent': 'Cupid (https://cupid.blek.codes)', }, + timeout: 15000, searchParams: { op, search, }, - }) + }); } export async function proxyGetOp( @@ -42,12 +43,17 @@ export async function proxyGetOp( search: string, data: AdditionalData ): Promise { - const httpRes = await proxyRequest(url, 'get', search, data) - if (httpRes.status !== 200) { + let httpRes: KyResponse; + try { + httpRes = await proxyRequest(url, 'index', search, data); + if (httpRes.status !== 200) { + return 404; + } + } catch { return 404 } - return getKey(await httpRes.text()) + return getKey(await httpRes.text()); } export async function proxyIndexOp( @@ -55,8 +61,13 @@ export async function proxyIndexOp( search: string, data: AdditionalData ): Promise { - const httpRes = await proxyRequest(url, 'index', search, data) - if (httpRes.status !== 200) { + let httpRes: KyResponse; + try { + httpRes = await proxyRequest(url, 'index', search, data); + if (httpRes.status !== 200) { + return [] + } + } catch { return [] }