annotate lsserver.go @ 0:615a15029602 default tip

first commit.
author pyon@macmini
date Sun, 10 Nov 2019 08:39:41 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
1 /*
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
2 server.go : server-program.
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
3 Version : 0.1
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
4 Last Change: 2019-11-08 金 17:47:26.
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
5 */
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
6 package main
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
7
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
8 import (
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
9 "bufio"
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
10 "fmt"
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
11 "log"
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
12 "net/http"
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
13 "os"
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
14 "strconv"
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
15 "strings"
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
16 )
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
17
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
18 const (
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
19 version = "0.1"
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
20
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
21 userdb = "user.gz.txt"
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
22 hhsdb = "hhsdb.gz.txt"
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
23 indexdb = "indexdb.gz.txt"
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
24 )
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
25
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
26 var (
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
27 server string
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
28
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
29 userhash map[string]user
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
30 hhshash map[string]hhs
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
31 )
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
32
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
33 type user struct {
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
34 id string
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
35 group int
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
36 name string
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
37 }
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
38
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
39 type hhs struct {
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
40 no string
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
41 name string
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
42 kana string
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
43 addr string
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
44 birth string
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
45 sex string
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
46 dates []string
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
47 }
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
48
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
49 func (h *hhs) Info() string {
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
50 dates := ""
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
51 for _, d := range h.dates {
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
52 dates += ":" + d
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
53 }
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
54 s := []string{h.name, h.addr, dates}
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
55 return strings.Join(s, ",")
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
56 }
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
57
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
58 func init() {
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
59 server = "localhost:80"
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
60 }
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
61
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
62 func main() {
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
63 load_user()
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
64 load_hhs()
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
65 load_index()
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
66
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
67 // start Web-server
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
68 fmt.Println("Le:Searcher-Server start [", server, "] ( version", version, ")")
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
69 http.HandleFunc("/auth/", auth_handler)
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
70 http.HandleFunc("/search/", search_handler)
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
71 http.HandleFunc("/index/", index_handler)
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
72 log.Fatal(http.ListenAndServe(server, nil))
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
73 }
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
74
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
75 // DB-Load Functions
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
76 func load_user() error {
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
77 // userid:n
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
78 userhash = make(map[string]user)
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
79
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
80 f, err := os.OpenFile(userdb, os.O_RDONLY, 0644)
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
81 if err != nil {
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
82 return err
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
83 }
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
84 scanner := bufio.NewScanner(f)
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
85 for scanner.Scan() {
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
86 s := strings.Split(scanner.Text(), ":")
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
87 g, _ := strconv.Atoi(s[1])
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
88 u := user{id: s[0], group: g, name: s[2]}
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
89 userhash[s[0]] = u
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
90 }
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
91 if err := scanner.Err(); err != nil {
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
92 fmt.Fprintln(os.Stderr, "reading userdb", err)
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
93 }
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
94 if err := f.Close(); err != nil {
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
95 return err
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
96 }
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
97 return nil
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
98 }
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
99
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
100 func load_hhs() error {
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
101 hhshash = make(map[string]hhs)
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
102
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
103 f, err := os.OpenFile(hhsdb, os.O_RDONLY, 0644)
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
104 if err != nil {
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
105 return err
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
106 }
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
107 scanner := bufio.NewScanner(f)
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
108 for scanner.Scan() {
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
109 s := strings.Split(scanner.Text(), ",")
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
110 h := hhs{no: s[0], name: s[1]}
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
111 hhshash[s[0]] = h
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
112 }
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
113 if err := scanner.Err(); err != nil {
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
114 fmt.Fprintln(os.Stderr, "reading hhsdb", err)
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
115 }
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
116 if err := f.Close(); err != nil {
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
117 return err
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
118 }
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
119 return nil
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
120 }
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
121
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
122 func load_index() error {
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
123 // hhsno:date
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
124 f, err := os.OpenFile(indexdb, os.O_RDONLY, 0644)
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
125 if err != nil {
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
126 return err
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
127 }
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
128 scanner := bufio.NewScanner(f)
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
129 for scanner.Scan() {
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
130 s := strings.Split(scanner.Text(), ":")
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
131 h := hhshash[s[0]]
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
132 h.dates = append(h.dates, s[1])
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
133 hhshash[s[0]] = h
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
134 }
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
135 if err := scanner.Err(); err != nil {
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
136 fmt.Fprintln(os.Stderr, "reading indexdb", err)
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
137 }
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
138 if err := f.Close(); err != nil {
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
139 return err
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
140 }
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
141 return nil
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
142 }
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
143
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
144 // HTTP Handlers
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
145 func auth_handler(w http.ResponseWriter, r *http.Request) {
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
146 // Toggle Le:Searcher-Client menu
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
147 // userid : UpdateDB, Index, M&M, BPrint, UserMng
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
148 // 7moon : 1, 1, 1, 1, 1 => manager :0
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
149 // kaigo : 0, 1, 1, 1, 0 => staff :1 # acl by IPaddress
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
150 // chosha : 0, 0, 0, 0, 0 => chosa :2
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
151 fmt.Println("auth")
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
152
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
153 id := r.URL.Path[len("/auth/"):]
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
154 fmt.Println(id)
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
155 g := 0
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
156 switch g {
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
157 case 0:
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
158 w.Write([]byte("0"))
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
159 case 1:
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
160 w.Write([]byte("1"))
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
161 default:
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
162 w.Write([]byte("2"))
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
163 }
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
164 }
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
165
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
166 func search_handler(w http.ResponseWriter, r *http.Request) {
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
167 // /search/userid:hhsno:date
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
168 // n=00000000 -> name & address & dates
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
169 // n>00000000 -> tif image
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
170 fmt.Println("search")
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
171
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
172 p := r.URL.Path[len("/search/"):]
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
173 s := strings.Split(p, ":")
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
174 if false { // invalid user
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
175 http.NotFound(w, r)
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
176 return
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
177 }
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
178 if strings.Compare(s[1], "00000000") == 0 {
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
179 h := hhshash[s[1]]
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
180 w.Write([]byte(h.Info()))
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
181 return
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
182 }
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
183
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
184 }
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
185
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
186 func index_handler(w http.ResponseWriter, r *http.Request) {
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
187 fmt.Println("index")
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
188 }
615a15029602 first commit.
pyon@macmini
parents:
diff changeset
189