diff --git a/server/config.cpp b/server/config.cpp
new file mode 100644
index 00000000..ab0a8bf6
--- /dev/null
+++ b/server/config.cpp
@@ -0,0 +1,48 @@
+/***
+ This file is part of snapcast
+ Copyright (C) 2015 Johannes Pohl
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+***/
+
+#include "config.h"
+#include
+
+using namespace std;
+
+
+Config::Config()
+{
+}
+
+
+
+void Config::test()
+{
+ ifstream ifs("snapserver.json", std::ifstream::in);
+ json j;
+ ifs >> j;
+ std::cout << std::setw(4) << j << std::endl;
+ json j1 = j["Client"];//["Hobbys"];
+ for (json::iterator it = j1.begin(); it != j1.end(); ++it)
+ {
+// json j2 = *it;
+// cout << "Key: " << j2.key() << ", value: " j2.value() << "\n";
+ ClientInfo client;
+ client.fromJson(*it);
+ std::cout << "Client:\n" << std::setw(4) << client.toJson() << '\n';
+ }
+// std::cout << std::setw(4) << j["Inhaber"]["Hobbys2"] << std::endl;
+}
+
diff --git a/server/config.h b/server/config.h
new file mode 100644
index 00000000..da5da58d
--- /dev/null
+++ b/server/config.h
@@ -0,0 +1,101 @@
+/***
+ This file is part of snapcast
+ Copyright (C) 2015 Johannes Pohl
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+***/
+
+#ifndef CONFIG_H
+#define CONFIG_H
+
+#include
+#include
+#include "json.hpp"
+
+using json = nlohmann::json;
+
+template
+T jGet(json j, const std::string& what, const T& def)
+{
+ try
+ {
+ return j[what].get();
+ }
+ catch(...)
+ {
+ return def;
+ }
+}
+
+
+struct ClientInfo
+{
+ void fromJson(const json& j)
+ {
+ macAddress = jGet(j, "MAC", "");
+ ipAddress = jGet(j, "IP", "");
+ hostName = jGet(j, "host", "");
+ version = jGet(j, "version", "");
+ name = jGet(j, "name", "");
+ volume = jGet(j, "volume", 1.0);
+ lastSeen.tv_sec = jGet(j["lastSeen"], "sec", 0);
+ lastSeen.tv_usec = jGet(j["lastSeen"], "usec", 0);
+ connected = jGet(j, "connected", true);
+ }
+
+ json toJson()
+ {
+ json j;
+ j["MAC"] = macAddress;
+ j["IP"] = ipAddress;
+ j["host"] = hostName;
+ j["version"] = version;
+ j["name"] = name;
+ j["volume"] = volume;
+ j["lastSeen"]["sec"] = lastSeen.tv_sec;
+ j["lastSeen"]["usec"] = lastSeen.tv_usec;
+ j["connected"] = connected;
+ return j;
+ }
+
+ std::string macAddress;
+ std::string ipAddress;
+ std::string hostName;
+ std::string version;
+ std::string name;
+ double volume;
+ timeval lastSeen;
+ bool connected;
+};
+
+
+class Config
+{
+public:
+ static Config& instance()
+ {
+ static Config instance_;
+ return instance_;
+ }
+
+ void test();
+
+private:
+ Config();
+
+
+};
+
+
+#endif