package main import ( "log" "net/http" "os" "path/filepath" "text/template" "time" ) func main() { db.h = nil //make sure it's in proper state. workingdir := getWorkingDir() //setup log file filename := workingdir + "/logs/rpn.superforex." + time.Now().Format("2006-01-02-15-04-06") + ".log" f, err := os.OpenFile(filename, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) if err != nil { log.Fatalf("Error opening file: %v", err) } defer f.Close() log.SetOutput(f) //Read Config readConfig() //readConfigForTest() //setup http handler http.HandleFunc("/rpnNameAndCard", rpnNameAndCard) //ask name and card no http.HandleFunc("/rpn_notify", rpnNotify) //called by rpn http.HandleFunc("/alipay", leanworkInFAT) // leanwork in fs := wrapHandler(http.FileServer(http.Dir("./PG"))) //leanwork P2P embeded in http.HandleFunc("/", fs) //start listening svr := Config.Server.Host + ":" + Config.Server.Port log.Println("Server started on: " + svr) http.ListenAndServe(svr, nil) //program never reach here. } func getWorkingDir() string { dir, err := filepath.Abs(filepath.Dir(os.Args[0])) if err != nil { log.Fatal(err) } return dir } func errPage(w http.ResponseWriter, code int, msg string) { var data struct { ErrorMessage string } data.ErrorMessage = msg w.WriteHeader(code) t := template.Must(template.ParseFiles("PG/error.html")) t.Execute(w, data) }