diff go/server.go @ 8:82f9af6aa7e4

add net.cpp
author pyon@macmini
date Tue, 30 Oct 2018 17:26:02 +0900
parents 06342fc544e4
children 240752cbe11b
line wrap: on
line diff
--- a/go/server.go	Fri Oct 26 21:05:11 2018 +0900
+++ b/go/server.go	Tue Oct 30 17:26:02 2018 +0900
@@ -1,7 +1,7 @@
 /*
  server.go  : server-program.
  Version    : 1.1
- Last Change: 2018-10-12 金 14:37:48.
+ Last Change: 2018-10-29 月 14:58:19.
 
  install to: server_root/
 
@@ -23,15 +23,19 @@
 	"time"
 )
 
-var server string
-var port   string
-var server_root string
-var version string
+var (
+	version string
+	server string
+	port   string
+	server_root string
+	logfile string
+)
 
 func init() {
+	version = "1.2"	// log version
 	port = ":3910"
     server_root = filepath.Dir( os.Args[0] )
-	version = "1.1"
+	logfile = filepath.Join( server_root, "rsearcher.log" )
 }
 
 func main() {
@@ -58,13 +62,21 @@
 
 func handler( w http.ResponseWriter, r *http.Request ) {
 	file := filepath.Join( server_root, filepath.FromSlash( r.URL.Path ) )
+
 	fmt.Println( "[access]", r.RemoteAddr, "|", time.Now().Format( "2006-01-02 15:04" ), "|", file )
+	write_log( "[access] " + r.RemoteAddr + " " + file )
+
 	f, err := os.Open( file )
 	if err != nil {
 		http.NotFound( w, r )
 		return
 	}
 	defer f.Close()
+
+	fi, _ := f.Stat()
+
+	w.Header().Set( "Content-Type",   "rsearcher/octet-stream" )
+	w.Header().Set( "Content-Length", fmt.Sprintf( "%d", fi.Size() ) )
 	io.Copy( w, f )
 }
 
@@ -86,3 +98,14 @@
 	w.Write( []byte( fmt.Sprintf( "%d bytes are recieved.\n", n ) ) )
 }
 
+func write_log( msg string ) {
+	f, err := os.OpenFile( logfile, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644 )
+	if err != nil {
+		log.Fatal( err )
+	}
+	defer f.Close()
+
+	logger := log.New( f, "", log.LstdFlags )
+	logger.Println( msg )
+}
+