Mercurial > mercurial > hgweb_rsearcher.cgi
comparison go/server.go @ 8:82f9af6aa7e4
add net.cpp
| author | pyon@macmini |
|---|---|
| date | Tue, 30 Oct 2018 17:26:02 +0900 |
| parents | 06342fc544e4 |
| children | 240752cbe11b |
comparison
equal
deleted
inserted
replaced
| 7:29829e98d510 | 8:82f9af6aa7e4 |
|---|---|
| 1 /* | 1 /* |
| 2 server.go : server-program. | 2 server.go : server-program. |
| 3 Version : 1.1 | 3 Version : 1.1 |
| 4 Last Change: 2018-10-12 金 14:37:48. | 4 Last Change: 2018-10-29 月 14:58:19. |
| 5 | 5 |
| 6 install to: server_root/ | 6 install to: server_root/ |
| 7 | 7 |
| 8 server_root/server | 8 server_root/server |
| 9 + db/ | 9 + db/ |
| 21 "net/http" | 21 "net/http" |
| 22 "os" | 22 "os" |
| 23 "time" | 23 "time" |
| 24 ) | 24 ) |
| 25 | 25 |
| 26 var server string | 26 var ( |
| 27 var port string | 27 version string |
| 28 var server_root string | 28 server string |
| 29 var version string | 29 port string |
| 30 server_root string | |
| 31 logfile string | |
| 32 ) | |
| 30 | 33 |
| 31 func init() { | 34 func init() { |
| 35 version = "1.2" // log version | |
| 32 port = ":3910" | 36 port = ":3910" |
| 33 server_root = filepath.Dir( os.Args[0] ) | 37 server_root = filepath.Dir( os.Args[0] ) |
| 34 version = "1.1" | 38 logfile = filepath.Join( server_root, "rsearcher.log" ) |
| 35 } | 39 } |
| 36 | 40 |
| 37 func main() { | 41 func main() { |
| 38 | 42 |
| 39 // setting IP-Address & Port | 43 // setting IP-Address & Port |
| 56 log.Fatal( http.ListenAndServe( server, nil ) ) | 60 log.Fatal( http.ListenAndServe( server, nil ) ) |
| 57 } | 61 } |
| 58 | 62 |
| 59 func handler( w http.ResponseWriter, r *http.Request ) { | 63 func handler( w http.ResponseWriter, r *http.Request ) { |
| 60 file := filepath.Join( server_root, filepath.FromSlash( r.URL.Path ) ) | 64 file := filepath.Join( server_root, filepath.FromSlash( r.URL.Path ) ) |
| 65 | |
| 61 fmt.Println( "[access]", r.RemoteAddr, "|", time.Now().Format( "2006-01-02 15:04" ), "|", file ) | 66 fmt.Println( "[access]", r.RemoteAddr, "|", time.Now().Format( "2006-01-02 15:04" ), "|", file ) |
| 67 write_log( "[access] " + r.RemoteAddr + " " + file ) | |
| 68 | |
| 62 f, err := os.Open( file ) | 69 f, err := os.Open( file ) |
| 63 if err != nil { | 70 if err != nil { |
| 64 http.NotFound( w, r ) | 71 http.NotFound( w, r ) |
| 65 return | 72 return |
| 66 } | 73 } |
| 67 defer f.Close() | 74 defer f.Close() |
| 75 | |
| 76 fi, _ := f.Stat() | |
| 77 | |
| 78 w.Header().Set( "Content-Type", "rsearcher/octet-stream" ) | |
| 79 w.Header().Set( "Content-Length", fmt.Sprintf( "%d", fi.Size() ) ) | |
| 68 io.Copy( w, f ) | 80 io.Copy( w, f ) |
| 69 } | 81 } |
| 70 | 82 |
| 71 func upload_handler( w http.ResponseWriter, r *http.Request ) { | 83 func upload_handler( w http.ResponseWriter, r *http.Request ) { |
| 72 fmt.Println( "[access]", r.RemoteAddr, "|", time.Now().Format( "2006-01-02 15:04" ), "|", "/upload" ) | 84 fmt.Println( "[access]", r.RemoteAddr, "|", time.Now().Format( "2006-01-02 15:04" ), "|", "/upload" ) |
| 84 } | 96 } |
| 85 f.Close() | 97 f.Close() |
| 86 w.Write( []byte( fmt.Sprintf( "%d bytes are recieved.\n", n ) ) ) | 98 w.Write( []byte( fmt.Sprintf( "%d bytes are recieved.\n", n ) ) ) |
| 87 } | 99 } |
| 88 | 100 |
| 101 func write_log( msg string ) { | |
| 102 f, err := os.OpenFile( logfile, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644 ) | |
| 103 if err != nil { | |
| 104 log.Fatal( err ) | |
| 105 } | |
| 106 defer f.Close() | |
| 107 | |
| 108 logger := log.New( f, "", log.LstdFlags ) | |
| 109 logger.Println( msg ) | |
| 110 } | |
| 111 |
