Greasy Fork is available in English.
Blocking the browser after the time has expired
// ==UserScript== // @name Access Browser Time // @namespace https://github.com/AlekPet/Access-Browser-Time/ // @version 1.0 // @description Blocking the browser after the time has expired // @author AlekPet // @copyright AlekPet // @license MIT; https://raw.githubusercontent.com/AlekPet/Access-Browser-Time/master/LICENSE // @icon https://raw.githubusercontent.com/AlekPet/Access-Browser-Time/master/Access-Browser-By-Time-userscript.png // @match http*://*/* // @run-at document-idle // @grant GM_setValue // @grant GM_getValue // @grant GM_addStyle // @grant GM_addValueChangeListener // @require https://code.jquery.com/jquery-3.1.0.min.js // ==/UserScript== GM_addStyle(` .countDown_Panel { position: fixed; max-width: 400px; max-height: 450px; bottom: 45px; left: 5px; text-align: center; z-index: 99999999999999999999; } .info_time{ font: bold 10pt monospace; text-align: left; margin: 5px 10%; } .cTime { color: #4d3ea2; } .upTime{ color: #910808; } .countDown_Panel .cd_form_box{ width: 400px; display: none; border: 1px solid silver; background: #fff; font-family: cursive; opacity:0.8; box-shadow: 0 3px 5px silver; } .cd_title { background: linear-gradient(#250280,#0089ff); padding: 10px; color: #fff; } .cd_body { padding: 5px; } .cd_title div { display: inline-block; float: right; cursor: pointer; transition: 1s font-size; } .cd_title div:hover { font-size: 1.2em; transition: 1s font-size; } .cD_Buttons { width: 100px; border: 1px solid silver; padding: 5px; background: linear-gradient(#b2b8bb,#88898c); color: white; user-select: none; cursor: pointer; transition: 1s font-size; } .cD_Buttons:hover{ font-size: 1.2em; transform: rotateZ(-360deg); transition: 1s font-size; } .countDown_Setting { background: linear-gradient(#00a4ff,#0826ff); margin: 5px auto; display:none; } .controls { margin: 0 auto; } .box_timer_table{ display: table; margin: 0px auto; width: 80%; } .box_timer_table > div { display:table-row; } .box_timer_table > div div{ display:table-cell; } .box_timer_table .head_caption{ font-weight: bold; } .box_timer_table input[type='number']{ text-align:center; width: 60px; margin-left: 5px; } .buttons { color: white; border: 1px solid silver; border-radius: 3px; box-shadow: 0 3px 6px; margin: 0 auto; padding: 5px; cursor:pointer; font-famaly: monospace; } .button_start{ background: linear-gradient(limegreen, green); width: 100px; } .button_start:hover{ background: linear-gradient(limegreen, #00FF50); } .countDown_Time { margin: 0 20px; font-size: 8pt; min-height: 12px; } .controls .fieldset_all{ margin: 5px auto; width: 90%; } .controls input#fon_, .controls #text_block { width: 100%; color: grey; } .controls #text_block{ height: 70px; } .cont_blocks { display: table; width: 100%; border-spacing: 3px; } .table_row { display: table-row; } .table_cell { display: table-cell; vertical-align: top; text-align: left; } .blockContainer{ margin-top: 10%; text-align: center; } .block_message{ font: bold 3em monospace; } .input_pass_box { position: absolute; top: 40%; left: 50%; width: 235px; transform: translate(-50%,-50%); background: silver; font: normal 12pt monospace; opacity: 0.9; box-shadow: 2px 2px 5px 3px #c0c0c082; text-align: center; display:none; } .input_pass_box > div { padding: 7px 6px; } .input_pass_box > div:first-child { background: darkcyan; color: white; } .input_pass_box > div span:last-child { float: right; cursor:pointer; } .input_pass_box > div span:last-child:hover { color: cyan; } .unblock{color: green;font:bold 12pt monospace;} .unblock:hover{color: cyan;} .info_pass_unblock{ background: white; margin: 3px; font-style: italic; font-size: 9pt; } `); (function() { 'use strict'; const $ = window.jQuery, debug = false, defaultBlockImage = "data:image/png;base64,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" var ObjTimer = null, mtint = null, curInterTimer = null function loadStorage(){ let ObjTimer_tmp = GM_getValue('ObjTimer'); ObjTimer = (ObjTimer_tmp) ? JSON.parse(GM_getValue('ObjTimer')) : { options: { enabled: false, date: null, block_data: {text:"", img: defaultBlockImage}, password: null, settings_inputs: null } } if(debug) console.log(ObjTimer) } function saveToStorage(){ try{ var save_data = JSON.stringify(ObjTimer); if(save_data.length>0 && save_data !== null && save_data !=="" && save_data !== undefined){ GM_setValue('ObjTimer', save_data); if(debug) console.log("Сохраненно: ",ObjTimer); } }catch(e){ console.log(e); } } function getCurrentTime(set_time = null){ let curTime = set_time ? new Date(set_time) : new Date(), year = curTime.getFullYear(), month = curTime.getMonth()+1, date = curTime.getDate(), h = curTime.getHours(), m = curTime.getMinutes(), s = curTime.getSeconds() return `${(date<10?"0"+date:date)+"."+(month<10?"0"+month:month)+"."+year+" "+(h<10?"0"+h:h)+":"+(m<10?"0"+m:m)+":"+(s<10?"0"+s:s)}` } $.fn.makeForm = function(){ let DivForm = $(` <div class="countDown_Panel"> <div class="cD_Buttons countDown_Setting">Настройки</div> <div class="countDown_Time">Timer: --д. --:--:--</div> </div> `); this.append(DivForm); $(".countDown_Setting").click(checkParole); // showHide $(".countDown_Time").on("click", function(){ $(".countDown_Setting").fadeToggle('slow') }) }; function showHide(){ let $cd_form_box = $(".cd_form_box") clearInterval(curInterTimer) curInterTimer = setInterval(function(){ let cTime = $(".cTime"), upTime = $(".upTime").text(getCurrentTime(returnNewDate())), curTime = getCurrentTime() if(cTime.length) $(".cTime").text(curTime) },1000) if(!$cd_form_box.length){ $cd_form_box = $(`<div class="cd_form_box"> <div class="cd_title"><span>Timer Setting...</span><div>X</div></div> <div class="cd_body"> <div class="controls"> <fieldset class="fieldset_all"> <legend>Установка времени</legend> <div class="box_timer_table"> <div> <div class="head_caption">Дней</div> <div class="head_caption">Часов</div> <div class="head_caption">Минут</div> <div class="head_caption">Секунд</div> </div> <div> <div><input type="number" min="0" title="Дней" id="days_" value="0"></div> <div><input type="number" min="0" title="Часов" id="hours_" value="0"></div> <div><input type="number" min="0" title="Минут" id="mins_" value="0"></div> <div><input type="number" min="0" title="Секунд" id="secs_" value="0"></div> </div> </div> <div class="info_time"> <div>Текущее время:</div> <div class="cTime">00.00.0000 00:00:00</div> <div>Время блокировки:</div> <div class="upTime">00.00.0000 00:00:00</div> </div> </fieldset> <fieldset class="fieldset_all"> <legend>Фон при блокировке</legend> <div class="cont_blocks"> <div class="table_row"> <div class="cont_img_block table_cell"> <div class="img_container"><img src="${ObjTimer.options.block_data.img}" id="image_block" width="128" title="Фон" /></div> </div> <div class="cont_block_setting table_cell"> <div class="link_div"> <div>Ссылка:</div> <input type="text" id="fon_" value="${ObjTimer.options.block_data.img}"> </div> <div class="textarea_div"> <div>Текст при блокировке:</div> <textarea id="text_block">Заблокировано ФБР!</textarea> </div> </div> </div> </div> </fieldset> <div class="buttons button_start">Start</div> </div> </div> </div> </div>`); $cd_form_box.find(".cd_title div").off().click(showHide); $cd_form_box.find("input").each(function(){ $(this).on("input", function(){ if(checkinputs()){ let getTimeUp = getCurrentTime(returnNewDate()) $(".upTime").text(getTimeUp) } }) }) $cd_form_box.find(".button_start").click(startTimer) $cd_form_box.find("input#fon_").on("input", imageURLCheck.bind("",$cd_form_box.find("img#image_block"))) $(".countDown_Panel").append($cd_form_box); } $cd_form_box.animate({ width: [ "toggle", "swing" ], height: [ "toggle", "swing" ], opacity: "toggle" }, 1500, "linear", function(){ $(".countDown_Setting").animate({ opacity: "hide", height: [ "hide", "swing" ] },'slow', function(){ if(!$(".cd_form_box").is(":visible")){ $(".countDown_Panel").find(".cd_form_box").remove(); } }); }); } function imageURLCheck(img,event){ let imgInput = event.target img.one("load",function(){ // loaded }) .one("error", function(){ this.src = "data:image/png;base64,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###jFIRw4rWneWAgQThdRyNcZbSymNcpeNgGF42gWLO00vcSYzoYNm3KkFCUM9xUxQ8YGY9pze700QKqwEWBW2xuMaGeBds4LKZx1Nui3xeQd0Rtx0roZkFC5ndbpjvU20caCx9pCxAm7s/XMLhEjoKECftEM5PfMzOp0hzrU2aYCoEaBvw0pegGevEfMssZsAuyn9qNgYTR52xniDBikTNcwQqXv7xBxBjToBxMEhcrIxi7c8gamLSmwQuXJ3xFiDHQZN0SFhcp/vJ0gxkDvBXrhYGH3dfbY9VbHxfgOQvAK/l2rYKHSn++Fbo84v0WiwnoZnFAZD2Lituao8dsZjUHakklMSOY24jvaMmK+K25DfwcpVqi05/dMttDfzDcrDfa9wsxCMizOz6NvujHGTZBkEDgQCgmV0bwtbrhS59vhxgAHxAoX2uImK7U2v2OALFEBodL2kwcnNtWnHs6/0fCxQLxQaboJsbqJ1pgkkGQQ04uKCsnQ76lJGvMu1VKSQNVTgb/HOaNQ6b74ybfm3KnWFr7Jf4H8dlwZQqXx01744oP8jLWDhe+xe+C5aGahotwko4Yq6S1W61Fa9BkD7l1C6UJlrC40RjI4yjeWlu7reypiKipFqHRvl5+325Nbq7Uln2HfijTBbEJF+WQHi1chsz0utT+yGkRO1GQJlf5ndymNalXK2FE6XD65Yrif4atBuUJFOfOWWuM0kdmQpZX0kRbo0Z593ZRQ6X9fefp12iJFkaXl1he1wO9ZEphdSOapgb9mFEKWDtd4ZBoaoOeh0oWKcuJ560a1ilGS5FXXP8LwPOoThRsXKq0nn2YMlYe1UspZ/VLtkKYLff6TwDR0LWQISXPs2atdTsI8IM7aqpTIasR2QMWF4dm9jA1wFnKEoXFAaY8r1mr1IAzyZ8r/afgDST55QjLJOXl2g5Qrh0XgPp8IT2HWQp6QGEcvNr1BIsLw7JeR0CKCETKFJPp3bhYk4bl3sspzFpKFJNo/PVcIaZB/9zPz8LcW8oVkgdzuvdp+gFEagW+/9toyqzOOPIQkGv2bW3XAGCbXcucP1Nubfh48JTdhGI3+qPc8sF0vMAxjnRr+x8Bz7cFzb5SXLowchVGM2ye3n59JG7Nd3/e9MMif5G+e8fz59qQtuV9Zj9yFUbT643F7dHZ2cvd0d3J2NmqPx30ZUzJAbEi4xXgXvv14F779eBe+/XgXvv34H4SMgQHha/VfAAAAAElFTkSuQmCC" }) .attr("src",imgInput.value) } function returnNewDate(saveS = false){ let date = new Date(), days_ = parseInt($("#days_").val()), hours_ = parseInt($("#hours_").val()), mins_ = parseInt($("#mins_").val()), secs_ = parseInt($("#secs_").val()), totalms = days_*(1000*60*60*24)+hours_*(1000*60*60)+mins_*(1000*60)+secs_*1000, newDate = new Date(date.getTime()+totalms) if(saveS){ ObjTimer.options.enabled = true ObjTimer.options.date = newDate.getTime() ObjTimer.options.settings_inputs = {days:days_, hours: hours_, mins: mins_, sec: secs_} ObjTimer.options.block_data.text = $("#text_block").val() ObjTimer.options.block_data.image = $("#fon_").val() } return newDate.getTime() } function startTimer(){ if(checkinputs()){ if(mtint) clearInterval(mtint); $(".countDown_Time").empty(); timer_run(returnNewDate(true)) showHide() saveToStorage() } else { alert("В полях были ошибки исправьте их!") } } function checkinputs(){ let input_ok = true $(".controls .box_timer_table input").each(function(indx, el){ let id = el.id, val = el.value, title = el.title if(/^\s?$/.test(val)){ alert("Поле '"+title+"' не может быть пустым!") el.value = 0 input_ok = false } if(!/^[0-9]+$/.test(val)){ let searchspchar = val.match(/[^0-9]/g) alert("Поле '"+title+"' содержит не цифры!\n"+(searchspchar && searchspchar.length? "\nСимволы в поле: "+val.match(/[^0-9]/g).join(","):"")) el.value = val = parseInt(val) || 0 input_ok = false } if(val < 0){ alert("Поле '"+title+"' не может быть меньше 0!") el.value = 0 input_ok = false } /*if(id == "days_"){ el.value = val > 365 ? 365 : val } else if(id == "hours_"){ el.value = val > 23 ? 23 : val } else if(id == "mins_" || id == "secs_"){ el.value = val > 59 ? 59 : val }*/ }) return input_ok } function makeParol(){ const p = prompt("Введите пароль, для защиты","") if(/^\s?$/.test(p)){ alert("Пароль не может быть без символов, или состоять из одних пробелов!") if(confirm("Попробовать снова?")) makeParol(); else return; } ObjTimer.options.password = p saveToStorage() //checkParole() return p } function checkParole(){ let p_cor = ObjTimer.options.password if(p_cor == null || /^\s?$/.test(p_cor)){ p_cor = makeParol() } else { p_cor = ObjTimer.options.password.toString() } if(p_cor.length){ const p = prompt("Введите пароль:","") if(p !== p_cor){ alert("Пароль неверный!") $(".countDown_Setting").hide() return; } else { alert("Пароль верный!") showHide() } } } function timer_run(date){ let d_t = document.title, yd = date, countText = $(".countDown_Time").get(0) mtint = setInterval(function(){ let nowDateMsec = new Date().getTime(), msec = yd-nowDateMsec, sec = Math.floor(msec/1000), min = Math.floor(sec/60), hour = Math.floor(min/60), day = Math.floor(hour/24) sec %= 60 min %= 60 hour %= 24 if (min<10){ min='0'+min } if (sec<10){ sec='0'+sec } if (hour<10){ hour='0'+hour } if(msec>0){ let timeOut = "Timer: "+day+"д. "+hour+":"+min+":"+sec countText.innerHTML = ((sec % 2 === 0 && msec<60000)?"":msec>60000?timeOut:"<span style='color:red'>"+timeOut+"</span>") document.title = d_t+" - "+ countText.innerText.replace("Timer: ","") } else { countText.innerText ="Время истекло!" clearInterval(mtint) blockBrowser() } }, 1000); } function blockBrowser(){ let canvas = $("<canvas>").get(0), ctx = canvas.getContext("2d") let img = $("<img>").on("load", function(){ let html = `<head><title>${ObjTimer.options.block_data.text}</title></head><body></body>`, containerCanvas = $("<div class='blockContainer'>"), messageBlock = $("<div class='block_message'>").text(ObjTimer.options.block_data.text), unBlock = $("<span class='unblock'>").text("Отключить блокировку").css("cursor","pointer").click(function(){ $(".input_pass_box").fadeToggle('slow', function(){ if(input_password.is(":visible")){ input_password.focus() } }) }), popUPEnterPaswword = $("<div class='input_pass_box'><div><span>Enter password</span><span title='Close' onclick='$(\".unblock\").trigger(\"click\")'>X</span></div><div class='input_pass_body'></div></div>"), input_password = $("<input>").attr({"type":"password","title":"Field password input...","id":"input_password"}), button_check = $("<button></button>").text("Enter").click(function(){ const p_cor = ObjTimer.options.password.toString(), user_input = input_password.val() if(p_cor === user_input){ input_password.css('border-color','limegreen') info_bar.css('color','green').text("Пароль верный!") let funct = function(time){ var timelef = time+1 return function(){ timelef-= 1 info_bar.text("Разблокировка через: " + timelef +' сек.') if(timelef <=0 ){ ObjTimer.options.enabled = false; saveToStorage() location.reload() } } } setInterval(funct.call("",3), 1000) } else { input_password.css('border-color','red') info_bar.text("Пароль не верный!") } }), info_bar = $("<div class='info_pass_unblock'>") popUPEnterPaswword.find(".input_pass_body").append(input_password,button_check,info_bar) canvas.width = this.naturalWidth canvas.height = this.naturalHeight ctx.drawImage(this, 0, 0) containerCanvas.append(canvas,messageBlock,unBlock) const tmStyles = $("style").filter(function(){ if(/^[0-9a-f-]+$/.test(this.id)) return this }), jquery = $("<script>") jquery.attr({"src":"https://code.jquery.com/jquery-3.1.0.min.js","type":"text/javascript"}) $(document).children("html").html(html) $("head").append(tmStyles,jquery) $("body").append(containerCanvas,popUPEnterPaswword) }).on("error", function(){ $("body").empty() }).attr("src", defaultBlockImage) } function timerIsset(){ if(ObjTimer.hasOwnProperty("options")){ if(ObjTimer.options.hasOwnProperty("date") && ObjTimer.options.hasOwnProperty("enabled") && ObjTimer.options.enabled && ObjTimer.options.date){ if((ObjTimer.options.date - new Date().getTime())>0){ timer_run(ObjTimer.options.date) } else blockBrowser() } } } function init(){ loadStorage() $("body").makeForm() timerIsset() } if (window.top === window.self) { init(); } })();