2017-01-14 17:36:33 +00:00
|
|
|
import * as q from 'q'
|
|
|
|
|
|
|
|
import * as plugins from './smartacme.plugins'
|
|
|
|
import * as helpers from './smartacme.helpers'
|
|
|
|
|
|
|
|
import { SmartAcme, IRsaKeypair } from './smartacme.classes.smartacme'
|
|
|
|
import { AcmeCert } from './smartacme.classes.acmecert'
|
2017-01-01 23:18:51 +00:00
|
|
|
|
2017-01-14 13:14:50 +00:00
|
|
|
/**
|
|
|
|
* class AcmeAccount represents an AcmeAccount
|
|
|
|
*/
|
2017-01-01 23:18:51 +00:00
|
|
|
export class AcmeAccount {
|
2017-01-14 17:36:33 +00:00
|
|
|
parentSmartAcme: SmartAcme
|
|
|
|
location: string
|
|
|
|
link: string
|
|
|
|
JWK
|
|
|
|
constructor(smartAcmeParentArg: SmartAcme) {
|
|
|
|
this.parentSmartAcme = smartAcmeParentArg
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* register the account with letsencrypt
|
|
|
|
*/
|
|
|
|
register() {
|
|
|
|
let done = q.defer()
|
|
|
|
this.parentSmartAcme.rawacmeClient.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
|
|
|
|
this.link = res.headers.link
|
|
|
|
console.log(this.link)
|
|
|
|
this.location = res.headers.location
|
|
|
|
done.resolve()
|
|
|
|
})
|
|
|
|
return done.promise
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* agree to letsencrypr terms of service
|
|
|
|
*/
|
|
|
|
agreeTos() {
|
|
|
|
let done = q.defer()
|
|
|
|
let tosPart = this.link.split(',')[1]
|
|
|
|
let tosLinkPortion = tosPart.split(';')[0]
|
|
|
|
let url = tosLinkPortion.split(';')[0].trim().replace(/[<>]/g, '')
|
|
|
|
this.parentSmartAcme.rawacmeClient.post(this.location, { Agreement: url, resource: 'reg' }, (err, res) => {
|
|
|
|
if (err) {
|
|
|
|
console.log(err)
|
|
|
|
done.reject(err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
done.resolve()
|
|
|
|
})
|
|
|
|
return done.promise
|
|
|
|
}
|
|
|
|
|
|
|
|
createAcmeCert(domainNameArg: string) {
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|