Mercurial > mercurial > hgweb_rsearcher.cgi
comparison go/client.go @ 12:240752cbe11b
db-upload.(by go)
author | pyon@macmini |
---|---|
date | Tue, 13 Nov 2018 21:11:20 +0900 |
parents | 82f9af6aa7e4 |
children | f5ffc34f045a |
comparison
equal
deleted
inserted
replaced
11:799b6008db8e | 12:240752cbe11b |
---|---|
1 /* | 1 /* |
2 client.go : client-program. | 2 client.go : client-program. |
3 Version : 1.2 | 3 Version : 1.3 |
4 Last Change: 2018-10-30 火 09:13:24. | 4 Last Change: 2018-11-13 火 12:03:00. |
5 | 5 |
6 install to: rsearcher_root/ | 6 install to: rsearcher_root/ |
7 | 7 |
8 rsearcher_root/client.exe | 8 rsearcher_root/client.exe |
9 + grsearcher.exe | 9 + grsearcher.exe |
10 + app.conf | 10 + app.conf |
11 + verup.bat | 11 + upgrade.bat |
12 + auth.db ( temporary ) | 12 + auth.db ( temporary ) |
13 + hhs.db ( temporary ) | 13 + hhs.db ( temporary ) |
14 + index.db ( 10 days ) | 14 + index.db ( 14 days ) |
15 + image/*.png, *.jpg | 15 + image/*.png, *.jpg |
16 + doc/ | 16 + doc/ |
17 + .cache/* ( temporary ) | 17 + .cache/* ( temporary ) |
18 | 18 |
19 $ client.exe -r 192.168.0.1:3910 # get new release | 19 $ client.exe -r 192.168.0.1:3910 # get new release |
20 $ client.exe -u 192.168.0.1:3910 # get new dbs | 20 $ client.exe -u 192.168.0.1:3910 # get new dbs |
21 $ client.exe 192.168.0.1:3910 0800012345 20171231 # get images | 21 $ client.exe 192.168.0.1:3910 0800012345 20171231 # get images |
22 $ client.exe -a 192.168.0.1:3910 upfile.txt # upload file | 22 $ client.exe -a 192.168.0.1:3910 upfile.txt # upload file to /upload |
23 $ client.exe -m 192.168.0.1:3910 hhs.db # upload file to /db | |
23 */ | 24 */ |
24 package main | 25 package main |
25 | 26 |
26 import ( | 27 import ( |
27 "archive/tar" | 28 "archive/tar" |
40 ) | 41 ) |
41 | 42 |
42 var version string | 43 var version string |
43 | 44 |
44 func init() { | 45 func init() { |
45 version = "1.2" | 46 version = "1.3" // manage-db version |
46 } | 47 } |
47 | 48 |
48 func main() { | 49 func main() { |
49 var upgrade = flag.Bool( "r", false, "" ) // get grsearcher.exe, crypto.exe client.exe | 50 var upgrade = flag.Bool( "r", false, "get new release" ) // get grsearcher.exe, crypto.exe client.exe |
50 var update = flag.Bool( "u", false, "" ) // get auth.db, hhs.db, index.db(14,28) | 51 var update = flag.Bool( "u", false, "get new DBs" ) // get auth.db, hhs.db, index.db(14,28) |
51 var upload = flag.Bool( "a", false, "" ) // post somefile | 52 var managedb = flag.Bool( "m", false, "upload to /db" ) // management db |
52 var cnttime = flag.Bool( "t", false, "" ) // count time | 53 var upload = flag.Bool( "a", false, "upload to /upload" ) // post somefile |
53 var printver = flag.Bool( "v", false, "" ) // print version | 54 var cnttime = flag.Bool( "t", false, "measure work time" ) // count time |
55 var printver = flag.Bool( "v", false, "print version" ) // print version | |
54 flag.Parse() | 56 flag.Parse() |
55 | 57 |
56 // print version | 58 // print version |
57 if *printver { | 59 if *printver { |
58 fmt.Println( "client [ ver", version, "]" ) | 60 fmt.Println( "client [ ver", version, "]" ) |
62 st := time.Now() // start time | 64 st := time.Now() // start time |
63 | 65 |
64 // upload | 66 // upload |
65 if *upload { | 67 if *upload { |
66 if flag.NArg() != 2 { | 68 if flag.NArg() != 2 { |
67 fmt.Fprintf( os.Stderr, "bad host or file.\n" ) | 69 fmt.Fprint( os.Stderr, "bad host or file.\n" ) |
68 os.Exit( 1 ) | 70 os.Exit( 1 ) |
69 } | 71 } |
70 host := flag.Args()[0] | 72 host := flag.Args()[0] |
71 file := flag.Args()[1] | 73 file := flag.Args()[1] |
72 fmt.Printf( "Sending %s...", file ) | 74 fmt.Printf( "Sending %s...", file ) |
73 f, err := os.Open( file ) | 75 if message, err := post_file( host, "/upload", file ); err != nil { |
74 if err != nil { | |
75 log.Fatal( err ) | 76 log.Fatal( err ) |
76 } | 77 } else { |
77 defer f.Close() | 78 fmt.Println( string( message ) ) |
78 | 79 } |
79 res, err := http.Post( "http://" + host + "/upload", "binary/octet-stream", f ) | 80 |
80 if err != nil { | 81 if *cnttime { |
82 fmt.Println( "---", time.Now().Sub( st ) ) | |
83 } | |
84 os.Exit( 0 ) | |
85 } | |
86 | |
87 // management db | |
88 if *managedb { | |
89 if flag.NArg() != 2 { | |
90 fmt.Fprint( os.Stderr, "bad remote host.\n" ) | |
91 os.Exit( 1 ) | |
92 } | |
93 host := flag.Args()[0] | |
94 file := flag.Args()[1] | |
95 fmt.Print( "Management DB..." ) | |
96 if _, err := post_file( host, "/mngdb/", file ); err != nil { | |
81 log.Fatal( err ) | 97 log.Fatal( err ) |
82 } | 98 } |
83 defer res.Body.Close() | |
84 message, _ := ioutil.ReadAll( res.Body ) | |
85 fmt.Println( string( message ) ) | |
86 | |
87 if *cnttime { | 99 if *cnttime { |
88 fmt.Println( "---", time.Now().Sub( st ) ) | 100 fmt.Println( "---", time.Now().Sub( st ) ) |
89 } | 101 } |
90 os.Exit( 0 ) | 102 os.Exit( 0 ) |
91 } | 103 } |
92 | 104 |
93 // software upgrade | 105 // software upgrade |
94 if *upgrade { | 106 if *upgrade { |
95 if flag.NArg() != 1 { | 107 if flag.NArg() != 1 { |
96 fmt.Fprintf( os.Stderr, "bad remote host.\n" ) | 108 fmt.Fprint( os.Stderr, "bad remote host.\n" ) |
97 os.Exit( 1 ) | 109 os.Exit( 1 ) |
98 } | 110 } |
99 fmt.Print( "Getting grsearcher.exe..." ) | 111 fmt.Print( "Getting grsearcher.exe..." ) |
100 host := flag.Args()[0] | 112 host := flag.Args()[0] |
101 if _, err := get_file( host, "/release/grsearcher.exe", "grsearcher.exe" ); err != nil { | 113 if _, err := get_file( host, "/release/grsearcher.exe", "grsearcher.exe" ); err != nil { |
116 } | 128 } |
117 | 129 |
118 // database update | 130 // database update |
119 if *update { | 131 if *update { |
120 if flag.NArg() != 1 { | 132 if flag.NArg() != 1 { |
121 fmt.Fprintf( os.Stderr, "bad remote host.\n" ) | 133 fmt.Fprint( os.Stderr, "bad remote host.\n" ) |
122 os.Exit( 1 ) | 134 os.Exit( 1 ) |
123 } | 135 } |
124 fmt.Print( "Getting auth.db..." ) | 136 fmt.Print( "Getting auth.db..." ) |
125 host := flag.Args()[0] | 137 host := flag.Args()[0] |
126 if _, err := get_file( host, "/db/auth.db", "auth.db" ); err != nil { | 138 if _, err := get_file( host, "/db/auth.db", "auth.db" ); err != nil { |
144 os.Exit( 0 ) | 156 os.Exit( 0 ) |
145 } | 157 } |
146 | 158 |
147 // main : image download | 159 // main : image download |
148 if flag.NArg() != 3 { | 160 if flag.NArg() != 3 { |
149 fmt.Fprintf( os.Stderr, "bad argument.\n" ) | 161 fmt.Fprint( os.Stderr, "bad argument.\n" ) |
150 os.Exit( 1 ) | 162 os.Exit( 1 ) |
151 } | 163 } |
152 | 164 |
153 host := flag.Args()[0] | 165 host := flag.Args()[0] |
154 h := flag.Args()[1] | 166 h := flag.Args()[1] |
158 if err != nil { | 170 if err != nil { |
159 log.Fatal( err ) | 171 log.Fatal( err ) |
160 } | 172 } |
161 m := r.FindString( h ) | 173 m := r.FindString( h ) |
162 if len( m ) == 0 { | 174 if len( m ) == 0 { |
163 fmt.Fprintf( os.Stderr, "bad hno.\n" ) | 175 fmt.Fprint( os.Stderr, "bad hno.\n" ) |
164 os.Exit( 1 ) | 176 os.Exit( 1 ) |
165 } | 177 } |
166 | 178 |
167 rfile := "/images/" + d + "/" + h + ".tgz" | 179 rfile := "/images/" + d + "/" + h + ".tgz" |
180 fmt.Print( "Getting", rfile ) | |
168 b, err := get_file( host, rfile, "" ) | 181 b, err := get_file( host, rfile, "" ) |
169 if err != nil { | 182 if err != nil { |
170 log.Fatal( err ) | 183 log.Fatal( err ) |
171 } | 184 } |
172 if err := untgz_images( d, b ); err != nil { | 185 if err := untgz_images( d, b ); err != nil { |
177 fmt.Println( "---", time.Now().Sub( st ) ) | 190 fmt.Println( "---", time.Now().Sub( st ) ) |
178 } | 191 } |
179 } | 192 } |
180 | 193 |
181 /* Subroutines */ | 194 /* Subroutines */ |
195 // HTTP POST | |
196 func post_file( host, path, file string ) ( []byte, error ) { | |
197 f, err := os.Open( file ) | |
198 if err != nil { | |
199 return nil, err | |
200 } | |
201 defer f.Close() | |
202 | |
203 res, err := http.Post( "http://" + host + path + file, "binary/octet-stream", f ) | |
204 if err != nil { | |
205 return nil, err | |
206 } | |
207 defer res.Body.Close() | |
208 return ioutil.ReadAll( res.Body ) | |
209 } | |
210 | |
182 // HTTP GET | 211 // HTTP GET |
183 func get_file( host, rfile, lfile string ) ( []byte, error ) { | 212 func get_file( host, rfile, lfile string ) ( []byte, error ) { |
184 res, err := http.Get( "http://" + host + "/" + rfile ) | 213 res, err := http.Get( "http://" + host + "/" + rfile ) |
185 if err != nil { | 214 if err != nil { |
186 return nil, err | 215 return nil, err |