| package main |
| |
| import ( |
| "flag" |
| "fmt" |
| "mime" |
| "net/http" |
| "strings" |
| |
| "github.com/golang/glog" |
| |
| "code.hackerspace.pl/hscloud/hswaw/cebulacamp/landing/static" |
| ) |
| |
| var ( |
| flagBind string |
| ) |
| |
| func init() { |
| flag.Set("logtostderr", "true") |
| } |
| |
| func main() { |
| flag.StringVar(&flagBind, "bind", "0.0.0.0:8080", "Address at which to serve HTTP requests") |
| flag.Parse() |
| http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { |
| path := r.URL.Path |
| if path == "/" { |
| path = "/index.html" |
| } |
| path = strings.TrimPrefix(path, "/") |
| staticPath := fmt.Sprintf("hswaw/cebulacamp/landing/%s", path) |
| if data, ok := static.Data[staticPath]; ok { |
| parts := strings.Split(path, ".") |
| ext := fmt.Sprintf(".%s", parts[len(parts)-1]) |
| t := mime.TypeByExtension(ext) |
| w.Header().Set("Content-Type", t) |
| w.Write(data) |
| } else { |
| http.NotFound(w, r) |
| } |
| }) |
| |
| glog.Infof("Starting up at %v", flagBind) |
| err := http.ListenAndServe(flagBind, nil) |
| if err != nil { |
| glog.Exit(err) |
| } |
| } |