diff --git a/package-lock.json b/package-lock.json index df8df23..d8571df 100644 --- a/package-lock.json +++ b/package-lock.json @@ -170,13 +170,14 @@ } }, "@pushrocks/smartexpress": { - "version": "3.0.0", - "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartexpress/-/smartexpress-3.0.0.tgz", - "integrity": "sha512-F3x+AFUxkKxb5WgQuIZsfkrNzMz0PaYYIw4gdQbAPn5N/UCEP4eE2OQWXnAcCSYwsXI8hgjEuUOC9gTbCSPDRg==", + "version": "3.0.4", + "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartexpress/-/smartexpress-3.0.4.tgz", + "integrity": "sha512-sn6yQpTGylvT/t4arCN7te8EUzimhv9JB+73XOwv503u6HokE//nT8eCAhkjprH3hgHpIgvR3iPGI8UBSCJFsw==", "requires": { "@pushrocks/lik": "^3.0.4", "@pushrocks/smartfile": "^6.0.11", "@pushrocks/smartpromise": "^2.0.5", + "@pushrocks/smartrequest": "^1.1.14", "@types/express": "^4.16.0", "@types/finalhandler": "0.0.33", "@types/helmet": "0.0.42", diff --git a/package.json b/package.json index 3e4fb24..e122303 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "@pushrocks/smartdata": "^3.1.13", "@pushrocks/smartdelay": "^2.0.2", "@pushrocks/smartdns": "^3.0.8", - "@pushrocks/smartexpress": "^3.0.0", + "@pushrocks/smartexpress": "^3.0.4", "@pushrocks/smartpromise": "^2.0.5", "@pushrocks/smartrequest": "^1.1.14", "@pushrocks/smartstring": "^3.0.8", diff --git a/ts/smartacme.classes.certmanager.ts b/ts/smartacme.classes.certmanager.ts index 496bc18..373e7c9 100644 --- a/ts/smartacme.classes.certmanager.ts +++ b/ts/smartacme.classes.certmanager.ts @@ -3,7 +3,6 @@ import { Cert } from './smartacme.classes.cert'; import { SmartAcme } from './smartacme.classes.smartacme'; import * as interfaces from './interfaces'; -import { ICert } from './interfaces'; export class CertManager { @@ -62,7 +61,7 @@ export class CertManager { * @param privateKeyArg * @param csrArg */ - public async storeCertificate(optionsArg: ICert) { + public async storeCertificate(optionsArg: interfaces.ICert) { const cert = new Cert(optionsArg); await cert.save(); } diff --git a/ts/smartacme.classes.smartacme.ts b/ts/smartacme.classes.smartacme.ts index f351c82..53b0c62 100644 --- a/ts/smartacme.classes.smartacme.ts +++ b/ts/smartacme.classes.smartacme.ts @@ -15,7 +15,6 @@ export interface ISmartAcmeOptions { mongoDescriptor: plugins.smartdata.IMongoDescriptor; setChallenge: (domainName: string, keyAuthorization: string) => Promise; removeChallenge: (domainName: string) => Promise; - validateRemoteRequest: () => Promise; environment: 'production' | 'integration'; } @@ -42,12 +41,15 @@ export class SmartAcme { // challenge fullfillment private setChallenge: (domainName: string, keyAuthorization: string) => Promise; private removeChallenge: (domainName: string) => Promise; - private validateRemoteRequest: () => Promise; // certmanager private certmanager: CertManager; private certmatcher: CertMatcher; - private certremoteHandler: plugins.smartexpress.Handler; + + /** + * the remote handler to hand the request and response to. + */ + public certremoteHandler: (req: plugins.smartexpress.Request, res: plugins.smartexpress.Response) => Promise; constructor(optionsArg: ISmartAcmeOptions) { this.options = optionsArg; @@ -75,7 +77,7 @@ export class SmartAcme { this.certmatcher = new CertMatcher(); // CertRemoteHandler - this.certremoteHandler = new plugins.smartexpress.Handler('POST', async (req, res) => { + this.certremoteHandler = async (req, res) => { const requestBody: interfaces.ICertRemoteRequest = req.body; const status: interfaces.TCertStatus = await this.certmanager.getCertificateStatus(requestBody.domainName); const existingCertificate = await this.certmanager.retrieveCertificate( @@ -86,13 +88,7 @@ export class SmartAcme { case 'existing': response = { status, - certificate: { - created: existingCertificate.created, - csr: existingCertificate.csr, - domainName: existingCertificate.domainName, - privateKey: existingCertificate.privateKey, - publicKey: existingCertificate.publicKey - } + certificate: await existingCertificate.createSavableObject() }; break; default: @@ -104,7 +100,7 @@ export class SmartAcme { res.status(200); res.send(response); res.end(); - }); + }; // ACME Client this.client = new plugins.acme.Client({