From 559210b87a3892d1d7087a6f0bfe9491a7a94e42 Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Fri, 12 Aug 2016 22:15:02 +0000
Subject: [PATCH] Added new function fidoaddr_to_emailaddr() which takes a
 message's From name (e.g. "Rob Swindell") and fidonet source address (e.g.
 "1:103/705") and converts it to an Internet email compatible address format
 (e.g. "Rob.Swindell@f705.n103.z1.fidonet") - for use with the listserver.js

---
 exec/load/mailutil.js | 30 +++++++++++++++++++++++++++++-
 1 file changed, 29 insertions(+), 1 deletion(-)

diff --git a/exec/load/mailutil.js b/exec/load/mailutil.js
index 70b3988b67..ccc7873dd8 100644
--- a/exec/load/mailutil.js
+++ b/exec/load/mailutil.js
@@ -27,4 +27,32 @@ function mail_get_address(strIn) {
 	if (strIn.match(reEmail1)) return strIn.replace(reEmail1,"$1");
 	if (strIn.match(reEmail2)) return strIn.replace(reEmail2,"$1");
 	return null;
-}
\ No newline at end of file
+}
+
+function fidoaddr_to_emailaddr(name, addr, tld)
+{
+	var ftn;
+
+	// Change "Joe Ray Schmoe" to "Joe.Ray.Schmoe"
+	name = name.replace(/\ /g, '.');
+
+	// If no top-level-domain specified, use "fidonet" by default
+	if(!tld) tld = "fidonet";
+
+	// FTN domain specified?
+	ftn = addr.match(/@([\w]+)$/);
+	if(ftn)
+		tld = ftn[1];
+
+	// Look for 4D addr
+	ftn = addr.match(/^([0-9]+)\:([0-9]+)\/([0-9]+)\.([0-9]+)/);
+	if(ftn)
+		return format("%s@p%u.f%u.n%u.z%u.%s", name, ftn[4], ftn[3], ftn[2], ftn[1], tld);
+
+	// Look for 3D addr
+	ftn = addr.match(/^([0-9]+)\:([0-9]+)\/([0-9]+)/);
+	if(ftn)
+		return format("%s@f%u.n%u.z%u.%s", name, ftn[3], ftn[2], ftn[1], tld);
+
+	return addr;
+}
-- 
GitLab