Mercurial > mercurial > hgweb_rsearcher.cgi
diff go/server.go @ 8:82f9af6aa7e4
add net.cpp
author | pyon@macmini |
---|---|
date | Tue, 30 Oct 2018 17:26:02 +0900 |
parents | 06342fc544e4 |
children | 240752cbe11b |
line wrap: on
line diff
--- a/go/server.go Fri Oct 26 21:05:11 2018 +0900 +++ b/go/server.go Tue Oct 30 17:26:02 2018 +0900 @@ -1,7 +1,7 @@ /* server.go : server-program. Version : 1.1 - Last Change: 2018-10-12 金 14:37:48. + Last Change: 2018-10-29 月 14:58:19. install to: server_root/ @@ -23,15 +23,19 @@ "time" ) -var server string -var port string -var server_root string -var version string +var ( + version string + server string + port string + server_root string + logfile string +) func init() { + version = "1.2" // log version port = ":3910" server_root = filepath.Dir( os.Args[0] ) - version = "1.1" + logfile = filepath.Join( server_root, "rsearcher.log" ) } func main() { @@ -58,13 +62,21 @@ 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 ) + write_log( "[access] " + r.RemoteAddr + " " + file ) + f, err := os.Open( file ) if err != nil { http.NotFound( w, r ) return } defer f.Close() + + fi, _ := f.Stat() + + w.Header().Set( "Content-Type", "rsearcher/octet-stream" ) + w.Header().Set( "Content-Length", fmt.Sprintf( "%d", fi.Size() ) ) io.Copy( w, f ) } @@ -86,3 +98,14 @@ w.Write( []byte( fmt.Sprintf( "%d bytes are recieved.\n", n ) ) ) } +func write_log( msg string ) { + f, err := os.OpenFile( logfile, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644 ) + if err != nil { + log.Fatal( err ) + } + defer f.Close() + + logger := log.New( f, "", log.LstdFlags ) + logger.Println( msg ) +} +