diff go/server.go @ 14:c1dc1fcee7fe

print zoom.
author pyon@macmini
date Sun, 09 Dec 2018 14:38:15 +0900
parents f5ffc34f045a
children c262e17de9b1
line wrap: on
line diff
--- a/go/server.go	Wed Nov 14 19:43:40 2018 +0900
+++ b/go/server.go	Sun Dec 09 14:38:15 2018 +0900
@@ -1,7 +1,7 @@
 /*
  server.go  : server-program.
- Version    : 1.3
- Last Change: 2018-11-14 水 17:03:30.
+ Version    : 1.4
+ Last Change: 2018-12-05 水 08:08:02.
 
  install to: server_root/
 
@@ -13,13 +13,15 @@
 package main
 
 import(
-    "path/filepath"
+	"bufio"
+	"flag"
 	"fmt"
 	"io"
 	"log"
 	"net"
     "net/http"
 	"os"
+    "path/filepath"
 	"time"
 )
 
@@ -29,17 +31,23 @@
 	port   string
 	server_root string
 	logfile string
+	not_ac bool
+	wlfile string
 )
 
 func init() {
-	version = "1.3"	// manage-db version
+	version = "1.4"	// piece-image version
 	port = ":3910"
     server_root = filepath.Dir( os.Args[0] )
 	logfile = filepath.Join( server_root, "rsearcher.log" )
+	wlfile = "rsearcher.whitelist"
 }
 
 func main() {
 
+    flag.BoolVar( &not_ac, "d", false, "no access control ( for debug )" )
+	flag.Parse()
+
 	// setting IP-Address & Port
 	addrs, err := net.InterfaceAddrs()
 	if err != nil {
@@ -62,9 +70,16 @@
 }
 
 func handler( w http.ResponseWriter, r *http.Request ) {
+	if !not_ac && !is_valid_host( r.RemoteAddr ) {
+		http.NotFound( w, r )
+		return
+	}
+
 	file := filepath.Join( server_root, filepath.FromSlash( r.URL.Path ) )
+	img := r.URL.Query().Get( "q" )
 
 	fmt.Println( "[access]", r.RemoteAddr, "|", time.Now().Format( "2006-01-02 15:04" ), "|", file )
+	fmt.Println( "--", img , "--")
 	write_log( "[access] " + r.RemoteAddr + " " + file )
 
 	f, err := os.Open( file )
@@ -82,6 +97,11 @@
 }
 
 func upload_handler( w http.ResponseWriter, r *http.Request ) {
+	if !not_ac && !is_valid_host( r.RemoteAddr ) {
+		http.NotFound( w, r )
+		return
+	}
+
 	fmt.Println( "[access]", r.RemoteAddr, "|", time.Now().Format( "2006-01-02 15:04" ), "|", "/upload" )
 	now := time.Now().Format( "20060102_150405" )
 	file := filepath.Join( server_root, "upload", now )
@@ -100,6 +120,11 @@
 }
 
 func mngdb_handler( w http.ResponseWriter, r *http.Request ) {
+	if !not_ac && !is_valid_host( r.RemoteAddr ) {
+		http.NotFound( w, r )
+		return
+	}
+
 	fmt.Println( "[access]", r.RemoteAddr, "|", time.Now().Format( "2006-01-02 15:04" ), "|", "/mngdb" )
 	write_log( "[access] " + r.RemoteAddr + "manage-db" )
 	db := r.URL.Path[ len( "/mngdb/" ): ]
@@ -119,6 +144,18 @@
 	f.Close()
 }
 
+func is_valid_host( host string ) bool {
+	f, _ := os.Open( wlfile )
+	defer f.Close()
+	input := bufio.NewScanner( f )
+	for input.Scan() {
+		if input.Text() == host {
+			return true
+		}
+	}
+	return false
+}
+
 func write_log( msg string ) {
 	f, err := os.OpenFile( logfile, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644 )
 	if err != nil {