init: add ubuntu keyserver
This commit is contained in:
parent
e5c8dc252a
commit
81ff06001c
|
@ -165,8 +165,8 @@ export function serializeIndexes(indexes: Indexes): string {
|
||||||
out
|
out
|
||||||
.map((x) =>
|
.map((x) =>
|
||||||
x.map(x => x ?? '')
|
x.map(x => x ?? '')
|
||||||
.map(encodeURIComponent)
|
.map(encodeURIComponent)
|
||||||
.join(':')
|
.join(':')
|
||||||
)
|
)
|
||||||
.join('\n') + '\n'
|
.join('\n') + '\n'
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
import { Module } from '@nestjs/common'
|
import { Module } from '@nestjs/common';
|
||||||
import { HKPController } from './controllers/hkp.controller.js'
|
import { HKPController } from './controllers/hkp.controller.js';
|
||||||
import { OpenPGPKeysProvider } from './providers/openpgp.provider.js'
|
import { OpenPGPKeysProvider } from './providers/openpgp.provider.js';
|
||||||
import { AllKeysProvider } from './providers/all.provider.js'
|
import { AllKeysProvider } from './providers/all.provider.js';
|
||||||
|
import { UbuntuKeysProvider } from './providers/ubuntu.provider.js';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
providers: [OpenPGPKeysProvider, AllKeysProvider],
|
providers: [OpenPGPKeysProvider, UbuntuKeysProvider, AllKeysProvider],
|
||||||
controllers: [HKPController],
|
controllers: [HKPController],
|
||||||
exports: [OpenPGPKeysProvider, AllKeysProvider],
|
exports: [OpenPGPKeysProvider, UbuntuKeysProvider, AllKeysProvider],
|
||||||
})
|
})
|
||||||
export class KeysModule {}
|
export class KeysModule {}
|
||||||
|
|
|
@ -5,6 +5,7 @@ import {
|
||||||
} from './abstract.provider.js'
|
} from './abstract.provider.js'
|
||||||
import { Indexes, InfoLine } from '../indexes.js'
|
import { Indexes, InfoLine } from '../indexes.js'
|
||||||
import { OpenPGPKeysProvider } from './openpgp.provider.js'
|
import { OpenPGPKeysProvider } from './openpgp.provider.js'
|
||||||
|
import { UbuntuKeysProvider } from './ubuntu.provider.js';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This provider searches all key providers and returns their combined result
|
* 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');
|
readonly url = Object.freeze('http://none');
|
||||||
|
|
||||||
constructor(private openPgpKeysProvider: OpenPGPKeysProvider) {}
|
constructor(private openPgpKeysProvider: OpenPGPKeysProvider, private ubuntuKeysProvider: UbuntuKeysProvider) {}
|
||||||
|
|
||||||
getAll(): AbstractKeysProvider[] {
|
getAll(): AbstractKeysProvider[] {
|
||||||
return [this.openPgpKeysProvider]
|
return [this.openPgpKeysProvider, this.ubuntuKeysProvider]
|
||||||
}
|
}
|
||||||
|
|
||||||
@Get()
|
@Get()
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import type { ResponsePromise } from 'ky';
|
import type { KyResponse, ResponsePromise } from 'ky';
|
||||||
import ky from 'ky'
|
import ky from 'ky'
|
||||||
import type {
|
import type {
|
||||||
AdditionalData,
|
AdditionalData,
|
||||||
|
@ -30,11 +30,12 @@ export function proxyRequest(
|
||||||
headers: {
|
headers: {
|
||||||
'User-Agent': 'Cupid (https://cupid.blek.codes)',
|
'User-Agent': 'Cupid (https://cupid.blek.codes)',
|
||||||
},
|
},
|
||||||
|
timeout: 15000,
|
||||||
searchParams: {
|
searchParams: {
|
||||||
op,
|
op,
|
||||||
search,
|
search,
|
||||||
},
|
},
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function proxyGetOp(
|
export async function proxyGetOp(
|
||||||
|
@ -42,12 +43,17 @@ export async function proxyGetOp(
|
||||||
search: string,
|
search: string,
|
||||||
data: AdditionalData
|
data: AdditionalData
|
||||||
): Promise<GetOperationReturn> {
|
): Promise<GetOperationReturn> {
|
||||||
const httpRes = await proxyRequest(url, 'get', search, data)
|
let httpRes: KyResponse;
|
||||||
if (httpRes.status !== 200) {
|
try {
|
||||||
|
httpRes = await proxyRequest(url, 'index', search, data);
|
||||||
|
if (httpRes.status !== 200) {
|
||||||
|
return 404;
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
return 404
|
return 404
|
||||||
}
|
}
|
||||||
|
|
||||||
return getKey(await httpRes.text())
|
return getKey(await httpRes.text());
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function proxyIndexOp(
|
export async function proxyIndexOp(
|
||||||
|
@ -55,8 +61,13 @@ export async function proxyIndexOp(
|
||||||
search: string,
|
search: string,
|
||||||
data: AdditionalData
|
data: AdditionalData
|
||||||
): Promise<Indexes> {
|
): Promise<Indexes> {
|
||||||
const httpRes = await proxyRequest(url, 'index', search, data)
|
let httpRes: KyResponse;
|
||||||
if (httpRes.status !== 200) {
|
try {
|
||||||
|
httpRes = await proxyRequest(url, 'index', search, data);
|
||||||
|
if (httpRes.status !== 200) {
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
return []
|
return []
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue