- Mitglied seit
- 15. Mai 2008
- Beiträge
- 21.900
- Punkte für Reaktionen
- 14
- Punkte
- 0
Ein paar Hintergrundinformationen zum AdminTool.
Das AdminTool ist wie der DiskStation-Manager eine AJAX-Anwendung, welche intensiv von der ExtJS-Bibliothek Gebrauch macht. Eine AJAX-Anwendung arbeitet nach dem ersten Laden asynchron im Hintergrund mit dem Web-Server zusammen und lädt bei Bedarf Daten nach und bereitet sie via JavaScript und CSS darstellungstechnisch auf.
Im AdminTool werden alle Skripte (.css und .js) zentral in der Datei adm.html eingebunden.
Die Funktionen des AdminTools liegen im Unterverzeichnis modules. In der Datei menu.conf (JSON-Format) werden Menüstruktur und Modulname miteinander verknüpft. Die JavaScript-Steuerdatei adm.js liest die menu.conf ein und versucht dann die Modulnamen den Menüeinträgen zuzuordnen. Die Module sind (javatechnisch gesprochen) Objekte, welche die extJS-Klassen in der Datei adm.js erweitern.
Immer dann, wenn betriebssystemnahe Daten oder Datenbanken als Zulieferer für das AdminTool benötigt werden, werden über AJAX-Aufrufe PHP-Skripte gestartet. Diese haben auf dem sys-Apache die Ausführungsrechte des (Linux-)Benutzers 'root' und dürfen so ziemlich alles auf der DiskStation anstellen. (Deswegen sollte man sich auch immer im Klaren darüber sein, was man mit dem AdminTool treibt.) Diese Freizügigkeit des sys-Apache wird durch die Aktivierung des Pakets Init_3rdparty.spk erzeugt. Hier werden die folgenden PHP-Eigenschaften eingestellt:
Das AdminTool arbeitet also typischer Weise so, dass es für die Aktionen und Ermittlung von Informationen per extJS-AJAX-Aufruf das PHP-Skript adm.php aufruft und diesem Skript die gewünschte Anforderung mitteilt. Das Skript adm.php führt dann mit 'root'-Rechten einen Shell-Aufruf (PHP-Funktion exec()) durch und übergibt der Shell die gewünschten Kommandos und Optionen. Die Ausgaben bzw. Ergebnisse des exec()-Aufrufs werden dem AJAX-Aufruf im Hintergrund zurückgegeben und dann im AdminTool mehr oder weniger aufbereitet angezeigt.
Das AdminTool ist wie der DiskStation-Manager eine AJAX-Anwendung, welche intensiv von der ExtJS-Bibliothek Gebrauch macht. Eine AJAX-Anwendung arbeitet nach dem ersten Laden asynchron im Hintergrund mit dem Web-Server zusammen und lädt bei Bedarf Daten nach und bereitet sie via JavaScript und CSS darstellungstechnisch auf.
Im AdminTool werden alle Skripte (.css und .js) zentral in der Datei adm.html eingebunden.
Die Funktionen des AdminTools liegen im Unterverzeichnis modules. In der Datei menu.conf (JSON-Format) werden Menüstruktur und Modulname miteinander verknüpft. Die JavaScript-Steuerdatei adm.js liest die menu.conf ein und versucht dann die Modulnamen den Menüeinträgen zuzuordnen. Die Module sind (javatechnisch gesprochen) Objekte, welche die extJS-Klassen in der Datei adm.js erweitern.
Immer dann, wenn betriebssystemnahe Daten oder Datenbanken als Zulieferer für das AdminTool benötigt werden, werden über AJAX-Aufrufe PHP-Skripte gestartet. Diese haben auf dem sys-Apache die Ausführungsrechte des (Linux-)Benutzers 'root' und dürfen so ziemlich alles auf der DiskStation anstellen. (Deswegen sollte man sich auch immer im Klaren darüber sein, was man mit dem AdminTool treibt.) Diese Freizügigkeit des sys-Apache wird durch die Aktivierung des Pakets Init_3rdparty.spk erzeugt. Hier werden die folgenden PHP-Eigenschaften eingestellt:
Rich (BBCode):
php_admin_flag safe_mode off
php_admin_value safe_mode_exec_dir none
php_admin_value safe_mode_include_dir none
php_admin_value open_basedir none
php_admin_value doc_root none
php_admin_flag allow_url_fopen on
php_admin_flag magic_quotes_gpc off
Das AdminTool arbeitet also typischer Weise so, dass es für die Aktionen und Ermittlung von Informationen per extJS-AJAX-Aufruf das PHP-Skript adm.php aufruft und diesem Skript die gewünschte Anforderung mitteilt. Das Skript adm.php führt dann mit 'root'-Rechten einen Shell-Aufruf (PHP-Funktion exec()) durch und übergibt der Shell die gewünschten Kommandos und Optionen. Die Ausgaben bzw. Ergebnisse des exec()-Aufrufs werden dem AJAX-Aufruf im Hintergrund zurückgegeben und dann im AdminTool mehr oder weniger aufbereitet angezeigt.
Zuletzt bearbeitet: