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