Thema geschlossen
Ergebnis 1 bis 8 von 8

Thema: AdminTool Usage Notes

  1. #1
    Moderator Syno-Gott Avatar von itari
    Registriert seit
    15.05.2008
    Beiträge
    21.956
    Blog-Einträge
    25

    Standard AdminTool Usage Notes

    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:
    Code:
    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.
    Geändert von itari (12.04.2010 um 08:22 Uhr)
    207+ Basic(2x500) [1618] | 509+ Basic(1x500,4x2000) [2166] | 2411+ Basic-SSD(50), Raid-5(4x2000), SHR(3x750+1x1000+2x1500) [2166]

    Synology-Kontakt-Formular
    Come to the dark side, we have cookies!

  2. #2
    Moderator Syno-Gott Avatar von itari
    Registriert seit
    15.05.2008
    Beiträge
    21.956
    Blog-Einträge
    25

    Standard

    Man kann recht einfach das AdminTool erweitern:

    Schritt 1:
    Man legt eine neues Unterverzeichnis im Verzeichnis modules an. Bei der Vergabe des Verzeichnisnamens gilt bei mir das Grundparadigma 'Convention Over Configuration", d. h. der Verzeichnisname muss so heißen, wie das Modul selbst. Der Modulname darf nur aus großen und keinen Buchstaben bestehen. Also z. B.

    [/volume1/@appstore/] adm/modules/myModule

    [Ich habe mal den Pfad dazu geschrieben, wenn man es auf der Kommandozeile finden müsste. In dem 'AdminTool Configuration' fällt ja der erste Teil des Pfades fort.]

    Schritt 2:
    Man legt eine JavaScript-Datei mit dem Namen des Moduls in dem unter 1] angelegten Unterverzeichnis an. Also z. B.

    [/volume1/@appstore/] adm/modules/myModule/myModule.js

    Die Datei enthält das Modul-Objekt und die Integration in die aufrufende Klasse:

    Code:
    var myModule = { 
      id:'myModule', title:'Meine selbstgemachte Funktion',
      ...
      }
    
    contentPanel.items = contentPanel.items.concat(myModule);
    Schritt 3:
    Damit die Datei myModule.js auch dem AdminTool zugänglich ist, muss die Java-Script-Datei in die adm.html aufgenommen werden (wenn man sich sich die adm.html anschaut, sieht man das dann schon, welche Stelle gemeint ist):

    Code:
    <script type="text/javascript" src="modules/myModule/myModule.js"></script>
    Schritt 4:
    Nun muss noch der Menü-Eintrag als JSON-Zeile in der menu.conf vorgenommen werden; das Attibut 'id' stellt die Verbidung zwischen dem Menü-Text 'Meine selbstgemachte Funktion' und dem Objekt 'myModule' her:

    Code:
    {text:"Meine selbstgemachte Funktion", id:"myModule", icon:"icons/my_best_icon.png", leaf:true, qtip:"myModule_0_1"}
    Wer möchte, kann es sich ja im AdminTool selbst über die Funktion 'AdminTool Configuration' anschauen, wie das mit den bisherigen Modulen so gemacht wurde. Und keine Sorge, es kommt demnächst ein kleines Beispiel zum Selbermachen.

    Installations-Automat:
    Die Schritte 1, 3 und 4 kann man bei geeignete Vorbereitungsarbeiten automatisieren. Dies ist bereits in der Funktion 'AdminTool Configuration' enthalten. Man kann eine zip-Datei (in der die js-Datei des Modul enthalten ist plus der Menü-Konfigurations-Zeile) auf diesem Weg hochladen und installieren. Damit man zwischen verschiedenen Versionen eines Moduls unterscheiden kann, sind allerdings noch weitere Namenskonventionen einzuhalten. Auf diese Weise könnte man auch alle (bisherigen) Module auf neue Versionsstände bringen.

    Soviel erst einmal für jetzt. Damit der Thread hier jetzt nicht auseinandergerissen wird, bitte Fragen und Diskussionsbeitrage hier führen: http://www.synology-forum.de/showthread.html?t=10968
    Geändert von itari (13.04.2010 um 14:47 Uhr)
    207+ Basic(2x500) [1618] | 509+ Basic(1x500,4x2000) [2166] | 2411+ Basic-SSD(50), Raid-5(4x2000), SHR(3x750+1x1000+2x1500) [2166]

    Synology-Kontakt-Formular
    Come to the dark side, we have cookies!

  3. #3
    Moderator Syno-Gott Avatar von itari
    Registriert seit
    15.05.2008
    Beiträge
    21.956
    Blog-Einträge
    25

    Standard

    Verfeinerung des Schritt 2:

    Ziel wäre es, das Kommando /sbin/blockdev für das 1. Laufwerk auszuführen. In einem Shell-Fenster würde das so aussehen:

    Code:
    Synology> /sbin/blockdev --report /dev/sda
    RO    RA   SSZ   BSZ   StartSec     Size    Device
    rw   256   512  4096          0  976773168  /dev/sda
    Unsere Datei myModule.js würde dies wie folgt nutzen:
    Code:
    var myModule = {
      id:'myModule', title:'Meine selbstgemachte Funktion',
      //
      // ein Panel ist eine Anzeigefläche, die Inhalte oder weitere Unterelemente enthalten kann  
      xtype:'panel',
      //
      // der zur Anzeige verwendete Zeichen-Style
      style:{fontFamily:'Monospace'},
      //
      // ob bei einem Overflow der Anzeigefläche auch ein Scrollbalken erscheinen soll
      autoScroll:true,
      //
      // Abstand der Anzeigen innerhalb der Anzeigefläche
      padding:'0 5 5 5',
      //
      // AJAX-Aufruf der URL adm.php mit der Übergabe des Parameters 'cmd'
      autoLoad:{url:'adm.php', params:{cmd:'/sbin/blockdev --report /dev/sda'}},
      //
      // Einblendung eines 'refresh'-Button im Panel-Rahmen oben rechts
      tools:[{id:'refresh', qtip:'re-read', 
              handler:function(event, toolEl, panel, tc){panel.load(panel.autoLoad)}}]
    }
    
    contentPanel.items = contentPanel.items.concat(myModule);
    Angehängte Grafiken
    Geändert von itari (12.04.2010 um 13:54 Uhr)
    207+ Basic(2x500) [1618] | 509+ Basic(1x500,4x2000) [2166] | 2411+ Basic-SSD(50), Raid-5(4x2000), SHR(3x750+1x1000+2x1500) [2166]

    Synology-Kontakt-Formular
    Come to the dark side, we have cookies!

  4. #4
    Moderator Syno-Gott Avatar von itari
    Registriert seit
    15.05.2008
    Beiträge
    21.956
    Blog-Einträge
    25

    Standard

    Installations-Automat

    Wie kann man nun die Installation von Modulen vereinfachen?

    1. Schritt:
    Anfertigen einer .zip-Datei, die neben der in Schritt 2 angefertigen JavaScript-Datei mit dem Modul-Objekt auch noch mindestens eine Menü-Konfigurations-Datei enthält.

    Auch hier gelten wieder Namenskonventionen: die Menü-Konfigurations-Datei für das Modul myModule heißt myModule_menu.conf und enthält (vergleiche Schritt 3):

    Code:
    ,{text:"Meine selbstgemachte Funktion", id:"myModule", leaf:true, icon:"icons/eye.png", qtip:"myModule_0_1"}
    ] // %fin%
    Einfach jetzt die beiden Dateien myModule.js und myModule_menu.conf zippen (ohne Pfade) zur myModule_0_1.zip (wenn es sich um die Version 0_1 handeln soll). Ein Muster dieser zip-Datei hängt anbei.

    2. Schritt:

    Klicken des Upload-Buttons und Auswahl der Datei myModule_0_1.zip (siehe Bild 1) Jetzt wird das Verzeichnis für das Modul angelegt, die zip-Datei entpackt und die beiden Dateien adm.html und menu.conf mit den neuen Modul-Informationen angereichert. Wenn die Nachricht ' ' erscheint, dann ist der Installations-Vorgang (hoffentlich) erfolgreich abgeschlossen worden (Bild 2).

    3. Schritt:

    Kontrolle via AdminTool configuration der beiden Dateien adm.html und menu.conf, ob auch jeweile eine Zeile zu myModule existiert (siehe Bild 3 und 4)

    Bitte den Installations-Automat erst ab Version 0.91 verwenden.

    Itari

    .
    Angehängte Grafiken
    Angehängte Dateien
    207+ Basic(2x500) [1618] | 509+ Basic(1x500,4x2000) [2166] | 2411+ Basic-SSD(50), Raid-5(4x2000), SHR(3x750+1x1000+2x1500) [2166]

    Synology-Kontakt-Formular
    Come to the dark side, we have cookies!

  5. #5
    Moderator Syno-Gott Avatar von itari
    Registriert seit
    15.05.2008
    Beiträge
    21.956
    Blog-Einträge
    25

    Standard

    Wie kann man den Funktionsumfang des AdminTools reduzieren? Also zum Beispiel nur die Panels für den 'Cron', den 'Explorer' und die 'AdminTool configuration' verwenden (siehe Bild 1).

    Ganz einfach. Man nimmt alle Menü-Einträge bis auf die 3 heraus (siehe Bild 2):

    Code:
    [{text:"Cron", id:"cron", leaf:true, icon:"icons/alarm.png", qtip:"cron_0_1"}
    ,{text:"Explorer", id:"explorer", leaf:true, icon:"icons/explorer.png", qtip:"explorer_0_3"}
    ,{text:"AdminTool Configuration", id:"admintoolconfig", leaf:true, icon:"icons/hammer_screwdriver.png", qtip:"admintoolconfig_0_1"}
    ] // %fin%
    Wer möchte, kann zusätzlich in der Datei adm.html die Funktionen auskommentieren, die man nicht haben möchte:

    Code:
        <!-- modules_intro -->
    <!--
        <script type="text/javascript" src="modules/myModule/myModule.js"></script>
        <script type="text/javascript" src="modules/systemTopic/systemTopic.js"></script>
        <script type="text/javascript" src="modules/cpuinfo/cpuinfo.js"></script>
        <script type="text/javascript" src="modules/memory/memory.js"></script> 
        <script type="text/javascript" src="modules/flashmemory/flashmemory.js"></script>
        <script type="text/javascript" src="modules/linux/linux.js"></script>
        <script type="text/javascript" src="modules/ipkg/ipkg.js"></script>
        <script type="text/javascript" src="modules/user/user.js"></script>
        <script type="text/javascript" src="modules/processes/processes.js"></script>
        <script type="text/javascript" src="modules/daemons/daemons.js"></script>
    -->
        <script type="text/javascript" src="modules/cron/cron.js"></script>
    <!--
        <script type="text/javascript" src="modules/syslog/syslog.js"></script>
        <script type="text/javascript" src="modules/sysstats/sysstats.js"></script>  
        <script type="text/javascript" src="modules/disksTopic/disksTopic.js"></script>
        <script type="text/javascript" src="modules/devices/devices.js"></script>
        <script type="text/javascript" src="modules/partitions/partitions.js"></script>
    ...
    Itari

    .
    Angehängte Grafiken
    207+ Basic(2x500) [1618] | 509+ Basic(1x500,4x2000) [2166] | 2411+ Basic-SSD(50), Raid-5(4x2000), SHR(3x750+1x1000+2x1500) [2166]

    Synology-Kontakt-Formular
    Come to the dark side, we have cookies!

  6. #6
    Moderator Syno-Gott Avatar von itari
    Registriert seit
    15.05.2008
    Beiträge
    21.956
    Blog-Einträge
    25

    Standard

    Im DS-Manager lassen sich einige Dinge zum Gebrauch des DS-Managers einstellen. Die Einstellungen werden in den folgenden Dateien gespeichert:

    - "Benutzeranpassung" des Menüs -> /usr/syno/etc/webman.cfg
    - "Überspringen Sie den Desktop und gehen Sie nach der Anmeldung direkt zur Anwendung" -> /usr/syno/etc/webman.cfg
    - "Meine Favoriten" im DS-Manager -> /usr/syno/etc/webman.cfg
    - "Optionen" des DS-Managers (z.B. Mini-Header) -> /etc/synoinfo.conf
    - "Berechtigungen"->"Anwendungseinstellungen" -> /etc/synouser.conf

    Im AdminTool kann man diese Einstellungen sehen und ggf. anpassen im Panel: Firmware->Configuration.

    Itari

    PS. Ab der Version 0.95b ist auch die Datei '/usr/syno/etc/webman.cfg' dabei.
    .
    Angehängte Grafiken
    207+ Basic(2x500) [1618] | 509+ Basic(1x500,4x2000) [2166] | 2411+ Basic-SSD(50), Raid-5(4x2000), SHR(3x750+1x1000+2x1500) [2166]

    Synology-Kontakt-Formular
    Come to the dark side, we have cookies!

  7. #7
    Moderator Syno-Gott Avatar von itari
    Registriert seit
    15.05.2008
    Beiträge
    21.956
    Blog-Einträge
    25

    Standard

    Ein Beitrag hier im Forum zum Thema 'Wie kann ich die DS-Manager Protokolle vermailen?' liegt diesem Beitrag hier zu Grunde.

    Im AdminTool werden es an verschiedenen Stellen Server-Abfragen per PHP-Skript oder cgi-Skript gestellt und als JSON-Stream dem AdminTool Frontend zugespielt. Natürlich kann man diese Server-Abfragen auch ohne das AdminTool zu verwenden, benutzen. Nun ist JSON nicht unbedingt das Format, um damit in Shellskripten sofort weiter arbeiten zu können und es ist auch nicht gerade das Lesbarste für einen Ausdruck. Einfacher wäre plain-HTML oder plain-Text.

    Meist liegen die Ergebnisse als Array im PHP-Skript vor, so dass eine veränderte Ausgabe leicht zu implementieren ist.

    Beispiel: adm/modules/logfiles/logfiles.php wird am Ende des Skriptes ergänzt (ab Version 0.96 verfügbar bzw. wenn man die Zeilen gerade kopiert, sofort ):

    PHP-Code:
    if (!isset($_REQUEST['log'])) { 
      
    $jsonresult json_encode($t);
      print 
    '{"results":'.$jsonresult.'}';
      }
    else if (
    $_REQUEST['log'] == '1'){
      
    $out='<style>td{font:10px arial}</style><table>';
      foreach(
    $t as $line) {$out.='<tr>'; foreach($line as $item$out.='<td>'.$item.'</td>'$out.='</tr>';}
      print 
    $out.'</table>';
      }
     else if (
    $_REQUEST['log'] == '2'){
      
    $out='';
      foreach(
    $t as $line) {foreach($line as $item$out.=$item.chr(9); $out.=chr(10);}
      print 
    $out;

    Im Browser könnte man mit
    Code:
    https://syno:5001/webman/3rdparty/adm/modules/logfiles/logfiles.php?file=/var/log/synosys.log&log=1
    eine einfache Tabelle des Protokolls /var/log/synosys.log erhalten.

    In der Shell könnte man mit
    Code:
    wget -O - http://localhost:5000/webman/3rdparty/adm/modules/logfiles/logfiles.php?file=/var/log/synosys.log\&log=2 2>/dev/null
    eine einfache Liste des Protokolls /var/log/synosys.log nach stdout erzeugen. Diese kann man per crontab periodisch abrufen und natürlich auch an eine Mail-Adresse mailen (ein Mail-Versender wie z. B. nail vorausgesetzt).

    Man kann also das AdminTool anzapfen und eigene Verwendungszwecke und Formate erzeugen

    Itari
    Geändert von itari (14.05.2010 um 15:49 Uhr)
    207+ Basic(2x500) [1618] | 509+ Basic(1x500,4x2000) [2166] | 2411+ Basic-SSD(50), Raid-5(4x2000), SHR(3x750+1x1000+2x1500) [2166]

    Synology-Kontakt-Formular
    Come to the dark side, we have cookies!

  8. #8
    Moderator Syno-Gott Avatar von itari
    Registriert seit
    15.05.2008
    Beiträge
    21.956
    Blog-Einträge
    25

    Standard Screencasts

    Screencast-Anleitungen lassen sich am besten anschauen, wenn man das Browser-Fenster auf die Größe von 800 x 450 Pixel einstellt. Dann ist alles super gut lesbar.

    Commands Reference
    In dem Screencast geht es darum, wie man sich über die installierten Linux-Kommandos und -Tools informieren kann. Auch wird gezeigt, wie man an Hinweise zu den Optionen und Links zum Linux-Referenz-Manual kommt.
    AdminTool -> Information -> Commands Reference

    My System Report
    Die Idee ist es, einen kleinen Systemreport zu erzeugen. Die Anleitung zeigt wie man auch zusätzliche Informationen über das System integriert. Den Report kann man ausdrucken oder per Zwischenablage auch an einen Forumsbeitrag anhängen, um so die Fehleranalyse zu vereinfachen.
    AdminTool -> Information -> My System Report

    Itari
    Geändert von itari (22.06.2010 um 06:46 Uhr)
    207+ Basic(2x500) [1618] | 509+ Basic(1x500,4x2000) [2166] | 2411+ Basic-SSD(50), Raid-5(4x2000), SHR(3x750+1x1000+2x1500) [2166]

    Synology-Kontakt-Formular
    Come to the dark side, we have cookies!

Thema geschlossen

Ähnliche Themen

  1. Release Notes
    Von Trolli im Forum Firmware 11xx
    Antworten: 0
    Letzter Beitrag: 10.03.2010, 21:04
  2. Ray Ozzie, PLATO und Lotus Notes
    Von itari im Forum Off-Topic
    Antworten: 0
    Letzter Beitrag: 07.12.2009, 09:01
  3. Release Notes 942
    Von Trolli im Forum Firmware 09xx
    Antworten: 1
    Letzter Beitrag: 18.09.2009, 12:16
  4. Release Notes und Download Link
    Von Trolli im Forum Firmware 0717 (Beta)
    Antworten: 12
    Letzter Beitrag: 17.09.2008, 09:15

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein