Skip to content

Instantly share code, notes, and snippets.

@surfaceflinger
Created November 20, 2024 11:21
Show Gist options
  • Save surfaceflinger/088dceeef6e1dbed9d1c68476aa34de6 to your computer and use it in GitHub Desktop.
Save surfaceflinger/088dceeef6e1dbed9d1c68476aa34de6 to your computer and use it in GitHub Desktop.
Userscript to access engineering options in "WNC T-Mobile Internet 5G Home Office" ODU/Modem. Code might be shit because I don't know JS and it was generated by ChatGPT
// ==UserScript==
// @name Add Engineering Mode Menu
// @namespace http://tampermonkey.net/
// @version 0.1
// @description Inject engineering mode submenu to the menu
// @author You
// @match *://192.168.0.1/*
// @grant none
// ==/UserScript==
(function () {
'use strict';
const targetID = 'cssmenu'; // ID of the target <li>
const submenuID = 'subMenu_system_eng'; // ID of the submenu
const newBlock = `
<li id='subMenu_system_eng' class='has-sub' style="display:block">
<a>Engineering Mode</a>
<ol>
<li id="leftmenu_system_eng_general"><a onClick="return loadHTML('/system/system_eng_general.html');"><span>General</span></a></li>
<li id="leftmenu_system_eng_lte_ca"><a onClick="return loadHTML('/system/system_eng_lte_ca.html');"><span>LTE CA Info</span></a></li>
<li id="leftmenu_system_eng_rf_band"><a onClick="return loadHTML('/system/system_eng_rf_band.html');"><span>RF Band Info</span></a></li>
<li id="leftmenu_system_eng_log2device"><a onClick="return loadHTML('/system/system_eng_log2device.html');"><span>On-Device Logging</span></a></li>
<li id="leftmenu_system_eng_log_collector"><a onClick="return loadHTML('/system/system_eng_log_collector.html');"><span>Logs Collector</span></a></li>
<li id="leftmenu_system_device_tr069"><a onClick="return loadHTML('/system/system_device_tr069.html');"><span>TR-069</span></a></li>
</ol>
</li>`;
const observer = new MutationObserver(() => {
const targetElement = document.getElementById(targetID);
if (targetElement) {
const ul = targetElement.querySelector('ul');
if (ul && !document.getElementById(submenuID)) {
ul.insertAdjacentHTML('beforeend', newBlock);
}
}
});
observer.observe(document.body, { childList: true, subtree: true });
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment