changeset 23:a3c8d0b20a60

ut: add file server & web server.
author pyon@macmini
date Mon, 09 Jul 2018 20:56:13 +0900
parents 5345d67aea5a
children f904a5f5b3cf
files src/ut/main.go
diffstat 1 files changed, 28 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/ut/main.go	Fri Jun 29 20:14:29 2018 +0900
+++ b/src/ut/main.go	Mon Jul 09 20:56:13 2018 +0900
@@ -55,7 +55,8 @@
     var replace  = flag.Bool( "r", false, "replace strings. ( s/arg1/arg2/g )" )            // ok
     var nc       = flag.Bool( "nc",  false, "netcat." )                                     // ok
     var ncl      = flag.Bool( "ncl", false, "netcat listen-mode." )                         // ok
-
+    var fserver  = flag.Int( "fs", 0, "file server" )                                       // ok
+    var wserver  = flag.Int( "ws", 0, "web server" )                                        // ok
 
     var msleep   = flag.Bool( "M", false, "sleep." )
     //var swatch   = flag.Bool( "W", false, "stop watch." )
@@ -100,6 +101,32 @@
         os.Exit( 0 )
     }
 
+    /* Here Servers */
+    if *fserver != 0 {
+        addr := nw.GetLocalIP() + ":" + fmt.Sprintf( "%d", *fserver )
+        log.Fatal( http.ListenAndServe( addr, http.FileServer( http.Dir( ".") ) ) )
+    }
+
+    if *wserver != 0 {
+        addr := nw.GetLocalIP() + ":" + fmt.Sprintf( "%d", *wserver )
+        http.HandleFunc( "/", func( w http.ResponseWriter, r *http.Request ) {
+            if flag.NArg() == 0 {
+                fmt.Fprintf( w, "WebServer\n" )
+                return
+            }
+            file := flag.Args()[0]
+            f, err := os.Open( file )
+            if err != nil {
+                fmt.Fprintf( w, "WebServer\n" )
+            }
+            if _, err = io.Copy( w, f ); err != nil {
+                log.Fatal( err )
+            }
+            f.Close()
+        } )
+        log.Fatal( http.ListenAndServe( addr, nil ) )
+    }
+
     /* Here Utility Function ( unix tool like tools ) */
     if *msleep {
         fmt.Fprintln( os.Stderr, "not implement" )