Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
B
beego
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
go
beego
Commits
e0a36fb6
Commit
e0a36fb6
authored
Mar 26, 2016
by
miraclesu
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' into feature/orm_auto
parents
8f70df6c
85a9b054
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
32 changed files
with
175 additions
and
112 deletions
+175
-112
admin.go
admin.go
+3
-2
app.go
app.go
+14
-14
redis_test.go
cache/redis/redis_test.go
+1
-2
ssdb_test.go
cache/ssdb/ssdb_test.go
+2
-1
config.go
config.go
+4
-3
input_test.go
context/input_test.go
+1
-1
output.go
context/output.go
+7
-0
filter_test.go
filter_test.go
+0
-6
hooks.go
hooks.go
+2
-1
log.go
log.go
+15
-20
conn.go
logs/conn.go
+1
-1
console.go
logs/console.go
+1
-1
es.go
logs/es/es.go
+1
-1
file.go
logs/file.go
+1
-1
log.go
logs/log.go
+0
-0
multifile.go
logs/multifile.go
+1
-1
smtp.go
logs/smtp.go
+1
-1
migration.go
migration/migration.go
+17
-17
db_postgres.go
orm/db_postgres.go
+9
-7
models_test.go
orm/models_test.go
+5
-0
orm.go
orm/orm.go
+8
-1
orm_test.go
orm/orm_test.go
+25
-0
parser.go
parser.go
+3
-2
router.go
router.go
+9
-8
router_test.go
router_test.go
+6
-5
sess_mysql.go
session/mysql/sess_mysql.go
+0
-1
sess_file.go
session/sess_file.go
+7
-5
session.go
session/session.go
+18
-0
staticfile.go
staticfile.go
+3
-2
template.go
template.go
+5
-4
captcha.go
utils/captcha/captcha.go
+4
-3
controller.go
utils/pagination/controller.go
+1
-1
No files found.
admin.go
View file @
e0a36fb6
...
...
@@ -24,6 +24,7 @@ import (
"time"
"github.com/astaxie/beego/grace"
"github.com/astaxie/beego/logs"
"github.com/astaxie/beego/toolbox"
"github.com/astaxie/beego/utils"
)
...
...
@@ -410,7 +411,7 @@ func (admin *adminApp) Run() {
for
p
,
f
:=
range
admin
.
routers
{
http
.
Handle
(
p
,
f
)
}
BeeLogger
.
Info
(
"Admin server Running on %s"
,
addr
)
logs
.
Info
(
"Admin server Running on %s"
,
addr
)
var
err
error
if
BConfig
.
Listen
.
Graceful
{
...
...
@@ -419,6 +420,6 @@ func (admin *adminApp) Run() {
err
=
http
.
ListenAndServe
(
addr
,
nil
)
}
if
err
!=
nil
{
BeeLogger
.
Critical
(
"Admin ListenAndServe: "
,
err
,
fmt
.
Sprintf
(
"%d"
,
os
.
Getpid
()))
logs
.
Critical
(
"Admin ListenAndServe: "
,
err
,
fmt
.
Sprintf
(
"%d"
,
os
.
Getpid
()))
}
}
app.go
View file @
e0a36fb6
...
...
@@ -16,7 +16,6 @@ package beego
import
(
"fmt"
"log"
"net"
"net/http"
"net/http/fcgi"
...
...
@@ -25,6 +24,7 @@ import (
"time"
"github.com/astaxie/beego/grace"
"github.com/astaxie/beego/logs"
"github.com/astaxie/beego/utils"
)
...
...
@@ -69,9 +69,9 @@ func (app *App) Run() {
if
BConfig
.
Listen
.
EnableFcgi
{
if
BConfig
.
Listen
.
EnableStdIo
{
if
err
=
fcgi
.
Serve
(
nil
,
app
.
Handlers
);
err
==
nil
{
// standard I/O
BeeLogger
.
Info
(
"Use FCGI via standard I/O"
)
logs
.
Info
(
"Use FCGI via standard I/O"
)
}
else
{
BeeLogger
.
Critical
(
"Cannot use FCGI via standard I/O"
,
err
)
logs
.
Critical
(
"Cannot use FCGI via standard I/O"
,
err
)
}
return
}
...
...
@@ -85,10 +85,10 @@ func (app *App) Run() {
l
,
err
=
net
.
Listen
(
"tcp"
,
addr
)
}
if
err
!=
nil
{
BeeLogger
.
Critical
(
"Listen: "
,
err
)
logs
.
Critical
(
"Listen: "
,
err
)
}
if
err
=
fcgi
.
Serve
(
l
,
app
.
Handlers
);
err
!=
nil
{
BeeLogger
.
Critical
(
"fcgi.Serve: "
,
err
)
logs
.
Critical
(
"fcgi.Serve: "
,
err
)
}
return
}
...
...
@@ -96,7 +96,7 @@ func (app *App) Run() {
app
.
Server
.
Handler
=
app
.
Handlers
app
.
Server
.
ReadTimeout
=
time
.
Duration
(
BConfig
.
Listen
.
ServerTimeOut
)
*
time
.
Second
app
.
Server
.
WriteTimeout
=
time
.
Duration
(
BConfig
.
Listen
.
ServerTimeOut
)
*
time
.
Second
app
.
Server
.
ErrorLog
=
log
.
New
(
BeeLogger
,
""
,
0
)
app
.
Server
.
ErrorLog
=
log
s
.
GetLogger
(
"HTTP"
)
// run graceful mode
if
BConfig
.
Listen
.
Graceful
{
...
...
@@ -113,7 +113,7 @@ func (app *App) Run() {
server
.
Server
.
ReadTimeout
=
app
.
Server
.
ReadTimeout
server
.
Server
.
WriteTimeout
=
app
.
Server
.
WriteTimeout
if
err
:=
server
.
ListenAndServeTLS
(
BConfig
.
Listen
.
HTTPSCertFile
,
BConfig
.
Listen
.
HTTPSKeyFile
);
err
!=
nil
{
BeeLogger
.
Critical
(
"ListenAndServeTLS: "
,
err
,
fmt
.
Sprintf
(
"%d"
,
os
.
Getpid
()))
logs
.
Critical
(
"ListenAndServeTLS: "
,
err
,
fmt
.
Sprintf
(
"%d"
,
os
.
Getpid
()))
time
.
Sleep
(
100
*
time
.
Microsecond
)
endRunning
<-
true
}
...
...
@@ -128,7 +128,7 @@ func (app *App) Run() {
server
.
Network
=
"tcp4"
}
if
err
:=
server
.
ListenAndServe
();
err
!=
nil
{
BeeLogger
.
Critical
(
"ListenAndServe: "
,
err
,
fmt
.
Sprintf
(
"%d"
,
os
.
Getpid
()))
logs
.
Critical
(
"ListenAndServe: "
,
err
,
fmt
.
Sprintf
(
"%d"
,
os
.
Getpid
()))
time
.
Sleep
(
100
*
time
.
Microsecond
)
endRunning
<-
true
}
...
...
@@ -146,9 +146,9 @@ func (app *App) Run() {
if
BConfig
.
Listen
.
HTTPSPort
!=
0
{
app
.
Server
.
Addr
=
fmt
.
Sprintf
(
"%s:%d"
,
BConfig
.
Listen
.
HTTPSAddr
,
BConfig
.
Listen
.
HTTPSPort
)
}
BeeLogger
.
Info
(
"https server Running on %s"
,
app
.
Server
.
Addr
)
logs
.
Info
(
"https server Running on %s"
,
app
.
Server
.
Addr
)
if
err
:=
app
.
Server
.
ListenAndServeTLS
(
BConfig
.
Listen
.
HTTPSCertFile
,
BConfig
.
Listen
.
HTTPSKeyFile
);
err
!=
nil
{
BeeLogger
.
Critical
(
"ListenAndServeTLS: "
,
err
)
logs
.
Critical
(
"ListenAndServeTLS: "
,
err
)
time
.
Sleep
(
100
*
time
.
Microsecond
)
endRunning
<-
true
}
...
...
@@ -157,24 +157,24 @@ func (app *App) Run() {
if
BConfig
.
Listen
.
EnableHTTP
{
go
func
()
{
app
.
Server
.
Addr
=
addr
BeeLogger
.
Info
(
"http server Running on %s"
,
app
.
Server
.
Addr
)
logs
.
Info
(
"http server Running on %s"
,
app
.
Server
.
Addr
)
if
BConfig
.
Listen
.
ListenTCP4
{
ln
,
err
:=
net
.
Listen
(
"tcp4"
,
app
.
Server
.
Addr
)
if
err
!=
nil
{
BeeLogger
.
Critical
(
"ListenAndServe: "
,
err
)
logs
.
Critical
(
"ListenAndServe: "
,
err
)
time
.
Sleep
(
100
*
time
.
Microsecond
)
endRunning
<-
true
return
}
if
err
=
app
.
Server
.
Serve
(
ln
);
err
!=
nil
{
BeeLogger
.
Critical
(
"ListenAndServe: "
,
err
)
logs
.
Critical
(
"ListenAndServe: "
,
err
)
time
.
Sleep
(
100
*
time
.
Microsecond
)
endRunning
<-
true
return
}
}
else
{
if
err
:=
app
.
Server
.
ListenAndServe
();
err
!=
nil
{
BeeLogger
.
Critical
(
"ListenAndServe: "
,
err
)
logs
.
Critical
(
"ListenAndServe: "
,
err
)
time
.
Sleep
(
100
*
time
.
Microsecond
)
endRunning
<-
true
}
...
...
cache/redis/redis_test.go
View file @
e0a36fb6
...
...
@@ -18,9 +18,8 @@ import (
"testing"
"time"
"github.com/garyburd/redigo/redis"
"github.com/astaxie/beego/cache"
"github.com/garyburd/redigo/redis"
)
func
TestRedisCache
(
t
*
testing
.
T
)
{
...
...
cache/ssdb/ssdb_test.go
View file @
e0a36fb6
package
ssdb
import
(
"github.com/astaxie/beego/cache"
"strconv"
"testing"
"time"
"github.com/astaxie/beego/cache"
)
func
TestSsdbcacheCache
(
t
*
testing
.
T
)
{
...
...
config.go
View file @
e0a36fb6
...
...
@@ -21,6 +21,7 @@ import (
"strings"
"github.com/astaxie/beego/config"
"github.com/astaxie/beego/logs"
"github.com/astaxie/beego/session"
"github.com/astaxie/beego/utils"
)
...
...
@@ -293,14 +294,14 @@ func parseConfig(appConfigPath string) (err error) {
}
//init log
BeeLogger
.
Reset
()
logs
.
Reset
()
for
adaptor
,
config
:=
range
BConfig
.
Log
.
Outputs
{
err
=
BeeLogger
.
SetLogger
(
adaptor
,
config
)
err
=
logs
.
SetLogger
(
adaptor
,
config
)
if
err
!=
nil
{
fmt
.
Printf
(
"%s with the config `%s` got err:%s
\n
"
,
adaptor
,
config
,
err
)
}
}
SetLogFuncCall
(
BConfig
.
Log
.
FileLineNum
)
logs
.
SetLogFuncCall
(
BConfig
.
Log
.
FileLineNum
)
return
nil
}
...
...
context/input_test.go
View file @
e0a36fb6
...
...
@@ -100,7 +100,7 @@ func TestSubDomain(t *testing.T) {
/* TODO Fix this
r, _ = http.NewRequest("GET", "http://127.0.0.1/", nil)
beegoInput.Request = r
beegoInput.
Context.
Request = r
if beegoInput.SubDomains() != "" {
t.Fatal("Subdomain parse error, got " + beegoInput.SubDomains())
}
...
...
context/output.go
View file @
e0a36fb6
...
...
@@ -24,6 +24,7 @@ import (
"io"
"mime"
"net/http"
"os"
"path/filepath"
"strconv"
"strings"
...
...
@@ -237,6 +238,12 @@ func (output *BeegoOutput) XML(data interface{}, hasIndent bool) error {
// Download forces response for download file.
// it prepares the download response header automatically.
func
(
output
*
BeegoOutput
)
Download
(
file
string
,
filename
...
string
)
{
// check get file error, file not found or other error.
if
_
,
err
:=
os
.
Stat
(
file
);
err
!=
nil
{
http
.
ServeFile
(
output
.
Context
.
ResponseWriter
,
output
.
Context
.
Request
,
file
)
return
}
output
.
Header
(
"Content-Description"
,
"File Transfer"
)
output
.
Header
(
"Content-Type"
,
"application/octet-stream"
)
if
len
(
filename
)
>
0
&&
filename
[
0
]
!=
""
{
...
...
filter_test.go
View file @
e0a36fb6
...
...
@@ -20,14 +20,8 @@ import (
"testing"
"github.com/astaxie/beego/context"
"github.com/astaxie/beego/logs"
)
func
init
()
{
BeeLogger
=
logs
.
NewLogger
(
10000
)
BeeLogger
.
SetLogger
(
"console"
,
""
)
}
var
FilterUser
=
func
(
ctx
*
context
.
Context
)
{
ctx
.
Output
.
Body
([]
byte
(
"i am "
+
ctx
.
Input
.
Param
(
":last"
)
+
ctx
.
Input
.
Param
(
":first"
)))
}
...
...
hooks.go
View file @
e0a36fb6
...
...
@@ -7,6 +7,7 @@ import (
"path/filepath"
"github.com/astaxie/beego/context"
"github.com/astaxie/beego/logs"
"github.com/astaxie/beego/session"
)
...
...
@@ -71,7 +72,7 @@ func registerSession() error {
func
registerTemplate
()
error
{
if
err
:=
BuildTemplate
(
BConfig
.
WebConfig
.
ViewsPath
);
err
!=
nil
{
if
BConfig
.
RunMode
==
DEV
{
Warn
(
err
)
logs
.
Warn
(
err
)
}
return
err
}
...
...
log.go
View file @
e0a36fb6
...
...
@@ -33,82 +33,77 @@ const (
)
// BeeLogger references the used application logger.
var
BeeLogger
=
logs
.
NewLogger
(
100
)
var
BeeLogger
=
logs
.
GetBeeLogger
(
)
// SetLevel sets the global log level used by the simple logger.
func
SetLevel
(
l
int
)
{
BeeLogger
.
SetLevel
(
l
)
logs
.
SetLevel
(
l
)
}
// SetLogFuncCall set the CallDepth, default is 3
func
SetLogFuncCall
(
b
bool
)
{
BeeLogger
.
EnableFuncCallDepth
(
b
)
BeeLogger
.
SetLogFuncCallDepth
(
3
)
logs
.
SetLogFuncCall
(
b
)
}
// SetLogger sets a new logger.
func
SetLogger
(
adaptername
string
,
config
string
)
error
{
err
:=
BeeLogger
.
SetLogger
(
adaptername
,
config
)
if
err
!=
nil
{
return
err
}
return
nil
return
logs
.
SetLogger
(
adaptername
,
config
)
}
// Emergency logs a message at emergency level.
func
Emergency
(
v
...
interface
{})
{
BeeLogger
.
Emergency
(
generateFmtStr
(
len
(
v
)),
v
...
)
logs
.
Emergency
(
generateFmtStr
(
len
(
v
)),
v
...
)
}
// Alert logs a message at alert level.
func
Alert
(
v
...
interface
{})
{
BeeLogger
.
Alert
(
generateFmtStr
(
len
(
v
)),
v
...
)
logs
.
Alert
(
generateFmtStr
(
len
(
v
)),
v
...
)
}
// Critical logs a message at critical level.
func
Critical
(
v
...
interface
{})
{
BeeLogger
.
Critical
(
generateFmtStr
(
len
(
v
)),
v
...
)
logs
.
Critical
(
generateFmtStr
(
len
(
v
)),
v
...
)
}
// Error logs a message at error level.
func
Error
(
v
...
interface
{})
{
BeeLogger
.
Error
(
generateFmtStr
(
len
(
v
)),
v
...
)
logs
.
Error
(
generateFmtStr
(
len
(
v
)),
v
...
)
}
// Warning logs a message at warning level.
func
Warning
(
v
...
interface
{})
{
BeeLogger
.
Warning
(
generateFmtStr
(
len
(
v
)),
v
...
)
logs
.
Warning
(
generateFmtStr
(
len
(
v
)),
v
...
)
}
// Warn compatibility alias for Warning()
func
Warn
(
v
...
interface
{})
{
BeeLogger
.
Warn
(
generateFmtStr
(
len
(
v
)),
v
...
)
logs
.
Warn
(
generateFmtStr
(
len
(
v
)),
v
...
)
}
// Notice logs a message at notice level.
func
Notice
(
v
...
interface
{})
{
BeeLogger
.
Notice
(
generateFmtStr
(
len
(
v
)),
v
...
)
logs
.
Notice
(
generateFmtStr
(
len
(
v
)),
v
...
)
}
// Informational logs a message at info level.
func
Informational
(
v
...
interface
{})
{
BeeLogger
.
Informational
(
generateFmtStr
(
len
(
v
)),
v
...
)
logs
.
Informational
(
generateFmtStr
(
len
(
v
)),
v
...
)
}
// Info compatibility alias for Warning()
func
Info
(
v
...
interface
{})
{
BeeLogger
.
Info
(
generateFmtStr
(
len
(
v
)),
v
...
)
logs
.
Info
(
generateFmtStr
(
len
(
v
)),
v
...
)
}
// Debug logs a message at debug level.
func
Debug
(
v
...
interface
{})
{
BeeLogger
.
Debug
(
generateFmtStr
(
len
(
v
)),
v
...
)
logs
.
Debug
(
generateFmtStr
(
len
(
v
)),
v
...
)
}
// Trace logs a message at trace level.
// compatibility alias for Warning()
func
Trace
(
v
...
interface
{})
{
BeeLogger
.
Trace
(
generateFmtStr
(
len
(
v
)),
v
...
)
logs
.
Trace
(
generateFmtStr
(
len
(
v
)),
v
...
)
}
func
generateFmtStr
(
n
int
)
string
{
...
...
logs/conn.go
View file @
e0a36fb6
...
...
@@ -113,5 +113,5 @@ func (c *connWriter) needToConnectOnMsg() bool {
}
func
init
()
{
Register
(
"conn"
,
NewConn
)
Register
(
AdapterConn
,
NewConn
)
}
logs/console.go
View file @
e0a36fb6
...
...
@@ -97,5 +97,5 @@ func (c *consoleWriter) Flush() {
}
func
init
()
{
Register
(
"console"
,
NewConsole
)
Register
(
AdapterConsole
,
NewConsole
)
}
logs/es/es.go
View file @
e0a36fb6
...
...
@@ -76,5 +76,5 @@ func (el *esLogger) Flush() {
}
func
init
()
{
logs
.
Register
(
"es"
,
NewES
)
logs
.
Register
(
logs
.
AdapterEs
,
NewES
)
}
logs/file.go
View file @
e0a36fb6
...
...
@@ -282,5 +282,5 @@ func (w *fileLogWriter) Flush() {
}
func
init
()
{
Register
(
"file"
,
newFileWriter
)
Register
(
AdapterFile
,
newFileWriter
)
}
logs/log.go
View file @
e0a36fb6
This diff is collapsed.
Click to expand it.
logs/multifile.go
View file @
e0a36fb6
...
...
@@ -112,5 +112,5 @@ func newFilesWriter() Logger {
}
func
init
()
{
Register
(
"multifile"
,
newFilesWriter
)
Register
(
AdapterMultiFile
,
newFilesWriter
)
}
logs/smtp.go
View file @
e0a36fb6
...
...
@@ -156,5 +156,5 @@ func (s *SMTPWriter) Destroy() {
}
func
init
()
{
Register
(
"smtp"
,
newSMTPWriter
)
Register
(
AdapterMail
,
newSMTPWriter
)
}
migration/migration.go
View file @
e0a36fb6
...
...
@@ -33,7 +33,7 @@ import (
"strings"
"time"
"github.com/astaxie/beego"
"github.com/astaxie/beego
/logs
"
"github.com/astaxie/beego/orm"
)
...
...
@@ -90,7 +90,7 @@ func (m *Migration) Reset() {
func
(
m
*
Migration
)
Exec
(
name
,
status
string
)
error
{
o
:=
orm
.
NewOrm
()
for
_
,
s
:=
range
m
.
sqls
{
beego
.
Info
(
"exec sql:"
,
s
)
logs
.
Info
(
"exec sql:"
,
s
)
r
:=
o
.
Raw
(
s
)
_
,
err
:=
r
.
Exec
()
if
err
!=
nil
{
...
...
@@ -144,20 +144,20 @@ func Upgrade(lasttime int64) error {
i
:=
0
for
_
,
v
:=
range
sm
{
if
v
.
created
>
lasttime
{
beego
.
Info
(
"start upgrade"
,
v
.
name
)
logs
.
Info
(
"start upgrade"
,
v
.
name
)
v
.
m
.
Reset
()
v
.
m
.
Up
()
err
:=
v
.
m
.
Exec
(
v
.
name
,
"up"
)
if
err
!=
nil
{
beego
.
Error
(
"execute error:"
,
err
)
logs
.
Error
(
"execute error:"
,
err
)
time
.
Sleep
(
2
*
time
.
Second
)
return
err
}
beego
.
Info
(
"end upgrade:"
,
v
.
name
)
logs
.
Info
(
"end upgrade:"
,
v
.
name
)
i
++
}
}
beego
.
Info
(
"total success upgrade:"
,
i
,
" migration"
)
logs
.
Info
(
"total success upgrade:"
,
i
,
" migration"
)
time
.
Sleep
(
2
*
time
.
Second
)
return
nil
}
...
...
@@ -165,20 +165,20 @@ func Upgrade(lasttime int64) error {
// Rollback rollback the migration by the name
func
Rollback
(
name
string
)
error
{
if
v
,
ok
:=
migrationMap
[
name
];
ok
{
beego
.
Info
(
"start rollback"
)
logs
.
Info
(
"start rollback"
)
v
.
Reset
()
v
.
Down
()
err
:=
v
.
Exec
(
name
,
"down"
)
if
err
!=
nil
{
beego
.
Error
(
"execute error:"
,
err
)
logs
.
Error
(
"execute error:"
,
err
)
time
.
Sleep
(
2
*
time
.
Second
)
return
err
}
beego
.
Info
(
"end rollback"
)
logs
.
Info
(
"end rollback"
)
time
.
Sleep
(
2
*
time
.
Second
)
return
nil
}
beego
.
Error
(
"not exist the migrationMap name:"
+
name
)
logs
.
Error
(
"not exist the migrationMap name:"
+
name
)
time
.
Sleep
(
2
*
time
.
Second
)
return
errors
.
New
(
"not exist the migrationMap name:"
+
name
)
}
...
...
@@ -191,23 +191,23 @@ func Reset() error {
for
j
:=
len
(
sm
)
-
1
;
j
>=
0
;
j
--
{
v
:=
sm
[
j
]
if
isRollBack
(
v
.
name
)
{
beego
.
Info
(
"skip the"
,
v
.
name
)
logs
.
Info
(
"skip the"
,
v
.
name
)
time
.
Sleep
(
1
*
time
.
Second
)
continue
}
beego
.
Info
(
"start reset:"
,
v
.
name
)
logs
.
Info
(
"start reset:"
,
v
.
name
)
v
.
m
.
Reset
()
v
.
m
.
Down
()
err
:=
v
.
m
.
Exec
(
v
.
name
,
"down"
)
if
err
!=
nil
{
beego
.
Error
(
"execute error:"
,
err
)
logs
.
Error
(
"execute error:"
,
err
)
time
.
Sleep
(
2
*
time
.
Second
)
return
err
}
i
++
beego
.
Info
(
"end reset:"
,
v
.
name
)
logs
.
Info
(
"end reset:"
,
v
.
name
)
}
beego
.
Info
(
"total success reset:"
,
i
,
" migration"
)
logs
.
Info
(
"total success reset:"
,
i
,
" migration"
)
time
.
Sleep
(
2
*
time
.
Second
)
return
nil
}
...
...
@@ -216,7 +216,7 @@ func Reset() error {
func
Refresh
()
error
{
err
:=
Reset
()
if
err
!=
nil
{
beego
.
Error
(
"execute error:"
,
err
)
logs
.
Error
(
"execute error:"
,
err
)
time
.
Sleep
(
2
*
time
.
Second
)
return
err
}
...
...
@@ -265,7 +265,7 @@ func isRollBack(name string) bool {
var
maps
[]
orm
.
Params
num
,
err
:=
o
.
Raw
(
"select * from migrations where `name` = ? order by id_migration desc"
,
name
)
.
Values
(
&
maps
)
if
err
!=
nil
{
beego
.
Info
(
"get name has error"
,
err
)
logs
.
Info
(
"get name has error"
,
err
)
return
false
}
if
num
<=
0
{
...
...
orm/db_postgres.go
View file @
e0a36fb6
...
...
@@ -123,14 +123,16 @@ func (d *dbBasePostgres) ReplaceMarks(query *string) {
}
// make returning sql support for postgresql.
func
(
d
*
dbBasePostgres
)
HasReturningID
(
mi
*
modelInfo
,
query
*
string
)
(
has
bool
)
{
if
mi
.
fields
.
pk
.
auto
{
if
query
!=
nil
{
*
query
=
fmt
.
Sprintf
(
`%s RETURNING "%s"`
,
*
query
,
mi
.
fields
.
pk
.
column
)
}
has
=
true
func
(
d
*
dbBasePostgres
)
HasReturningID
(
mi
*
modelInfo
,
query
*
string
)
bool
{
fi
:=
mi
.
fields
.
pk
if
fi
.
fieldType
&
IsPositiveIntegerField
==
0
&&
fi
.
fieldType
&
IsIntegerField
==
0
{
return
false
}
if
query
!=
nil
{
*
query
=
fmt
.
Sprintf
(
`%s RETURNING "%s"`
,
*
query
,
fi
.
column
)
}
return
return
true
}
// show table sql for postgresql.
...
...
orm/models_test.go
View file @
e0a36fb6
...
...
@@ -392,6 +392,11 @@ type IntegerPk struct {
Value
string
}
type
UintPk
struct
{
Id
uint32
`orm:"pk"`
Name
string
}
var
DBARGS
=
struct
{
Driver
string
Source
string
...
...
orm/orm.go
View file @
e0a36fb6
...
...
@@ -140,7 +140,14 @@ func (o *orm) ReadOrCreate(md interface{}, col1 string, cols ...string) (bool, i
return
(
err
==
nil
),
id
,
err
}
return
false
,
ind
.
FieldByIndex
(
mi
.
fields
.
pk
.
fieldIndex
)
.
Int
(),
err
id
,
vid
:=
int64
(
0
),
ind
.
FieldByIndex
(
mi
.
fields
.
pk
.
fieldIndex
)
if
mi
.
fields
.
pk
.
fieldType
&
IsPositiveIntegerField
>
0
{
id
=
int64
(
vid
.
Uint
())
}
else
{
id
=
vid
.
Int
()
}
return
false
,
id
,
err
}
// insert model data to database
...
...
orm/orm_test.go
View file @
e0a36fb6
...
...
@@ -191,6 +191,7 @@ func TestSyncDb(t *testing.T) {
RegisterModel
(
new
(
InLine
))
RegisterModel
(
new
(
InLineOneToOne
))
RegisterModel
(
new
(
IntegerPk
))
RegisterModel
(
new
(
UintPk
))
err
:=
RunSyncdb
(
"default"
,
true
,
Debug
)
throwFail
(
t
,
err
)
...
...
@@ -213,6 +214,7 @@ func TestRegisterModels(t *testing.T) {
RegisterModel
(
new
(
InLine
))
RegisterModel
(
new
(
InLineOneToOne
))
RegisterModel
(
new
(
IntegerPk
))
RegisterModel
(
new
(
UintPk
))
BootStrap
()
...
...
@@ -2034,3 +2036,26 @@ func TestInsertAuto(t *testing.T) {
throwFail
(
t
,
err
)
throwFail
(
t
,
AssertIs
(
id
,
sid
))
}
func
TestUintPk
(
t
*
testing
.
T
)
{
name
:=
"go"
u
:=
&
UintPk
{
Id
:
8
,
Name
:
name
,
}
created
,
pk
,
err
:=
dORM
.
ReadOrCreate
(
u
,
"Id"
)
throwFail
(
t
,
err
)
throwFail
(
t
,
AssertIs
(
created
,
true
))
throwFail
(
t
,
AssertIs
(
u
.
Name
,
name
))
nu
:=
&
UintPk
{
Id
:
8
}
created
,
pk
,
err
=
dORM
.
ReadOrCreate
(
nu
,
"Id"
)
throwFail
(
t
,
err
)
throwFail
(
t
,
AssertIs
(
created
,
false
))
throwFail
(
t
,
AssertIs
(
nu
.
Id
,
u
.
Id
))
throwFail
(
t
,
AssertIs
(
pk
,
u
.
Id
))
throwFail
(
t
,
AssertIs
(
nu
.
Name
,
name
))
dORM
.
Delete
(
u
)
}
parser.go
View file @
e0a36fb6
...
...
@@ -27,6 +27,7 @@ import (
"sort"
"strings"
"github.com/astaxie/beego/logs"
"github.com/astaxie/beego/utils"
)
...
...
@@ -58,7 +59,7 @@ func parserPkg(pkgRealpath, pkgpath string) error {
rep
:=
strings
.
NewReplacer
(
"/"
,
"_"
,
"."
,
"_"
)
commentFilename
=
coomentPrefix
+
rep
.
Replace
(
pkgpath
)
+
".go"
if
!
compareFile
(
pkgRealpath
)
{
Info
(
pkgRealpath
+
" no changed"
)
logs
.
Info
(
pkgRealpath
+
" no changed"
)
return
nil
}
genInfoList
=
make
(
map
[
string
][]
ControllerComments
)
...
...
@@ -131,7 +132,7 @@ func parserComments(comments *ast.CommentGroup, funcName, controllerName, pkgpat
func
genRouterCode
()
{
os
.
Mkdir
(
path
.
Join
(
AppPath
,
"routers"
),
0755
)
Info
(
"generate router from comments"
)
logs
.
Info
(
"generate router from comments"
)
var
(
globalinfo
string
sortKey
[]
string
...
...
router.go
View file @
e0a36fb6
...
...
@@ -28,6 +28,7 @@ import (
"time"
beecontext
"github.com/astaxie/beego/context"
"github.com/astaxie/beego/logs"
"github.com/astaxie/beego/toolbox"
"github.com/astaxie/beego/utils"
)
...
...
@@ -439,11 +440,11 @@ func (p *ControllerRegister) insertFilterRouter(pos int, mr *FilterRouter) (err
func
(
p
*
ControllerRegister
)
URLFor
(
endpoint
string
,
values
...
interface
{})
string
{
paths
:=
strings
.
Split
(
endpoint
,
"."
)
if
len
(
paths
)
<=
1
{
Warn
(
"urlfor endpoint must like path.controller.method"
)
logs
.
Warn
(
"urlfor endpoint must like path.controller.method"
)
return
""
}
if
len
(
values
)
%
2
!=
0
{
Warn
(
"urlfor params must key-value pair"
)
logs
.
Warn
(
"urlfor params must key-value pair"
)
return
""
}
params
:=
make
(
map
[
string
]
string
)
...
...
@@ -651,7 +652,7 @@ func (p *ControllerRegister) ServeHTTP(rw http.ResponseWriter, r *http.Request)
var
err
error
context
.
Input
.
CruSession
,
err
=
GlobalSessions
.
SessionStart
(
rw
,
r
)
if
err
!=
nil
{
Error
(
err
)
logs
.
Error
(
err
)
exception
(
"503"
,
context
)
goto
Admin
}
...
...
@@ -780,7 +781,7 @@ func (p *ControllerRegister) ServeHTTP(rw http.ResponseWriter, r *http.Request)
if
!
context
.
ResponseWriter
.
Started
&&
context
.
Output
.
Status
==
0
{
if
BConfig
.
WebConfig
.
AutoRender
{
if
err
:=
execController
.
Render
();
err
!=
nil
{
Error
(
err
)
logs
.
Error
(
err
)
}
}
}
...
...
@@ -825,7 +826,7 @@ Admin:
devInfo
=
fmt
.
Sprintf
(
"| % -10s | % -40s | % -16s | % -10s |"
,
r
.
Method
,
r
.
URL
.
Path
,
timeDur
.
String
(),
"notmatch"
)
}
if
DefaultAccessLogFilter
==
nil
||
!
DefaultAccessLogFilter
.
Filter
(
context
)
{
Debug
(
devInfo
)
logs
.
Debug
(
devInfo
)
}
}
...
...
@@ -850,14 +851,14 @@ func (p *ControllerRegister) recoverPanic(context *beecontext.Context) {
}
}
var
stack
string
Critical
(
"the request url is "
,
context
.
Input
.
URL
())
Critical
(
"Handler crashed with error"
,
err
)
logs
.
Critical
(
"the request url is "
,
context
.
Input
.
URL
())
logs
.
Critical
(
"Handler crashed with error"
,
err
)
for
i
:=
1
;
;
i
++
{
_
,
file
,
line
,
ok
:=
runtime
.
Caller
(
i
)
if
!
ok
{
break
}
Critical
(
fmt
.
Sprintf
(
"%s:%d"
,
file
,
line
))
logs
.
Critical
(
fmt
.
Sprintf
(
"%s:%d"
,
file
,
line
))
stack
=
stack
+
fmt
.
Sprintln
(
fmt
.
Sprintf
(
"%s:%d"
,
file
,
line
))
}
if
BConfig
.
RunMode
==
DEV
{
...
...
router_test.go
View file @
e0a36fb6
...
...
@@ -21,6 +21,7 @@ import (
"testing"
"github.com/astaxie/beego/context"
"github.com/astaxie/beego/logs"
)
type
TestController
struct
{
...
...
@@ -94,7 +95,7 @@ func TestUrlFor(t *testing.T) {
handler
.
Add
(
"/api/list"
,
&
TestController
{},
"*:List"
)
handler
.
Add
(
"/person/:last/:first"
,
&
TestController
{},
"*:Param"
)
if
a
:=
handler
.
URLFor
(
"TestController.List"
);
a
!=
"/api/list"
{
Info
(
a
)
logs
.
Info
(
a
)
t
.
Errorf
(
"TestController.List must equal to /api/list"
)
}
if
a
:=
handler
.
URLFor
(
"TestController.Param"
,
":last"
,
"xie"
,
":first"
,
"asta"
);
a
!=
"/person/xie/asta"
{
...
...
@@ -120,24 +121,24 @@ func TestUrlFor2(t *testing.T) {
handler
.
Add
(
"/v1/:v(.+)_cms/ttt_:id(.+)_:page(.+).html"
,
&
TestController
{},
"*:Param"
)
handler
.
Add
(
"/:year:int/:month:int/:title/:entid"
,
&
TestController
{})
if
handler
.
URLFor
(
"TestController.GetURL"
,
":username"
,
"astaxie"
)
!=
"/v1/astaxie/edit"
{
Info
(
handler
.
URLFor
(
"TestController.GetURL"
))
logs
.
Info
(
handler
.
URLFor
(
"TestController.GetURL"
))
t
.
Errorf
(
"TestController.List must equal to /v1/astaxie/edit"
)
}
if
handler
.
URLFor
(
"TestController.List"
,
":v"
,
"za"
,
":id"
,
"12"
,
":page"
,
"123"
)
!=
"/v1/za/cms_12_123.html"
{
Info
(
handler
.
URLFor
(
"TestController.List"
))
logs
.
Info
(
handler
.
URLFor
(
"TestController.List"
))
t
.
Errorf
(
"TestController.List must equal to /v1/za/cms_12_123.html"
)
}
if
handler
.
URLFor
(
"TestController.Param"
,
":v"
,
"za"
,
":id"
,
"12"
,
":page"
,
"123"
)
!=
"/v1/za_cms/ttt_12_123.html"
{
Info
(
handler
.
URLFor
(
"TestController.Param"
))
logs
.
Info
(
handler
.
URLFor
(
"TestController.Param"
))
t
.
Errorf
(
"TestController.List must equal to /v1/za_cms/ttt_12_123.html"
)
}
if
handler
.
URLFor
(
"TestController.Get"
,
":year"
,
"1111"
,
":month"
,
"11"
,
":title"
,
"aaaa"
,
":entid"
,
"aaaa"
)
!=
"/1111/11/aaaa/aaaa"
{
Info
(
handler
.
URLFor
(
"TestController.Get"
))
logs
.
Info
(
handler
.
URLFor
(
"TestController.Get"
))
t
.
Errorf
(
"TestController.Get must equal to /1111/11/aaaa/aaaa"
)
}
}
...
...
session/mysql/sess_mysql.go
View file @
e0a36fb6
...
...
@@ -115,7 +115,6 @@ func (st *SessionStore) SessionRelease(w http.ResponseWriter) {
}
st
.
c
.
Exec
(
"UPDATE "
+
TableName
+
" set `session_data`=?, `session_expiry`=? where session_key=?"
,
b
,
time
.
Now
()
.
Unix
(),
st
.
sid
)
}
// Provider mysql session provider
...
...
session/sess_file.go
View file @
e0a36fb6
...
...
@@ -16,7 +16,6 @@ package session
import
(
"errors"
"fmt"
"io"
"io/ioutil"
"net/http"
...
...
@@ -82,14 +81,17 @@ func (fs *FileSessionStore) SessionID() string {
func
(
fs
*
FileSessionStore
)
SessionRelease
(
w
http
.
ResponseWriter
)
{
b
,
err
:=
EncodeGob
(
fs
.
values
)
if
err
!=
nil
{
SLogger
.
Println
(
err
)
return
}
_
,
err
=
os
.
Stat
(
path
.
Join
(
filepder
.
savePath
,
string
(
fs
.
sid
[
0
]),
string
(
fs
.
sid
[
1
]),
fs
.
sid
))
var
f
*
os
.
File
if
err
==
nil
{
f
,
err
=
os
.
OpenFile
(
path
.
Join
(
filepder
.
savePath
,
string
(
fs
.
sid
[
0
]),
string
(
fs
.
sid
[
1
]),
fs
.
sid
),
os
.
O_RDWR
,
0777
)
SLogger
.
Println
(
err
)
}
else
if
os
.
IsNotExist
(
err
)
{
f
,
err
=
os
.
Create
(
path
.
Join
(
filepder
.
savePath
,
string
(
fs
.
sid
[
0
]),
string
(
fs
.
sid
[
1
]),
fs
.
sid
))
SLogger
.
Println
(
err
)
}
else
{
return
}
...
...
@@ -123,7 +125,7 @@ func (fp *FileProvider) SessionRead(sid string) (Store, error) {
err
:=
os
.
MkdirAll
(
path
.
Join
(
fp
.
savePath
,
string
(
sid
[
0
]),
string
(
sid
[
1
])),
0777
)
if
err
!=
nil
{
p
rintln
(
err
.
Error
())
SLogger
.
P
rintln
(
err
.
Error
())
}
_
,
err
=
os
.
Stat
(
path
.
Join
(
fp
.
savePath
,
string
(
sid
[
0
]),
string
(
sid
[
1
]),
sid
))
var
f
*
os
.
File
...
...
@@ -191,7 +193,7 @@ func (fp *FileProvider) SessionAll() int {
return
a
.
visit
(
path
,
f
,
err
)
})
if
err
!=
nil
{
fmt
.
Printf
(
"filepath.Walk() returned %v
\n
"
,
err
)
SLogger
.
Printf
(
"filepath.Walk() returned %v
\n
"
,
err
)
return
0
}
return
a
.
total
...
...
@@ -205,11 +207,11 @@ func (fp *FileProvider) SessionRegenerate(oldsid, sid string) (Store, error) {
err
:=
os
.
MkdirAll
(
path
.
Join
(
fp
.
savePath
,
string
(
oldsid
[
0
]),
string
(
oldsid
[
1
])),
0777
)
if
err
!=
nil
{
p
rintln
(
err
.
Error
())
SLogger
.
P
rintln
(
err
.
Error
())
}
err
=
os
.
MkdirAll
(
path
.
Join
(
fp
.
savePath
,
string
(
sid
[
0
]),
string
(
sid
[
1
])),
0777
)
if
err
!=
nil
{
p
rintln
(
err
.
Error
())
SLogger
.
P
rintln
(
err
.
Error
())
}
_
,
err
=
os
.
Stat
(
path
.
Join
(
fp
.
savePath
,
string
(
sid
[
0
]),
string
(
sid
[
1
]),
sid
))
var
newf
*
os
.
File
...
...
session/session.go
View file @
e0a36fb6
...
...
@@ -32,8 +32,11 @@ import (
"encoding/hex"
"encoding/json"
"fmt"
"io"
"log"
"net/http"
"net/url"
"os"
"time"
)
...
...
@@ -61,6 +64,9 @@ type Provider interface {
var
provides
=
make
(
map
[
string
]
Provider
)
// SLogger a helpful variable to log information about session
var
SLogger
=
NewSessionLog
(
os
.
Stderr
)
// Register makes a session provide available by the provided name.
// If Register is called twice with the same name or if driver is nil,
// it panics.
...
...
@@ -296,3 +302,15 @@ func (manager *Manager) isSecure(req *http.Request) bool {
}
return
true
}
// Log implement the log.Logger
type
Log
struct
{
*
log
.
Logger
}
// NewSessionLog set io.Writer to create a Logger for session.
func
NewSessionLog
(
out
io
.
Writer
)
*
Log
{
sl
:=
new
(
Log
)
sl
.
Logger
=
log
.
New
(
out
,
"[SESSION]"
,
1e9
)
return
sl
}
staticfile.go
View file @
e0a36fb6
...
...
@@ -27,6 +27,7 @@ import (
"time"
"github.com/astaxie/beego/context"
"github.com/astaxie/beego/logs"
)
var
errNotStaticRequest
=
errors
.
New
(
"request not a static file request"
)
...
...
@@ -48,7 +49,7 @@ func serverStaticRouter(ctx *context.Context) {
if
filePath
==
""
||
fileInfo
==
nil
{
if
BConfig
.
RunMode
==
DEV
{
Warn
(
"Can't find/open the file:"
,
filePath
,
err
)
logs
.
Warn
(
"Can't find/open the file:"
,
filePath
,
err
)
}
http
.
NotFound
(
ctx
.
ResponseWriter
,
ctx
.
Request
)
return
...
...
@@ -72,7 +73,7 @@ func serverStaticRouter(ctx *context.Context) {
b
,
n
,
sch
,
err
:=
openFile
(
filePath
,
fileInfo
,
acceptEncoding
)
if
err
!=
nil
{
if
BConfig
.
RunMode
==
DEV
{
Warn
(
"Can't compress the file:"
,
filePath
,
err
)
logs
.
Warn
(
"Can't compress the file:"
,
filePath
,
err
)
}
http
.
NotFound
(
ctx
.
ResponseWriter
,
ctx
.
Request
)
return
...
...
template.go
View file @
e0a36fb6
...
...
@@ -26,6 +26,7 @@ import (
"strings"
"sync"
"github.com/astaxie/beego/logs"
"github.com/astaxie/beego/utils"
)
...
...
@@ -46,7 +47,7 @@ func executeTemplate(wr io.Writer, name string, data interface{}) error {
if
t
,
ok
:=
beeTemplates
[
name
];
ok
{
err
:=
t
.
ExecuteTemplate
(
wr
,
name
,
data
)
if
err
!=
nil
{
Trace
(
"template Execute err:"
,
err
)
logs
.
Trace
(
"template Execute err:"
,
err
)
}
return
err
}
...
...
@@ -162,7 +163,7 @@ func BuildTemplate(dir string, files ...string) error {
templatesLock
.
Lock
()
t
,
err
:=
getTemplate
(
self
.
root
,
file
,
v
...
)
if
err
!=
nil
{
Trace
(
"parse template err:"
,
file
,
err
)
logs
.
Trace
(
"parse template err:"
,
file
,
err
)
}
else
{
beeTemplates
[
file
]
=
t
}
...
...
@@ -240,7 +241,7 @@ func _getTemplate(t0 *template.Template, root string, subMods [][]string, others
var
subMods1
[][]
string
t
,
subMods1
,
err
=
getTplDeep
(
root
,
otherFile
,
""
,
t
)
if
err
!=
nil
{
Trace
(
"template parse file err:"
,
err
)
logs
.
Trace
(
"template parse file err:"
,
err
)
}
else
if
subMods1
!=
nil
&&
len
(
subMods1
)
>
0
{
t
,
err
=
_getTemplate
(
t
,
root
,
subMods1
,
others
...
)
}
...
...
@@ -261,7 +262,7 @@ func _getTemplate(t0 *template.Template, root string, subMods [][]string, others
var
subMods1
[][]
string
t
,
subMods1
,
err
=
getTplDeep
(
root
,
otherFile
,
""
,
t
)
if
err
!=
nil
{
Trace
(
"template parse file err:"
,
err
)
logs
.
Trace
(
"template parse file err:"
,
err
)
}
else
if
subMods1
!=
nil
&&
len
(
subMods1
)
>
0
{
t
,
err
=
_getTemplate
(
t
,
root
,
subMods1
,
others
...
)
}
...
...
utils/captcha/captcha.go
View file @
e0a36fb6
...
...
@@ -69,6 +69,7 @@ import (
"github.com/astaxie/beego"
"github.com/astaxie/beego/cache"
"github.com/astaxie/beego/context"
"github.com/astaxie/beego/logs"
"github.com/astaxie/beego/utils"
)
...
...
@@ -139,7 +140,7 @@ func (c *Captcha) Handler(ctx *context.Context) {
if
err
:=
c
.
store
.
Put
(
key
,
chars
,
c
.
Expiration
);
err
!=
nil
{
ctx
.
Output
.
SetStatus
(
500
)
ctx
.
WriteString
(
"captcha reload error"
)
beego
.
Error
(
"Reload Create Captcha Error:"
,
err
)
logs
.
Error
(
"Reload Create Captcha Error:"
,
err
)
return
}
}
else
{
...
...
@@ -154,7 +155,7 @@ func (c *Captcha) Handler(ctx *context.Context) {
img
:=
NewImage
(
chars
,
c
.
StdWidth
,
c
.
StdHeight
)
if
_
,
err
:=
img
.
WriteTo
(
ctx
.
ResponseWriter
);
err
!=
nil
{
beego
.
Error
(
"Write Captcha Image Error:"
,
err
)
logs
.
Error
(
"Write Captcha Image Error:"
,
err
)
}
}
...
...
@@ -162,7 +163,7 @@ func (c *Captcha) Handler(ctx *context.Context) {
func
(
c
*
Captcha
)
CreateCaptchaHTML
()
template
.
HTML
{
value
,
err
:=
c
.
CreateCaptcha
()
if
err
!=
nil
{
beego
.
Error
(
"Create Captcha Error:"
,
err
)
logs
.
Error
(
"Create Captcha Error:"
,
err
)
return
""
}
...
...
utils/pagination/controller.go
View file @
e0a36fb6
...
...
@@ -18,7 +18,7 @@ import (
"github.com/astaxie/beego/context"
)
// SetPaginator Instantiates a Paginator and assigns it to context.Input.Data
["paginator"]
.
// SetPaginator Instantiates a Paginator and assigns it to context.Input.Data
("paginator")
.
func
SetPaginator
(
context
*
context
.
Context
,
per
int
,
nums
int64
)
(
paginator
*
Paginator
)
{
paginator
=
NewPaginator
(
context
.
Request
,
per
,
nums
)
context
.
Input
.
SetData
(
"paginator"
,
&
paginator
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment