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
46aa340b
Commit
46aa340b
authored
Dec 17, 2015
by
astaxie
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1478 from fuxiaohei/develop
clean compliated codes, refactor if sections in app.go
parents
2aa50c24
a06022f7
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
226 additions
and
231 deletions
+226
-231
admin.go
admin.go
+121
-123
app.go
app.go
+105
-108
No files found.
admin.go
View file @
46aa340b
...
...
@@ -81,91 +81,93 @@ func qpsIndex(rw http.ResponseWriter, r *http.Request) {
func
listConf
(
rw
http
.
ResponseWriter
,
r
*
http
.
Request
)
{
r
.
ParseForm
()
command
:=
r
.
Form
.
Get
(
"command"
)
if
command
!=
""
{
data
:=
make
(
map
[
interface
{}]
interface
{})
switch
command
{
case
"conf"
:
tmpl
:=
template
.
Must
(
template
.
New
(
"dashboard"
)
.
Parse
(
dashboardTpl
))
tmpl
=
template
.
Must
(
tmpl
.
Parse
(
configTpl
))
tmpl
=
template
.
Must
(
tmpl
.
Parse
(
defaultScriptsTpl
))
data
[
"Content"
]
=
BConfig
tmpl
.
Execute
(
rw
,
data
)
case
"router"
:
content
:=
make
(
map
[
string
]
interface
{})
if
command
==
""
{
rw
.
Write
([]
byte
(
"command not support"
))
return
}
var
fields
=
[]
string
{
fmt
.
Sprintf
(
"Router Pattern"
),
fmt
.
Sprintf
(
"Methods"
),
fmt
.
Sprintf
(
"Controller"
),
data
:=
make
(
map
[
interface
{}]
interface
{})
switch
command
{
case
"conf"
:
tmpl
:=
template
.
Must
(
template
.
New
(
"dashboard"
)
.
Parse
(
dashboardTpl
))
tmpl
=
template
.
Must
(
tmpl
.
Parse
(
configTpl
))
tmpl
=
template
.
Must
(
tmpl
.
Parse
(
defaultScriptsTpl
))
data
[
"Content"
]
=
BConfig
tmpl
.
Execute
(
rw
,
data
)
case
"router"
:
var
(
content
=
map
[
string
]
interface
{}{
"Fields"
:
[]
string
{
"Router Pattern"
,
"Methods"
,
"Controller"
,
},
}
content
[
"Fields"
]
=
fields
methods
:=
[]
string
{}
methodsData
:=
make
(
map
[
string
]
interface
{})
for
method
,
t
:=
range
BeeApp
.
Handlers
.
routers
{
methods
=
[]
string
{}
methodsData
=
make
(
map
[
string
]
interface
{})
)
for
method
,
t
:=
range
BeeApp
.
Handlers
.
routers
{
resultList
:=
new
([][]
string
)
resultList
:=
new
([][]
string
)
printTree
(
resultList
,
t
)
printTree
(
resultList
,
t
)
methods
=
append
(
methods
,
method
)
methodsData
[
method
]
=
resultList
}
methods
=
append
(
methods
,
method
)
methodsData
[
method
]
=
resultList
}
content
[
"Data"
]
=
methodsData
content
[
"Methods"
]
=
methods
data
[
"Content"
]
=
content
data
[
"Title"
]
=
"Routers"
execTpl
(
rw
,
data
,
routerAndFilterTpl
,
defaultScriptsTpl
)
case
"filter"
:
content
:=
make
(
map
[
string
]
interface
{})
var
fields
=
[]
string
{
fmt
.
Sprintf
(
"Router Pattern"
),
fmt
.
Sprintf
(
"Filter Function"
),
content
[
"Data"
]
=
methodsData
content
[
"Methods"
]
=
methods
data
[
"Content"
]
=
content
data
[
"Title"
]
=
"Routers"
execTpl
(
rw
,
data
,
routerAndFilterTpl
,
defaultScriptsTpl
)
case
"filter"
:
var
(
content
=
map
[
string
]
interface
{}{
"Fields"
:
[]
string
{
"Router Pattern"
,
"Filter Function"
,
},
}
content
[
"Fields"
]
=
fields
filterTypes
:=
[]
string
{}
filterTypeData
:=
make
(
map
[
string
]
interface
{})
if
BeeApp
.
Handlers
.
enableFilter
{
var
filterType
string
for
k
,
fr
:=
range
map
[
int
]
string
{
BeforeStatic
:
"Before Static"
,
BeforeRouter
:
"Before Router"
,
BeforeExec
:
"Before Exec"
,
AfterExec
:
"After Exec"
,
FinishRouter
:
"Finish Router"
}
{
if
bf
,
ok
:=
BeeApp
.
Handlers
.
filters
[
k
];
ok
{
filterType
=
fr
filterTypes
=
append
(
filterTypes
,
filterType
)
resultList
:=
new
([][]
string
)
for
_
,
f
:=
range
bf
{
var
result
=
[]
string
{
fmt
.
Sprintf
(
"%s"
,
f
.
pattern
),
fmt
.
Sprintf
(
"%s"
,
utils
.
GetFuncName
(
f
.
filterFunc
)),
}
*
resultList
=
append
(
*
resultList
,
result
)
filterTypes
=
[]
string
{}
filterTypeData
=
make
(
map
[
string
]
interface
{})
)
if
BeeApp
.
Handlers
.
enableFilter
{
var
filterType
string
for
k
,
fr
:=
range
map
[
int
]
string
{
BeforeStatic
:
"Before Static"
,
BeforeRouter
:
"Before Router"
,
BeforeExec
:
"Before Exec"
,
AfterExec
:
"After Exec"
,
FinishRouter
:
"Finish Router"
}
{
if
bf
,
ok
:=
BeeApp
.
Handlers
.
filters
[
k
];
ok
{
filterType
=
fr
filterTypes
=
append
(
filterTypes
,
filterType
)
resultList
:=
new
([][]
string
)
for
_
,
f
:=
range
bf
{
var
result
=
[]
string
{
fmt
.
Sprintf
(
"%s"
,
f
.
pattern
),
fmt
.
Sprintf
(
"%s"
,
utils
.
GetFuncName
(
f
.
filterFunc
)),
}
filterTypeData
[
filterType
]
=
resultList
*
resultList
=
append
(
*
resultList
,
result
)
}
filterTypeData
[
filterType
]
=
resultList
}
}
}
content
[
"Data"
]
=
filterTypeData
content
[
"Methods"
]
=
filterTypes
content
[
"Data"
]
=
filterTypeData
content
[
"Methods"
]
=
filterTypes
data
[
"Content"
]
=
content
data
[
"Title"
]
=
"Filters"
execTpl
(
rw
,
data
,
routerAndFilterTpl
,
defaultScriptsTpl
)
default
:
rw
.
Write
([]
byte
(
"command not support"
))
}
}
else
{
data
[
"Content"
]
=
content
data
[
"Title"
]
=
"Filters"
execTpl
(
rw
,
data
,
routerAndFilterTpl
,
defaultScriptsTpl
)
default
:
rw
.
Write
([]
byte
(
"command not support"
))
}
}
...
...
@@ -180,23 +182,23 @@ func printTree(resultList *[][]string, t *Tree) {
if
v
,
ok
:=
l
.
runObject
.
(
*
controllerInfo
);
ok
{
if
v
.
routerType
==
routerTypeBeego
{
var
result
=
[]
string
{
fmt
.
Sprintf
(
"%s"
,
v
.
pattern
)
,
v
.
pattern
,
fmt
.
Sprintf
(
"%s"
,
v
.
methods
),
fmt
.
Sprintf
(
"%s"
,
v
.
controllerType
),
}
*
resultList
=
append
(
*
resultList
,
result
)
}
else
if
v
.
routerType
==
routerTypeRESTFul
{
var
result
=
[]
string
{
fmt
.
Sprintf
(
"%s"
,
v
.
pattern
)
,
v
.
pattern
,
fmt
.
Sprintf
(
"%s"
,
v
.
methods
),
fmt
.
Sprintf
(
""
)
,
""
,
}
*
resultList
=
append
(
*
resultList
,
result
)
}
else
if
v
.
routerType
==
routerTypeHandler
{
var
result
=
[]
string
{
fmt
.
Sprintf
(
"%s"
,
v
.
pattern
)
,
fmt
.
Sprintf
(
""
)
,
fmt
.
Sprintf
(
""
)
,
v
.
pattern
,
""
,
""
,
}
*
resultList
=
append
(
*
resultList
,
result
)
}
...
...
@@ -209,49 +211,49 @@ func printTree(resultList *[][]string, t *Tree) {
func
profIndex
(
rw
http
.
ResponseWriter
,
r
*
http
.
Request
)
{
r
.
ParseForm
()
command
:=
r
.
Form
.
Get
(
"command"
)
format
:=
r
.
Form
.
Get
(
"format"
)
data
:=
make
(
map
[
interface
{}]
interface
{})
var
result
bytes
.
Buffer
if
command
!=
""
{
toolbox
.
ProcessInput
(
command
,
&
result
)
data
[
"Content"
]
=
result
.
String
()
if
format
==
"json"
&&
command
==
"gc summary"
{
dataJSON
,
err
:=
json
.
Marshal
(
data
)
if
err
!=
nil
{
http
.
Error
(
rw
,
err
.
Error
(),
http
.
StatusInternalServerError
)
return
}
if
command
==
""
{
return
}
rw
.
Header
()
.
Set
(
"Content-Type"
,
"application/json"
)
rw
.
Write
(
dataJSON
)
var
(
format
=
r
.
Form
.
Get
(
"format"
)
data
=
make
(
map
[
interface
{}]
interface
{})
result
bytes
.
Buffer
)
toolbox
.
ProcessInput
(
command
,
&
result
)
data
[
"Content"
]
=
result
.
String
()
if
format
==
"json"
&&
command
==
"gc summary"
{
dataJSON
,
err
:=
json
.
Marshal
(
data
)
if
err
!=
nil
{
http
.
Error
(
rw
,
err
.
Error
(),
http
.
StatusInternalServerError
)
return
}
data
[
"Title"
]
=
command
defaultTpl
:=
defaultScriptsTpl
if
command
==
"gc summary"
{
defaultTpl
=
gcAjaxTpl
}
execTpl
(
rw
,
data
,
profillingTpl
,
defaultTpl
)
rw
.
Header
()
.
Set
(
"Content-Type"
,
"application/json"
)
rw
.
Write
(
dataJSON
)
return
}
data
[
"Title"
]
=
command
defaultTpl
:=
defaultScriptsTpl
if
command
==
"gc summary"
{
defaultTpl
=
gcAjaxTpl
}
execTpl
(
rw
,
data
,
profillingTpl
,
defaultTpl
)
}
// Healthcheck is a http.Handler calling health checking and showing the result.
// it's in "/healthcheck" pattern in admin module.
func
healthcheck
(
rw
http
.
ResponseWriter
,
req
*
http
.
Request
)
{
data
:=
make
(
map
[
interface
{}]
interface
{})
var
result
=
[]
string
{}
fields
:=
[]
string
{
fmt
.
Sprintf
(
"Name"
),
fmt
.
Sprintf
(
"Message"
),
fmt
.
Sprintf
(
"Status"
),
}
resultList
:=
new
([][]
string
)
content
:=
make
(
map
[
string
]
interface
{})
var
(
data
=
make
(
map
[
interface
{}]
interface
{})
result
=
[]
string
{}
resultList
=
new
([][]
string
)
content
=
map
[
string
]
interface
{}{
"Fields"
:
[]
string
{
"Name"
,
"Message"
,
"Status"
},
}
)
for
name
,
h
:=
range
toolbox
.
AdminCheckList
{
if
err
:=
h
.
Check
();
err
!=
nil
{
...
...
@@ -271,8 +273,6 @@ func healthcheck(rw http.ResponseWriter, req *http.Request) {
}
*
resultList
=
append
(
*
resultList
,
result
)
}
content
[
"Fields"
]
=
fields
content
[
"Data"
]
=
resultList
data
[
"Content"
]
=
content
data
[
"Title"
]
=
"Health Check"
...
...
@@ -288,10 +288,8 @@ func taskStatus(rw http.ResponseWriter, req *http.Request) {
req
.
ParseForm
()
taskname
:=
req
.
Form
.
Get
(
"taskname"
)
if
taskname
!=
""
{
if
t
,
ok
:=
toolbox
.
AdminTaskList
[
taskname
];
ok
{
err
:=
t
.
Run
()
if
err
!=
nil
{
if
err
:=
t
.
Run
();
err
!=
nil
{
data
[
"Message"
]
=
[]
string
{
"error"
,
fmt
.
Sprintf
(
"%s"
,
err
)}
}
data
[
"Message"
]
=
[]
string
{
"success"
,
fmt
.
Sprintf
(
"%s run success,Now the Status is <br>%s"
,
taskname
,
t
.
GetStatus
())}
...
...
@@ -305,18 +303,18 @@ func taskStatus(rw http.ResponseWriter, req *http.Request) {
resultList
:=
new
([][]
string
)
var
result
=
[]
string
{}
var
fields
=
[]
string
{
fmt
.
Sprintf
(
"Task Name"
)
,
fmt
.
Sprintf
(
"Task Spec"
)
,
fmt
.
Sprintf
(
"Task Status"
)
,
fmt
.
Sprintf
(
"Last Time"
)
,
fmt
.
Sprintf
(
""
)
,
"Task Name"
,
"Task Spec"
,
"Task Status"
,
"Last Time"
,
""
,
}
for
tname
,
tk
:=
range
toolbox
.
AdminTaskList
{
result
=
[]
string
{
fmt
.
Sprintf
(
"%s"
,
tname
)
,
tname
,
fmt
.
Sprintf
(
"%s"
,
tk
.
GetSpec
()),
fmt
.
Sprintf
(
"%s"
,
tk
.
GetStatus
()),
fmt
.
Sprintf
(
"%s"
,
tk
.
GetPrev
()
.
String
()
),
tk
.
GetPrev
()
.
String
(
),
}
*
resultList
=
append
(
*
resultList
,
result
)
}
...
...
app.go
View file @
46aa340b
...
...
@@ -59,128 +59,125 @@ func (app *App) Run() {
}
var
(
err
error
l
net
.
Listener
err
error
l
net
.
Listener
endRunning
=
make
(
chan
bool
,
1
)
)
endRunning
:=
make
(
chan
bool
,
1
)
// run cgi server
if
BConfig
.
Listen
.
EnableFcgi
{
if
BConfig
.
Listen
.
EnableStdIo
{
err
=
fcgi
.
Serve
(
nil
,
app
.
Handlers
)
// standard I/O
if
err
==
nil
{
if
err
=
fcgi
.
Serve
(
nil
,
app
.
Handlers
);
err
==
nil
{
// standard I/O
BeeLogger
.
Info
(
"Use FCGI via standard I/O"
)
}
else
{
BeeLogger
.
Info
(
"Cannot use FCGI via standard I/O"
,
err
)
BeeLogger
.
Critical
(
"Cannot use FCGI via standard I/O"
,
err
)
}
}
else
{
if
BConfig
.
Listen
.
HTTPPort
==
0
{
// remove the Socket file before start
if
utils
.
FileExists
(
addr
)
{
os
.
Remove
(
addr
)
}
l
,
err
=
net
.
Listen
(
"unix"
,
addr
)
}
else
{
l
,
err
=
net
.
Listen
(
"tcp"
,
addr
)
}
if
err
!=
nil
{
BeeLogger
.
Critical
(
"Listen: "
,
err
)
}
err
=
fcgi
.
Serve
(
l
,
app
.
Handlers
)
return
}
}
else
{
if
BConfig
.
Listen
.
Graceful
{
httpsAddr
:=
BConfig
.
Listen
.
HTTPSAddr
app
.
Server
.
Addr
=
httpsAddr
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
if
BConfig
.
Listen
.
HTTPSEnable
{
go
func
()
{
time
.
Sleep
(
20
*
time
.
Microsecond
)
if
BConfig
.
Listen
.
HTTPSPort
!=
0
{
httpsAddr
=
fmt
.
Sprintf
(
"%s:%d"
,
BConfig
.
Listen
.
HTTPSAddr
,
BConfig
.
Listen
.
HTTPSPort
)
app
.
Server
.
Addr
=
httpsAddr
}
server
:=
grace
.
NewServer
(
httpsAddr
,
app
.
Handlers
)
server
.
Server
.
ReadTimeout
=
app
.
Server
.
ReadTimeout
server
.
Server
.
WriteTimeout
=
app
.
Server
.
WriteTimeout
err
:=
server
.
ListenAndServeTLS
(
BConfig
.
Listen
.
HTTPSCertFile
,
BConfig
.
Listen
.
HTTPSKeyFile
)
if
err
!=
nil
{
BeeLogger
.
Critical
(
"ListenAndServeTLS: "
,
err
,
fmt
.
Sprintf
(
"%d"
,
os
.
Getpid
()))
time
.
Sleep
(
100
*
time
.
Microsecond
)
endRunning
<-
true
}
}()
}
if
BConfig
.
Listen
.
HTTPEnable
{
go
func
()
{
server
:=
grace
.
NewServer
(
addr
,
app
.
Handlers
)
server
.
Server
.
ReadTimeout
=
app
.
Server
.
ReadTimeout
server
.
Server
.
WriteTimeout
=
app
.
Server
.
WriteTimeout
if
BConfig
.
Listen
.
ListenTCP4
{
server
.
Network
=
"tcp4"
}
err
:=
server
.
ListenAndServe
()
if
err
!=
nil
{
BeeLogger
.
Critical
(
"ListenAndServe: "
,
err
,
fmt
.
Sprintf
(
"%d"
,
os
.
Getpid
()))
time
.
Sleep
(
100
*
time
.
Microsecond
)
endRunning
<-
true
}
}()
if
BConfig
.
Listen
.
HTTPPort
==
0
{
// remove the Socket file before start
if
utils
.
FileExists
(
addr
)
{
os
.
Remove
(
addr
)
}
l
,
err
=
net
.
Listen
(
"unix"
,
addr
)
}
else
{
app
.
Server
.
Addr
=
addr
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
l
,
err
=
net
.
Listen
(
"tcp"
,
addr
)
}
if
err
!=
nil
{
BeeLogger
.
Critical
(
"Listen: "
,
err
)
}
if
err
=
fcgi
.
Serve
(
l
,
app
.
Handlers
);
err
!=
nil
{
BeeLogger
.
Critical
(
"fcgi.Serve: "
,
err
)
}
return
}
if
BConfig
.
Listen
.
HTTPSEnable
{
go
func
()
{
time
.
Sleep
(
20
*
time
.
Microsecond
)
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
)
err
:=
app
.
Server
.
ListenAndServeTLS
(
BConfig
.
Listen
.
HTTPSCertFile
,
BConfig
.
Listen
.
HTTPSKeyFile
)
if
err
!=
nil
{
BeeLogger
.
Critical
(
"ListenAndServeTLS: "
,
err
)
time
.
Sleep
(
100
*
time
.
Microsecond
)
endRunning
<-
true
}
}()
}
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
if
BConfig
.
Listen
.
HTTPEnable
{
go
func
()
{
app
.
Server
.
Addr
=
addr
BeeLogger
.
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
)
time
.
Sleep
(
100
*
time
.
Microsecond
)
endRunning
<-
true
return
}
err
=
app
.
Server
.
Serve
(
ln
)
if
err
!=
nil
{
BeeLogger
.
Critical
(
"ListenAndServe: "
,
err
)
time
.
Sleep
(
100
*
time
.
Microsecond
)
endRunning
<-
true
return
}
}
else
{
err
:=
app
.
Server
.
ListenAndServe
()
if
err
!=
nil
{
BeeLogger
.
Critical
(
"ListenAndServe: "
,
err
)
time
.
Sleep
(
100
*
time
.
Microsecond
)
endRunning
<-
true
}
}
}()
}
// run graceful mode
if
BConfig
.
Listen
.
Graceful
{
httpsAddr
:=
BConfig
.
Listen
.
HTTPSAddr
app
.
Server
.
Addr
=
httpsAddr
if
BConfig
.
Listen
.
HTTPSEnable
{
go
func
()
{
time
.
Sleep
(
20
*
time
.
Microsecond
)
if
BConfig
.
Listen
.
HTTPSPort
!=
0
{
httpsAddr
=
fmt
.
Sprintf
(
"%s:%d"
,
BConfig
.
Listen
.
HTTPSAddr
,
BConfig
.
Listen
.
HTTPSPort
)
app
.
Server
.
Addr
=
httpsAddr
}
server
:=
grace
.
NewServer
(
httpsAddr
,
app
.
Handlers
)
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
()))
time
.
Sleep
(
100
*
time
.
Microsecond
)
endRunning
<-
true
}
}()
}
if
BConfig
.
Listen
.
HTTPEnable
{
go
func
()
{
server
:=
grace
.
NewServer
(
addr
,
app
.
Handlers
)
server
.
Server
.
ReadTimeout
=
app
.
Server
.
ReadTimeout
server
.
Server
.
WriteTimeout
=
app
.
Server
.
WriteTimeout
if
BConfig
.
Listen
.
ListenTCP4
{
server
.
Network
=
"tcp4"
}
if
err
:=
server
.
ListenAndServe
();
err
!=
nil
{
BeeLogger
.
Critical
(
"ListenAndServe: "
,
err
,
fmt
.
Sprintf
(
"%d"
,
os
.
Getpid
()))
time
.
Sleep
(
100
*
time
.
Microsecond
)
endRunning
<-
true
}
}()
}
<-
endRunning
return
}
// run normal mode
app
.
Server
.
Addr
=
addr
if
BConfig
.
Listen
.
HTTPSEnable
{
go
func
()
{
time
.
Sleep
(
20
*
time
.
Microsecond
)
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
)
if
err
:=
app
.
Server
.
ListenAndServeTLS
(
BConfig
.
Listen
.
HTTPSCertFile
,
BConfig
.
Listen
.
HTTPSKeyFile
);
err
!=
nil
{
BeeLogger
.
Critical
(
"ListenAndServeTLS: "
,
err
)
time
.
Sleep
(
100
*
time
.
Microsecond
)
endRunning
<-
true
}
}()
}
if
BConfig
.
Listen
.
HTTPEnable
{
go
func
()
{
app
.
Server
.
Addr
=
addr
BeeLogger
.
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
)
time
.
Sleep
(
100
*
time
.
Microsecond
)
endRunning
<-
true
return
}
if
err
=
app
.
Server
.
Serve
(
ln
);
err
!=
nil
{
BeeLogger
.
Critical
(
"ListenAndServe: "
,
err
)
time
.
Sleep
(
100
*
time
.
Microsecond
)
endRunning
<-
true
return
}
}
else
{
if
err
:=
app
.
Server
.
ListenAndServe
();
err
!=
nil
{
BeeLogger
.
Critical
(
"ListenAndServe: "
,
err
)
time
.
Sleep
(
100
*
time
.
Microsecond
)
endRunning
<-
true
}
}
}()
}
<-
endRunning
}
...
...
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