Mercurial > mercurial > hgweb_rsearcher.cgi
view go/server.go @ 7:29829e98d510
add net.cpp
author | pyon@macmini |
---|---|
date | Fri, 26 Oct 2018 21:05:11 +0900 |
parents | 06342fc544e4 |
children | 82f9af6aa7e4 |
line wrap: on
line source
/* server.go : server-program. Version : 1.1 Last Change: 2018-10-12 金 14:37:48. install to: server_root/ server_root/server + db/ + release/ + images/ */ package main import( "path/filepath" "fmt" "io" "log" "net" "net/http" "os" "time" ) var server string var port string var server_root string var version string func init() { port = ":3910" server_root = filepath.Dir( os.Args[0] ) version = "1.1" } func main() { // setting IP-Address & Port addrs, err := net.InterfaceAddrs() if err != nil { log.Fatal( err ) } for _, a := range addrs { if ipnet, ok := a.( *net.IPNet ); ok && !ipnet.IP.IsLoopback() { if ipnet.IP.To4() != nil { server = ipnet.IP.String() + port } } } // start Web-server fmt.Println( "server start [", server, "] ( program version", version, ")" ) http.HandleFunc( "/", handler ) http.HandleFunc( "/upload", upload_handler ) log.Fatal( http.ListenAndServe( server, nil ) ) } func handler( w http.ResponseWriter, r *http.Request ) { file := filepath.Join( server_root, filepath.FromSlash( r.URL.Path ) ) fmt.Println( "[access]", r.RemoteAddr, "|", time.Now().Format( "2006-01-02 15:04" ), "|", file ) f, err := os.Open( file ) if err != nil { http.NotFound( w, r ) return } defer f.Close() io.Copy( w, f ) } func upload_handler( w http.ResponseWriter, r *http.Request ) { fmt.Println( "[access]", r.RemoteAddr, "|", time.Now().Format( "2006-01-02 15:04" ), "|", "/upload" ) now := time.Now().Format( "20060102_150405" ) file := filepath.Join( server_root, "upload", now ) f, err := os.Create( file ) if err != nil { http.NotFound( w, r ) return } n, err := io.Copy( f, r.Body ) if err != nil { http.NotFound( w, r ) return } f.Close() w.Write( []byte( fmt.Sprintf( "%d bytes are recieved.\n", n ) ) ) }