Mercurial > mercurial > hgweb_rsearcher.cgi
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( ¬_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 {