better error handling
This commit is contained in:
		
							parent
							
								
									0b50f7976f
								
							
						
					
					
						commit
						5d4785ee19
					
				| @ -61,23 +61,39 @@ | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   function newAlert(str) { | ||||
|     return new Promise(function () { | ||||
|       setTimeout(function () { | ||||
|         window.alert(str); | ||||
|         if (window.confirm("Start over?")) { | ||||
|           document.location.href = document.location.href.replace(/\/app.*/, '/'); | ||||
|         } | ||||
|       }, 10); | ||||
|     }); | ||||
|   } | ||||
| 
 | ||||
|   function submitForm(ev) { | ||||
|     var j = i; | ||||
|     i += 1; | ||||
| 
 | ||||
|     return PromiseA.resolve(steps[j].submit(ev)).catch(function (err) { | ||||
|     return PromiseA.resolve().then(function () { | ||||
|       return steps[j].submit(ev); | ||||
|     }).catch(function (err) { | ||||
|       var ourfault = true; | ||||
|       console.error(err); | ||||
|       console.error(Object.keys(err)); | ||||
|       if ('E_CHALLENGE_INVALID' === err.code) { | ||||
|       if (/failed to fetch/i.test(err.message)) { | ||||
|         return newAlert("Network connection failure."); | ||||
|       } | ||||
| 
 | ||||
|       if ('E_ACME_CHALLENGE' === err.code) { | ||||
|         if ('dns-01' === err.type) { | ||||
|           ourfault = false; | ||||
|           window.alert("It looks like the DNS record you set for " | ||||
|           return newAlert("It looks like the DNS record you set for " | ||||
|             + err.altname + " was incorrect or did not propagate. " | ||||
|             + "The error message was '" + err.message + "'"); | ||||
|         } else if ('http-01' === err.type) { | ||||
|           ourfault = false; | ||||
|           window.alert("It looks like the file you uploaded for " | ||||
|           return newAlert("It looks like the file you uploaded for " | ||||
|             + err.altname + " was incorrect or could not be downloaded. " | ||||
|             + "The error message was '" + err.message + "'"); | ||||
|         } | ||||
| @ -88,6 +104,7 @@ | ||||
|         window.alert("Something went wrong. It's probably our fault, not yours." | ||||
|           + " Please email aj@rootprojects.org to let him know. The error message is: \n" | ||||
|           + JSON.stringify(err, null, 2)); | ||||
|         return new Promise(function () {}); | ||||
|       } | ||||
|     }); | ||||
|   } | ||||
| @ -207,7 +224,7 @@ | ||||
|     acme = ACME.create({ Keypairs: Keypairs, CSR: CSR }); | ||||
|     return acme.init(acmeDirectoryUrl).then(function (directory) { | ||||
|       $qs('.js-acme-tos-url').href = directory.meta.termsOfService; | ||||
|       steps[i](); | ||||
|       return steps[i](); | ||||
|     }); | ||||
|   }; | ||||
| 
 | ||||
| @ -248,12 +265,7 @@ | ||||
|         }).catch(function (err) { | ||||
|           console.error("[accounts] failed to upsert account:"); | ||||
|           console.error(err); | ||||
|           window.alert(err.message || JSON.stringify(err, null, 2)); | ||||
|           return new Promise(function () { | ||||
|             if (window.confirm("Start over?")) { | ||||
|               document.location.reload(); | ||||
|             } | ||||
|           }); | ||||
|           return newAlert(err.message || JSON.stringify(err, null, 2)); | ||||
|         }); | ||||
|       }); | ||||
|     }).then(function () { | ||||
| @ -344,12 +356,19 @@ | ||||
|         console.info("[housekeeping] challenges", info.challenges); | ||||
| 
 | ||||
|         updateChallengeType(); | ||||
|         steps[i](); | ||||
|         return steps[i](); | ||||
|       }).catch(function (err) { | ||||
|         if (err.detail || err.urn) { | ||||
|           console.error("(Probably) User Error:"); | ||||
|           console.error(err); | ||||
|           return newAlert("There was an error, probably with your email or domain:\n" + err.message); | ||||
|         } | ||||
|         throw err; | ||||
|       }); | ||||
|     }).catch(function (err) { | ||||
|       console.error('Step \'\' Error:'); | ||||
|       console.error(err, err.stack); | ||||
|       window.alert("An error happened (but it's not your fault)." | ||||
|       return newAlert("An error happened (but it's not your fault)." | ||||
|         + " Email aj@rootprojects.org to let him know that 'order and get challenges' failed."); | ||||
|     }); | ||||
|   }; | ||||
| @ -388,7 +407,7 @@ | ||||
|         }).then(function (certs) { | ||||
|           return Keypairs.export({ jwk: serverJwk }).then(function (keyPem) { | ||||
|             console.info('WINNING!'); | ||||
|             console.log(certs); | ||||
|             console.info(certs); | ||||
|             $qs('#js-fullchain').innerHTML = [ | ||||
|               certs.cert.trim() + "\n" | ||||
|             , certs.chain + "\n" | ||||
| @ -399,7 +418,7 @@ | ||||
|             $qs('#js-privkey').innerHTML = keyPem; | ||||
|             $qs("#js-download-privkey-link").href = | ||||
|               "data:text/octet-stream;base64," + window.btoa(keyPem); | ||||
|             submitForm(); | ||||
|             return submitForm(); | ||||
|           }); | ||||
|         }); | ||||
|       }); | ||||
| @ -416,7 +435,7 @@ | ||||
|   steps[4].submit = function () { | ||||
|     console.info('[submit] 4. Order complete'); | ||||
| 
 | ||||
|     steps[i](); | ||||
|     return steps[i](); | ||||
|   }; | ||||
| 
 | ||||
|   steps[5] = function () { | ||||
| @ -435,7 +454,7 @@ | ||||
|     $qsa('.js-acme-form').forEach(function ($el) { | ||||
|       $el.addEventListener('submit', function (ev) { | ||||
|         ev.preventDefault(); | ||||
|         submitForm(ev); | ||||
|         return submitForm(ev); | ||||
|       }); | ||||
|     }); | ||||
| 
 | ||||
| @ -457,7 +476,7 @@ | ||||
| 
 | ||||
|       updateApiType(); | ||||
|       steps[2](); | ||||
|       submitForm(); | ||||
|       return submitForm(); | ||||
|     } else { | ||||
|       steps[1](); | ||||
|     } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user