AdminTool AdminTool Evolution & Troubleshooting (Part 2)

Status
Für weitere Antworten geschlossen.

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Es gibt 2 Stellen, wo die User-Identität abgefragt wird:

1] in der adm.js (direkt am Anfang):

Rich (BBCode):
  Ext.Ajax.request({url:'adm.php', params:{auth:'1'},
  success:function(r){
  if (r.responseText != 'admin') location.href = 'https://'+location.host;
  else {

Hier wird also geprüft, ob der angemeldete Benutzer der 'admin' ist und wenn das nicht der Fall ist, wird eine Umlenkung gemacht (das ist das, was du als Phänomen beschrieben hast).

2] und durch den Aufruf in 1] in der adm.php:

Rich (BBCode):
putenv('HTTP_COOKIE='.$_SERVER['HTTP_COOKIE']);
putenv('REMOTE_ADDR='.$_SERVER['REMOTE_ADDR']);
$user=exec('/usr/syno/synoman/webman/modules/authenticate.cgi');
$url = substr($_SERVER['REMOTE_ADDR'],0,3);
if ($url != '192' &&  $url != '172' && $url != '10.' && $user !== 'admin'){ header("HTTP/1.0 403 Forbidden"); exit; }
if (isset($_REQUEST['auth'])) {print $user; exit;}

Hier werden 2 Umgebungsvariablen angelegt und dann die Authentifizierungsprüfung vorgenommen und der Name des Benutzers zurückgegeben, wenn er gültig ist. Danach wird geprüft, ob die Browser-Anfrage aus dem lokalen Netz kommt (also eine Netzwerkadresse hat, die mit 192 oder 172 oder 10. anfängt), denn der Aufruf des AdminTools soll ja nur aus dem lokalen Netz heraus vom User 'admin' erfolgen. Falls das ok ist, bekommt 1] den Namen 'admin', ansonsten wird eine 403-Fehlerseite ausgeben.

Hattes du bei früheren Versionen das Problem nicht? Oder bist du vielleicht 2x angemeldet?

Als Lösung kannst auf jeden Fall deine DS-Station-Cookies löschen. Und eventuell den Browser (FF ??) neu starten.

Itari
 

Hruendel

Benutzer
Mitglied seit
14. Jun 2008
Beiträge
374
Punkte für Reaktionen
1
Punkte
24
Ich logge mich bei der DS an: https://192.168.178.10:5001/ . Da bin ich als Admin angemeldet. Dann klicke ich auf AdminTool auf dem DS-Desktop. Es geht ein neues Fenster auf, AdminTool wird geladen. Dann bricht es ab und es kommt das Loginfenster der DS. Wenn ich mich wieder einlogge spielt sich das Ganze erneut ab. Cache von FF habe ich gelöscht. Frühere Versionen habe ich noch nicht probiert.

Ich glaube, das Sessionproblem kommt von ext. Ich hatte ähnliche Probleme mit unterschiedlichen Versionen von OpenGoo. Es läuft ja auch mit ext.
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Ich verwende die Authentifizierung vom DS-Manager und legen nach der Anmeldung ein Cookie für die Seitenorientierung ab ... Sessions werden da nicht weiter genutzt, da ich ja alles per AJAX nachlade.

Kannst ja mal die folgende Zeile in der adm.js modifizieren (siehe vorigen Post 1], dann wird die Prüfung übersprungen und der Rückgabe-Wert angezeigt:

Rich (BBCode):
alert(r.responseText);
if ( false ) location.href = 'https://'+location.host;

Den Rückgabewert kannst dann mal hier posten.

Itari
 

Hruendel

Benutzer
Mitglied seit
14. Jun 2008
Beiträge
374
Punkte für Reaktionen
1
Punkte
24
Jatzt, ja. Donnerwetter! Sieht gut aus.
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Wie war dein Rückgabewert? [alert(r.responseText)]

Ich will schließlich auch was davon haben :D

Itari
 

Hruendel

Benutzer
Mitglied seit
14. Jun 2008
Beiträge
374
Punkte für Reaktionen
1
Punkte
24
Ich hatte gar keine Meldung. Es ist einfach der Anmeldebildschirm erschienen.
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Hast du denn auch den alert() unmittelbar vor dem if eingebaut?

Rich (BBCode):
alert(r.responseText);
if ( false ) location.href = 'https://'+location.host;

Itari
 

Steini

Benutzer
Mitglied seit
22. Mrz 2010
Beiträge
423
Punkte für Reaktionen
1
Punkte
0
[...] Wenn du das AdminTool refreshst bzw. die DS neu startest, ist das dann immer noch so? Eventuell auch den Browser neu starten [...]
Unverändert. Gleiches Verhalten. Werde es heute Abend noch auf meinem Mac ausprobieren...

Ach ja, wollte es im MSIE8 unter WinXP nachvollziehen, doch das AdminTool lässt sich gar nicht aufrufen (gleiches mit Safari/WinXP). Bleibt an JS-Fehlermeldungen hängen:

Rich (BBCode):
Webpage error details

User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MS-RTC LM 8)
Timestamp: Mon, 7 Jun 2010 09:58:38 UTC

Message: 'autoload' is undefined
Line: 2
Char: 200
Code: 0
URI: http://MEINEDOMAIN:5000/webman/3rdparty/adm/modules/flashmemory/flashmemory.js

Message: 'this.el.dom' is null or not an object
Line: 7
Char: 122578
Code: 0
URI: http://MEINEDOMAIN:5000/webman/3rdparty/adm/ext/ext-all.js

Message: Object required
Line: 7
Char: 226648
Code: 0
URI: http://MEINEDOMAIN:5000/webman/3rdparty/adm/ext/ext-all.js

Message: Object expected
Line: 5
Char: 365
Code: 0
URI: http://MEINEDOMAIN:5000/webman/3rdparty/adm/modules/user/user.js

Message: 'autoload' is undefined
Line: 4
Char: 50
Code: 0
URI: http://MEINEDOMAIN:5000/webman/3rdparty/adm/modules/processes/processes.js

Message: 'textarea' is undefined
Line: 2
Char: 1
Code: 0
URI: http://MEINEDOMAIN:5000/webman/3rdparty/adm/modules/cron/cron.js
 
Zuletzt bearbeitet:

Hruendel

Benutzer
Mitglied seit
14. Jun 2008
Beiträge
374
Punkte für Reaktionen
1
Punkte
24
Alert zeigt mit das hier an (kann PHP nicht ausführen):
PHP:
<?php
putenv('HTTP_COOKIE='.$_SERVER['HTTP_COOKIE']);
putenv('REMOTE_ADDR='.$_SERVER['REMOTE_ADDR']);
$user=exec('/usr/syno/synoman/webman/modules/authenticate.cgi');
$url = substr($_SERVER['REMOTE_ADDR'],0,3);
if ($url != '192' &&  $url != '172' && $url != '10.' && $user !== 'admin'){ header("HTTP/1.0 403 Forbidden"); exit; }
if (isset($_REQUEST['auth'])) {print $user; exit;}

function iso8859_mydecode($html){                   // simple translation of german letters
  $a = array('?'=>"\xC3\xA4",'?'=>"\xC3\xB6",'?'=>"\xC3\xBC",
             '?'=>"\xC3\x84",'?'=>"\xC3\x96",'?'=>"\xC3\x9C",'?'=>"\xC3\x9F");
  return strtr($html,$a);
}
function utf8_mydecode($html){             // reverse simple translation of german letters
  $a = array("\xC3\xA4"=>'?',"\xC3\xB6"=>'?',"\xC3\xBC"=>'?',
             "\xC3\x84"=>'?',"\xC3\x96"=>'?',"\xC3\x9C"=>'?',"\xC3\x9F"=>'?');
  return strtr($html,$a);
}

//$cmd = utf8_mydecode(trim($_REQUEST['cmd']));
$cmd = trim($_REQUEST['cmd']);
$style= $_REQUEST['style'];
$error= $_REQUEST['error_ignore'];
if ($_REQUEST['pw']=='1') {
  exec('/opt/bin/ccrypt -dcK \"*****\" /usr/syno/etc/powermgr.cpt',$pw);
  exec(preg_replace('/-U admin/','-U admin%'.$pw[0],$cmd),$ret,$r);
  }
