annotate go/server.go @ 7:29829e98d510

add net.cpp
author pyon@macmini
date Fri, 26 Oct 2018 21:05:11 +0900
parents 06342fc544e4
children 82f9af6aa7e4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
1 /*
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
2 server.go : server-program.
4
06342fc544e4 mouse gesture.
pyon@macmini
parents: 3
diff changeset
3 Version : 1.1
06342fc544e4 mouse gesture.
pyon@macmini
parents: 3
diff changeset
4 Last Change: 2018-10-12 金 14:37:48.
0
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
5
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
6 install to: server_root/
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
7
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
8 server_root/server
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
9 + db/
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
10 + release/
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
11 + images/
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
12 */
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
13 package main
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
14
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
15 import(
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
16 "path/filepath"
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
17 "fmt"
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
18 "io"
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
19 "log"
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
20 "net"
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
21 "net/http"
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
22 "os"
3
db4813125eb8 many changes.
pyon@macmini
parents: 1
diff changeset
23 "time"
0
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
24 )
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
25
3
db4813125eb8 many changes.
pyon@macmini
parents: 1
diff changeset
26 var server string
db4813125eb8 many changes.
pyon@macmini
parents: 1
diff changeset
27 var port string
db4813125eb8 many changes.
pyon@macmini
parents: 1
diff changeset
28 var server_root string
4
06342fc544e4 mouse gesture.
pyon@macmini
parents: 3
diff changeset
29 var version string
3
db4813125eb8 many changes.
pyon@macmini
parents: 1
diff changeset
30
db4813125eb8 many changes.
pyon@macmini
parents: 1
diff changeset
31 func init() {
db4813125eb8 many changes.
pyon@macmini
parents: 1
diff changeset
32 port = ":3910"
db4813125eb8 many changes.
pyon@macmini
parents: 1
diff changeset
33 server_root = filepath.Dir( os.Args[0] )
4
06342fc544e4 mouse gesture.
pyon@macmini
parents: 3
diff changeset
34 version = "1.1"
3
db4813125eb8 many changes.
pyon@macmini
parents: 1
diff changeset
35 }
db4813125eb8 many changes.
pyon@macmini
parents: 1
diff changeset
36
0
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
37 func main() {
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
38
3
db4813125eb8 many changes.
pyon@macmini
parents: 1
diff changeset
39 // setting IP-Address & Port
0
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
40 addrs, err := net.InterfaceAddrs()
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
41 if err != nil {
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
42 log.Fatal( err )
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
43 }
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
44 for _, a := range addrs {
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
45 if ipnet, ok := a.( *net.IPNet ); ok && !ipnet.IP.IsLoopback() {
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
46 if ipnet.IP.To4() != nil {
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
47 server = ipnet.IP.String() + port
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
48 }
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
49 }
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
50 }
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
51
3
db4813125eb8 many changes.
pyon@macmini
parents: 1
diff changeset
52 // start Web-server
4
06342fc544e4 mouse gesture.
pyon@macmini
parents: 3
diff changeset
53 fmt.Println( "server start [", server, "] ( program version", version, ")" )
06342fc544e4 mouse gesture.
pyon@macmini
parents: 3
diff changeset
54 http.HandleFunc( "/", handler )
06342fc544e4 mouse gesture.
pyon@macmini
parents: 3
diff changeset
55 http.HandleFunc( "/upload", upload_handler )
0
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
56 log.Fatal( http.ListenAndServe( server, nil ) )
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
57 }
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
58
3
db4813125eb8 many changes.
pyon@macmini
parents: 1
diff changeset
59 func handler( w http.ResponseWriter, r *http.Request ) {
db4813125eb8 many changes.
pyon@macmini
parents: 1
diff changeset
60 file := filepath.Join( server_root, filepath.FromSlash( r.URL.Path ) )
db4813125eb8 many changes.
pyon@macmini
parents: 1
diff changeset
61 fmt.Println( "[access]", r.RemoteAddr, "|", time.Now().Format( "2006-01-02 15:04" ), "|", file )
db4813125eb8 many changes.
pyon@macmini
parents: 1
diff changeset
62 f, err := os.Open( file )
db4813125eb8 many changes.
pyon@macmini
parents: 1
diff changeset
63 if err != nil {
db4813125eb8 many changes.
pyon@macmini
parents: 1
diff changeset
64 http.NotFound( w, r )
db4813125eb8 many changes.
pyon@macmini
parents: 1
diff changeset
65 return
db4813125eb8 many changes.
pyon@macmini
parents: 1
diff changeset
66 }
db4813125eb8 many changes.
pyon@macmini
parents: 1
diff changeset
67 defer f.Close()
db4813125eb8 many changes.
pyon@macmini
parents: 1
diff changeset
68 io.Copy( w, f )
db4813125eb8 many changes.
pyon@macmini
parents: 1
diff changeset
69 }
4
06342fc544e4 mouse gesture.
pyon@macmini
parents: 3
diff changeset
70
06342fc544e4 mouse gesture.
pyon@macmini
parents: 3
diff changeset
71 func upload_handler( w http.ResponseWriter, r *http.Request ) {
06342fc544e4 mouse gesture.
pyon@macmini
parents: 3
diff changeset
72 fmt.Println( "[access]", r.RemoteAddr, "|", time.Now().Format( "2006-01-02 15:04" ), "|", "/upload" )
06342fc544e4 mouse gesture.
pyon@macmini
parents: 3
diff changeset
73 now := time.Now().Format( "20060102_150405" )
06342fc544e4 mouse gesture.
pyon@macmini
parents: 3
diff changeset
74 file := filepath.Join( server_root, "upload", now )
06342fc544e4 mouse gesture.
pyon@macmini
parents: 3
diff changeset
75 f, err := os.Create( file )
06342fc544e4 mouse gesture.
pyon@macmini
parents: 3
diff changeset
76 if err != nil {
06342fc544e4 mouse gesture.
pyon@macmini
parents: 3
diff changeset
77 http.NotFound( w, r )
06342fc544e4 mouse gesture.
pyon@macmini
parents: 3
diff changeset
78 return
06342fc544e4 mouse gesture.
pyon@macmini
parents: 3
diff changeset
79 }
06342fc544e4 mouse gesture.
pyon@macmini
parents: 3
diff changeset
80 n, err := io.Copy( f, r.Body )
06342fc544e4 mouse gesture.
pyon@macmini
parents: 3
diff changeset
81 if err != nil {
06342fc544e4 mouse gesture.
pyon@macmini
parents: 3
diff changeset
82 http.NotFound( w, r )
06342fc544e4 mouse gesture.
pyon@macmini
parents: 3
diff changeset
83 return
06342fc544e4 mouse gesture.
pyon@macmini
parents: 3
diff changeset
84 }
06342fc544e4 mouse gesture.
pyon@macmini
parents: 3
diff changeset
85 f.Close()
06342fc544e4 mouse gesture.
pyon@macmini
parents: 3
diff changeset
86 w.Write( []byte( fmt.Sprintf( "%d bytes are recieved.\n", n ) ) )
06342fc544e4 mouse gesture.
pyon@macmini
parents: 3
diff changeset
87 }
06342fc544e4 mouse gesture.
pyon@macmini
parents: 3
diff changeset
88