1818import java .io .OutputStream ;
1919import java .util .ArrayList ;
2020import java .util .List ;
21- import java .util .Map ;
2221
2322class EnvUtils {
2423
@@ -293,7 +292,6 @@ public static boolean exec(final Context c, final String shell, final List<Strin
293292 }
294293 boolean result = false ;
295294 OutputStream stdin = null ;
296- InputStream stdout ;
297295 try {
298296 ProcessBuilder pb = new ProcessBuilder (shell );
299297 pb .directory (new File (PrefStore .getEnvDir (c )));
@@ -303,8 +301,10 @@ public static boolean exec(final Context c, final String shell, final List<Strin
303301 Process process = pb .start ();
304302
305303 stdin = process .getOutputStream ();
306- stdout = process .getInputStream ();
304+ final InputStream stdout = process .getInputStream ();
305+ // final InputStream stderr = process.getErrorStream();
307306
307+ // params.add(0, "LD_LIBRARY_PATH=" + PrefStore.getLibsDir(c) + ":$LD_LIBRARY_PATH");
308308 params .add (0 , "PATH=" + PrefStore .getBinDir (c ) + ":$PATH" );
309309 if (PrefStore .isTraceMode (c )) params .add (0 , "set -x" );
310310 params .add ("exit $?" );
@@ -322,12 +322,10 @@ public static boolean exec(final Context c, final String shell, final List<Strin
322322 close (os );
323323 }
324324
325- // show stdout log
326- final InputStream out = stdout ;
327325 (new Thread () {
328326 @ Override
329327 public void run () {
330- Logger .log (c , out );
328+ Logger .log (c , stdout );
331329 }
332330 }).start ();
333331
@@ -348,10 +346,8 @@ public void run() {
348346 * @return true if success
349347 */
350348 static boolean updateEnv (final Context c ) {
351- // stop telnetd
352- execService (c , "telnetd" , "stop" );
353- //stop httpd
354- execService (c , "httpd" , "stop" );
349+ // stop services
350+ execServices (c , new String []{"telnetd" , "httpd" }, "stop" );
355351
356352 // extract bin assets
357353 if (!extractDir (c , PrefStore .getBinDir (c ), "bin/all" , "" )) return false ;
@@ -366,6 +362,10 @@ static boolean updateEnv(final Context c) {
366362 // make linuxdeploy script
367363 if (!makeScript (c )) return false ;
368364
365+ // make etc directory
366+ File etcDir = new File (PrefStore .getEtcDir (c ));
367+ etcDir .mkdirs ();
368+
369369 // make tmp directory
370370 File tmpDir = new File (PrefStore .getTmpDir (c ));
371371 tmpDir .mkdirs ();
@@ -404,10 +404,8 @@ static boolean updateEnv(final Context c) {
404404 // update version
405405 if (!setVersion (c )) return false ;
406406
407- // start telnetd
408- execService (c , "telnetd" , "start" );
409- //start httpd
410- execService (c , "httpd" , "start" );
407+ // start services
408+ execServices (c , new String []{"telnetd" , "httpd" }, "start" );
411409
412410 return true ;
413411 }
@@ -455,11 +453,8 @@ static boolean removeEnv(Context c) {
455453 // remove version file
456454 resetVersion (c );
457455
458- // stop telnetd
459- execService (c , "telnetd" , "stop" );
460-
461- //stop httpd
462- execService (c , "httpd" , "stop" );
456+ // stop services
457+ execServices (c , new String []{"telnetd" , "httpd" }, "stop" );
463458
464459 // remove symlink
465460 File ldSymlink = new File ("/system/bin/linuxdeploy" );
@@ -473,14 +468,18 @@ static boolean removeEnv(Context c) {
473468 File envDir = new File (PrefStore .getEnvDir (c ));
474469 cleanDirectory (envDir );
475470
476- // clean tmp directory
477- File tmpDir = new File (PrefStore .getTmpDir (c ));
478- cleanDirectory (tmpDir );
471+ // clean etc directory
472+ File etcDir = new File (PrefStore .getEtcDir (c ));
473+ cleanDirectory (etcDir );
479474
480475 // clean bin directory
481476 File binDir = new File (PrefStore .getBinDir (c ));
482477 cleanDirectory (binDir );
483478
479+ // clean tmp directory
480+ File tmpDir = new File (PrefStore .getTmpDir (c ));
481+ cleanDirectory (tmpDir );
482+
484483 return true ;
485484 }
486485
@@ -509,8 +508,9 @@ public static boolean cli(Context c, String cmd, String args) {
509508 /**
510509 * Execute command via service
511510 *
512- * @param c context
513- * @param args command and arguments
511+ * @param c context
512+ * @param cmd command
513+ * @param args arguments
514514 */
515515 static void execService (Context c , String cmd , String args ) {
516516 Intent service = new Intent (c , ExecService .class );
@@ -519,10 +519,23 @@ static void execService(Context c, String cmd, String args) {
519519 c .startService (service );
520520 }
521521
522+ /**
523+ * Execute commands via service
524+ *
525+ * @param c context
526+ * @param commands commands
527+ * @param args command and arguments
528+ */
529+ static void execServices (Context c , String [] commands , String args ) {
530+ for (String cmd : commands ) {
531+ execService (c , cmd , args );
532+ }
533+ }
534+
522535 /**
523536 * Start/stop telnetd daemon
524537 *
525- * @param c context
538+ * @param c context
526539 * @param cmd command: start, stop or restart
527540 * @return true if success
528541 */
@@ -554,7 +567,7 @@ static boolean telnetd(Context c, String cmd) {
554567 /**
555568 * Start/stop httpd daemon
556569 *
557- * @param c context
570+ * @param c context
558571 * @param cmd command: start, stop or restart
559572 * @return true if success
560573 */
@@ -568,14 +581,13 @@ static boolean httpd(Context c, String cmd) {
568581 if (cmd .equals ("stop" )) break ;
569582 case "start" :
570583 if (!PrefStore .isHttp (c )) break ;
571- File conf = PrefStore .getHttpConfFile (c );
572- EnvUtils .makeHttpdConf (c , conf );
584+ makeHttpdConf (c );
573585 params .add ("pgrep httpd >/dev/null && exit" );
574586 params .add ("export WS_SHELL=\" telnet 127.0.0.1 " + PrefStore .getTelnetPort (c ) + "\" " );
575587 params .add ("export ENV_DIR=\" " + PrefStore .getEnvDir (c ) + "\" " );
576588 params .add ("export HOME=\" " + PrefStore .getEnvDir (c ) + "\" " );
577589 params .add ("cd " + PrefStore .getWebDir (c ));
578- params .add ("httpd " + " -p " + PrefStore .getHttpPort (c ) + " -c " + conf );
590+ params .add ("httpd " + " -p " + PrefStore .getHttpPort (c ) + " -c " + PrefStore . getEtcDir ( c ) + "/httpd. conf" );
579591 }
580592 return params .size () > 0 && exec (c , "sh" , params );
581593 }
@@ -586,12 +598,13 @@ static boolean httpd(Context c, String cmd) {
586598 * @param c context
587599 * @return true if success
588600 */
589- private static boolean makeHttpdConf (Context c , File conf ) {
601+ private static boolean makeHttpdConf (Context c ) {
590602 boolean result = false ;
591603 BufferedWriter bw = null ;
592604 try {
593- bw = new BufferedWriter (new FileWriter (conf ));
594- for (String part : PrefStore .getHttpConf (c ).split (" " )) {
605+ String f = PrefStore .getEtcDir (c ) + "/httpd.conf" ;
606+ bw = new BufferedWriter (new FileWriter (f ));
607+ for (String part : PrefStore .getHttpConf (c ).split (" " )) {
595608 bw .write (part + "\n " );
596609 }
597610 result = true ;
0 commit comments