Automate als 3rd-party-apps

Status
Für weitere Antworten geschlossen.

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Das Teil wird noch ausgebaut, aber so als erster Wurf stell ich es mal hier rein.

Wie immer bei einer 3rd-party-apps geht alles auf eigene Kappe und muss entsprechend vorbereitet sein (siehe Link).

(1) Erstellen einer application.cfg im Verzeichnis /usr/syno/synoman/webman/3rdparty/automate mit folgendem Inhalt:

Rich (BBCode):
text = automate
description = automate
type = embedded
path = /phpsrc/automate/automate.php

(2) Erstellen einer Datei automate.php im Verzeichnis /usr/syno/synoman/phpsrc/automate mit folgendem Inhalt:

PHP:
<?php
if ($_REQUEST['action'] != '') {
  exec('echo \\'.$_REQUEST['action'].' >/dev/ttyS1');
  $_REQUEST['action'] = '';
  }
?>
<html><head><title>cms4ds</title>
<style>body,input{font:11px Verdana;}input{width:100px}</style>
<script>function $(e) {return document.getElementById(e);}</script>
</head><body>
<form id="f" name="f" action="automate.php">
<input type="hidden" id="action" name="action" value="" />
<fieldset><legend>Status LED</legend>
<input type="button" value="off" onclick="$('action').value='7';submit();">
<input type="button" value="green on" onclick="$('action').value='8';submit();">
<input type="button" value="green blink" onclick="$('action').value='9';submit();">
<input type="button" value="orange on" onclick="$('action').value=':';submit();">
<input type="button" value="orange blink" onclick="$('action').value=';';submit();">
</fieldset>
<fieldset><legend>Copy LED</legend>
<input type="button" value="off" onclick="$('action').value='B';submit();">
<input type="button" value="on" onclick="$('action').value='@';submit();">
<input type="button" value="blink" onclick="$('action').value='A';submit();">
</fieldset>
<fieldset><legend>Power LED</legend>
<input type="button" value="off" onclick="$('action').value='6';submit();">
<input type="button" value="on" onclick="$('action').value='4';submit();">
<input type="button" value="blink" onclick="$('action').value='5';submit();">
</fieldset>
<fieldset><legend>Beeper</legend>
<input type="button" value="short" onclick="$('action').value='2';submit();">
<input type="button" value="long" onclick="$('action').value='3';submit();">
</fieldset>
</form></body></html>

(3) den Disk Station Manager refreshen und rumspielen :D

itari

Das Bildchen:
 

Anhänge

  • automate.jpg
    automate.jpg
    23,5 KB · Aufrufe: 3.754

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Geiles Spielzeug :D
Das blinkt die DS ja wie ein Christbaum, echt ne super Idee

Gruss

tobi
 

Pompom

Benutzer
Mitglied seit
17. Jul 2008
Beiträge
70
Punkte für Reaktionen
0
Punkte
6
irgendwie schreibt er bei mir nur mist auf die DS
Rich (BBCode):
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /usr/syno/synoman/phpsrc/automate/automate.php on line 2

Warning: Unexpected character in input: ''' (ASCII=39) state=1 in /usr/syno/synoman/phpsrc/automate/automate.php on line 2

Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /usr/syno/synoman/phpsrc/automate/automate.php on line 2

Warning: Unexpected character in input: ''' (ASCII=39) state=1 in /usr/syno/synoman/phpsrc/automate/automate.php on line 2

Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /usr/syno/synoman/phpsrc/automate/automate.php on line 2

Warning: Unexpected character in input: ''' (ASCII=39) state=1 in /usr/syno/synoman/phpsrc/automate/automate.php on line 2

Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /usr/syno/synoman/phpsrc/automate/automate.php on line 2

Warning: Unexpected character in input: ''' (ASCII=39) state=1 in /usr/syno/synoman/phpsrc/automate/automate.php on line 2

Parse error: syntax error, unexpected ')' in /usr/syno/synoman/phpsrc/automate/automate.php on line 2

Orginal:
PHP:
<?php
if ($_REQUEST['action'] != '') {
  exec('echo \\'.$_REQUEST['action'].' >/dev/ttyS1');
  $_REQUEST['action'] = '';
  }
