var minisrv_service_file = true; var mailstore_exists = false; function mail_end_error(msg) { var errpage = doErrorPage("400", msg); headers = errpage[0]; data = errpage[1]; } var intro_seen = ssid_sessions[socket.ssid].mailstore.checkMailIntroSeen(); if (!intro_seen && !request_headers.query.intro_seen) { // user is trying to bypass the intro screen headers = "300 OK\nLocation: wtv-mail:/DiplomaMail"; } else { if (!intro_seen && request_headers.query.intro_seen) { // User has come from intro ssid_sessions[socket.ssid].mailstore.setMailIntroSeen(true); } // check if mailstore exists (returns null if guest) mailstore_exists = ssid_sessions[socket.ssid].mailstore.mailstoreExists(); // create mailstore if it doesnt exist (also returns null if guest) if (!mailstore_exists) mailstore_exists = ssid_sessions[socket.ssid].mailstore.createMailstore(); if (mailstore_exists) { // mailstore exists and user is not guest var default_limit = (minisrv_config.services[service_name].messages_per_page) ? minisrv_config.services[service_name].messages_per_page : 25; // user config or 25 var mailbox = (request_headers.query.mailbox) ? parseInt(request_headers.query.mailbox) : 0; var limit = (request_headers.query.limit) ? parseInt(request_headers.query.limit) : default_limit; var reverse_sort = (request_headers.query.reverse_sort) ? true : false; var page = (request_headers.query.page) ? parseInt(request_headers.query.page) : 0; // get mailbox name var mailbox_name = ssid_sessions[socket.ssid].mailstore.getMailboxById(parseInt(mailbox)); // if false or null, then mailbox is invalid if (!mailbox_name) { mail_end_error("Invalid Mailbox ID"); } else { // mailboxid is ok if (!ssid_sessions[socket.ssid].mailstore.mailboxExists(mailbox)) { // mailbox does not yet exist, create it var mailbox_exists = ssid_sessions[socket.ssid].mailstore.createMailbox(mailbox); if (!mailbox_exists) { // failed to create mailbox for some reason mail_end_error(); } else { if (mailbox === 0) { // Just created Inbox for the first time, so create the welcome message ssid_sessions[socket.ssid].mailstore.createWelcomeMessage(); } } } var message_list = ssid_sessions[socket.ssid].mailstore.listMessages(mailbox, limit, reverse_sort, (page * limit)) var total_message_count = ssid_sessions[socket.ssid].mailstore.countMessages(mailbox); var total_unread_message_count = ssid_sessions[socket.ssid].mailstore.countUnreadMessages(mailbox); var message_list_string = null; if (total_message_count == 0) { message_list_string = "No new mail messages for "; } else { if (total_unread_message_count > 0) { message_list_string = total_unread_message_count + " new mail message" + ((total_message_count != 1) ? 's' : '') + ", " + total_message_count + " mail message" + ((total_message_count != 1) ? 's' : '') + " for "; } else { message_list_string = total_message_count + " mail message" + ((total_message_count != 1) ? 's' : '') + " for "; } } var username = ssid_sessions[socket.ssid].getSessionData("subscriber_username"); var notImplementedAlert = new clientShowAlert({ 'image': minisrv_config.config.service_logo, 'message': "This feature is not available.", 'buttonlabel1': "Okay", 'buttonaction1': "client:donothing", 'noback': true, }).getURL(); headers = `200 OK Content-type: text/html`; data = ` ${(mailbox_name === "Inbox") ? ' Mail list for ' + username : mailbox_name}
Write
Storage
Addresses
Clean up

 


Quick Tip:
indicates messages from known senders
`; var icon_image = null; switch (mailbox_name) { case "Inbox": icon_image = ssid_sessions[socket.ssid].mailstore.getMailboxIcon(); break; case "Sent": icon_image = "MailboxSent.gif"; break; case "Trash": icon_image = "MailboxDiscard.gif"; break; default: icon_image = "MailboxStorage.gif"; break; } data += `
${(mailbox_name === "Inbox") ? ' Mail list for ' + username : mailbox_name}
Settings

`; if (message_list) { data += ` ${message_list_string}
${username}@${minisrv_config.config.service_name}


From Subject Date

`; Object.keys(message_list).forEach(function (k) { var message = message_list[k]; var message_font_open = ""; var message_font_close = ""; console.log(message); if (message.unread) { message_font_open = ``; message_font_close = "" } data += `
${(message.known_sender) ? '' : ''} ${message_font_open} ${(message.from_name) ? message.from_name : message.from_addr} ${message_font_close} ${message_font_open} ${(message.subject) ? message.subject : "(No Subject)"} ${message_font_close} ${message_font_open} `; var message_date = new Date(message.date * 1000); data += (message_date.getMonth() + 1) + "/" + message_date.getDate() + "\n"; data += ` ${message_font_close}
`; }); } else { data += ` No ${(mailbox_name == "Inbox") ? `new e-mail messages for
${username}@${minisrv_config.config.service_name}
` : 'e-mail messages in mailbox ' + mailbox_name}

`; } data += `
`; } } else { mail_end_error("Access Denied"); } }