From bc522efcd24d888b6ea1e43ba44a34281ac864fc Mon Sep 17 00:00:00 2001 From: Artem Bulgakov Date: Sun, 14 Jul 2024 18:46:29 +0300 Subject: [PATCH] feat: send session keepalive requests every 5 minutes --- src/entrypoints/content-script-moodle/index.ts | 2 ++ src/entrypoints/content-script-moodle/session-keepalive.js | 4 ++++ src/features/autologin/content-script.ts | 7 +++++++ src/manifest.ts | 5 +++++ 4 files changed, 18 insertions(+) create mode 100644 src/entrypoints/content-script-moodle/session-keepalive.js diff --git a/src/entrypoints/content-script-moodle/index.ts b/src/entrypoints/content-script-moodle/index.ts index 7e9e9fc..7b36fe1 100644 --- a/src/entrypoints/content-script-moodle/index.ts +++ b/src/entrypoints/content-script-moodle/index.ts @@ -1,4 +1,5 @@ import { + injectSessionKeepalive, redirectFromLogin, refreshPageOnAutologin, requestAutologinIfNeeded, @@ -23,6 +24,7 @@ onMessage('AUTOLOGIN_FAILED', () => { function main() { sendMessage('MOODLE_LOAD') requestAutologinIfNeeded() + injectSessionKeepalive() } main() diff --git a/src/entrypoints/content-script-moodle/session-keepalive.js b/src/entrypoints/content-script-moodle/session-keepalive.js new file mode 100644 index 0000000..ad8776e --- /dev/null +++ b/src/entrypoints/content-script-moodle/session-keepalive.js @@ -0,0 +1,4 @@ +// Touch session regularly to keep it alive +setInterval(() => { + require('core/ajax').call([{ methodname: 'core_session_touch', args: {} }]) +}, 5 * 60 * 1000) // 5 minutes diff --git a/src/features/autologin/content-script.ts b/src/features/autologin/content-script.ts index 5c67dfa..0a9bb20 100644 --- a/src/features/autologin/content-script.ts +++ b/src/features/autologin/content-script.ts @@ -69,3 +69,10 @@ export function showAutologinNotification() { notification.remove() }, 2000) } + +export function injectSessionKeepalive() { + const script = document.createElement('script') + script.type = 'text/javascript' + script.src = chrome.runtime.getURL('src/entrypoints/content-script-moodle/session-keepalive.js') + document.body.appendChild(script) +} diff --git a/src/manifest.ts b/src/manifest.ts index 1b3cb6a..a26d4d2 100644 --- a/src/manifest.ts +++ b/src/manifest.ts @@ -31,6 +31,11 @@ export default defineManifest({ resources: ['icons/logo-16.png', 'icons/logo-32.png', 'icons/logo-48.png', 'icons/logo-128.png'], matches: [], }, + { + // Injected into the moodle page to keep the session alive + resources: ['src/entrypoints/content-script-moodle/session-keepalive.js'], + matches: ['https://moodle.innopolis.university/*'], + }, ], permissions: [