Dateiverwaltung für die WebBox
ulrich
2021-01-21 8cab6e94514c38151b2e0c53c9df47c6e1682e28
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package de.uhilger.filecms.api;
 
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
 
public class SuchApi extends Api {
 
  private static final Logger logger = Logger.getLogger(SuchApi.class.getName());
 
/**
 * Dateien suchen
 * 
 * Suche von Dateien die einen gegebenen Suchbegriff irgendwo im Namen haben.
 * Die Suche erfolgt ohne Beruecksichtigung von Gross- und Kleinschreibung, 
 * 
 * @param suchbegriff zu suchender Inhalt
 * @param ablageort Ordner, in dem gesucht wird, einschl. Unterordner
 * 
 * http://localhost:8080/suche/api?c=de.uhilger.suche.api.SuchApi&m=dateiSuchen&p=wbx&p=/home/ulrich/work
 *
 */
  public String dateiSuchen(String suchbegriff, String ablageort) {
    ProcessBuilder builder = new ProcessBuilder("find", 
            ablageort, "-iname", "*" + suchbegriff + "*");
    return prozessAusfuehren(builder);
  }
  
  /**
   * grep -ril "javadoc"   /media/extmirror/wbx-data/cms
   * http://localhost:8080/suche/api?c=de.uhilger.suche.api.SuchApi&m=inhaltSuchen&p=docker&p=/home/ulrich/work
   * @return 
   */
  public String inhaltSuchen(String suchbegriff, String ablageort) {
    ProcessBuilder builder = new ProcessBuilder("grep", "-ril", 
            suchbegriff, ablageort);
    return prozessAusfuehren(builder);
  }
  
  /**
   * http://localhost:8080/suche/api?c=de.uhilger.suche.api.SuchApi&m=list&p=/home/ulrich/work
   * ls -l /pfad/zum/inhalt
   * @param ort
   * @return 
   */
  public String list(String ort) {
    ProcessBuilder builder = new ProcessBuilder("ls", "-l", 
            ort);
    return prozessAusfuehren(builder);
  }
  
  private String prozessAusfuehren(ProcessBuilder builder) {
    try {
      File outFile = new File(
              new File(System.getProperty("catalina.base"), "temp"), 
              "proc-out-" + new Date().getTime() + ".txt");
      builder.redirectOutput(outFile);
      builder.redirectError(outFile);
      Process p = builder.start();
      p.waitFor();
      String newLine = System.getProperty("line.separator");
      StringBuilder ergebnis = new StringBuilder();
      BufferedReader fr = new BufferedReader(new FileReader(outFile));
      String line = fr.readLine();
      while(line != null) {
        ergebnis.append(line);
        ergebnis.append(newLine);
        line = fr.readLine();
      }
      outFile.delete();
      return ergebnis.toString();
    } catch (IOException | InterruptedException ex) {
      logger.log(Level.SEVERE, null, ex);
      return ex.getMessage();
    }
  }
 
}