forked from Ivasoft/traefik
I changed what I think is needed and I have done manual testing on this.
I tried to keep the changes to a minimun.
The changes are approx:
* HTML output now includes the provider name in parenthesis.
* I'm not versed in bootstrap, should the output group providers in a
* table?
* PUT is only enabled on /api/web.
* GET on /api returns a map containing all providers configuration
* GET on /api/{provider} will return the config as before on that
* provider.
102 lines
3.8 KiB
Cheetah
102 lines
3.8 KiB
Cheetah
<!DOCTYPE html>
|
||
<html>
|
||
<head>
|
||
<title>/ˈTræfɪk/</title>
|
||
|
||
<!-- Bootstrap -->
|
||
<link rel="stylesheet" href="/static/bootstrap/css/bootstrap.min.css">
|
||
<link rel="stylesheet" href="/static/bootstrap/css/bootstrap-theme.min.css">
|
||
<script src="/static/jquery-2.1.4.min.js"></script>
|
||
<script src="/static/bootstrap/js/bootstrap.min.js"></script>
|
||
|
||
<style type="text/css">
|
||
body {padding-bottom: 70px;}
|
||
.content {margin:10px;}
|
||
</style>
|
||
</head>
|
||
|
||
<body>
|
||
|
||
<div class="container">
|
||
<div class="jumbotron">
|
||
<h1>/ˈTræfɪk/</h1>
|
||
</div>
|
||
|
||
<div class="row">
|
||
|
||
<div class="col-md-6">
|
||
<!-- <div class="panel-heading">Frontends</div>
|
||
<div class="panel-body"> -->
|
||
{{range $keyProviders, $valueProviders := .Configurations}}
|
||
{{range $keyFrontends, $valueFrontends := $valueProviders.Frontends}}
|
||
<div class="panel panel-primary">
|
||
<div class="panel-heading">{{$keyFrontends}} - ({{$keyProviders}})</div>
|
||
<div class="panel-body">
|
||
<a class="btn btn-info" role="button" data-toggle="collapse" href="#{{$valueFrontends.Backend}}" aria-expanded="false">
|
||
{{$valueFrontends.Backend}}
|
||
</a>
|
||
</div>
|
||
<table class="table table-striped table-hover">
|
||
<tr>
|
||
<td><em>Route</em></td>
|
||
<td><em>Rule</em></td>
|
||
<td><em>Value</em></td>
|
||
</tr>
|
||
{{range $keyRoutes, $valueRoutes := $valueFrontends.Routes}}
|
||
<tr>
|
||
<td>{{$keyRoutes}}</td>
|
||
<td>{{$valueRoutes.Rule}}</td>
|
||
<td>{{$valueRoutes.Value}}</td>
|
||
</tr>
|
||
{{end}}
|
||
</table>
|
||
</div>
|
||
{{end}}
|
||
{{end}}
|
||
<!-- </div> -->
|
||
</div>
|
||
<div class="col-md-6">
|
||
<!-- <div class="panel-heading">Backends</div>
|
||
<div class="panel-body"> -->
|
||
{{range $keyProviders, $valueProviders := .Configurations}}
|
||
{{range $keyBackends, $valueBackends := $valueProviders.Backends}}
|
||
<div class="panel panel-primary" id="{{$keyBackends}}">
|
||
<div class="panel-heading">{{$keyBackends}}({{$keyProviders}})</div>
|
||
<div class="panel-body">
|
||
{{with $valueBackends.LoadBalancer}}
|
||
<a class="btn btn-info" role="button">
|
||
Load Balancer: {{.Method}}
|
||
</a>
|
||
{{end}}
|
||
{{with $valueBackends.CircuitBreaker}}
|
||
<a class="btn btn-info" role="button">
|
||
Circuit Breaker: {{.Expression}}
|
||
</a>
|
||
{{end}}
|
||
</div>
|
||
<table class="table table-striped table-hover">
|
||
<tr>
|
||
<td><em>Server</em></td>
|
||
<td><em>URL</em></td>
|
||
<td><em>Weight</em></td>
|
||
</tr>
|
||
{{range $keyServers, $valueServers := $valueBackends.Servers}}
|
||
<tr>
|
||
<td>{{$keyServers}}</td>
|
||
<td><code><A href="{{$valueServers.URL}}">{{$valueServers.URL}}</A></code></td>
|
||
<td>{{$valueServers.Weight}}</td>
|
||
</tr>
|
||
{{end}}
|
||
</table>
|
||
</div>
|
||
{{end}}
|
||
{{end}}
|
||
<!-- </div> -->
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
</body>
|
||
</html>
|