c + d works

This commit is contained in:
Askill 2019-11-01 20:39:23 +01:00
parent eb712716a6
commit 7b408a9c87
6 changed files with 55 additions and 28 deletions

View File

@ -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
} }

View File

@ -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
View File

@ -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()
} }

View File

@ -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"}}

View File

@ -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;
} }

View File

@ -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)
} }