Skip to main content
Vraag

Zit er bij de SuperWifi 1 software een API waardoor ik portforward regels aan of uit kan zetten via scripting?

  • 20 februari 2025
  • 2 reacties
  • 41 keer bekeken

Ik ben een van de gelukkigen waarbij gisteren de nieuwe software is uitgerold(superwifi 1 punten) en ik ben erg blij met de snelheid van de nieuwe web interface.

Nu vroeg ik me af of er bij deze software een API is waardoor ik port forward rules uit of aan kan zetten via scripting?
Ik wil namelijk een webserver van me niet bereikbaar hebben als ik hem niet gebruik, maar wil hem wel op afstand bereikbaar kunnen maken indien nodig.
Ik kan met ssh naar mijn eigen server en zou daar graag een script aftrappen om een setting te toggelen maar is hier ondersteuning voor?

2 reacties

  • 3486 reacties
  • 20 februari 2025

Nee dat kan niet. 


  • Auteur
  • Deelnemer
  • 6 reacties
  • 20 februari 2025
Marlon92 schreef:

Nee dat kan niet.

 

Helaas. Dank je


  • Auteur
  • Deelnemer
  • 6 reacties
  • 21 februari 2025

​@Marlon92 

Na een halve nacht prutsen ben ik erachter dat er in ieder geval wel wat op te halen valt met scripting:

 

import requests

BASE_URL = "http://192.168.2.254/ws/NeMo/Intf/lan:getMIBs"
USERNAME = "admin"
PASSWORD = "jouw-modem-admin-password"

headers = {
    "Content-Type": "application/x-sah-ws-4-call+json",
    "Authorization": "X-Sah-Login"
}

payload = {
    "service": "sah.Device.Information",
    "method": "createContext",
    "parameters": {
        "applicationName": "webui",
        "username": USERNAME,
        "password": PASSWORD
    }
}

session = requests.Session()
response = session.post(BASE_URL, json=payload, headers=headers)

if response.status_code == 200:
    data = response.json()
    if "errors" in data:
        print("Login mislukt:", data["errors"])
    else:
        context_id = data.get("data", {}).get("contextID")
        if context_id:
            print("Login gelukt!")
            session.headers.update({"X-Context": context_id})
        else:
            print("Geen context ID ontvangen.")
else:
    print(f"HTTP error {response.status_code}: {response.text}")


### We nemen even aan dat we een context_id hebben hier

headers = {
    "Content-Type": "application/x-sah-ws-4-call+json",
    "Authorization": f"X-Sah {context_id}",
    "X-Context": context_id
}

payload = {
    "service": "DeviceInfo",
    "method": "get",
    "parameters": ""
}

response = requests.post(BASE_URL, json=payload, headers=headers)

if response.status_code == 200:
    print("Response:", response.json())
else:
    print(f"HTTP error {response.status_code}: {response.text}")


Hiermee krijg ik in ieder geval dit terug(serialnumber en mac address even aangepast om hier te delen):

 

Login gelukt!
Response: {'status': {'ProductClass': 'F1234s', 'SerialNumber': 'LK12345ME123456', 'SoftwareVersion': 'V12.C.24.05.08', 'AdditionalSoftwareVersion': '', 'BaseMAC': 'xx:xx:xx:xx:xx:xx'}}


Ik zal er nog wat dieper in moeten duiken of er ook settings ingesteld(ipv opgehaald) kunnen worden maar misschien is dat dus ook wel mogelijk.


Reageer