Add ability to launch pgweb with url prefix

This commit is contained in:
Dan Sosedoff 2016-02-19 21:14:56 -06:00
parent f308d1cfde
commit 0a144a633d
7 changed files with 30 additions and 19 deletions

View File

@ -104,7 +104,7 @@ func handleSignals() {
} }
func openPage() { func openPage() {
url := fmt.Sprintf("http://%v:%v", options.HttpHost, options.HttpPort) url := fmt.Sprintf("http://%v:%v/%s", options.HttpHost, options.HttpPort, options.Prefix)
fmt.Println("To view database open", url, "in browser") fmt.Println("To view database open", url, "in browser")
if options.SkipOpen { if options.SkipOpen {

View File

@ -2,6 +2,7 @@ package api
import ( import (
"log" "log"
"strings"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
@ -12,7 +13,9 @@ import (
// Middleware function to check database connection status before running queries // Middleware function to check database connection status before running queries
func dbCheckMiddleware() gin.HandlerFunc { func dbCheckMiddleware() gin.HandlerFunc {
return func(c *gin.Context) { return func(c *gin.Context) {
if allowedPaths[c.Request.URL.Path] == true { path := strings.Replace(c.Request.URL.Path, command.Opts.Prefix, "", -1)
if allowedPaths[path] == true {
c.Next() c.Next()
return return
} }

View File

@ -14,10 +14,12 @@ func SetupMiddlewares(group *gin.RouterGroup) {
} }
func SetupRoutes(router *gin.Engine) { func SetupRoutes(router *gin.Engine) {
router.GET("/", GetHome) group := router.Group(command.Opts.Prefix)
router.GET("/static/*path", GetAsset)
api := router.Group("/api") group.GET("/", GetHome)
group.GET("/static/*path", GetAsset)
api := group.Group("/api")
{ {
SetupMiddlewares(api) SetupMiddlewares(api)

View File

@ -2,6 +2,7 @@ package command
import ( import (
"os" "os"
"strings"
"github.com/jessevdk/go-flags" "github.com/jessevdk/go-flags"
) )
@ -22,6 +23,7 @@ type Options struct {
AuthPass string `long:"auth-pass" description:"HTTP basic auth password"` AuthPass string `long:"auth-pass" description:"HTTP basic auth password"`
SkipOpen bool `short:"s" long:"skip-open" description:"Skip browser open on start"` SkipOpen bool `short:"s" long:"skip-open" description:"Skip browser open on start"`
Sessions bool `long:"sessions" description:"Enable multiple database sessions" default:"false"` Sessions bool `long:"sessions" description:"Enable multiple database sessions" default:"false"`
Prefix string `long:"prefix" description:"Add a url prefix"`
} }
var Opts Options var Opts Options
@ -40,5 +42,9 @@ func ParseOptions() error {
Opts.Sessions = true Opts.Sessions = true
} }
if Opts.Prefix != "" && !strings.Contains(Opts.Prefix, "/") {
Opts.Prefix = Opts.Prefix + "/"
}
return nil return nil
} }

File diff suppressed because one or more lines are too long

View File

@ -5,15 +5,15 @@
<meta charset="utf-8"> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta http-equiv="Content-Language" content="en"> <meta http-equiv="Content-Language" content="en">
<link rel="stylesheet" href="/static/css/bootstrap.css"></link> <link rel="stylesheet" href="static/css/bootstrap.css"></link>
<link rel="stylesheet" href="/static/css/font-awesome.css"></link> <link rel="stylesheet" href="static/css/font-awesome.css"></link>
<link rel="stylesheet" href="/static/css/app.css"></link> <link rel="stylesheet" href="static/css/app.css"></link>
<link rel="icon" type="image/x-icon" href="/static/img/icon.ico" /> <link rel="icon" type="image/x-icon" href="static/img/icon.ico" />
<script type="text/javascript" src="/static/js/jquery.js"></script> <script type="text/javascript" src="static/js/jquery.js"></script>
<script type="text/javascript" src="/static/js/ace.js"></script> <script type="text/javascript" src="static/js/ace.js"></script>
<script type="text/javascript" src="/static/js/ace-pgsql.js"></script> <script type="text/javascript" src="static/js/ace-pgsql.js"></script>
<script type="text/javascript" src="/static/js/bootstrap-contextmenu.js"></script> <script type="text/javascript" src="static/js/bootstrap-contextmenu.js"></script>
<script type="text/javascript" src="/static/js/app.js"></script> <script type="text/javascript" src="static/js/app.js"></script>
</head> </head>
<body> <body>
<div id="main"> <div id="main">

View File

@ -63,7 +63,7 @@ function apiCall(method, path, params, cb) {
$.ajax({ $.ajax({
timeout: timeout, timeout: timeout,
url: "/api" + path, url: "api" + path,
method: method, method: method,
cache: false, cache: false,
data: params, data: params,