Projekt: Such-Funktion für die DS

Status
Für weitere Antworten geschlossen.

itari

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

wer hat Lust auf ein Projekt: Programmierung einer Web-basierte Suche für die DS?

Manchmal möchte man einfach mal seine Dateien absuchen und sich das Ergebnis schlicht im Browser anzeigen lassen. Ich hab mal ein einfaches PHP-Skript als Start-Vorlage zusammengestellt. Schönheit und erweiterte Funktionalitäten wären nun gefragt.

Rich (BBCode):
<form method="post" action="<?php print $_SERVER['PHP_SELF'] ?>">
<center>
<input type="text" size="30" name="search_string" value="<?php print $_REQUEST['search_string'] ?>"/>
<input type="submit" value="adhoc suche" />
</center>
</form>
<?php
$path=''; // Möglichkeit auf ein Verzeichnis einzuschränken
$find_path=$_SERVER['DOCUMENT_ROOT'].'/'.$path;
$found=array(); 
if ($_REQUEST['search_string'] != "") {
  exec('find '.$find_path.' -name "*'.$_REQUEST['search_string'].'*" -print',$found);
  if ($found!="")
    foreach($found as $item) 
      print '<div><a href="'.$path.preg_replace('#'.$find_path.'#','',$item).'">'.$item."</a></div>";
}
?>

Anmerkung für alle Nicht-Proggies: Den Code in eine Datei kopieren, unter dem Namen suche.php im Verzeichnis /volume1/web oder Webverzeichnis genannt abspeichern und im Browser mit IP_der_DS/suche.php aufrufen.

Den find-Aufruf kann man auch auf der Kommandozeile 'üben' und dabei vielleicht schneller sehen, was man mit ihm alles machen kann ...
 

itari

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

danke für den Hinweis. Da ich ja mit meiner eigenen Apache-Installation meist teste (die den PHP-Teil etwas anders aufsetzt), gibt es manchmal Kleinigkeiten, die ich einfach übersehe.

Damit das Skript nun läuft, bitte in der Datei /usr/syno/etc/php.ini folgende Zeile anpassen (Semikolon einbauen!):

safe_mode_exec_dir = ;/usr/syno/bin auskommentiert

... und dann den Apache restarten, damit die Änderung auch wirksam wird:

/usr/syno/etc/rc.d/S97apache-user.sh restart
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Ist noch irgendwer an diesem Projekt interessiert? Wenn nein, dann streich ich das von meiner todo-Liste und schließe den Thread.

itari
 

AlexTM

Benutzer
Mitglied seit
19. Okt 2008
Beiträge
9
Punkte für Reaktionen
0
Punkte
0
Ja, ich bin interessiert. Habe gerade eine Woche Urlaub und beschäftige mich jetzt etwas näher mit meiner DS107+. Eine webbasierte Suche finde ich eine super Idee, bisher habe ich mir bei Bedarf immer mit find über die console geholfen. Habe gleich mal den code etwas weiterentwickelt, so dass man jetzt die unterverzeichnisse von volume1 vorselektieren kann. sieht optisch zwar noch nicht ansprechend aus, sollte aber funktionieren.
ich setze mal voraus, dass die DS bereits für 3rd-party-apps angepasst ist.
Rich (BBCode):
<form method="post" action="<?php print $_SERVER['PHP_SELF'] ?>">
  <center>
    <input type="text" size="30" name="search_string" value="<?php print $_REQUEST['search_string'] ?>"/>
    <input type="submit" value="suche" /><br>
<?php
$root_path='/volume1/';
if ($handle = opendir($root_path)) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
            if (is_dir($root_path.$file)) echo '<input type="radio" name="verzeichnis" value="'.$file.'/">'.$file.'<br>';
        }
    }
    closedir($handle);
}
else echo 'fehler beim verzeichnislesen';
?>
  </center>
</form>

<?php
$find_path=$root_path.$_REQUEST['verzeichnis'];
$found=array(); 
if ($_REQUEST['search_string'] != "") {
  exec('find '.$find_path.' -name "*'.$_REQUEST['search_string'].'*" -print',$found);
  if ($found!="") {
    foreach($found as $item) {
      $pfad="//".$_SERVER["SERVER_NAME"].str_replace("/volume1","",$item);
      print '<div><a href="file:'.$pfad.'">'.$pfad."</a></div>\n";
    }
  }
}
?>
______________________<br>
Ende (<?php print $find_path ?>)
 
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