c + d works
This commit is contained in:
parent
eb712716a6
commit
7b408a9c87
20
Caddyfile
20
Caddyfile
|
|
@ -1,16 +1,4 @@
|
||||||
|
|
||||||
ares-mon.jopa.dev {
|
|
||||||
proxy / link1:80
|
|
||||||
tls ofj@gmail.com
|
|
||||||
}
|
|
||||||
{
|
|
||||||
proxy
|
|
||||||
tls
|
|
||||||
}
|
|
||||||
{
|
|
||||||
proxy
|
|
||||||
tls
|
|
||||||
}
|
|
||||||
www.jpmatz.de {
|
www.jpmatz.de {
|
||||||
proxy / link1:80
|
proxy / link1:80
|
||||||
tls ofj@gmail.com
|
tls ofj@gmail.com
|
||||||
|
|
@ -18,4 +6,12 @@
|
||||||
ares.jopa.dev {
|
ares.jopa.dev {
|
||||||
proxy /site link1:80
|
proxy /site link1:80
|
||||||
tls ofj@gmail.com
|
tls ofj@gmail.com
|
||||||
|
}
|
||||||
|
www.jpmatz.de {
|
||||||
|
proxy link1:80 link/1
|
||||||
|
tls dfasfasfsafdsafsd
|
||||||
|
}
|
||||||
|
ares-mon.jopa.dev {
|
||||||
|
proxy / link1:80
|
||||||
|
tls ofj@gmail.com
|
||||||
}
|
}
|
||||||
18
index.html
18
index.html
|
|
@ -9,7 +9,7 @@
|
||||||
<link rel="manifest" href="static/site.webmanifest">
|
<link rel="manifest" href="static/site.webmanifest">
|
||||||
<link rel="apple-touch-icon" href="static/icon.png">
|
<link rel="apple-touch-icon" href="static/icon.png">
|
||||||
<link rel="stylesheet" href="static/css/normalize.css">
|
<link rel="stylesheet" href="static/css/normalize.css">
|
||||||
<link rel="stylesheet" href="static/css/main.css">
|
|
||||||
|
|
||||||
<meta name="theme-color" content="#fafafa">
|
<meta name="theme-color" content="#fafafa">
|
||||||
|
|
||||||
|
|
@ -18,30 +18,30 @@
|
||||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootswatch/4.3.1/solar/bootstrap.min.css" crossorigin="anonymous">
|
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootswatch/4.3.1/solar/bootstrap.min.css" crossorigin="anonymous">
|
||||||
<script src="static/js/vendor/modernizr-3.7.1.min.js"></script>
|
<script src="static/js/vendor/modernizr-3.7.1.min.js"></script>
|
||||||
<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
|
<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
|
||||||
|
<link rel="stylesheet" href="static/css/main.css">
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
<body onload="loadSites();">
|
<body onload="loadSites();">
|
||||||
|
|
||||||
|
|
||||||
<div class="container " id="main" style="margin-top: 300px">
|
<div class="container" id="main" style="margin-top: 300px">
|
||||||
<div id="input" class="card float-sm-left border-success lg-3 md-4 sm-2" >
|
<div id="input" class="card float-sm-left border-success lg-3 md-4 sm-2" >
|
||||||
|
|
||||||
<div class="card-header"><input type="text" class="form-control" id="domain" placeholder="Domain"></div>
|
<div class="card-header"><input type="text" class="form-control" id="domain" value="www.Domain.com" placeholder="Domain"></div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h5 class="card-title">
|
<h5 class="card-title">
|
||||||
<input type="text" class="form-control" id="title" placeholder="Title">
|
<input type="text" class="form-control" id="title" value="Title" placeholder="Title">
|
||||||
</h4>
|
</h4>
|
||||||
|
|
||||||
<h6 class="card-text">
|
<h6 class="card-text">
|
||||||
<input type="text" class="form-control" id="target" placeholder="/test">
|
<input type="text" class="form-control" id="target" value="origin" placeholder="/test">
|
||||||
<input type="text" class="form-control" id="source" placeholder="to:8080">
|
<input type="text" class="form-control" id="source" value="destination" placeholder="to:8080">
|
||||||
</h6>
|
</h6>
|
||||||
<h6 class="card-text">tls:
|
<h6 class="card-text">tls:
|
||||||
<input type="text" class="form-control" id="email" value="email@example.com">
|
<input type="text" class="form-control" id="email" value="self_signed" value="email@example.com">
|
||||||
</h6>
|
</h6>
|
||||||
<p class="card-text">
|
<p class="card-text">
|
||||||
<input type="text" class="form-control" id="description" placeholder="description">
|
<input type="text" class="form-control" id="description" value="description" placeholder="description">
|
||||||
</p>
|
</p>
|
||||||
<button class="btn btn-primary" onClick="newSite()" id="send">Submit</button>
|
<button class="btn btn-primary" onClick="newSite()" id="send">Submit</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
10
main.go
10
main.go
|
|
@ -57,6 +57,7 @@ func save() {
|
||||||
jsonString, _ := json.Marshal(sites)
|
jsonString, _ := json.Marshal(sites)
|
||||||
ioutil.WriteFile(saveFile, jsonString, 0777)
|
ioutil.WriteFile(saveFile, jsonString, 0777)
|
||||||
saveCaddy()
|
saveCaddy()
|
||||||
|
restartCaddy()
|
||||||
}
|
}
|
||||||
|
|
||||||
func saveCaddy() {
|
func saveCaddy() {
|
||||||
|
|
@ -71,8 +72,6 @@ func saveCaddy() {
|
||||||
tmpl.Execute(buf, value)
|
tmpl.Execute(buf, value)
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Println("String: ", buf.String())
|
|
||||||
|
|
||||||
f, err := os.OpenFile(saveCaddyFile, os.O_CREATE|os.O_WRONLY, 0777)
|
f, err := os.OpenFile(saveCaddyFile, os.O_CREATE|os.O_WRONLY, 0777)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
|
|
@ -127,9 +126,10 @@ func updateSite(w http.ResponseWriter, r *http.Request) {
|
||||||
delete(sites, id)
|
delete(sites, id)
|
||||||
var site Site
|
var site Site
|
||||||
_ = json.NewDecoder(r.Body).Decode(&site)
|
_ = json.NewDecoder(r.Body).Decode(&site)
|
||||||
fmt.Print(site)
|
|
||||||
sites[id] = site
|
sites[id] = site
|
||||||
json.NewEncoder(w).Encode(site)
|
json.NewEncoder(w).Encode(site)
|
||||||
|
fmt.Println("Changed Site:")
|
||||||
|
fmt.Println(site)
|
||||||
save()
|
save()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -141,6 +141,8 @@ func createSite(w http.ResponseWriter, r *http.Request) {
|
||||||
site.Id = newID
|
site.Id = newID
|
||||||
sites[newID] = site
|
sites[newID] = site
|
||||||
json.NewEncoder(w).Encode(site)
|
json.NewEncoder(w).Encode(site)
|
||||||
|
fmt.Println("New Site:")
|
||||||
|
fmt.Println(site)
|
||||||
save()
|
save()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -150,6 +152,8 @@ func deleteSite(w http.ResponseWriter, r *http.Request) {
|
||||||
id, _ := strconv.Atoi(params["id"])
|
id, _ := strconv.Atoi(params["id"])
|
||||||
delete(sites, id)
|
delete(sites, id)
|
||||||
json.NewEncoder(w).Encode(true)
|
json.NewEncoder(w).Encode(true)
|
||||||
|
fmt.Print("deleted site: ")
|
||||||
|
fmt.Println(id)
|
||||||
save()
|
save()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
{"1":{"id":1,"title":"title 1","description":"desc 1","domain":"www.jpmatz.de","source":"/","target":"link1:80","email":"ofj@gmail.com"},"2":{"id":2,"title":"title 2","description":"desc 2","domain":"ares.jopa.dev","source":"/site","target":"link1:80","email":"ofj@gmail.com"},"4":{"id":3,"title":"title 3","description":"desc 3","domain":"ares-mon.jopa.dev","source":"/","target":"link1:80","email":"ofj@gmail.com"},"5":{"id":5,"title":"","description":"","domain":"","source":"","target":"","email":""},"6":{"id":6,"title":"","description":"","domain":"","source":"","target":"","email":""}}
|
{"1":{"id":1,"title":"title 1","description":"desc 1","domain":"www.jpmatz.de","source":"/","target":"link1:80","email":"ofj@gmail.com"},"2":{"id":2,"title":"title 2","description":"desc 2","domain":"ares.jopa.dev","source":"/site","target":"link1:80","email":"ofj@gmail.com"},"29":{"id":29,"title":"title 2","description":"desc 3452345235345","domain":"www.jpmatz.de","source":"link1:80","target":"link/1","email":"dfasfasfsafdsafsd"},"4":{"id":3,"title":"title 3","description":"desc 3","domain":"ares-mon.jopa.dev","source":"/","target":"link1:80","email":"ofj@gmail.com"}}
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
.container{
|
.container{
|
||||||
overflow: contain;
|
overflow: contain;
|
||||||
|
width: 80% !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.card{
|
.card{
|
||||||
|
|
@ -8,4 +9,9 @@
|
||||||
float: left;
|
float: left;
|
||||||
margin: 20px;
|
margin: 20px;
|
||||||
width: 25% !important;
|
width: 25% !important;
|
||||||
|
min-width: 200px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn{
|
||||||
|
margin:3px !important;
|
||||||
}
|
}
|
||||||
|
|
@ -27,6 +27,21 @@ var postJSON = function(url, data, callback) {
|
||||||
};
|
};
|
||||||
xhr.send(data);
|
xhr.send(data);
|
||||||
};
|
};
|
||||||
|
var deleteJSON = function(url, data, callback) {
|
||||||
|
var xhr = new XMLHttpRequest();
|
||||||
|
xhr.open('DELETE', url + "/" + data, true);
|
||||||
|
xhr.responseType = 'json';
|
||||||
|
xhr.setRequestHeader('Content-Type', 'application/json');
|
||||||
|
xhr.onload = function() {
|
||||||
|
var status = xhr.status;
|
||||||
|
if (status === 200) {
|
||||||
|
callback(null, xhr.response);
|
||||||
|
} else {
|
||||||
|
callback(status, xhr.response);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
xhr.send();
|
||||||
|
};
|
||||||
|
|
||||||
function loadSites(){
|
function loadSites(){
|
||||||
getJSON('http://localhost:8000/api/Sites',
|
getJSON('http://localhost:8000/api/Sites',
|
||||||
|
|
@ -46,8 +61,8 @@ function loadSites(){
|
||||||
|
|
||||||
function renderSite(site){
|
function renderSite(site){
|
||||||
siteString = `
|
siteString = `
|
||||||
<div class="card float-sm-left border-success lg-3 md-4 sm-2 rendered" >
|
<div class="card float-sm-left border-success lg-3 md-4 sm-2 rendered" id="${site.id}" >
|
||||||
<div class="card-header"><a href="https://${site.domain}">${site.domain}</a></div>
|
<div class="card-header"><a href="https://${site.domain}">${site.domain}</a> </div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h4 class="card-title">${site.title}</h4>
|
<h4 class="card-title">${site.title}</h4>
|
||||||
|
|
||||||
|
|
@ -55,6 +70,7 @@ function renderSite(site){
|
||||||
<h6 class="card-text">tls: ${site.email}</p>
|
<h6 class="card-text">tls: ${site.email}</p>
|
||||||
<p class="card-text">${site.description}</p>
|
<p class="card-text">${site.description}</p>
|
||||||
</div>
|
</div>
|
||||||
|
<button type="button" class="btn btn-outline-warning float-right" onclick="deleteSite('${site.id}')">Delete</button>
|
||||||
</div>
|
</div>
|
||||||
`
|
`
|
||||||
document.getElementById("main").innerHTML += siteString;
|
document.getElementById("main").innerHTML += siteString;
|
||||||
|
|
@ -68,5 +84,10 @@ function newSite(){
|
||||||
json["source"] = document.getElementById('source').value;
|
json["source"] = document.getElementById('source').value;
|
||||||
json["target"] = document.getElementById('target').value;
|
json["target"] = document.getElementById('target').value;
|
||||||
json["email"] = document.getElementById('email').value;
|
json["email"] = document.getElementById('email').value;
|
||||||
postJSON("http://localhost:8000/api/Sites", json, loadSites);
|
console.log(json);
|
||||||
|
postJSON("http://localhost:8000/api/Sites", JSON.stringify(json), loadSites);
|
||||||
|
}
|
||||||
|
|
||||||
|
function deleteSite(id){
|
||||||
|
deleteJSON("http://localhost:8000/api/Sites", id, loadSites)
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue