summaryrefslogtreecommitdiff
path: root/includes/external/addressbook/email.js
diff options
context:
space:
mode:
authorRaindropsSys <contact@minteck.org>2023-04-06 22:18:28 +0200
committerRaindropsSys <contact@minteck.org>2023-04-06 22:18:28 +0200
commit83354b2b88218090988dd6e526b0a2505b57e0f1 (patch)
treee3c73c38a122a78bb7e66fbb99056407edd9d4b9 /includes/external/addressbook/email.js
parent47b8f2299a483024c4a6a8876af825a010954caa (diff)
downloadpluralconnect-83354b2b88218090988dd6e526b0a2505b57e0f1.tar.gz
pluralconnect-83354b2b88218090988dd6e526b0a2505b57e0f1.tar.bz2
pluralconnect-83354b2b88218090988dd6e526b0a2505b57e0f1.zip
Updated 5 files and added 1110 files (automated)
Diffstat (limited to 'includes/external/addressbook/email.js')
-rw-r--r--includes/external/addressbook/email.js175
1 files changed, 175 insertions, 0 deletions
diff --git a/includes/external/addressbook/email.js b/includes/external/addressbook/email.js
new file mode 100644
index 0000000..81abec3
--- /dev/null
+++ b/includes/external/addressbook/email.js
@@ -0,0 +1,175 @@
+const axios = require('axios');
+const protonMail = "web-mail@5.0.20.3";
+const app = require('../../app.json');
+const net = require('net');
+
+function sleep(ms) {
+ return new Promise((res) => {
+ setTimeout(res, ms);
+ });
+}
+
+function checkGmail(user, type) {
+ return new Promise((res) => {
+ const client = net.createConnection(25, "gmail-smtp-in.l.google.com");
+ let current = 0;
+
+ client.on('data', (data) => {
+ let message = data.toString().trim();
+
+ if (message.startsWith("220 ")) {
+ client.write("helo equestria.dev\n");
+ } else if (message.startsWith("250 ") && current === 0) {
+ current++;
+ client.write("mail from: <invalid@invalid.equestria.dev>\n");
+ } else if (message.startsWith("250 ") && current === 1) {
+ current++;
+ client.write(`rcpt to: <${user}>\n`);
+ } else if (message.startsWith("250 ") && current === 2) {
+ client.write("quit\n");
+ res("gmail");
+ } else if (message.startsWith("550-") && current === 2) {
+ client.write("quit\n");
+ res(type);
+ }
+ });
+
+ client.on('end', () => {
+ res(type);
+ });
+ });
+}
+
+(async () => {
+ let user = process.argv[2];
+ let type = "generic";
+
+ try {
+ let data = (await axios.get(`https://mail.proton.me/api/core/v4/keys?Email=${encodeURIComponent(user)}`, {
+ headers: {
+ Cookie: app.proton.cookie,
+ 'X-Pm-Appversion': protonMail,
+ 'X-Pm-Uid': app.proton.id
+ }
+ })).data;
+
+ if (data['RecipientType'] < 2) type = "proton";
+ } catch (e) {}
+
+ if (type === "generic") {
+ try {
+ type = await checkGmail(user, type);
+ } catch (e) {}
+ }
+
+ if (type === "generic") {
+ let domain = user.split("@")[1].trim();
+
+ if (domain === "outlook.dk"
+ || domain === "skype.dk"
+ || domain === "live.dk"
+ || domain === "hotmail.dk"
+ || domain === "outlook.dk"
+ || domain === "skype.se"
+ || domain === "live.se"
+ || domain === "hotmail.se"
+ || domain === "outlook.se"
+ || domain === "outlook.fr"
+ || domain === "skype.fr"
+ || domain === "live.fr"
+ || domain === "hotmail.fr"
+ || domain === "outlook.it"
+ || domain === "skype.it"
+ || domain === "live.it"
+ || domain === "hotmail.it"
+ || domain === "outlook.de"
+ || domain === "skype.de"
+ || domain === "live.de"
+ || domain === "hotmail.de"
+ || domain === "outlook.com.au"
+ || domain === "hotmail.com"
+ || domain === "hotmail.co.uk"
+ || domain === "hotmail.eu"
+ || domain === "hotmail.co"
+ || domain === "hotmail.net"
+ || domain === "hotmail.org"
+ || domain === "live.com"
+ || domain === "live.co.uk"
+ || domain === "line.net"
+ || domain === "line.co"
+ || domain === "line.org"
+ || domain === "line.eu"
+ || domain === "skype.com"
+ || domain === "skype.co.uk"
+ || domain === "skype.net"
+ || domain === "skype.co"
+ || domain === "skype.org"
+ || domain === "skype.eu"
+ || domain === "outlook.com"
+ || domain === "outlook.org"
+ || domain === "outlook.co"
+ || domain === "outlook.eu") {
+ type = "outlook";
+ }
+ }
+
+ if (type === "generic") {
+ let domain = user.split("@")[1].trim();
+
+ if (domain === "yahoo.com"
+ || domain === "yahoo.fr"
+ || domain === "yahoo.co.uk") {
+ type = "yahoo";
+ }
+ }
+
+ let parts = user.split("@").map(i => i.trim());
+ let icon = "https://img.icons8.com/fluency-systems-regular/64/ffffff/email.png";
+ let title = "Email";
+
+ if (type === "gmail") {
+ icon = "https://upload.wikimedia.org/wikipedia/commons/7/7e/Gmail_icon_%282020%29.svg";
+ title = "Gmail";
+ }
+
+ if (type === "outlook") {
+ icon = "https://upload.wikimedia.org/wikipedia/commons/d/df/Microsoft_Office_Outlook_%282018%E2%80%93present%29.svg";
+ title = "Outlook";
+ }
+
+ if (type === "yahoo") {
+ icon = "https://upload.wikimedia.org/wikipedia/commons/e/e0/Yahoo%21_Mail_icon_%282013-2019%29.png";
+ title = "Yahoo";
+ }
+
+ if (type === "proton") {
+ icon = "https://proton.me/static/fc5b1e8b92dd09734ca7c9d91e89db93/proton-mail-badge.svg";
+ title = "Proton Mail";
+ }
+
+ console.log(JSON.stringify({
+ error: null,
+ avatar: icon,
+ name: title,
+ description: user,
+ link: "mailto:" + user,
+ copy: [
+ {
+ title: "Copy email address",
+ text: user
+ },
+ {
+ title: "Copy email domain",
+ text: parts[1]
+ },
+ {
+ title: "Copy email user name",
+ text: parts[0]
+ },
+ {
+ title: "Copy mailto: link",
+ text: `mailto:${user}`
+ }
+ ]
+ }, null, 2));
+})(); \ No newline at end of file