Page Menu
Home
Musing Studio
Search
Configure Global Search
Log In
Files
F10494005
admin.go
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
4 KB
Subscribers
None
admin.go
View Options
package
writefreely
import
(
"fmt"
"github.com/gogits/gogs/pkg/tool"
"github.com/writeas/impart"
"github.com/writeas/web-core/auth"
"net/http"
"runtime"
"time"
)
var
(
appStartTime
=
time
.
Now
()
sysStatus
systemStatus
)
type
systemStatus
struct
{
Uptime
string
NumGoroutine
int
// General statistics.
MemAllocated
string
// bytes allocated and still in use
MemTotal
string
// bytes allocated (even if freed)
MemSys
string
// bytes obtained from system (sum of XxxSys below)
Lookups
uint64
// number of pointer lookups
MemMallocs
uint64
// number of mallocs
MemFrees
uint64
// number of frees
// Main allocation heap statistics.
HeapAlloc
string
// bytes allocated and still in use
HeapSys
string
// bytes obtained from system
HeapIdle
string
// bytes in idle spans
HeapInuse
string
// bytes in non-idle span
HeapReleased
string
// bytes released to the OS
HeapObjects
uint64
// total number of allocated objects
// Low-level fixed-size structure allocator statistics.
// Inuse is bytes used now.
// Sys is bytes obtained from system.
StackInuse
string
// bootstrap stacks
StackSys
string
MSpanInuse
string
// mspan structures
MSpanSys
string
MCacheInuse
string
// mcache structures
MCacheSys
string
BuckHashSys
string
// profiling bucket hash table
GCSys
string
// GC metadata
OtherSys
string
// other system allocations
// Garbage collector statistics.
NextGC
string
// next run in HeapAlloc time (bytes)
LastGC
string
// last run in absolute time (ns)
PauseTotalNs
string
PauseNs
string
// circular buffer of recent GC pause times, most recent at [(NumGC+255)%256]
NumGC
uint32
}
func
handleViewAdminDash
(
app
*
app
,
u
*
User
,
w
http
.
ResponseWriter
,
r
*
http
.
Request
)
error
{
updateAppStats
()
p
:=
struct
{
*
UserPage
Message
string
SysStatus
systemStatus
}{
NewUserPage
(
app
,
r
,
u
,
"Admin"
,
nil
),
r
.
FormValue
(
"m"
),
sysStatus
,
}
showUserPage
(
w
,
"admin"
,
p
)
return
nil
}
func
updateAppStats
()
{
sysStatus
.
Uptime
=
tool
.
TimeSincePro
(
appStartTime
)
m
:=
new
(
runtime
.
MemStats
)
runtime
.
ReadMemStats
(
m
)
sysStatus
.
NumGoroutine
=
runtime
.
NumGoroutine
()
sysStatus
.
MemAllocated
=
tool
.
FileSize
(
int64
(
m
.
Alloc
))
sysStatus
.
MemTotal
=
tool
.
FileSize
(
int64
(
m
.
TotalAlloc
))
sysStatus
.
MemSys
=
tool
.
FileSize
(
int64
(
m
.
Sys
))
sysStatus
.
Lookups
=
m
.
Lookups
sysStatus
.
MemMallocs
=
m
.
Mallocs
sysStatus
.
MemFrees
=
m
.
Frees
sysStatus
.
HeapAlloc
=
tool
.
FileSize
(
int64
(
m
.
HeapAlloc
))
sysStatus
.
HeapSys
=
tool
.
FileSize
(
int64
(
m
.
HeapSys
))
sysStatus
.
HeapIdle
=
tool
.
FileSize
(
int64
(
m
.
HeapIdle
))
sysStatus
.
HeapInuse
=
tool
.
FileSize
(
int64
(
m
.
HeapInuse
))
sysStatus
.
HeapReleased
=
tool
.
FileSize
(
int64
(
m
.
HeapReleased
))
sysStatus
.
HeapObjects
=
m
.
HeapObjects
sysStatus
.
StackInuse
=
tool
.
FileSize
(
int64
(
m
.
StackInuse
))
sysStatus
.
StackSys
=
tool
.
FileSize
(
int64
(
m
.
StackSys
))
sysStatus
.
MSpanInuse
=
tool
.
FileSize
(
int64
(
m
.
MSpanInuse
))
sysStatus
.
MSpanSys
=
tool
.
FileSize
(
int64
(
m
.
MSpanSys
))
sysStatus
.
MCacheInuse
=
tool
.
FileSize
(
int64
(
m
.
MCacheInuse
))
sysStatus
.
MCacheSys
=
tool
.
FileSize
(
int64
(
m
.
MCacheSys
))
sysStatus
.
BuckHashSys
=
tool
.
FileSize
(
int64
(
m
.
BuckHashSys
))
sysStatus
.
GCSys
=
tool
.
FileSize
(
int64
(
m
.
GCSys
))
sysStatus
.
OtherSys
=
tool
.
FileSize
(
int64
(
m
.
OtherSys
))
sysStatus
.
NextGC
=
tool
.
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
.
NumGC
=
m
.
NumGC
}
func
adminResetPassword
(
app
*
app
,
u
*
User
,
newPass
string
)
error
{
hashedPass
,
err
:=
auth
.
HashPass
([]
byte
(
newPass
))
if
err
!=
nil
{
return
impart
.
HTTPError
{
http
.
StatusInternalServerError
,
fmt
.
Sprintf
(
"Could not create password hash: %v"
,
err
)}
}
err
=
app
.
db
.
ChangePassphrase
(
u
.
ID
,
true
,
""
,
hashedPass
)
if
err
!=
nil
{
return
impart
.
HTTPError
{
http
.
StatusInternalServerError
,
fmt
.
Sprintf
(
"Could not update passphrase: %v"
,
err
)}
}
return
nil
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Mar 6, 3:20 AM (1 d, 10 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3164760
Attached To
rWF WriteFreely
Event Timeline
Log In to Comment