Compare commits
2 Commits
7f1dde272a
...
714da70209
Author | SHA1 | Date |
---|---|---|
Derrick Hammer | 714da70209 | |
Derrick Hammer | 3b1b6425ae |
|
@ -26,6 +26,7 @@ switch (os.platform()) {
|
||||||
config.inject({
|
config.inject({
|
||||||
"core.confdir": configDir,
|
"core.confdir": configDir,
|
||||||
"core.port": 8080,
|
"core.port": 8080,
|
||||||
|
"core.apport": 80,
|
||||||
"core.loglevel": "info",
|
"core.loglevel": "info",
|
||||||
"core.plugindir": path.resolve(configDir, "..", "plugins"),
|
"core.plugindir": path.resolve(configDir, "..", "plugins"),
|
||||||
});
|
});
|
||||||
|
|
|
@ -3,6 +3,7 @@ import log from "../log.js";
|
||||||
import fastify from "fastify";
|
import fastify from "fastify";
|
||||||
import type { FastifyInstance } from "fastify";
|
import type { FastifyInstance } from "fastify";
|
||||||
import { getKeyPair } from "../lib/seed.js";
|
import { getKeyPair } from "../lib/seed.js";
|
||||||
|
import config from "../config";
|
||||||
|
|
||||||
let app: FastifyInstance;
|
let app: FastifyInstance;
|
||||||
|
|
||||||
|
@ -16,5 +17,5 @@ export async function start() {
|
||||||
res.send(Buffer.from(keyPair.publicKey).toString("hex"));
|
res.send(Buffer.from(keyPair.publicKey).toString("hex"));
|
||||||
});
|
});
|
||||||
|
|
||||||
await app.listen({ port: 80, host: "0.0.0.0" });
|
await app.listen({ port: config.uint("core.appport"), host: "0.0.0.0" });
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,7 @@ export async function start() {
|
||||||
const dht = getSwarm();
|
const dht = getSwarm();
|
||||||
let sslOptions: boolean | http2.SecureServerOptions = false;
|
let sslOptions: boolean | http2.SecureServerOptions = false;
|
||||||
|
|
||||||
if (getSslManager().enabled) {
|
if (getSslManager().ready) {
|
||||||
sslOptions = {
|
sslOptions = {
|
||||||
SNICallback: () => getSslManager().context,
|
SNICallback: () => getSslManager().context,
|
||||||
} as http2.SecureServerOptions;
|
} as http2.SecureServerOptions;
|
||||||
|
|
|
@ -6,37 +6,47 @@ import config from "../config.js";
|
||||||
export type SSLManagerRenewHandler = (domain: string) => Promise<boolean>;
|
export type SSLManagerRenewHandler = (domain: string) => Promise<boolean>;
|
||||||
|
|
||||||
export class SSLManager {
|
export class SSLManager {
|
||||||
private _context?: tls.SecureContext;
|
|
||||||
private _key?: Buffer;
|
private _key?: Buffer;
|
||||||
private _cert?: Buffer;
|
|
||||||
private _domain: string;
|
private _domain: string;
|
||||||
private _renewHandler?: SSLManagerRenewHandler;
|
|
||||||
|
|
||||||
constructor(domain: string) {
|
constructor(domain: string) {
|
||||||
this._domain = domain;
|
this._domain = domain;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private _context?: tls.SecureContext;
|
||||||
|
|
||||||
get context(): tls.SecureContext {
|
get context(): tls.SecureContext {
|
||||||
return this._context as tls.SecureContext;
|
return this._context as tls.SecureContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private _cert?: Buffer;
|
||||||
|
|
||||||
|
set cert(cert: Buffer) {
|
||||||
|
this._cert = cert;
|
||||||
|
this._maybeUpdateContext();
|
||||||
|
}
|
||||||
|
|
||||||
|
private _renewHandler?: SSLManagerRenewHandler;
|
||||||
|
|
||||||
|
get renewHandler(): SSLManagerRenewHandler {
|
||||||
|
return this._renewHandler as any;
|
||||||
|
}
|
||||||
|
|
||||||
|
set renewHandler(value: SSLManagerRenewHandler) {
|
||||||
|
this._renewHandler = value;
|
||||||
|
}
|
||||||
|
|
||||||
set privateKey(key: Buffer) {
|
set privateKey(key: Buffer) {
|
||||||
this._key = key;
|
this._key = key;
|
||||||
this._maybeUpdateContext();
|
this._maybeUpdateContext();
|
||||||
}
|
}
|
||||||
|
|
||||||
set cert(cert: Buffer) {
|
get enabled() {
|
||||||
this._cert = cert;
|
return config.bool("core.ssl");
|
||||||
this._maybeUpdateContext();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private _maybeUpdateContext() {
|
get ready() {
|
||||||
if (b4a.isBuffer(this._cert) && b4a.isBuffer(this._key)) {
|
return this.enabled && this.renewHandler;
|
||||||
this._context = tls.createSecureContext({
|
|
||||||
cert: this._cert,
|
|
||||||
key: this._key,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async renew(): Promise<boolean> {
|
public async renew(): Promise<boolean> {
|
||||||
|
@ -50,8 +60,13 @@ export class SSLManager {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
get enabled() {
|
private _maybeUpdateContext() {
|
||||||
return config.bool("core.ssl") && this._renewHandler;
|
if (b4a.isBuffer(this._cert) && b4a.isBuffer(this._key)) {
|
||||||
|
this._context = tls.createSecureContext({
|
||||||
|
cert: this._cert,
|
||||||
|
key: this._key,
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue