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 |