v2.8.0: Fix regression with set challenges being ignored #40
							
								
								
									
										37
									
								
								lib/core.js
									
									
									
									
									
								
							
							
						
						
									
										37
									
								
								lib/core.js
									
									
									
									
									
								
							@ -365,17 +365,18 @@ module.exports.create = function (gl) {
 | 
				
			|||||||
              //
 | 
					              //
 | 
				
			||||||
              certReq.setChallenge = function (challenge, done) {
 | 
					              certReq.setChallenge = function (challenge, done) {
 | 
				
			||||||
                log(args.debug, "setChallenge called for '" + challenge.altname + "'");
 | 
					                log(args.debug, "setChallenge called for '" + challenge.altname + "'");
 | 
				
			||||||
 | 
					                // NOTE: First arg takes precedence
 | 
				
			||||||
                var copy = utils.merge({ domains: [challenge.altname] }, args);
 | 
					                var copy = utils.merge({ domains: [challenge.altname] }, args);
 | 
				
			||||||
                copy = utils.merge(copy, gl);
 | 
					                copy = utils.merge(copy, gl);
 | 
				
			||||||
                utils.tplCopy(copy);
 | 
					                utils.tplCopy(copy);
 | 
				
			||||||
                copy.challenge = challenge;
 | 
					                copy.challenge = challenge;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (1 === gl.challenges[challenge.type].set.length) {
 | 
					                if (1 === copy.challenges[challenge.type].set.length) {
 | 
				
			||||||
                  gl.challenges[challenge.type].set(copy).then(function (result) {
 | 
					                  copy.challenges[challenge.type].set(copy).then(function (result) {
 | 
				
			||||||
                    done(null, result);
 | 
					                    done(null, result);
 | 
				
			||||||
                  }).catch(done);
 | 
					                  }).catch(done);
 | 
				
			||||||
                } else if (2 === gl.challenges[challenge.type].set.length) {
 | 
					                } else if (2 === copy.challenges[challenge.type].set.length) {
 | 
				
			||||||
                  gl.challenges[challenge.type].set(copy, done);
 | 
					                  copy.challenges[challenge.type].set(copy, done);
 | 
				
			||||||
                } else {
 | 
					                } else {
 | 
				
			||||||
                  Object.keys(challenge).forEach(function (key) {
 | 
					                  Object.keys(challenge).forEach(function (key) {
 | 
				
			||||||
                    done[key] = challenge[key];
 | 
					                    done[key] = challenge[key];
 | 
				
			||||||
@ -383,28 +384,42 @@ module.exports.create = function (gl) {
 | 
				
			|||||||
                  // regression bugfix for le-challenge-cloudflare
 | 
					                  // regression bugfix for le-challenge-cloudflare
 | 
				
			||||||
                  // (_acme-challege => _greenlock-dryrun-XXXX)
 | 
					                  // (_acme-challege => _greenlock-dryrun-XXXX)
 | 
				
			||||||
                  copy.acmePrefix = (challenge.dnsHost||'').replace(/\.*/, '') || copy.acmePrefix;
 | 
					                  copy.acmePrefix = (challenge.dnsHost||'').replace(/\.*/, '') || copy.acmePrefix;
 | 
				
			||||||
                  gl.challenges[challenge.type].set(copy, challenge.altname, challenge.token, challenge.keyAuthorization, done);
 | 
					                  copy.challenges[challenge.type].set(copy, challenge.altname, challenge.token, challenge.keyAuthorization, done);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
              };
 | 
					              };
 | 
				
			||||||
              certReq.removeChallenge = function (challenge, done) {
 | 
					              certReq.removeChallenge = function (challenge, done) {
 | 
				
			||||||
                log(args.debug, "removeChallenge called for '" + challenge.altname + "'");
 | 
					                log(args.debug, "removeChallenge called for '" + challenge.altname + "'");
 | 
				
			||||||
                var copy = utils.merge({ domains: [challenge.altname] }, gl);
 | 
					                var copy = utils.merge({ domains: [challenge.altname] }, args);
 | 
				
			||||||
 | 
					                copy = utils.merge(copy, gl);
 | 
				
			||||||
                utils.tplCopy(copy);
 | 
					                utils.tplCopy(copy);
 | 
				
			||||||
                copy.challenge = challenge;
 | 
					                copy.challenge = challenge;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (1 === gl.challenges[challenge.type].remove.length) {
 | 
					                if (1 === copy.challenges[challenge.type].remove.length) {
 | 
				
			||||||
                  gl.challenges[challenge.type].remove(copy).then(function (result) {
 | 
					                  copy.challenges[challenge.type].remove(copy).then(function (result) {
 | 
				
			||||||
                    done(null, result);
 | 
					                    done(null, result);
 | 
				
			||||||
                  }).catch(done);
 | 
					                  }).catch(done);
 | 
				
			||||||
                } else if (2 === gl.challenges[challenge.type].remove.length) {
 | 
					                } else if (2 === copy.challenges[challenge.type].remove.length) {
 | 
				
			||||||
                  gl.challenges[challenge.type].remove(copy, done);
 | 
					                  copy.challenges[challenge.type].remove(copy, done);
 | 
				
			||||||
                } else {
 | 
					                } else {
 | 
				
			||||||
                  Object.keys(challenge).forEach(function (key) {
 | 
					                  Object.keys(challenge).forEach(function (key) {
 | 
				
			||||||
                    done[key] = challenge[key];
 | 
					                    done[key] = challenge[key];
 | 
				
			||||||
                  });
 | 
					                  });
 | 
				
			||||||
                  gl.challenges[challenge.type].remove(copy, challenge.altname, challenge.token, done);
 | 
					                  copy.challenges[challenge.type].remove(copy, challenge.altname, challenge.token, done);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
              };
 | 
					              };
 | 
				
			||||||
 | 
					              certReq.getZones = function (challenge) {
 | 
				
			||||||
 | 
					                var copy = utils.merge({ dnsHosts: args.domains.map(function (x) { return 'xxxx.' + x; }) }, args);
 | 
				
			||||||
 | 
					                copy = utils.merge(copy, gl);
 | 
				
			||||||
 | 
					                utils.tplCopy(copy);
 | 
				
			||||||
 | 
					                copy.challenge = challenge;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (!copy.challenges[challenge.type] || ('function' !== typeof copy.challenges[challenge.type].zones)) {
 | 
				
			||||||
 | 
					                  // may not be available, that's fine.
 | 
				
			||||||
 | 
					                  return Promise.resolve([]);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                return copy.challenges[challenge.type].zones(copy);
 | 
				
			||||||
 | 
					              };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
              log(args.debug, 'calling greenlock.acme.getCertificateAsync', certReq.subject, certReq.domains);
 | 
					              log(args.debug, 'calling greenlock.acme.getCertificateAsync', certReq.subject, certReq.domains);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -54,6 +54,7 @@ module.exports.merge = function (/*defaults, args*/) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  allDefaults.forEach(function (defaults) {
 | 
					  allDefaults.forEach(function (defaults) {
 | 
				
			||||||
    Object.keys(defaults).forEach(function (key) {
 | 
					    Object.keys(defaults).forEach(function (key) {
 | 
				
			||||||
 | 
					    /*
 | 
				
			||||||
      if ('challenges' === key && copy[key] && defaults[key]) {
 | 
					      if ('challenges' === key && copy[key] && defaults[key]) {
 | 
				
			||||||
        Object.keys(defaults[key]).forEach(function (k) {
 | 
					        Object.keys(defaults[key]).forEach(function (k) {
 | 
				
			||||||
          copy[key][k] = defaults[key][k];
 | 
					          copy[key][k] = defaults[key][k];
 | 
				
			||||||
@ -61,10 +62,13 @@ module.exports.merge = function (/*defaults, args*/) {
 | 
				
			|||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        copy[key] = defaults[key];
 | 
					        copy[key] = defaults[key];
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					    */
 | 
				
			||||||
 | 
					      copy[key] = defaults[key];
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Object.keys(args).forEach(function (key) {
 | 
					  Object.keys(args).forEach(function (key) {
 | 
				
			||||||
 | 
					    /*
 | 
				
			||||||
    if ('challenges' === key && copy[key] && args[key]) {
 | 
					    if ('challenges' === key && copy[key] && args[key]) {
 | 
				
			||||||
        Object.keys(args[key]).forEach(function (k) {
 | 
					        Object.keys(args[key]).forEach(function (k) {
 | 
				
			||||||
          copy[key][k] = args[key][k];
 | 
					          copy[key][k] = args[key][k];
 | 
				
			||||||
@ -72,6 +76,8 @@ module.exports.merge = function (/*defaults, args*/) {
 | 
				
			|||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      copy[key] = args[key];
 | 
					      copy[key] = args[key];
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    */
 | 
				
			||||||
 | 
					    copy[key] = args[key];
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return copy;
 | 
					  return copy;
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										22
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										22
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@ -1,19 +1,19 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "name": "greenlock",
 | 
					  "name": "greenlock",
 | 
				
			||||||
  "version": "2.7.23",
 | 
					  "version": "2.8.0",
 | 
				
			||||||
  "lockfileVersion": 1,
 | 
					  "lockfileVersion": 1,
 | 
				
			||||||
  "requires": true,
 | 
					  "requires": true,
 | 
				
			||||||
  "dependencies": {
 | 
					  "dependencies": {
 | 
				
			||||||
    "@coolaj86/urequest": {
 | 
					 | 
				
			||||||
      "version": "1.3.7",
 | 
					 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@coolaj86/urequest/-/urequest-1.3.7.tgz",
 | 
					 | 
				
			||||||
      "integrity": "sha512-PPrVYra9aWvZjSCKl/x1pJ9ZpXda1652oJrPBYy5rQumJJMkmTBN3ux+sK2xAUwVvv2wnewDlaQaHLxLwSHnIA=="
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "@root/mkdirp": {
 | 
					    "@root/mkdirp": {
 | 
				
			||||||
      "version": "1.0.0",
 | 
					      "version": "1.0.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@root/mkdirp/-/mkdirp-1.0.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@root/mkdirp/-/mkdirp-1.0.0.tgz",
 | 
				
			||||||
      "integrity": "sha512-hxGAYUx5029VggfG+U9naAhQkoMSXtOeXtbql97m3Hi6/sQSRL/4khKZPyOF6w11glyCOU38WCNLu9nUcSjOfA=="
 | 
					      "integrity": "sha512-hxGAYUx5029VggfG+U9naAhQkoMSXtOeXtbql97m3Hi6/sQSRL/4khKZPyOF6w11glyCOU38WCNLu9nUcSjOfA=="
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "@root/request": {
 | 
				
			||||||
 | 
					      "version": "1.3.11",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/@root/request/-/request-1.3.11.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-3a4Eeghcjsfe6zh7EJ+ni1l8OK9Fz2wL1OjP4UCa0YdvtH39kdXB9RGWuzyNv7dZi0+Ffkc83KfH0WbPMiuJFw=="
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "acme": {
 | 
					    "acme": {
 | 
				
			||||||
      "version": "1.3.0",
 | 
					      "version": "1.3.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/acme/-/acme-1.3.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/acme/-/acme-1.3.0.tgz",
 | 
				
			||||||
@ -28,12 +28,12 @@
 | 
				
			|||||||
      "integrity": "sha512-Aa4bUpq6ftX1VODiShOetOY5U0tsXY5EV7+fQwme3Q8Y9rjYBArBXHgFCAVKtK1AF+Ev8pIuF6Z42hzMFa73/w=="
 | 
					      "integrity": "sha512-Aa4bUpq6ftX1VODiShOetOY5U0tsXY5EV7+fQwme3Q8Y9rjYBArBXHgFCAVKtK1AF+Ev8pIuF6Z42hzMFa73/w=="
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "acme-v2": {
 | 
					    "acme-v2": {
 | 
				
			||||||
      "version": "1.7.7",
 | 
					      "version": "1.8.1",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/acme-v2/-/acme-v2-1.7.7.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/acme-v2/-/acme-v2-1.8.1.tgz",
 | 
				
			||||||
      "integrity": "sha512-Pg0EQ45h8N2e4K2goYedutCgWxAmtcruwDHr6hgPBgAWEORVb5SQEdXjtEhCrn+APtr7MyFPryyzXpYpDD5ecA==",
 | 
					      "integrity": "sha512-1nTyycCnsjTZogQ9JQ1nld9r7nY3G9WguKPXV+YdTEvEl0Q8kUcwkzkohsbRHpaUcSqU+OP7t7qLVSp2aWriPQ==",
 | 
				
			||||||
      "requires": {
 | 
					      "requires": {
 | 
				
			||||||
        "@coolaj86/urequest": "^1.3.6",
 | 
					        "@root/request": "^1.3.11",
 | 
				
			||||||
        "rsa-compat": "^2.0.6"
 | 
					        "rsa-compat": "^2.0.8"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "cert-info": {
 | 
					    "cert-info": {
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "name": "greenlock",
 | 
					  "name": "greenlock",
 | 
				
			||||||
  "version": "2.7.24",
 | 
					  "version": "2.8.0",
 | 
				
			||||||
  "description": "Greenlock is Let's Encrypt (ACME) client for node.js",
 | 
					  "description": "Greenlock is Let's Encrypt (ACME) client for node.js",
 | 
				
			||||||
  "homepage": "https://greenlock.domains/",
 | 
					  "homepage": "https://greenlock.domains/",
 | 
				
			||||||
  "main": "index.js",
 | 
					  "main": "index.js",
 | 
				
			||||||
@ -37,7 +37,7 @@
 | 
				
			|||||||
  "dependencies": {
 | 
					  "dependencies": {
 | 
				
			||||||
    "acme": "^1.3.0",
 | 
					    "acme": "^1.3.0",
 | 
				
			||||||
    "acme-dns-01-cli": "^3.0.0",
 | 
					    "acme-dns-01-cli": "^3.0.0",
 | 
				
			||||||
    "acme-v2": "^1.7.7",
 | 
					    "acme-v2": "^1.8.1",
 | 
				
			||||||
    "cert-info": "^1.5.1",
 | 
					    "cert-info": "^1.5.1",
 | 
				
			||||||
    "greenlock-store-fs": "^3.0.2",
 | 
					    "greenlock-store-fs": "^3.0.2",
 | 
				
			||||||
    "keypairs": "^1.2.14",
 | 
					    "keypairs": "^1.2.14",
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user