fs = require('fs')
async = require('async')
winston = require('winston')
common = require('./common')
secret_token_length = 128
create_secret_token = (cb) ->
winston.debug("create '#{common.secret_token_filename()}'")
value = undefined
async.series([
(cb) ->
require('crypto').randomBytes secret_token_length, (ex, data) ->
value = data.toString('base64')
fs.writeFile(common.secret_token_filename(), value, cb)
(cb) ->
fs.chmod(common.secret_token_filename(), 0o600, cb)
], (err) ->
if err
cb(err)
else
cb(undefined, value)
)
exports.init_secret_token = (cb) ->
winston.debug("initializing secret token")
fs.readFile common.secret_token_filename(), (err, data) ->
if err
create_secret_token(cb)
else
cb(undefined, data.toString())