Skip to content
Commits on Source (10)
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)
......@@ -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'];
......
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';
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;
});
})
......@@ -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);
}
?>
......@@ -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)) {
......
<?
// 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);
}
?>
......@@ -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
# The main sucs website
<VirtualHost 137.44.10.1:80>
DocumentRoot "/var/www/sucssite/htdocs"
ServerAdmin admin@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@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>