-
-
Save davidzou2131/96cf9278f81354689b83 to your computer and use it in GitHub Desktop.
DETNSW SSO Auto-Login Script
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var END_OF_INPUT = -1; | |
var base64Chars = new Array( | |
'A','B','C','D','E','F','G','H', | |
'I','J','K','L','M','N','O','P', | |
'Q','R','S','T','U','V','W','X', | |
'Y','Z','a','b','c','d','e','f', | |
'g','h','i','j','k','l','m','n', | |
'o','p','q','r','s','t','u','v', | |
'w','x','y','z','0','1','2','3', | |
'4','5','6','7','8','9','+','/' | |
); | |
var reverseBase64Chars = new Array(); | |
for (var i=0; i < base64Chars.length; i++){ | |
reverseBase64Chars[base64Chars[i]] = i; | |
} | |
var base64Str; | |
var base64Count; | |
function setBase64Str(str){ | |
base64Str = str; | |
base64Count = 0; | |
} | |
function readReverseBase64(){ | |
if (!base64Str) return END_OF_INPUT; | |
while (true){ | |
if (base64Count >= base64Str.length) return END_OF_INPUT; | |
var nextCharacter = base64Str.charAt(base64Count); | |
base64Count++; | |
if (reverseBase64Chars[nextCharacter]){ | |
return reverseBase64Chars[nextCharacter]; | |
} | |
if (nextCharacter == 'A') return 0; | |
} | |
return END_OF_INPUT; | |
} | |
function ntos(n){ | |
n=n.toString(16); | |
if (n.length == 1) n="0"+n; | |
n="%"+n; | |
return unescape(n); | |
} | |
function db(str){ | |
setBase64Str(str); | |
var result = ""; | |
var inBuffer = new Array(4); | |
var done = false; | |
while (!done && (inBuffer[0] = readReverseBase64()) != END_OF_INPUT | |
&& (inBuffer[1] = readReverseBase64()) != END_OF_INPUT){ | |
inBuffer[2] = readReverseBase64(); | |
inBuffer[3] = readReverseBase64(); | |
result += ntos((((inBuffer[0] << 2) & 0xff)| inBuffer[1] >> 4)); | |
if (inBuffer[2] != END_OF_INPUT){ | |
result += ntos((((inBuffer[1] << 4) & 0xff)| inBuffer[2] >> 2)); | |
if (inBuffer[3] != END_OF_INPUT){ | |
result += ntos((((inBuffer[2] << 6) & 0xff) | inBuffer[3])); | |
} else { | |
done = true; | |
} | |
} else { | |
done = true; | |
} | |
} | |
return result; | |
} | |
function submit_form() { | |
var details = document.forms['loginform'].elements['ssoDetails'].value; | |
var details_array=details.split(":"); | |
document.forms['loginform'].elements['ssousername'].value = db(details_array[0]); | |
document.forms['loginform'].elements['password'].value = db(details_array[1]); | |
document.forms['loginform'].elements['IDToken1'].value = db(details_array[0]); // for openam | |
document.forms['loginform'].elements['IDToken2'].value = db(details_array[1]); // for openam | |
document.forms['loginform'].submit(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment