9 ficheiros modificados com 342 adições e 129 eliminações
@ -0,0 +1,135 @@ |
|||
'use strict'; |
|||
|
|||
var P = require('../plugins.js'); |
|||
var args = process.argv.slice(3); |
|||
var cli = require('./lib/cli.js'); |
|||
//var path = require('path');
|
|||
//var pkgpath = path.join(__dirname, '..', 'package.json');
|
|||
//var pkgpath = path.join(process.cwd(), 'package.json');
|
|||
|
|||
var Flags = require('./lib/flags.js'); |
|||
|
|||
var flagOptions = Flags.flags(); |
|||
var myFlags = {}; |
|||
['maintainer-email', 'cluster', 'manager', 'manager-xxxx'].forEach(function(k) { |
|||
myFlags[k] = flagOptions[k]; |
|||
}); |
|||
|
|||
cli.parse(myFlags); |
|||
cli.main(async function(argList, flags) { |
|||
var path = require('path'); |
|||
var pkgpath = path.join(process.cwd(), 'package.json'); |
|||
var pkgdir = path.dirname(pkgpath); |
|||
//var rcpath = path.join(pkgpath, '.greenlockrc');
|
|||
var configFile = path.join(pkgdir, 'greenlock.d/manager.json'); |
|||
var manager = flags.manager; |
|||
|
|||
// TODO move to bin/lib/greenlockrc.js
|
|||
if (!manager) { |
|||
manager = 'greenlock-cloud-fs'; |
|||
if (!flags.managerOpts.configFile) { |
|||
flags.managerOpts.configFile = configFile; |
|||
} |
|||
} |
|||
if (['fs', 'cloud'].includes(manager)) { |
|||
// TODO publish the 1st party modules under a secure namespace
|
|||
flags.manager = '@greenlock/manager-' + flags.manager; |
|||
} |
|||
flags.manager = flags.managerOpts; |
|||
delete flags.managerOpts; |
|||
flags.manager.manager = manager; |
|||
|
|||
try { |
|||
P._loadSync(manager); |
|||
} catch (e) { |
|||
try { |
|||
P._installSync(manager); |
|||
} catch (e) { |
|||
console.error( |
|||
'error:', |
|||
JSON.stringify(manager), |
|||
'could not be loaded, and could not be installed.' |
|||
); |
|||
process.exit(1); |
|||
} |
|||
} |
|||
|
|||
var GreenlockRc = require('./lib/greenlockrc.js'); |
|||
//var rc = await GreenlockRc(pkgpath, manager, flags.manager);
|
|||
await GreenlockRc(pkgpath, manager, flags.manager); |
|||
writeServerJs(pkgdir, flags); |
|||
writeAppJs(pkgdir); |
|||
|
|||
/* |
|||
rc._bin_mode = true; |
|||
var Greenlock = require('../'); |
|||
// this is a copy, so it's safe to modify
|
|||
var greenlock = Greenlock.create(rc); |
|||
var mconf = await greenlock.manager.defaults(); |
|||
var flagOptions = Flags.flags(mconf, myOpts); |
|||
*/ |
|||
}, args); |
|||
|
|||
function writeServerJs(pkgdir, flags) { |
|||
var serverJs = 'server.js'; |
|||
var bakTmpl = 'server-greenlock-tmpl.js'; |
|||
var fs = require('fs'); |
|||
var path = require('path'); |
|||
var tmpl = fs.readFileSync( |
|||
path.join(__dirname, 'tmpl/server.tmpl.js'), |
|||
'utf8' |
|||
); |
|||
|
|||
try { |
|||
fs.accessSync(path.join(pkgdir, serverJs)); |
|||
console.warn( |
|||
JSON.stringify(serverJs), |
|||
' exists, writing to ', |
|||
JSON.stringify(bakTmpl), |
|||
'instead' |
|||
); |
|||
serverJs = bakTmpl; |
|||
} catch (e) { |
|||
// continue
|
|||
} |
|||
|
|||
if (flags.cluster) { |
|||
tmpl = tmpl.replace( |
|||
/options.cluster = false/g, |
|||
'options.cluster = true' |
|||
); |
|||
} |
|||
if (flags.maintainerEmail) { |
|||
tmpl = tmpl.replace( |
|||
/pkg.author/g, |
|||
JSON.stringify(flags.maintainerEmail) |
|||
); |
|||
} |
|||
fs.writeFileSync(path.join(pkgdir, serverJs), tmpl); |
|||
} |
|||
|
|||
function writeAppJs(pkgdir) { |
|||
var bakTmpl = 'app-greenlock-tmpl.js'; |
|||
var appJs = 'app.js'; |
|||
var fs = require('fs'); |
|||
var path = require('path'); |
|||
var tmpl = fs.readFileSync( |
|||
path.join(__dirname, 'tmpl/app.tmpl.js'), |
|||
'utf8' |
|||
); |
|||
|
|||
try { |
|||
fs.accessSync(path.join(pkgdir, appJs)); |
|||
console.warn( |
|||
JSON.stringify(appJs), |
|||
' exists, writing to ', |
|||
JSON.stringify(bakTmpl), |
|||
'instead' |
|||
); |
|||
appJs = bakTmpl; |
|||
} catch (e) { |
|||
// continue
|
|||
} |
|||
|
|||
fs.writeFileSync(path.join(pkgdir, appJs), tmpl); |
|||
} |
@ -0,0 +1,9 @@ |
|||
'use strict'; |
|||
|
|||
// Here's a vanilla HTTP app to start,
|
|||
// but feel free to replace it with Express, Koa, etc
|
|||
var app = function(req, res) { |
|||
res.end('Hello, Encrypted World!'); |
|||
}; |
|||
|
|||
module.exports = app; |
@ -0,0 +1,36 @@ |
|||
'use strict'; |
|||
|
|||
require('greenlock-express') |
|||
.init(function() { |
|||
// .greenlockrc defines which manager to use
|
|||
// (i.e. greenlock-manager-fs or greenlock-manager-cloud)
|
|||
var options = getGreenlockRc() || {}; |
|||
|
|||
// name & version for ACME client user agent
|
|||
var pkg = require('./package.json'); |
|||
options.packageAgent = pkg.name + '/' + pkg.version; |
|||
|
|||
// contact for security and critical bug notices
|
|||
options.maintainerEmail = pkg.author; |
|||
|
|||
// whether or not to run at cloudscale
|
|||
options.cluster = false; |
|||
|
|||
return options; |
|||
}) |
|||
.ready(function(glx) { |
|||
var app = require('./app.js'); |
|||
|
|||
// Serves on 80 and 443
|
|||
// Get's SSL certificates magically!
|
|||
glx.serveApp(app); |
|||
}); |
|||
|
|||
function getGreenlockRc() { |
|||
// The RC file is also used by the (optional) CLI and (optional) Web GUI.
|
|||
// You are free to forego CLI and GUI support.
|
|||
var fs = require('fs'); |
|||
var rcPath = '.greenlockrc'; |
|||
var rc = fs.readFileSync(rcPath, 'utf8'); |
|||
return JSON.parse(rc); |
|||
} |
Carregando…
Criar uma nova questão referindo esta