Mercurial > mercurial > hgweb_rsearcher.cgi
view go/server.go @ 3:db4813125eb8
many changes.
author | pyon@macmini |
---|---|
date | Thu, 11 Oct 2018 22:11:09 +0900 |
parents | eaa27e4ed5be |
children | 06342fc544e4 |
line wrap: on
line source
/* server.go : server-program. Version : 1.0 Last Change: 2018-10-03 水 10:22:04. 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 func init() { port = ":3910" server_root = filepath.Dir( os.Args[0] ) } 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, "]" ) http.HandleFunc( "/", 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 ) }