[server]
PROTOCOL = http
DOMAIN = localhost
-ROOT_URL = %(PROTOCOL)s://%(DOMAIN)s:3000/
+ROOT_URL = %(PROTOCOL)s://%(DOMAIN)s:%(HTTP_PORT)s/
+HTTP_ADDR =
+HTTP_PORT = 3000
; Disable CDN even in "prod" mode
OFFLINE_MODE = false
+ROUTER_LOG = true
; Generate steps:
; $ cd path/to/gogs/custom/https
; $ go run $GOROOT/src/pkg/crypto/tls/generate_cert.go -ca=true -duration=8760h0m0s -host=myhost.example.com
case "postgres":
var host, port = "127.0.0.1", "5432"
fields := strings.Split(DbCfg.Host, ":")
- if len(fields) > 0 {
+ if len(fields) > 0 && len(strings.TrimSpace(fields[0])) > 0 {
host = fields[0]
}
- if len(fields) > 1 {
+ if len(fields) > 1 && len(strings.TrimSpace(fields[1])) > 0 {
port = fields[1]
}
cnnstr := fmt.Sprintf("user=%s password=%s host=%s port=%s dbname=%s sslmode=%s",
case "postgres":
var host, port = "127.0.0.1", "5432"
fields := strings.Split(DbCfg.Host, ":")
- if len(fields) > 0 {
+ if len(fields) > 0 && len(strings.TrimSpace(fields[0])) > 0 {
host = fields[0]
}
- if len(fields) > 1 {
+ if len(fields) > 1 && len(strings.TrimSpace(fields[1])) > 0 {
port = fields[1]
}
orm, err = xorm.NewEngine("postgres", fmt.Sprintf("user=%s password=%s host=%s port=%s dbname=%s sslmode=%s",
AppLogo string
AppUrl string
OfflineMode bool
+ RouterLog bool
ProdMode bool
Domain string
SecretKey string
AppUrl = Cfg.MustValue("server", "ROOT_URL")
Domain = Cfg.MustValue("server", "DOMAIN")
OfflineMode = Cfg.MustBool("server", "OFFLINE_MODE", false)
+ RouterLog = Cfg.MustBool("server", "ROUTER_LOG", true)
SecretKey = Cfg.MustValue("security", "SECRET_KEY")
InstallLock = Cfg.MustBool("security", "INSTALL_LOCK", false)
// Handle handles and logs error by given status.
func (ctx *Context) Handle(status int, title string, err error) {
- log.Error("%s: %v", title, err)
- if martini.Dev != martini.Prod {
- ctx.Data["ErrorMsg"] = err
+ if err != nil {
+ log.Error("%s: %v", title, err)
+ if martini.Dev != martini.Prod {
+ ctx.Data["ErrorMsg"] = err
+ }
}
+ switch status {
+ case 404:
+ ctx.Data["Title"] = "Page Not Found"
+ case 500:
+ ctx.Data["Title"] = "Internal Server Error"
+ }
ctx.HTML(status, fmt.Sprintf("status/%d", status))
}
"time"
"github.com/go-martini/martini"
+
+ "github.com/gogits/gogs/modules/base"
)
var isWindows bool
func Logger() martini.Handler {
return func(res http.ResponseWriter, req *http.Request, ctx martini.Context, log *log.Logger) {
+ if !base.RouterLog {
+ return
+ }
+
start := time.Now()
log.Printf("Started %s %s", req.Method, req.URL.Path)
ctx.Data["AppUrl"] = base.AppUrl
ctx.Data["Domain"] = base.Domain
ctx.Data["OfflineMode"] = base.OfflineMode
+ ctx.Data["RouterLog"] = base.RouterLog
ctx.Data["RunUser"] = base.RunUser
ctx.Data["RunMode"] = strings.Title(martini.Env)
ctx.Data["RepoRootPath"] = base.RepoRootPath
<dd>{{.Domain}}</dd>
<dt>Offline Mode</dt>
<dd><i class="fa fa{{if .OfflineMode}}-check{{end}}-square-o"></i></dd>
+ <dt>Router Log</dt>
+ <dd><i class="fa fa{{if .RouterLog}}-check{{end}}-square-o"></i></dd>
<hr/>
<dt>Run User</dt>
<dd>{{.RunUser}}</dd>
m := martini.New()
m.Use(middleware.Logger())
m.Use(martini.Recovery())
- m.Use(martini.Static("public"))
+ m.Use(martini.Static("public", martini.StaticOptions{SkipLogging: !base.RouterLog}))
m.MapTo(r, (*martini.Routes)(nil))
m.Action(r.Handle)
return &martini.ClassicMartini{m, r}
qlog.Error(err.Error())
}
}
+ qlog.Fatalf("Invalid protocol: %s", protocol)
}