uuid generator included
This commit is contained in:
parent
76e85ad9ec
commit
6d8a1a959c
29
package-lock.json
generated
29
package-lock.json
generated
@ -10,12 +10,14 @@
|
||||
"dependencies": {
|
||||
"cors": "^2.8.5",
|
||||
"express": "^4.17.1",
|
||||
"express-async-errors": "^3.1.1"
|
||||
"express-async-errors": "^3.1.1",
|
||||
"uuid": "^8.3.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/cors": "^2.8.10",
|
||||
"@types/express": "^4.17.11",
|
||||
"@types/node": "^15.3.0",
|
||||
"@types/uuid": "^8.3.1",
|
||||
"typescript": "^4.2.4"
|
||||
}
|
||||
},
|
||||
@ -101,6 +103,12 @@
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/uuid": {
|
||||
"version": "8.3.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.1.tgz",
|
||||
"integrity": "sha512-Y2mHTRAbqfFkpjldbkHGY8JIzRN6XqYRliG8/24FcHm2D2PwW24fl5xMRTVGdrb7iMrwCaIEbLWerGIkXuFWVg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/accepts": {
|
||||
"version": "1.3.7",
|
||||
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
|
||||
@ -609,6 +617,14 @@
|
||||
"node": ">= 0.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/uuid": {
|
||||
"version": "8.3.2",
|
||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
|
||||
"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
|
||||
"bin": {
|
||||
"uuid": "dist/bin/uuid"
|
||||
}
|
||||
},
|
||||
"node_modules/vary": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
|
||||
@ -701,6 +717,12 @@
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"@types/uuid": {
|
||||
"version": "8.3.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.1.tgz",
|
||||
"integrity": "sha512-Y2mHTRAbqfFkpjldbkHGY8JIzRN6XqYRliG8/24FcHm2D2PwW24fl5xMRTVGdrb7iMrwCaIEbLWerGIkXuFWVg==",
|
||||
"dev": true
|
||||
},
|
||||
"accepts": {
|
||||
"version": "1.3.7",
|
||||
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
|
||||
@ -1088,6 +1110,11 @@
|
||||
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
|
||||
"integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
|
||||
},
|
||||
"uuid": {
|
||||
"version": "8.3.2",
|
||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
|
||||
"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="
|
||||
},
|
||||
"vary": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
|
||||
|
@ -15,12 +15,14 @@
|
||||
"dependencies": {
|
||||
"cors": "^2.8.5",
|
||||
"express": "^4.17.1",
|
||||
"express-async-errors": "^3.1.1"
|
||||
"express-async-errors": "^3.1.1",
|
||||
"uuid": "^8.3.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/cors": "^2.8.10",
|
||||
"@types/express": "^4.17.11",
|
||||
"@types/node": "^15.3.0",
|
||||
"@types/uuid": "^8.3.1",
|
||||
"typescript": "^4.2.4"
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,4 @@
|
||||
import { logger } from '../log/Logger';
|
||||
import { CachedZone, DNSRecord, SOARecord } from '../models/interfaces';
|
||||
import { readZoneFile } from './reader';
|
||||
import { DNSRecordType } from './records';
|
||||
@ -122,7 +123,7 @@ export class DNSCache {
|
||||
try {
|
||||
await this.rndc.reload(name);
|
||||
} catch (e) {
|
||||
console.warn('%s automatic zone reload failed:', name, e.stack);
|
||||
logger.warn('%s automatic zone reload failed:', name, e.stack);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -515,7 +515,7 @@ api.post('/set-ip/:domain', domainAuthorization, async (req, res) => {
|
||||
message: 'Waiting for next request..',
|
||||
actions
|
||||
});
|
||||
logger.info('set-ip (partial) from %s: %s', req.ip, actions.join('\n'));
|
||||
logger.info('zone %s set-ip (partial) from %s: %s', domain, req.ip, actions.join('\n'));
|
||||
return;
|
||||
}
|
||||
|
||||
@ -526,7 +526,7 @@ api.post('/set-ip/:domain', domainAuthorization, async (req, res) => {
|
||||
message: 'Successfully updated zone file.',
|
||||
actions
|
||||
});
|
||||
logger.info('set-ip from %s: %s', req.ip, actions.join('\n'));
|
||||
logger.info('zone %s set-ip from %s: %s', domain, req.ip, actions.join('\n'));
|
||||
});
|
||||
|
||||
const errorHandler: ErrorRequestHandler = (err: any, req: Request, res: Response, next: NextFunction) => {
|
||||
@ -553,4 +553,9 @@ async function load() {
|
||||
app.listen(port, () => logger.info(`listening on ${port}`));
|
||||
}
|
||||
|
||||
if (process.argv.includes('genkey')) {
|
||||
console.log(Keys.generateKey());
|
||||
process.exit();
|
||||
}
|
||||
|
||||
load().catch((e) => console.error(e.stack));
|
||||
|
@ -2,19 +2,15 @@ import { Request } from "express";
|
||||
import { validv4, validv6 } from "./validators";
|
||||
|
||||
export function fromRequest(req: Request): { v4: string | null, v6: string | null } {
|
||||
let v4 = null;
|
||||
let v4: null | string = null;
|
||||
const qv4 = req.query.ipv4 || req.body.ipv4;
|
||||
|
||||
let v6 = null;
|
||||
let v6: null | string = null;
|
||||
const qv6 = req.query.ipv6 || req.body.ipv6;
|
||||
|
||||
// Lets begin our trials
|
||||
// Determine Address from request headers
|
||||
if (req.header('x-forwarded-for')) {
|
||||
v4 = req.header('x-forwarded-for');
|
||||
} else {
|
||||
v4 = req.socket.remoteAddress;
|
||||
}
|
||||
// Determine Address from request IP
|
||||
v4 = req.ip;
|
||||
|
||||
if (v4 && !validv4(v4)) {
|
||||
v6 = v4
|
||||
|
@ -1,4 +1,5 @@
|
||||
import * as fs from 'fs/promises';
|
||||
import { v4 } from 'uuid';
|
||||
import path from 'path';
|
||||
|
||||
export class Keys {
|
||||
@ -27,4 +28,8 @@ export class Keys {
|
||||
getKey(domain: string): string | undefined {
|
||||
return Object.keys(this.keys).find((key) => this.keys[key] === domain);
|
||||
}
|
||||
|
||||
static generateKey(): string {
|
||||
return v4();
|
||||
}
|
||||
}
|
||||
|
@ -16,9 +16,10 @@ export class Logger {
|
||||
private day = 0;
|
||||
private stream?: WriteStream;
|
||||
|
||||
constructor(public logDir: string, public logToFile = true) {
|
||||
this.day = new Date().getDate();
|
||||
}
|
||||
constructor(
|
||||
public logDir: string,
|
||||
public logToFile = true
|
||||
) {}
|
||||
|
||||
static formatLogDate(date: Date): string {
|
||||
return `${date.getFullYear()}-${p(date.getMonth() + 1)}-${p(date.getDate())}`;
|
||||
@ -88,4 +89,5 @@ export class Logger {
|
||||
}
|
||||
}
|
||||
|
||||
/** Logger singleton */
|
||||
export const logger = Logger.fromEnvironment();
|
||||
|
Reference in New Issue
Block a user