// i18nLoad wraps the i18n process. func i18nLoad(handler func(w http.ResponseWriter, r *http.Request)) func(w http.ResponseWriter, r *http.Request) { return func(w http.ResponseWriter, r *http.Request) { i18n.Load() handler(w, r) } }
func indexHandler(w http.ResponseWriter, r *http.Request) { i18n.Load() model := map[string]interface{}{"Wide": conf.Wide, "i18n": i18n.GetLangs(r), "locale": i18n.GetLocale(r)} session, _ := user.Session.Get(r, "wide-session") if session.IsNew { // TODO: 写死以 admin 作为用户登录 name := conf.Wide.Users[0].Name session.Values["username"] = name session.Values["id"] = strconv.Itoa(rand.Int()) // 一天过期 session.Options.MaxAge = 60 * 60 * 24 glog.Infof("Created a session [%s] for user [%s]", session.Values["id"].(string), name) } session.Save(r, w) t, err := template.ParseFiles("view/index.html") if nil != err { glog.Error(err) http.Error(w, err.Error(), 500) return } t.Execute(w, model) }
// The only one init function in Wide. func init() { confPath := flag.String("conf", "conf/wide.json", "path of wide.json") confIP := flag.String("ip", "", "this will overwrite Wide.IP if specified") confPort := flag.String("port", "", "this will overwrite Wide.Port if specified") confServer := flag.String("server", "", "this will overwrite Wide.Server if specified") confLogLevel := flag.String("log_level", "", "this will overwrite Wide.LogLevel if specified") confStaticServer := flag.String("static_server", "", "this will overwrite Wide.StaticServer if specified") confContext := flag.String("context", "", "this will overwrite Wide.Context if specified") confChannel := flag.String("channel", "", "this will overwrite Wide.Channel if specified") confStat := flag.Bool("stat", false, "whether report statistics periodically") confDocker := flag.Bool("docker", false, "whether run in a docker container") confPlayground := flag.String("playground", "", "this will overwrite Wide.Playground if specified") flag.Parse() log.SetLevel("warn") logger = log.NewLogger(os.Stdout) wd := util.OS.Pwd() if strings.HasPrefix(wd, os.TempDir()) { logger.Error("Don't run Wide in OS' temp directory or with `go run`") os.Exit(-1) } i18n.Load() event.Load() conf.Load(*confPath, *confIP, *confPort, *confServer, *confLogLevel, *confStaticServer, *confContext, *confChannel, *confPlayground, *confDocker) conf.FixedTimeCheckEnv() session.FixedTimeSave() session.FixedTimeRelease() if *confStat { session.FixedTimeReport() } logger.Debug("host ["+runtime.Version()+", "+runtime.GOOS+"_"+runtime.GOARCH+"], cross-compilation ", util.Go.GetCrossPlatforms()) }