[SUCS Devel] [Git][sucssite/sucs-site][sucs-site] 10 commits: Improve the regex and validation

Imran Hussain imranh at sucs.org
Tue Oct 20 18:52:34 BST 2015


Imran Hussain pushed to branch sucs-site at sucssite / sucs-site


Commits:
c508252e by gigosaurus at 2015-10-13T11:45:04Z
Improve the regex and validation

- - - - -
f77eef1c by gigosaurus at 2015-10-13T13:07:03Z
Merge branch 'master' of projects.sucs.org:/sucssite/sucs-site

- - - - -
9819ed53 by gigosaurus at 2015-10-13T19:01:10Z
postcodes can now be dumb

- - - - -
a87d2d76 by Peter Jenkins at 2015-10-13T20:26:12Z
Made the setup script more obvious

- - - - -
f28a63a1 by gigosaurus at 2015-10-13T20:52:33Z
removing my fuck up

- - - - -
b4a9420c by Imran Hussain at 2015-10-14T08:49:31Z
Merge branch 'master' into 'master'

Reduced user error

Postcodes can now be lowercase and lack a space.
Phone numbers must be at least 10 characters long (increased from 1, shouldn't cause any issues?).
Any email containing "@sucs." is not allowed for signup.
signup.js has been reformatted.

See merge request !33

- - - - -
8721f21b by Imran Hussain at 2015-10-17T13:14:55Z
Remove some old stuff from the repo

- - - - -
c1be0332 by Imran Hussain at 2015-10-20T16:33:16Z
Add the SUCS Site apache config to the vcs.

For people who want to setup the sucssite on another machine.

- - - - -
bc305a95 by Imran Hussain at 2015-10-20T16:38:17Z
Merge branch 'master' into 'beta'

Push Signup validation changes to beta

They seem to work on my local copy.

Time for public testing.

See merge request !34

- - - - -
594f64de by Imran Hussain at 2015-10-20T18:52:29Z
Merge branch 'beta' into 'sucs-site'

Push changes from beta to live

Beta didn't blow up and changes work

See merge request !35

- - - - -


9 changed files:

- − ChangeLog
- components/signupajax.php
- − db_changes/sucssite-0.3.sql
- htdocs/js/signup.js
- lib/sanitization.php
- lib/validation.php
- lib/validationData.php
- setup.sh
- + sucssite-apache-vhost.conf


Changes:

=====================================
ChangeLog deleted
=====================================
--- a/ChangeLog
+++ /dev/null
@@ -1,33 +0,0 @@
-2008-01-29 - Version 0.3 "Logged Out"
-
-Sessions now last a lot longer and are more secure to boot (chckens)
-Library admin component allows adding books (chckens, eventually)
-Bananas component shelved in favour of Members component for most things (chckens)
-
-Fixes:
-Don't list societies with no website in the societies website list (chckens)
-Pastebin now redirects to url of pasted item to prevent confusion (chckens)
-News article summary can now deal with new lines in the first paragraph (chckens)
-
-
-2007-10-28 - Version 0.2 "Oktoberfest"
-
-Options component now allows users to change their hackergotchi (aeternus)
-Pastebin now lets you view a plaintext version of pastes (aeternus)
-Simple password security checks added to hopefully prevent weak passwords (chckens)
-Members page now displays this academic year's banana leaderboard (chckens)
-
-2007-09-25 - Version 0.1 "Ferocious Freshers"
-First actual version with a number, below are some recent changes:
-
-New member options component!
-- MAC registration, contact details editing (aeternus)
-- Password changing (chckens)
-- Groups display, hackergotchi display (dez)
-
-Beginnings of generic error handling support (chckens)
-
-Fixes:
-Improved usability of ShortURI interface (patch from davea)
-Layout tweaks to defend against long titles (dez)
-Fix calculation for banana summaries on Member pages (chckens)


=====================================
components/signupajax.php
=====================================
--- a/components/signupajax.php
+++ b/components/signupajax.php
@@ -14,7 +14,10 @@ if (isset($_GET['key'])) {
             }
             break;
         case "postcode":
-            echo lookup_postcode($_GET['value']);
+            $postcode = validPostcode($_GET['value']);
+            if ($postcode != false) {
+                lookup_postcode($postcode);
+            }
             break;
         case "username":
             $username = $_GET['value'];


=====================================
db_changes/sucssite-0.3.sql deleted
=====================================
--- a/db_changes/sucssite-0.3.sql
+++ /dev/null
@@ -1,5 +0,0 @@
-DELETE FROM session;
-ALTER TABLE session DROP COLUMN time;
-ALTER TABLE session ADD COLUMN logintime timestamp(0) without time zone;
-ALTER TABLE session ADD COLUMN lastseen timestamp(0) without time zone;
-DELETE FROM menu WHERE title='Bananas';


=====================================
htdocs/js/signup.js
=====================================
--- a/htdocs/js/signup.js
+++ b/htdocs/js/signup.js
@@ -1,275 +1,283 @@
-var validation = {"studentid":false, "username":false, "realname":false, "address":false, "contact":false, "email":false, "phone":false};
+var validation = {
+    "studentid": false,
+    "username": false,
+    "realname": false,
+    "address": false,
+    "contact": false,
+    "email": false,
+    "phone": false
+};
 var submitted = false;
-function validate(){
-	var valid = true;
-	for (field in req){
-		if (!validation[req[field]]){
-			valid=false;
-			break;
-		}
-	}
-	if((valid || ($('input#override:checked').size()==1)) && !submitted && ($('input#tnc:checked').size()==1)){
-		$('input#submit').removeAttr("disabled");
-		return true;
-	}
-	else{
-		$('input#submit').attr("disabled","disabled");
-		return false;
-	}
-	
+function validate() {
+    var valid = true;
+    for (field in req) {
+        if (!validation[req[field]]) {
+            valid = false;
+            break;
+        }
+    }
+    if ((valid || ($('input#override:checked').size() == 1)) && !submitted && ($('input#tnc:checked').size() == 1)) {
+        $('input#submit').removeAttr("disabled");
+        return true;
+    }
+    else {
+        $('input#submit').attr("disabled", "disabled");
+        return false;
+    }
+
 
 }
-function processPostcode(){
-		// lookup postcode
-                $.getJSON("signup/ajax",{key: "postcode",value: $('input#postcode').val()}, function(j){
-			//populate dropdown	
-                        var options = '';
-                        if (j.addresses.length > 1) {
-				// make dropdown visible
-                                $('div#addseldiv').removeAttr("style");
-                                for (var i = 0; i < (j.addresses.length); i++) {
-                                        options += '<option>';
-                                        if (j.addresses[i].flat != null) {
-                                        	options += j.addresses[i].flat + "\n";
-                                        }
-                                        if (j.addresses[i].house != null) {
-                                        	options += j.addresses[i].house + "\n";
-                                        }
-                                        if (j.addresses[i].road != null) {
-                                        	options += j.addresses[i].road + "\n";
-                                        }
-                                        if (j.addresses[i].city != null) {
-                                        	options += j.addresses[i].city + "\n";
-                                        }
-                                        options += '</option>';
-                                }
-                                $("select#addsel").html(options);
-                                $('select#addsel option:first').attr('selected', 'selected');
-                        }
-                        if (j.addresses.length == 1) {
-                                $('div#addseldiv').attr("style","display:none");
-                                $("textarea#address")
-				$('div#addressmessage').attr("style","color:green; float:right; clear:right;");
-				$('div#addressmessage').html("OK");
-				validation["address"]=true;
-				validate();
-                        }
-                })
+function processPostcode() {
+    // lookup postcode
+    $.getJSON("signup/ajax", {key: "postcode", value: $('input#postcode').val()}, function (j) {
+        //populate dropdown
+        var options = '';
+        if (j.addresses.length > 1) {
+            // make dropdown visible
+            $('div#addseldiv').removeAttr("style");
+            for (var i = 0; i < (j.addresses.length); i++) {
+                options += '<option>';
+                if (j.addresses[i].flat != null) {
+                    options += j.addresses[i].flat + "\n";
+                }
+                if (j.addresses[i].house != null) {
+                    options += j.addresses[i].house + "\n";
+                }
+                if (j.addresses[i].road != null) {
+                    options += j.addresses[i].road + "\n";
+                }
+                if (j.addresses[i].city != null) {
+                    options += j.addresses[i].city + "\n";
+                }
+                options += '</option>';
+            }
+            $("select#addsel").html(options);
+            $('select#addsel option:first').attr('selected', 'selected');
+        }
+        if (j.addresses.length == 1) {
+            $('div#addseldiv').attr("style", "display:none");
+            $("textarea#address")
+            $('div#addressmessage').attr("style", "color:green; float:right; clear:right;");
+            $('div#addressmessage').html("OK");
+            validation["address"] = true;
+            validate();
+        }
+    })
 }
 
-function lookupSID(setname){
-        $.get("/signup/ajax",{key:"sid" ,value: $('input#studentid').val()},function(j){
-                arr=j.split(":");
-                key=arr.shift();
-                val=arr.join(":");
-                if(key=="OK"){
-			if(setname=true)
-				$("input#realname").val(val);
-                        $('div#studentidmessage').attr("style","color:green; float:right; clear:right;");
-			$('div#studentidmessage').html(key);
-			validation['studentid']=true;
-			processName("realname","realname");
+function lookupSID(setname) {
+    $.get("/signup/ajax", {key: "sid", value: $('input#studentid').val()}, function (j) {
+        arr = j.split(":");
+        key = arr.shift();
+        val = arr.join(":");
+        if (key == "OK") {
+            if (setname = true)
+                $("input#realname").val(val);
+            $('div#studentidmessage').attr("style", "color:green; float:right; clear:right;");
+            $('div#studentidmessage').html(key);
+            validation['studentid'] = true;
+            processName("realname", "realname");
 
-                }
-                else{
-                        $('div#studentidmessage').attr("style","color:red; float:right; clear:right;");
-			$('div#studentidmessage').html(val);
-			validation['email']=false;
-			validate();
-                }
-        },'text')
+        }
+        else {
+            $('div#studentidmessage').attr("style", "color:red; float:right; clear:right;");
+            $('div#studentidmessage').html(val);
+            validation['email'] = false;
+            validate();
+        }
+    }, 'text')
 }
-function processSID(){
-	lookupSID(true);
+function processSID() {
+    lookupSID(true);
 }
 
-function processUsername(){
-        $.get("/signup/ajax",{key: "username", value: $('input#username').val()},function(j){
-                if (j!="OK") {
-                        $('div#usernamemessage').attr("style","color:red; float:right; clear:right;");
-			validation['username']=false;
-                }
-                else{   
-                        $('div#usernamemessage').attr("style","color:green; float:right; clear:right;");
-			validation['username']=true;
-                }
-		$('div#usernamemessage').html(j);
-		validate();
-        },'text')
+function processUsername() {
+    $.get("/signup/ajax", {key: "username", value: $('input#username').val()}, function (j) {
+        if (j != "OK") {
+            $('div#usernamemessage').attr("style", "color:red; float:right; clear:right;");
+            validation['username'] = false;
+        }
+        else {
+            $('div#usernamemessage').attr("style", "color:green; float:right; clear:right;");
+            validation['username'] = true;
+        }
+        $('div#usernamemessage').html(j);
+        validate();
+    }, 'text')
 }
 
-function processName(type, input){
-        $.get("/signup/ajax",{key: type, value: $('input#'+input).val()},function(j){
-                if (j!="OK") {
-                        $('div#'+input+'message').attr("style","color:red; float:right; clear:right;");
-			validation[input]=false;
-                }
-                else{   
-                        $('div#'+input+'message').attr("style","color:green; float:right; clear:right;");
-			validation[input]=true;
-                }
-		$('div#'+input+'message').html(j);
-		validate();
-        },'text')
+function processName(type, input) {
+    $.get("/signup/ajax", {key: type, value: $('input#' + input).val()}, function (j) {
+        if (j != "OK") {
+            $('div#' + input + 'message').attr("style", "color:red; float:right; clear:right;");
+            validation[input] = false;
+        }
+        else {
+            $('div#' + input + 'message').attr("style", "color:green; float:right; clear:right;");
+            validation[input] = true;
+        }
+        $('div#' + input + 'message').html(j);
+        validate();
+    }, 'text')
 }
-function processContact(){
-	processName('realname','contact');
+function processContact() {
+    processName('realname', 'contact');
 }
 
-function processAddress(){
-        $.get("/signup/ajax",{key: "address", value: $('textarea#address').val()},function(j){
-                if (j!="OK") {
-                        $('div#addressmessage').attr("style","color:red; float:right; clear:right;");
-                        validation['address']=false;
-                }   
-                else{   
-                        $('div#addressmessage').attr("style","color:green; float:right; clear:right;");
-                        validation['address']=true;
-                }
-		$('div#addressmessage').html(j);
-		validate();
-        },'text')
+function processAddress() {
+    $.get("/signup/ajax", {key: "address", value: $('textarea#address').val()}, function (j) {
+        if (j != "OK") {
+            $('div#addressmessage').attr("style", "color:red; float:right; clear:right;");
+            validation['address'] = false;
+        }
+        else {
+            $('div#addressmessage').attr("style", "color:green; float:right; clear:right;");
+            validation['address'] = true;
+        }
+        $('div#addressmessage').html(j);
+        validate();
+    }, 'text')
 }
 
-function processEmail(){
-        $.get("/signup/ajax",{key: "email", value: $('input#email').val()},function(j){
-                if (j!="OK") {
-                        $('div#emailmessage').attr("style","color:red; float:right; clear:right;");
-			validation['email']=false;
-                }
-                else{   
-                        $('div#emailmessage').attr("style","color:green; float:right; clear:right;");
-			validation['email']=true;
-                }
-		$('div#emailmessage').html(j);
-		validate();
-        },'text')
+function processEmail() {
+    $.get("/signup/ajax", {key: "email", value: $('input#email').val()}, function (j) {
+        if (j != "OK") {
+            $('div#emailmessage').attr("style", "color:red; float:right; clear:right;");
+            validation['email'] = false;
+        }
+        else {
+            $('div#emailmessage').attr("style", "color:green; float:right; clear:right;");
+            validation['email'] = true;
+        }
+        $('div#emailmessage').html(j);
+        validate();
+    }, 'text')
 }
 
-function processPhone(){
-        $.get("/signup/ajax",{key: "phone", value: $('input#phone').val()},function(j){
-                if (j!="OK") {
-                        $('div#phonemessage').attr("style","color:red; float:right; clear:right;");
-			validation['phone']=false;
-                }
-                else{   
-                        $('div#phonemessage').attr("style","color:green; float:right; clear:right;");
-			validation['phone']=true;
-                }
-		$('div#phonemessage').html(j);
-		validate();
-        },'text')
+function processPhone() {
+    $.get("/signup/ajax", {key: "phone", value: $('input#phone').val()}, function (j) {
+        if (j != "OK") {
+            $('div#phonemessage').attr("style", "color:red; float:right; clear:right;");
+            validation['phone'] = false;
+        }
+        else {
+            $('div#phonemessage').attr("style", "color:green; float:right; clear:right;");
+            validation['phone'] = true;
+        }
+        $('div#phonemessage').html(j);
+        validate();
+    }, 'text')
 }
 
-$(function(){
-	if($('input#studentid').size()==1){
-		usertype=1;
-	}
-	else if($('input#contact').size()==1){
-		usertype=2;
-	}
-	else{
-		usertype=5;
-	}
-        req=new Array("username","realname","email","phone");
-        switch(usertype){
-                case "1":
-                        req.push("studentid","address");
-                        break;
-                case "2":
-                        req.push("contact");
-                        break;
-                case "5":
-                        req.push("address");
+$(function () {
+    if ($('input#studentid').size() == 1) {
+        usertype = 1;
+    }
+    else if ($('input#contact').size() == 1) {
+        usertype = 2;
+    }
+    else {
+        usertype = 5;
+    }
+    req = new Array("username", "realname", "email", "phone");
+    switch (usertype) {
+        case "1":
+            req.push("studentid", "address");
+            break;
+        case "2":
+            req.push("contact");
+            break;
+        case "5":
+            req.push("address");
+    }
+    //usertype=$('input#usertype').val();
+    $("document").ready(function () {
+        // makes script sutff appear
+        $('div#postcodediv').removeAttr("style");
+        $('input#submit').attr("disabled", "disabled");
+        // if the fields are not empty validate them
+        if ($('input#username').val() != "") processUsername();
+        if ($('input#email').val() != "") processEmail();
+        if ($('input#phone').val() != "") processPhone();
+        if (usertype != 2) {
+            if ($('input#postcode').val() != "") processPostcode();
+            if ($('textarea#address').val() != "") processAddress();
+            if ($('input#realname').val() != "") processName("realname", "realname");
+        }
+        else {
+            if ($('input#contact').val() != "") processContact();
+            if ($('input#realname').val() != "") processName("socname", "realname");
         }
-	//usertype=$('input#usertype').val();
-	$("document").ready(function(){
-		// makes script sutff appear
-		$('div#postcodediv').removeAttr("style");
-		$('input#submit').attr("disabled","disabled");
-		// if the fields are not empty validate them
-		if($('input#username').val()!="") processUsername();
-		if($('input#email').val()!="") processEmail();
-		if($('input#phone').val()!="") processPhone();
-		if(usertype!=2){
-			if($('input#postcode').val()!="") processPostcode();
-			if($('textarea#address').val()!="") processAddress();
-			if($('input#realname').val()!="") processName("realname","realname");
-		}
-		else{
-			if($('input#contact').val()!="") processContact();
-			if($('input#realname').val()!="") processName("socname","realname");
-		}
-		if((usertype==1) && ($('input#studentid').val()!="")){
-			if($('input#realname').val()=="") lookupSID(true);
-			else lookupSID(false);
-		}
+        if ((usertype == 1) && ($('input#studentid').val() != "")) {
+            if ($('input#realname').val() == "") lookupSID(true);
+            else lookupSID(false);
+        }
+
+        validate();
+    })
+    // dont do address stuff for societies
+    if (usertype != 2) {
+        // process postcode when the box changes
+        $("input#postcode").change(processPostcode);
 
-		validate();
-	})
-	// dont do address stuff for societies
-	if(usertype!=2){
-	// process postcode when the box changes
-	$("input#postcode").change(processPostcode);
-	
-	//populate the address box when an address is selected
-	$("select#addsel").change(function(){
-	
-		// everything is shit and will strip out the line breaks
-		// so we have to do weird shit with innerHTML
-	
-		// store the entire options as e
-		var e = document.getElementById("addsel");
-		// store the selected address's innerHTML as strUser (because stackpver flow copy and paste)
-		var strUser = e.options[e.selectedIndex].innerHTML;
-		// set the text area to the strUser var
-		$("textarea#address").text( strUser );
-		$('div#addressmessage').attr("style","color:green; float:right; clear:right;");
-		$('div#addressmessage').html("OK");
-		validation['address']=true;
-	})
-	}
-	//else deal with the contact field
-	else{
+        //populate the address box when an address is selected
+        $("select#addsel").change(function () {
+
+            // everything is shit and will strip out the line breaks
+            // so we have to do weird shit with innerHTML
+
+            // store the entire options as e
+            var e = document.getElementById("addsel");
+            // store the selected address's innerHTML as strUser (because stackpver flow copy and paste)
+            var strUser = e.options[e.selectedIndex].innerHTML;
+            // set the text area to the strUser var
+            $("textarea#address").text(strUser);
+            $('div#addressmessage').attr("style", "color:green; float:right; clear:right;");
+            $('div#addressmessage').html("OK");
+            validation['address'] = true;
+        })
+    }
+    //else deal with the contact field
+    else {
         $("input#contact").change(processContact)
 
-	}
-	//if is a student
-	if(usertype==1){
-	//lookup the real name from the studentid
-	$("input#studentid").change(processSID)
-	}
-	//validate username
-	$("input#username").change(processUsername)
-	//validate personal and society names differntly
-	if(usertype!=2){
-		persoc='realname';
-	}
-	else{
-		persoc='socname';
-	}
-	//validate real name
-	$("input#realname").change(function(){
-		processName(persoc, 'realname');
-	})
-	
-        //validate email address
-        $("input#email").change(processEmail);
-        //validate phone number
-        $("input#phone").change(processPhone);
-	$("textarea#address").change(processAddress);
-	$("input#override").change(validate);
-	$("input#tnc").change(validate);
-	// Disable the submit button once clicked
-	$("form#mainform").submit(function() {
-		var valid = validate();
-		if(valid){
-			// mark form as submitted
-			submitted = true;
-			// disable the submit button
-			$('input#submit').attr("disabled","disabled");
-		}
-		return valid;
-	});
+    }
+    //if is a student
+    if (usertype == 1) {
+        //lookup the real name from the studentid
+        $("input#studentid").change(processSID)
+    }
+    //validate username
+    $("input#username").change(processUsername)
+    //validate personal and society names differntly
+    if (usertype != 2) {
+        persoc = 'realname';
+    }
+    else {
+        persoc = 'socname';
+    }
+    //validate real name
+    $("input#realname").change(function () {
+        processName(persoc, 'realname');
+    })
+
+    //validate email address
+    $("input#email").change(processEmail);
+    //validate phone number
+    $("input#phone").change(processPhone);
+    $("textarea#address").change(processAddress);
+    $("input#override").change(validate);
+    $("input#tnc").change(validate);
+    // Disable the submit button once clicked
+    $("form#mainform").submit(function () {
+        var valid = validate();
+        if (valid) {
+            // mark form as submitted
+            submitted = true;
+            // disable the submit button
+            $('input#submit').attr("disabled", "disabled");
+        }
+        return valid;
+    });
 })
 


=====================================
lib/sanitization.php
=====================================
--- a/lib/sanitization.php
+++ b/lib/sanitization.php
@@ -9,4 +9,12 @@ function sanitizeAddress($address)
     return str_replace(array("\r\n", "\r"), array("\n", "\n"), $address);
 }
 
+function sanitizePostcode($postcode)
+{
+    //force uppercase, remove any possible stupid spaces and add the single space in the correct place
+    $postcode = strtoupper($postcode);
+    $postcode = str_replace(" ", "", $postcode);
+    return substr_replace($postcode, " ", -3, 0);
+}
+
 ?>


=====================================
lib/validation.php
=====================================
--- a/lib/validation.php
+++ b/lib/validation.php
@@ -252,11 +252,22 @@ function validAddress($address)
     }
 }
 
+function validPostcode($postcode)
+{
+    $postcode = sanitizePostcode($postcode);
+    if (!preg_match('/^[A-Z]{1,2}[0-9]{1,2}[A-Z]{0,1} [0-9][A-Z]{2}$/', $postcode)) {
+        return false;
+    } else {
+        return $postcode;
+    }
+
+}
+
 function validPhone($phone)
 {
     global $error;
     $phone = sanitizePhone($phone);
-    if (!preg_match("/^\+?[0-9-]+$/", $phone)) {
+    if (!preg_match("/^\+?[0-9-]{10,}$/", $phone)) {
         $error = "Must be all numbers";
         return false;
     }
@@ -266,7 +277,7 @@ function validPhone($phone)
 function validSignupEmail($email)
 {
     global $error;
-    if (preg_match('/@sucs\.org$/', $email)) {
+    if (preg_match('/@sucs\.$/', $email)) {
         $error = "SUCS email addresses are not allowed";
         return false;
     } elseif (!validEmail($email)) {


=====================================
lib/validationData.php
=====================================
--- a/lib/validationData.php
+++ b/lib/validationData.php
@@ -1,5 +1,5 @@
 <?
-// lookup real names from sid's useing campus ldap
+// lookup real names from sid's using campus ldap
 function lookupSID($sid)
 {
     $ds = ldap_connect("ccs-suld1.swan.ac.uk");
@@ -12,7 +12,7 @@ function lookupSID($sid)
     return ucwords(strtolower($info[0]['givenname'][0] . " " . $info[0]['sn'][0]));
 }
 
-// lookup addresses from postcodes useing the univeritys website
+// lookup addresses from postcodes using the university's website
 function lookup_postcode($postcode)
 {
 
@@ -21,9 +21,8 @@ function lookup_postcode($postcode)
     $url = "http://paf.sucs.org/?apikey=$apikey&postcode=" . rawurlencode($postcode);
 
     $req = curl_init($url);
-    $page = curl_exec($req);
+    curl_exec($req);
     curl_close($req);
-
 }
 
 ?>


=====================================
setup.sh
=====================================
--- a/setup.sh
+++ b/setup.sh
@@ -27,5 +27,4 @@ echo "Done!"
 
 # and you're done!
 echo -e "\nYou should now be able to view your local copy of the SUCS site at http://sucs.org/~$USER/sucssite/"
-echo "Please contact a member of the admin team if you require use of the development database"
-
+echo "Please contact a member of the admin team to gain access to the development database"
\ No newline at end of file


=====================================
sucssite-apache-vhost.conf
=====================================
--- /dev/null
+++ b/sucssite-apache-vhost.conf
@@ -0,0 +1,203 @@
+# The main sucs website
+
+<VirtualHost 137.44.10.1:80>
+	DocumentRoot "/var/www/sucssite/htdocs"
+	ServerAdmin admin at sucs.org
+	ServerName sucs.org
+	ServerAlias www.sucs.org
+	ServerAlias sucs.swan.ac.uk
+	ServerAlias www.sucs.swan.ac.uk
+	ServerAlias compsoc.swan.ac.uk
+	ServerAlias www.compsoc.swan.ac.uk
+
+	Include /etc/apache2/conf.sucs.d/userdir.conf
+
+	ErrorLog /var/log/apache2/sucssite_error.log
+	CustomLog /var/log/apache2/sucssite_access.log combined
+	LogLevel warn
+
+	<Directory "/var/www/sucssite/htdocs">
+		AllowOverride All
+
+		XBitHack On
+
+		Order allow,deny
+		Allow from all
+		
+
+		Options +MultiViews
+		<IfModule mod_rewrite.c>
+			RewriteEngine On
+
+			# Ensure requests are for our preferred domains
+
+			# Disabled by ~imranh 08/04/2015
+			# We want people to do to sucs.org becuase we have a ssl cert for that
+			# Keep stuff thats come in via *.swan.ac.uk in .ac.uk
+			#RewriteCond %{HTTP_HOST} ^www.sucs.swan.ac.uk [NC,OR]
+			#RewriteCond %{HTTP_HOST} ^compsoc.swan.ac.uk [NC,OR]
+			#RewriteCond %{HTTP_HOST} ^www.compsoc.swan.ac.uk [NC]
+			#RewriteRule ^(.*)$ http://sucs.swan.ac.uk/$1 [R=301,L]
+
+			#(web)mail.sucs.org to sucs.org/webmail
+			RewriteCond %{HTTP_HOST} ^mail.sucs.org [NC,OR]
+			RewriteCond %{HTTP_HOST} ^webmail.sucs.org [NC]
+			RewriteRule ^(.*)$ http://sucs.org/webmail/ [R=301,L]
+
+			# Everything else may as well goto sucs.org
+			RewriteCond %{HTTP_HOST} !^sucs.org [NC]
+			#RewriteCond %{HTTP_HOST} !^sucs.swan.ac.uk [NC]
+			RewriteRule ^(.*)$ http://sucs.org/$1 [R=301,L]
+
+			# If its not a file or directory pass it to the website script
+			RewriteCond %{REQUEST_URI} !=/server-status
+			RewriteCond %{REQUEST_FILENAME} !-f
+			RewriteCond %{REQUEST_FILENAME} !-d
+			RewriteCond %{REQUEST_URI} !^/index\.php.*
+			RewriteRule ^(.*)$ index.php/$1 [QSA,L]
+		</IfModule>
+		#RedirectMatch permanent ^/Community/Forum$ https://sucs.org/Community/Forum/
+		RedirectMatch permanent ^/webmail$ https://sucs.org/webmail/
+	</Directory>
+</VirtualHost>
+
+<IfModule mod_ssl.c>
+<VirtualHost 137.44.10.1:443>
+	DocumentRoot "/var/www/sucssite/htdocs"
+	ServerAdmin admin at sucs.org
+	ServerName sucs.org
+	ServerAlias www.sucs.org
+	ServerAlias sucs.swan.ac.uk
+	ServerAlias www.sucs.swan.ac.uk
+	ServerAlias compsoc.swan.ac.uk
+	ServerAlias www.compsoc.swan.ac.uk
+
+	ErrorLog /var/log/apache2/ssl_error.log
+	TransferLog /var/log/apache2/ssl_access.log
+	LogLevel warn
+
+	SSLEngine on
+
+	SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
+	SSLProtocol All -SSLv2 -SSLv3
+	SSLHonorCipherOrder On
+	Header always set Strict-Transport-Security "max-age=604800"
+	Header always set X-Frame-Options SAMEORIGIN
+	Header always set X-Content-Type-Options nosniff
+	SSLCompression off
+
+	SSLCertificateFile /usr/local/sucs-pki/certs/sucs.crt
+	SSLCertificateKeyFile /usr/local/sucs-pki/private/sucs.key
+	SSLCertificateChainFile /usr/local/sucs-pki/certs/globalsign.crt
+
+	<Files ~ "\.(cgi|shtml|phtml|php3?)$">
+	    SSLOptions +StdEnvVars
+	</Files>
+
+	<Directory "/var/www/cgi-bin">
+	    SSLOptions +StdEnvVars
+	</Directory>
+
+	SetEnvIf User-Agent ".*MSIE.*" \
+		 nokeepalive ssl-unclean-shutdown \
+		 downgrade-1.0 force-response-1.0
+
+	CustomLog /var/log/apache2/ssl_request.log \
+		  "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
+
+	ProxyRequests Off
+	<Proxy *>
+		Order allow,deny
+		Allow from all
+	</Proxy>
+	ProxyVia On
+	SSLProxyEngine on
+	ProxyPass /svn https://projects.sucs.org/svn
+	<Location /svn >
+		#DAV svn
+		#SVNParentPath /var/projects/svn
+                #Redirect / https://projects.sucs.org/
+		ProxyPassReverse https://projects.sucs.org/svn
+	</Location>
+
+	Include /etc/apache2/conf.sucs.d/userdir.conf
+
+	<Directory "/var/www/sucssite/htdocs">
+		Options Indexes FollowSymLinks Includes ExecCGI MultiViews
+		AllowOverride All
+
+		XBitHack On
+
+		Order allow,deny
+		Allow from all
+
+		Options +MultiViews
+		<IfModule mod_rewrite.c>
+			RewriteEngine On
+
+			# Ensure requests are for our preferred domains
+			# Disabled by ~imranh 08/04/2015
+			# We want people to do to sucs.org becuase we have a ssl cert for that
+			# Keep stuff thats come in via *.swan.ac.uk in .ac.uk
+			#RewriteCond %{HTTP_HOST} ^www.sucs.swan.ac.uk [NC,OR]
+			#RewriteCond %{HTTP_HOST} ^compsoc.swan.ac.uk [NC,OR]
+			#RewriteCond %{HTTP_HOST} ^www.compsoc.swan.ac.uk [NC]
+			#RewriteRule ^(.*)$ https://sucs.swan.ac.uk/$1 [R=301,L]
+
+			#(web)mail.sucs.org to sucs.org/webmail
+			RewriteCond %{HTTP_HOST} ^mail.sucs.org [NC,OR]
+			RewriteCond %{HTTP_HOST} ^webmail.sucs.org [NC]
+			RewriteRule ^(.*)$ https://sucs.org/webmail/$1 [R=301,L]
+
+			# Everything else may as well goto sucs.org
+			RewriteCond %{HTTP_HOST} !^sucs.org [NC]
+			#RewriteCond %{HTTP_HOST} !^sucs.swan.ac.uk [NC]
+			RewriteRule ^(.*)$ https://sucs.org/$1 [R=301,L]
+
+			# If its not a file or directory pass it to the website script
+			RewriteCond %{REQUEST_URI} !=/server-status
+			RewriteCond %{REQUEST_FILENAME} !-f
+			RewriteCond %{REQUEST_FILENAME} !-d
+			RewriteCond %{REQUEST_URI} !^/index\.php.*
+			RewriteRule ^(.*)$ index.php/$1 [QSA,L]
+		</IfModule>
+
+	</Directory>
+
+	# Disabled, Moved to the gitlab VM ~imranh
+	#Include /etc/apache2/conf.d/projects.conf
+
+	# Redirect to squirrelmail install
+	Alias /squirrelmail /usr/share/squirrelmail
+	Alias /webmail/program/js/tiny_mce/ /usr/share/tinymce/www/
+	Alias /webmail /var/lib/roundcube
+	Alias /roundcube/program/js/tiny_mce/ /usr/share/tinymce/www/
+	Alias /roundcube /var/lib/roundcube
+	
+	# 2015-03-16 Moved the /cam alias to here from /etc/apache2/conf.d/webcam to stop it becoming an alias on all virtual hosts, commented out the file in the other location. ~rjames93
+	Alias /cam /var/cam
+	<Directory "/var/cam">
+		        Order allow,deny
+		        Allow from all
+		        Options Indexes SymLinksIfOwnerMatch
+	</Directory>
+
+	<Location /cam>
+	        AuthType Basic
+	        AuthName "Staff Only Area"
+	        AuthBasicProvider ldap
+	        AuthLDAPURL "ldap://127.0.0.1/dc=sucs,dc=org?uid"
+	        AuthLDAPGroupAttribute memberUid
+	        AuthLDAPGroupAttributeIsDN off
+	        Require ldap-group cn=sucsstaff,ou=Group,dc=sucs,dc=org
+	</Location>
+
+	Alias /stats/collectd-web /var/www/collectd-web
+	<Directory /var/www/collectd-web/cgi-bin>
+		Options Indexes ExecCGI
+                AllowOverride All
+                AddHandler cgi-script .cgi
+	</Directory>
+
+</VirtualHost>
+</IfModule>



View it on GitLab: https://projects.sucs.org/sucssite/sucs-site/compare/5fe75688e9868a911c9a5e0af992293b816a3043...594f64debe93c47f29381c892fe8fec09eccee0c
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sucs.org/pipermail/devel/attachments/20151020/b159138b/attachment-0001.html>


More information about the Devel mailing list