var minisrv_service_file = true; var camefrom = request_headers.query.camefrom; var action = request_headers.query.action; var 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.service_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": var nameExists = false; var addrExists = false; // dumbass protection for making addresses look proper in the list var address = request_headers.query.address.split("@")[0]; address += `@${minisrv_config.config.service_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": var address = request_headers.query.address var 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.service_name}`; var nameExists = false; var addrExists = false; if (address_book.length > 1) { var 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; } }