Qnap Control-Center GUI (my Python App)

  • Hello Leute,

    ansich hab ich das nur für mich gemacht, aber ich dachte es schadet nicht das andere es auch nutzen können.

    Aber ich bin damit eigentlich noch nicht fertig, integrieren möchte ich noch so einiges

    Falls wer direkt unter Windows über python 3.14.3, sein NAS in einer GUI app kontrollieren möchte kann gern meine App testen, es kommt noch einiges dazu, es steht noch im Anfang.

    zur Info, ich hab nicht vor NASes zu unterstützen welches nicht für den 473A auf Hero Firmware gemacht sind da dies wirklich nur für Eigengebrauch ansich war.

    Aber eigentlich dürfte es trotzdem die meisten unterstützen wenn die Firmware nicht komplett anders aufgebaut ist.

    Nachdem ich mit meine Ideen fertig bin, würde mich interessieren was ihr für Vorschläge habts? und würde mich freuen falls es wem nützlich ist und esd wirklich nutzt, falls es wo probleme gibt es mir zu melden

    es ist nämlich einiges noch ungetestet


    Morgen gibt es ein größeres update, besonders was das installieren von qpkgs angeht, die gui wird auch etwas schlanker, zumindest der obere Connection teil


    Python 3.14.3 ist Pflicht

    und die app einfach von der commandline mit python main.py starten, ich werd aber ein starterscript noch erstellen, da mich das nervt

    aber vorher diese dependencies installieren:

    pip install PyQT6 paramiko


    greets



    Hier die derzeitige feature liste, aber wurde nicht alles getestet:

    ### Dashboard

    - Dashboard cards for:

    - Hostname

    - Firmware / config version

    - Uptime

    - CPU temperature

    - System temperature

    - Memory overview

    - Tabbed detail panes for:

    - Disks

    - RAID

    - Network

    - Raw output


    ### Connection / SSH

    - Compact collapsible connection panel

    - SSH host, port, username, password, and key support

    - Paramiko-based SSH execution

    - Optional Windows launcher support for:

    - PuTTY

    - KiTTY (which may be get removed when dont find any useful interaction with it)

    - Auto refresh option for dashboard polling

    - Settings persistence via local config storage

    - Password is by default NOT stored


    ### Access / Services

    - Read current access-related NAS settings

    - Edit and write:

    - SSH enable/disable

    - SSH port

    - Telnet enable/disable

    - Telnet port

    - SFTP enable/disable

    - Read-only display of web-related values such as HTTP/HTTPS ports

    - Raw diagnostic output pane for verification


    ### Processes

    - Process table with filtering

    - Selected-process overview/details

    - Terminate selected process

    - Force kill selected process


    ### Tools

    - Quick output pages for:

    - CPU info

    - Memory info

    - Filesystems

    - Network

    - RAID

    - Crontab

    - Top snapshot

    - Installed apps

    - Quick navigation shortcut into QPKG Install


    ### Crontab

    - Structured cron job table

    - Add / edit / duplicate / enable-disable / delete cron jobs

    - Raw `/etc/config/crontab` editing

    - Parse raw → table

    - Rebuild table → raw

    - Save back to NAS

    - Backup old crontab before apply

    - Reload cron using:

    - `crontab /etc/config/crontab`

    - `crond` restart


    ### Installed Apps

    - Parse installed apps from `/etc/config/qpkg.conf`

    - App table with:

    - name

    - display name

    - version

    - status

    - enabled state

    - date

    - install path

    - App details panel:

    - overview logoutput

    - raw entry logoutput

    - script inspector log output

    - uninstall dry-run log output

    - Right-click context menu with capability-aware actions

    - Actions include:

    - start

    - stop

    - restart

    - enable

    - disable

    - inspect script

    - uninstall/ dry-run

    - System-app aware safeguards

    - Per-app capability cache with TTL and manual clearing


    ### QPKG Install

    - Local `.qpkg` file selection

    - Local preflight analysis:

    - file name

    - size

    - SHA-256

    - suffix

    - extracted metadata when available

    - stub/header preview

    - SFTP upload to NAS

    - Upload only

    - Upload + install

    - Install already uploaded package

    - Install from URL

    - Install method selection

    - Optional flags for qpkg install

    - Post-install verification by comparing app registration before/after

    - Optional cleanup of uploaded package after successful install

    - Optional jump to Installed Apps after successful install


    ### Console

    - Run custom SSH commands directly

    - Output shown inside the app console pane


    ### Power

    - Sleep

    - Reboot

    - Shutdown


    Kann sein das noch etwas fehlt, aber im Grunde sind das die Basics feature die ich aufjedenfall wollte.


    FALLS WER EINE TOP IDEE HAT DIE UNBEDINGT DABEI SEIN SOLLTE UND JEDER NUTZEN WÜRDE, WÜRDE MICH FREUEN ÜBER DIE IDEEN, AUCH WENN ICH NOCH HAUFENWEISE AM KOPF AB

  • rah84

    Hat den Titel des Themas von „my python app for Qnap NAS (473a) Control-Center GUI“ zu „Qnap Control-Center GUI (my Python App)“ geändert.
  • ein großes Update, zuviele Änderungen sie alle niederzuschreiben. Größenteils aber die UI schlanker gemacht und Install QPKG komplett refactored.

    Wenn ich mir mehr Zeit nehme mach ich Bilder von allen Seiten

    Nur mir gefällt immernoch nicht richtig die Navi und mir will keine Idee einfallen wie ich die navigation am besten ändern soll. Es ist zuviel Text vorhanden, vielleicht Emoticons in der Navigationsleiste statt Text und beim Maus hovering die Beschreibung sieht.

    Wenn aber sowieso kein Interesse besteht dann lass ichs hier lieber sein, aber zumindest ein vollwertiges Update wollt ich liefern.

    Als nächstes kommt ein Firmware page rein zum testen und updaten

    Die Dependencie zu Python 3.14.3 lässt sich leider auch nicht vermeiden.


    jetzt bin ich mit der GUI zufrieden und lade bilder hoch

    ich bin mit meine ideen eigentlich schon fast am ende

    ursprünglich kam ich auf die idee von der .bat file die man hier in der Download zone runterladen kann, Systemtool denk ich hieß er. Sonst hät ich nie damit angefangen

    PS. die zip file hab ich aber noch nicht aktualisiert. firmware check funktioniert das parsen noch nicht und update nicht angefangen.

  • Hallo,

    mir fehlte bisher die Zeit, um mir das in Ruhe anzusehen & auszuprobieren. Komme hoffentlich in Kürze dazu.

    Daumen_hoch & danke!!

    Ups, ich habe weder TS-473 noch hero.

  • Hab‘s geladen und es verbindet sich mit meinem TVS-882 unter QTS 5.2.9 build 20260214

  • Ansich müsste es für die meisten Qnap NASes funktionieren aber ich kann mich trotzdem nur an meinen Qnap orientieren.

    heute lad ich dass update hoch das das ihr in den screenshots seht, also bald

    Nur das firmware check wird noch nicht funktionieren, aber sonst dürfte alles soweit ich weiß funktionieren, aber sollte jemand bugs finden oder Vorschläge dann bitte :)

    Auch wenn es meiner meinung vielleicht unnötig ist, ihr könnt danach die styles der app selber ändern, im app/ui/styles


    Okay hier das Update, versionnr instressiert mich ehrlichgesagt nicht, da es bloß für mich gedacht wa aber vielleicht ändere ich kleinigkeiten für public

    es existiert jetzt auch eine Start App.bat, so muss man nicht immer commandline öffnen sondern einfach doubleclick und die App öffnet sich


    PS. die legacy probe dient um zu sehen ob im NAS das eine oder andere file existiert, falls die alle existieren dann mit ein wenig Glück sollte die App funktionieren.

    Aber ich muss noch den Kompatibilätscheck erweitern

    Und ein Icon für die App wär nicht schlecht

    Für jeden Vorschlag bin ich offen

    Und falls wer commands kennt um die ein odere andere Einstellungen ändern zu können, zB die von der Systemsteuerung und Netzwerkeinstellungen bitte mir schreiben, das würde einiges erleichtern


    Ich hab es schon zum Teil die Access Page erweitert


    edit. ich war schon verzweifelt, aber Firmware check/refresh funktioniert endlich, jetzt kann ich upgrade integrieren.

    aber die zip hat noch den firmware bug


    Ich hab die zip upgedated, firmware page sollte jetzt funktionieren, incl update, aber das update muss man sich runterladen, die cli tut das leider nicht automatisch wie wenn man es direkt im Qnap OS macht

    die Access page hab ich noch was hinzugefügt, ich möcht noch einiges supporten aber muss erst checken welche files für was verantwortlich sind.

    User account managment möcht ich auch adden aber das wird wahrscheinlich nicht machbar sein

    Außerdem kann man jetzt den NAS Pfad bequem per browse button browsen


    EDIT2: Ich habe die Legacy Probe jetzt erweitert, wenn bei euch alles gut rennt dann dürfte die App auf euren NAS auch komplett funktionieren.

    Einfach auf Legacy Probe und mit dem Button den Test durchführen, ihr seht dann ein haufen an Output

    Wenn etwas MISS ist, dann dürfte etwas nicht funktionieren

    die WARN meldungen wie

    Code
    [WARN] /proc/mdstat (exists, not executable)
    [WARN] /proc/uptime (exists, not executable)

    könnt ihr ignorieren

    Das hier übringends auch ->

    Code
    [MISS] /etc/version_info

    Wichtig ist das:


    Wobei ich es noch weiter erweitern muss ^^

  • Und falls wer commands kennt um die ein odere andere Einstellungen ändern zu können, zB die von der Systemsteuerung und Netzwerkeinstellungen bitte mir schreiben, das würde einiges erleichtern
    [..]

    User account managment möcht ich auch adden aber das wird wahrscheinlich nicht machbar sein.

    Es gibt zahlreiche qcli_* Befehle, u.a. für User, Gruppen, Volumes, Shares, SMB, Netzwerk usw.

    • qcli -h listet die möglichen Befehle,
    • qcli_* -h listet die möglichen Optionen,
    • qcli_* <-option> -h listet die Parameter für eine Option.

    Es lassen sich nicht immer alle Einstellungen der GUI bearbeiten, aber doch so einiges.

    Lässt sich praktisch in Skripten nutzen, wenn man ein oder mehrere Systeme reproduzierbar einrichten & dokumentieren will, ohne zig Screenshots zu machen.


    Nicht so konsequent & strukturiert wie bei o*Wrt, aber viel besser als alles selber skripten.

  • Thanks for Info, ansich weiß ich das aber

    ich möcht aufjedenfall sogut es geht eine komplette Systemsteuerung bauen welches das direkte managment im NAS ersetzen soll.

    Ja die qcli befehle sind da natürlich ein muss für einiges.

    Nur das problem ist, ich weiß das Configs lesen anders geht und keinen zusätzliches zweites login per qcli braucht was zu problemen führen kann, welches die Firmware page hat, zumindest ich kann nur als admin die cli dafür verwenden, auch wenn mein eigener username admin rechte hat.

    die ganzen configs die in der App sind werden auch nicht mit qcli ausgelesen außer Firmware, aber auch davor die standard methode. Ich bei mir nämlich ein Mismatch erkannt, v6.0 Hero wird als v5.2.0 Hero erkannt bei der default methode, weil qnap wohl noch aus irgendeinem Grund uvlinux nicht upgedated hat

    Außerdem mit qcli lesen ist nicht grad die beste und schnellste methode.

    Dazu gibt es direkte befehle wie getcfg QWEB "SSL_Port" bzw setcfg QWEB "SSL_Port"


    Danke für dein gut gemeinten Input!

  • Ups, stimmt, das hatte ich vergessen, die hatte ich nur eben auf die schnelle erstellt., das einfachste ist wie hier unten, aber ich kann aber nicht bei jedem davon ausgehen das derjenige beim installieren von Py PATH angeklickt hat:

    Code
    @echo off
    setlocal
    cd /d "%~dp0"
    pyw -3.14 launch.pyw

    Falls wer irgendeine Idee hat die man schnell umsetzen könnte und nützlich ist,

    Ansonsten konzentrier ich mich um größere Updates die mehr Zeit in Anspruch nimmt. Mir ist so einiges wieder eingefallen.

    User control, so eine Art Filestation wie im Qnap aber ich weiß noch nicht genau wie, div. docker features bis hin vielleicht zu einer neuen GUI, qpkg files suchen im internet und ua...

    Einmal editiert, zuletzt von rah84 ()

  • Naja, wenn wir schon bei „wünsch Dir was sind: Etwas zu virsh würde mir gefallen. Zur Zeit geht es, aber ab und an ist die VS-Oberfläche träge und unflexibel. Beispielsweise hatte ich mir mal ein einfaches Skript geschrieben, um vier oder fünf USB-Geräte durchzuschleusen an eine spezielle VM. Ist wesentlich schneller als sich dafür durch die Menüs zu klicken.


    Aber ich gebe gleich zu: Ich habe Dein Tool bis jetzt nur oberflächlich mal durchgeschaut und weiß gar nicht, was da noch drin steckt. Gibt’s schon sowas, dass ich meine Skripte in einem bestimmten Verzeichnis einfach per Klick starte?

  • Ich hab die App hauptsächlich um auf die schnelle diverses tun kann anstatt ins Qnap OS im browser einloggen zu müssen

    Da steckt ganz schön viel Arbeit darin, wenn ein anderer es mit dem Ziel hat auch zu veröffentlichen der würde sicher Geld dafür verlangen

    Wenn es hier die App nicht interessiert dann ist das völlig Okay, ich hatte gar nicht vor es public zu machen aber dachte weil es sowas im Netz auch nirgendwo gibt soweit ich weiß zumindest gäbe Interesse.

    Ich werd die App immer größer machen. Ich denk eigentlich das ich es vorher aber auf c++ portiere nur ich weiß icht ob ich mir die Arbeit mach...hat zwar nur Vorteile aber das wär schon ein großer Job.


    Was dein "Script" angeht, du meinst doch ein Crontab Job oder nicht? Ich wüsste sonst nicht was du meinst, nur das wär schon lange integriert falls du das meinst. Ich selber habs zwar noch nicht getestet, müsste aber funktionieren.

    ein integrierter ssh browser wäre vielleicht sinnvol denk ich mir grad,

    zur Info: kitty, putty.exe hat derzeit keine Verwendung, bzw ist nicht integriert, hat also keinen SInn einen Pfad einzugeben den es läuft mit Paramiko

    3 Mal editiert, zuletzt von rah84 ()

  • Klar, ich habe Hochachtung vor Leuten, die solche Sachen auch allgemein bereit stellen ohne gleich an Profit zu denken. Daher mache ich auch gerne mal einen Versuch, ob es dann auch bei mir läuft - egal, ob ich es künftig wirklich nutze.

    Ich meine keinen Cronjob sondern ein enfaches Shellskript, das ich bisher benen über die Console aufrufe, wenn ich die bewusste VM mal neu starte, um dann beispielsweise Maus und Tastatur sowie den Bluetooth-Dongel einzubinden - später mal testweise vielleicht eine TV-Karte. Ein Cronjob wäre hier falsch.

    Es war mehr so eine spontane Idee, die sich beim Schreiben des Posts entwickelt hat: Mir viel ein, dass ich eben öfters versucht habe gewisse virsh-Befehele über die Konsole einzugeben, wenn mal wieder die QNAP-VM-Oberfläche in einer FW-Version nicht reagierte. Dann fiel mir als Beispiel eben die Sache mit den USB-Verbindungen ein, was dann wiederrum bedingt durch mein bisheriges Vorgehen dazu leitete, etwas für Shellskripte allgemein zu haben.

    Zwischenzeitlich habe ich gesehen, dass Du soawas im Grunde schon hast mit Shell. Dort gebe ich ein z.B für den beschriebenen Fall für mein Skript:
    /share/Web/autorun/mount_VS.sh
    und es macht schon das, was ich wollte.

  • Achso okay.

    Ja so kann man sh skripte natürlich auch ausführen.

    Wenn du für das so eine tiny GUI haben willst kann ich dir auch gern schnell eins erstellen, das ist schnell gemacht. Falls du so eine Vorstellung hast wie es aussehen soll mit vielleicht kleine Helpers wie file upload kannst du es auch erwähnen. Wäre natürlich für alle gedacht.

    Meine Shell page möchte ich sowieso auch erweitern

  • der Weg über shell bedingt halt, dass ich mir merken muss, wo meine Skripte liegen und wie sie konkret heißen. Genau das ist aber nicht immer gegeben. Dann muss ich (wie heute morgen) doch erst wieder per Konsole suchen. Daher könnte ich mir - um es allgemein zu halte - einen Schalter "Skripte" vorstellen, der auf eine Oberfläche führt, in der man einmal seinen Standardphad angeben kann (bei mir eben /share/Web/autorun - bitte nicht irritieren lassen, ist historisch bedingt und hat weder was mit Web noch mit autorun zu tun). Dort klickt man auf "list" und bekommt alle Files in diesem Verzeichnis, evtl. sinnvollerweise begrenzt auf die *.sh., mit + kann man welche dazufügen, mit run dann das gewählte ausführen.


    Wäre das ein brauchbarer Ansatz "für alle"?

  • Der derzeitige filemanager

    auch ein Button for Run .sh file ;)

    Und mit "list" da bist du denk ich ein spezial fall,...aber das lässt sich auch gut mit Favoriten lösen welches du im screenshot siehst oder hab ichs nicht ganz verstanden?

    Ich könnte eigentlich den filemanager allein extrahieren für eine mini GUI auch....

    Ich hab außerdem auf Asyncssh umgestellt, das ist deutlich performanter

  • No den gibts da noch garnicht, ich bin mir auch nicht sicher ob ich uploaden soll.

    Ich will nicht meine files hochladen wenn keiner sie nutzt. Ein anderer kann damit Geld machen, da steckt sehr viel Arbeit dahinter, glaub mir...

    Wenn du allein Interesse hast kannst du mir eine PN schreiben aber nur wenn du es nicht veröffentlichst

    Aber ich bin noch am basteln, morgen mach ich Pause

  • Klar, kann ich verstehen. Aber jetzt hast Du mir den Mund wässrig gemacht. Aber auch ich muss mich jetzt zurückhalten und anderweitigen Verpflichtungen nachkommen - Familie wartet. Bastel einfach mal weiter, ich kann auch nicht immer sofort neue Dinge probieren.

  • Klar kann ich auch verstehen, ich hab Zuviel Zeit, Ich muss mich dauernd ablenken. Schlafen tu ich kaum noch. Vor kurzem ein Suizid versuch aber stattdessen hab ich jetzt davon ne fette psychose.

    Deswegen arbeite ich ansich die ganze Zeit, ich wüsste sonst nicht was wieder passiert wenn ich mich nicht ablenke.

    Naja für sowas bin ich hier komplett falsch, aber ich musste es grad schreiben

  • Ich habe vor einigen Monaten ganz neu angefangen, etwas mit Python zu programmieren. Sonst hatte ich vor über 25 Jahren letztmals Fortran programmiert und danach vieles mit Waterloo Maple oder das eine oder andere ganz einfache mit Visual Basic. Letzteres muss ich zugeben, war eigentlich nur mit Excel als Macro aufgezeichnet und dann angepasst. Und auch Python mache ich nicht wirklich selber, ich beschreibe, was ich habe und was ich will und lass dann die KI walten.