view go/server.go @ 2:7fe3417cefc8

GUI.
author pyon@macmini
date Tue, 02 Oct 2018 21:20:05 +0900
parents eaa27e4ed5be
children db4813125eb8
line wrap: on
line source

/*
 server.go  : server-program.
 Version    : 1.0
 Last Change: 2018-10-01 Mon 22:58:23.

 install to: server_root/

 server_root/server
            + db/
            + release/
            + images/
*/
package main

import(
    "path/filepath"
	"fmt"
	"io"
	"log"
	"net"
    "net/http"
	"os"
)

func main() {

	var server string
    var port = ":3910"
    var server_root = filepath.Dir (os.Args[0] )

	addrs, err := net.InterfaceAddrs()
	if err != nil {
		log.Fatal( err )
	}
	for _, a := range addrs {
		if ipnet, ok := a.( *net.IPNet ); ok && !ipnet.IP.IsLoopback() {
			if ipnet.IP.To4() != nil {
				server = ipnet.IP.String() + port
			}
		}
	}

	fmt.Println( "server start [", server, "]" )
	http.HandleFunc( "/", func( w http.ResponseWriter, r *http.Request ) {
        file := filepath.Join( server_root, filepath.FromSlash( r.URL.Path ) )
        fmt.Println( file )
        f, err := os.Open( file )
        if err != nil {
            http.NotFound( w, r )
            return
        }
        defer f.Close()
        io.Copy( w, f )
    } )
	log.Fatal( http.ListenAndServe( server, nil ) )
}