From f0fa999571187754e257011245a5e360c5860e7e Mon Sep 17 00:00:00 2001 From: mrfry Date: Sun, 7 May 2023 11:48:28 +0200 Subject: [PATCH] new peer adding port fix, deprecated server handling, better peer selector updating --- stable.user.js | 131 ++++++++++++++++++++++++++++++++++--------------- 1 file changed, 92 insertions(+), 39 deletions(-) diff --git a/stable.user.js b/stable.user.js index e5e575f..23bf3d1 100755 --- a/stable.user.js +++ b/stable.user.js @@ -46,7 +46,7 @@ // : Script header {{{ // ==UserScript== // @name Moodle/Elearning/KMOOC test help -// @version 2.1.5.1 +// @version 2.1.5.2 // @description Online Moodle/Elearning/KMOOC test help // @author MrFry // @match https://elearning.uni-obuda.hu/* @@ -93,17 +93,19 @@ ;(function () { // CONFIG let serverToUse = getJSONVal('serverToUse') + const defultServer = { + host: 'piros.trambul.in', + port: 443, + } + if (!serverToUse) { - serverToUse = { - host: 'piros.trambul.in', - port: 443, - } + serverToUse = defultServer setJSONVal('serverToUse', serverToUse) } const logElementGetting = false const logEnabled = true const motdShowCount = 5 // Ammount of times to show motd - let infoExpireTime = 60 * 5 // Every n seconds basic info should be (re)loaded from server + let infoExpireTime = 60 * 5 let p2pInfoExpireTime = 60 * 60 * 24 let loggedIn = false const messageOpacityDelta = 0.1 @@ -1671,6 +1673,33 @@ }) } + function handleDeprecatedServer() { + const peers = getJSONVal('peers') + if (!peers) return + const newPeers = peers.filter((x) => { + return x.host !== serverToUse.host && x.port !== serverToUse.port + }) + + const removedCurrentPeer = peers.length > newPeers.length + + if (removedCurrentPeer) { + if (newPeers.length === 0) { + newPeers.push(defultServer) + } + + setJSONVal('peers', newPeers) + serverToUse = defultServer + setJSONVal('serverToUse', serverToUse) + serverAdress = getPeerUrl(serverToUse) + apiAdress = getPeerUrl(serverToUse) + 'api/' + + infoExpireTime = 0 + p2pInfoExpireTime = 0 + } + + return removedCurrentPeer + } + function ConnectToServer() { clearAllMessages() resetMenu() @@ -1687,6 +1716,16 @@ NoUserAction() return } + + if (inf.isDeprecated) { + const hadDeprecatedServer = handleDeprecatedServer() + if (hadDeprecatedServer) { + log('Removed deprecated server') + ConnectToServer() + return + } + } + loggedIn = true lastestVersion = inf.version.replace(/\n/g, '') motd = inf.motd @@ -1699,11 +1738,18 @@ elem.innerText = `${subjInfo.subjects.toLocaleString()} tárgy, ${subjInfo.questions.toLocaleString()} kérdés` }) - getPeers().catch(() => warn('unable to get p2p info')) + getPeers() + .then(() => { + SafeGetElementById('peerSelector', (elem) => { + updatePeerSelector(elem) + }) + }) + .catch(() => warn('unable to get p2p info')) SafeGetElementById('peerSelector', (elem) => { elem.style.display = '' }) AfterLoad() + registerScript() } catch (e) { warn(e) } @@ -1904,7 +1950,7 @@ return } - let port = hostUrl.includes('http:') ? 80 : 432 + let port = hostUrl.includes('http:') ? 80 : 443 if (hostUrl.split(':').length > 1) { port = hostUrl.split(':')[1] port = port.replace(/\//g, '') @@ -1980,9 +2026,9 @@ const greetMsg = [] if (isNewVersionAvaible) { - timeout = 5 - greetMsg.push(texts.newVersionAvaible + lastestVersion) - timeout = undefined + // timeout = 5 + // greetMsg.push(texts.newVersionAvaible + lastestVersion) + // timeout = undefined } if (newVersion) { greetMsg.push(texts.versionUpdated + info().script.version) @@ -2797,31 +2843,6 @@ margin: '4px 0px', }) - const peers = getJSONVal('peers') || [] - - peers.forEach((peer, i) => { - const option = document.createElement('option') - option.innerText = getPeerUrl(peer, true) - option.value = i - - peerSelector.appendChild(option) - }) - const newPeerOption = document.createElement('option') - newPeerOption.innerText = texts.addNewPeer - newPeerOption.value = 'new' - peerSelector.appendChild(newPeerOption) - - peerSelector.addEventListener('change', (e) => { - const selectedValue = e.target.value - if (selectedValue === 'new') { - addNewHost() - } else { - skipAvailablePeerFind = true - const selectedPeer = peers[selectedValue] - connectToPeer(selectedPeer) - } - }) - updatePeerSelector(peerSelector) return peerSelector @@ -2946,15 +2967,48 @@ } } + function onPeerSelect(e) { + const peers = getJSONVal('peers') || [] + const selectedValue = e.target.value + if (selectedValue === 'new') { + addNewHost() + } else { + skipAvailablePeerFind = true + const selectedPeer = peers[selectedValue] + if (!selectedPeer) { + return + } + connectToPeer(selectedPeer) + } + } + function updatePeerSelector(selector) { try { - const peers = getJSONVal('peers') + const peerSelector = document.getElementById('peerSelector') || selector + if (!peerSelector) return + const peers = getJSONVal('peers') || [] + + peerSelector.length = 0 + peers.forEach((peer, i) => { + const option = document.createElement('option') + option.innerText = getPeerUrl(peer, true) + option.value = i + + peerSelector.appendChild(option) + }) + const newPeerOption = document.createElement('option') + newPeerOption.innerText = texts.addNewPeer + newPeerOption.value = 'new' + peerSelector.appendChild(newPeerOption) + + peerSelector.removeEventListener('change', onPeerSelect) + peerSelector.addEventListener('change', onPeerSelect) const selectedPeer = getJSONVal('serverToUse') const selectedIndex = peers.findIndex((x) => { return getPeerUrl(x) === getPeerUrl(selectedPeer) }) - selector.value = selectedIndex + peerSelector.value = selectedIndex } catch (e) { debugLog('error in updatePeerSelector') } @@ -3149,7 +3203,6 @@ } function GetXHRInfos() { - registerScript() const now = new Date().getTime() let lastCheck = getVal('lastInfoCheckTime') if (!lastCheck) {