Block by Time Script

Copy
function toString(n){return (n \< 10? '0' : '') + n;}

function tzOffset(s){

var i = s.indexOf(":");

return parseInt(s.substring(3, i)) \* 60 + parseInt(s.substring(i+1));

}

// In the line below, replace \<start_day\> with the start of the working day of  
the week,

// and \<end_day\> with the end of the working day of the week.

// Example: var workDays = ["1","5"];

var workDays = ["\<start_day\>","\<end_day\>"];

// Replace \<start_time\> with the start of business hours,

// and \<end_time\> with the end of business hours.

// Example: var officeHours = ["08:00:00","17:00:00"];

var officeHours = ["\<start_time\>","\<end_time\>"];

// Replace \<time_zone\> with the office time zone.

// Example: var officeTimeZone = "UTC-08:00";

var officeTimeZone = "\<time_zone\>";

if (workDays[0] == "\<start_day\>" ZZ_BAR_ZZZZ_BAR_ZZ workDays[1] == "\<end_day\>"){

throw "\<start_day\> or \<end_day\> is not set. Please replace \<start_day\> and  
 \<end_day\> with the start and end of the working day of the week.";

}

var dayPatt = /\^[0-6]\$/i;

if (!workDays[0].match(dayPatt) ZZ_BAR_ZZZZ_BAR_ZZ !workDays[1].match(dayPatt)){

throw "\<start_day\> or \<end_day\> is not properly set. Please use a number  
 between 0 and 6. 0 means Sunday and 6 means Saturday.";

}

if (parseInt(workDays[0]) \> parseInt(workDays[1])){

throw "\<start_day\> or \<end_day\> is not properly set. Please make sure   
 \<start_day\> is no later than \<end_day\>.";

}

if (officeHours[0] == "\<start_time\>" ZZ_BAR_ZZZZ_BAR_ZZ officeHours[1] == "\<end_time\>"){

throw "\<start_time\> or \<end_time\> is not set. Please replace \<start_time\>  
 and \<end_time\> with the start and end time of office hours.";

}

var timePatt = /\^([01]?[0-9]\|2[0-3]):[0-5][0-9]:[0-5][0-9]\$/i;

if (!officeHours[0].match(timePatt) ZZ_BAR_ZZZZ_BAR_ZZ !officeHours[1].match(timePatt)){

throw "\<start_time\> or \<end_time\> is not properly set. Please use 24 hour  
 time notation 00:00:00 to 23:59:59.";

}

if (Date.parse("1970-01-01T"+officeHours[0]) \> Date.parse("1970-01-01T"+officeHours[1])){

throw "\<start_time\> or \<end_time\> is not properly set. Please make sure  
 \<start_time\> is no later than \<end_time\>.";

}

if (officeTimeZone == "\<time_zone\>"){

throw "\<time_zone\> is not set. Please replace \<time_zone\> with the office  
 time zone.";

}

var tzPatt = /\^UTC(\\+ZZ_BAR_ZZ\\-)([01]?[0-9]ZZ_BAR_ZZ2[0-3]):[0-5][0-9]\$/i;

if (!officeTimeZone.match(tzPatt)){

throw "\<time_zone\> is not properly set. Please use format UTC-nn:nn or   
 UTC+nn:nn where -nn:nn or +nn:nn is the time zone's offset from UTC.";

}

trace("ipaddress: " + context.ipAddress);

if (context.onPrem){

trace("onprem");

var d = new Date();

d.setMinutes(d.getMinutes() + d.getTimezoneOffset() + tzOffset(officeTimeZone));

var curTime = d.getTime();

var curDay = d.getDay();

trace("current time: " + d.toLocaleString());

trace("curDay: " + curDay);

if (curDay \< parseInt(workDays[0]) ZZ_BAR_ZZZZ_BAR_ZZ curDay \> parseInt(workDays[1])){

trace("block access - current day is not a working day.");

policy.Locked = true;

return;

}

var dateString = d.getFullYear() + '-' + toString(d.getMonth() + 1) + '-' + toString(d.getDate());

var startTime = Date.parse(dateString + 'T' + officeHours[0]);

trace("start time: " + dateString + 'T' + officeHours[0]);

var endTime = Date.parse(dateString + 'T' + officeHours[1]);

trace("end time: " + dateString + 'T' + officeHours[1]);

trace("curTime: " + curTime);

trace("startTime: " + startTime);

trace("endTime: " + endTime);

if (curTime \< startTime ZZ_BAR_ZZZZ_BAR_ZZ curTime \> endTime){

trace("block access - current time is not within office hours.");

policy.Locked = true;

}

}

else {

trace("off premises");

trace("block access - user is currently not on premise.");

policy.Locked = true;

}