diff 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
line wrap: on
line diff
--- a/go/client.go	Mon Nov 12 19:35:50 2018 +0900
+++ b/go/client.go	Tue Nov 13 21:11:20 2018 +0900
@@ -1,17 +1,17 @@
 /*
  client.go  : client-program.
- Version    : 1.2
- Last Change: 2018-10-30 火 09:13:24.
+ Version    : 1.3
+ Last Change: 2018-11-13 火 12:03:00.
 
  install to: rsearcher_root/
 
  rsearcher_root/client.exe
                + grsearcher.exe
                + app.conf
-               + verup.bat
+               + upgrade.bat
                + auth.db ( temporary )
                + hhs.db  ( temporary )
-               + index.db ( 10 days )
+               + index.db ( 14 days )
                + image/*.png, *.jpg
                + doc/
                + .cache/* ( temporary )
@@ -19,7 +19,8 @@
  $ client.exe -r 192.168.0.1:3910                   # get new release
  $ client.exe -u 192.168.0.1:3910                   # get new dbs
  $ client.exe 192.168.0.1:3910 0800012345 20171231  # get images
- $ client.exe -a 192.168.0.1:3910 upfile.txt        # upload file
+ $ client.exe -a 192.168.0.1:3910 upfile.txt        # upload file to /upload
+ $ client.exe -m 192.168.0.1:3910 hhs.db            # upload file to /db
 */
 package main
 
@@ -42,15 +43,16 @@
 var version string
 
 func init() {
-	version = "1.2"
+	version = "1.3"	// manage-db version
 }
 
 func main() {
-    var upgrade  = flag.Bool( "r", false, "" )  // get grsearcher.exe, crypto.exe client.exe
-    var update   = flag.Bool( "u", false, "" )  // get auth.db, hhs.db, index.db(14,28)
-    var upload   = flag.Bool( "a", false, "" )  // post somefile
-    var cnttime  = flag.Bool( "t", false, "" )  // count time
-    var printver = flag.Bool( "v", false, "" )  // print version
+    var upgrade  = flag.Bool( "r", false, "get new release" )    // get grsearcher.exe, crypto.exe client.exe
+    var update   = flag.Bool( "u", false, "get new DBs" )        // get auth.db, hhs.db, index.db(14,28)
+    var managedb = flag.Bool( "m", false, "upload to /db" )      // management db
+    var upload   = flag.Bool( "a", false, "upload to /upload" )  // post somefile
+    var cnttime  = flag.Bool( "t", false, "measure work time" )  // count time
+    var printver = flag.Bool( "v", false, "print version" )      // print version
 	flag.Parse()
 
 	// print version
@@ -64,26 +66,36 @@
 	// upload
     if *upload {
         if flag.NArg() != 2 {
-            fmt.Fprintf( os.Stderr, "bad host or file.\n" )
+            fmt.Fprint( os.Stderr, "bad host or file.\n" )
             os.Exit( 1 )
         }
         host := flag.Args()[0]
         file := flag.Args()[1]
         fmt.Printf( "Sending %s...", file )
-		f, err := os.Open( file )
-		if err != nil {
+		if message, err := post_file( host, "/upload", file ); err != nil {
+			log.Fatal( err )
+		} else {
+			fmt.Println( string( message ) )
+		}
+
+		if *cnttime {
+			fmt.Println( "---", time.Now().Sub( st ) )
+		}
+		os.Exit( 0 )
+	}
+
+	// management db
+    if *managedb {
+        if flag.NArg() != 2 {
+            fmt.Fprint( os.Stderr, "bad remote host.\n" )
+            os.Exit( 1 )
+        }
+        host := flag.Args()[0]
+        file := flag.Args()[1]
+		fmt.Print( "Management DB..." )
+		if _, err := post_file( host, "/mngdb/", file ); err != nil {
 			log.Fatal( err )
 		}
-		defer f.Close()
-
-		res, err := http.Post( "http://" + host + "/upload", "binary/octet-stream", f )
-		if err != nil {
-			log.Fatal( err )
-		}
-		defer res.Body.Close()
-		message, _ := ioutil.ReadAll( res.Body )
-		fmt.Println( string( message ) )
-
 		if *cnttime {
 			fmt.Println( "---", time.Now().Sub( st ) )
 		}
@@ -93,7 +105,7 @@
 	// software upgrade
     if *upgrade {
         if flag.NArg() != 1 {
-            fmt.Fprintf( os.Stderr, "bad remote host.\n" )
+            fmt.Fprint( os.Stderr, "bad remote host.\n" )
             os.Exit( 1 )
         }
         fmt.Print( "Getting grsearcher.exe..." )
@@ -118,7 +130,7 @@
 	// database update
 	if *update {
         if flag.NArg() != 1 {
-            fmt.Fprintf( os.Stderr, "bad remote host.\n" )
+            fmt.Fprint( os.Stderr, "bad remote host.\n" )
             os.Exit( 1 )
         }
         fmt.Print( "Getting auth.db..." )
@@ -146,7 +158,7 @@
 
     // main : image download
 	if flag.NArg() != 3 {
-		fmt.Fprintf( os.Stderr, "bad argument.\n" )
+		fmt.Fprint( os.Stderr, "bad argument.\n" )
 		os.Exit( 1 )
 	}
 
@@ -160,11 +172,12 @@
 	}
 	m := r.FindString( h )
 	if len( m ) == 0 {
-		fmt.Fprintf( os.Stderr, "bad hno.\n" )
+		fmt.Fprint( os.Stderr, "bad hno.\n" )
 		os.Exit( 1 )
 	}
 
     rfile := "/images/" + d + "/" + h + ".tgz"
+	fmt.Print( "Getting", rfile )
     b, err := get_file( host, rfile, "" )
 	if err != nil {
 		log.Fatal( err )
@@ -179,6 +192,22 @@
 }
 
 /* Subroutines */
+// HTTP POST
+func post_file( host, path, file string ) ( []byte, error ) {
+	f, err := os.Open( file )
+	if err != nil {
+		return nil, err
+	}
+	defer f.Close()
+
+	res, err := http.Post( "http://" + host + path + file, "binary/octet-stream", f )
+	if err != nil {
+		return nil, err
+	}
+	defer res.Body.Close()
+	return ioutil.ReadAll( res.Body )
+}
+
 // HTTP GET
 func get_file( host, rfile, lfile string ) ( []byte, error ) {
     res, err := http.Get( "http://" + host + "/" + rfile )