initial commit

This commit is contained in:
Benjamin Bärthlein
2020-03-28 17:56:11 +01:00
parent 4a3673e0d3
commit c4809b85b4
51 changed files with 26929 additions and 1 deletions
+69
View File
@@ -0,0 +1,69 @@
{{define "content"}}
<div class="p-4" style="background-color: #e9ecef">
<h3 class="text-center mb-4">{{if eq .addEdit "edit" }}Edit{{else if eq .addEdit "add" }}Add{{end}} Host Entry</h3>
<form id="edithostform" action="javascript:void(0);">
<div class="row mt-3">
<div class="col-1"></div>
<div class="col-2 text-right">Hostname:</div>
<div class="col-8 input-group">
<input type="text" class="form-control" placeholder="Enter hostname" name="hostname" value="{{.host.Hostname}}" {{if eq .addEdit "edit" }}readonly{{end}}>
<div class="input-group-append">
<span class="input-group-text" id="basic-addon2">.{{.config.Domain}}</span>
</div>
</div>
<div class="col-1"></div>
</div>
<div class="row mt-3">
<div class="col-1"></div>
<div class="col-2 text-right">IP Address:</div>
<div class="col-8"><input type="text" class="form-control" placeholder="Enter IP Address" name="ip" value="{{.host.Ip}}"></div>
<div class="col-1"></div>
</div>
<div class="row mt-3">
<div class="col-1"></div>
<div class="col-2 text-right">TTL:</div>
<div class="col-8">
<select class="form-control" name="ttl">
<option value="20" {{if .host.Ttl }}{{if eq .host.Ttl 20 }}selected{{end}}{{end}}>20 s. Super dynamic DNS for frequent updates</option>
<option value="60" {{if .host.Ttl }}{{if eq .host.Ttl 60 }}selected{{end}}{{end}}>60 s. Default dynamic DNS value</option>
<option value="3600" {{if .host.Ttl }}{{if eq .host.Ttl 3600 }}selected{{end}}{{end}}>1 hr. Rarely updated IP address</option>
<option value="14400" {{if .host.Ttl }}{{if eq .host.Ttl 14400 }}selected{{end}}{{end}}>4 hrs. Static record with benefits of DNS caching</option>
</select>
</div>
<div class="col-1"></div>
</div>
<div class="row mt-3">
<div class="col-1"></div>
<div class="col-2 text-right">Username:</div>
<div class="col-8 input-group">
<div class="input-group-prepend">
<button class="btn btn-outline-secondary" type="button" onclick="copyToClipboard('username')"><img src="/static/icons/clipboard.svg" style="vertical-align: baseline" alt="" width="16" height="16" title="Copy"></button>
</div>
<input type="text" class="form-control" placeholder="Enter username" name="username" id="username" value="{{.host.UserName}}">
<div class="input-group-append">
<button class="btn btn-outline-secondary" type="button" onclick="generateUsername()">Generate</button>
</div>
</div>
<div class="col-1"></div>
</div>
<div class="row mt-3">
<div class="col-1"></div>
<div class="col-2 text-right">Password:</div>
<div class="col-8 input-group">
<div class="input-group-prepend">
<button class="btn btn-outline-secondary" type="button" onclick="copyToClipboard('password')"><img src="/static/icons/clipboard.svg" style="vertical-align: baseline" alt="" width="16" height="16" title="Copy"></button>
</div>
<input type="text" class="form-control" placeholder="Enter password" name="password" id="password" value="{{.host.Password}}">
<div class="input-group-append">
<button class="btn btn-outline-secondary" type="button" onclick="generatePassword()">Generate</button>
</div>
</div>
<div class="col-1"></div>
</div>
<div class="row mt-3">
<div class="col-11 d-flex justify-content-end"><button class="btn btn-primary" onclick="addEditHost({{.host.ID}}, {{.addEdit}})">{{if eq .addEdit "edit" }}Edit{{else if eq .addEdit "add" }}Add{{end}} Host Entry</button></div>
<div class="col-1"></div>
</div>
</form>
</div>
{{end}}
+31
View File
@@ -0,0 +1,31 @@
{{define "content"}}
<div class="jumbotron">
<h1 class="display-3">Jumbotron heading</h1>
<p class="lead">Cras justo odio, dapibus ac facilisis in, egestas eget quam. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
<p><a class="btn btn-lg btn-success" href="#" role="button">Sign up today</a></p>
</div>
<div class="row marketing">
<div class="col-lg-6">
<h4>Subheading</h4>
<p>Donec id elit non mi porta gravida at eget metus. Maecenas faucibus mollis interdum.</p>
<h4>Subheading</h4>
<p>Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Cras mattis consectetur purus sit amet fermentum.</p>
<h4>Subheading</h4>
<p>Maecenas sed diam eget risus varius blandit sit amet non magna.</p>
</div>
<div class="col-lg-6">
<h4>Subheading</h4>
<p>Donec id elit non mi porta gravida at eget metus. Maecenas faucibus mollis interdum.</p>
<h4>Subheading</h4>
<p>Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Cras mattis consectetur purus sit amet fermentum.</p>
<h4>Subheading</h4>
<p>Maecenas sed diam eget risus varius blandit sit amet non magna.</p>
</div>
</div>
{{end}}
+58
View File
@@ -0,0 +1,58 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="/static/icons/favicon.ico">
<title>Narrow Jumbotron Template for Bootstrap</title>
<!-- Bootstrap core CSS -->
<link href="/static/css/bootstrap.min.css" rel="stylesheet">
<!-- Custom styles for this template -->
<link href="/static/css/narrow-jumbotron.css" rel="stylesheet">
</head>
<body>
<div class="container">
<!-- Navigation -->
<div class="header clearfix">
<nav>
<ul class="nav nav-pills float-right">
<li class="nav-item">
<a class="nav-link active" href="/hosts">Hosts <span class="sr-only">(current)</span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="/logs">Logs</a>
</li>
<li class="nav-item">
<a class="nav-link" href="" onclick="logOut()">Logout</a>
</li>
</ul>
</nav>
<h3 class="text-muted">TheBBCloud DynDNS</h3>
</div>
<!-- Page Content -->
{{template "content" .}}
<footer class="footer">
<p>&copy; TheBBCloud 2020</p>
</footer>
</div> <!-- /container -->
<!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
<script src="/static/js/ie10-viewport-bug-workaround.js"></script>
<script src="/static/js/jquery-3.4.1.min.js"></script>
<script src="/static/js/bootstrap.bundle.min.js"></script>
<script src="/static/js/additional.js"></script>
</body>
</html>
+27
View File
@@ -0,0 +1,27 @@
{{define "content"}}
<div class="container marketing">
<h3 class="text-center mb-4">DNS Host Entries</h3>
<table class="table table-striped text-center">
<thead>
<tr>
<th>Hostname</th>
<th>IP</th>
<th>TTL</th>
<th>LastUpdate</th>
<th><button class="btn btn-primary" onclick="location.href='/hosts/add'">Add Host Entry</button></th>
</tr>
</thead>
<tbody>
{{range .hosts}}
<tr>
<td>{{.Hostname}}.{{$.config.Domain}}</td>
<td>{{.Ip}}</td>
<td>{{.Ttl}}</td>
<td>{{.LastUpdate.Format "01/02/2006 15:04 MEZ"}}</td>
<td><button onclick="location.href='/hosts/edit/{{.ID}}'" class="btn btn-outline-secondary btn-sm"><img src="/static/icons/pencil.svg" alt="" width="16" height="16" title="Edit"></button>&nbsp;<button class="btn btn-outline-secondary btn-sm" onclick="deleteHost('{{.ID}}')"><img src="/static/icons/trash.svg" alt="" width="16" height="16" title="Delete"></button> <button class="btn btn-outline-secondary btn-sm" onclick="location.href='/logs/host/{{.ID}}'"><img src="/static/icons/table.svg" alt="" width="16" height="16" title="Logs"></button></td>
</tr>
{{end}}
</tbody>
</table>
</div>
{{end}}
+29
View File
@@ -0,0 +1,29 @@
{{define "content"}}
<div class="container marketing">
<h3 class="text-center mb-4">Log Entries</h3>
<table class="table table-striped text-center" style="font-size: 14px">
<thead>
<tr>
<th>Status</th>
<th>Hostname</th>
<th>IP sent</th>
<th>Timestamp</th>
<th>User Agent</th>
<th>Caller IP</th>
</tr>
</thead>
<tbody>
{{range .logs}}
<tr>
<td class="align-middle mx-auto"><div class="{{if .Status}}bg-success{{else}}bg-danger{{end}}" style="width: 16px; height: 16px; margin: auto"></div></td>
<td>{{.Host.Hostname}}.{{$.config.Domain}}</td>
<td>{{.SentIP}}</td>
<td>{{.CreatedAt.Format "01/02/2006 15:04"}}</td>
<td>{{.UserAgent}}</td>
<td>{{.CallerIP}}</td>
</tr>
{{end}}
</tbody>
</table>
</div>
{{end}}