diff --git a/exec/letsyncrypt.js b/exec/letsyncrypt.js
index 5f54474d14d75c63f8e03ab9ce3f1ff077a13a69..75ebffe462d83243ae47428cc69b2acf9feb1ca6 100644
--- a/exec/letsyncrypt.js
+++ b/exec/letsyncrypt.js
@@ -6,7 +6,6 @@ require("acmev2.js", "ACMEv2");
 var ks_fname = backslash(system.ctrl_dir)+"letsyncrypt.key";
 var setting_fname = backslash(system.ctrl_dir)+"letsyncrypt.ini";
 var sks_fname = backslash(system.ctrl_dir)+"ssl.cert";
-var sbbsini_fname = backslash(system.ctrl_dir)+"sbbs.ini";
 var maincnf_fname = backslash(system.ctrl_dir)+"main.cnf";
 var recycle_sem = backslash(system.ctrl_dir)+"recycle.web";
 
@@ -164,7 +163,6 @@ var revoke = false;
 var rsa;
 var sks;
 var sks_group_readable = false;
-var sbbsini = new File(sbbsini_fname);
 var settings = new File(setting_fname);
 var syspass;
 var webroot;
@@ -173,19 +171,13 @@ var usersa = true;	// TODO: Make configurable
 var keysize = 256;	// TODO: Make configurable... ECC sizes are 32, 48, and 66 (66 is not supported by Let's Encrypt)
 var waittime;
 var TOSAgreed=false;
-
-/*
- * Get the Web Root
- */
-if (!sbbsini.open("r"))
-	throw("Unable to open "+sbbsini.name);
-webroot = backslash(sbbsini.iniGetValue("Web", "RootDirectory", "../web/root"));
-sbbsini.close();
+var sbbsini = load("sbbsini.js");
+var sysop_email = "sysop@" + system.inet_addr;
 
 /*
  * Now read the settings and state.
  */
-webroots[system.inet_addr] = webroot;
+webroots[sbbsini.web.host_name] = sbbsini.web.root_dir;
 if (settings.open("r")) {
 	domain_list = settings.iniGetObject("Domains");
 	for (i in domain_list) {
@@ -202,6 +194,7 @@ if (settings.open("r")) {
 	dir_path = settings.iniGetValue(null, "Directory", dir_path);
 	TOSAgreed = settings.iniGetValue(null, "TOSAgreed", TOSAgreed);
 	sks_group_readable = settings.iniGetValue(null, "GroupReadableKeyFile", sks_group_readable);
+	sysop_email = settings.iniGetValue(null, "SysopEmail", sysop_email);
 
 	settings.close();
 }
@@ -287,10 +280,10 @@ if (renew || rekey || revoke || print_tos) {
 	if (renew || rekey || revoke) {
 		if (acme.key_id === undefined) {
 			if (TOSAgreed)
-				acme.create_new_account({termsOfServiceAgreed:TOSAgreed,contact:["mailto:sysop@"+system.inet_addr]});
+				acme.create_new_account({termsOfServiceAgreed:TOSAgreed,contact:["mailto:"+sysop_email]});
 			else {
 				try {
-					acme.create_new_account({contact:["mailto:sysop@"+system.inet_addr]});
+					acme.create_new_account({contact:["mailto:"+sysop_email]});
 				}
 				catch (e) {
 					log(LOG_ERR, "Creating account without agreeing to ToS failed.");
@@ -344,7 +337,7 @@ if (revoke) {
 
 if (renew) {
 	/*
-	 * Create the order, using system.inet_addr
+	 * Create the order, using sbbsini.web.host_name
 	 */
 	for (i in webroots)
 		identifiers.push({type:"dns",value:i});
@@ -376,7 +369,7 @@ if (renew) {
 
 	csr.subjectpublickeyinfo=rsa;
 	csr.oganizationname=system.name;
-	csr.commonname=system.inet_addr;
+	csr.commonname=sbbsini.web.host_name;
 	for (i in webroots)
 		dnsnames.push(i);
 	csr.add_extension("2.5.29.17", false, create_dnsnames(dnsnames));