[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdenetwork/kget
From: Lukas Appelhans <l.appelhans () gmx ! de>
Date: 2011-08-18 22:47:53
Message-ID: 20110818224753.C8BEBAC876 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1247979 by lappelhans:
Store the webinterface password in KWallet
M +38 -2 conf/dlgwebinterface.cpp
M +13 -1 conf/dlgwebinterface.h
M +2 -1 conf/dlgwebinterface.ui
M +0 -3 conf/kget.kcfg
M +2 -0 conf/preferencesdialog.cpp
U core/kget.h
M +42 -8 extensions/webinterface/httpserver.cpp
M +11 -1 extensions/webinterface/httpserver.h
M +2 -0 mainwindow.cpp
--- trunk/KDE/kdenetwork/kget/conf/dlgwebinterface.cpp #1247978:1247979
@@ -12,24 +12,60 @@
#include "settings.h"
-DlgWebinterface::DlgWebinterface(QWidget *parent)
- : QWidget(parent)
+#include <KMessageBox>
+#include <kwallet.h>
+
+DlgWebinterface::DlgWebinterface(KDialog *parent)
+ : QWidget(parent),
+ m_wallet(0)
{
setupUi(this);
readConfig();
+
+ connect(parent, SIGNAL(accepted()), SLOT(saveSettings()));
+ connect(webinterfacePwd, SIGNAL(textChanged(QString)), SIGNAL(changed()));
}
DlgWebinterface::~DlgWebinterface()
{
+ delete m_wallet;
}
void DlgWebinterface::readConfig()
{
+ if (Settings::webinterfaceEnabled()) {
+ m_wallet = KWallet::Wallet::openWallet(KWallet::Wallet::LocalWallet(),
+ winId(),///Use MainWindow?
+ KWallet::Wallet::Asynchronous);
+ if (m_wallet) {
+ connect(m_wallet, SIGNAL(walletOpened(bool)), SLOT(walletOpened(bool)));
+ } else {
+ KMessageBox::error(0, i18n("Could not open KWallet"));
}
+ }
+}
+void DlgWebinterface::walletOpened(bool opened)
+{
+ if (opened &&
+ (m_wallet->hasFolder("KGet") ||
+ m_wallet->createFolder("KGet")) &&
+ m_wallet->setFolder("KGet")) {
+ QString pwd;
+ m_wallet->readPassword("Webinterface", pwd);
+ webinterfacePwd->setText(pwd);
+ } else {
+ KMessageBox::error(0, i18n("Could not open KWallet"));
+ }
+}
+
void DlgWebinterface::saveSettings()
{
+ if (m_wallet) {
+ m_wallet->writePassword("Webinterface", webinterfacePwd->text());
}
+ emit saved();
+}
#include "dlgwebinterface.moc"
--- trunk/KDE/kdenetwork/kget/conf/dlgwebinterface.h #1247978:1247979
@@ -15,17 +15,29 @@
#include "ui_dlgwebinterface.h"
+namespace KWallet {
+ class Wallet;
+}
+
class DlgWebinterface : public QWidget, public Ui::DlgWebinterface
{
Q_OBJECT
public:
- DlgWebinterface(QWidget *parent = 0);
+ DlgWebinterface(KDialog *parent = 0);
~DlgWebinterface();
+signals:
+ void changed();
+ void saved();
+
private Q_SLOTS:
void readConfig();
void saveSettings();
+ void walletOpened(bool);
+
+private:
+ KWallet::Wallet *m_wallet;
};
#endif
--- trunk/KDE/kdenetwork/kget/conf/dlgwebinterface.ui #1247978:1247979
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0" >
<class>DlgWebinterface</class>
<widget class="QWidget" name="DlgWebinterface" >
@@ -61,7 +62,7 @@
</widget>
</item>
<item row="2" column="1" >
- <widget class="KLineEdit" name="kcfg_WebinterfacePassword" >
+ <widget class="KLineEdit" name="webinterfacePwd">
<property name="showClearButton" stdset="0" >
<bool>true</bool>
</property>
--- trunk/KDE/kdenetwork/kget/conf/kget.kcfg #1247978:1247979
@@ -137,9 +137,6 @@
<entry name="WebinterfaceUser" type="String">
<default>admin</default>
</entry>
- <entry name="WebinterfacePassword" type="String">
- <default>admin</default>
- </entry>
</group>
<group name="Groups">
--- trunk/KDE/kdenetwork/kget/conf/preferencesdialog.cpp #1247978:1247979
@@ -29,6 +29,8 @@
QWidget *appearance = new QWidget(this);
TransfersGroupWidget *groups = new TransfersGroupWidget(this);
DlgWebinterface *webinterface = new DlgWebinterface(this);
+ connect(webinterface, SIGNAL(changed()), SLOT(enableApplyButton()));
+ connect(webinterface, SIGNAL(saved()), SLOT(settingsChangedSlot()));
QWidget *network = new QWidget(this);
QWidget *advanced = new QWidget(this);
IntegrationPreferences *integration = new IntegrationPreferences(this);
--- trunk/KDE/kdenetwork/kget/extensions/webinterface/httpserver.cpp #1247978:1247979
@@ -2,6 +2,7 @@
Copyright (C) 2008 - 2009 Urs Wolfer <uwolfer @ kde.org>
Copyright (C) 2010 Matthias Fuchs <mat69@gmx.net>
+ Copyright (C) 2011 Lukas Appelhans <l.appelhans@gmx.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public
@@ -18,8 +19,8 @@
#include <KDebug>
#include <KGlobalSettings>
-#include <KMessageBox>
#include <KStandardDirs>
+#include <kwallet.h>
#include <QTcpServer>
#include <QTcpSocket>
@@ -29,22 +30,55 @@
#include <QDateTime>
HttpServer::HttpServer(QWidget *parent)
- : QObject(parent)
+ : QObject(parent),
+ m_wallet(0)
{
- tcpServer = new QTcpServer(this);
- if (!tcpServer->listen(QHostAddress::Any, Settings::webinterfacePort())) {
- KMessageBox::error(0, i18nc("@info", "Unable to start the server: %1.", \
tcpServer->errorString())); + m_wallet = \
KWallet::Wallet::openWallet(KWallet::Wallet::LocalWallet(), + \
parent->winId(),///Use MainWindow? + \
KWallet::Wallet::Asynchronous); + if (m_wallet) {
+ connect(m_wallet, SIGNAL(walletOpened(bool)), SLOT(init(bool)));
+ } else {
+ KGet::showNotification(parent, "error", i18n("Unable to start WebInterface: \
Could not open KWallet")); + }
+}
+
+HttpServer::~HttpServer()
+{
+ delete m_wallet;
+}
+
+void HttpServer::init(bool opened)
+{
+ if (opened &&
+ m_wallet->hasFolder("KGet") &&
+ m_wallet->setFolder("KGet")) {
+ m_wallet->readPassword("Webinterface", m_pwd);
+ } else {
+ KGet::showNotification(static_cast<QWidget*>(parent()), "error", \
i18n("Unable to start WebInterface: Could not open KWallet")); return;
}
+ m_tcpServer = new QTcpServer(this);
+ if (!m_tcpServer->listen(QHostAddress::Any, Settings::webinterfacePort())) {
+ KGet::showNotification(static_cast<QWidget*>(parent()), "error", \
i18nc("@info", "Unable to start WebInterface: %1", m_tcpServer->errorString())); + \
return; + }
- connect(tcpServer, SIGNAL(newConnection()), this, SLOT(handleRequest()));
+ connect(m_tcpServer, SIGNAL(newConnection()), this, SLOT(handleRequest()));
}
+void HttpServer::settingsChanged()
+{
+ if (m_wallet) {
+ m_wallet->readPassword("Webinterface", m_pwd);
+ }
+}
+
void HttpServer::handleRequest()
{
int responseCode = 200;
QString responseText = "OK";
- QTcpSocket *clientConnection = tcpServer->nextPendingConnection();
+ QTcpSocket *clientConnection = m_tcpServer->nextPendingConnection();
connect(clientConnection, SIGNAL(disconnected()),
clientConnection, SLOT(deleteLater()));
@@ -61,7 +95,7 @@
// for HTTP authorization information see: \
http://www.governmentsecurity.org/articles/OverviewofHTTPAuthentication.php QString \
auth = header.value("Authorization");
if (auth.length() < 6 || QByteArray::fromBase64(auth.right(auth.length() - \
6).toUtf8()) !=
- QString(Settings::webinterfaceUser() + ':' + \
Settings::webinterfacePassword())) { + \
QString(Settings::webinterfaceUser() + ':' + m_pwd)) { responseCode = 401;
responseText = "Authorization Required";
// DO NOT TRANSLATE THE FOLLOWING MESSAGE! webserver messages are never \
translated.
--- trunk/KDE/kdenetwork/kget/extensions/webinterface/httpserver.h #1247978:1247979
@@ -15,18 +15,28 @@
class QTcpServer;
+namespace KWallet {
+ class Wallet;
+}
+
class HttpServer : public QObject
{
Q_OBJECT
public:
HttpServer(QWidget *parent = 0);
+ ~HttpServer();
+ void settingsChanged();
+
private slots:
+ void init(bool);
void handleRequest();
private:
- QTcpServer *tcpServer;
+ KWallet::Wallet *m_wallet;
+ QTcpServer *m_tcpServer;
+ QString m_pwd;
};
#endif
--- trunk/KDE/kdenetwork/kget/mainwindow.cpp #1247978:1247979
@@ -939,6 +939,8 @@
} else if (m_webinterface && !Settings::webinterfaceEnabled()) {
delete m_webinterface;
m_webinterface = 0;
+ } else if (m_webinterface) {
+ m_webinterface->settingsChanged();
}
if (Settings::speedLimit())
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic