From 2e0dd141008ab3421fde89a99aa8f1dc6f0b7532 Mon Sep 17 00:00:00 2001
From: echicken <>
Date: Tue, 28 Aug 2012 20:55:01 +0000
Subject: [PATCH] Default pages (home, forum, newuser) for ecWeb v3.

---
 web/root/ecwebv3/pages/000-home.xjs     |  16 +++
 web/root/ecwebv3/pages/002-forum.ssjs   |  24 ++++
 web/root/ecwebv3/pages/999-newUser.ssjs | 175 ++++++++++++++++++++++++
 3 files changed, 215 insertions(+)
 create mode 100644 web/root/ecwebv3/pages/000-home.xjs
 create mode 100644 web/root/ecwebv3/pages/002-forum.ssjs
 create mode 100644 web/root/ecwebv3/pages/999-newUser.ssjs

diff --git a/web/root/ecwebv3/pages/000-home.xjs b/web/root/ecwebv3/pages/000-home.xjs
new file mode 100644
index 0000000000..2436f990c8
--- /dev/null
+++ b/web/root/ecwebv3/pages/000-home.xjs
@@ -0,0 +1,16 @@
+<?xjs load('webInit.ssjs'); ?>
+<!--Home-->
+<html>
+<head>
+<link rel="stylesheet" type="text/css" href="../style/style.css" />
+</head>
+<body class="background font">
+<span class="title">Telnet</span>
+<iframe class="background" frameborder=0 width="730px" height="420px" id="ftelnetIframe" scrolling="no" src="../ftelnet/ftelnet.xjs" onload="loadIFrame('ftelnetIframe', 1)">
+</iframe>
+<br /><br />
+<span class="title">IRC Chat</span>
+<iframe class="background" frameborder=0 width="730px" height="430px" id="lightIRCIframe" scrolling="no" src="../lightirc/lightirc.xjs" onload="loadIFrame('lightIRCIframe', 1)">
+</iframe>
+</body>
+</html>
\ No newline at end of file
diff --git a/web/root/ecwebv3/pages/002-forum.ssjs b/web/root/ecwebv3/pages/002-forum.ssjs
new file mode 100644
index 0000000000..aaaefac244
--- /dev/null
+++ b/web/root/ecwebv3/pages/002-forum.ssjs
@@ -0,0 +1,24 @@
+//Forum
+// Web-forum page for ecWeb v3
+// echicken -at- bbs.electronicchicken.com
+
+load('webInit.ssjs');
+load("../web/lib/forum.ssjs");
+
+print("<span class='title'>Forum</span><br /><br />");
+
+printBoards();
+
+if(http_request.query.hasOwnProperty('board')) {
+	print("<script type='text/javascript'>");
+	print("toggleVisibility('group-" + http_request.query.board + "');");
+	print("</script>");
+}
+
+if(http_request.query.hasOwnProperty('sub')) {
+	print("<script type='text/javascript'>");
+	print("loadThreads('http://" + webIni.HostName + ":" + webIni.HTTPPort + "/forum-async.ssjs', '" + http_request.query.sub + "', " + ((http_request.query.hasOwnProperty('thread'))?false:true) + ");");
+	if(http_request.query.hasOwnProperty('thread'))
+		print("loadThread('http://" + webIni.HostName + ":" + webIni.HTTPPort + "/forum-async.ssjs', '" + http_request.query.sub + "', '" + http_request.query.thread + "', " + false + ");");
+	print("</script>");
+}
\ No newline at end of file
diff --git a/web/root/ecwebv3/pages/999-newUser.ssjs b/web/root/ecwebv3/pages/999-newUser.ssjs
new file mode 100644
index 0000000000..aaac133c1b
--- /dev/null
+++ b/web/root/ecwebv3/pages/999-newUser.ssjs
@@ -0,0 +1,175 @@
+//HIDDEN
+load('../web/lib/captchaLib.ssjs');
+print("<span class=title>New User Registration</span><br /><br />");
+
+if(user.alias == webIni.WebGuest && http_request.query.hasOwnProperty('newuser')) {
+
+	var failString = '';
+	var newUserObject = {};
+
+	if(system.newuser_questions&UQ_ALIASES) {
+		if(!http_request.query.hasOwnProperty('alias') || http_request.query.alias.toString().length < 1)
+			failString = '- Alias not provided<br />';
+		else if(system.trashcan('name', http_request.query.alias))
+			failString += '- Invalid alias supplied<br />';
+		else if(system.matchuser(http_request.query.alias.toString()))
+			failString += '- Alias already in use<br />';
+		else
+			newUserObject.alias = http_request.query.alias.toString();
+	}
+
+	if(
+		!http_request.query.hasOwnProperty('password1')
+		||
+		!http_request.query.hasOwnProperty('password2')
+		||
+		http_request.query.password1.toString().toUpperCase() != http_request.query.password2.toString().toUpperCase()
+		|| http_request.query.password1.toString().length < 4
+	) {
+		failString += '- Invalid or mismatched passwords supplied<br />';
+	} else {
+		newUserObject.password = http_request.query.password1.toString().toUpperCase();
+	}
+
+	if(system.newuser_questions&UQ_REALNAME) {
+		if(!http_request.query.hasOwnProperty('realName') || http_request.query.realName.toString().length < 1)
+			failString += '- Real name not provided<br />';
+		else if(system.trashcan('name', http_request.query.realName))
+			failString += '- Invalid real name supplied<br />';
+		else if(system.newuser_questions&UQ_DUPREAL && system.matchuser(http_request.query.realName.toString()))
+			failString += '- Real name already in use<br />';
+		else
+			newUserObject.name = http_request.query.realName.toString();
+	}
+
+	if(system.newuser_questions&UQ_HANDLE) {
+		if(!http_request.query.hasOwnProperty('handle') || http_request.query.handle.toString().length < 1)
+			failString += '- Chat handle not provided<br />';
+		else if(system.trashcan('name', http_request.query.handle))
+			failString += '- Invalid chat handle supplied<br />';
+		else if(system.newuser_questions&UQ_DUPHAND && system.matchuser(http_request.query.handle.toString()))
+			failString += '- Chat handle already in use<br />';
+		else
+			newUserObject.handle = http_request.query.handle.toString();
+	}
+
+	if(system.newuser_questions&UQ_LOCATION) {
+		if(!http_request.query.hasOwnProperty('location') || http_request.query.location.toString().length < 1)
+			failString += '- Location not provided<br />';
+		else
+			newUserObject.location = http_request.query.location.toString();
+	}
+
+	if(system.newuser_questions&UQ_ADDRESS) {
+		if(!http_request.query.hasOwnProperty('streetAddress') || http_request.query.streetAddress.toString().length < 6)
+			failString += '- Address not provided<br />';
+		else
+			newUserObject.address = http_request.query.streetAddress.toString();
+	}
+
+	if(system.newuser_questions&UQ_PHONE) {
+		if(!http_request.query.hasOwnProperty('phone') || http_request.query.phone.length < 1)
+			failString += '- Phone number not provided<br />';
+		else if(system.trashcan('phone', http_request.query.phone))
+			failString += '- Invalid phone number suplied<br />';
+		else
+			newUserObject.phone = http_request.query.phone.toString();
+	}
+
+	if(system.newuser_questions&UQ_SEX) {
+		if(!http_request.query.hasOwnProperty('sex') || (http_request.query.sex.toString() != 'm' && http_request.query.sex.toString() != 'f'))
+			failString += '- Sex not provided (lol)<br />';
+		else
+			newUserObject.gender = http_request.query.sex.toString().toUpperCase();
+	}
+
+	if(system.newuser_questions&UQ_BIRTH) {
+		if(!http_request.query.hasOwnProperty('birthDate') || http_request.query.birthDate.toString().match(/\d\d-\d\d-\d\d/) == null)
+			failString += '- Birth date not provided<br />';
+		else
+			newUserObject.birthdate = http_request.query.birthDate.toString();
+	}
+
+	if(system.newuser_questions&UQ_COMPANY) {
+		if(!http_request.query.hasOwnProperty('company') || http_request.query.company.length < 1)
+			failString += '- Company name not provided<br />';
+		// Not sure if this value is actually used
+	}
+
+	if(system.newuser_questions&UQ_NONETMAIL == 0) {
+		if(!http_request.query.hasOwnProperty('netmail') || !http_request.query.netmail.toString().match(/\w+\@\w+/))
+			failString += '- Invalid email/netmail address provided<br />';
+		else
+			newUserObject.netmail = http_request.query.netmail.toString();
+	}
+
+	if(!http_request.query.hasOwnProperty('letters1') || !http_request.query.hasOwnProperty('letters2'))
+		failString += '- CAPTCHA missing<br />';
+	else if(md5_calc(http_request.query.letters1.toString().toUpperCase(), hex=true) != http_request.query.letters2.toString())
+		failString += '- CAPTCHA mismatch<br />';
+
+	if(
+		system.newuser_password != ""
+		&&
+		(
+			!http_request.query.hasOwnProperty('nup')
+			||
+			http_request.query.nup.toString().toUpperCase() != system.newuser_password.toUpperCase()
+		)
+	) {
+		failString += '- Incorrect or no newuser password supplied<br />';
+	}
+
+	if(failString.length > 0) {
+		print("Your registration failed for the following reasons:<br /><br />" + failString);
+	} else {
+		var makeNewUser = system.new_user(newUserObject.alias);
+		for(property in newUserObject) {
+			if(property == 'alias')
+				continue;
+			if(property == 'password') {
+				makeNewUser.security.password = newUserObject.password;
+				continue;
+			}
+			makeNewUser[property] = newUserObject[property];
+		}
+		print("User account created.");
+	}
+
+} else if(user.alias == webIni.WebGuest) {
+
+	print("<form name='newUser' id='newUser' action='./index.xjs?page=999-newUser.ssjs' method='post' onsubmit='return validateNewUserForm()'>");
+	print("<input class='border font' type='hidden' name='newuser' value='true' />");
+	if(system.newuser_questions&UQ_ALIASES)
+		print("Alias:<br /><input class='border font' type='text' size='30' name='alias' id='alias' /> <span id='aliasError'></span><br /><br />");
+	print("Password:<br /><input class='border font' type='password' size='30' name='password1' id='password1' /> <span id='password1Error'></span><br /><br />");
+	print("Password again:<br /><input class='border font' type='password' size='30' name='password2' id='password2' /> <span id='password2Error'></span><br /><br />");
+	if(system.newuser_questions&UQ_REALNAME)
+		print("Real Name:<br /><input class='border font' type='text' size='30' name='realName' id='realName' /> <span id='realNameError'></span><br /><br />");
+	if(system.newuser_questions&UQ_HANDLE)
+		print("Chat Handle:<br /><input class='border font' type='text' size='30' name='handle' id='handle' /> <span id='handleError'></span><br /><br />");
+	if(system.newuser_questions&UQ_LOCATION)
+		print("Location:<br /><input class='border font' type='text' size='30' name='location' id='location' /> <span id='locationError'></span><br /><br />");
+	if(system.newuser_questions&UQ_ADDRESS)
+		print("Street Address:<br /><input class='border font' type='text' size='30' name='streetAddress' id='streetAddress' /> <span id='streetAddressError'></span><br /><br />");
+	if(system.newuser_questions&UQ_PHONE)
+		print("Phone Number:<br /><input class='border font' type='text' size='30' name='phone' id='phone' /> <span id='phoneError'></span><br /><br />");
+	if(system.newuser_questions&UQ_SEX)
+		print("Sex: <input class='border font' type='radio' name='sex' id='sex' value='m' />M <input class='border font' type='radio' name='sex' id='sex' value='f' />F <span id='sexError'></span><br /><br />"); // lol
+	if(system.newuser_questions&UQ_BIRTH)
+		print("Birthdate DD-MM-YY:<br /><input class='border font' type='text' size='8' name='birthDate' id='birthDate' /> <span id='birthDateError'></span><br /><br />");
+	if(system.newuser_questions&UQ_COMPANY)
+		print("Company:<br /><input class='border font' type='text' size='30' name='company' id='company' /> <span id='companyError'></span><br /><br />");
+	if(system.newuser_questions&UQ_NONETMAIL == 0)
+		print("Email/Netmail:<br /><input class='border font' type='text' size='30' name='netmail' id='netmail' /> <span id='netmailError'></span><br /><br />");
+	insertCaptcha(); // Draws a CAPTCHA, inserts the hidden input 'letters2' (md5 sum of the CAPTCHA string) and text input 'letters1'
+	if(system.newuser_password != "")
+		print("Please supply the new user password below.<br /><input class='border font' type='password' size='25' name='nup'><br /><br />");
+	print("<input class='border font' type='submit' value='Submit' />");
+	print("</form>");
+
+} else {
+
+	print("You're already logged in with a valid user account.  At least try logging out first.");
+
+}
\ No newline at end of file
-- 
GitLab