annotate go/server.go @ 16:b651aa41b9d4 default tip

hhsinfo method (server)
author pyon@macmini
date Mon, 15 Jul 2019 07:03:05 +0900
parents c262e17de9b1
children
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.
16
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
3 Version : 1.6
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
4 Last Change: 2019-07-15 Mon 06:34:42.
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(
14
c1dc1fcee7fe print zoom.
pyon@macmini
parents: 13
diff changeset
16 "bufio"
16
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
17 "crypto/aes"
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
18 "crypto/cipher"
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
19 "encoding/hex"
14
c1dc1fcee7fe print zoom.
pyon@macmini
parents: 13
diff changeset
20 "flag"
0
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
21 "fmt"
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
22 "io"
16
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
23 "io/ioutil"
0
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
24 "log"
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
25 "net"
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
26 "net/http"
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
27 "os"
14
c1dc1fcee7fe print zoom.
pyon@macmini
parents: 13
diff changeset
28 "path/filepath"
15
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
29 "strings"
3
db4813125eb8 many changes.
pyon@macmini
parents: 1
diff changeset
30 "time"
0
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
31 )
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
32
16
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
33 type hhs struct {
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
34 no string
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
35 name string
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
36 kana string
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
37 addr string
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
38 birth string
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
39 sex string
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
40 }
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
41
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
42 func (h *hhs) String() string {
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
43 s := []string{h.no, h.name, h.kana, h.addr, h.birth, h.sex}
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
44 return strings.Join(s, ",")
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
45 }
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
46
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
47 func (h *hhs) SString() string {
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
48 s := []string{h.no, h.name, h.kana}
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
49 return strings.Join(s, ",")
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
50 }
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
51
8
82f9af6aa7e4 add net.cpp
pyon@macmini
parents: 4
diff changeset
52 var (
82f9af6aa7e4 add net.cpp
pyon@macmini
parents: 4
diff changeset
53 version string
82f9af6aa7e4 add net.cpp
pyon@macmini
parents: 4
diff changeset
54 server string
16
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
55 port string
8
82f9af6aa7e4 add net.cpp
pyon@macmini
parents: 4
diff changeset
56 server_root string
82f9af6aa7e4 add net.cpp
pyon@macmini
parents: 4
diff changeset
57 logfile string
14
c1dc1fcee7fe print zoom.
pyon@macmini
parents: 13
diff changeset
58 not_ac bool
c1dc1fcee7fe print zoom.
pyon@macmini
parents: 13
diff changeset
59 wlfile string
16
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
60
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
61 hdbfile string
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
62 key string
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
63 hhash map[string]hhs
8
82f9af6aa7e4 add net.cpp
pyon@macmini
parents: 4
diff changeset
64 )
3
db4813125eb8 many changes.
pyon@macmini
parents: 1
diff changeset
65
db4813125eb8 many changes.
pyon@macmini
parents: 1
diff changeset
66 func init() {
16
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
67 version = "1.6" // 1.6: hhs info version
3
db4813125eb8 many changes.
pyon@macmini
parents: 1
diff changeset
68 port = ":3910"
15
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
69 server_root = filepath.Dir(os.Args[0])
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
70 logfile = filepath.Join(server_root, "rsearcher.log")
16
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
71 wlfile = filepath.Join(server_root, "rsearcher.whitelist")
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
72
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
73 hdbfile = filepath.Join(server_root, "db", "hhs.db")
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
74 key = "1234567890abcdef1234567890abcdef" // len = 32
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
75 read_hhsdb()
3
db4813125eb8 many changes.
pyon@macmini
parents: 1
diff changeset
76 }
db4813125eb8 many changes.
pyon@macmini
parents: 1
diff changeset
77
0
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
78 func main() {
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
79
15
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
80 flag.BoolVar(&not_ac, "d", false, "no access control ( for debug )")
14
c1dc1fcee7fe print zoom.
pyon@macmini
parents: 13
diff changeset
81 flag.Parse()
c1dc1fcee7fe print zoom.
pyon@macmini
parents: 13
diff changeset
82
3
db4813125eb8 many changes.
pyon@macmini
parents: 1
diff changeset
83 // setting IP-Address & Port
0
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
84 addrs, err := net.InterfaceAddrs()
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
85 if err != nil {
15
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
86 log.Fatal(err)
0
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
87 }
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
88 for _, a := range addrs {
15
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
89 if ipnet, ok := a.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
90 if strings.HasPrefix(ipnet.IP.String(), "169.254") {
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
91 continue
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
92 }
0
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
93 if ipnet.IP.To4() != nil {
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
94 server = ipnet.IP.String() + port
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
95 }
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
96 }
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
97 }
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
98
3
db4813125eb8 many changes.
pyon@macmini
parents: 1
diff changeset
99 // start Web-server
15
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
100 fmt.Println("server start [", server, "] ( program version", version, ")")
16
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
101 http.HandleFunc("/", handler)
15
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
102 http.HandleFunc("/upload/", upload_handler)
16
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
103 http.HandleFunc("/mngdb/", mngdb_handler)
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
104 http.HandleFunc("/hinfo/", hinfo_handler)
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
105 http.HandleFunc("/hlist/", hlist_handler)
15
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
106 log.Fatal(http.ListenAndServe(server, nil))
0
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
107 }
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
108
16
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
109 /* 各種ハンドラ */
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
110 // 静的ファイル
15
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
111 func handler(w http.ResponseWriter, r *http.Request) {
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
112 if !not_ac && !is_valid_host(r.RemoteAddr) {
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
113 http.NotFound(w, r)
14
c1dc1fcee7fe print zoom.
pyon@macmini
parents: 13
diff changeset
114 return
c1dc1fcee7fe print zoom.
pyon@macmini
parents: 13
diff changeset
115 }
c1dc1fcee7fe print zoom.
pyon@macmini
parents: 13
diff changeset
116
15
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
117 file := filepath.Join(server_root, filepath.FromSlash(r.URL.Path))
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
118 //img := r.URL.Query().Get("q")
8
82f9af6aa7e4 add net.cpp
pyon@macmini
parents: 4
diff changeset
119
15
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
120 fmt.Println("[access]", r.RemoteAddr, "|", time.Now().Format("2006-01-02 15:04"), "|", file)
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
121 //fmt.Println("--", img , "--")
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
122 write_log("[access] " + r.RemoteAddr + " " + file)
8
82f9af6aa7e4 add net.cpp
pyon@macmini
parents: 4
diff changeset
123
15
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
124 f, err := os.Open(file)
3
db4813125eb8 many changes.
pyon@macmini
parents: 1
diff changeset
125 if err != nil {
15
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
126 http.NotFound(w, r)
3
db4813125eb8 many changes.
pyon@macmini
parents: 1
diff changeset
127 return
db4813125eb8 many changes.
pyon@macmini
parents: 1
diff changeset
128 }
db4813125eb8 many changes.
pyon@macmini
parents: 1
diff changeset
129 defer f.Close()
8
82f9af6aa7e4 add net.cpp
pyon@macmini
parents: 4
diff changeset
130
82f9af6aa7e4 add net.cpp
pyon@macmini
parents: 4
diff changeset
131 fi, _ := f.Stat()
82f9af6aa7e4 add net.cpp
pyon@macmini
parents: 4
diff changeset
132
15
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
133 w.Header().Set("Content-Type", "rsearcher/octet-stream")
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
134 w.Header().Set("Content-Length", fmt.Sprintf("%d", fi.Size()))
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
135 io.Copy(w, f)
3
db4813125eb8 many changes.
pyon@macmini
parents: 1
diff changeset
136 }
4
06342fc544e4 mouse gesture.
pyon@macmini
parents: 3
diff changeset
137
16
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
138 // アップローダ
15
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
139 func upload_handler(w http.ResponseWriter, r *http.Request) {
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
140 if !not_ac && !is_valid_host(r.RemoteAddr) {
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
141 http.NotFound(w, r)
14
c1dc1fcee7fe print zoom.
pyon@macmini
parents: 13
diff changeset
142 return
c1dc1fcee7fe print zoom.
pyon@macmini
parents: 13
diff changeset
143 }
c1dc1fcee7fe print zoom.
pyon@macmini
parents: 13
diff changeset
144
15
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
145 fmt.Println("[access]", r.RemoteAddr, "|", time.Now().Format("2006-01-02 15:04"), "|", "/upload")
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
146 now := time.Now().Format("20060102_150405")
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
147 file := filepath.Join(server_root, "upload", now)
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
148 f, err := os.Create(file)
4
06342fc544e4 mouse gesture.
pyon@macmini
parents: 3
diff changeset
149 if err != nil {
15
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
150 http.NotFound(w, r)
4
06342fc544e4 mouse gesture.
pyon@macmini
parents: 3
diff changeset
151 return
06342fc544e4 mouse gesture.
pyon@macmini
parents: 3
diff changeset
152 }
15
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
153 n, err := io.Copy(f, r.Body)
4
06342fc544e4 mouse gesture.
pyon@macmini
parents: 3
diff changeset
154 if err != nil {
15
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
155 http.NotFound(w, r)
4
06342fc544e4 mouse gesture.
pyon@macmini
parents: 3
diff changeset
156 return
06342fc544e4 mouse gesture.
pyon@macmini
parents: 3
diff changeset
157 }
06342fc544e4 mouse gesture.
pyon@macmini
parents: 3
diff changeset
158 f.Close()
15
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
159 w.Write([]byte(fmt.Sprintf("%d bytes are recieved.\n", n)))
4
06342fc544e4 mouse gesture.
pyon@macmini
parents: 3
diff changeset
160 }
06342fc544e4 mouse gesture.
pyon@macmini
parents: 3
diff changeset
161
16
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
162 // データベース保存
15
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
163 func mngdb_handler(w http.ResponseWriter, r *http.Request) {
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
164 if !not_ac && !is_valid_host(r.RemoteAddr) {
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
165 http.NotFound(w, r)
14
c1dc1fcee7fe print zoom.
pyon@macmini
parents: 13
diff changeset
166 return
c1dc1fcee7fe print zoom.
pyon@macmini
parents: 13
diff changeset
167 }
c1dc1fcee7fe print zoom.
pyon@macmini
parents: 13
diff changeset
168
15
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
169 fmt.Println("[access]", r.RemoteAddr, "|", time.Now().Format("2006-01-02 15:04" ), "|", "/mngdb")
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
170 write_log("[access] " + r.RemoteAddr + "manage-db")
16
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
171
15
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
172 db := r.URL.Path[len("/mngdb/"):]
12
240752cbe11b db-upload.(by go)
pyon@macmini
parents: 8
diff changeset
173
15
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
174 file := filepath.Join(server_root, "db", db)
12
240752cbe11b db-upload.(by go)
pyon@macmini
parents: 8
diff changeset
175
15
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
176 f, err := os.Create(file)
12
240752cbe11b db-upload.(by go)
pyon@macmini
parents: 8
diff changeset
177 if err != nil {
15
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
178 http.NotFound(w, r)
12
240752cbe11b db-upload.(by go)
pyon@macmini
parents: 8
diff changeset
179 return
240752cbe11b db-upload.(by go)
pyon@macmini
parents: 8
diff changeset
180 }
15
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
181 _, err = io.Copy(f, r.Body)
12
240752cbe11b db-upload.(by go)
pyon@macmini
parents: 8
diff changeset
182 if err != nil {
15
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
183 http.NotFound(w, r)
12
240752cbe11b db-upload.(by go)
pyon@macmini
parents: 8
diff changeset
184 return
240752cbe11b db-upload.(by go)
pyon@macmini
parents: 8
diff changeset
185 }
240752cbe11b db-upload.(by go)
pyon@macmini
parents: 8
diff changeset
186 f.Close()
240752cbe11b db-upload.(by go)
pyon@macmini
parents: 8
diff changeset
187 }
240752cbe11b db-upload.(by go)
pyon@macmini
parents: 8
diff changeset
188
16
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
189 // 被保険者情報取得
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
190 func hinfo_handler(w http.ResponseWriter, r *http.Request) {
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
191 if !not_ac && !is_valid_host(r.RemoteAddr) {
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
192 http.NotFound(w, r)
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
193 return
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
194 }
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
195 fmt.Println("[access]", r.RemoteAddr, "|", time.Now().Format("2006-01-02 15:04" ), "|", "/hinfo")
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
196 write_log("[access] " + r.RemoteAddr + "hinfo")
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
197
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
198 h := r.URL.Path[len("/hinfo/"):]
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
199 hhs := hhash[h]
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
200
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
201 w.Write([]byte(hhs.String()))
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
202 }
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
203
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
204 func hlist_handler(w http.ResponseWriter, r *http.Request) {
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
205 if !not_ac && !is_valid_host(r.RemoteAddr) {
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
206 http.NotFound(w, r)
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
207 return
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
208 }
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
209 fmt.Println("[access]", r.RemoteAddr, "|", time.Now().Format("2006-01-02 15:04" ), "|", "/hlist")
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
210 write_log("[access] " + r.RemoteAddr + "list")
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
211
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
212 hlist := r.URL.Path[len("/hlist/"):]
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
213 var s string
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
214 for _, h := range strings.Split(hlist, ":") {
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
215 hhs := hhash[h]
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
216 s += hhs.SString() + "\n"
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
217 }
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
218
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
219 w.Write([]byte(s))
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
220 }
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
221
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
222 // ホワイトリスト判定
15
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
223 func is_valid_host(host string) bool {
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
224 f, _ := os.Open(wlfile)
14
c1dc1fcee7fe print zoom.
pyon@macmini
parents: 13
diff changeset
225 defer f.Close()
15
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
226 input := bufio.NewScanner(f)
14
c1dc1fcee7fe print zoom.
pyon@macmini
parents: 13
diff changeset
227 for input.Scan() {
c1dc1fcee7fe print zoom.
pyon@macmini
parents: 13
diff changeset
228 if input.Text() == host {
c1dc1fcee7fe print zoom.
pyon@macmini
parents: 13
diff changeset
229 return true
c1dc1fcee7fe print zoom.
pyon@macmini
parents: 13
diff changeset
230 }
c1dc1fcee7fe print zoom.
pyon@macmini
parents: 13
diff changeset
231 }
c1dc1fcee7fe print zoom.
pyon@macmini
parents: 13
diff changeset
232 return false
c1dc1fcee7fe print zoom.
pyon@macmini
parents: 13
diff changeset
233 }
c1dc1fcee7fe print zoom.
pyon@macmini
parents: 13
diff changeset
234
16
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
235 // 被保険者DB読み込み
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
236 func read_hhsdb() {
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
237 hhash = make(map[string]hhs)
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
238 pt := decrypto(key, hdbfile)
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
239 for _, line := range strings.Split(pt, "\n") {
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
240 c := strings.Split(line, ",")
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
241 if len(c) == 6 {
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
242 hhash[c[0]] = hhs{no: c[0], name: c[1], kana: c[2], addr: c[3], birth: c[4], sex: c[5]}
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
243 }
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
244 }
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
245 }
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
246
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
247 // 復号化
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
248 func decrypto( key, file string ) string {
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
249 k, _ := hex.DecodeString(key)
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
250 block, err := aes.NewCipher(k)
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
251 if err != nil {
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
252 panic( err )
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
253 }
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
254 ciphertext, err := ioutil.ReadFile(file)
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
255 if err != nil {
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
256 log.Fatal(err)
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
257 }
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
258
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
259 iv := ciphertext[ :aes.BlockSize ]
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
260 plaintext := make([]byte, len(ciphertext[ aes.BlockSize: ]))
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
261 stream := cipher.NewCTR(block, iv)
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
262 stream.XORKeyStream(plaintext, ciphertext[ aes.BlockSize: ])
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
263
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
264 return string(plaintext)
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
265 }
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
266
b651aa41b9d4 hhsinfo method (server)
pyon@macmini
parents: 15
diff changeset
267 // ログ
15
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
268 func write_log(msg string) {
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
269 f, err := os.OpenFile(logfile, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
8
82f9af6aa7e4 add net.cpp
pyon@macmini
parents: 4
diff changeset
270 if err != nil {
15
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
271 log.Fatal(err)
8
82f9af6aa7e4 add net.cpp
pyon@macmini
parents: 4
diff changeset
272 }
82f9af6aa7e4 add net.cpp
pyon@macmini
parents: 4
diff changeset
273 defer f.Close()
82f9af6aa7e4 add net.cpp
pyon@macmini
parents: 4
diff changeset
274
15
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
275 logger := log.New(f, "", log.LstdFlags)
c262e17de9b1 db download skip-mode.
pyon@macmini
parents: 14
diff changeset
276 logger.Println(msg)
8
82f9af6aa7e4 add net.cpp
pyon@macmini
parents: 4
diff changeset
277 }
82f9af6aa7e4 add net.cpp
pyon@macmini
parents: 4
diff changeset
278