?>
<html><head><title>cms4ds</title>
<style>body,input{font:11px Verdana;}input{width:100px}</style>
<script>function $(e) {return document.getElementById(e);}</script>
</head><body>
<form id="f" name="f" action="automate.php">
<input type="hidden" id="action" name="action" value="" />
<fieldset><legend>Status LED</legend>
<input type="button" value="off" onclick="$('action').value='7';submit();">
<input type="button" value="green on" onclick="$('action').value='8';submit();">
<input type="button" value="green blink" onclick="$('action').value='9';submit();">
<input type="button" value="orange on" onclick="$('action').value=':';submit();">
<input type="button" value="orange blink" onclick="$('action').value=';';submit();">
</fieldset>
<fieldset><legend>Copy LED</legend>
<input type="button" value="off" onclick="$('action').value='B';submit();">
<input type="button" value="on" onclick="$('action').value='@';submit();">
<input type="button" value="blink" onclick="$('action').value='A';submit();">
</fieldset>
<fieldset><legend>Power LED</legend>
<input type="button" value="off" onclick="$('action').value='6';submit();">
<input type="button" value="on" onclick="$('action').value='4';submit();">
<input type="button" value="blink" onclick="$('action').value='5';submit();">
</fieldset>
<fieldset><legend>Beeper</legend>
<input type="button" value="short" onclick="$('action').value='2';submit();">
<input type="button" value="long" onclick="$('action').value='3';submit();">
</fieldset>
</form></body></html>
Bei mir nach dem speichen auf der DS
PHP:
<?php
if ($_REQUEST[\'action\'] != \'\') {
  exec(\'echo \\\\\'.$_REQUEST[\'action\'].\' >/dev/ttyS1\');
  $_REQUEST[\'action\'] = \'\';
  }
?>
<html><head><title>cms4ds</title>
<style>body,input{font:11px Verdana;}input{width:100px}</style>
<script>function $(e) {return document.getElementById(e);}</script>
</head><body>
<form id=\"f\" name=\"f\" action=\"automate.php\">
<input type=\"hidden\" id=\"action\" name=\"action\" value=\"\" />
<fieldset><legend>Status LED</legend>
<input type=\"button\" value=\"off\" onclick=\"$(\'action\').value=\'7\';submit();\">
<input type=\"button\" value=\"green on\" onclick=\"$(\'action\').value=\'8\';submit();\">
<input type=\"button\" value=\"green blink\" onclick=\"$(\'action\').value=\'9\';submit();\">
<input type=\"button\" value=\"orange on\" onclick=\"$(\'action\').value=\':\';submit();\">
<input type=\"button\" value=\"orange blink\" onclick=\"$(\'action\').value=\';\';submit();\">
</fieldset>
<fieldset><legend>Copy LED</legend>
<input type=\"button\" value=\"off\" onclick=\"$(\'action\').value=\'B\';submit();\">
<input type=\"button\" value=\"on\" onclick=\"$(\'action\').value=\'@\';submit();\">
<input type=\"button\" value=\"blink\" onclick=\"$(\'action\').value=\'A\';submit();\">
</fieldset>
<fieldset><legend>Power LED</legend>
<input type=\"button\" value=\"off\" onclick=\"$(\'action\').value=\'6\';submit();\">
<input type=\"button\" value=\"on\" onclick=\"$(\'action\').value=\'4\';submit();\">
<input type=\"button\" value=\"blink\" onclick=\"$(\'action\').value=\'5\';submit();\">
</fieldset>
<fieldset><legend>Beeper</legend>
<input type=\"button\" value=\"short\" onclick=\"$(\'action\').value=\'2\';submit();\">
<input type=\"button\" value=\"long\" onclick=\"$(\'action\').value=\'3\';submit();\">
</fieldset>
</form></body></html>
Ich hoffe ihr könnt mir helfen, ach so ich arbeite unter windows XP und FF 3
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
php.ini öffnen und die magic_quotes Einstellungen anschauen. So wie es scheint fügt dein Server bei gewissen Zeichen (z.B. ' und ") zu seinem eigenen Schutz Backslashes ein. Diese Einstellung sollte aber abgeschaltet sein ODER du passt den PHP Code an und lässt vor dem Einfügen des Quelltextes in die Files noch ein stripslashes() drüber. Ich würde dir aber das Deaktivieren der Magic Quotes empfehlen, da diese bei der nächsten PHP Version (6) eh rausfliegen werden (spätestens dann müsstest du den Code wieder anpassen)

Gruss

tobi
 

Pompom

Benutzer
Mitglied seit
17. Jul 2008
Beiträge
70
Punkte für Reaktionen
0
Punkte
6
Danke jahlives,

jetzt klapptes :)

Gruß Pompom
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
noch ein bisschen mehr ...

Rich (BBCode):
<?php
if ($_REQUEST['action'] != '') {
  if ($_REQUEST['action'] == 'print') exec('echo -e "TESTPAGE\f" >/dev/usb/lp0');
  elseif ($_REQUEST['action'] == 'fsck') { 
     print '<pre>';
     passthru('e2fsck -F -n /dev/md0');
     print '</pre>';  
  }
  else
    exec('echo \\'.$_REQUEST['action'].' >/dev/ttyS1');
  $_REQUEST['action'] = '';
  }
?>
<html><head><title>automate</title>
<style>body,input{font:11px Verdana;}input{width:100px}</style>
<script>function $(e) {return document.getElementById(e);}</script>
</head><body>
<form id="f" name="f" action="automate.php">
<input type="hidden" id="action" name="action" value="" />
<fieldset><legend>Status LED</legend>
<input type="button" value="off" onclick="$('action').value='7';submit();">
<input type="button" value="green on" onclick="$('action').value='8';submit();">
<input type="button" value="green blink" onclick="$('action').value='9';submit();">
<input type="button" value="orange on" onclick="$('action').value=':';submit();">
<input type="button" value="orange blink" onclick="$('action').value=';';submit();">
</fieldset>
<fieldset><legend>Copy LED</legend>
<input type="button" value="off" onclick="$('action').value='B';submit();">
<input type="button" value="on" onclick="$('action').value='@';submit();">
<input type="button" value="blink" onclick="$('action').value='A';submit();">
</fieldset>
<fieldset><legend>Power LED</legend>
<input type="button" value="off" onclick="$('action').value='6';submit();">
<input type="button" value="on" onclick="$('action').value='4';submit();">
<input type="button" value="blink" onclick="$('action').value='5';submit();">
</fieldset>
<fieldset><legend>Beeper</legend>
<input type="button" value="short" onclick="$('action').value='2';submit();">
<input type="button" value="long" onclick="$('action').value='3';submit();">
</fieldset>
<fieldset><legend>Printer</legend>
<input type="button" value="print testpage" onclick="$('action').value='print';submit();">
</fieldset>
<fieldset><legend>File System Check</legend>
<input type="button" value="file system check" onclick="$('action').value='fsck';submit();">
</fieldset>
</form>
</body></html>

Ich überlege die ganze Zeit, ob man hier nicht noch mehr Standard-Aktionen einbauen könnte, z.B.

(1) mounten der / (auf eine automatisch angelegte share 'root') mit automatischen Eintrag in die /etc/rc.local ...

(2) Wenn ein externes Laufwerk mehrere Partitionen hat, dann mounted die DS nur die erste. Per CLICK alle weiteren mounten und dabei entsprechende Shares anlegen .... sofern nicht schon vorhanden ... USB1-1, USB1-2 sowas in der Art

(3) wake-up per LAN an PCs schicken

(4) den File-System-Check auf alle möglichen gemouteten Platten ausdehnen (auch wenn er nur read-only ist ...)

(5) Liste mit ein/ausschaltbaren Diensten anzeigen und gezielt einen Dienst ein- bzw ausschalten bzw restarten

(6) die geliebte hibernate-Funktion fürs Logfile gezielt an- und ausschalten und das Logfile gezielt nach hibernate-Zeilen absuchen und anzeigen

mir würden noch mehr Dinge einfallen :D

... ich komm nur nicht dazu, sie umzusetzen. Vielleicht nimmt sich ja jemand mal dieser oder ähnlicher Dinge an. Der Gedanke wäre mit "automate.php" so eine Art One-Klick-Seite aufzubauen, wo solche doch immer wiederkehrend gefragten und auch oft selbst gemachten kleinen Aufgaben drin stehen.

itari
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Noch ein wenig mehr:

Rich (BBCode):
<?php
if ($_REQUEST['action'] != '') {
  if ($_REQUEST['action'] == 'print') exec('echo -e "TESTPAGE\f" >/dev/usb/lp0');
  elseif ($_REQUEST['action'] == 'fsck0') 
    { print '<pre>';passthru('fsck.ext3 -F -n /dev/md0');print '</pre>'; } 
  elseif ($_REQUEST['action'] == 'fsck2') 
    { print '<pre>';passthru('fsck.ext3 -F -n /dev/md2');print '</pre>'; } 
  elseif ($_REQUEST['action'] == 'telnetd') exec('killall telnetd');
  elseif ($_REQUEST['action'] == 'sysapache') exec('/usr/syno/etc/rc.d/S97apache-sys.sh restart');
  elseif ($_REQUEST['action'] == 'userapache') exec('/usr/syno/etc/rc.d/S97apache-user.sh restart');
  elseif ($_REQUEST['action'] == '3rdapache') exec('/opt/sbin/httpd -k restart');                
  else
    exec('echo \\'.$_REQUEST['action'].' >/dev/ttyS1');
  $_REQUEST['action'] = '';
}
?>
<html><head><title>automate</title>
<style>body,input{font:11px Verdana;}input{width:140px}fieldset{border:1px solid #bbb}</style>
<script>function $(e) {return document.getElementById(e);}</script>
</head><body>
<form id="f" name="f" action="automate.php">
<input type="hidden" id="action" name="action" value="" />
<fieldset><legend>Status LED</legend>
<input type="button" value="off" onclick="$('action').value='7';submit();">
<input type="button" value="green on" onclick="$('action').value='8';submit();">
<input type="button" value="green blink" onclick="$('action').value='9';submit();">
<input type="button" value="orange on" onclick="$('action').value=':';submit();">
<input type="button" value="orange blink" onclick="$('action').value=';';submit();">
</fieldset>
<fieldset><legend>Copy LED</legend>
<input type="button" value="off" onclick="$('action').value='B';submit();">
<input type="button" value="on" onclick="$('action').value='@';submit();">
<input type="button" value="blink" onclick="$('action').value='A';submit();">
</fieldset>
<fieldset><legend>Power LED</legend>
<input type="button" value="off" onclick="$('action').value='6';submit();">
<input type="button" value="on" onclick="$('action').value='4';submit();">
<input type="button" value="blink" onclick="$('action').value='5';submit();">
</fieldset>
<fieldset><legend>Beeper</legend>
<input type="button" value="short" onclick="$('action').value='2';submit();">
<input type="button" value="long" onclick="$('action').value='3';submit();">
</fieldset>
<fieldset><legend>Printer</legend>
<input type="button" value="print testpage" onclick="$('action').value='print';submit();">
</fieldset>
<fieldset><legend>File System Check</legend>
<input type="button" value="fsck /dev/md0" onclick="$('action').value='fsck0';submit();">
<input type="button" value="fsck /dev/md2" onclick="$('action').value='fsck2';submit();">
</fieldset>
<fieldset><legend>Daemons</legend>
<input type="button" value="kill telnetd" onclick="$('action').value='telnetd';submit();">
<input type="button" value="restart sys-apache" onclick="$('action').value='sysapache';submit();">
<input type="button" value="restart user-apache" onclick="$('action').value='userapache';submit();">
<input type="button" value="restart 3rd-apache" onclick="$('action').value='3rdapache';submit();">
</fieldset>
</form>
</body></html>

itari
 

Anhänge

  • automate.jpg
    automate.jpg
    49,3 KB · Aufrufe: 3.269

Garfield

Benutzer
Mitglied seit
09. Jul 2008
Beiträge
193
Punkte für Reaktionen
0
Punkte
16
Cooooole Sache, gerade mal mitte September und die Weihnachtsbeleuchtung ist schon fertig :D:D:D. Gute Arbeit !!

Wie bekomm ich denn die Daemons da mit angezeigt? Hab das 2te Script von dir itari genommen, aber ich hab nur

Status LED
Copy LED
Power LED
Beeper
Printer
File System Check

zur Auswahl :confused:.

blinkende Grüße
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Nimm das 3. Skript :D

itari
 

Garfield

Benutzer
Mitglied seit
09. Jul 2008
Beiträge
193
Punkte für Reaktionen
0
Punkte
16
okeokeoke *kopfklatsch* :D

BEDANKT :)
 

Garfield

Benutzer
Mitglied seit
09. Jul 2008
Beiträge
193
Punkte für Reaktionen
0
Punkte
16
Kann man die LAN-LED eigentlich auch ansteuern? Wär schön, wenn diese nur bei Aktivität blinkt :D.
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0

Tuono

Benutzer
Mitglied seit
25. Aug 2008
Beiträge
26
Punkte für Reaktionen
3
Punkte
0
Hallo zusammen,

ich möchte nochmal den Vorschlag von Itari aufgreifen:

(2) Wenn ein externes Laufwerk mehrere Partitionen hat, dann mounted die DS nur die erste. Per CLICK alle weiteren mounten und dabei entsprechende Shares anlegen .... sofern nicht schon vorhanden ... USB1-1, USB1-2 sowas in der Art

Gibt es so etwas schon? Ich habe nämlich genau dieses Problem. An der DS (107+) betreibe ich ein 1TB USB als externes Laufwerk zur Datensicherung. Da ich dieses Laufwerk hin und wieder auch mal direkt an einen Laptop anschließen will, habe ich die Platte partioniert (700GB, EXT3 und 300GB FAT32).

Die DS erkannt auch die native Partition und Win erkennt bei direktem Anschluß die FAT Partition. Soweit so gut.

Nun wäre es natürlich schön wenn sich über eine 3rdParty die FAT mounten lassen würde. Besser natürlich, wenn es die DS automatisch erkennen würde :)

Danke schon mal im voraus!
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
@Tuono,

du hast es bestimmt schon gesehen, dass ich hier was erweitert haben zum Mounten von Partitionen

itari
 

Tuono

Benutzer
Mitglied seit
25. Aug 2008
Beiträge
26
Punkte für Reaktionen
3
Punkte
0
Ooops, nein, habe ich noch nicht gesehen, sorry!

Aber das ist genau das was ich suche.

Danke!
 

HarryPotter

Benutzer
Mitglied seit
24. Aug 2007
Beiträge
2.156
Punkte für Reaktionen
0
Punkte
0
Ich checks irgendwie nicht.
Das Script gibt mir im Browser den php code ab dem ersten ">"-Zeichen aus (DS-207+)

magic_quotes_gpc ist ausgeschaltet.
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Hi Harry,

hast du auch alles gemacht, was in der Anleitung bzw. im Wiki steht?

Der sys-Apache kann ja von Hause aus nicht PHP; ihm muss man das erstmal beibringen ;)

itari
 

HarryPotter

Benutzer
Mitglied seit
24. Aug 2007
Beiträge
2.156
Punkte für Reaktionen
0
Punkte
0
OK, einen Schritt weiter, nachdem ich die conf-sys angepasst habe.
Jetzt wird wie gewünscht "nur" noch das Menü angezeigt. Aber ich kann auf die Knöpfe klicken soviel ich will, da gehen weder Lichter an noch aus, auch beepen will nichts :-(
 
Zuletzt bearbeitet:

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Probier doch mal auf der Kommandozeile die verschiedenen Werte aus *guck*.

Wenn das geht, dann schau noch mal in das Skript, ob nicht durch deinen Editor in der Ausführungszeile am Anfang (exec ...) nicht die \\ verändert worden sind. Es gibt oft Ärger deswegen mit manchen Editoren.

itari
 
Zuletzt bearbeitet:

HarryPotter

Benutzer
Mitglied seit
24. Aug 2007
Beiträge
2.156
Punkte für Reaktionen
0
Punkte
0
Die Befehle funktionieren auf der Kommandozeile.

automate.php habe ich direkt in telnet mit vi erstellt und den Code mit copy/paste eingefügt, sieht unverändert aus.

Irgendwo stehe ich auf dem Schlauch. Das CurrentConnection Script geht jedenfalls.
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat