Skip to content
GitLab
Explore
Sign in
Commits on Source (2)
fixed paths to external files
· 113face8
Imran Hussain
authored
May 01, 2018
113face8
add my ldap auth php to the project
· d26c7a0a
Imran Hussain
authored
May 01, 2018
d26c7a0a
Hide whitespace changes
Inline
Side-by-side
ldap-auth.php
0 → 100644
View file @
d26c7a0a
<?php
/*
Written by Imran Hussain ~imranh
Used to auth people, will check SUCS then the uni ldap, will only check
students on the uni ldap.
will return "sucs" if the username/password passed is a sucs member
will return "uni" if the user/pass passed has a student swan uni account
will return "nope" if the user/pass passed is inavlid
Example usage:
include_once("ldap-auth.php");
isAuthd = ldapAuth("usaername", "password");
if (isAuthd == "sucs"){
//do stuff for sucs auth
}elseif (isAuthd == "uni"){
//do stuff for uni auth
}else{
//do stuff for not authd peeps
}
*/
// we don't care about warnings, we write our own
error_reporting
(
E_ERROR
|
E_PARSE
);
function
ldapAuth
(
$username
,
$password
)
{
if
(
$username
!=
""
&&
$password
!=
""
)
{
// people like to use emails to login so lets detect and strip
if
(
filter_var
(
$username
,
FILTER_VALIDATE_EMAIL
))
{
//valid email, lets strip
// split the email into a string array "@" as a delim
$s
=
explode
(
"@"
,
$username
);
// remove the last element (domain)
array_pop
(
$s
);
// put the array back togther using "@" as a seperator
$username
=
implode
(
"@"
,
$s
);
}
// ldap servers
$sucsLDAPServer
=
'silver.sucs.swan.ac.uk'
;
$lisLDAPServer
=
'ccs-suld1.swan.ac.uk'
;
// lis auth stuffs
$lisUsernameOu
=
substr
(
$username
,
-
1
);
$lisOtherOu
=
"Moved"
;
// how to bind
$sucsBindDn
=
"uid=
$username
,ou=People,dc=sucs,dc=org"
;
$lisBindDn1
=
"cn=
$username
,ou=
$lisUsernameOu
,ou=Students,ou=SWANSEA,o=SWANUNI"
;
$lisBindDn2
=
"cn=
$username
,ou=
$lisOtherOu
,ou=Students,ou=SWANSEA,o=SWANUNI"
;
// Main auth
// Try and connect to silver
$ldapconnSUCS
=
ldap_connect
(
$sucsLDAPServer
)
or
die
(
"Could not connect to SUCS LDAP server."
);
if
(
$ldapconnSUCS
)
{
//echo "Connected to $sucsLDAPServer <br>";
// try and bind to sucs ldap
$ldapbindSUCS
=
ldap_bind
(
$ldapconnSUCS
,
$sucsBindDn
,
$password
);
if
(
$ldapbindSUCS
)
{
//echo "Auth'd as $username using SUCS LDAP<br>";
return
"sucs"
;
// turns out they didn't give us valid sucs creds, lets try lis now
}
else
{
// try and connect to the lis ldap server
$ldapconnLIS
=
ldap_connect
(
$lisLDAPServer
)
or
die
(
"Could not connect to uni LDAP server."
);
//echo "Connected to $lisLDAPServer <br>";
// lets try and bind to the uni ldap
$ldapbindLIS1
=
ldap_bind
(
$ldapconnLIS
,
$lisBindDn1
,
$password
);
if
(
$ldapbindLIS1
)
{
//echo "Auth'd as $username using uni LDAP using ou=$lisUsernameOu<br>";
return
"uni"
;
}
else
{
$ldapbindLIS2
=
ldap_bind
(
$ldapconnLIS
,
$lisBindDn2
,
$password
);
if
(
$ldapbindLIS2
)
{
//echo "Auth'd as $username using uni LDAP using ou=moved<br>";
return
"uni"
;
// shit, couldn't bind to anything
}
else
{
//exit("Invalid Username or Password");
return
"nope"
;
}
}
}
}
}
else
{
return
"nope"
;
}
}
public/index.php
View file @
d26c7a0a
...
...
@@ -28,12 +28,12 @@ if(isset($_REQUEST['password'])) {
$password
=
$_REQUEST
[
'password'
];
}
include_once
(
"./ldap-auth.php"
);
include_once
(
".
.
/ldap-auth.php"
);
$isAuthd
=
ldapAuth
(
$username
,
$password
);
if
(
$isAuthd
==
"sucs"
){
include_once
(
"./doorkey.php"
);
include_once
(
".
.
/doorkey.php"
);
//curl door
$curl
=
curl_init
();
curl_setopt
(
$curl
,
CURLOPT_URL
,
"http://door.sucs.org/sendstatus.py?text=${username}%20via%20de%20web&timeout=1&fg=0,0,0&bg=128,255,128&unlock=1&key=${doorkey}"
);
...
...