mirror of
				https://git.coolaj86.com/coolaj86/greenlock-manager-fs.js.git
				synced 2025-11-03 18:12:48 +00:00 
			
		
		
		
	v3.1.0: update for latest tests (and sites array)
This commit is contained in:
		
							parent
							
								
									4b47fb4eb6
								
							
						
					
					
						commit
						6a6c9cc88e
					
				
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@ -1,3 +1,5 @@
 | 
			
		||||
*delete-me*
 | 
			
		||||
 | 
			
		||||
# ---> Node
 | 
			
		||||
# Logs
 | 
			
		||||
logs
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										20
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								README.md
									
									
									
									
									
								
							@ -10,22 +10,28 @@ A simple file-based management strategy for Greenlock v3
 | 
			
		||||
npm install --save greenlock-manager-fs@v3
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Use with Greenlock
 | 
			
		||||
## Usage
 | 
			
		||||
 | 
			
		||||
```js
 | 
			
		||||
var greenlock = require('greenlock').create({
 | 
			
		||||
	// ...
 | 
			
		||||
npx greenlock init --manager greenlock-manager-fs --config-dir './greenlock.d'
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
	manager: 'greenlock-manager-fs',
 | 
			
		||||
	configFile: '~/.config/greenlock/manager.json'
 | 
			
		||||
});
 | 
			
		||||
Or, place this file in the root of your project:
 | 
			
		||||
 | 
			
		||||
`.greenlockrc`:
 | 
			
		||||
 | 
			
		||||
```json
 | 
			
		||||
{
 | 
			
		||||
	"manager": "greenlock-manager-fs",
 | 
			
		||||
	"configDir": "./greenlock.d"
 | 
			
		||||
}
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Example config file
 | 
			
		||||
 | 
			
		||||
You might start your config file like this:
 | 
			
		||||
 | 
			
		||||
`~/.config/greenlock/manager.json`:
 | 
			
		||||
`./greenlock.d/config.json`:
 | 
			
		||||
 | 
			
		||||
