Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
N
nexpie-grafana-theme
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Registry
Registry
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Kornkitt Poolsup
nexpie-grafana-theme
Commits
5d120de7
Commit
5d120de7
authored
Oct 03, 2014
by
Torkel Ödegaard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Filtered logging and url query helper
parent
5f1b4e61
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
113 additions
and
8 deletions
+113
-8
grafana
+1
-1
pkg/api/api.go
+2
-2
pkg/api/api_logger.go
+79
-0
pkg/api/api_render.go
+5
-3
pkg/utils/url.go
+24
-0
start_dependencies.sh
+2
-2
No files found.
grafana
@
eb28e63c
Subproject commit
1e81f8ecfc737674705fac7e0d85dc2206519b38
Subproject commit
eb28e63c08a43ada747fbcdae9612301c9c7a531
pkg/api/api.go
View file @
5d120de7
...
...
@@ -37,8 +37,8 @@ func (self *HttpServer) ListenAndServe() {
log
.
Info
(
"Starting Http Listener on port %v"
,
self
.
port
)
defer
func
()
{
self
.
shutdown
<-
true
}()
self
.
router
=
gin
.
Default
()
self
.
router
.
Use
(
CacheHeadersMiddleware
())
self
.
router
=
gin
.
New
()
self
.
router
.
Use
(
gin
.
Recovery
(),
apiLogger
(),
CacheHeadersMiddleware
())
self
.
router
.
Static
(
"/public"
,
"./public"
)
self
.
router
.
Static
(
"/app"
,
"./public/app"
)
...
...
pkg/api/api_logger.go
0 → 100644
View file @
5d120de7
package
api
import
(
"log"
"os"
"strings"
"time"
"github.com/gin-gonic/gin"
)
var
(
green
=
string
([]
byte
{
27
,
91
,
57
,
55
,
59
,
52
,
50
,
109
})
white
=
string
([]
byte
{
27
,
91
,
57
,
48
,
59
,
52
,
55
,
109
})
yellow
=
string
([]
byte
{
27
,
91
,
57
,
55
,
59
,
52
,
51
,
109
})
red
=
string
([]
byte
{
27
,
91
,
57
,
55
,
59
,
52
,
49
,
109
})
reset
=
string
([]
byte
{
27
,
91
,
48
,
109
})
)
func
ignoreLoggingRequest
(
code
int
,
contentType
string
)
bool
{
return
code
==
304
||
strings
.
HasPrefix
(
contentType
,
"application/javascript"
)
||
strings
.
HasPrefix
(
contentType
,
"text/"
)
||
strings
.
HasPrefix
(
contentType
,
"application/x-font-woff"
)
}
func
apiLogger
()
gin
.
HandlerFunc
{
stdlogger
:=
log
.
New
(
os
.
Stdout
,
""
,
0
)
return
func
(
c
*
gin
.
Context
)
{
// Start timer
start
:=
time
.
Now
()
// Process request
c
.
Next
()
code
:=
c
.
Writer
.
Status
()
contentType
:=
c
.
Writer
.
Header
()
.
Get
(
"Content-Type"
)
// ignore logging some requests
if
ignoreLoggingRequest
(
code
,
contentType
)
{
return
}
// save the IP of the requester
requester
:=
c
.
Request
.
Header
.
Get
(
"X-Real-IP"
)
// if the requester-header is empty, check the forwarded-header
if
len
(
requester
)
==
0
{
requester
=
c
.
Request
.
Header
.
Get
(
"X-Forwarded-For"
)
}
// if the requester is still empty, use the hard-coded address from the socket
if
len
(
requester
)
==
0
{
requester
=
c
.
Request
.
RemoteAddr
}
var
color
string
switch
{
case
code
>=
200
&&
code
<=
299
:
color
=
green
case
code
>=
300
&&
code
<=
399
:
color
=
white
case
code
>=
400
&&
code
<=
499
:
color
=
yellow
default
:
color
=
red
}
end
:=
time
.
Now
()
latency
:=
end
.
Sub
(
start
)
stdlogger
.
Printf
(
"[GIN] %v |%s %3d %s| %12v | %s %4s %s
\n
%s"
,
end
.
Format
(
"2006/01/02 - 15:04:05"
),
color
,
code
,
reset
,
latency
,
requester
,
c
.
Request
.
Method
,
c
.
Request
.
URL
.
Path
,
c
.
Errors
.
String
(),
)
}
}
pkg/api/api_render.go
View file @
5d120de7
...
...
@@ -5,6 +5,7 @@ import (
"github.com/gin-gonic/gin"
"github.com/torkelo/grafana-pro/pkg/components"
"github.com/torkelo/grafana-pro/pkg/utils"
)
func
init
()
{
...
...
@@ -15,12 +16,13 @@ func init() {
func
(
self
*
HttpServer
)
renderToPng
(
c
*
gin
.
Context
,
auth
*
authContext
)
{
accountId
:=
auth
.
getAccountId
()
query
:=
c
.
Request
.
URL
.
Query
(
)
query
Reader
:=
utils
.
NewUrlQueryReader
(
c
.
Request
.
URL
)
queryParams
:=
"?render&accountId="
+
strconv
.
Itoa
(
accountId
)
+
"&"
+
c
.
Request
.
URL
.
RawQuery
renderOpts
:=
&
components
.
RenderOpts
{
Url
:
c
.
Params
.
ByName
(
"url"
)
+
queryParams
,
Width
:
query
[
"width"
][
0
]
,
Height
:
query
[
"height"
][
0
]
,
Width
:
query
Reader
.
Get
(
"width"
,
"800"
)
,
Height
:
query
Reader
.
Get
(
"height"
,
"400"
)
,
}
renderOpts
.
Url
=
"http://localhost:3000"
+
renderOpts
.
Url
...
...
pkg/utils/url.go
0 → 100644
View file @
5d120de7
package
utils
import
(
"net/url"
)
type
UrlQueryReader
struct
{
values
url
.
Values
}
func
NewUrlQueryReader
(
url
*
url
.
URL
)
*
UrlQueryReader
{
return
&
UrlQueryReader
{
values
:
url
.
Query
(),
}
}
func
(
r
*
UrlQueryReader
)
Get
(
name
string
,
def
string
)
string
{
val
:=
r
.
values
[
name
]
if
len
(
val
)
==
0
{
return
def
}
return
val
[
0
]
}
start_dependencies.sh
View file @
5d120de7
docker
kill
gfdev
docker rm
gfdev
docker
kill
rethinkdb
docker rm
rethinkdb
docker run
-d
-p
8180:8080
-p
28015:28015
-p
29015:29015
\
--name
rethinkdb
\
...
...
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