view go/server.go @ 0:d3b8cd5aeb70

make repo.
author pyon@macmini
date Sun, 30 Sep 2018 17:27:04 +0900
parents
children eaa27e4ed5be
line wrap: on
line source

/*
 server.go  : server-program.
 Version    : 1.0
 Last Change: 2018-09-30 Sun 16:03:40.

 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"

	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
			}
		}
	}

    cwd, err := os.Getwd()
    if err != nil {
        log.Fatal( err )
    }

	fmt.Println( "server start [", server, "]" )
	http.HandleFunc( "/", func( w http.ResponseWriter, r *http.Request ) {
        file := filepath.Join( cwd, 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 ) )
}