]> source.dussan.org Git - gitea.git/commitdiff
Update session
authorUnknown <joe2010xtmf@163.com>
Sat, 22 Mar 2014 13:21:57 +0000 (09:21 -0400)
committerUnknown <joe2010xtmf@163.com>
Sat, 22 Mar 2014 13:21:57 +0000 (09:21 -0400)
.gopmfile
README.md
conf/app.ini
gogs.go
modules/base/conf.go
modules/base/tool.go
routers/admin/admin.go
templates/admin/config.tmpl
templates/admin/dashboard.tmpl

index 5b690a06a796e20e0e1ac4672a03b0dc0ac753c8..6e6b59c620238670abbe13a4918c8ff57c5df1bc 100644 (file)
--- a/.gopmfile
+++ b/.gopmfile
@@ -4,7 +4,6 @@ path=github.com/gogits/gogs
 [deps]
 github.com/codegangsta/cli=
 github.com/codegangsta/martini=
-github.com/martini-contrib/sessions=
 github.com/Unknwon/com=
 github.com/Unknwon/cae=
 github.com/Unknwon/goconfig=
index a9ab7fe49815c24c53ee48c1a35abb9156397edd..35044927ffa5e909f91e8a8ae02e1ede68271de9 100644 (file)
--- a/README.md
+++ b/README.md
@@ -43,7 +43,7 @@ There are two ways to install Gogs:
 ## Acknowledgments
 
 - Logo is inspired by [martini](https://github.com/martini-contrib).
-- Mail service is based on [WeTalk](https://github.com/beego/wetalk).
+- Mail Service is based on [WeTalk](https://github.com/beego/wetalk).
 - System Monitor Status is based on [GoBlog](https://github.com/fuxiaohei/goblog).
 
 ## Contributors
index cf2ae31d836ec29120470980d296b5b2f8da126f..30d6c7d4832eed01d2b0eb094ea0b7a162552fcd 100644 (file)
@@ -75,28 +75,25 @@ HOST =
 [session]
 ; Either "memory", "file", "redis" or "mysql", default is "memory"
 PROVIDER = file
-; provider config
+; Provider config options
 ; memory: not have any config yet
-; file: session file path
-; e.g. tmp/sessions
-; redis: config like redis server addr,poolSize,password
-; e.g. 127.0.0.1:6379,100,astaxie
-; mysql: go-sql-driver/mysql dsn config string
-; e.g. root:password@/session_table
+; file: session file path, e.g. data/sessions
+; redis: config like redis server addr, poolSize, password, e.g. 127.0.0.1:6379,100,astaxie
+; mysql: go-sql-driver/mysql dsn config string, e.g. root:password@/session_table
 PROVIDER_CONFIG = data/sessions
-; session cookie name
+; Session cookie name
 COOKIE_NAME = i_like_gogits
-; if you use session in https only, default is false
+; If you use session in https only, default is false
 COOKIE_SECURE = false
-; enable set cookie, default is true
+; Enable set cookie, default is true
 ENABLE_SET_COOKIE = true
-; session gc time interval, default is 86400
+; Session GC time interval, default is 86400
 GC_INTERVAL_TIME = 86400
-; session life time, default is 86400
+; Session life time, default is 86400
 SESSION_LIFE_TIME = 86400
-; session id hash func, default is sha1
+; Session id hash func, default is sha1
 SESSION_ID_HASHFUNC = sha1
-; session hash key, default is use random string
+; Session hash key, default is use random string
 SESSION_ID_HASHKEY =
 
 [picture]
diff --git a/gogs.go b/gogs.go
index 8ec4fd42f1da18dcf84b0a3e34ad6421f9b302e5..a609032093b91831748274468119e4d412c814e8 100644 (file)
--- a/gogs.go
+++ b/gogs.go
@@ -20,7 +20,7 @@ import (
 // Test that go1.2 tag above is included in builds. main.go refers to this definition.
 const go12tag = true
 
-const APP_VER = "0.1.5.0322"
+const APP_VER = "0.1.5.0322.2"
 
 func init() {
        base.AppVer = APP_VER
index d5e27d043b565cbb788a69f5d7d6f2b17341be1d..7c8ed9365481b1007352962d1ca890b9f7e0b983 100644 (file)
@@ -41,19 +41,19 @@ var (
        Cfg         *goconfig.ConfigFile
        MailService *Mailer
 
+       LogMode   string
+       LogConfig string
+
        Cache        cache.Cache
        CacheAdapter string
        CacheConfig  string
 
-       PictureService  string
-       PictureRootPath string
-
-       LogMode   string
-       LogConfig string
-
        SessionProvider string
        SessionConfig   *session.Config
        SessionManager  *session.Manager
+
+       PictureService  string
+       PictureRootPath string
 )
 
 var Service struct {
@@ -182,6 +182,10 @@ func newSessionService() {
        SessionConfig.SessionIDHashFunc = Cfg.MustValue("session", "SESSION_ID_HASHFUNC", "sha1")
        SessionConfig.SessionIDHashKey = Cfg.MustValue("session", "SESSION_ID_HASHKEY")
 
+       if SessionProvider == "file" {
+               os.MkdirAll(path.Dir(SessionConfig.ProviderConfig), os.ModePerm)
+       }
+
        var err error
        SessionManager, err = session.NewManager(SessionProvider, *SessionConfig)
        if err != nil {
index 8fabb8c531d9ce042046ad5c074e93d637f3e995..4f368aa58c1280689416cf8f3fb5d2b5e4ba7bad 100644 (file)
@@ -111,6 +111,85 @@ const (
        Year   = 12 * Month
 )
 
+func computeTimeDiff(diff int64) (int64, string) {
+       diffStr := ""
+       switch {
+       case diff <= 0:
+               diff = 0
+               diffStr = "now"
+       case diff < 2:
+               diff = 0
+               diffStr = "1 second"
+       case diff < 1*Minute:
+               diffStr = fmt.Sprintf("%d seconds", diff)
+               diff = 0
+
+       case diff < 2*Minute:
+               diff -= 1 * Minute
+               diffStr = "1 minute"
+       case diff < 1*Hour:
+               diffStr = fmt.Sprintf("%d minutes", diff/Minute)
+               diff -= diff / Minute * Minute
+
+       case diff < 2*Hour:
+               diff -= 1 * Hour
+               diffStr = "1 hour"
+       case diff < 1*Day:
+               diffStr = fmt.Sprintf("%d hours", diff/Hour)
+               diff -= diff / Hour * Hour
+
+       case diff < 2*Day:
+               diff -= 1 * Day
+               diffStr = "1 day"
+       case diff < 1*Week:
+               diffStr = fmt.Sprintf("%d days", diff/Day)
+               diff -= diff / Day * Day
+
+       case diff < 2*Week:
+               diff -= 1 * Week
+               diffStr = "1 week"
+       case diff < 1*Month:
+               diffStr = fmt.Sprintf("%d weeks", diff/Week)
+               diff -= diff / Week * Week
+
+       case diff < 2*Month:
+               diff -= 1 * Month
+               diffStr = "1 month"
+       case diff < 1*Year:
+               diffStr = fmt.Sprintf("%d months", diff/Month)
+               diff -= diff / Month * Month
+
+       case diff < 2*Year:
+               diff -= 1 * Year
+               diffStr = "1 year"
+       default:
+               diffStr = fmt.Sprintf("%d years", diff/Year)
+               diff = 0
+       }
+       return diff, diffStr
+}
+
+// TimeSincePro calculates the time interval and generate full user-friendly string.
+func TimeSincePro(then time.Time) string {
+       now := time.Now()
+       diff := now.Unix() - then.Unix()
+
+       if then.After(now) {
+               return "future"
+       }
+
+       var timeStr, diffStr string
+       for {
+               if diff == 0 {
+                       break
+               }
+
+               diff, diffStr = computeTimeDiff(diff)
+               timeStr += ", " + diffStr
+       }
+       return strings.TrimPrefix(timeStr, ", ")
+}
+
 // TimeSince calculates the time interval and generate user-friendly string.
 func TimeSince(then time.Time) string {
        now := time.Now()
@@ -123,7 +202,6 @@ func TimeSince(then time.Time) string {
        }
 
        switch {
-
        case diff <= 0:
                return "now"
        case diff <= 2:
@@ -156,8 +234,10 @@ func TimeSince(then time.Time) string {
        case diff < 1*Year:
                return fmt.Sprintf("%d months %s", diff/Month, lbl)
 
-       case diff < 18*Month:
+       case diff < 2*Year:
                return fmt.Sprintf("1 year %s", lbl)
+       default:
+               return fmt.Sprintf("%d years %s", diff/Year, lbl)
        }
        return then.String()
 }
index 57a46d1dfec5be1db2830cb69bb0e31004144f03..c0f39f715924d061fc79fe76c221e1839d9a9c2a 100644 (file)
@@ -17,7 +17,10 @@ import (
        "github.com/gogits/gogs/modules/middleware"
 )
 
+var startTime = time.Now()
+
 var sysStatus struct {
+       Uptime       string
        NumGoroutine int
 
        // General statistics.
@@ -58,6 +61,8 @@ var sysStatus struct {
 }
 
 func updateSystemStatus() {
+       sysStatus.Uptime = base.TimeSincePro(startTime)
+
        m := new(runtime.MemStats)
        runtime.ReadMemStats(m)
        sysStatus.NumGoroutine = runtime.NumGoroutine()
@@ -88,8 +93,8 @@ func updateSystemStatus() {
 
        sysStatus.NextGC = base.FileSize(int64(m.NextGC))
        sysStatus.LastGC = fmt.Sprintf("%.1fs", float64(time.Now().UnixNano()-int64(m.LastGC))/1000/1000/1000)
-       sysStatus.PauseTotalNs = fmt.Sprintf("%.1fs", float64(m.PauseTotalNs/1000/1000/1000))
-       sysStatus.PauseNs = fmt.Sprintf("%.3fs", float64(m.PauseNs[(m.NumGC+255)%256]/1000/1000/1000))
+       sysStatus.PauseTotalNs = fmt.Sprintf("%.1fs", float64(m.PauseTotalNs)/1000/1000/1000)
+       sysStatus.PauseNs = fmt.Sprintf("%.3fs", float64(m.PauseNs[(m.NumGC+255)%256])/1000/1000/1000)
        sysStatus.NumGC = m.NumGC
 }
 
@@ -151,6 +156,9 @@ func Config(ctx *middleware.Context) {
        ctx.Data["CacheAdapter"] = base.CacheAdapter
        ctx.Data["CacheConfig"] = base.CacheConfig
 
+       ctx.Data["SessionProvider"] = base.SessionProvider
+       ctx.Data["SessionConfig"] = base.SessionConfig
+
        ctx.Data["PictureService"] = base.PictureService
        ctx.Data["PictureRootPath"] = base.PictureRootPath
 
index e3f69ee6eab67b148d64913c3e9c3858ff9f27a4..048740e617b1e5d3a69baaa2b90f7ec0dd4646c5 100644 (file)
             </div>
         </div>
 
+        <div class="panel panel-default">
+            <div class="panel-heading">
+                Session Configuration
+            </div>
+
+            <div class="panel-body">
+                <div><b>Session Provider:</b> {{.SessionProvider}}</div>
+                <div><b>Cookie Name:</b> {{.SessionConfig.CookieName}}</div>
+                <div><b>Enable Set Cookie:</b> <i class="fa fa{{if .SessionConfig.EnableSetCookie}}-check{{end}}-square-o"></i></div>
+                <div><b>GC Interval Time:</b> {{.SessionConfig.GcIntervalTime}} seconds</div>
+                <div><b>Session Life Time:</b> {{.SessionConfig.SessionLifeTime}} seconds</div>
+                <div><b>HTTPS Only:</b> <i class="fa fa{{if .SessionConfig.CookieSecure}}-check{{end}}-square-o"></i></div>
+                <div><b>Cookie Life Time:</b> {{.SessionConfig.CookieLifeTime}} seconds</div>
+                <div><b>Session ID Hash Function:</b> {{.SessionConfig.SessionIDHashFunc}}</div>
+                <div><b>Session ID Hash Key:</b> {{.SessionConfig.SessionIDHashKey}}</div>
+                <div><b>Provider Config:</b> {{.SessionConfig.ProviderConfig}}</div>
+            </div>
+        </div>
+
         <div class="panel panel-default">
             <div class="panel-heading">
                 Picture Configuration
index 0bebf8318f6c0fba42284985e49cadcaf5b1d2db..2a5a161e03bd907ec24cd03670abf4af5a4d6715 100644 (file)
@@ -19,6 +19,7 @@
             </div>
 
             <div class="panel-body">
+                <div>Server Uptime: <b>{{.SysStatus.Uptime}}</b></div>
                 <div>Current Goroutines: <b>{{.SysStatus.NumGoroutine}}</b></div>
                 <hr/>
                 <div>Current Memory Usage: <b>{{.SysStatus.MemAllocated}}</b></div>