```json
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										54
									
								
								manager.js
									
									
									
									
									
								
							
							
						
						
									
										54
									
								
								manager.js
									
									
									
									
									
								
							@ -19,8 +19,13 @@ var mkdirp = promisify(require('@root/mkdirp'));
 | 
			
		||||
// and wanting to be fairly sure it works and produces
 | 
			
		||||
// meaningful errors
 | 
			
		||||
 | 
			
		||||
// IMPORTANT
 | 
			
		||||
// For your use case you'll probably find a better example
 | 
			
		||||
// in greenlock-manager-test
 | 
			
		||||
// in greenlock-manager-test:
 | 
			
		||||
//
 | 
			
		||||
//    npm install --save greenlock-manager-test
 | 
			
		||||
//    npx greenlock-manager-init
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
Manage.create = function(CONF) {
 | 
			
		||||
	if (!CONF) {
 | 
			
		||||
@ -75,6 +80,31 @@ Manage.create = function(CONF) {
 | 
			
		||||
		return manage._txPromise;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	manage.get = async function(args) {
 | 
			
		||||
		manage._txPromise = manage._txPromise.then(async function() {
 | 
			
		||||
			var config = await Manage._getLatest(manage, CONF);
 | 
			
		||||
			var site;
 | 
			
		||||
			Object.keys(config.sites).some(function(k) {
 | 
			
		||||
				// if subject is specified, don't return anything else
 | 
			
		||||
				var _site = config.sites[k];
 | 
			
		||||
 | 
			
		||||
				// altnames, servername, and wildname all get rolled into one
 | 
			
		||||
				return _site.altnames.some(function(altname) {
 | 
			
		||||
					if ([args.servername, args.wildname].includes(altname)) {
 | 
			
		||||
						site = _site;
 | 
			
		||||
					}
 | 
			
		||||
				});
 | 
			
		||||
			});
 | 
			
		||||
 | 
			
		||||
			if (site && !site.deletedAt) {
 | 
			
		||||
				return doctor.site(config.sites, site.subject);
 | 
			
		||||
			}
 | 
			
		||||
			return null;
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
		return manage._txPromise;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	manage._merge = function(config, current, args) {
 | 
			
		||||
		if (!current || current.deletedAt) {
 | 
			
		||||
			current = config.sites[args.subject] = {
 | 
			
		||||
@ -250,8 +280,16 @@ Manage.create = function(CONF) {
 | 
			
		||||
	manage._save = async function(config) {
 | 
			
		||||
		await mkdirp(path.dirname(CONF.configFile));
 | 
			
		||||
		// pretty-print the config file
 | 
			
		||||
		var data = JSON.stringify(config, null, 2);
 | 
			
		||||
		await sfs.writeFileAsync(CONF.configFile, data, 'utf8');
 | 
			
		||||
		var data = JSON.parse(JSON.stringify(config));
 | 
			
		||||
		var sites = data.sites || {};
 | 
			
		||||
		data.sites = Object.keys(sites).map(function(k) {
 | 
			
		||||
			return sites[k];
 | 
			
		||||
		});
 | 
			
		||||
		await sfs.writeFileAsync(
 | 
			
		||||
			CONF.configFile,
 | 
			
		||||
			JSON.stringify(data, null, 2),
 | 
			
		||||
			'utf8'
 | 
			
		||||
		);
 | 
			
		||||
 | 
			
		||||
		// this file may contain secrets, so keep it safe
 | 
			
		||||
		return chmodFile(CONF.configFile, parseInt('0600', 8))
 | 
			
		||||
@ -266,8 +304,9 @@ Manage.create = function(CONF) {
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	manage.init = async function(deps) {
 | 
			
		||||
		var request = deps.request;
 | 
			
		||||
		// how nice...
 | 
			
		||||
		// even though we don't need it
 | 
			
		||||
		manage.request = deps.request;
 | 
			
		||||
		return null;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	return manage;
 | 
			
		||||
@ -310,7 +349,10 @@ doctor.config = function(config) {
 | 
			
		||||
	doctor.sites(config);
 | 
			
		||||
 | 
			
		||||
	Object.keys(config).forEach(function(key) {
 | 
			
		||||
		if (['defaults', 'routes', 'sites'].includes(key)) {
 | 
			
		||||
		// .greenlockrc and greenlock.json shall merge as one
 | 
			
		||||
		// and be called greenlock.json because calling it
 | 
			
		||||
		// .greenlockrc seems to rub people the wrong way
 | 
			
		||||
		if (['manager', 'defaults', 'routes', 'sites'].includes(key)) {
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		config.defaults[key] = config[key];
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										14
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										14
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
	"name": "greenlock-manager-fs",
 | 
			
		||||
	"version": "3.0.5",
 | 
			
		||||
	"version": "3.1.0",
 | 
			
		||||
	"lockfileVersion": 1,
 | 
			
		||||
	"requires": true,
 | 
			
		||||
	"dependencies": {
 | 
			
		||||
@ -16,9 +16,9 @@
 | 
			
		||||
			"dev": true
 | 
			
		||||
		},
 | 
			
		||||
		"greenlock-manager-fs": {
 | 
			
		||||
			"version": "3.0.1",
 | 
			
		||||
			"resolved": "https://registry.npmjs.org/greenlock-manager-fs/-/greenlock-manager-fs-3.0.1.tgz",
 | 
			
		||||
			"integrity": "sha512-vZfGFq1TTKxaAqdGDUwNservrNzXx0xCwT/ovG/N378GrhS+U5S8B8LUlNtQU7Fdw6RToMiBcm22OOxSrvZ2zw==",
 | 
			
		||||
			"version": "3.0.5",
 | 
			
		||||
			"resolved": "https://registry.npmjs.org/greenlock-manager-fs/-/greenlock-manager-fs-3.0.5.tgz",
 | 
			
		||||
			"integrity": "sha512-r/q+tEFuDwklfzPfiGhcIrHuJxMrppC+EseESpu5f0DMokh+1iZVm9nGC/VE7/7GETdOYfEYhhQkmspsi8Gr/A==",
 | 
			
		||||
			"dev": true,
 | 
			
		||||
			"requires": {
 | 
			
		||||
				"@root/mkdirp": "^1.0.0",
 | 
			
		||||
@ -26,9 +26,9 @@
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		"greenlock-manager-test": {
 | 
			
		||||
			"version": "3.0.0",
 | 
			
		||||
			"resolved": "https://registry.npmjs.org/greenlock-manager-test/-/greenlock-manager-test-3.0.0.tgz",
 | 
			
		||||
			"integrity": "sha512-grqpUcxT7v5KzJ04r8wJWXjSVm7us1z/2QluCJRl9BZUM4CXzQuP1C0d2wdsV4NHwziEGJpA+4mFsntuh3f1YA==",
 | 
			
		||||
			"version": "3.1.1",
 | 
			
		||||
			"resolved": "https://registry.npmjs.org/greenlock-manager-test/-/greenlock-manager-test-3.1.1.tgz",
 | 
			
		||||
			"integrity": "sha512-wZ+Oxn5qTEoN+VDd3Y+kBYZ8MlaLlhm40KwIwfyR90bj08IZpfzE7zGY8SwBEbIx0wNSo6ztDku4Y0gVgxxwCA==",
 | 
			
		||||
			"dev": true,
 | 
			
		||||
			"requires": {
 | 
			
		||||
				"@root/request": "^1.4.1",
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
	"name": "greenlock-manager-fs",
 | 
			
		||||
	"version": "3.0.5",
 | 
			
		||||
	"version": "3.1.0",
 | 
			
		||||
	"description": "A simple file-based management strategy for Greenlock",
 | 
			
		||||
	"main": "manager.js",
 | 
			
		||||
	"scripts": {
 | 
			
		||||
@ -27,6 +27,6 @@
 | 
			
		||||
		"safe-replace": "^1.1.0"
 | 
			
		||||
	},
 | 
			
		||||
	"devDependencies": {
 | 
			
		||||
		"greenlock-manager-test": "^3.0.0"
 | 
			
		||||
		"greenlock-manager-test": "^3.1.1"
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user