func init() { Server = tango.NewWithLog(log.Get().ToTangoLogger(), []tango.Handler{ tango.Recovery(true), tango.Return(), tango.Param(), tango.Contexts(), }...) }
// new server // set dstDir to make sure read correct static file func New(dstDir string) *Server { t := tango.New([]tango.Handler{ tango.Return(), tango.Param(), tango.Contexts(), tango.Recovery(true), }...) t.Logger().(*log.Logger).SetOutputLevel(log.Lerror) return &Server{ Tango: t, dstDir: dstDir, } }
// new http server with address func NewServer(address string) *Server { s := &Server{ address: address, } // use custom tango, not classic s.Tango = tango.NewWithLog(log.Get().ToTangoLogger(), []tango.Handler{ tango.Logging(), tango.Recovery(true), tango.Return(), tango.Param(), tango.Contexts(), }...) return s }
func (w *Web) Listen() error { w.Tango = tango.New([]tango.Handler{ tango.Return(), tango.Param(), tango.Contexts(), }...) addr := w.Host + ":" + w.Port listener, err := net.Listen("tcp", addr) if err != nil { return err } w.listener = listener server := &http.Server{Addr: addr, Handler: w.Tango} go server.Serve(tcpKeepAliveListener{listener.(*net.TCPListener)}) return nil }
func (is *BootstrapService) Init(v interface{}) (*Result, error) { opt, ok := v.(BootstrapInitOption) if !ok { return nil, ErrServiceFuncNeedType(is.Init, opt) } var err error if opt.Config { core.Cfg = core.NewConfig() if err = core.Cfg.Sync(core.ConfigFile); err != nil { return nil, err } } if core.Cfg != nil && opt.Database { // database depends on config log.SetLevelByString("error") tidb.Debug = false // close tidb debug core.Db, err = xorm.NewEngine(core.Cfg.Db.Driver, core.Cfg.Db.DSN) if err != nil { return nil, err } core.Db.SetLogger(nil) // core.Db.ShowDebug = true // core.Db.ShowSQL = true } if core.Cfg != nil && opt.Server { // server depends on config core.Server = tango.New([]tango.Handler{ tango.Return(), tango.Param(), tango.Contexts(), }...) core.Server.Use(tango.Static(tango.StaticOptions{ RootPath: core.StaticDirectory, Prefix: core.StaticPrefix, })) core.Server.Use(tango.Static(tango.StaticOptions{ RootPath: core.ThemeDirectory, Prefix: core.ThemePrefix, })) core.Server.Use(renders.New(renders.Options{ Reload: true, Directory: core.ThemeDirectory, Extensions: []string{".tmpl"}, Funcs: template.FuncMap{ "TimeUnixFormat": utils.TimeUnixFormat, "TimeUnixFriend": utils.TimeUnixFriend, "Mardown2Str": utils.Markdown2String, "Markdown2HTML": utils.Markdown2HTML, "Nl2BrHTML": utils.Nl2Br, "Nl2BrString": utils.Nl2BrString, "BytesSizeFriend": utils.FriendBytesSize, }, })) sessions := session.New(session.Options{ SessionIdName: core.SessionName, }) core.Server.Use(xsrf.New(time.Hour)) core.Server.Use(binding.Bind()) core.Server.Use(sessions) core.Server.Use(flash.Flashes(sessions)) } return nil, nil }