smartacme/ts/smartacme.classes.smartacme.ts

77 lines
2.4 KiB
TypeScript
Raw Normal View History

2016-11-11 13:17:50 +00:00
import 'typings-global'
import * as q from 'q'
import * as path from 'path'
let rsaKeygen = require('rsa-keygen')
2016-11-11 13:17:50 +00:00
import * as smartfile from 'smartfile'
import * as smartstring from 'smartstring'
let rawacme = require('rawacme')
2016-11-11 13:17:50 +00:00
import * as paths from './smartacme.paths'
2016-11-01 17:27:57 +00:00
import { SmartacmeHelper, IRsaKeypair } from './smartacme.classes.helper'
2016-11-11 13:17:50 +00:00
/**
* class SmartAcme exports methods for maintaining SSL Certificates
*/
2016-11-01 17:27:57 +00:00
export class SmartAcme {
helper: SmartacmeHelper // bundles helper methods that would clutter the main SmartAcme class
acmeUrl: string // the acme url to use
productionBool: boolean // a boolean to quickly know wether we are in production or not
keyPair: IRsaKeypair // the keyPair needed for account creation
JWK
2016-11-01 19:16:43 +00:00
2016-11-07 17:41:52 +00:00
/**
* the constructor for class SmartAcme
2016-11-07 17:41:52 +00:00
*/
constructor(productionArg: boolean = false) {
this.productionBool = productionArg
this.helper = new SmartacmeHelper()
this.keyPair = this.helper.createKeypair()
if (this.productionBool) {
this.acmeUrl = rawacme.LETSENCRYPT_STAGING_URL
2016-11-11 13:17:50 +00:00
} else {
this.acmeUrl = rawacme.LETSENCRYPT_URL
2016-11-11 13:17:50 +00:00
}
2016-11-01 19:16:43 +00:00
}
2016-11-07 17:41:52 +00:00
/**
2016-11-11 13:17:50 +00:00
* creates an account if not currently present in module
* @executes ASYNC
2016-11-07 17:41:52 +00:00
*/
2016-11-11 13:17:50 +00:00
createAccount() {
let done = q.defer()
rawacme.createClient(
{
url: this.acmeUrl,
publicKey: this.keyPair.publicKey,
privateKey: this.keyPair.privateKey
},
(err, client) => {
if (err) {
console.error('smartacme: something went wrong:')
console.log(err)
done.reject(err)
return
2016-11-11 13:17:50 +00:00
}
2016-11-01 19:16:43 +00:00
client.newReg(
{
contact: ['mailto:domains@lossless.org']
},
(err, res) => {
if (err) {
console.error('smartacme: something went wrong:')
console.log(err)
done.reject(err)
return
}
this.JWK = res.body.key
console.log(this.JWK)
done.resolve()
})
2016-11-01 19:16:43 +00:00
2016-11-11 13:17:50 +00:00
}
)
2016-11-11 13:17:50 +00:00
return done.promise
}
2016-11-01 17:27:57 +00:00
}