else if ($cmd != '' && $_REQUEST['raw'] != '3') exec($cmd,$ret,$r);
if (isset($_REQUEST['raw']) && $_REQUEST['raw'] == '1') print iso8859_mydecode(implode(chr(10),$ret));
else if (isset($_REQUEST['raw']) && $_REQUEST['raw'] == '1br') print implode('<br>',$ret);
else if (isset($_REQUEST['raw']) && $_REQUEST['raw'] == '2') {
   unset($ret);exec($cmd.' | grep -v grep',$ret,$r);
   //array_pop($ret); array_pop($ret);
   print 'Synology> '.$cmd.chr(10).chr(10).implode(chr(10),$ret);
   }
else if (isset($_REQUEST['raw']) && $_REQUEST['raw'] == '3') {
   if (sizeof($cmd) > 0) {
      unset($ret);
      preg_match('/(^.*)[>] (.*)$/U', $cmd, $token);
      if (preg_match('/^ll/', $token[2])) {
         $token[2] = preg_replace('/^ll/','ls -l', $token[2]);
         exec('cd '.$token[1].';'.$token[2],$ret,$r);
         foreach($ret as $file){
            if (substr($file,0,1)=='d') print $file.'/'.chr(10);
            else if (substr($file,0,1)=='-') print $file.chr(10);
            else print $file.chr(10);
         }
      } else {
         exec('cd '.$token[1].';'.$token[2],$ret,$r);
         print implode(chr(10),$ret);
         }
      }
   else print 'error';
}
else if (isset($_REQUEST['raw']) && $_REQUEST['raw'] == '4') {
  $out  ='<pre width="192">Synology> '.$cmd.'<br/><br/>';
  if (isset($error) || $r == 0) foreach($ret as $line) $out .= $line.'<br/>';
  else $out .= 'no stdout-values or execution error - exit-status = '.$r;
  print $out.'</pre>';
  }
else if (isset($_REQUEST['raw']) && $_REQUEST['raw'] == '5') {
  $out = '<pre width="192">';
  foreach($ret as $line) $out .= $line.'<br/>';
  print $out.'</pre>';
  }
else if (isset($_REQUEST['raw'])) print $r;
else if (isset($_REQUEST['file']) && isset($_REQUEST['save'])) {
  file_put_contents($_REQUEST['file'], $_REQUEST['save']);
  exec('perl -pi -e "s/\\r//g" \''.$_REQUEST['file'].'\'');
  }
else if (isset($_REQUEST['file']) && !isset($_REQUEST['save'])){
  ob_implicit_flush();
  $content = file_get_contents($_REQUEST['file']); 
  //print iso8859_mydecode(file_get_contents($_REQUEST['file']));  
  }
else {
  $out  ='<pre width=\'192\'>Synology> '.$cmd.'<br/><br/>';
  if (isset($error) || $r == 0)
  foreach($ret as $line) $out .= htmlspecialchars($line).'<br/>';
  else $out .= 'no stdout-values or execution error - exit-status = '.$r;
  print $out.'</pre>';
  }
?>

Außerdem sind überall Fenster mit PHP-Code statt Programmteile. Menü rechts geht aber. Habe ich vergessen irgendwas zu installieren?
 
Zuletzt bearbeitet:

support_he

Benutzer
Mitglied seit
07. Jun 2010
Beiträge
43
Punkte für Reaktionen
0
Punkte
0
pstree fehlt

Hi Ihr,

siehe unten - muß man das nachinstallieren? Wenn ja: welches Paket enthält das?

Danke
Peter

Rich (BBCode):
Synology> /opt/bin/pstree

no stdout-values or execution error - exit-status = 127
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Außerdem sind überall Fenster mit PHP-Code statt Programmteile. Menü rechts geht aber. Habe ich vergessen irgendwas zu installieren?

Ja, du hast das Init_3rdparty.spk nicht installiert/aktiviert.

