now getting a valid response
This commit is contained in:
		
							
								
								
									
										9
									
								
								dist/smartacme.classes.acmecert.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								dist/smartacme.classes.acmecert.d.ts
									
									
									
									
										vendored
									
									
								
							| @@ -17,7 +17,7 @@ export interface ISmartAcmeChallenge { | ||||
|     token: string; | ||||
|     keyAuthorization: string; | ||||
| } | ||||
| export interface ISmartAcmeChallengeAccepted extends ISmartAcmeChallenge { | ||||
| export interface ISmartAcmeChallengeChosen extends ISmartAcmeChallenge { | ||||
|     dnsKeyHash: string; | ||||
|     domainName: string; | ||||
|     domainNamePrefixed: string; | ||||
| @@ -41,7 +41,6 @@ export interface IAcmeCsrConstructorOptions { | ||||
| export declare class AcmeCert { | ||||
|     domainName: string; | ||||
|     attributes: any; | ||||
|     acceptedChallenge: ISmartAcmeChallengeAccepted; | ||||
|     fullchain: string; | ||||
|     parentAcmeAccount: AcmeAccount; | ||||
|     csr: any; | ||||
| @@ -49,13 +48,15 @@ export declare class AcmeCert { | ||||
|     validTo: Date; | ||||
|     keypair: IRsaKeypair; | ||||
|     keyPairFinal: IRsaKeypair; | ||||
|     chosenChallenge: ISmartAcmeChallengeChosen; | ||||
|     dnsKeyHash: string; | ||||
|     constructor(optionsArg: IAcmeCsrConstructorOptions, parentAcmeAccount: AcmeAccount); | ||||
|     /** | ||||
|      * requests a challenge for a domain | ||||
|      * @param domainNameArg - the domain name to request a challenge for | ||||
|      * @param challengeType - the challenge type to request | ||||
|      */ | ||||
|     requestChallenge(challengeTypeArg?: TChallengeType): q.Promise<ISmartAcmeChallengeAccepted>; | ||||
|     requestChallenge(challengeTypeArg?: TChallengeType): q.Promise<ISmartAcmeChallengeChosen>; | ||||
|     /** | ||||
|      * checks if DNS records are set, will go through a max of 30 cycles | ||||
|      */ | ||||
| @@ -75,5 +76,5 @@ export declare class AcmeCert { | ||||
|     /** | ||||
|      * accept a challenge - for private use only | ||||
|      */ | ||||
|     private acceptChallenge(challengeArg); | ||||
|     acceptChallenge(): q.Promise<{}>; | ||||
| } | ||||
|   | ||||
							
								
								
									
										96
									
								
								dist/smartacme.classes.acmecert.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										96
									
								
								dist/smartacme.classes.acmecert.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								dist/smartacme.classes.smartacme.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/smartacme.classes.smartacme.d.ts
									
									
									
									
										vendored
									
									
								
							| @@ -9,7 +9,7 @@ export interface IRsaKeypair { | ||||
|     privateKey: string; | ||||
| } | ||||
| export { AcmeAccount } from './smartacme.classes.acmeaccount'; | ||||
| export { AcmeCert, ISmartAcmeChallenge, ISmartAcmeChallengeAccepted } from './smartacme.classes.acmecert'; | ||||
| export { AcmeCert, ISmartAcmeChallenge, ISmartAcmeChallengeChosen } from './smartacme.classes.acmecert'; | ||||
| /** | ||||
|  * class SmartAcme exports methods for maintaining SSL Certificates | ||||
|  */ | ||||
|   | ||||
							
								
								
									
										2
									
								
								dist/smartacme.classes.smartacme.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/smartacme.classes.smartacme.js
									
									
									
									
										vendored
									
									
								
							| @@ -63,4 +63,4 @@ class SmartAcme { | ||||
|     } | ||||
| } | ||||
| exports.SmartAcme = SmartAcme; | ||||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhY21lLmNsYXNzZXMuc21hcnRhY21lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRhY21lLmNsYXNzZXMuc21hcnRhY21lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxzQkFBc0I7QUFDdEIsdUJBQXNCLENBQUMsV0FBVztBQUNsQywrQ0FBOEM7QUFDOUMsK0NBQThDO0FBRTlDLG1GQUE2RDtBQVU3RCxpRkFBNkQ7QUFBcEQsc0RBQUEsV0FBVyxDQUFBO0FBQ3BCLDJFQUF5RztBQUFoRyxnREFBQSxRQUFRLENBQUE7QUFFakI7O0dBRUc7QUFDSDtJQU1JOztPQUVHO0lBQ0gsWUFBWSxnQkFBeUIsS0FBSztRQUN0QyxJQUFJLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FBQTtRQUNuQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQTtRQUN0QyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFBO1FBQ2xELENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNKLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQTtRQUMxRCxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSTtRQUNBLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUNwQixPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FDeEI7WUFDSSxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDakIsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUztZQUNqQyxVQUFVLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVO1NBQ3RDLEVBQ0QsQ0FBQyxHQUFHLEVBQUUsTUFBTTtZQUNSLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ04sT0FBTyxDQUFDLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFBO2dCQUNqRCxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUNoQixNQUFNLENBQUE7WUFDVixDQUFDO1lBRUQsa0NBQWtDO1lBQ2xDLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFBO1lBQzNCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUNsQixDQUFDLENBQ0osQ0FBQTtRQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFBO0lBQ3ZCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxpQkFBaUI7UUFDYixJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFlLENBQUE7UUFDakMsSUFBSSxXQUFXLEdBQUcsSUFBSSwyQ0FBVyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3ZDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUM7WUFDeEIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtRQUNqQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDSixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQzdCLENBQUMsQ0FBQyxDQUFBO1FBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUE7SUFDdkIsQ0FBQztDQUNKO0FBNURELDhCQTREQyJ9 | ||||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhY21lLmNsYXNzZXMuc21hcnRhY21lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRhY21lLmNsYXNzZXMuc21hcnRhY21lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxzQkFBc0I7QUFDdEIsdUJBQXNCLENBQUMsV0FBVztBQUNsQywrQ0FBOEM7QUFDOUMsK0NBQThDO0FBRTlDLG1GQUE2RDtBQVU3RCxpRkFBNkQ7QUFBcEQsc0RBQUEsV0FBVyxDQUFBO0FBQ3BCLDJFQUF1RztBQUE5RixnREFBQSxRQUFRLENBQUE7QUFFakI7O0dBRUc7QUFDSDtJQU1JOztPQUVHO0lBQ0gsWUFBWSxnQkFBeUIsS0FBSztRQUN0QyxJQUFJLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FBQTtRQUNuQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQTtRQUN0QyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFBO1FBQ2xELENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNKLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQTtRQUMxRCxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSTtRQUNBLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUNwQixPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FDeEI7WUFDSSxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDakIsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUztZQUNqQyxVQUFVLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVO1NBQ3RDLEVBQ0QsQ0FBQyxHQUFHLEVBQUUsTUFBTTtZQUNSLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ04sT0FBTyxDQUFDLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFBO2dCQUNqRCxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUNoQixNQUFNLENBQUE7WUFDVixDQUFDO1lBRUQsa0NBQWtDO1lBQ2xDLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFBO1lBQzNCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUNsQixDQUFDLENBQ0osQ0FBQTtRQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFBO0lBQ3ZCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxpQkFBaUI7UUFDYixJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFlLENBQUE7UUFDakMsSUFBSSxXQUFXLEdBQUcsSUFBSSwyQ0FBVyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3ZDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUM7WUFDeEIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtRQUNqQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDSixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQzdCLENBQUMsQ0FBQyxDQUFBO1FBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUE7SUFDdkIsQ0FBQztDQUNKO0FBNURELDhCQTREQyJ9 | ||||
							
								
								
									
										20
									
								
								test/test.js
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								test/test.js
									
									
									
									
									
								
							| @@ -18,7 +18,7 @@ describe('smartacme', function () { | ||||
|     let testChallenge; | ||||
|     it('should create a valid instance', function (done) { | ||||
|         this.timeout(10000); | ||||
|         testSmartAcme = new smartacme.SmartAcme(); | ||||
|         testSmartAcme = new smartacme.SmartAcme(false); | ||||
|         testSmartAcme.init().then(() => { | ||||
|             should(testSmartAcme).be.instanceOf(smartacme.SmartAcme); | ||||
|             done(); | ||||
| @@ -38,32 +38,36 @@ describe('smartacme', function () { | ||||
|         }); | ||||
|     }); | ||||
|     it('should create a AcmeCert', function () { | ||||
|         testAcmeAccount.createAcmeCert('test1.bleu.de').then(x => { | ||||
|         testAcmeAccount.createAcmeCert('carglide.com').then(x => { | ||||
|             testAcmeCert = x; | ||||
|             should(testAcmeAccount).be.instanceOf(smartacme.AcmeCert); | ||||
|         }); | ||||
|     }); | ||||
|     it('should get a challenge for a AcmeCert', function (done) { | ||||
|         this.timeout(10000); | ||||
|         testAcmeCert.requestChallenge().then((challengeAccepted) => { | ||||
|             console.log(challengeAccepted); | ||||
|             testChallenge = challengeAccepted; | ||||
|         testAcmeCert.requestChallenge().then((challengeChosen) => { | ||||
|             console.log(challengeChosen); | ||||
|             testChallenge = challengeChosen; | ||||
|             done(); | ||||
|         }); | ||||
|     }); | ||||
|     it('should set the challenge', function (done) { | ||||
|         this.timeout(30000); | ||||
|         this.timeout(10000); | ||||
|         myCflareAccount.createRecord(testChallenge.domainNamePrefixed, 'TXT', testChallenge.dnsKeyHash).then(() => { | ||||
|             done(); | ||||
|         }); | ||||
|     }); | ||||
|     it('should check for a DNS record', function (done) { | ||||
|         this.timeout(40000); | ||||
|         this.timeout(20000); | ||||
|         testAcmeCert.checkDns().then(x => { | ||||
|             console.log(x); | ||||
|             done(); | ||||
|         }); | ||||
|     }); | ||||
|     it('should accept the challenge', function (done) { | ||||
|         this.timeout(10000); | ||||
|         testAcmeCert.acceptChallenge().then(() => { done(); }); | ||||
|     }); | ||||
|     it('should poll for validation of a challenge', function (done) { | ||||
|         this.timeout(700000); | ||||
|         testAcmeCert.requestValidation().then(x => { | ||||
| @@ -72,4 +76,4 @@ describe('smartacme', function () { | ||||
|         }); | ||||
|     }); | ||||
| }); | ||||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHdCQUFxQjtBQUNyQixpQ0FBZ0M7QUFDaEMsaUNBQWdDO0FBQ2hDLDZCQUE0QjtBQUU1QixJQUFJLFFBQVEsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQTtBQUV0RSw0QkFBNEI7QUFDNUIsMkNBQTBDO0FBRTFDLElBQUksZUFBZSxHQUFHLElBQUksTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFBO0FBQ2hELGVBQWUsQ0FBQyxJQUFJLENBQUM7SUFDakIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUTtJQUMzQixHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNO0NBQzFCLENBQUMsQ0FBQTtBQUVGLFFBQVEsQ0FBQyxXQUFXLEVBQUU7SUFDbEIsSUFBSSxhQUFrQyxDQUFBO0lBQ3RDLElBQUksZUFBc0MsQ0FBQTtJQUMxQyxJQUFJLFlBQWdDLENBQUE7SUFDcEMsSUFBSSxhQUFvRCxDQUFBO0lBRXhELEVBQUUsQ0FBQyxnQ0FBZ0MsRUFBRSxVQUFVLElBQUk7UUFDL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNuQixhQUFhLEdBQUcsSUFBSSxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUE7UUFDekMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQztZQUN0QixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUE7WUFDeEQsSUFBSSxFQUFFLENBQUE7UUFDVixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFD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 | ||||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHdCQUFxQjtBQUNyQixpQ0FBZ0M7QUFDaEMsaUNBQWdDO0FBQ2hDLDZCQUE0QjtBQUU1QixJQUFJLFFBQVEsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQTtBQUV0RSw0QkFBNEI7QUFDNUIsMkNBQTBDO0FBRTFDLElBQUksZUFBZSxHQUFHLElBQUksTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFBO0FBQ2hELGVBQWUsQ0FBQyxJQUFJLENBQUM7SUFDakIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUTtJQUMzQixHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNO0NBQzFCLENBQUMsQ0FBQTtBQUVGLFFBQVEsQ0FBQyxXQUFXLEVBQUU7SUFDbEIsSUFBSSxhQUFrQyxDQUFBO0lBQ3RDLElBQUksZUFBc0MsQ0FBQTtJQUMxQyxJQUFJLFlBQWdDLENBQUE7SUFDcEMsSUFBSSxhQUFrRCxDQUFBO0lBRXRELEVBQUUsQ0FBQyxnQ0FBZ0MsRUFBRSxVQUFVLElBQUk7UUFDL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNuQixhQUFhLEdBQUcsSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQzlDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUM7WUFDdEIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1lBQ3hELElBQUksRUFBRSxDQUFBO1FBQ1YsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFD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 | ||||
							
								
								
									
										21
									
								
								test/test.ts
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								test/test.ts
									
									
									
									
									
								
							| @@ -18,11 +18,11 @@ describe('smartacme', function () { | ||||
|     let testSmartAcme: smartacme.SmartAcme | ||||
|     let testAcmeAccount: smartacme.AcmeAccount | ||||
|     let testAcmeCert: smartacme.AcmeCert | ||||
|     let testChallenge: smartacme.ISmartAcmeChallengeAccepted | ||||
|     let testChallenge: smartacme.ISmartAcmeChallengeChosen | ||||
|      | ||||
|     it('should create a valid instance', function (done) { | ||||
|         this.timeout(10000) | ||||
|         testSmartAcme = new smartacme.SmartAcme() | ||||
|         testSmartAcme = new smartacme.SmartAcme(false) | ||||
|         testSmartAcme.init().then(() => { | ||||
|             should(testSmartAcme).be.instanceOf(smartacme.SmartAcme) | ||||
|             done() | ||||
| @@ -45,7 +45,7 @@ describe('smartacme', function () { | ||||
|     }) | ||||
|  | ||||
|     it('should create a AcmeCert', function() { | ||||
|         testAcmeAccount.createAcmeCert('test1.bleu.de').then(x => { | ||||
|         testAcmeAccount.createAcmeCert('carglide.com').then(x => { | ||||
|             testAcmeCert = x | ||||
|             should(testAcmeAccount).be.instanceOf(smartacme.AcmeCert) | ||||
|         }) | ||||
| @@ -53,15 +53,15 @@ describe('smartacme', function () { | ||||
|  | ||||
|     it('should get a challenge for a AcmeCert', function (done) { | ||||
|         this.timeout(10000) | ||||
|         testAcmeCert.requestChallenge().then((challengeAccepted) => { | ||||
|             console.log(challengeAccepted) | ||||
|             testChallenge = challengeAccepted | ||||
|         testAcmeCert.requestChallenge().then((challengeChosen) => { | ||||
|             console.log(challengeChosen) | ||||
|             testChallenge = challengeChosen | ||||
|             done() | ||||
|         }) | ||||
|     }) | ||||
|  | ||||
|     it('should set the challenge', function(done) { | ||||
|         this.timeout(30000) | ||||
|         this.timeout(10000) | ||||
|         myCflareAccount.createRecord( | ||||
|             testChallenge.domainNamePrefixed, | ||||
|             'TXT', testChallenge.dnsKeyHash | ||||
| @@ -71,13 +71,18 @@ describe('smartacme', function () { | ||||
|     }) | ||||
|  | ||||
|     it('should check for a DNS record', function(done) { | ||||
|         this.timeout(40000) | ||||
|         this.timeout(20000) | ||||
|         testAcmeCert.checkDns().then(x => { | ||||
|             console.log(x) | ||||
|             done() | ||||
|         }) | ||||
|     }) | ||||
|  | ||||
|     it('should accept the challenge', function(done){ | ||||
|         this.timeout(10000) | ||||
|         testAcmeCert.acceptChallenge().then(() => { done() }) | ||||
|     }) | ||||
|  | ||||
|     it('should poll for validation of a challenge', function (done) { | ||||
|         this.timeout(700000) | ||||
|         testAcmeCert.requestValidation().then(x => { | ||||
|   | ||||
| @@ -24,7 +24,7 @@ export interface ISmartAcmeChallenge { | ||||
|     keyAuthorization: string | ||||
| } | ||||
|  | ||||
| export interface ISmartAcmeChallengeAccepted extends ISmartAcmeChallenge { | ||||
| export interface ISmartAcmeChallengeChosen extends ISmartAcmeChallenge { | ||||
|     dnsKeyHash: string | ||||
|     domainName: string | ||||
|     domainNamePrefixed: string | ||||
| @@ -53,7 +53,6 @@ let myDnsly = new plugins.dnsly.Dnsly('google') | ||||
| export class AcmeCert { | ||||
|     domainName: string | ||||
|     attributes | ||||
|     acceptedChallenge: ISmartAcmeChallengeAccepted | ||||
|     fullchain: string | ||||
|     parentAcmeAccount: AcmeAccount | ||||
|     csr | ||||
| @@ -61,6 +60,8 @@ export class AcmeCert { | ||||
|     validTo: Date | ||||
|     keypair: IRsaKeypair | ||||
|     keyPairFinal: IRsaKeypair | ||||
|     chosenChallenge: ISmartAcmeChallengeChosen | ||||
|     dnsKeyHash: string | ||||
|     constructor(optionsArg: IAcmeCsrConstructorOptions, parentAcmeAccount: AcmeAccount) { | ||||
|         this.domainName = optionsArg.domain | ||||
|         this.parentAcmeAccount = parentAcmeAccount | ||||
| @@ -103,7 +104,7 @@ export class AcmeCert { | ||||
|      * @param challengeType - the challenge type to request | ||||
|      */ | ||||
|     requestChallenge(challengeTypeArg: TChallengeType = 'dns-01') { | ||||
|         let done = q.defer<ISmartAcmeChallengeAccepted>() | ||||
|         let done = q.defer<ISmartAcmeChallengeChosen>() | ||||
|         this.parentAcmeAccount.parentSmartAcme.rawacmeClient.newAuthz( | ||||
|             { | ||||
|                 identifier: { | ||||
| @@ -118,13 +119,36 @@ export class AcmeCert { | ||||
|                     console.log(err) | ||||
|                     done.reject(err) | ||||
|                 } | ||||
|                 let dnsChallenge = res.body.challenges.filter(x => { | ||||
|                 let preChosenChallenge = res.body.challenges.filter(x => { | ||||
|                     return x.type === challengeTypeArg | ||||
|                 })[0] | ||||
|                 this.acceptChallenge(dnsChallenge) | ||||
|                     .then((x: ISmartAcmeChallengeAccepted) => { | ||||
|                         done.resolve(x) | ||||
|                     }) | ||||
|  | ||||
|                 /** | ||||
|                  * the key is needed to accept the challenge | ||||
|                  */ | ||||
|                 let authKey: string = plugins.rawacme.keyAuthz( | ||||
|                     preChosenChallenge.token, | ||||
|                     this.parentAcmeAccount.parentSmartAcme.keyPair.publicKey | ||||
|                 ) | ||||
|  | ||||
|                 /** | ||||
|                  * needed in case selected challenge is of type dns-01 | ||||
|                  */ | ||||
|                 this.dnsKeyHash = plugins.rawacme.dnsKeyAuthzHash(authKey) // needed if dns challenge is chosen | ||||
|                 /** | ||||
|                  * the return challenge | ||||
|                  */ | ||||
|                 this.chosenChallenge = { | ||||
|                     uri: preChosenChallenge.uri, | ||||
|                     type: preChosenChallenge.type, | ||||
|                     token: preChosenChallenge.token, | ||||
|                     keyAuthorization: authKey, | ||||
|                     status: preChosenChallenge.status, | ||||
|                     dnsKeyHash: this.dnsKeyHash, | ||||
|                     domainName: this.domainName, | ||||
|                     domainNamePrefixed: helpers.prefixName(this.domainName) | ||||
|                 } | ||||
|                 done.resolve(this.chosenChallenge) | ||||
|             } | ||||
|         ) | ||||
|         return done.promise | ||||
| @@ -134,13 +158,7 @@ export class AcmeCert { | ||||
|      * checks if DNS records are set, will go through a max of 30 cycles | ||||
|      */ | ||||
|     async checkDns(cycleArg = 1) { | ||||
|         console.log(`checkDns failed ${cycleArg} times and has ${30 - cycleArg} cycles to go before it fails permanently!`) | ||||
|         let myRecord | ||||
|         try { | ||||
|             myRecord = await myDnsly.getRecord(helpers.prefixName(this.domainName), 'TXT') | ||||
|             console.log('DNS is set!') | ||||
|             return myRecord[0][0] | ||||
|         } catch (err) { | ||||
|         let redoCheck = async (err?) => { | ||||
|             if (cycleArg < 30) { | ||||
|                 cycleArg++ | ||||
|                 await plugins.smartdelay.delayFor(2000) | ||||
| @@ -150,17 +168,32 @@ export class AcmeCert { | ||||
|                 throw err | ||||
|             } | ||||
|         } | ||||
|         console.log(`checkDns failed ${cycleArg} times and has ${30 - cycleArg} cycles to go before it fails permanently!`) | ||||
|         let myRecord | ||||
|         try { | ||||
|             myRecord = await myDnsly.getRecord(helpers.prefixName(this.domainName), 'TXT') | ||||
|             myRecord = myRecord[0][0] | ||||
|             if (myRecord === this.dnsKeyHash) { | ||||
|                 console.log('and matches the required dnsKeyHash') | ||||
|             } else { | ||||
|                 console.log('but does not match required dns keyHash!') | ||||
|                 return redoCheck() | ||||
|             } | ||||
|             console.log('DNS is set!') | ||||
|             return myRecord | ||||
|         } catch (err) { | ||||
|             return redoCheck() | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * validates a challenge, only call after you have set the challenge at the expected location | ||||
|      */ | ||||
|     async requestValidation() { | ||||
|         console.log('give it 2 minutes to settle!') | ||||
|         await plugins.smartdelay.delayFor(120000) | ||||
|         await plugins.smartdelay.delayFor(20000) | ||||
|         let makeRequest = () => { | ||||
|             let done = q.defer() | ||||
|             this.parentAcmeAccount.parentSmartAcme.rawacmeClient.poll(this.acceptedChallenge.uri, async (err, res) => { | ||||
|             this.parentAcmeAccount.parentSmartAcme.rawacmeClient.poll(this.chosenChallenge.uri, async (err, res) => { | ||||
|                 if (err) { | ||||
|                     console.log(err) | ||||
|                     return | ||||
| @@ -168,8 +201,8 @@ export class AcmeCert { | ||||
|                 console.log(`Validation response:`) | ||||
|                 console.log(JSON.stringify(res.body)) | ||||
|                 if (res.body.status === 'pending' || 'invalid') { | ||||
|                     console.log('retry in 4 minutes!') | ||||
|                     await plugins.smartdelay.delayFor(240000) | ||||
|                     console.log('retry in 6 minutes!') | ||||
|                     await plugins.smartdelay.delayFor(3000) | ||||
|                     makeRequest().then((x: any) => { done.resolve(x) }) | ||||
|                 } else { | ||||
|                     done.resolve(res.body) | ||||
| @@ -220,27 +253,13 @@ export class AcmeCert { | ||||
|     /** | ||||
|      * accept a challenge - for private use only | ||||
|      */ | ||||
|     private acceptChallenge(challengeArg: ISmartAcmeChallenge) { | ||||
|     acceptChallenge() { | ||||
|         let done = q.defer() | ||||
|  | ||||
|         /** | ||||
|          * the key is needed to accept the challenge | ||||
|          */ | ||||
|         let authKey: string = plugins.rawacme.keyAuthz( | ||||
|             challengeArg.token, | ||||
|             this.parentAcmeAccount.parentSmartAcme.keyPair.publicKey | ||||
|         ) | ||||
|  | ||||
|         /** | ||||
|          * needed in case selected challenge is of type dns-01 | ||||
|          */ | ||||
|         let keyHash: string = plugins.rawacme.dnsKeyAuthzHash(authKey) // needed if dns challenge is chosen | ||||
|  | ||||
|         this.parentAcmeAccount.parentSmartAcme.rawacmeClient.post( | ||||
|             challengeArg.uri, | ||||
|             this.chosenChallenge.uri, | ||||
|             { | ||||
|                 resource: 'challenge', | ||||
|                 keyAuthorization: authKey | ||||
|                 keyAuthorization: this.chosenChallenge.keyAuthorization | ||||
|             }, | ||||
|             this.parentAcmeAccount.parentSmartAcme.keyPair, | ||||
|             (err, res) => { | ||||
| @@ -248,21 +267,7 @@ export class AcmeCert { | ||||
|                     console.log(err) | ||||
|                     done.reject(err) | ||||
|                 } | ||||
|                 /** | ||||
|                  * the return challenge | ||||
|                  */ | ||||
|                 let returnDNSChallenge: ISmartAcmeChallengeAccepted = { | ||||
|                     uri: res.body.uri, | ||||
|                     type: res.body.type, | ||||
|                     token: res.body.token, | ||||
|                     keyAuthorization: res.body.keyAuthorization, | ||||
|                     status: res.body.status, | ||||
|                     dnsKeyHash: keyHash, | ||||
|                     domainName: this.domainName, | ||||
|                     domainNamePrefixed: helpers.prefixName(this.domainName) | ||||
|                 } | ||||
|                 this.acceptedChallenge = returnDNSChallenge | ||||
|                 done.resolve(returnDNSChallenge) | ||||
|                 done.resolve(res.body) | ||||
|             } | ||||
|         ) | ||||
|         return done.promise | ||||
|   | ||||
| @@ -14,7 +14,7 @@ export interface IRsaKeypair { | ||||
| } | ||||
|  | ||||
| export { AcmeAccount } from './smartacme.classes.acmeaccount' | ||||
| export { AcmeCert, ISmartAcmeChallenge, ISmartAcmeChallengeAccepted } from './smartacme.classes.acmecert' | ||||
| export { AcmeCert, ISmartAcmeChallenge, ISmartAcmeChallengeChosen } from './smartacme.classes.acmecert' | ||||
|  | ||||
| /** | ||||
|  * class SmartAcme exports methods for maintaining SSL Certificates | ||||
|   | ||||
		Reference in New Issue
	
	Block a user