const minisrv_service_file = true; const camefrom = request_headers.query.camefrom; const action = request_headers.query.action; let address_book = null address_book = session_data.getSessionData("address_book") if (address_book === null) { session_data.setSessionData("address_book", []) address_book = []; } if (!camefrom && !action) { headers = `200 OK` data = ` Addresses
Mail list
Add
Look up
Help
E-mail addresses for ${session_data.getSessionData("subscriber_username")}
Your address is ${session_data.getSessionData("subscriber_username")}@${minisrv_config.config.domain_name}
Name E-mail address
`; for (let i = 0; i < address_book.length; i++) { data += `
${address_book[i].name} ${address_book[i].address}
` } data += ` `; } else { switch (camefrom) { case "messenger": headers = `200 OK`; data = ` Addresses
Mail List
Add
Help
Buddies for ${session_data.getSessionData("subscriber_username") || "You" }
Your address is ${session_data.getSessionData("messenger_email") || "unlinked" }@${session_data.getSessionData("messenger_domain") || "escargot.chat"}
Name  Options
`; break; } switch (action) { case "edit": case "editfromheader": const newaddress = request_headers.query.new_address headers = `200 OK`; data = ` ${(!newaddress) ? "Change" : "Add"} an e-mail address
Addresses
`; if (!newaddress) { data += `
Discard
`; } data += `
${(!newaddress) ? "Change" : "Add"} an e-mail address
`; if (!newaddress) { data += `To change the e-mail address, make your changes, then choose Done.

To remove the entry from your address book, choose Discard.`; } else { data += "Type a name and electronic mail address to add to your address book, then choose Add."; } data += `


Name

Address
${(!newaddress) ? `` : ""} `; break; case "add": let nameExists = false; let addrExists = false; // dumbass protection for making addresses look proper in the list let address = request_headers.query.address.split("@")[0]; address += `@${minisrv_config.config.domain_name}`; // sanity checks to make sure the user doesn't have duplicate names/addresses address_book.forEach(user => { if (user.name.includes(request_headers.query.nickname)) { nameExists = true; } }); address_book.forEach(user => { if (user.address.includes(address)) { addrExists = true; } }); if (addrExists) { headers = `400 The address ${address} already exists in your address book.`; } else if (nameExists) { headers = `400 The name ${request_headers.query.nickname} already exists in your address book. Please choose a different name and try again.`; } else { const entry = { name: request_headers.query.nickname, address: address } address_book.push(entry) session_data.setSessionData("address_book", address_book.sort(function (a, b) { return a.name < b.name ? -1 : 1; })) headers = `302 Moved temporarily wtv-expire-all: wtv-mail:/addressbook wtv-expire: wtv-mail:/addresslist Location: wtv-mail:/addressbook`; } break; case "change": address = request_headers.query.address let nickname = request_headers.query.nickname if (!address) { address = address_book[request_headers.query.id].address } if (!nickname) { nickname = address_book[request_headers.query.id].nickname } // dumbass protection for making addresses look proper in the list address = address.split("@")[0]; address += `@${minisrv_config.config.domain_name}`; nameExists = false; addrExists = false; if (address_book.length > 1) { const otheraddrs = address_book.slice(0) otheraddrs.splice(request_headers.query.id, 1) // sanity checks to make sure the user doesn't have duplicate names/addresses otheraddrs.forEach(user => { if (user.name.includes(nickname)) { nameExists = true; } }); otheraddrs.forEach(user => { if (user.address.includes(address)) { addrExists = true; } }); } if (addrExists) { headers = `400 The address ${address} already exists in your address book.`; } else if (nameExists) { headers = `400 The name ${nickname} already exists in your address book. Please choose a different name and try again.`; } else { const entry = { name: nickname, address: address } address_book[request_headers.query.id] = entry session_data.setSessionData("address_book", address_book.sort(function (a, b) { return a.name < b.name ? -1 : 1; })) headers = `302 Moved temporarily wtv-expire-all: wtv-mail:/addressbook wtv-expire: wtv-mail:/addresslist Location: wtv-mail:/addressbook`; } break; case "discard": if (address_book.length === 1) { address_book = [] } else { address_book.splice(request_headers.query.id, 1) } session_data.setSessionData("address_book", address_book.sort(function (a, b) { return a.name < b.name ? -1 : 1; })) headers = `302 Moved temporarily wtv-expire-all: wtv-mail:/addressbook wtv-expire: wtv-mail:/addresslist Location: wtv-mail:/addressbook`; break; default: headers = `302 Moved temporarily Location: wtv-mail:/addressbook`; break; } }