Itari
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
siehe unten - muß man das nachinstallieren? Wenn ja: welches Paket enthält das?
Rich (BBCode):
Synology> /opt/bin/pstree

no stdout-values or execution error - exit-status = 127

Ja man muss eine Menge IPKG-Pakete installieren. Das AdminTool ist ja hauptsächlich dazu da, diese verborgenen Schätze ans Tageslicht zu holen.

Lies dir mal genau das Wiki durch. Da steht der Zusammenhang. http://www.synology-wiki.de/index.php/Admin_Tool

Itari
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Kann ich nicht wirklich nachvollziehen. :D Ich hab im IE völlig andere Fehlermeldungen.

Meine Refaktorierung scheint nicht überall anzukommen ... kannst solange mal die Vor-Version probieren (0.95b)

Itari
 

Hruendel

Benutzer
Mitglied seit
14. Jun 2008
Beiträge
374
Punkte für Reaktionen
1
Punkte
24
Es funktioniert. :) Eine Installationsanleitung habe ich nicht gefunden! Ich installiere doch nicht alles auf DS was mir über den Weg läuft. Da muss man schon bisschen vorsichtiger sein. Hammerarbeit! Sieht gut aus.

Ich habe auch eine Anwendung die ich gern von Perl/PgSQL auf PHP/MySQL umlegen würde (synologytauglich). Da habe ich schon öfters extJS angeschaut. Es wird aber sehr viel Arbeit sein. Wie lange hast du für das AdminTool gebraucht? Wo fängt man bei extJS am besten an? Gibt es da eine deutsche Anleitung die man gebrauchen kann?
 

support_he

Benutzer
Mitglied seit
07. Jun 2010
Beiträge
43
Punkte für Reaktionen
0
Punkte
0
Hi!

danke für die schnelle Antwort!

Leider scheint die originale Source vom IPKG "down" zu sein (Listing wird angezeigt, aber downloads laufen auf einen 404-Fehler:
Rich (BBCode):
Not Found

The requested URL /optware/cs08q1armel/cross/unstable/psutils_p17-1_arm.ipk was not found on this server.

Wie kann ich die Source umstellen (Mirrors hast Du ja angegeben ... aber das bloße einsetzen in die conf reicht leider nicht - er nimmt immer die originale source ...)

Gruß&Dank
Peter
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Wo fängt man bei extJS am besten an? Gibt es da eine deutsche Anleitung die man gebrauchen kann?

Ich hab mir die Beispiele auf der ExtJS-Seite angeschaut und daran ein wenig geübt. Eine deutsche Anleitung hab ich so direkt nicht gefunden.

Itari
 

Steini

Benutzer
Mitglied seit
22. Mrz 2010
Beiträge
423
Punkte für Reaktionen
1
Punkte
0
Neues Issue: In der aktuellen Version des AdminTools kann man verschiedene Navi-Links nicht mehr aufrufen. Beim Klick darauf rührt sich nix: Kein Timeout, keine Fehlermeldung, nüschte... [...]
Also zuhause auf meinem Mac funktionieren die Links tadellos in allen Browsern. Sehr seltsam...
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Also zuhause auf meinem Mac funktionieren die Links tadellos in allen Browsern. Sehr seltsam...

Der IE hat mir gezeigt, dass es einen Namenskonflikt bei einer bestimmten Variablen gibt, welcher dazu führt, dass der Rest der jeweiligen js-Skripte nicht mehr fertig interpretiert werden. Vermutlich liegt es an sowas. Ich hab gestern schon das ein oder andere Skript geändert und dann erscheinen die Fehlermeldungen im IE nicht mehr. Es wird aber noch ein paar Tage dauern, bis ich mit allem durch bin ...

Itari
 

MaCoM

Benutzer
Mitglied seit
06. Dez 2009
Beiträge
347
Punkte für Reaktionen
0
Punkte
0
Hallo

Ist es richtig das in der version 0.96a immer noch in der browser-kopfzeile und tab-lasche 0.92 angezeigt wird ?

oder mache ich was falsch beim update ?
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Mach mal eine Browser-Cache-Leerung ...

Itari
 
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