summaryrefslogtreecommitdiffstats
path: root/applications
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2017-11-24 15:48:43 +0100
committerChristian Mollekopf <chrigi_1@fastmail.fm>2017-11-24 15:48:43 +0100
commit9e937c1d987d407d974c9a2840a9b0581e43dcd0 (patch)
treeb53512282742713907191d89f012cdb1e4602c7a /applications
parentf39da702c61685dc9b2437c533f74a3eed04a3e2 (diff)
downloadkube-9e937c1d987d407d974c9a2840a9b0581e43dcd0.tar.gz
kube-9e937c1d987d407d974c9a2840a9b0581e43dcd0.zip
Support unlocking the keyring from the commandline
Diffstat (limited to 'applications')
-rw-r--r--applications/kube/CMakeLists.txt1
-rw-r--r--applications/kube/main.cpp30
2 files changed, 30 insertions, 1 deletions
diff --git a/applications/kube/CMakeLists.txt b/applications/kube/CMakeLists.txt
index 2d4c9da7..c206f22a 100644
--- a/applications/kube/CMakeLists.txt
+++ b/applications/kube/CMakeLists.txt
@@ -22,6 +22,7 @@ target_link_libraries(${PROJECT_NAME}
22 Qt5::WebEngine 22 Qt5::WebEngine
23 KF5::Package 23 KF5::Package
24 ${CMAKE_DL_LIBS} 24 ${CMAKE_DL_LIBS}
25 kubeframework
25) 26)
26 27
27install(TARGETS ${PROJECT_NAME} DESTINATION ${KDE_INSTALL_TARGETS_DEFAULT_ARGS}) 28install(TARGETS ${PROJECT_NAME} DESTINATION ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
diff --git a/applications/kube/main.cpp b/applications/kube/main.cpp
index a6b51c38..88e44eac 100644
--- a/applications/kube/main.cpp
+++ b/applications/kube/main.cpp
@@ -32,6 +32,8 @@
32 32
33#include <QApplication> 33#include <QApplication>
34#include <QQmlApplicationEngine> 34#include <QQmlApplicationEngine>
35#include <QCommandLineParser>
36#include <QJsonDocument>
35 37
36#include <QStandardPaths> 38#include <QStandardPaths>
37#include <KPackage/PackageLoader> 39#include <KPackage/PackageLoader>
@@ -40,6 +42,7 @@
40#include <QtWebEngine> 42#include <QtWebEngine>
41 43
42#include <QDebug> 44#include <QDebug>
45#include "framework/src/keyring.h"
43 46
44//Print a demangled stacktrace 47//Print a demangled stacktrace
45void printStacktrace() 48void printStacktrace()
@@ -169,14 +172,39 @@ public:
169 172
170int main(int argc, char *argv[]) 173int main(int argc, char *argv[])
171{ 174{
172
173 std::signal(SIGSEGV, crashHandler); 175 std::signal(SIGSEGV, crashHandler);
174 std::signal(SIGABRT, crashHandler); 176 std::signal(SIGABRT, crashHandler);
175 std::set_terminate(terminateHandler); 177 std::set_terminate(terminateHandler);
176 178
177 QApplication app(argc, argv); 179 QApplication app(argc, argv);
180 app.setApplicationName("kube");
178 app.setFont(QFont{"Noto Sans", app.font().pointSize(), QFont::Normal}); 181 app.setFont(QFont{"Noto Sans", app.font().pointSize(), QFont::Normal});
179 182
183 QCommandLineParser parser;
184 parser.setApplicationDescription("A communication and collaboration client.");
185 parser.addHelpOption();
186 parser.addOption({{"k", "keyring"},
187 QCoreApplication::translate("main", "To automatically unlock the keyring pass in a keyring in the form of {\"accountId\": {\"resourceId\": \"secret\", *}}"),
188 "keyring dictionary"}
189 );
190 parser.process(app);
191
192 if (parser.isSet("keyring")) {
193 auto keyringDict = parser.value("keyring");
194 auto json = QJsonDocument::fromJson(keyringDict.toUtf8());
195 if (!json.isObject()) {
196 qWarning() << "Not a valid keyring dict " << keyringDict;
197 return -1;
198 }
199 auto object = json.object();
200 for (const auto accountId : object.keys()) {
201 auto dict = object.value(accountId).toObject();
202 for (const auto resourceId : dict.keys()) {
203 Kube::AccountKeyring{accountId.toUtf8()}.storePassword(resourceId.toUtf8(), dict.value(resourceId).toString().toUtf8());
204 }
205 }
206 }
207
180 QtWebEngine::initialize(); 208 QtWebEngine::initialize();
181 QIcon::setThemeName("kube"); 209 QIcon::setThemeName("kube");
182 210