198 lines
6.8 KiB
PHP
198 lines
6.8 KiB
PHP
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: common.inc
|
|
Description: Common code die vooraan elk bestand *wordt uitgevoerd*
|
|
We proberen op allerlei manieren te achterhalen of de gebruiker
|
|
bekend is. Zo niet dan doen we uiteindelijk een redirect naar
|
|
login.asp
|
|
Parameters: Voor het includen van dit bestand kun je nog wat globale variabelen zetten om
|
|
het gedrag te beinvloeden.
|
|
JSON_Result ==> Altijd JSON result (auto DOCTYPE_Disable)
|
|
DOCTYPE_Disable ==> Geen DOCTYPE header (voor JSON-requests)
|
|
LCL_Disable ==> Geen lcl's cachen
|
|
ANONYMOUS_Allowed ==> Voorkom redirect naar login.asp als niet ingelogd
|
|
FCLTEXPIRES ==> Zet expire tijd van pagina (anders -1)
|
|
LOGIN_try ==> Alleen vanuti LoginTry.asp==>geen redirect naar LoginTry.asp
|
|
|
|
Context: vanuit ELK asp bestand
|
|
Note: Dus gebruik met mate
|
|
Setting gaan in default.inc
|
|
Functies gaan naar shared.inc
|
|
*/
|
|
|
|
// Diverse andere variabelen zijn afhankelijk van rooturl en vooral customerId. Héél vroeg bepalen dus!
|
|
var rooturl;
|
|
var customerId;
|
|
|
|
determineCustomerId(); // doet ook rooturl
|
|
|
|
if (typeof JSON_Result == "undefined")
|
|
JSON_Result = false;
|
|
if (JSON_Result)
|
|
DOCTYPE_Disable = true;
|
|
|
|
if (typeof DOCTYPE_Disable == "undefined")
|
|
{
|
|
Response.write('<!DOCTYPE html>');
|
|
}
|
|
|
|
custL = []; // tijdelijke hack, mag weg met 5.2.3 als cust.inc's niet meer bestaan
|
|
|
|
%>
|
|
<!-- #include file="default.inc" -->
|
|
<!-- #include file="locale.inc" -->
|
|
<!-- #include file="hookfunctions.inc" -->
|
|
<!-- #include file="shared.inc" -->
|
|
<!-- #include file="logger.inc" -->
|
|
<!-- #include file="m_connections.inc" -->
|
|
<!-- #include file="header.inc" -->
|
|
<!-- #include file="user.inc" -->
|
|
<%
|
|
|
|
// NLS_LANG moet altijd op de webserver op WE8MSWIN1252
|
|
Response.Codepage = 1252;
|
|
Response.Charset = 'windows-1252';
|
|
|
|
Response.Expires = this.FCLTEXPIRES||-1; // Do not cache our ASP files
|
|
|
|
settings.loadSET();
|
|
device.init();
|
|
|
|
var overrule_lcl = {};
|
|
function tryOverrule(path)
|
|
{
|
|
var fso = Server.CreateObject("Scripting.FileSystemObject");
|
|
var hookfile = Server.MapPath(path);
|
|
if (fso.FileExists(hookfile))
|
|
{
|
|
var hook = GetObject("script:"+hookfile);
|
|
// Deze mag de hookfile gebruiken
|
|
hook.Overrule =
|
|
{
|
|
SET: function (naam, waarde)
|
|
{
|
|
settings.overrule_setting(naam.toLowerCase(), waarde);
|
|
},
|
|
LCL: function (naam, waarde)
|
|
{
|
|
overrule_lcl[naam] = waarde;
|
|
},
|
|
APPLICATION: function (naam, waarde)
|
|
{
|
|
if (Application(naam) != waarde)
|
|
{
|
|
Application.Lock();
|
|
Application(naam) = waarde;
|
|
Application.UnLock();
|
|
}
|
|
}
|
|
}
|
|
hook.custenv();
|
|
hook = null; // zorg dat de GC het object kan opruimen.
|
|
}
|
|
}
|
|
|
|
// Optionele overrules in cust/custenv.wsc en cust/XXXX/custenv.inc
|
|
tryOverrule(rooturl + "/cust/custenv.wsc");
|
|
tryOverrule(custpath + "/custenv.wsc"); // deze is sterker
|
|
|
|
// ip-restrictie controle
|
|
var ips = S("sys_ip_restrict");
|
|
if (ips)
|
|
{
|
|
var ip = String(Request.ServerVariables("REMOTE_HOST"));
|
|
var ips_intern = S("sys_ip_restrict_internal");
|
|
if (!new RegExp(ips.replace(/\./ig, "\\."), "ig").test(ip) &&
|
|
!(ips_intern && new RegExp(ips_intern.replace(/\./ig, "\\."), "ig").test(ip)))
|
|
{
|
|
Response.write ("Forbidden: IP address of the client has been rejected." ); // Doet IIS bij echte restrictie
|
|
Response.Status = "403.6";
|
|
Response.end;
|
|
}
|
|
}
|
|
|
|
if (S("hiresTimer"))
|
|
hiresTimer = new ActiveXObject("SLNKDWF.About");
|
|
|
|
if (S("auto_https") && Request.ServerVariables("SERVER_PORT") != "443")
|
|
{
|
|
%><script type="text/javascript">
|
|
window.top.location.href = "https://<%=Request.ServerVariables("SERVER_NAME") + rooturl%>";
|
|
</script>
|
|
<%
|
|
Response.End;
|
|
}
|
|
|
|
if (!S("allow_framed_facilitor"))
|
|
Response.AddHeader ("X-FRAME-OPTIONS", "SAMEORIGIN"); // voorkom ClickJacking
|
|
|
|
protectQS.getProtectSecret(); // forceer eerste keer per dag
|
|
|
|
var fixcookie = String(Request.Cookies("ASPFIXATION"));
|
|
if (fixcookie)
|
|
{
|
|
var fixCustid = fixcookie.substr(0, customerId.length);
|
|
if ( fixCustid != customerId)
|
|
{ // reset ingelogde user, customer wissel?
|
|
Session("user_key")=user_key=-1;
|
|
}
|
|
}
|
|
|
|
// Zie login.inc: ga ASP Session Fixation tegen.
|
|
if (typeof Session("ASPFIXATION") != "undefined")
|
|
{
|
|
var fixcookie = Request.Cookies("ASPFIXATION");
|
|
if (Session("ASPFIXATION") != fixcookie)
|
|
{
|
|
// Simuleer logoff
|
|
Session("user_key") = '-1'; // geen remove hier, anders grijpt SSO direct weer in
|
|
Session.Contents.Remove("ASPFIXATION");
|
|
Response.Cookies("ASPFIXATION") = "";
|
|
Response.Cookies("ASPFIXATION").Path = rooturl + "/";
|
|
Response.Redirect(rooturl + "/appl/shared/expired.asp?aspfixation=1");
|
|
}
|
|
}
|
|
|
|
// Zijn we bekend? Zo niet dan naar login.asp om dat uit te zoeken
|
|
var user_key = Session("user_key") || -1;
|
|
|
|
if (user_key < 0 && typeof LOGIN_try == "undefined")
|
|
{
|
|
Server.Execute(rooturl + "/appl/shared/loginTry.asp"); // Laat die het eens proberen op te lossen
|
|
if (Session("user_key") > 0)
|
|
user_key = Session("user_key");
|
|
}
|
|
|
|
if (user_key < 0 && typeof ANONYMOUS_Allowed == "undefined")
|
|
{
|
|
if (JSON_Result) // Login scherm werkt toch niet
|
|
{
|
|
Response.Clear();
|
|
// JSON.stringfy hebben we (nog!) niet gegarandeerd dus maar poor-man stringify
|
|
Response.Write('{"warning":"'+L("lcl_session_expired").replace(/\n/g,"\\n").replace(/\"/g,"\\\"") +'","success":false}');
|
|
Response.End;
|
|
}
|
|
|
|
var url = Session("unauth_url") || S("login_url"); // unauth_url uit shorturl.asp
|
|
if (!url.match(/^http/))
|
|
var url = rooturl + "/" + url; // "appl/shared/login.asp";
|
|
ret_page = String(Request.ServerVariables("SCRIPT_NAME"));
|
|
ret_page = ret_page.replace(/\/default.asp$/i, "/");
|
|
url = protectQS.create(url + "?querystring=" + Server.URLencode(Request.ServerVariables("QUERY_STRING"))
|
|
+ "&ret_page=" + Server.URLencode(ret_page));
|
|
Response.Redirect(url);
|
|
}
|
|
|
|
if (user_key > 0)
|
|
{
|
|
Session.Contents.Remove("fallback_user_key"); // uit shorturl.asp. Ondertussen niet meer nodig
|
|
Session.Contents.Remove("unauth_url"); // uit shorturl.asp. Ondertussen niet meer nodig
|
|
Session("user_key") = user_key;
|
|
/* global */ user = new Perslid(user_key);
|
|
|
|
CheckForLogging(Request.QueryString("LOGGING"));
|
|
}
|
|
// else zitten we in een bestand wat het user-object nooit benadert
|
|
%> |