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 |
