diff --git a/edupage.user.js b/edupage.user.js index d8591f1..4cb5496 100644 --- a/edupage.user.js +++ b/edupage.user.js @@ -1,257 +1,316 @@ -// ==UserScript== -// @name Edupage H4x -// @namespace https://brn.systems -// @version 0.2.29 -// @copyright Can be found at https://git.brn.systems/BRNSystems/Userscripts -// @description Gives you a bit more options on EduPage, some are broken -// @author BRNSystems -// @website https://brn.systems -// @downloadURL https://userscripts.brn.systems/edupage.user.js -// @updateURL https://userscripts.brn.systems/edupage.user.js -// @match https://*.edupage.org/* -// @icon64 https://www.google.com/s2/favicons?sz=64&domain=edupage.org -// @icon https://www.google.com/s2/favicons?sz=32&domain=edupage.org -// @require https://gist.github.com/raw/2625891/waitForKeyElements.js -// @require https://openuserjs.org/src/libs/sizzle/GM_config.min.js -// @grant GM_getValue -// @grant GM_setValue -// @grant GM.getValue -// @grant GM.setValue -// @grant GM_registerMenuCommand -// @grant GM.registerMenuCommand -// ==/UserScript== - - - -( function() { - 'use strict'; - - let gmc = new GM_config( - { - id: 'edupage_h4x_cnf', - title: GM_info.script.name + ' Settings', - fields: { - modify_startbutton: { - label: 'Hides the intro button', - type: 'checkbox', - default: false, - title: 'Hides the intro button' - }, - modify_adult_student: { - label: 'Fake adult student', - type: 'checkbox', - default: false, - title: 'Fakes you as an adult student(you might be able to sign your own grades)' - }, - modify_agent: { - label: 'Fake mobile app', - type: 'checkbox', - default: false, - title: 'Fakes you as an adult student(you might be able to sign your own grades)' - }, - modify_admin_stuff: { - label: 'Fake admin', - type: 'checkbox', - default: false, - title: 'Fakes isUcitelOrAdmin, isAdmin, getLoggedUserType, hasUserRight, isWebpageAdmin. Some functionality still does not work(Server protection)' - }, - modify_restricted: { - label: 'Fake not restricted', - type: 'checkbox', - default: false, - title: 'Fakes EduPage as not restricted(I do not know what this does)' - }, - modify_logged_in: { - label: 'Fake logged in', - type: 'checkbox', - default: false, - title: 'Fakes EduPage portal logged in(I do not know what this does)' - }, - modify_strings: { - label: 'Patch strings', - type: 'checkbox', - default: false, - title: 'Patch strings to more cool ones' - }, - modify_encoding: { - label: 'Disable encoded links', - type: 'checkbox', - default: false, - title: 'Disables ?eqa=gibberish' - }, - }, - 'events': { - 'init': oninit - } - }); - - function oninit(){ - - GM_registerMenuCommand('Settings', () => { - gmc.open() - }) - - let removeintrobtn = gmc.get("modify_startbutton"); - let fake_adult_student = gmc.get("modify_adult_student"); - let fake_admin = gmc.get("modify_admin_stuff"); - let fake_not_restricted = gmc.get("modify_restricted"); - let fake_logged_in = gmc.get("modify_logged_in"); - let disable_encoding = gmc.get("modify_encoding"); - let change_strings = gmc.get("modify_strings"); - let modify_agent = gmc.get("modify_agent"); - - let strings = { - 3276: "budeme Ťa otravovať za", - 3275: "Teraz ťa nebudeme chvíľu otravovať, ale", - 3272: "Už kašli na školu, nemá to zmysel a", - 3274: "Zabudni na úlohy,", - }; - - function deleteNotX (jNode) { - jNode.remove (); - } - - // Define your modified function - function modifiedGetLoggedUserType() { - // Your custom code here - return 'Admin'; // Override the return value as needed - } - - function justtrue(){ - return true; - } - - function justfalse(){ - return false; - } - - function modifiedbarEncLink(url) { - return url; - } - - if(removeintrobtn){ - //removes intro button - waitForKeyElements ("a.learnMoreBtn", deleteNotX); - } - - // Find and replace the original function - if (typeof EdubarUtils !== 'undefined') { - - if(fake_admin){ - if(typeof EdubarUtils.getLoggedUserType === 'function'){ - EdubarUtils.getLoggedUserType = modifiedGetLoggedUserType; - console.log('EdubarUtils.getLoggedUserType overridden successfully.'); - } - - if (typeof EdubarUtils.isWebpageAdmin === 'function') { - EdubarUtils.isWebpageAdmin = justtrue; - console.log('EdubarUtils.isWebpageAdmin overridden successfully.'); - } else { - console.error('EdubarUtils.isWebpageAdmin not found or not a function.'); - } - - if (typeof EdubarUtils.hasUserRight === 'function') { - EdubarUtils.hasUserRight = justtrue; - console.log('EdubarUtils.hasUserRight overridden successfully.'); - } else { - console.error('EdubarUtils.hasUserRight not found or not a function.'); - } - - if (typeof EdubarUtils.isAdmin === 'function') { - EdubarUtils.isAdmin = justtrue; - console.log('EdubarUtils.isAdmin overridden successfully.'); - } else { - console.error('EdubarUtils.isAdmin not found or not a function.'); - } - - if (typeof EdubarUtils.isUcitelOrAdmin === 'function') { - EdubarUtils.isUcitelOrAdmin = justtrue; - console.log('EdubarUtils.isUcitelOrAdmin overridden successfully.'); - } else { - console.error('EdubarUtils.isUcitelOrAdmin not found or not a function.'); - } - } - - if(fake_adult_student){ - if (typeof EdubarUtils.isAdultStudent === 'function') { - EdubarUtils.isAdultStudent = justtrue; - console.log('EdubarUtils.isAdultStudent overridden successfully.'); - } else { - console.error('EdubarUtils.isAdultStudent not found or not a function.'); - } - - if (typeof EdubarUtils.isParentOrAdultStudent === 'function') { - EdubarUtils.isParentOrAdultStudent = justtrue; - console.log('EdubarUtils.isParentOrAdultStudent overridden successfully.'); - } else { - console.error('EdubarUtils.isParentOrAdultStudent not found or not a function.'); - } - } - - if(fake_not_restricted){ - if (typeof EdubarUtils.isRestrictedEdupage === 'function') { - EdubarUtils.isRestrictedEdupage = justfalse; - console.log('EdubarUtils.isRestrictedEdupage overridden successfully.'); - } else { - console.error('EdubarUtils.isRestrictedEdupage not found or not a function.'); - } - } - - if(fake_logged_in){ - if (typeof EdubarUtils.isLoggedToPortal === 'function') { - EdubarUtils.isLoggedToPortal = justtrue; - console.log('EdubarUtils.isLoggedToPortal overridden successfully.'); - } else { - console.error('EdubarUtils.isLoggedToPortal not found or not a function.'); - } - } - - - } else { - console.error('EdubarUtils not found or not a function.'); - } - - if(disable_encoding){ - if (typeof unsafeWindow.barEncLink === 'function') { - unsafeWindow.barEncLink = modifiedbarEncLink; - //unsafeWindow.AscMobileAppVersion = "69420"; - unsafeWindow.$j.post = function(url, data, success, dataType, eqav) { - if (!eqav) { - eqav = 1; - } - if(data && Object.keys(data).length === 0) { - data = { - eqap: "", - eqacs: "da39a3ee5e6b4b0d3255bfef95601890afd80709", - eqaz: 0, - } - } - url += (url.indexOf('?') >= 0 ? '&' : '?')+'eqav='+eqav+'&maxEqav='+unsafeWindow.maxEqav; - return $j.origPost(url, data, success, dataType); - }; - //MobileAppBridge.isActive = function() { - // return false; - //} - - console.log("barEncLink overriden successfully."); - } - else { - console.error('barEncLink not found or not a function.'); - } - } - - if(change_strings){ - if (typeof unsafeWindow.Langs === 'object') { - for (var key in strings) { - var value = strings[key]; - unsafeWindow.Langs[key] = value; - } - console.log("Strings overriden successfully."); - } - else { - console.error('Langs not found or not a function.'); - } - } - } - +// ==UserScript== +// @name Edupage H4x +// @namespace https://brn.systems +// @version 0.2.29 +// @copyright Can be found at https://git.brn.systems/BRNSystems/Userscripts +// @description Gives you a bit more options on EduPage, some are broken +// @author BRNSystems +// @website https://brn.systems +// @downloadURL https://userscripts.brn.systems/edupage.user.js +// @updateURL https://userscripts.brn.systems/edupage.user.js +// @match https://*.edupage.org/* +// @icon64 https://www.google.com/s2/favicons?sz=64&domain=edupage.org +// @icon https://www.google.com/s2/favicons?sz=32&domain=edupage.org +// @require https://gist.github.com/raw/2625891/waitForKeyElements.js +// @require https://openuserjs.org/src/libs/sizzle/GM_config.min.js +// @grant GM_getValue +// @grant GM_setValue +// @grant GM.getValue +// @grant GM.setValue +// @grant GM_registerMenuCommand +// @grant GM.registerMenuCommand +// ==/UserScript== + + + +( function() { + 'use strict'; + + //from https://addons.mozilla.org/en-US/firefox/addon/edupage-addons/ + let darkmodecss = '.userTopDiv,.userRozvrh,.user-novyPrvok,.userHomeOther,.hwHeroDiv,.skgdFixedHeader,#skin_Div_10,#skin_Div_11,.messageViewerHeader,div.messageViewerReplies.messageViewerReplies1.messageViewerReplyText>form>div>div>textarea,.ui-dialog-titlebar,.etest-meditor-test-item.selected{background-color:#040404 !important;box-shadow:none}div.messageViewerReplies.messageViewerReplies1.messageViewerReplyText>form>div>div>textarea{outline:none;caret-color:#fff;color:#fff}body,html,.userContentInner,.bgDiv,#jw4298a4ab_md,.edubarSidebar,.usercalendarTitle>h1,.zsvFilterElem,.zsvHeaderTitle,.zsvHeaderTabs,.diplomy-st-contet-outer,.print-nobreak,#fitheight>div:nth-child(2)>div>div>div:nth-child(2)>div:nth-child(1)>div>div,#fitheight>div:nth-child(2)>div>div>div:nth-child(2)>div:nth-child(1)>div>div>div,#fitheight>div:nth-child(2)>div>div>div:nth-child(2)>div:nth-child(2)>div>div:nth-child(1)>div,#fitheight>div:nth-child(2)>div>div>div:nth-child(2)>div:nth-child(2)>div>div:nth-child(1),#fitheight>div:nth-child(1)>span,#fitheight>div:nth-child(1),#fitheight,#fitheight>div:nth-child(2)>div>div>div:nth-child(2)>div:nth-child(2)>div>div:nth-child(2)>div:nth-child(1)>div:nth-child(1),#fitheight>div:nth-child(2)>div>div>div:nth-child(2)>div:nth-child(2)>div>div:nth-child(2)>div:nth-child(3)>div:nth-child(1),#fitheight>div:nth-child(2)>div>div>div:nth-child(2)>div:nth-child(2)>div>div:nth-child(2)>div:nth-child(5)>div:nth-child(1),#fitheight>div:nth-child(2)>div>div>div:nth-child(2)>div:nth-child(2)>div>div:nth-child(2)>div:nth-child(7)>div:nth-child(1),#fitheight>div:nth-child(2)>div>div>div:nth-child(2)>div:nth-child(2)>div>div:nth-child(2)>div:nth-child(9)>div:nth-child(1),#fitheight>div:nth-child(2)>div>div>div:nth-child(2)>div:nth-child(2)>div>div:nth-child(2)>div:nth-child(11)>div:nth-child(1),#fitheight>div:nth-child(2)>div>div>div:nth-child(2)>div:nth-child(2)>div>div:nth-child(2)>div:nth-child(13)>div:nth-child(1),div.mvtMainScroller.replies>div.messageViewerReplies.messageViewerReplies0>ul>li>div.messageReakciaInner,.edubarHeader,.edubarProfilebox .display,.profilemenu{background-color:#1d1d1d !important;color:#fff !important}.edubarSmartLink span,.edubarMenuitem a span,.ribbon-button span,.hwWeekItem,.zsvHeaderTitle>h1,td>span>span,td>a,td>div>a,.expandMonthBtn,#home_Heading_2,.messageViewerConfirmationItem{color:#fff !important}.edubarSmartLink:hover,.edubarMenuitem.active a,.edubarMenuitem a:hover,.edubarMenulist a:hover,.hwmenuElem .selected,.hwWeekItem,#fitheight>div:nth-child(2)>div:nth-child(3)>div:nth-child(1),#fitheight>div:nth-child(2)>div:nth-child(3),.messageViewerReplyText,.messageViewerConfirmationsHeader,.tmv-userCardsList{background-color:#101010 !important}.hwLoadMoreDiv{opacity:1 !important}.userButton,.edubarMenulist,.calendar>div,.hwmenuElem,.ribbon-section,.toolbarForm,.hwDate,.hwItem,.hwLoadMoreDiv,.hwListElem,.hwsideElem,.ui-datepicker-header,.hwMainListMain,.tmv-userCard,.sgeRestrictedWidth,.sgpTargetsPanel,.etest-meditor-test-list-month,.etest-meditor-tests-obdobie-combo,.etest-meditor-test-list-tabs,.etest-meditor-content,.etest-meditor-search-results-toolbar{background-color:#181818 !important;color:#fff !important}.messageReplies,.mvtMainScroller{background-color:#181818 !important}.hwItem{margin:0 !important}.callout{display:none}.edubarSidebar .edubarMenulist{background-color:#1d1d1d !important}.userButtonLast{background-color:#1a1a1a !important;color:#fff}ul.edubarMenulist.level0>li:hover>a,ul.edubarMenulist.level0>li.v2:hover>a{background-color:#101010 !important}.messageViewerUser,.messageViewerText,.messageViewerClosePart,.tml-replies-actions,.messageRepliesTitle,.ui-dialog-content,.ui-dialog,.sgeNavPanel,.signin-playaction-hero,.etest-meditor-searchdiv-inner3,.hwDetails{background-color:#101010 !important;color:#fff !important}th,.fixedCell,td{background-color:#101010 !important;color:#fff !important;border:none !important}.header th,.sgpQuestionElem{background-color:#0b0b0b !important}.sgpTargetItem.confirmed{background-color:#5bba6f !important}#fitheight>div:nth-child(2)>div>div>div:nth-child(2)>div:nth-child(1)>div>div:nth-child(1)>div::after{content:"dark mode v0.1 beta"}.tt-cell,.tt-cell+div+div+div span{filter:brightness(80%)}/*# sourceMappingURL=darkmode.css.map */'; + + + let gmc = new GM_config( + { + id: 'edupage_h4x_cnf', + title: GM_info.script.name + ' Settings', + fields: { + modify_startbutton: { + label: 'Hides the intro button', + type: 'checkbox', + default: false, + title: 'Hides the intro button' + }, + modify_adult_student: { + label: 'Fake adult student', + type: 'checkbox', + default: false, + title: 'Fakes you as an adult student(you might be able to sign your own grades)' + }, + modify_admin_stuff: { + label: 'Fake admin', + type: 'checkbox', + default: false, + title: 'Fakes isUcitelOrAdmin, isAdmin, getLoggedUserType, hasUserRight, isWebpageAdmin. Some functionality still does not work(Server protection)' + }, + modify_restricted: { + label: 'Fake not restricted', + type: 'checkbox', + default: false, + title: 'Fakes EduPage as not restricted(I do not know what this does)' + }, + modify_logged_in: { + label: 'Fake logged in', + type: 'checkbox', + default: false, + title: 'Fakes EduPage portal logged in(I do not know what this does)' + }, + modify_strings: { + label: 'Patch strings', + type: 'checkbox', + default: false, + title: 'Patch strings to more cool ones' + }, + modify_encoding: { + label: 'Disable encoded links', + type: 'checkbox', + default: false, + title: 'Disables ?eqa=gibberish' + }, + autologin: { + label: 'Autologin', + type: 'checkbox', + default: false, + title: 'Logs you in automatically' + }, + darkmode: { + label: 'Dark mode', + type: 'checkbox', + default: false, + title: 'Makes Edupage dark' + }, + }, + 'events': { + 'init': oninit + } + }); + + function oninit(){ + + GM_registerMenuCommand('Settings', () => { + gmc.open() + }) + + let removeintrobtn = gmc.get("modify_startbutton"); + let fake_adult_student = gmc.get("modify_adult_student"); + let fake_admin = gmc.get("modify_admin_stuff"); + let fake_not_restricted = gmc.get("modify_restricted"); + let fake_logged_in = gmc.get("modify_logged_in"); + let disable_encoding = gmc.get("modify_encoding"); + let change_strings = gmc.get("modify_strings"); + let darkmode = gmc.get("darkmode"); + let autologin = gmc.get("autologin"); + + let strings = { + 3276: "budeme Ťa otravovať za", + 3275: "Teraz ťa nebudeme chvíľu otravovať, ale", + 3272: "Už kašli na školu, nemá to zmysel a", + 3274: "Zabudni na úlohy,", + }; + + function deleteNotX (jNode) { + jNode.remove (); + } + + // Define your modified function + function modifiedGetLoggedUserType() { + // Your custom code here + return 'Admin'; // Override the return value as needed + } + + function justtrue(){ + return true; + } + + function justfalse(){ + return false; + } + + function modifiedbarEncLink(url) { + return url; + } + + if(removeintrobtn){ + //removes intro button + waitForKeyElements ("a.learnMoreBtn", deleteNotX); + } + + // Find and replace the original function + if (typeof EdubarUtils !== 'undefined') { + + if(fake_admin){ + if(typeof EdubarUtils.getLoggedUserType === 'function'){ + EdubarUtils.getLoggedUserType = modifiedGetLoggedUserType; + console.log('EdubarUtils.getLoggedUserType overridden successfully.'); + } + + if (typeof EdubarUtils.isWebpageAdmin === 'function') { + EdubarUtils.isWebpageAdmin = justtrue; + console.log('EdubarUtils.isWebpageAdmin overridden successfully.'); + } else { + console.error('EdubarUtils.isWebpageAdmin not found or not a function.'); + } + + if (typeof EdubarUtils.hasUserRight === 'function') { + EdubarUtils.hasUserRight = justtrue; + console.log('EdubarUtils.hasUserRight overridden successfully.'); + } else { + console.error('EdubarUtils.hasUserRight not found or not a function.'); + } + + if (typeof EdubarUtils.isAdmin === 'function') { + EdubarUtils.isAdmin = justtrue; + console.log('EdubarUtils.isAdmin overridden successfully.'); + } else { + console.error('EdubarUtils.isAdmin not found or not a function.'); + } + + if (typeof EdubarUtils.isUcitelOrAdmin === 'function') { + EdubarUtils.isUcitelOrAdmin = justtrue; + console.log('EdubarUtils.isUcitelOrAdmin overridden successfully.'); + } else { + console.error('EdubarUtils.isUcitelOrAdmin not found or not a function.'); + } + } + + if(fake_adult_student){ + if (typeof EdubarUtils.isAdultStudent === 'function') { + EdubarUtils.isAdultStudent = justtrue; + console.log('EdubarUtils.isAdultStudent overridden successfully.'); + } else { + console.error('EdubarUtils.isAdultStudent not found or not a function.'); + } + + if (typeof EdubarUtils.isParentOrAdultStudent === 'function') { + EdubarUtils.isParentOrAdultStudent = justtrue; + console.log('EdubarUtils.isParentOrAdultStudent overridden successfully.'); + } else { + console.error('EdubarUtils.isParentOrAdultStudent not found or not a function.'); + } + } + + if(fake_not_restricted){ + if (typeof EdubarUtils.isRestrictedEdupage === 'function') { + EdubarUtils.isRestrictedEdupage = justfalse; + console.log('EdubarUtils.isRestrictedEdupage overridden successfully.'); + } else { + console.error('EdubarUtils.isRestrictedEdupage not found or not a function.'); + } + } + + if(fake_logged_in){ + if (typeof EdubarUtils.isLoggedToPortal === 'function') { + EdubarUtils.isLoggedToPortal = justtrue; + console.log('EdubarUtils.isLoggedToPortal overridden successfully.'); + } else { + console.error('EdubarUtils.isLoggedToPortal not found or not a function.'); + } + } + + + } else { + console.error('EdubarUtils not found or not a function.'); + } + + if(disable_encoding){ + if (typeof unsafeWindow.barEncLink === 'function') { + unsafeWindow.barEncLink = modifiedbarEncLink; + //unsafeWindow.AscMobileAppVersion = "69420"; + unsafeWindow.$j.post = function(url, data, success, dataType, eqav) { + if (!eqav) { + eqav = 1; + } + if(data && Object.keys(data).length === 0) { + data = { + eqap: "", + eqacs: "da39a3ee5e6b4b0d3255bfef95601890afd80709", + eqaz: 0, + } + } + url += (url.indexOf('?') >= 0 ? '&' : '?')+'eqav='+eqav+'&maxEqav='+unsafeWindow.maxEqav; + return $j.origPost(url, data, success, dataType); + }; + //MobileAppBridge.isActive = function() { + // return false; + //} + + console.log("barEncLink overriden successfully."); + } + else { + console.error('barEncLink not found or not a function.'); + } + } + + if(change_strings){ + if (typeof unsafeWindow.Langs === 'object') { + for (var key in strings) { + var value = strings[key]; + unsafeWindow.Langs[key] = value; + } + console.log("Strings overriden successfully."); + } + else { + console.error('Langs not found or not a function.'); + } + } + + // If Dark Mode is enabled, apply the styles + if (darkmode) { + const style = document.createElement('style'); + style.textContent = darkmodecss; + document.head.appendChild(style); + } + + + if (autologin) { + (async function() { + // Function to get value using postMessage + async function getValue(k) { + return new Promise((resolve) => { + window.addEventListener("message", (e) => { + console.log(e); + if (e.data.message === "getValueResponse") { + resolve(e.data.value); + } + }); + window.postMessage({ message: "getValue", key: k }, "*"); + }); + } + + // Wait for the DOM to be ready + await new Promise(resolve => { + if (document.readyState === 'complete') { + resolve(); + } else { + window.addEventListener('load', resolve); + } + }); + + // Select elements + const userField = document.querySelector("#home_Login_1e1"); + const passField = document.querySelector("#home_Login_1e2"); + + // Check if userField exists and host matches + if (userField && location.host === (await getValue("autologin_host")) + ".edupage.org") { + + // Populate fields with autologin credentials + userField.value = await getValue("autologin_username"); + passField.value = await getValue("autologin_password"); + + // Click the submit button + } + })(); + } + } + })(); \ No newline at end of file