This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2godesktopsharing.
commit 3657d1d62d097c98ffca3b47de1d8ecba7127d59 Author: Mike Gabriel <mike.gabr...@das-netzwerkteam.de> Date: Sun Nov 11 18:08:13 2018 +0100 Add possibility to have a system-wide settings file in /etc/x2godesktopsharing/settings. The user preferences always supersede the system-wide settings, so system-wide settings can act as a default set of settings, but not as a limitation to the user. --- debian/changelog | 4 +++ sharetray.cpp | 93 ++++++++++++++++++++++++++++++++++++++++---------------- sharetray.h | 12 +++++--- 3 files changed, 79 insertions(+), 30 deletions(-) diff --git a/debian/changelog b/debian/changelog index b61b68c..2505da0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -13,6 +13,10 @@ x2godesktopsharing (3.1.1.5-0x2go1) UNRELEASED; urgency=medium - simplelocalsocket.cpp: Stop using deprecated QString::toAscii() function (replace it by toLatin1()). - Drop build cruft (moc_listdialog.cpp). + - Add possibility to have a system-wide settings file in + /etc/x2godesktopsharing/settings. The user preferences always + supersede the system-wide settings, so system-wide settings can + act as a default set of settings, but not as a limitation to the user. * debian/*: + Convert to DH packaging style. Build against Qt5. * debian/control: diff --git a/sharetray.cpp b/sharetray.cpp index 0a9acfe..445eb7c 100644 --- a/sharetray.cpp +++ b/sharetray.cpp @@ -5,6 +5,7 @@ // // // Author: Oleksandr Shneyder <oleksandr.shney...@obviously-nice.de>, (C) 2009-2015 +// Mike Gabriel <mike.gabr...@das-netzwerkteam.de>, (C) 2011-2018 // // Copyright: See COPYING file that comes with this distribution // @@ -34,6 +35,7 @@ #include <QDateTime> #include <grp.h> #include <QProcess> +#include <QFileInfo> #include <stdint.h> #define STAT_ACT_COUNT 10 @@ -45,6 +47,16 @@ int ShareTray::sigtermFd[2]; int ShareTray::sigabortFd[2]; int ShareTray::sighupFd[2]; +bool fileExists(QString path) { + QFileInfo check_file(path); + // check if file exists and if yes: Is it really a file and no directory? + if (check_file.exists() && check_file.isFile()) { + return true; + } else { + return false; + } +} + ShareTray::ShareTray() : QMainWindow() { @@ -212,7 +224,8 @@ ShareTray::ShareTray() } } - loadSettings(); + loadSystemSettings(); + loadUserSettings(); setTrayIcon(); trayIcon->show(); } @@ -225,7 +238,7 @@ ShareTray::~ShareTray() if ( QFile::exists ( lockFname ) ) QFile::remove ( lockFname ); qDebug() <<"lock file removed"; - saveSettings(); + saveUserSettings(); qDebug() <<"settings saved"; } @@ -457,21 +470,29 @@ void ShareTray::slotCloseConnection ( AccessAction* action ) int ShareTray::getAccess ( QString remote_user, QString host ) { - if ( whiteList.contains ( remote_user ) ) + + // user preferences always supercede system-wide preferences + if ( userWhiteList.contains ( remote_user ) ) return QMessageBox::Yes; - if ( blackList.contains ( remote_user ) ) + if ( userBlackList.contains ( remote_user ) ) return QMessageBox::No; + // system-wide preferences act as defaults for all users, but can be overriden by the user... + if ( systemwideWhiteList.contains ( remote_user ) ) + return QMessageBox::Yes; + if ( systemwideBlackList.contains ( remote_user ) ) + return QMessageBox::Yes; + MessageBox m ( remote_user, host, this ); m.activateWindow(); m.raise(); int res=m.exec(); if ( m.isChecked() &&res==QMessageBox::Yes ) - whiteList<<remote_user; + userWhiteList<<remote_user; if ( m.isChecked() &&res==QMessageBox::No ) - blackList<<remote_user; - actBlack->setEnabled ( blackList.size() >0 ); - actWhite->setEnabled ( whiteList.size() >0 ); + userBlackList<<remote_user; + actBlack->setEnabled ( userBlackList.size() >0 ); + actWhite->setEnabled ( userWhiteList.size() >0 ); return res; } @@ -488,7 +509,7 @@ void ShareTray::closeEvent ( QCloseEvent* ev ) if ( QFile::exists ( lockFname ) ) QFile::remove ( lockFname ); qDebug() <<"lock file removed"; - saveSettings(); + saveUserSettings(); qDebug() <<"settings saved"; } @@ -560,36 +581,56 @@ void ShareTray::showList() QStringList* lst; if ( current_list==BLACK ) - lst=&blackList; + lst=&userBlackList; else - lst=&whiteList; + lst=&userWhiteList; lst->sort(); ui.box->clear(); ui.box->insertItems ( 0,*lst ); } -void ShareTray::loadSettings() +void ShareTray::loadSystemSettings() { - QSettings st ( QDir::homePath() +"/.x2godesktopsharing/settings", - QSettings::NativeFormat ); + if (fileExists ("/etc/x2godesktopsharing/settings") ) { + + QSettings st ( "/etc/x2godesktopsharing/settings", + QSettings::NativeFormat ); + + systemwideBlackList= st.value ( "blacklist" ).toStringList(); + systemwideWhiteList= st.value ( "whitelist" ).toStringList(); - blackList= st.value ( "blacklist" ).toStringList(); - whiteList= st.value ( "whitelist" ).toStringList(); + actBlack->setEnabled ( systemwideBlackList.size() >0 ); + actWhite->setEnabled ( systemwideWhiteList.size() >0 ); - actBlack->setEnabled ( blackList.size() >0 ); - actWhite->setEnabled ( whiteList.size() >0 ); + } } -void ShareTray::saveSettings() +void ShareTray::loadUserSettings() +{ + + if (fileExists (QDir::homePath() + +"/.x2godesktopsharing/settings") ) { + + QSettings st ( QDir::homePath() +"/.x2godesktopsharing/settings", + QSettings::NativeFormat ); + + userBlackList= st.value ( "blacklist" ).toStringList(); + userWhiteList= st.value ( "whitelist" ).toStringList(); + + actBlack->setEnabled ( userBlackList.size() >0 ); + actWhite->setEnabled ( userWhiteList.size() >0 ); + + } +} + +void ShareTray::saveUserSettings() { QSettings st ( QDir::homePath() +"/.x2godesktopsharing/settings", QSettings::NativeFormat ); - st.setValue ( "blacklist",blackList ); - st.setValue ( "whitelist",whiteList ); + st.setValue ( "blacklist",userBlackList ); + st.setValue ( "whitelist",userWhiteList ); } - void ShareTray::setTrayIcon() { if ( !acceptConnections() ) @@ -633,17 +674,17 @@ void ShareTray::slotMsgOkCancel ( QAbstractButton* button ) { QStringList* lst; if ( current_list==BLACK ) - lst=&blackList; + lst=&userBlackList; else - lst=&whiteList; + lst=&userWhiteList; lst->clear(); for ( int i=ui.box->count()-1;i>=0;--i ) { *lst<<ui.box->item ( i )->text(); } } - actBlack->setEnabled ( blackList.size() >0 ); - actWhite->setEnabled ( whiteList.size() >0 ); + actBlack->setEnabled ( userBlackList.size() >0 ); + actWhite->setEnabled ( userWhiteList.size() >0 ); hide(); } diff --git a/sharetray.h b/sharetray.h index 2b54022..e96a2bb 100644 --- a/sharetray.h +++ b/sharetray.h @@ -5,6 +5,7 @@ // // // Author: Oleksandr Shneyder <oleksandr.shney...@obviously-nice.de>, (C) 2009-2015 +// Mike Gabriel <mike.gabr...@das-netzwerkteam.de>, (C) 2011-2018 // // Copyright: See COPYING file that comes with this distribution // @@ -56,8 +57,10 @@ private: QString socketFname; QString lockFname; MessageBox* mbox; - QStringList whiteList; - QStringList blackList; + QStringList userWhiteList; + QStringList userBlackList; + QStringList systemwideWhiteList; + QStringList systemwideBlackList; Ui::mwnd ui; bool menuClose; protected: @@ -88,8 +91,9 @@ private: int getAccess(QString user, QString host); void trayMessage(QString title, QString text); bool isProcessRunning(QString pid); - void loadSettings(); - void saveSettings(); + void loadSystemSettings(); + void loadUserSettings(); + void saveUserSettings(); void setTrayIcon(); void showList(); // unix file sockets for signal handler communication (unix <-> Qt) -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2godesktopsharing.git _______________________________________________ x2go-commits mailing list x2go-commits@lists.x2go.org https://lists.x2go.org/listinfo/x2go-commits