[1.2.0] #4 Possible to Ex and Import Setting
This commit is contained in:
parent
3744613277
commit
418a6e8aad
@ -5,6 +5,7 @@ using System.Net;
|
||||
using System.Text;
|
||||
using BlubbFish.Utils;
|
||||
using BlubbFish.Utils.IoT.Bots;
|
||||
using LitJson;
|
||||
|
||||
namespace Fraunhofer.Fit.IoT.LoraMap.Model.Admin {
|
||||
class AdminModel {
|
||||
@ -12,6 +13,16 @@ namespace Fraunhofer.Fit.IoT.LoraMap.Model.Admin {
|
||||
public event AdminEvent NamesUpdate;
|
||||
|
||||
private readonly Dictionary<Int64, AdminSession> session = new Dictionary<Int64, AdminSession>();
|
||||
private readonly Dictionary<String, String> settings;
|
||||
|
||||
public AdminModel(Dictionary<String, String> settings) {
|
||||
this.settings = settings;
|
||||
if(!settings.ContainsKey("admin_user") || !settings.ContainsKey("admin_pass")) {
|
||||
Helper.WriteError("Kann die Einstellungen [webserver] admin_user und admin_pass nicht laden!");
|
||||
throw new FileNotFoundException("Kann die Einstellungen [webserver] admin_user und admin_pass nicht laden!");
|
||||
}
|
||||
}
|
||||
|
||||
public Boolean ParseReuqest(HttpListenerContext cont) {
|
||||
if(cont.Request.Url.PathAndQuery == "/admin/login") {
|
||||
return this.Login(cont);
|
||||
@ -34,6 +45,13 @@ namespace Fraunhofer.Fit.IoT.LoraMap.Model.Admin {
|
||||
String rawData = reader.ReadToEnd();
|
||||
cont.Request.InputStream.Close();
|
||||
reader.Close();
|
||||
try {
|
||||
JsonMapper.ToObject(rawData);
|
||||
} catch(Exception) {
|
||||
Helper.WriteError("501 - Error recieving names.json " + cont.Request.Url.PathAndQuery);
|
||||
cont.Response.StatusCode = 501;
|
||||
return false;
|
||||
}
|
||||
File.WriteAllText("json/names.json", rawData);
|
||||
Console.WriteLine("200 - Get names.json " + cont.Request.Url.PathAndQuery);
|
||||
this.NamesUpdate?.Invoke(this, new EventArgs());
|
||||
@ -58,8 +76,7 @@ namespace Fraunhofer.Fit.IoT.LoraMap.Model.Admin {
|
||||
|
||||
private Boolean Login(HttpListenerContext cont) {
|
||||
Dictionary<String, String> POST = Webserver.GetPostParams(cont.Request);
|
||||
if(POST.ContainsKey("user") && POST["user"] == "admin" &&
|
||||
POST.ContainsKey("pass") && POST["pass"] == "password") {
|
||||
if(POST.ContainsKey("user") && POST["user"] == this.settings["admin_user"] && POST.ContainsKey("pass") && POST["pass"] == this.settings["admin_pass"]) {
|
||||
Int64 sessionid = 0;
|
||||
while(true) {
|
||||
sessionid = AdminSession.GetRandomSessionid();
|
||||
|
@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Fraunhofer FIT")]
|
||||
[assembly: AssemblyProduct("Lora-Map")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2018 - 14.04.2019")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2018 - 15.04.2019")]
|
||||
[assembly: AssemblyTrademark("Fraunhofer FIT, BlubbFish")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
[assembly: NeutralResourcesLanguage("de-DE")]
|
||||
@ -33,8 +33,8 @@ using System.Runtime.InteropServices;
|
||||
// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
|
||||
// übernehmen, indem Sie "*" eingeben:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.1.7")]
|
||||
[assembly: AssemblyFileVersion("1.1.7")]
|
||||
[assembly: AssemblyVersion("1.2.0")]
|
||||
[assembly: AssemblyFileVersion("1.2.0")]
|
||||
|
||||
/*
|
||||
* 1.1.1 Add Debian package config
|
||||
@ -44,4 +44,5 @@ using System.Runtime.InteropServices;
|
||||
* 1.1.5 Add support for alert button
|
||||
* 1.1.6 #5 Create admin area
|
||||
* 1.1.7 #8 Editor for Names
|
||||
* 1.2.0 #4 Possible to Ex and Import Setting
|
||||
*/
|
||||
|
@ -18,10 +18,12 @@ namespace Fraunhofer.Fit.IoT.LoraMap {
|
||||
private readonly SortedDictionary<String, AlarmItem> alarms = new SortedDictionary<String, AlarmItem>();
|
||||
private JsonData marker;
|
||||
private readonly Dictionary<String, Marker> markertable = new Dictionary<String, Marker>();
|
||||
private readonly AdminModel admin = new AdminModel();
|
||||
private readonly AdminModel admin;
|
||||
|
||||
public Server(ADataBackend backend, Dictionary<String, String> settings, InIReader requests) : base(backend, settings, requests) {
|
||||
this.logger.SetPath(settings["loggingpath"]);
|
||||
this.CheckJsonFiles();
|
||||
this.admin = new AdminModel(settings);
|
||||
this.marker = JsonMapper.ToObject(File.ReadAllText("json/names.json"));
|
||||
this.admin.NamesUpdate += this.AdminModelUpdateNames;
|
||||
this.StartListen();
|
||||
@ -32,6 +34,7 @@ namespace Fraunhofer.Fit.IoT.LoraMap {
|
||||
foreach(KeyValuePair<String, PositionItem> item in this.positions) {
|
||||
item.Value.UpdateMarker(this.marker, item.Key);
|
||||
}
|
||||
Console.WriteLine("Namen und Icons aktualisiert!");
|
||||
}
|
||||
|
||||
private void CheckJsonFiles() {
|
||||
|
@ -4,3 +4,6 @@ server=127.0.0.1
|
||||
|
||||
[webserver]
|
||||
prefix=http://+:8080/
|
||||
admin_user=admin
|
||||
admin_pass=password
|
||||
loggingpath=/var/log/loramap.log
|
@ -1,27 +0,0 @@
|
||||
{
|
||||
"R": {
|
||||
"name": "26/91",
|
||||
"marker.svg": {
|
||||
"person": {
|
||||
"org": "thw",
|
||||
"funct": "fueh",
|
||||
"rang": "zug",
|
||||
"text": "TZ"
|
||||
}
|
||||
}
|
||||
},
|
||||
"L": {
|
||||
"name": "27/92",
|
||||
"marker.svg": {
|
||||
"person": {
|
||||
"org": "thw",
|
||||
"funct": "fueh",
|
||||
"rang": "trupp",
|
||||
"text": "B1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"K": {
|
||||
"name": "Test"
|
||||
}
|
||||
}
|
@ -105,3 +105,12 @@
|
||||
#iconeditor .innerbox .save {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
#content #eximport .title {
|
||||
margin-bottom: 20px;
|
||||
font-weight: bold;
|
||||
}
|
||||
#content #eximport .names textarea {
|
||||
height: 120px;
|
||||
width: 90%;
|
||||
}
|
@ -1,12 +1,12 @@
|
||||
function menu_names() {
|
||||
var parsenames = new XMLHttpRequest();
|
||||
parsenames.onreadystatechange = function() {
|
||||
if(parsenames.readyState === 4 && parsenames.status === 200) {
|
||||
NamesEditor.ParseJson(parsenames.responseText);
|
||||
var ajaxnames = new XMLHttpRequest();
|
||||
ajaxnames.onreadystatechange = function() {
|
||||
if(ajaxnames.readyState === 4 && ajaxnames.status === 200) {
|
||||
NamesEditor.ParseJson(ajaxnames.responseText);
|
||||
}
|
||||
};
|
||||
parsenames.open("GET", "http://{%REQUEST_URL_HOST%}/admin/get_json_names", true);
|
||||
parsenames.send();
|
||||
ajaxnames.open("GET", "http://{%REQUEST_URL_HOST%}/admin/get_json_names", true);
|
||||
ajaxnames.send();
|
||||
}
|
||||
|
||||
function menu_overlay() {
|
||||
@ -14,7 +14,14 @@ function menu_overlay() {
|
||||
}
|
||||
|
||||
function menu_eximport() {
|
||||
|
||||
var ajaxnames = new XMLHttpRequest();
|
||||
ajaxnames.onreadystatechange = function () {
|
||||
if (ajaxnames.readyState === 4 && ajaxnames.status === 200) {
|
||||
ExImport.ParseJson(ajaxnames.responseText);
|
||||
}
|
||||
};
|
||||
ajaxnames.open("GET", "http://{%REQUEST_URL_HOST%}/admin/get_json_names", true);
|
||||
ajaxnames.send();
|
||||
}
|
||||
|
||||
var NamesEditor = {
|
||||
@ -112,8 +119,12 @@ var NamesEditor = {
|
||||
}
|
||||
var savenames = new XMLHttpRequest();
|
||||
savenames.onreadystatechange = function () {
|
||||
if (savenames.readyState === 4 && savenames.status === 200) {
|
||||
if (savenames.readyState === 4) {
|
||||
if (savenames.status === 200) {
|
||||
alert("Änderungen gespeichert!");
|
||||
} else if (savenames.status === 501) {
|
||||
alert("Ein Fehler ist aufgetreten (invalid JSON)!");
|
||||
}
|
||||
}
|
||||
};
|
||||
savenames.open("POST", "http://{%REQUEST_URL_HOST%}/admin/set_json_names", true);
|
||||
@ -244,4 +255,26 @@ var NamesEditor = {
|
||||
}
|
||||
};
|
||||
|
||||
var ExImport = {};
|
||||
var ExImport = {
|
||||
ParseJson: function (jsonstring) {
|
||||
html = "<div id='eximport'><div class='title'>Ex- und Import der Einstellungen</div>";
|
||||
html += "<div class='names'>names.json (Namen und Icons)<br/><textarea id='ex_names'></textarea> <img src='../icons/general/save.png' onclick='ExImport.SaveNames()' class='pointer'></div>";
|
||||
html += "</div>";
|
||||
document.getElementById("content").innerHTML = html;
|
||||
document.getElementById("ex_names").value = jsonstring;
|
||||
},
|
||||
SaveNames: function () {
|
||||
var savenames = new XMLHttpRequest();
|
||||
savenames.onreadystatechange = function () {
|
||||
if (savenames.readyState === 4) {
|
||||
if (savenames.status === 200) {
|
||||
alert("Änderungen gespeichert!");
|
||||
} else if (savenames.status === 501) {
|
||||
alert("Ein Fehler ist aufgetreten (invalid JSON)!");
|
||||
}
|
||||
}
|
||||
};
|
||||
savenames.open("POST", "http://{%REQUEST_URL_HOST%}/admin/set_json_names", true);
|
||||
savenames.send(document.getElementById("ex_names").value);
|
||||
}
|
||||
};
|
Loading…
Reference in New Issue
Block a user