qtsmbstatus-2.2.1/0000755000175000017500000000000011720232513013510 5ustar villouvillouqtsmbstatus-2.2.1/changelog0000644000175000017500000001033011720232513015357 0ustar villouvillouChangelog for QtSmbstatus: 2012-02-19 - Version 2.2.1: - fix: authentification required with smbclient - Updated some translations 2011-06-26 - Version 2.2.0: - Check server certificate (known host). A protection against Man-In-The-Middle Attacks - Updated some translations 2010-04-22 - Version 2.1.3: - Updated some translations - Fixed runlevel for qtsmbstatusd script (BUG: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=569647 ) 2009-06-20 - Version 2.1.2: - fix missing an include to cstdio 2009-04-03 - Version 2.1.1: - client: solved "File Name Blank" with smbstatus = 3.0.22 - Updated Russian and Ukrainian translations - server: removed dependency on QtGui - server: use textEncoder 2008-11-19 - Version 2.1: - Qt3 support was removed - using QSslSocket for QT>= 4.3 - Added qtsmbstatusl-light (qtsmbstatusl). QtSmbstatusl only works locally (no remote access). - Converting non-Unicode formats to and from Unicode in process - possibility to check if a new release of this program is available 2008-11-08 - Version 2.0.6: - Issue 6 Fixed 2008-08-26 - Version 2.0.5: - Added dutch and brazilian portuguese translation 2008-05-08 - Version 2.0.4: - Added hungarian and swedish translation 2008-01-02 - Version 2.0.3: - minor release 2007-11-14 - Version 2.0.2: - Added postinstall/postuninstall scripts (server) - Fixes issue 4 (escape key) - Added russian and ukrainian translation 2007-11-02 - Version 2.0.1: - Fix crash in qtsmbstatus client when server disconnect client (bad name or bad password) - Replace configuration file (.qtsmbstatus.conf) by QSettings - Append manpages - Added a menu entry for qtsmbstatus client (freedesktop) 2007-08-25 - Version 2.0.0: - Porting to Qt 4 - Add tray icon - Show SMB/CIFS activities (optional) 2007-05-13 - Version 1.2.1: - Bug correction from filenames when samba > 3.0.20 2007-02-21 - Version 1.2.0: - Append Machine Item - Save and restore Window size - Possibilitie to search item (machine, user, share or locked file) 2007-01-31 - Version 1.0.1: - View user "nobody" (public access) 2006-02-13 - Version 1.0.0: - Append a configuration dialogbox for client - Append a TCP time out - Correction bug in smbstatus module (minor) - Optimization 2005-10-14 - Version 0.9.11: - Append 'properties' in popupmenu (server, user or service) - Correction bug in client smbstatus module (minor) - rewrote classes of client : server, user and service 2005-08-21 - Version 0.9.10: - Append in server's configuration file : permit_disconnect_user and permit_send_msg - Create qtsmbstatus client for windows - Optimization 2005-05-03 - Version 0.9.9: - Change qtsmbstatus client commands lines : -r' becomes '-i' (interval between every request to smbstatus) - Change option in client config file (.qtsmbstatus.conf) : 'interval' replace 'tempo' - Client : include address IP history in a comboBox (qtsmbstatus create file '$home/.qtsmbstatus.history') 2005-03-10 - Version 0.9.8: - Correction problem with unicode encoding (UTF-8) - Correction problem of compilation on SuSE (thread is not a default option) - Optimization 2005-02-25 - Version 0.9.7: - Correction bug (qtsmbstatusd) when a user quit qtsmbstatus (client) without awaiting the end of authentification (PAM). 2005-01-09 - Version 0.9.6: - Modifications for RPM creation (Mandrake) - Start service when system power on 2004-11-08 - Version 0.9.5: - Dependency qt >= version 3.1 - Create client's configuration file - Manage errors when smbclient is not installed (popup windows) - Manage errors when smbstatus send message on std err - Append option 'autoconnect' (client) 2004-10-13 - Version 0.9.4: - Append script 'qtsmbstatus' in /etc/init.d/ (start, stop and status) - Correction bug when Samba is not installed 2004-10-08 - Version 0.9.3: - QtSmbstatus was designed as a client/server system secured with SSL - PAM Authentification - Daemonize the server 2004-09-06 - Version 0.9.2: - possibilitie to disconnect user 2004-09-04 - Version 0.9.1: - Append menus and statusbar - Append context menu - Possibility to append arguments in command line - Send out messages (popupwindows) to one or many users - Use tools for internationalization (QLinguist) 2004-08-24 - Version 0.9.0beta qtsmbstatus-2.2.1/README0000644000175000017500000001276511720232513014403 0ustar villouvillou-*------------------------------------------------------------------------+- QtSmbstatus http://qtsmbstatus.free.fr/ Daniel Rocher - ADELLA -*------------------------------------------------------------------------+- This program is licensed to you under the terms of the GNU General Public License version 2 QtSmbstatus is a smbstatus graphical interface (GUI). It is meant to provide the possibility of administering remote machines. QtSmbstatus was designed as a client/server system secured with SSL. A login and password is required to log on to server. The server's application ought to be installed with samba-server. qtsmbstatus-server provides the server-side application. qtsmbstatus-client provides the qtsmbtatus client application. qtsmbstatus-light provides the lightweight application which works only locally and doesn't require qtsmbstatus-server. Possibilities include: - view connections - disconnect user - send out messages (popupwindows) to one or many users 1/ Compilation from the following sources 2/ Command line options 3/ Start and stop server 4/ Configure server 5/ Client for X11 (Unix/Linux) 6/ Client for Windows ------------------------------------------------------------- 1/ Compilation from the following sources: ------------------------------------------------------------- To install qtsmbstatus light: ***************************** Check dependency: qt4-dev>=4.3 cd light qmake (or qmake-qt4) make and as root: make install To install qtsmbstatus server: ****************************** Check dependency: pam-dev and qt4-dev>=4.3 cd server qmake (or qmake-qt4) make and as root: make install To install qtsmbstatus client: ****************************** Check dependency: qt4-dev>=4.3 cd client qmake (or qmake-qt4) make and as root: make install ------------------------------------------------------------- 2/ Command line options: ------------------------------------------------------------- qtsmbstatus (light, client and server) can accept some arguments from the command line, to know them: qtsmbstatusd --help (for server) qtsmbstatus --help (for client) qtsmbstatusl --help (for light) ------------------------------------------------------------- 3/ Start and stop server: ------------------------------------------------------------- Start server: /etc/init.d/qtsmbstatusd start or service qtsmbstatusd start Default port: 4443 Stop server: /etc/init.d/qtsmbstatusd stop or service qtsmbstatusd stop ------------------------------------------------------------- 4/ Configure server: ------------------------------------------------------------- The server's configuration files are found at: /etc/qtsmbstatusd/ in this directory: privkey.pem qtsmbstatusd.conf qtsmbstatusd.users server.pem privkey.pem : private key (warning! Change file access permissions : 640 ! ) To make your own: openssl genrsa -des3 -out privkey.pem 2048 server.pem : selfsigned certificat with key To make your own: openssl req -new -x509 -key privkey.pem -out server.pem -days 10000 Options are saved into : qtsmbstatusd.conf port : Port where the server should listen at private_key : private key certificat : ssl certificate ssl_password : password for ssl certificate permit_disconnect_user : Allow client to disconnect a user You can authorize a client to disconnect a user. Use Username or 'all' for all clients. permit_send_msg : Allow client to send a message You can authorize a client to Send message. Use Username or 'all' for all clients. == PAM: == PAM configuration file is distribution dependent. If logon failed, change it: /etc/pam.d/qtsmbstusd see samples here: ./server/pam.d/samples/ The authorized users (PAM) are registered into: /etc/qtsmbstatusd/qtsmbstatusd.users (default as root) ------------------------------------------------------------- 5/ Client for X11 (Unix/Linux) : ------------------------------------------------------------- Execute under X11: qtsmbstatus Enter server's IP address, connect and log on (login and password). Right clic on user to send him a message or to disconnect him. (popupwindows require smbclient) ------------------------------------------------------------- 6/ Client for Windows : ------------------------------------------------------------- Install qtsmbstatus-client.X.X.X.exe Execute qtsmbstatus.exe Enter server's IP address, connect and log on (login and password). Right clic on user to send him a message or to disconnect him. (popupwindows require smbclient) qtsmbstatus-2.2.1/light/0000755000175000017500000000000011720232513014617 5ustar villouvillouqtsmbstatus-2.2.1/light/lmain_windows.h0000644000175000017500000000421611720232513017645 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #ifndef MAIN_WINDOWSL_H #define MAIN_WINDOWSL_H #include "configure_windowsl.h" #include "../client/mainwindows.h" #include "../server/smbmanager.h" #include "../server/sendmessage_manager.h" #include "../server/process_smbd_exist.h" #include "../server/disconnect_manager.h" class main_windowsl : public MainWindows { Q_OBJECT public: main_windowsl(QWidget *parent=0); virtual ~main_windowsl(); private slots: // Private slots virtual void slot_timer(); virtual void sendMessage(const QString & machine,const QString & message); virtual void disconnectUser(const QString & pid,const QString & user); virtual void on_configureAction_triggered(); protected: virtual void closeEvent(QCloseEvent *e); }; #endif qtsmbstatus-2.2.1/light/main.cpp0000755000175000017500000002071711720232513016261 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include #include #include "../client/smbstatus.h" #include "../client/instances_dlg.h" #include "../server/process_smbd_exist.h" #include "../server/sendmessage_manager.h" #include "../server/smbmanager.h" #include "lmain_windows.h" extern void unsupported_options(char *error, const QString & usage); extern void debugQt(const QString & message); extern void writeToConsole(const QString & message); extern uint int_qtsmbstatus_version; /** Save configuration file (create if not exist) \sa readConfigFile */ void writeConfigFile() { debugQt("WriteConfigFile()"); // new format // qtsmbstatus >= 2.0.1 QSettings settings; settings.beginGroup("/Configuration"); settings.setValue("qtsmbstatusVersion",int_qtsmbstatus_version); settings.setValue("interval",interval); settings.setValue("viewHiddenShares",view_hidden_shares); settings.setValue("systemTray",iconize); settings.setValue("notificationMessages",show_messages); settings.setValue("logActivity",log_activity); settings.setValue("limitLog",limitLog); settings.setValue("checkNewRelease",check_new_release); settings.endGroup(); } /** Read configuration file. \sa writeConfigFile */ void readConfigFile() { debugQt("readConfigFile()"); QSettings settings; settings.beginGroup("/Configuration"); if (!settings.contains ("uuid")) settings.setValue("uuid",QUuid::createUuid().toString ()); settings.setValue("qtsmbstatusVersion",int_qtsmbstatus_version); // set version int interval_conf=settings.value("interval",interval).toInt(); if (interval_conf>2) interval=interval_conf; view_hidden_shares=settings.value("viewHiddenShares",view_hidden_shares).toBool(); iconize=settings.value("systemTray",iconize).toBool(); show_messages=settings.value("notificationMessages",show_messages).toBool(); log_activity=settings.value("logActivity",log_activity).toBool(); limitLog=settings.value("limitLog",limitLog).toInt(); check_new_release=settings.value("checkNewRelease",check_new_release).toBool(); settings.endGroup(); } int main(int argc, char *argv[]) { bool ok; QString usage="\n Usage: qtsmbstatusl -i -m -v --help\n\n" " -h|--help : Show this help\n" " -i : Interval between smbstatus requests in seconds, (interval > 2) - default value = " + QString::number(interval) + "\n" " -v : Show qtsmbstatusl version\n" " -m : Show debug messages\n\n" "example: qtsmbstatusl -i 50\n\n"; #ifdef Q_WS_WIN // for windows only - get install directory (register when qtsmbstatus has been installed) QSettings settings(QSettings::SystemScope,"qtsmbstatus", "settings"); if (settings.contains ( "path") ) { QString qtsmbstatus_path = settings.value("path").toString (); QDir::setCurrent ( qtsmbstatus_path ); } #endif MyApplication app( argc, argv ); app.setApplicationName("qtsmbstatusl"); #if QT_VERSION >= 0x040400 app.setApplicationVersion(version_qtsmbstatus); #endif app.setOrganizationName("adella.org"); app.setOrganizationDomain("qtsmbstatus.free.fr"); // read configuration file readConfigFile(); int optch; extern int opterr; opterr = 1; // show getopt errors if( app.arguments().contains("--help")) { writeToConsole(usage); return 0; } while ((optch = getopt(argc, argv, "hi:vm")) != -1) { switch (optch) { case 'h': writeToConsole(usage); return 0; break; case 'v': writeToConsole("QtSmbstatus Light version : " + version_qtsmbstatus); // view qtsmbstatus version return 0; break; case 'i': interval=(QString(optarg)).toInt(&ok); if (ok==false) // bad conversion, quit { writeToConsole("\nbad syntax for -i\n" + usage); return 1; } if (interval<3) { writeToConsole("\nInterval it must be higher than two seconds (option: -i)\n"); return 1; } break; case 'm': debug_qtsmbstatus=true; // view message debug break; default: // '?' writeToConsole(usage); return 1; } } if (optind < argc) { printf("\nUnknown option: %s\n\n",argv[optind]); return 1; } // < translate > QTranslator qtTranslator; qtTranslator.load("qt_" + QLocale::system().name()); app.installTranslator(&qtTranslator); QString translate_file; QTranslator myappTranslator; // only windows #ifdef Q_WS_WIN translate_file= QDir::currentPath () + QString( "/tr/qtsmbstatus_"); myappTranslator.load(translate_file+ QLocale::system().name()); #else translate_file=QString("/usr/share/qtsmbstatus/qtsmbstatus_"); myappTranslator.load(translate_file+ QLocale::system().name()); if (myappTranslator.isEmpty()) { translate_file=QString("/usr/local/share/qtsmbstatus/qtsmbstatus_"); myappTranslator.load(translate_file+ QLocale::system().name()); } #endif app.installTranslator( &myappTranslator ); // < /translate > app.setQuitOnLastWindowClosed ( false ); main_windowsl fenetre_principale; if (debug_qtsmbstatus) { instances_dlg * tempdlg = new instances_dlg(&fenetre_principale); tempdlg->appendObject(&LineCore::compteur_objet,"LineCore"); tempdlg->appendObject(&server::compteur_objet,"server"); tempdlg->appendObject(&machine::compteur_objet,"machine"); tempdlg->appendObject(&user::compteur_objet,"user"); tempdlg->appendObject(&service::compteur_objet,"service"); tempdlg->appendObject(&smbstatus::compteur_objet,"disconnect_manager"); tempdlg->appendObject(&disconnect_manager::compteur_objet,"disconnect_manager"); tempdlg->appendObject(&process_smbd_exist::compteur_objet,"process_smbd_exist"); tempdlg->appendObject(&Sendmessage_manager::compteur_objet,"Sendmessage_manager"); tempdlg->appendObject(&smbmanager::compteur_objet,"smbmanager"); tempdlg->show(); } app.connect (&app, SIGNAL(quitMyApp()),&fenetre_principale,SLOT(beforeQuit())); fenetre_principale.show(); int value_return=app.exec(); // for debug only debugQt("\n\n ___________ OBJECTS _________________"); debugQt("LineCore : "+QString::number(LineCore::compteur_objet)); debugQt("server : "+QString::number(server::compteur_objet)); debugQt("machine : "+ QString::number(machine::compteur_objet)); debugQt("user : "+ QString::number(user::compteur_objet)); debugQt("service : "+ QString::number(service::compteur_objet)); debugQt("smbstatus : "+ QString::number(smbstatus::compteur_objet)); debugQt("disconnect_manager : "+QString::number(disconnect_manager::compteur_objet)); debugQt("process_smbd_exist : "+QString::number(process_smbd_exist::compteur_objet)); debugQt("Sendmessage_manager : "+ QString::number(Sendmessage_manager::compteur_objet)); debugQt("smbmanager : "+ QString::number(smbmanager::compteur_objet)); if ((LineCore::compteur_objet+server::compteur_objet+disconnect_manager::compteur_objet +process_smbd_exist::compteur_objet+Sendmessage_manager::compteur_objet+smbmanager::compteur_objet +machine::compteur_objet+user::compteur_objet+service::compteur_objet+smbstatus::compteur_objet)==0) debugQt("\nDeleted objects : OK\n"); else debugQt("\nDeleted objects : Error !\n"); return value_return; } qtsmbstatus-2.2.1/light/light.pro0000644000175000017500000000514111720232513016451 0ustar villouvillou TEMPLATE = app CONFIG += release \ warn_on TARGET = qtsmbstatusl MOC_DIR = ./build/moc OBJECTS_DIR = ./build DESTDIR = ./bin UI_DIR = ./build/ui RCC_DIR = ./build/rcc SOURCES += main.cpp \ ../client/mainwindows.cpp \ lmain_windows.cpp \ ../client/server.cpp \ ../client/machine.cpp \ ../client/service.cpp \ ../client/user.cpp \ ../client/smbstatus.cpp \ configure_windowsl.cpp \ ../client/linecore.cpp \ ../common/common.cpp \ ../client/log.cpp \ ../client/mysortfilterproxymodel.cpp \ ../client/instances_dlg.cpp \ ../server/smbmanager.cpp \ ../server/process_smbd_exist.cpp \ ../server/sendmessage_manager.cpp \ ../server/disconnect_manager.cpp HEADERS += ../client/mainwindows.h \ lmain_windows.h \ ../client/server.h \ ../client/machine.h \ ../client/service.h \ ../client/user.h \ ../client/smbstatus.h \ ../client/linecore.h \ ../common/core_syntax.h \ configure_windowsl.h \ ../client/log.h \ ../client/mysortfilterproxymodel.h \ ../client/instances_dlg.h \ ../server/smbmanager.h \ ../server/process_smbd_exist.h \ ../server/sendmessage_manager.h \ ../server/disconnect_manager.h RESOURCES = ../client/client.qrc RC_FILE = ../client/qtsmbstatus.rc FORMS += ../client/form_smbstatus.ui \ ../client/configure.ui \ ../client/log.ui # install unix { # Translation TRANSDIR = /usr/local/share/qtsmbstatus TRANSFILES = ../client/tr/*.qm trans.path = $$TRANSDIR trans.files = $$TRANSFILES # Documentation DOCDIR = /usr/local/share/doc/qtsmbstatusl DOCFILES = ../README \ ../README-FR \ ../INSTALL \ ../COPYING doc.path = $$DOCDIR doc.files = $$DOCFILES #icons ICONSDIR = /usr/share/pixmaps ICONSFILES = qtsmbstatusl.xpm icons.path = $$ICONSDIR icons.files = $$ICONSFILES #menu MENUDIR = /usr/share/applications MENUFILES = qtsmbstatusl.desktop menu.path = $$MENUDIR menu.files = $$MENUFILES #manpage MANDIR = /usr/local/share/man/man7 MANFILES = qtsmbstatusl.7.gz manpage.path = $$MANDIR manpage.files = $$MANFILES target.path = /usr/local/bin INSTALLS += trans \ target \ doc \ icons \ menu \ manpage } QT += network qtsmbstatus-2.2.1/light/configure_windowsl.cpp0000644000175000017500000001051411720232513021233 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include #include "configure_windowsl.h" extern uint int_qtsmbstatus_version; /** \class configure_windowsl \brief Configure Qtsmbstatus-Light \param parent pointer to the parent object \date 2008-11-15 \version 1.0 \author Daniel Rocher */ configure_windowsl::configure_windowsl(QWidget *parent) : QDialog(parent) { debugQt("configure_windowsl::configure_windowsl()"); this->setAttribute(Qt::WA_DeleteOnClose); setupUi(this); groupBox->setVisible (false); QSettings settings; settings.beginGroup("/Configuration"); uint last_known_release=settings.value("lastKnownRelease",int_qtsmbstatus_version).toUInt(); if (last_known_release>int_qtsmbstatus_version) { labelNewRelease->setText("

" +labelNewRelease->text()+" : " +""+ +"Downloads

"); labelNewRelease->setTextFormat ( Qt::RichText ); labelNewRelease->setTextInteractionFlags (Qt::LinksAccessibleByMouse); labelNewRelease->setOpenExternalLinks (true); } else labelNewRelease->hide(); spinInterval->setValue (settings.value("interval",interval).toInt()); checkViewHiddenShares->setChecked (settings.value("viewHiddenShares",view_hidden_shares).toBool()); checkIcon->setChecked(settings.value("systemTray",iconize).toBool()); checkNotification->setChecked(settings.value("notificationMessages",show_messages).toBool()); checkLogActivity->setChecked(settings.value("logActivity",log_activity).toBool()); limitLogBox->setValue (settings.value("limitLog",limitLog).toInt()); checkNewRelease->setChecked(settings.value("checkNewRelease",check_new_release).toBool()); // first time on_checkIcon_toggled(checkIcon->isChecked()); on_checkLogActivity_toggled(checkLogActivity->isChecked()); settings.endGroup(); } configure_windowsl::~configure_windowsl() { debugQt("configure_windowsl::~configure_windowsl()"); } void configure_windowsl::on_checkIcon_toggled(bool checked ) { debugQt("configure_windowsl::on_checkIcon_toggled()"); checkNotification->setEnabled(checked); } void configure_windowsl::on_checkLogActivity_toggled(bool checked) { debugQt("configure_windowsl::on_checkLogActivity_toggled()"); limitLogBox->setEnabled(checked); } /** Save configuration */ void configure_windowsl::on_okButton_clicked() { debugQt("configure_windowsl::on_okButton_clicked() - Save Config file"); interval = spinInterval->value (); view_hidden_shares = checkViewHiddenShares->isChecked (); iconize=checkIcon->isChecked(); show_messages=checkNotification->isChecked(); log_activity=checkLogActivity->isChecked(); limitLog=limitLogBox->value (); check_new_release=checkNewRelease->isChecked(); // save configuration writeConfigFile(); emit (configuration_changed()); } qtsmbstatus-2.2.1/light/qtsmbstatusl.desktop0000644000175000017500000000100611720232513020755 0ustar villouvillou[Desktop Entry] Name=QtSmbstatus Light Comment=QtSmbstatus is a GUI (graphical user interface) for smbstatus Comment[fr]=QtSmbstatus - une interface graphique à smbstatus Comment[es]=QtSmbstatus - una interface grafica de smbstatus Comment[ru]=QtSmbstatus - графический интейфейс для smbstatus Comment[uk]=QtSmbstatus - графічний інтерфейс для smbstatus Exec=qtsmbstatusl Terminal=false Type=Application Icon=qtsmbstatusl Categories=Qt;Network;Utility; StartupNotify=false qtsmbstatus-2.2.1/light/configure_windowsl.h0000644000175000017500000000463111720232513020703 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #ifndef CONFIGURE_WINDOWSL_H #define CONFIGURE_WINDOWSL_H #include "build/ui/ui_configure.h" extern void debugQt(const QString & message); extern void writeConfigFile(); extern int interval; // Interval, in seconds, between every request to smbstatus extern bool view_hidden_shares; // View hidden shares (share$) extern bool iconize; // Iconize QtSmbstatus on system tray extern bool show_messages; // show status notification messages extern bool log_activity; // log SMB/CIFS activities extern int limitLog; // limit log (number of days) extern bool check_new_release; // check for new release of qtsmbstatus class configure_windowsl : public QDialog, public Ui::configure { Q_OBJECT public: configure_windowsl(QWidget *parent = 0); virtual ~configure_windowsl(); signals: void configuration_changed(); private slots: // Private slots virtual void on_okButton_clicked(); virtual void on_checkIcon_toggled(bool); virtual void on_checkLogActivity_toggled(bool checked); }; #endif qtsmbstatus-2.2.1/light/qtsmbstatusl.7.gz0000644000175000017500000000160711720232513020100 0ustar villouvillou:Iqtsmbstatusl.7UMs6WR)WV"$**3T9RD JO7-`o߾0>3lc~<&0|5etQo#X57B&ɧi ԍ!ERBk̴/ݓzx|1-}ݿۤ3' ڕh 1{Rq;Dl=Vu5V&n`%kCRXȹ#%*QD;aڒ-+K3m o 42NLGMsay*ʶ+ۣ ]Ѓ ;Wɖv58 )Irވm鈥 e !%ڙ ҕ55G+q@& 9A:j׎W ֘Bd')EX2 ]Ut309ץȸjg81Orb͖̓06Ż8bo[-Kx4MWo-wn( r5*gIl}#EUoFQnYh u ZQ6H)Mt+MZijxehEsGѪ_7ꐂXt<E>E^:csQd$PG=c1XF:w_* #')z҉ s{&(a*=m%!Kߧk3k]Ui҅F0{Aw/iX b~m@K)҂C+N4GV/k])p Iqbe]N0,VW|kyrey8ߍhzX]N95m+V:;!Gf-QJδَُGőx/+J@?mܱNT܃uzqtsmbstatus-2.2.1/light/lmain_windows.cpp0000644000175000017500000001141011720232513020172 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include #include "lmain_windows.h" extern QList QTreeWidgetItemList; /** \class main_windowsl \brief Main Window for QtSmbstatus Light \date 2008-11-16 \version 2.1 \author Daniel Rocher */ main_windowsl::main_windowsl(QWidget *parent) : MainWindows(parent) { debugQt("main_windowsl::main_windowsl()"); this->setWindowTitle ( "QtSmbstatus light "+version_qtsmbstatus); // forms title qApp->setWindowIcon ( QIcon (":/icons/qtsmbstatusl.png") ); trayicon->setToolTip ( windowTitle ()); trayicon->setIcon (qApp->windowIcon()); helpAboutAction->setIcon(qApp->windowIcon()); currentIndexOfListItem=0; QString SearchTxt=""; //delete unused widgets action_Connect->deleteLater(); textLabel1->deleteLater(); comboBox_hostaddr->deleteLater(); pushButton_connect->deleteLater(); #if QT_VERSION >= 0x040400 horizontalLayout->deleteLater(); #endif permitDisconnectUser=true; permitSendMsg=true; searchNextAction->setEnabled ( false ); firstTime=true; timerinfoSmb.start(10000); // start smbstatus request slot_timer(); // first time timerSmbRequest.start (interval*1000); // create icon server on treeWidget item_server = new server( treeWidget ); } main_windowsl::~main_windowsl() { debugQt("main_windowsl::~main_windowsl()"); } /** On close event. */ void main_windowsl::closeEvent(QCloseEvent *e) { debugQt("main_windowsl::closeEvent(QCloseEvent *e)"); if (trayicon->isVisible()) { this->hide (); logform->hide(); e->ignore(); } else { treeWidget->clear(); timerinfoSmb.stop(); timerSmbRequest.stop(); saveWindowSize(); logform->close(); logform->deleteLater(); QTimer::singleShot(800, qApp, SLOT(quit())); // wait before quit e->accept(); } } /** Slot %smbstatus timer Request %smbstatus to %server */ void main_windowsl::slot_timer() { debugQt("main_windowsl::slot_timer()"); if (! smbstatus_rq_started) { smbstatus_rq_started=true; smbmanager* processus_smbstatus = new smbmanager(this); connect(processus_smbstatus,SIGNAL(ObjError(const QString &)),msgError, SLOT(showMessage (const QString &)) ); connect( processus_smbstatus, SIGNAL(signal_std_output(const QStringList &)),this, SLOT(AnalysisSmbstatus(const QStringList &)) ); } } /** send message to an %user \sa MainWindows::slotSendMessage MainWindows::slotSendMessageAllUsers */ void main_windowsl::sendMessage(const QString & machine,const QString & message) { debugQt("main_windowsl::sendMessage()"); Sendmessage_manager* send_msg = new Sendmessage_manager(machine,message,this); connect(send_msg,SIGNAL(ObjError(const QString &)),msgError, SLOT(showMessage (const QString &)) ); } /** disconnect an %user \sa MainWindows::slotDisconnectUser */ void main_windowsl::disconnectUser(const QString & pid,const QString & user) { debugQt("main_windowsl::disconnectUser()"); process_smbd_exist* killSmbProc = new process_smbd_exist(pid,user,this); connect(killSmbProc,SIGNAL(ObjError(const QString &)),msgError, SLOT(showMessage (const QString &)) ); } /** Configure qtsmbstatus light (open form) \sa configure_windowsl */ void main_windowsl::on_configureAction_triggered() { debugQt("main_windowsl::on_configureAction_triggered()"); configure_windowsl * configurate = new configure_windowsl(this); connect (configurate,SIGNAL(configuration_changed()),this, SLOT(configuration_changed())); configurate->exec(); } qtsmbstatus-2.2.1/light/qtsmbstatusl.xpm0000644000175000017500000002631411720232513020121 0ustar villouvillou/* XPM */ static char * qtsmbstatusl_xpm[] = { "32 32 577 2", " c None", ". c #525252", "+ c #4E4E4E", "@ c #494949", "# c #454545", "$ c #404040", "% c #3C3C3C", "& c #363636", "* c #323232", "= c #2E2E2E", "- c #292929", "; c #242424", "> c #202020", ", c #1B1B1B", "' c #191919", ") c #626262", "! c #878686", "~ c #817D7D", "{ c #7D7272", "] c #766060", "^ c #6F4E4E", "/ c #5D5D5D", "( c #6F6F70", "_ c #67696B", ": c #595D63", "< c #4A515B", "[ c #2E363F", "} c #1D1D1D", "| c #4D4D4D", "1 c #868686", "2 c #FBEEEE", "3 c #F4D0D0", "4 c #EDB4B4", "5 c #E38C8C", "6 c #D86767", "7 c #2D2D2D", "8 c #B7B8B8", "9 c #E2E9F2", "0 c #CCD8E8", "a c #ABBEDA", "b c #8BA7CD", "c c #526988", "d c #2A2A2A", "e c #4A4A4A", "f c #121214", "g c #2B2B2D", "h c #2F2F2F", "i c #474747", "j c #F4D2D2", "k c #EBAFAF", "l c #E69797", "m c #DE7575", "n c #CF5555", "o c #272727", "p c #ADAFB2", "q c #C1CEE3", "r c #AEC0DC", "s c #8FA9CF", "t c #7898C4", "u c #506586", "v c #39393A", "w c #141416", "x c #3C3C3D", "y c #1F1F21", "z c #1B1B1C", "A c #181817", "B c #535353", "C c #9B9A9A", "D c #9B9391", "E c #C6A1A0", "F c #E08D8D", "G c #DA6565", "H c #C74646", "I c #222222", "J c #A0A4AB", "K c #A7BAD8", "L c #98B0D2", "M c #809CC8", "N c #6C8DC0", "O c #566C8D", "P c #1D1D1E", "Q c #28282A", "R c #202022", "S c #020204", "T c #0C0C0C", "U c #0A0A0B", "V c #171717", "W c #A8A4A3", "X c #7E7978", "Y c #635D5B", "Z c #585351", "` c #7E7B78", " . c #C37675", ".. c #BE3131", "+. c #1C1C1C", "@. c #8892A0", "#. c #84A1CA", "$. c #7998C5", "%. c #6689BD", "&. c #5880B7", "*. c #445B7C", "=. c #131315", "-. c #060507", ";. c #060608", ">. c #1A1A1B", ",. c #101011", "'. c #030305", "). c #C8BFBD", "!. c #9B8F8D", "~. c #8E807D", "{. c #736063", "]. c #6C5C5F", "^. c #685D5F", "/. c #746E6E", "(. c #A78C8A", "_. c #313030", ":. c #6F7F94", "<. c #688CBD", "[. c #5F83BA", "}. c #4E77B3", "|. c #4570AF", "1. c #395074", "2. c #8D8C8C", "3. c #1A191A", "4. c #908F8F", "5. c #3C3C3B", "6. c #080809", "7. c #212122", "8. c #A19A97", "9. c #796E6C", "0. c #817572", "a. c #8C7D7F", "b. c #7D6F71", "c. c #776D6E", "d. c #827A7B", "e. c #837E7E", "f. c #9E9A9A", "g. c #858E9D", "h. c #4670AD", "i. c #3C67A6", "j. c #2E5C9F", "k. c #28569B", "l. c #324C70", "m. c #949494", "n. c #71716F", "o. c #605C53", "p. c #858179", "q. c #656463", "r. c #A4A4A4", "s. c #1F1F1F", "t. c #000000", "u. c #928D89", "v. c #655C59", "w. c #685E5A", "x. c #827577", "y. c #918587", "z. c #897F80", "A. c #92898A", "B. c #9A9292", "C. c #948E8D", "D. c #8F8A88", "E. c #979595", "F. c #444E5C", "G. c #0B1A30", "H. c #101E34", "I. c #2F3844", "J. c #807E7D", "K. c #7F6932", "L. c #B9982B", "M. c #B29833", "N. c #6B5D27", "O. c #888478", "P. c #77726D", "Q. c #675F5A", "R. c #6D6464", "S. c #857B7C", "T. c #A09697", "U. c #9F9596", "V. c #A69B9C", "W. c #AAA1A0", "X. c #9B9491", "Y. c #9C9794", "Z. c #AFACA9", "`. c #A2A49E", " + c #4E5A48", ".+ c #475241", "++ c #6F5628", "@+ c #DDA914", "#+ c #ECC315", "$+ c #F3D426", "%+ c #EBC918", "&+ c #A48118", "*+ c #1D1708", "=+ c #030304", "-+ c #837F7C", ";+ c #706A65", ">+ c #6E6565", ",+ c #7B7273", "'+ c #ABA0A1", ")+ c #A99D9F", "!+ c #A99E9D", "~+ c #A29A97", "{+ c #A6A09C", "]+ c #AEAAA6", "^+ c #BAB7B3", "/+ c #C1BFBC", "(+ c #B7BFB3", "_+ c #7F6E4D", ":+ c #D4A310", "<+ c #E6C015", "[+ c #D9B219", "}+ c #C49411", "|+ c #96742D", "1+ c #221E16", "2+ c #252525", "3+ c #343333", "4+ c #A2A2A1", "5+ c #777271", "6+ c #7A7474", "7+ c #847A7B", "8+ c #8D8384", "9+ c #A79B9D", "0+ c #A79C9D", "a+ c #AAA0A1", "b+ c #ABA2A2", "c+ c #AFA5A6", "d+ c #B8AEAF", "e+ c #BDB4B4", "f+ c #BEB7B5", "g+ c #C2BCBA", "h+ c #C4BAA7", "i+ c #BA9138", "j+ c #C19E53", "k+ c #C3AF82", "l+ c #CAC9C8", "m+ c #444446", "n+ c #666662", "o+ c #B7B4AB", "p+ c #898584", "q+ c #837C7C", "r+ c #82797A", "s+ c #8E8485", "t+ c #ADA3A4", "u+ c #A89E9F", "v+ c #ACA2A3", "w+ c #B0A6A7", "x+ c #B7ACAD", "y+ c #BDB1B1", "z+ c #BDB3B2", "A+ c #C0B8B6", "B+ c #CEC6C4", "C+ c #D5D1CD", "D+ c #E2E1E0", "E+ c #FAF9F9", "F+ c #9F9FA0", "G+ c #212123", "H+ c #1C1C1E", "I+ c #2F2F30", "J+ c #111111", "K+ c #525246", "L+ c #C6C58C", "M+ c #BBB9A3", "N+ c #85807F", "O+ c #766F6F", "P+ c #887E7F", "Q+ c #9B9192", "R+ c #B4AAAB", "S+ c #AEA4A5", "T+ c #B2A6A7", "U+ c #B7A9A9", "V+ c #BDAFAF", "W+ c #C1B3B4", "X+ c #C3B6B6", "Y+ c #C5B9B8", "Z+ c #E6E1DE", "`+ c #E2DEDC", " @ c #EEEEEE", ".@ c #222223", "+@ c #040406", "@@ c #3A3A3B", "#@ c #494836", "$@ c #B5B36A", "%@ c #A9A64F", "&@ c #B2AF78", "*@ c #8C8786", "=@ c #7C7575", "-@ c #867C7D", ";@ c #918788", ">@ c #988E8F", ",@ c #B9AFB0", "'@ c #B6ACAD", ")@ c #B0A6A6", "!@ c #B0A4A4", "~@ c #B8ABAB", "{@ c #C5B5B6", "]@ c #C8B7B8", "^@ c #CAC0BD", "/@ c #DED8D5", "(@ c #E2E0DF", "_@ c #7C7C7B", ":@ c #040404", "<@ c #171719", "[@ c #060606", "}@ c #3B3B1D", "|@ c #9E9C39", "1@ c #929127", "2@ c #8B891C", "3@ c #969247", "4@ c #9B9595", "5@ c #8D8485", "6@ c #908687", "7@ c #B1A7A8", "8@ c #C0B8B8", "9@ c #B2ACAA", "0@ c #AFA7A5", "a@ c #B8ADAC", "b@ c #C2B4B4", "c@ c #C7B7B8", "d@ c #CDBFBC", "e@ c #D4CAC5", "f@ c #D8D3CF", "g@ c #DCDCD8", "h@ c #424242", "i@ c #181819", "j@ c #060607", "k@ c #1D1C1E", "l@ c #010101", "m@ c #121106", "n@ c #31300C", "o@ c #2C2B07", "p@ c #292804", "q@ c #232200", "r@ c #555342", "s@ c #A6A3A0", "t@ c #8E8986", "u@ c #948E8B", "v@ c #978F8D", "w@ c #988F8D", "x@ c #9C9391", "y@ c #B7B0AE", "z@ c #C5BDBB", "A@ c #B4ACAA", "B@ c #B9B1AF", "C@ c #C2BAB8", "D@ c #CDC3BE", "E@ c #D9CFCA", "F@ c #DDD6D1", "G@ c #D2CFC9", "H@ c #D7D6D1", "I@ c #343433", "J@ c #1C1B1C", "K@ c #161617", "L@ c #323231", "M@ c #9B9995", "N@ c #979490", "O@ c #98928F", "P@ c #968E8B", "Q@ c #948B89", "R@ c #998E8E", "S@ c #A59B9A", "T@ c #C6BDBC", "U@ c #CBC1C0", "V@ c #C0B7B5", "W@ c #CBC2BE", "X@ c #DFD6D1", "Y@ c #E0DAD4", "Z@ c #E8E3DD", "`@ c #DEDBD5", " # c #4E4E4D", ".# c #2B2A2B", "+# c #AAAAAA", "@# c #C4C2BE", "## c #A5A19E", "$# c #999491", "%# c #9C9492", "&# c #9D9292", "*# c #9C9090", "=# c #9E9292", "-# c #B6A9A9", ";# c #D4C7C6", "># c #D0C6C2", ",# c #E4DBD6", "'# c #F7F1EB", ")# c #EDE8E2", "!# c #D9D6CF", "~# c #666665", "{# c #4A4949", "]# c #323131", "^# c #858585", "/# c #313132", "(# c #7A7978", "_# c #B7B3B3", ":# c #A8A3A2", "<# c #A49F9C", "[# c #9E9795", "}# c #9E9493", "|# c #9F9292", "1# c #A89A9A", "2# c #C5BBB7", "3# c #DED5D0", "4# c #F1EBE5", "5# c #EAE5DF", "6# c #CDCAC3", "7# c #91908E", "8# c #5B5B5C", "9# c #242425", "0# c #3B3B3B", "a# c #424140", "b# c #181715", "c# c #DDDCDC", "d# c #CACCC8", "e# c #B3B3AF", "f# c #A6A29F", "g# c #A29997", "h# c #A59998", "i# c #AFA6A2", "j# c #C2B9B4", "k# c #E2DCD6", "l# c #DED9D3", "m# c #B9B6AF", "n# c #BFBEBC", "o# c #79797A", "p# c #373738", "q# c #B4820D", "r# c #CB9C0E", "s# c #766943", "t# c #C0C0C0", "u# c #FBFBFB", "v# c #F7F8F7", "w# c #DAD9D7", "x# c #CBC7C6", "y# c #C1BAB9", "z# c #A49D99", "A# c #B2ABA6", "B# c #C5BFBA", "C# c #D1CCC7", "D# c #B3AFA9", "E# c #C4C1BC", "F# c #959491", "G# c #343230", "H# c #54472D", "I# c #606060", "J# c #8C600D", "K# c #A3710C", "L# c #DBA50D", "M# c #F4BD0E", "N# c #B78F13", "O# c #59523F", "P# c #CECECE", "Q# c #F5F5F5", "R# c #FAFAFA", "S# c #F9F8F8", "T# c #E8E5E2", "U# c #DFDBD9", "V# c #DCD9D6", "W# c #E6D8B3", "X# c #CEBE93", "Y# c #C9C4BB", "Z# c #B8B5AC", "`# c #AFA99C", " $ c #BE9B34", ".$ c #DAA40F", "+$ c #F0BA16", "@$ c #F5C121", "#$ c #F5C01B", "$$ c #F1BB10", "%$ c #8D6F10", "&$ c #232322", "*$ c #9D9D9D", "=$ c #FCFCFC", "-$ c #F1F1F1", ";$ c #CCB372", ">$ c #DEA60E", ",$ c #AD8A3F", "'$ c #906E20", ")$ c #C3BAA1", "!$ c #BEB8AB", "~$ c #B89A60", "{$ c #EDB719", "]$ c #F6C93E", "^$ c #F6CD4A", "/$ c #F5C11F", "($ c #F5BD0E", "_$ c #DFB112", ":$ c #312508", "<$ c #393939", "[$ c #F6F6F6", "}$ c #FDFDFD", "|$ c #DEDEDE", "1$ c #B3995C", "2$ c #E3AE17", "3$ c #E2A90F", "4$ c #E1A90D", "5$ c #EFB810", "6$ c #D4BF83", "7$ c #AFA9A4", "8$ c #C6BFBA", "9$ c #EAB51C", "0$ c #F6CC48", "a$ c #F7CE4D", "b$ c #C09C24", "c$ c #B5AF9E", "d$ c #EBEBEB", "e$ c #F2F2F2", "f$ c #F3F3F3", "g$ c #E8E8E8", "h$ c #C4C4C4", "i$ c #787879", "j$ c #6E5112", "k$ c #E4B121", "l$ c #F6CB45", "m$ c #E0BD58", "n$ c #BBB5AA", "o$ c #B5B6B3", "p$ c #585858", "q$ c #C7C7C7", "r$ c #906A1F", "s$ c #E4B018", "t$ c #EDBB24", "u$ c #F3C22C", "v$ c #F5BF16", "w$ c #E3B114", "x$ c #B1985E", "y$ c #BEBEBE", "z$ c #CBCBCB", "A$ c #BFBFBF", "B$ c #9A9A9A", "C$ c #454546", "D$ c #0F0F11", "E$ c #715008", "F$ c #E5AF17", "G$ c #F7CE52", "H$ c #F3C22D", "I$ c #F1B90E", "J$ c #E7B00E", "K$ c #BB8A0E", "L$ c #A07823", "M$ c #C9C9C7", "N$ c #CDCDCB", "O$ c #2C2C2C", "P$ c #646464", "Q$ c #654918", "R$ c #AB7C19", "S$ c #C38F0C", "T$ c #CE980D", "U$ c #DFA80D", "V$ c #EDB50D", "W$ c #F2BA0E", "X$ c #DDA50D", "Y$ c #815A0C", "Z$ c #0C0B0B", "`$ c #141415", " % c #0B0B0B", ".% c #050506", "+% c #77530A", "@% c #DBA30B", "#% c #EBB616", "$% c #E4AF18", "%% c #C9940D", "&% c #AC790C", "*% c #967029", "=% c #A0720F", "-% c #BB860B", ";% c #CB930B", ">% c #AB780C", ",% c #624410", "'% c #343334", ")% c #715014", "!% c #B8820A", "~% c #CF970B", "{% c #AE7D0D", "]% c #86704B", "^% c #775010", "/% c #614413", "(% c #776D5D", "_% c #755216", ":% c #7F5711", " ", " . + @ # $ % & * = - ; > , ' ", " . ) ! ~ { ] ^ * / ( _ : < [ } ", " | 1 2 3 4 5 6 7 8 9 0 a b c d e f g h ", " i ~ j k l m n o p q r s t u v w x y z A = ", " B C D E F G H I J K L M N O P Q R S T U V ", " W X Y Z ` ...+.@.#.$.%.&.*.=.+.-.;.>.,.'. ", ").!.~.{.].^./.(._.:.<.[.}.|.1.v 2.3.d 4.5.6.7. ", "8.9.0.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t. ", "u.v.w.x.y.z.A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.T t. ", " P.Q.R.S.T.U.V.W.X.Y.Z.`. +.+++@+#+$+%+&+*+=+ ", " -+;+>+,+z.'+)+!+~+{+]+^+/+(+_+:+<+[+}+|+1+2+3+ ", " +.4+5+6+7+8+9+0+a+b+c+d+e+f+g+h+i+j+k+l+m+$ P ", " V n+o+p+q+r+s+a+t+u+v+w+x+y+z+A+B+C+D+E+F+G+H+I+ ", " J+K+L+M+N+O+r+P+Q+R+S+v+T+U+V+W+X+Y+Z+`+ @.@+@,.@@ ", " T #@$@%@&@*@=@-@;@>@,@'@)@!@~@V+{@]@^@/@(@_@:@=+<@ ", " [@}@|@1@2@3@4@5@6@Q+>@7@8@9@0@a@b@c@d@e@f@g@h@i@j@k@ ", " l@m@n@o@p@q@r@s@t@u@v@w@x@y@z@A@B@C@D@E@F@G@H@I@J@K@ ", " t.t.t.t.t.t.L@M@N@O@P@Q@R@S@T@U@V@W@X@Y@Z@`@ #3++@.# ", " +# @###$#%#&#*#=#-#;#>#,#'#)#!#~#{#S ]# ", " ^# /#(#_#:#<#[#}#|#1#2#3#4#5#6#7#8#w 9# ", " 0# a#b#^#c#d#e#f#g#h#i#j#k#l#m#n#o#p#9# ", " +# q#r#s#t#u#v#w#x#y#z#A#B#C#D#E#F#G#H# ", " I# J#K#L#M#N#O#P#u#Q#R#S#T#U#V#W#X#Y#Z#`# $ ", " I# J#.$+$@$#$$$%$&$*$=$u#=$u#=$-$;$>$,$'$)$!$~$ ", " +# K#{$]$^$/$($_$:$<$[$}$}$}$Q#|$1$2$3$4$5$6$7$8$ ", " 0# K#9$0$a$#$($M#b$c$d$e$f$g$h$i$j$k$l$/$($M#m$n$o$ ", " ^#p$q$q$r$s$t$u$v$($($w$x$y$z$A$B$C$D$E$F$G$H$I$J$K$L$M$N$", " +#O$P$P$Q$R$S$T$U$V$W$X$Y$Z$`$ %.%+@+@+%@%#%$%%%&% ", " *%=%-%;%>%,%a#'% )%!%~%{% ", " ]%^%/%(% _%:% ", " "}; qtsmbstatus-2.2.1/html/0000755000175000017500000000000011720232513014454 5ustar villouvillouqtsmbstatus-2.2.1/Doxyfile0000644000175000017500000015724311720232513015232 0ustar villouvillou# Doxyfile 1.5.5 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project # # All text after a hash (#) is considered a comment and will be ignored # The format is: # TAG = value [value, ...] # For lists items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (" ") #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # This tag specifies the encoding used for all characters in the config file # that follow. The default is UTF-8 which is also the encoding used for all # text before the first occurrence of this tag. Doxygen uses libiconv (or the # iconv built into libc) for the transcoding. See # http://www.gnu.org/software/libiconv for the list of possible encodings. DOXYFILE_ENCODING = UTF-8 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded # by quotes) that should identify the project. PROJECT_NAME = QtSmbstatus # The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or # if some version control system is used. PROJECT_NUMBER = 2.1.1 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. OUTPUT_DIRECTORY = # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create # 4096 sub-directories (in 2 levels) under the output directory of each output # format and will distribute the generated files over these directories. # Enabling this option can be useful when feeding doxygen a huge amount of # source files, where putting all generated files in the same directory would # otherwise cause performance problems for the file system. CREATE_SUBDIRS = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # The default language is English, other supported languages are: # Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, # Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek, # Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages), # Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish, # Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, # and Ukrainian. OUTPUT_LANGUAGE = English # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will # include brief member descriptions after the members that are listed in # the file and class documentation (similar to JavaDoc). # Set to NO to disable this. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend # the brief description of a member or function before the detailed description. # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. REPEAT_BRIEF = YES # This tag implements a quasi-intelligent brief description abbreviator # that is used to form the text in various listings. Each string # in this list, if found as the leading text of the brief description, will be # stripped from the text and the result after processing the whole list, is # used as the annotated text. Otherwise, the brief description is used as-is. # If left blank, the following values are used ("$name" is automatically # replaced with the name of the entity): "The $name class" "The $name widget" # "The $name file" "is" "provides" "specifies" "contains" # "represents" "a" "an" "the" ABBREVIATE_BRIEF = "The $name class" \ "The $name widget" \ "The $name file" \ is \ provides \ specifies \ contains \ represents \ a \ an \ the # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # Doxygen will generate a detailed section even if there is only a brief # description. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. INLINE_INHERITED_MEMB = YES # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full # path before files name in the file list and in the header files. If set # to NO the shortest path that makes the file name unique will be used. FULL_PATH_NAMES = YES # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag # can be used to strip a user-defined part of the path. Stripping is # only done if one of the specified strings matches the left-hand part of # the path. The tag can be used to show relative paths in the file list. # If left blank the directory from which doxygen is run is used as the # path to strip. STRIP_FROM_PATH = # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of # the path mentioned in the documentation of a class, which tells # the reader which header file to include in order to use a class. # If left blank only the name of the header file containing the class # definition is used. Otherwise one should specify the include paths that # are normally passed to the compiler using the -I flag. STRIP_FROM_INC_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter # (but less readable) file names. This can be useful is your file systems # doesn't support long names like on DOS, Mac, or CD-ROM. SHORT_NAMES = NO # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen # will interpret the first line (until the first dot) of a JavaDoc-style # comment as the brief description. If set to NO, the JavaDoc # comments will behave just like regular Qt-style comments # (thus requiring an explicit @brief command for a brief description.) JAVADOC_AUTOBRIEF = NO # If the QT_AUTOBRIEF tag is set to YES then Doxygen will # interpret the first line (until the first dot) of a Qt-style # comment as the brief description. If set to NO, the comments # will behave just like regular Qt-style comments (thus requiring # an explicit \brief command for a brief description.) QT_AUTOBRIEF = YES # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen # treat a multi-line C++ special comment block (i.e. a block of //! or /// # comments) as a brief description. This used to be the default behaviour. # The new default is to treat a multi-line C++ comment block as a detailed # description. Set this tag to YES if you prefer the old behaviour instead. MULTILINE_CPP_IS_BRIEF = NO # If the DETAILS_AT_TOP tag is set to YES then Doxygen # will output the detailed description near the top, like JavaDoc. # If set to NO, the detailed description appears after the member # documentation. DETAILS_AT_TOP = NO # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented # member inherits the documentation from any documented member that it # re-implements. INHERIT_DOCS = YES # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce # a new page for each member. If set to NO, the documentation of a member will # be part of the file/class/namespace that contains it. SEPARATE_MEMBER_PAGES = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. # Doxygen uses this value to replace tabs by spaces in code fragments. TAB_SIZE = 8 # This tag can be used to specify a number of aliases that acts # as commands in the documentation. An alias has the form "name=value". # For example adding "sideeffect=\par Side Effects:\n" will allow you to # put the command \sideeffect (or @sideeffect) in the documentation, which # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. ALIASES = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C # sources only. Doxygen will then generate output that is more tailored for C. # For instance, some of the names that are used will be different. The list # of all members will be omitted, etc. OPTIMIZE_OUTPUT_FOR_C = NO # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java # sources only. Doxygen will then generate output that is more tailored for # Java. For instance, namespaces will be presented as packages, qualified # scopes will look different, etc. OPTIMIZE_OUTPUT_JAVA = NO # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran # sources only. Doxygen will then generate output that is more tailored for # Fortran. OPTIMIZE_FOR_FORTRAN = NO # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL # sources. Doxygen will then generate output that is tailored for # VHDL. OPTIMIZE_OUTPUT_VHDL = NO # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want # to include (a tag file for) the STL sources as input, then you should # set this tag to YES in order to let doxygen match functions declarations and # definitions whose arguments contain STL classes (e.g. func(std::string); v.s. # func(std::string) {}). This also make the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. BUILTIN_STL_SUPPORT = NO # If you use Microsoft's C++/CLI language, you should set this option to YES to # enable parsing support. CPP_CLI_SUPPORT = NO # Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. # Doxygen will parse them like normal C++ but will assume all classes use public # instead of private inheritance when no explicit protection keyword is present. SIP_SUPPORT = NO # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES, then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. DISTRIBUTE_GROUP_DOC = NO # Set the SUBGROUPING tag to YES (the default) to allow class member groups of # the same type (for instance a group of public functions) to be put as a # subgroup of that type (e.g. under the Public Functions section). Set it to # NO to prevent subgrouping. Alternatively, this can be done per class using # the \nosubgrouping command. SUBGROUPING = YES # When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum # is documented as struct, union, or enum with the name of the typedef. So # typedef struct TypeS {} TypeT, will appear in the documentation as a struct # with name TypeT. When disabled the typedef will appear as a member of a file, # namespace, or class. And the struct will be named TypeS. This can typically # be useful for C code in case the coding convention dictates that all compound # types are typedef'ed and only the typedef is referenced, never the tag name. TYPEDEF_HIDES_STRUCT = NO #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in # documentation are documented, even if no documentation was available. # Private class members and static file members will be hidden unless # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES EXTRACT_ALL = YES # If the EXTRACT_PRIVATE tag is set to YES all private members of a class # will be included in the documentation. EXTRACT_PRIVATE = YES # If the EXTRACT_STATIC tag is set to YES all static members of a file # will be included in the documentation. EXTRACT_STATIC = YES # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) # defined locally in source files will be included in the documentation. # If set to NO only classes defined in header files are included. EXTRACT_LOCAL_CLASSES = YES # This flag is only useful for Objective-C code. When set to YES local # methods, which are defined in the implementation section but not in # the interface are included in the documentation. # If set to NO (the default) only methods in the interface are included. EXTRACT_LOCAL_METHODS = YES # If this flag is set to YES, the members of anonymous namespaces will be # extracted and appear in the documentation as a namespace called # 'anonymous_namespace{file}', where file will be replaced with the base # name of the file that contains the anonymous namespace. By default # anonymous namespace are hidden. EXTRACT_ANON_NSPACES = NO # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all # undocumented members of documented classes, files or namespaces. # If set to NO (the default) these members will be included in the # various overviews, but no documentation section is generated. # This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. # If set to NO (the default) these classes will be included in the various # overviews. This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_CLASSES = NO # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all # friend (class|struct|union) declarations. # If set to NO (the default) these declarations will be included in the # documentation. HIDE_FRIEND_COMPOUNDS = NO # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any # documentation blocks found inside the body of a function. # If set to NO (the default) these blocks will be appended to the # function's detailed documentation block. HIDE_IN_BODY_DOCS = NO # The INTERNAL_DOCS tag determines if documentation # that is typed after a \internal command is included. If the tag is set # to NO (the default) then the documentation will be excluded. # Set it to YES to include the internal documentation. INTERNAL_DOCS = NO # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate # file names in lower-case letters. If set to YES upper-case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows # and Mac users are advised to set this option to NO. CASE_SENSE_NAMES = YES # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen # will show members with their full class and namespace scopes in the # documentation. If set to YES the scope will be hidden. HIDE_SCOPE_NAMES = NO # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen # will put a list of the files that are included by a file in the documentation # of that file. SHOW_INCLUDE_FILES = YES # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] # is inserted in the documentation for inline members. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen # will sort the (detailed) documentation of file and class members # alphabetically by member name. If set to NO the members will appear in # declaration order. SORT_MEMBER_DOCS = YES # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the # brief documentation of file, namespace and class members alphabetically # by member name. If set to NO (the default) the members will appear in # declaration order. SORT_BRIEF_DOCS = NO # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the # hierarchy of group names into alphabetical order. If set to NO (the default) # the group names will appear in their defined order. SORT_GROUP_NAMES = NO # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be # sorted by fully-qualified names, including namespaces. If set to # NO (the default), the class list will be sorted only by class name, # not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. # Note: This option applies only to the class list, not to the # alphabetical list. SORT_BY_SCOPE_NAME = NO # The GENERATE_TODOLIST tag can be used to enable (YES) or # disable (NO) the todo list. This list is created by putting \todo # commands in the documentation. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable (YES) or # disable (NO) the test list. This list is created by putting \test # commands in the documentation. GENERATE_TESTLIST = YES # The GENERATE_BUGLIST tag can be used to enable (YES) or # disable (NO) the bug list. This list is created by putting \bug # commands in the documentation. GENERATE_BUGLIST = YES # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or # disable (NO) the deprecated list. This list is created by putting # \deprecated commands in the documentation. GENERATE_DEPRECATEDLIST= YES # The ENABLED_SECTIONS tag can be used to enable conditional # documentation sections, marked by \if sectionname ... \endif. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines # the initial value of a variable or define consists of for it to appear in # the documentation. If the initializer consists of more lines than specified # here it will be hidden. Use a value of 0 to hide initializers completely. # The appearance of the initializer of individual variables and defines in the # documentation can be controlled using \showinitializer or \hideinitializer # command in the documentation regardless of this setting. MAX_INITIALIZER_LINES = 30 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated # at the bottom of the documentation of classes and structs. If set to YES the # list will mention the files that were used to generate the documentation. SHOW_USED_FILES = YES # If the sources in your project are distributed over multiple directories # then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy # in the documentation. The default is NO. SHOW_DIRECTORIES = YES # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from # the version control system). Doxygen will invoke the program by executing (via # popen()) the command , where is the value of # the FILE_VERSION_FILTER tag, and is the name of an input file # provided by doxygen. Whatever the program writes to standard output # is used as the file version. See the manual for examples. FILE_VERSION_FILTER = #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated # by doxygen. Possible values are YES and NO. If left blank NO is used. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are # generated by doxygen. Possible values are YES and NO. If left blank # NO is used. WARNINGS = YES # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings # for undocumented members. If EXTRACT_ALL is set to YES then this flag will # automatically be disabled. WARN_IF_UNDOCUMENTED = YES # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as not documenting some # parameters in a documented function, or documenting parameters that # don't exist or using markup commands wrongly. WARN_IF_DOC_ERROR = YES # This WARN_NO_PARAMDOC option can be abled to get warnings for # functions that are documented, but have no documentation for their parameters # or return value. If set to NO (the default) doxygen will only warn about # wrong or incomplete parameter documentation, but not about the absence of # documentation. WARN_NO_PARAMDOC = NO # The WARN_FORMAT tag determines the format of the warning messages that # doxygen can produce. The string should contain the $file, $line, and $text # tags, which will be replaced by the file and line number from which the # warning originated and the warning text. Optionally the format may contain # $version, which will be replaced by the version of the file (if it could # be obtained via FILE_VERSION_FILTER) WARN_FORMAT = "$file:$line: $text" # The WARN_LOGFILE tag can be used to specify a file to which warning # and error messages should be written. If left blank the output is written # to stderr. WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag can be used to specify the files and/or directories that contain # documented source files. You may enter file names like "myfile.cpp" or # directories like "/usr/src/myproject". Separate the files or directories # with spaces. INPUT = # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is # also the default input encoding. Doxygen uses libiconv (or the iconv built # into libc) for the transcoding. See http://www.gnu.org/software/libiconv for # the list of possible encodings. INPUT_ENCODING = UTF-8 # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank the following patterns are tested: # *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx # *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 FILE_PATTERNS = # The RECURSIVE tag can be used to turn specify whether or not subdirectories # should be searched for input files as well. Possible values are YES and NO. # If left blank NO is used. RECURSIVE = YES # The EXCLUDE tag can be used to specify files and/or directories that should # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. EXCLUDE = # The EXCLUDE_SYMLINKS tag can be used select whether or not files or # directories that are symbolic links (a Unix filesystem feature) are excluded # from the input. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. Note that the wildcards are matched # against the file with absolute path, so to exclude all test directories # for example use the pattern */test/* EXCLUDE_PATTERNS = moc_*.* \ ui_*.* \ */bin/* \ */build/* # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the # output. The symbol name can be a fully qualified name, a word, or if the # wildcard * is used, a substring. Examples: ANamespace, AClass, # AClass::ANamespace, ANamespace::*Test EXCLUDE_SYMBOLS = # The EXAMPLE_PATH tag can be used to specify one or more files or # directories that contain example code fragments that are included (see # the \include command). EXAMPLE_PATH = # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank all files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude # commands irrespective of the value of the RECURSIVE tag. # Possible values are YES and NO. If left blank NO is used. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or # directories that contain image that are included in the documentation (see # the \image command). IMAGE_PATH = ./client/icons # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command , where # is the value of the INPUT_FILTER tag, and is the name of an # input file. Doxygen will then use the output that the filter program writes # to standard output. If FILTER_PATTERNS is specified, this tag will be # ignored. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern # basis. Doxygen will compare the file name with each pattern and apply the # filter if there is a match. The filters are a list of the form: # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further # info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER # is applied to all files. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will be used to filter the input files when producing source # files to browse (i.e. when SOURCE_BROWSER is set to YES). FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will # be generated. Documented entities will be cross-referenced with these sources. # Note: To get rid of all source code in the generated output, make sure also # VERBATIM_HEADERS is set to NO. SOURCE_BROWSER = NO # Setting the INLINE_SOURCES tag to YES will include the body # of functions and classes directly in the documentation. INLINE_SOURCES = NO # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct # doxygen to hide any special comment blocks from generated source code # fragments. Normal C and C++ comments will always remain visible. STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES (the default) # then for each documented function all documented # functions referencing it will be listed. REFERENCED_BY_RELATION = NO # If the REFERENCES_RELATION tag is set to YES (the default) # then for each documented function all documented entities # called/used by that function will be listed. REFERENCES_RELATION = NO # If the REFERENCES_LINK_SOURCE tag is set to YES (the default) # and SOURCE_BROWSER tag is set to YES, then the hyperlinks from # functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will # link to the source code. Otherwise they will link to the documentstion. REFERENCES_LINK_SOURCE = YES # If the USE_HTAGS tag is set to YES then the references to source code # will point to the HTML generated by the htags(1) tool instead of doxygen # built-in source browser. The htags tool is part of GNU's global source # tagging system (see http://www.gnu.org/software/global/global.html). You # will need version 4.8.6 or higher. USE_HTAGS = NO # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen # will generate a verbatim copy of the header file for each class for # which an include is specified. Set to NO to disable this. VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index # of all compounds will be generated. Enable this if the project # contains a lot of classes, structs, unions or interfaces. ALPHABETICAL_INDEX = NO # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns # in which this list will be split (can be a number in the range [1..20]) COLS_IN_ALPHA_INDEX = 5 # In case all classes in a project start with a common prefix, all # classes will be put under the same header in the alphabetical index. # The IGNORE_PREFIX tag can be used to specify one or more prefixes that # should be ignored while generating the index headers. IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES (the default) Doxygen will # generate HTML output. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `html' will be used as the default path. HTML_OUTPUT = html # The HTML_FILE_EXTENSION tag can be used to specify the file extension for # each generated HTML page (for example: .htm,.php,.asp). If it is left blank # doxygen will generate files with .html extension. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a personal HTML header for # each generated HTML page. If it is left blank doxygen will generate a # standard header. HTML_HEADER = header.html # The HTML_FOOTER tag can be used to specify a personal HTML footer for # each generated HTML page. If it is left blank doxygen will generate a # standard footer. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading # style sheet that is used by each HTML page. It can be used to # fine-tune the look of the HTML output. If the tag is left blank doxygen # will generate a default style sheet. Note that doxygen will try to copy # the style sheet file to the HTML output directory, so don't put your own # stylesheet in the HTML output directory as well, or it will be erased! HTML_STYLESHEET = # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, # files or namespaces will be aligned in HTML using tables. If set to # NO a bullet list will be used. HTML_ALIGN_MEMBERS = YES # If the GENERATE_HTMLHELP tag is set to YES, additional index files # will be generated that can be used as input for tools like the # Microsoft HTML help workshop to generate a compiled HTML help file (.chm) # of the generated HTML documentation. GENERATE_HTMLHELP = NO # If the GENERATE_DOCSET tag is set to YES, additional index files # will be generated that can be used as input for Apple's Xcode 3 # integrated development environment, introduced with OSX 10.5 (Leopard). # To create a documentation set, doxygen will generate a Makefile in the # HTML output directory. Running make will produce the docset in that # directory and running "make install" will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find # it at startup. GENERATE_DOCSET = NO # When GENERATE_DOCSET tag is set to YES, this tag determines the name of the # feed. A documentation feed provides an umbrella under which multiple # documentation sets from a single provider (such as a company or product suite) # can be grouped. DOCSET_FEEDNAME = "Doxygen generated docs" # When GENERATE_DOCSET tag is set to YES, this tag specifies a string that # should uniquely identify the documentation set bundle. This should be a # reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen # will append .docset to the name. DOCSET_BUNDLE_ID = org.doxygen.Project # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the # page has loaded. For this to work a browser that supports # JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox # Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). HTML_DYNAMIC_SECTIONS = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can # be used to specify the file name of the resulting .chm file. You # can add a path in front of the file if the result should not be # written to the html output directory. CHM_FILE = # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can # be used to specify the location (absolute path including file name) of # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run # the HTML help compiler on the generated index.hhp. HHC_LOCATION = # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag # controls if a separate .chi index file is generated (YES) or that # it should be included in the master .chm file (NO). GENERATE_CHI = NO # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag # controls whether a binary table of contents is generated (YES) or a # normal table of contents (NO) in the .chm file. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members # to the contents of the HTML help documentation and to the tree view. TOC_EXPAND = NO # The DISABLE_INDEX tag can be used to turn on/off the condensed index at # top of each HTML page. The value NO (the default) enables the index and # the value YES disables it. DISABLE_INDEX = NO # This tag can be used to set the number of enum values (range [1..20]) # that doxygen will group on one line in the generated HTML documentation. ENUM_VALUES_PER_LINE = 4 # If the GENERATE_TREEVIEW tag is set to YES, a side panel will be # generated containing a tree-like index structure (just like the one that # is generated for HTML Help). For this to work a browser that supports # JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, # Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are # probably better off using the HTML help feature. GENERATE_TREEVIEW = NO # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be # used to set the initial width (in pixels) of the frame in which the tree # is shown. TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will # generate Latex output. GENERATE_LATEX = NO # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `latex' will be used as the default path. LATEX_OUTPUT = latex # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be # invoked. If left blank `latex' will be used as the default command name. LATEX_CMD_NAME = latex # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to # generate index for LaTeX. If left blank `makeindex' will be used as the # default command name. MAKEINDEX_CMD_NAME = makeindex # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact # LaTeX documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_LATEX = NO # The PAPER_TYPE tag can be used to set the paper type that is used # by the printer. Possible values are: a4, a4wide, letter, legal and # executive. If left blank a4wide will be used. PAPER_TYPE = a4wide # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX # packages that should be included in the LaTeX output. EXTRA_PACKAGES = # The LATEX_HEADER tag can be used to specify a personal LaTeX header for # the generated latex document. The header should contain everything until # the first chapter. If it is left blank doxygen will generate a # standard header. Notice: only use this tag if you know what you are doing! LATEX_HEADER = # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated # is prepared for conversion to pdf (using ps2pdf). The pdf file will # contain links (just like the HTML output) instead of page references # This makes the output suitable for online browsing using a pdf viewer. PDF_HYPERLINKS = YES # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of # plain latex in the generated Makefile. Set this option to YES to get a # higher quality PDF documentation. USE_PDFLATEX = YES # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. # command to the generated LaTeX files. This will instruct LaTeX to keep # running if errors occur, instead of asking the user for help. # This option is also used when generating formulas in HTML. LATEX_BATCHMODE = NO # If LATEX_HIDE_INDICES is set to YES then doxygen will not # include the index chapters (such as File Index, Compound Index, etc.) # in the output. LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output # The RTF output is optimized for Word 97 and may not look very pretty with # other RTF readers or editors. GENERATE_RTF = NO # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `rtf' will be used as the default path. RTF_OUTPUT = rtf # If the COMPACT_RTF tag is set to YES Doxygen generates more compact # RTF documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_RTF = NO # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated # will contain hyperlink fields. The RTF file will # contain links (just like the HTML output) instead of page references. # This makes the output suitable for online browsing using WORD or other # programs which support those fields. # Note: wordpad (write) and others do not support links. RTF_HYPERLINKS = NO # Load stylesheet definitions from file. Syntax is similar to doxygen's # config file, i.e. a series of assignments. You only have to provide # replacements, missing definitions are set to their default value. RTF_STYLESHEET_FILE = # Set optional variables used in the generation of an rtf document. # Syntax is similar to doxygen's config file. RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- # If the GENERATE_MAN tag is set to YES (the default) Doxygen will # generate man pages GENERATE_MAN = NO # The MAN_OUTPUT tag is used to specify where the man pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `man' will be used as the default path. MAN_OUTPUT = man # The MAN_EXTENSION tag determines the extension that is added to # the generated man pages (default is the subroutine's section .3) MAN_EXTENSION = .3 # If the MAN_LINKS tag is set to YES and Doxygen generates man output, # then it will generate one additional man file for each entity # documented in the real man page(s). These additional files # only source the real man page, but without them the man command # would be unable to find the correct page. The default is NO. MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- # If the GENERATE_XML tag is set to YES Doxygen will # generate an XML file that captures the structure of # the code including all documentation. GENERATE_XML = NO # The XML_OUTPUT tag is used to specify where the XML pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `xml' will be used as the default path. XML_OUTPUT = xml # The XML_SCHEMA tag can be used to specify an XML schema, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_SCHEMA = # The XML_DTD tag can be used to specify an XML DTD, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_DTD = # If the XML_PROGRAMLISTING tag is set to YES Doxygen will # dump the program listings (including syntax highlighting # and cross-referencing information) to the XML output. Note that # enabling this will significantly increase the size of the XML output. XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will # generate an AutoGen Definitions (see autogen.sf.net) file # that captures the structure of the code including all # documentation. Note that this feature is still experimental # and incomplete at the moment. GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- # If the GENERATE_PERLMOD tag is set to YES Doxygen will # generate a Perl module file that captures the structure of # the code including all documentation. Note that this # feature is still experimental and incomplete at the # moment. GENERATE_PERLMOD = NO # If the PERLMOD_LATEX tag is set to YES Doxygen will generate # the necessary Makefile rules, Perl scripts and LaTeX code to be able # to generate PDF and DVI output from the Perl module output. PERLMOD_LATEX = NO # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be # nicely formatted so it can be parsed by a human reader. This is useful # if you want to understand what is going on. On the other hand, if this # tag is set to NO the size of the Perl module output will be much smaller # and Perl will parse it just the same. PERLMOD_PRETTY = YES # The names of the make variables in the generated doxyrules.make file # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. # This is useful so different doxyrules.make files included by the same # Makefile don't overwrite each other's variables. PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will # evaluate all C-preprocessor directives found in the sources and include # files. ENABLE_PREPROCESSING = YES # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro # names in the source code. If set to NO (the default) only conditional # compilation will be performed. Macro expansion can be done in a controlled # way by setting EXPAND_ONLY_PREDEF to YES. MACRO_EXPANSION = NO # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES # then the macro expansion is limited to the macros specified with the # PREDEFINED and EXPAND_AS_DEFINED tags. EXPAND_ONLY_PREDEF = NO # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files # in the INCLUDE_PATH (see below) will be search if a #include is found. SEARCH_INCLUDES = YES # The INCLUDE_PATH tag can be used to specify one or more directories that # contain include files that are not input files but should be processed by # the preprocessor. INCLUDE_PATH = # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard # patterns (like *.h and *.hpp) to filter out the header-files in the # directories. If left blank, the patterns specified with FILE_PATTERNS will # be used. INCLUDE_FILE_PATTERNS = # The PREDEFINED tag can be used to specify one or more macro names that # are defined before the preprocessor is started (similar to the -D option of # gcc). The argument of the tag is a list of macros of the form: name # or name=definition (no spaces). If the definition and the = are # omitted =1 is assumed. To prevent a macro definition from being # undefined via #undef or recursively expanded use the := operator # instead of the = operator. PREDEFINED = # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # this tag can be used to specify a list of macro names that should be expanded. # The macro definition that is found in the sources will be used. # Use the PREDEFINED tag if you want to use a different macro definition. EXPAND_AS_DEFINED = # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then # doxygen's preprocessor will remove all function-like macros that are alone # on a line, have an all uppercase name, and do not end with a semicolon. Such # function macros are typically used for boiler-plate code, and will confuse # the parser if not removed. SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- # The TAGFILES option can be used to specify one or more tagfiles. # Optionally an initial location of the external documentation # can be added for each tagfile. The format of a tag file without # this location is as follows: # TAGFILES = file1 file2 ... # Adding location for the tag files is done as follows: # TAGFILES = file1=loc1 "file2 = loc2" ... # where "loc1" and "loc2" can be relative or absolute paths or # URLs. If a location is present for each tag, the installdox tool # does not have to be run to correct the links. # Note that each tag file must have a unique name # (where the name does NOT include the path) # If a tag file is not located in the directory in which doxygen # is run, you must also specify the path to the tagfile here. TAGFILES = # When a file name is specified after GENERATE_TAGFILE, doxygen will create # a tag file that is based on the input files it reads. GENERATE_TAGFILE = # If the ALLEXTERNALS tag is set to YES all external classes will be listed # in the class index. If set to NO only the inherited external classes # will be listed. ALLEXTERNALS = YES # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed # in the modules index. If set to NO, only the current project's groups will # be listed. EXTERNAL_GROUPS = YES # The PERL_PATH should be the absolute path and name of the perl script # interpreter (i.e. the result of `which perl'). PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base # or super classes. Setting the tag to NO turns the diagrams off. Note that # this option is superseded by the HAVE_DOT option below. This is only a # fallback. It is recommended to install and use dot, since it yields more # powerful graphs. CLASS_DIAGRAMS = YES # You can define message sequence charts within doxygen comments using the \msc # command. Doxygen will then run the mscgen tool (see # http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the # documentation. The MSCGEN_PATH tag allows you to specify the directory where # the mscgen tool resides. If left empty the tool is assumed to be found in the # default search path. MSCGEN_PATH = # If set to YES, the inheritance and collaboration graphs will hide # inheritance and usage relations if the target is undocumented # or is not a class. HIDE_UNDOC_RELATIONS = NO # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz, a graph visualization # toolkit from AT&T and Lucent Bell Labs. The other options in this section # have no effect if this option is set to NO (the default) HAVE_DOT = YES # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect inheritance relations. Setting this tag to YES will force the # the CLASS_DIAGRAMS tag to NO. CLASS_GRAPH = YES # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect implementation dependencies (inheritance, containment, and # class references variables) of the class with other documented classes. COLLABORATION_GRAPH = NO # If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen # will generate a graph for groups, showing the direct groups dependencies GROUP_GRAPHS = YES # If the UML_LOOK tag is set to YES doxygen will generate inheritance and # collaboration diagrams in a style similar to the OMG's Unified Modeling # Language. UML_LOOK = NO # If set to YES, the inheritance and collaboration graphs will show the # relations between templates and their instances. TEMPLATE_RELATIONS = NO # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT # tags are set to YES then doxygen will generate a graph for each documented # file showing the direct and indirect include dependencies of the file with # other documented files. INCLUDE_GRAPH = YES # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and # HAVE_DOT tags are set to YES then doxygen will generate a graph for each # documented header file showing the documented files that directly or # indirectly include this file. INCLUDED_BY_GRAPH = YES # If the CALL_GRAPH and HAVE_DOT options are set to YES then # doxygen will generate a call dependency graph for every global function # or class method. Note that enabling this option will significantly increase # the time of a run. So in most cases it will be better to enable call graphs # for selected functions only using the \callgraph command. CALL_GRAPH = NO # If the CALLER_GRAPH and HAVE_DOT tags are set to YES then # doxygen will generate a caller dependency graph for every global function # or class method. Note that enabling this option will significantly increase # the time of a run. So in most cases it will be better to enable caller # graphs for selected functions only using the \callergraph command. CALLER_GRAPH = NO # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen # will graphical hierarchy of all classes instead of a textual one. GRAPHICAL_HIERARCHY = YES # If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES # then doxygen will show the dependencies a directory has on other directories # in a graphical way. The dependency relations are determined by the #include # relations between the files in the directories. DIRECTORY_GRAPH = YES # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. Possible values are png, jpg, or gif # If left blank png will be used. DOT_IMAGE_FORMAT = png # The tag DOT_PATH can be used to specify the path where the dot tool can be # found. If left blank, it is assumed the dot tool can be found in the path. DOT_PATH = # The DOTFILE_DIRS tag can be used to specify one or more directories that # contain dot files that are included in the documentation (see the # \dotfile command). DOTFILE_DIRS = # The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of # nodes that will be shown in the graph. If the number of nodes in a graph # becomes larger than this value, doxygen will truncate the graph, which is # visualized by representing a node as a red box. Note that doxygen if the # number of direct children of the root node in a graph is already larger than # DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note # that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. DOT_GRAPH_MAX_NODES = 50 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the # graphs generated by dot. A depth value of 3 means that only nodes reachable # from the root by following a path via at most 3 edges will be shown. Nodes # that lay further from the root node will be omitted. Note that setting this # option to 1 or 2 may greatly reduce the computation time needed for large # code bases. Also note that the size of a graph can be further restricted by # DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. MAX_DOT_GRAPH_DEPTH = 0 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent # background. This is enabled by default, which results in a transparent # background. Warning: Depending on the platform used, enabling this option # may lead to badly anti-aliased labels on the edges of a graph (i.e. they # become hard to read). DOT_TRANSPARENT = YES # Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output # files in one run (i.e. multiple -o and -T options on the command line). This # makes dot run faster, but since only newer versions of dot (>1.8.10) # support this, this feature is disabled by default. DOT_MULTI_TARGETS = NO # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will # generate a legend page explaining the meaning of the various boxes and # arrows in the dot generated graphs. GENERATE_LEGEND = YES # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will # remove the intermediate dot files that are used to generate # the various graphs. DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- # The SEARCHENGINE tag specifies whether or not a search engine should be # used. If set to NO the values of all tags below this one will be ignored. SEARCHENGINE = NO qtsmbstatus-2.2.1/templates/0000755000175000017500000000000011720232510015503 5ustar villouvillouqtsmbstatus-2.2.1/templates/cpp0000755000175000017500000000267011720232510016220 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ qtsmbstatus-2.2.1/templates/h0000755000175000017500000000267011720232510015665 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ qtsmbstatus-2.2.1/README-ES0000644000175000017500000001415011720232510014673 0ustar villouvillou-*------------------------------------------------------------------------+- QtSmbstatus http://qtsmbstatus.free.fr/ Daniel Rocher - ADELLA -*------------------------------------------------------------------------+- Este programa esta licenciado bajo los terminos de la Licencia General Publica GNU version 2. Qtsmbstatus es una interfaz grafica (GUI) para smbstatus. Permite ver en tiempo real los recursos utilizados en un servidor Samba. Esta aplicacion utiliza el paradigma cliente/servidor. Las conexiones son securizadas mediante el uso de SSL y se requiere autenticacion para conectar al servidor (PAM). La parte servidor de la aplicacion se instala en la misma maquina que corre el servidor SAMBA. qtsmbstatus-server proporciona la parte servidor de la aplicacion. qtsmbstatus-client proporciona la parte cliente de la aplicacion. qtsmbstatus-light proporciona una aplicacion ligera que permite trabajar localmente sin necesidad de usar qtsmbstatus-server. Las opciones que permite son: - ver conexiones - desconectar usuarios - enviar mensajes (popupwindows) a uno o mas usuarios 1/ Compilacion desde las fuentes 2/ Uso desde linea de comandos 3/ Iniciar y parar el servicio 4/ Configurar el servidor 5/ Cliente para x11 (unix/linux) 6/ Cliente para windows ------------------------------------------------------------- 1/ Compilacion desde las fuentes: ------------------------------------------------------------- Para instalar qtsmbstatus light: ******************************** Comprobar las dependencias : qt4-dev>=4.3 cd light qmake (o qmake-qt4) make y como root: make install Para instalar el servicio: ************************** Comprobar las dependencias : pam-dev y qt4-dev>=4.3 cd server qmake (o qmake-qt4) make y como root: make install Para instalar el cliente: ************************* Comprobar las dependencias : qt4-dev>=4.3 cd client qmake (o qmake-qt4) make y como root: make install ------------------------------------------------------------- 2/ Uso desde linea de comandos: ------------------------------------------------------------- qtsmbstatus (servidor, cliente y version ligera) aceptan algunos argumentos desde la linea de comandos. Para obtener mas informacion: qtsmbstatusd --help (para el servidor) qtsmbstatus --help (para el cliente) qtsmbstatusl --help (para la version ligera) ------------------------------------------------------------- 3/ Iniciar y parar el servicio: ------------------------------------------------------------- Iniciar el servicio: /etc/init.d/qtsmbstatusd start o service qtsmbstatusd start Default port: 4443 Parar el servicio: /etc/init.d/qtsmbstatusd stop o service qtsmbstatusd stop ------------------------------------------------------------- 4/ Configurar el servidor ------------------------------------------------------------- La configuracion de los archivos del servidor en encuentran en: /etc/qtsmbstatusd/ en este directorio: privkey.pem qtsmbstatusd.conf qtsmbstatusd.users server.pem privkey.pem : Clave privada (atencion! cambiar el permiso de acceso al archivo a 640 ! ) Para generar tu propia llave privada: openssl genrsa -des3 -out privkey.pem 2048 server.pem : Certificado autofirmado con clave Para generar tu propio certificado: openssl req -new -x509 -key privkey.pem -out server.pem -days 10000 Las opciones se guardan en el fichero: qtsmbstatusd.conf port : Puerto en donde escuchara el servicio private_key : Clave privada certificat : certificado ssl ssl_password : clave para certificados ssl permit_disconnect_user : Permitir que un cliente desconecte a un usuario. Puedes autorizar a un cliente a desconectar a un usuario. Use un nombre de usuario o 'all' para todos los clientes. permit_send_msg : Permitir que un cliente mande mensajes Puedes autorizar a un cliente para enviar mensages. Use un nombre de usuario o 'all' para todos los clientes. == PAM: == El fichero de configuracion del PAM depende de la distribucion que se este usando. Si el login falla cambialo: /etc/pam.d/qtsmbstusd Hay ejemplos de configuracion en la ruta: ./server/pam.d/samples/ Los usuarios autorizados por PAM son registrados dentro de: qtsmbstatusd.users (por defecto como root) ------------------------------------------------------------- 5/ Cliente para x11 (unix/linux) : ------------------------------------------------------------- Ejecutar bajo X11: qtsmbstatus Introducir la direccion de ip del servidor, conectar y hacer login (usuario y contrasena) Para enviar un mensaje o desconectar a un usuario se debe hacer click con el boton derecho. (popupwindows requiere smbclient) ------------------------------------------------------------- 6/ Cliente para windows : ------------------------------------------------------------- Instalar qtsmbstatus-client.X.X.X.exe ejecutar qtsmbstatus.exe Introducir la direccion de ip del servidor, conectar y hacer login (usuario y contrasena) Para enviar un mensaje o desconectar a un usuario se debe hacer click con el boton derecho. (popupwindows requiere smbclient) qtsmbstatus-2.2.1/utest/0000755000175000017500000000000011720232510014651 5ustar villouvillouqtsmbstatus-2.2.1/utest/customsmbstatus.h0000644000175000017500000000406211720232510020304 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #ifndef CUSTOMSMBSTATUS_H #define CUSTOMSMBSTATUS_H #include #include class QString; class CustomSmbstatus: public QObject { Q_OBJECT public slots: void clear(); void setSambaVersion (const QString &); void add_user (const QString &,const QString &,const QString &,const QString &,const QString &); void add_share(const QString &,const QString &,const QString &); void add_lockedfile(const QString &,const QString &,const QString &,const QString &,const QString &,const QString &); public: QString m_version_samba; QStringList m_user; QStringList m_share; QStringList m_lockedfile; }; #endif qtsmbstatus-2.2.1/utest/utestsmbstatus.cpp0000644000175000017500000002700711720232510020475 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include #include "utestsmbstatus.h" #include "customsmbstatus.h" #include "../client/smbstatus.h" /// Samba version 2.2.8a QString status228a="Samba version 2.2.8a \n\ Service uid gid pid machine \n\ ---------------------------------------------- \n\ travail jacques jacques 8135 atelier2 (100.83.118.21) Mon Aug 22 10:41:47 2005 \n\ \n\ Locked files: \n\ Pid DenyMode Access R/W Oplock Name \n\ -------------------------------------------------------------- \n\ 8135 DENY_WRITE 0x20089 RDONLY EXCLUSIVE+BATCH /home/serveur/LIGH.ppt Mon Aug 22 10:45:39 2005 \n"; /// Samba version 3.0.2a QString status302a="Samba version 3.0.2a \n\ PID Username Group Machine \n\ ------------------------------------------------------------------- \n\ 3456 robert etude etude1 (192.168.1.1) \n\ \n\ \n\ Service pid machine Connected at \n\ ------------------------------------------------------- \n\ robert 3456 etude1 Fri Sep 10 07:45:05 2004 \n\ \n\ Locked files: \n\ Pid DenyMode Access R/W Oplock Name \n\ -------------------------------------------------------------- \n\ 3456 DENY_NONE 0x1 RDONLY NONE /home/villou/projet_top.fde Fri Sep 10 19:31:38 2004 \n"; /// Samba version 3.0.4 QString status304="Samba version 3.0.4 \n\ PID Username Group Machine \n\ ------------------------------------------------------------------- \n\ 7793 daniel users pc513-3 (192.168.1.130) \n\ \n\ Service pid machine Connected at \n\ ------------------------------------------------------- \n\ hv05727 7793 pc513-3 Thu May 27 18:10:11 2004 \n\ \n\ Locked files: \n\ Pid DenyMode Access R/W Oplock Name \n\ -------------------------------------------------------------- \n\ 7793 DENY_WRITE 0x20 RDONLY EXCLUSIVE+BATCH /users/cycle1_1/2003/hv05727/SHDOCVW.DLL Thu May 27 18:10:38 2004 \n"; /** Samba version 3.0.22 lockedfile header with "SharePath Name" */ QString status3022="Samba version 3.0.22-13.27-1162-SUSE-SLES10 \n\ PID Username Group Machine \n\ ------------------------------------------------------------------- \n\ 24158 user1 group-admin my861 (192.168.1.31) \n\ \n\ Service pid machine Connected at \n\ ------------------------------------------------------- \n\ sys 24158 my861 Thu Apr 2 11:58:16 2009 \n\ \n\ Locked files: \n\ Pid DenyMode Access R/W Oplock SharePath Name \n\ ---------------------------------------------------------------------------------------- \n\ 24158 DENY_NONE 0x100001 RDONLY NONE /XXone user/bginfo Fri Apr 3 08:46:03 2009 \n"; /** Samba version 3.0.23d lockedfile header with "SharePath Name Time" */ QString status3023d="Samba version 3.0.23d-6-1083-SUSE-SL10.2 \n\ PID Username Group Machine \n\ ------------------------------------------------------------------- \n\ 4528 villou users localhost (192.168.1.150) \n\ \n\ Service pid machine Connected at \n\ ------------------------------------------------------- \n\ users 4528 localhost Wed May 9 16:35:57 2007 \n\ \n\ Locked files: \n\ Pid Uid DenyMode Access R/W Oplock SharePath Name Time \n\ -------------------------------------------------------------------------------------------------- \n\ 4528 1000 DENY_NONE 0x120116 WRONLY NONE /home villou/Documents/kubuntu-7.04-desktop-i386.iso Wed May 9 16:37:13 2007 \n"; /** Samba version 3.0.30 test with user="nobody" and group="nogroup" */ QString status3030="Samba version 3.0.30-0.fc8 \n\ PID Username Group Machine \n\ ------------------------------------------------------------------- \n\ \n\ Service pid machine Connected at \n\ ------------------------------------------------------- \n\ F 32459 filomenap Fri Sep 12 08:38:55 2008 \n\ \n\ Locked files: \n\ Pid Uid DenyMode Access R/W Oplock SharePath Name Time \n\ -------------------------------------------------------------------------------------------------- \n\ 32459 99 DENY_NONE 0x12019f RDWR EXCLUSIVE+BATCH /F Fac/EMPRESA.DBF Fri Sep 12 09:43:09 2008 \n"; void UtestSmbstatus::cleanup() { m_customsmbstatus.clear(); } void UtestSmbstatus::SambaVersion_data() { QTest::addColumn("smbstatus_rq"); QTest::addColumn("result"); QTest::newRow("Samba version 2.2.8a") << status228a << "Samba version 2.2.8a"; QTest::newRow("Samba version 3.0.2a") << status302a << "Samba version 3.0.2a"; QTest::newRow("Samba version 3.0.4") << status304 << "Samba version 3.0.4"; QTest::newRow("Samba version 3.0.22") << status3022 << "Samba version 3.0.22-13.27-1162-SUSE-SLES10"; QTest::newRow("Samba version 3.0.23d") << status3023d << "Samba version 3.0.23d-6-1083-SUSE-SL10.2"; QTest::newRow("Samba version 3.0.30") << status3030 << "Samba version 3.0.30-0.fc8"; } void UtestSmbstatus::SambaVersion() { QFETCH(QString, smbstatus_rq); QFETCH(QString, result); smbstatus m_smbstatus(smbstatus_rq.split('\n')); connect (&m_smbstatus,SIGNAL(sambaVersion (const QString &)),&m_customsmbstatus, SLOT(setSambaVersion (const QString &))); m_smbstatus.RQ_smbstatus(); QCOMPARE(m_customsmbstatus.m_version_samba,result); } void UtestSmbstatus::addUser_data() { QTest::addColumn("smbstatus_rq"); QTest::addColumn("result"); QTest::newRow("Samba version 2.2.8a") << status228a << (QStringList() << "8135" << "jacques" << "jacques" << "atelier2" << "100.83.118.21"); QTest::newRow("Samba version 3.0.2a") << status302a << (QStringList() << "3456" << "robert" << "etude" << "etude1" << "192.168.1.1"); QTest::newRow("Samba version 3.0.4") << status304 << (QStringList() << "7793" << "daniel" << "users" << "pc513-3" << "192.168.1.130"); QTest::newRow("Samba version 3.0.22") << status3022 << (QStringList() << "24158"<< "user1" << "group-admin" << "my861" << "192.168.1.31"); QTest::newRow("Samba version 3.0.23d") << status3023d << (QStringList() << "4528" << "villou" << "users" << "localhost" << "192.168.1.150"); QTest::newRow("Samba version 3.0.30") << status3030 << (QStringList() << "32459" << "nobody" << "nogroup" << "filomenap" << "filomenap"); } void UtestSmbstatus::addUser() { QFETCH(QString, smbstatus_rq); QFETCH(QStringList, result); smbstatus m_smbstatus(smbstatus_rq.split('\n')); connect (&m_smbstatus,SIGNAL(add_user (const QString &,const QString &,const QString &,const QString &,const QString &)),&m_customsmbstatus, SLOT(add_user (const QString &,const QString &,const QString &,const QString &,const QString &))); m_smbstatus.RQ_smbstatus(); QCOMPARE(m_customsmbstatus.m_user,result); } void UtestSmbstatus::addShare_data() { QTest::addColumn("smbstatus_rq"); QTest::addColumn("result"); QTest::newRow("Samba version 2.2.8a") << status228a << (QStringList() << "8135" << "travail" << "Mon Aug 22 10:41:47 2005"); QTest::newRow("Samba version 3.0.2a") << status302a << (QStringList() << "3456" << "robert" << "Fri Sep 10 07:45:05 2004"); QTest::newRow("Samba version 3.0.4") << status304 << (QStringList() << "7793" << "hv05727" << "Thu May 27 18:10:11 2004"); QTest::newRow("Samba version 3.0.22") << status3022 << (QStringList() << "24158"<< "sys" << "Thu Apr 2 11:58:16 2009"); QTest::newRow("Samba version 3.0.23d") << status3023d << (QStringList() << "4528" << "users" << "Wed May 9 16:35:57 2007"); QTest::newRow("Samba version 3.0.30") << status3030 << (QStringList() << "32459" << "F" << "Fri Sep 12 08:38:55 2008"); } void UtestSmbstatus::addShare() { QFETCH(QString, smbstatus_rq); QFETCH(QStringList, result); smbstatus m_smbstatus(smbstatus_rq.split('\n')); connect (&m_smbstatus,SIGNAL(add_share(const QString &,const QString &,const QString &)),&m_customsmbstatus, SLOT(add_share(const QString &,const QString &,const QString &))); m_smbstatus.RQ_smbstatus(); QCOMPARE(m_customsmbstatus.m_share,result); } void UtestSmbstatus::addLockedfile_data() { QTest::addColumn("smbstatus_rq"); QTest::addColumn("result"); QTest::newRow("Samba version 2.2.8a") << status228a << (QStringList() << "8135" << "/home/serveur/LIGH.ppt" << "DENY_WRITE" << "RDONLY" << "EXCLUSIVE+BATCH" << "Mon Aug 22 10:45:39 2005"); QTest::newRow("Samba version 3.0.2a") << status302a << (QStringList() << "3456" << "/home/villou/projet_top.fde" << "DENY_NONE" << "RDONLY" << "NONE" << "Fri Sep 10 19:31:38 2004"); QTest::newRow("Samba version 3.0.4") << status304 << (QStringList() << "7793" << "/users/cycle1_1/2003/hv05727/SHDOCVW.DLL" << "DENY_WRITE" << "RDONLY" << "EXCLUSIVE+BATCH" << "Thu May 27 18:10:38 2004"); QTest::newRow("Samba version 3.0.22") << status3022 << (QStringList() << "24158"<< "/XXone user/bginfo" << "DENY_NONE" << "RDONLY" << "NONE" << "Fri Apr 3 08:46:03 2009"); QTest::newRow("Samba version 3.0.23d") << status3023d << (QStringList() << "4528" << "/home villou/Documents/kubuntu-7.04-desktop-i386.iso" << "DENY_NONE" << "WRONLY" << "NONE" << "Wed May 9 16:37:13 2007"); QTest::newRow("Samba version 3.0.30") << status3030 << (QStringList() << "32459" << "/F Fac/EMPRESA.DBF" << "DENY_NONE" << "RDWR" << "EXCLUSIVE+BATCH" << "Fri Sep 12 09:43:09 2008"); } void UtestSmbstatus::addLockedfile() { QFETCH(QString, smbstatus_rq); QFETCH(QStringList, result); smbstatus m_smbstatus(smbstatus_rq.split('\n')); connect (&m_smbstatus,SIGNAL(add_lockedfile(const QString &,const QString &,const QString &,const QString &,const QString &,const QString &)),&m_customsmbstatus, SLOT(add_lockedfile(const QString &,const QString &,const QString &,const QString &,const QString &,const QString &))); m_smbstatus.RQ_smbstatus(); QCOMPARE(m_customsmbstatus.m_lockedfile,result); } qtsmbstatus-2.2.1/utest/utest.pro0000644000175000017500000000106611720232510016542 0ustar villouvillou TEMPLATE = app CONFIG += release \ warn_on TARGET = utest MOC_DIR = ./build/moc OBJECTS_DIR = ./build DESTDIR = ./bin UI_DIR = ./build/ui RCC_DIR = ./build/rcc SOURCES += main.cpp \ utestlinecore.cpp \ utestsmbstatus.cpp \ customsmbstatus.cpp \ ../client/linecore.cpp \ ../client/smbstatus.cpp HEADERS += utestlinecore.h \ utestsmbstatus.h \ customsmbstatus.h \ ../client/linecore.h \ ../client/smbstatus.h QT += testlib QT-= gui qtsmbstatus-2.2.1/utest/utestlinecore.cpp0000644000175000017500000000634011720232510020245 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include #include "utestlinecore.h" void UtestLineCore::initTestCase() { col m_cols0= { "PID", "3456", 8}; col m_cols1= { "Username", "robert Gas", 14}; col m_cols2= { "Group", "etude 5519", 14}; col m_cols3= { "Machine", "etude1 (192.168.1.1)", 31}; cols << m_cols0 << m_cols1 << m_cols2 << m_cols3; QString header; for (int i = 0; i < cols.size(); ++i) header.append(QString("%1").arg(cols.at(i).name, - cols.at(i).fieldWidth)); // qDebug() << header; linecore.InitHeader(header); } void UtestLineCore::InitElement() { for (int i = 0; i < cols.size(); ++i) QCOMPARE(linecore.InitElement(cols.at(i).name),i); } void UtestLineCore::ReturnElement_data() { QTest::addColumn("aRow"); QTest::addColumn("col1"); QTest::addColumn("col2"); QTest::addColumn("col3"); QTest::addColumn("col4"); QString line; for (int j = -9; j <= 2 ; ++j) { // change fields size line.clear(); for (int i = 0; i < cols.size(); ++i) line.append(QString("%1").arg(cols.at(i).data, j - (cols.at(i).fieldWidth))); // qDebug() << line; QTest::newRow("test row") << line << cols.at(0).data << cols.at(1).data << cols.at(2).data << cols.at(3).data; } } void UtestLineCore::ReturnElement() { QFETCH(QString, aRow); QFETCH(QString, col1); QFETCH(QString, col2); QFETCH(QString, col3); QFETCH(QString, col4); linecore.Analysis(aRow); QCOMPARE(linecore.ReturnElement(0), col1); QCOMPARE(linecore.ReturnElement(1), col2); QCOMPARE(linecore.ReturnElement(2), col3); QCOMPARE(linecore.ReturnElement(3), col4); QCOMPARE(linecore.ReturnElement(cols.at(0).name), col1); QCOMPARE(linecore.ReturnElement(cols.at(1).name), col2); QCOMPARE(linecore.ReturnElement(cols.at(2).name), col3); QCOMPARE(linecore.ReturnElement(cols.at(3).name), col4); } qtsmbstatus-2.2.1/utest/main.cpp0000644000175000017500000000333011720232510016300 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include #include "utestlinecore.h" #include "utestsmbstatus.h" void debugQt (const QString & ) { } int main(int , char *) { UtestLineCore testLineCore; QTest::qExec(&testLineCore); UtestSmbstatus testSmbstatus; QTest::qExec(&testSmbstatus); } qtsmbstatus-2.2.1/utest/utestlinecore.h0000644000175000017500000000371311720232510017713 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #ifndef UTESTLINECORE_H #define UTESTLINECORE_H #include #include #include #include "../client/linecore.h" class UtestLineCore: public QObject { Q_OBJECT private slots: void initTestCase(); void InitElement(); void ReturnElement_data(); void ReturnElement(); private: LineCore linecore; struct col { QString name; QString data; //! fieldWidth value specifies the minimum amount of space that a is padded to and filled with spaces qint32 fieldWidth; }; QList cols; }; #endif qtsmbstatus-2.2.1/utest/customsmbstatus.cpp0000644000175000017500000000464211720232510020643 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include #include "customsmbstatus.h" void CustomSmbstatus::clear() { m_version_samba=""; m_user.clear(); m_share.clear(); m_lockedfile.clear(); } void CustomSmbstatus::setSambaVersion (const QString & version_samba) { m_version_samba=version_samba; } void CustomSmbstatus::add_user (const QString & strPid,const QString & strUser,const QString & strGroup,const QString & strMachineName,const QString & strMachineIP) { if (m_user.isEmpty () || strUser!="nobody") m_user << strPid << strUser << strGroup << strMachineName << strMachineIP; } void CustomSmbstatus::add_share(const QString & strPid ,const QString & strShare,const QString & strConnected) { m_share << strPid << strShare << strConnected; } void CustomSmbstatus::add_lockedfile(const QString & strPid,const QString & strName,const QString & strMode,const QString & strRW,const QString & strOplock,const QString & strDateOpen) { m_lockedfile << strPid << strName << strMode << strRW << strOplock << strDateOpen; } qtsmbstatus-2.2.1/utest/utestsmbstatus.h0000644000175000017500000000353111720232510020136 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #ifndef UTESTSMBSTATUS_H #define UTESTSMBSTATUS_H #include #include "customsmbstatus.h" class UtestSmbstatus: public QObject { Q_OBJECT private slots: void cleanup(); void SambaVersion_data(); void SambaVersion(); void addUser_data(); void addUser(); void addShare_data(); void addShare(); void addLockedfile_data(); void addLockedfile(); private: CustomSmbstatus m_customsmbstatus; }; #endif qtsmbstatus-2.2.1/INSTALL0000644000175000017500000000474511720232510014550 0ustar villouvillouQtSmbstatus : ============= qtsmbstatus-light and qtsmbstatus-client requires Qt>=4.3 qtsmbstatus-server requires Qt>=4.3 and pam you must install it before. You need Qt (from Trolltech) at least version 4.3 to be able to compile QtSmbstatus. Most Linux distributions normally already package the latest version of Qt. However, you need the development package as well (sometimes named as qt-devel or qt4-devel, it varies depends on the distributions). Required to compile qtsmbstatus-light: qt4-dev>=4.3 Required to compile qtsmbstatus-client: qt4-dev>=4.3 Required to compile qtsmbstatus-server: qt4-dev>=4.3 and pam-dev (or libpam-dev) The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type 'qmake' (or qmake-qt4) to create Makefile 2. Type `make' to compile the package. 3. Type `make install' (root) to install the programs and any data files and documentation. 4. You can remove the program binaries and object files from the source code directory by typing `make clean'. 5. You can uninstall programs by typing 'make uninstall' (as root). Qt description : ================ Qt by Trolltech is the standard framework for developing high-performance cross-platform applications. Qt provides single-source portability across Microsoft Windows, Mac OS X, Linux, all major commercial Unix variants, and embedded Linux. On embedded Linux, the Qt API is available as Qtopia Core. Qt provides application developers with all the functionality needed to build complex, high-performance GUI and console applications. Qt is fully object-oriented, easily extensible, and allows true component programming. Read the Whitepaper for a comprehensive technical overview. Since its commercial introduction in early 1996, Qt has formed the basis of many thousands of successful applications worldwide, including Google Earth, Adobe Photoshop Elements, and Skype. Qt is also the basis of the popular KDE Linux desktop environment, a standard component of all major Linux distributions. See our Customer Success Stories for some examples of commercial Qt development. Qt is supported on the following platforms: - Microsoft Windows -- 98, NT 4.0, ME, 2000, and XP - Unix/X11 -- Linux, Sun Solaris, HP-UX, HP Tru64 UNIX, IBM AIX, SGI IRIX and many others - Mac OS X -- Mac OS X 10.3+ - Embedded Linux -- Linux platforms with framebuffer support See Trolltech's web site for the complete list of supported platform and compilers. qtsmbstatus-2.2.1/packages/0000755000175000017500000000000011720232513015266 5ustar villouvillouqtsmbstatus-2.2.1/packages/rpm/0000755000175000017500000000000011720232513016064 5ustar villouvillouqtsmbstatus-2.2.1/packages/rpm/fedora/0000755000175000017500000000000011720232513017324 5ustar villouvillouqtsmbstatus-2.2.1/packages/rpm/fedora/qtsmbstatus-2.1.1-init.patch0000644000175000017500000001004411720232513024334 0ustar villouvilloudiff -up qtsmbstatus-2.1.1/server/etc/qtsmbstatusd.init qtsmbstatus-2.1.1/server/etc/qtsmbstatusd --- qtsmbstatus-2.1.1/server/etc/qtsmbstatusd.init 2009-04-12 14:46:48.000000000 +0200 +++ qtsmbstatus-2.1.1/server/etc/qtsmbstatusd 2009-04-12 17:51:37.000000000 +0200 @@ -1,8 +1,11 @@ #!/bin/sh -# script for qtsmbstatusd # +# qtsmbstatusd +# +# chkconfig: 35 99 20 +# description: qtsmbstatusd server (QtSmbstatus is a graphical user \ +# interface for smbstatus) -# For LSB ### BEGIN INIT INFO # Provides: qtsmbstatusd # Required-Start: $samba @@ -13,69 +16,99 @@ # Description: QtSmbstatus is a graphical user interface for smbstatus ### END INIT INFO -# For Mandrake/Mandriva/Fedora: -# chkconfig: 35 99 20 -# description: qtsmbstatusd server (QtSmbstatus is a graphical user interface for smbstatus) +# Source function library. +. /etc/rc.d/init.d/functions + +exec="/usr/bin/qtsmbstatusd" +prog="qtsmbstatusd" +config="/etc/qtsmbstatusd/qtsmbstatusd.conf" -PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:$PATH -NAME=qtsmbstatusd +[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog -# see if qtsmbstatusd is running -pid=`ps ax | awk '{print $1,$5}' | grep $NAME | awk '{print $1}' | awk '{print $1}'` +lockfile=/var/lock/subsys/$prog # get locale default_locale=en_US.UTF-8 -if [ -f /etc/default/locale ]; then - # Debian systems - system_locale=`grep -re "LANG=" /etc/default/locale | awk 'BEGIN { FS = "[\"]" } { print $2 }'` -elif [ -f /etc/sysconfig/language ]; then - # SuSE systems - system_locale=`grep -re "LANG=" /etc/sysconfig/language | awk 'BEGIN { FS = "[\"]" } { print $2 }'` -elif [ -f /etc/sysconfig/i18n ]; then +if [ -f /etc/sysconfig/i18n ]; then # RedHat/mandriva systems system_locale=`grep -re "LANG=" /etc/sysconfig/i18n | awk 'BEGIN { FS = "[\"]" } { print $2 }'` -elif [ -f /etc/profile ]; then - #default - system_locale=`grep -re "LANG=" /etc/profile | awk 'BEGIN { FS = "[\"]" } { print $2 }'` fi if [ -z $system_locale ]; then system_locale=$default_locale; fi -# Start or stop the qtsmbstatusd server -case $1 in - start | restart | reload | force-reload) - export LANG=$system_locale - if test "$pid" != ""; then - kill $pid - if qtsmbstatusd -d; then - echo "qtsmbstatusd server restarted." - fi - else - if qtsmbstatusd -d; then - echo "qtsmbstatusd server started." - fi - fi - ;; - stop) - if test "$pid" != ""; then - kill -3 $pid - fi - echo "qtsmbstatusd server stopped" - ;; - - status) - if test "$pid" != ""; then - echo "qtsmbstatusd : server is running." - else - echo "qtsmbstatusd : server is not running." - fi - ;; - - *) - echo "Usage: qtsmbstatusd {start|stop|reload|restart|status|force-reload}" - exit 1 - ;; -esac - -exit 0 +start() { + [ -x $exec ] || exit 5 + [ -f $config ] || exit 6 + export LANG=$system_locale + echo -n $"Starting $prog: " + $exec -d + retval=$? + echo + [ $retval -eq 0 ] && touch $lockfile + return $retval +} + +stop() { + echo -n $"Stopping $prog: " + killproc $prog + retval=$? + echo + [ $retval -eq 0 ] && rm -f $lockfile + return $retval +} + +restart() { + stop + start +} + +reload() { + restart +} + +force_reload() { + restart +} + +rh_status() { + # run checks to determine if the service is running or use generic status + status $prog +} + +rh_status_q() { + rh_status >/dev/null 2>&1 +} + + +case "$1" in + start) + rh_status_q && exit 0 + $1 + ;; + stop) + rh_status_q || exit 0 + $1 + ;; + restart) + $1 + ;; + reload) + rh_status_q || exit 7 + $1 + ;; + force-reload) + force_reload + ;; + status) + rh_status + ;; + condrestart|try-restart) + rh_status_q || exit 0 + restart + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}" + exit 2 +esac +exit $? qtsmbstatus-2.2.1/packages/rpm/fedora/qtsmbstatus-2.0.5-init.patch0000644000175000017500000000630711720232513024346 0ustar villouvilloudiff -up qtsmbstatus-2.0.5/server/etc/qtsmbstatusd.init qtsmbstatus-2.0.5/server/etc/qtsmbstatusd --- qtsmbstatus-2.0.5/server/etc/qtsmbstatusd.init 2008-08-28 17:41:46.000000000 +0200 +++ qtsmbstatus-2.0.5/server/etc/qtsmbstatusd 2008-09-04 22:55:13.000000000 +0200 @@ -1,8 +1,11 @@ #!/bin/sh -# script for qtsmbstatusd # +# qtsmbstatusd +# +# chkconfig: 35 99 20 +# description: qtsmbstatusd server (QtSmbstatus is a graphical user \ +# interface for smbstatus) -# For LSB ### BEGIN INIT INFO # Provides: qtsmbstatusd # Required-Start: $samba @@ -13,49 +16,88 @@ # Description: QtSmbstatus is a graphical user interface for smbstatus ### END INIT INFO -# For Mandrake/Mandriva/Fedora: -# chkconfig: 35 99 20 -# description: qtsmbstatusd server (QtSmbstatus is a graphical user interface for smbstatus) - - -NAME=qtsmbstatusd - -# see if qtsmbstatusd is running -pid=`ps ax | awk '{print $1,$5}' | grep $NAME | awk '{print $1}' | awk '{print $1}'` - -# Start or stop the qtsmbstatusd server -case $1 in - start | restart | reload | force-reload) - if test "$pid" != ""; then - kill $pid - if /usr/bin/qtsmbstatusd -d; then - echo "qtsmbstatusd server restarted." - fi - else - if /usr/bin/qtsmbstatusd -d; then - echo "qtsmbstatusd server started." - fi - fi - ;; - stop) - if test "$pid" != ""; then - kill -3 $pid - fi - echo "qtsmbstatusd server stopped" - ;; - - status) - if test "$pid" != ""; then - echo "qtsmbstatusd : server is running." - else - echo "qtsmbstatusd : server is not running." - fi - ;; - - *) - echo "Usage: qtsmbstatusd {start|stop|reload|restart|status|force-reload}" - exit 1 - ;; -esac +# Source function library. +. /etc/rc.d/init.d/functions -exit 0 +exec="/usr/bin/qtsmbstatusd" +prog="qtsmbstatusd" +config="/etc/qtsmbstatusd/qtsmbstatusd.conf" + +[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog + +lockfile=/var/lock/subsys/$prog + +start() { + [ -x $exec ] || exit 5 + [ -f $config ] || exit 6 + echo -n $"Starting $prog: " + $exec -d + retval=$? + echo + [ $retval -eq 0 ] && touch $lockfile + return $retval +} + +stop() { + echo -n $"Stopping $prog: " + killproc $prog + retval=$? + echo + [ $retval -eq 0 ] && rm -f $lockfile + return $retval +} + +restart() { + stop + start +} + +reload() { + restart +} + +force_reload() { + restart +} + +rh_status() { + # run checks to determine if the service is running or use generic status + status $prog +} + +rh_status_q() { + rh_status >/dev/null 2>&1 +} + + +case "$1" in + start) + rh_status_q && exit 0 + $1 + ;; + stop) + rh_status_q || exit 0 + $1 + ;; + restart) + $1 + ;; + reload) + rh_status_q || exit 7 + $1 + ;; + force-reload) + force_reload + ;; + status) + rh_status + ;; + condrestart|try-restart) + rh_status_q || exit 0 + restart + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}" + exit 2 +esac +exit $? qtsmbstatus-2.2.1/packages/rpm/fedora/qtsmbstatus-2.2.0-init.patch0000644000175000017500000001005011720232513024331 0ustar villouvilloudiff -up qtsmbstatus-2.2.0/server/etc/qtsmbstatusd.init qtsmbstatus-2.2.0/server/etc/qtsmbstatusd --- qtsmbstatus-2.2.0/server/etc/qtsmbstatusd.init 2011-06-28 19:58:33.000000000 +0200 +++ qtsmbstatus-2.2.0/server/etc/qtsmbstatusd 2011-06-28 20:55:16.000000000 +0200 @@ -1,8 +1,11 @@ #!/bin/sh -# script for qtsmbstatusd # +# qtsmbstatusd +# +# chkconfig: 2345 99 20 +# description: qtsmbstatusd server (QtSmbstatus is a graphical user \ +# interface for smbstatus) -# For LSB ### BEGIN INIT INFO # Provides: qtsmbstatusd # Required-Start: $samba @@ -13,69 +16,99 @@ # Description: QtSmbstatus is a graphical user interface for smbstatus ### END INIT INFO -# For Mandrake/Mandriva/Fedora: -# chkconfig: 2345 99 20 -# description: qtsmbstatusd server (QtSmbstatus is a graphical user interface for smbstatus) +# Source function library. +. /etc/rc.d/init.d/functions + +exec="/usr/bin/qtsmbstatusd" +prog="qtsmbstatusd" +config="/etc/qtsmbstatusd/qtsmbstatusd.conf" -PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:$PATH -NAME=qtsmbstatusd +[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog -# see if qtsmbstatusd is running -pid=`ps ax | awk '{print $1,$5}' | grep $NAME | awk '{print $1}' | awk '{print $1}'` +lockfile=/var/lock/subsys/$prog # get locale default_locale=en_US.UTF-8 -if [ -f /etc/default/locale ]; then - # Debian systems - system_locale=`grep -re "LANG=" /etc/default/locale | awk 'BEGIN { FS = "[\"]" } { print $2 }'` -elif [ -f /etc/sysconfig/language ]; then - # SuSE systems - system_locale=`grep -re "LANG=" /etc/sysconfig/language | awk 'BEGIN { FS = "[\"]" } { print $2 }'` -elif [ -f /etc/sysconfig/i18n ]; then +if [ -f /etc/sysconfig/i18n ]; then # RedHat/mandriva systems system_locale=`grep -re "LANG=" /etc/sysconfig/i18n | awk 'BEGIN { FS = "[\"]" } { print $2 }'` -elif [ -f /etc/profile ]; then - #default - system_locale=`grep -re "LANG=" /etc/profile | awk 'BEGIN { FS = "[\"]" } { print $2 }'` fi if [ -z $system_locale ]; then system_locale=$default_locale; fi -# Start or stop the qtsmbstatusd server -case $1 in - start | restart | reload | force-reload) - export LANG=$system_locale - if test "$pid" != ""; then - kill $pid - if qtsmbstatusd -d; then - echo "qtsmbstatusd server restarted." - fi - else - if qtsmbstatusd -d; then - echo "qtsmbstatusd server started." - fi - fi - ;; - stop) - if test "$pid" != ""; then - kill -3 $pid - fi - echo "qtsmbstatusd server stopped" - ;; - - status) - if test "$pid" != ""; then - echo "qtsmbstatusd : server is running." - else - echo "qtsmbstatusd : server is not running." - fi - ;; - - *) - echo "Usage: qtsmbstatusd {start|stop|reload|restart|status|force-reload}" - exit 1 - ;; -esac - -exit 0 +start() { + [ -x $exec ] || exit 5 + [ -f $config ] || exit 6 + export LANG=$system_locale + echo -n $"Starting $prog: " + $exec -d + retval=$? + echo + [ $retval -eq 0 ] && touch $lockfile + return $retval +} + +stop() { + echo -n $"Stopping $prog: " + killproc $prog + retval=$? + echo + [ $retval -eq 0 ] && rm -f $lockfile + return $retval +} + +restart() { + stop + start +} + +reload() { + restart +} + +force_reload() { + restart +} + +rh_status() { + # run checks to determine if the service is running or use generic status + status $prog +} + +rh_status_q() { + rh_status >/dev/null 2>&1 +} + + +case "$1" in + start) + rh_status_q && exit 0 + $1 + ;; + stop) + rh_status_q || exit 0 + $1 + ;; + restart) + $1 + ;; + reload) + rh_status_q || exit 7 + $1 + ;; + force-reload) + force_reload + ;; + status) + rh_status + ;; + condrestart|try-restart) + rh_status_q || exit 0 + restart + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}" + exit 2 +esac +exit $? qtsmbstatus-2.2.1/packages/rpm/fedora/qtsmbstatus.spec0000755000175000017500000001433411720232513022602 0ustar villouvillou# SPECS - create RPM # by Daniel Rocher # Thanks: # Mike A. Harris # Stephane URBANOVSKI # Johan Cwiklinski Summary: A GUI for smbstatus with Qt Name: qtsmbstatus Group: Applications/System Version: 2.2.0 Release: 1%{?dist} License: GPLv2 Vendor: ADELLA Packager: Daniel Rocher URL: http://qtsmbstatus.free.fr Source0: http://qtsmbstatus.free.fr/files/qtsmbstatus-%{version}.tar.gz Patch0: %{name}-%{version}-init.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: libstdc++-devel gcc-c++ BuildRequires: qt4-devel >= 4.3 desktop-file-utils BuildRequires: pam-devel %description QtSmbstatus is a smbstatus graphical interface (GUI). It is meant to provide the possibility of administering remote machines. QtSmbstatus was designed as a client/server system secured with SSL. %package language Group: Applications/System Summary: QtSmbstatus languages package Conflicts: qtsmbstatus-client < 2.1 %description language This package will install additional languages for qtsmbstatus-client and qtsmbstatus-light. %package light Group: Applications/System Summary: A GUI for smbstatus with Qt Requires: qtsmbstatus-language qt4-x11 >= 4.3 %description light QtSmbstatus is a smbstatus graphical interface (GUI). Qtsmbstatus Light works only locally and doesn't require qtsmbstatus-server. %package client Group: Applications/System Summary: A GUI for smbstatus with Qt (client) Requires: qtsmbstatus-language qt4-x11 >= 4.3 %description client QtSmbstatus is a smbstatus graphical interface (GUI). It is meant to provide the possibility of administering remote machines. QtSmbstatus was designed as a client/server system secured with SSL. A login and password is required to log on to server. %package server Group: Applications/System Summary: A GUI for smbstatus with Qt (server) Requires: pam samba samba-client Requires: qt4 >= 4.3 %description server QtSmbstatus is a smbstatus graphical interface (GUI). It is meant to provide the possibility of administering remote machines. QtSmbstatus was designed as a client/server system secured with SSL. A login and password is required to log on to server. The server's application ought to be installed on host where SAMBA executes. %prep %setup -q -n %{name}-%{version} %patch0 -p1 -b .init %build # create Makefile qmake-qt4 # Internationalization lrelease-qt4 client/tr/*.ts # build make %install rm -rf $RPM_BUILD_ROOT mkdir -p $RPM_BUILD_ROOT/%{_bindir} mkdir -p $RPM_BUILD_ROOT/%{_datadir}/qtsmbstatus mkdir -p $RPM_BUILD_ROOT/%{_datadir}/pixmaps mkdir -p $RPM_BUILD_ROOT/%{_datadir}/applications mkdir -p $RPM_BUILD_ROOT/%{_mandir}/man7 mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/pam.d mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/qtsmbstatusd mkdir -p $RPM_BUILD_ROOT/%{_initrddir} # bin cp -a client/bin/qtsmbstatus $RPM_BUILD_ROOT/%{_bindir} cp -a server/bin/qtsmbstatusd $RPM_BUILD_ROOT/%{_bindir} cp -a light/bin/qtsmbstatusl $RPM_BUILD_ROOT/%{_bindir} # server cp -a server/pam.d/qtsmbstatusd $RPM_BUILD_ROOT/%{_sysconfdir}/pam.d/ cp -a server/etc/qtsmbstatusd $RPM_BUILD_ROOT/%{_initrddir} cp -a server/etc/privkey.pem server/etc/qtsmbstatusd.conf \ server/etc/server.pem server/etc/qtsmbstatusd.users \ $RPM_BUILD_ROOT/%{_sysconfdir}/qtsmbstatusd/ # translations cp -a client/tr/*.qm $RPM_BUILD_ROOT/%{_datadir}/qtsmbstatus/ #icons cp -a client/qtsmbstatus.xpm $RPM_BUILD_ROOT/%{_datadir}/pixmaps/ cp -a light/qtsmbstatusl.xpm $RPM_BUILD_ROOT/%{_datadir}/pixmaps/ #menu desktop-file-install --vendor="" \ --dir=$RPM_BUILD_ROOT/%{_datadir}/applications client/qtsmbstatus.desktop desktop-file-install --vendor="" \ --dir=$RPM_BUILD_ROOT/%{_datadir}/applications light/qtsmbstatusl.desktop #manpage cp -a client/qtsmbstatus.7.gz $RPM_BUILD_ROOT/%{_mandir}/man7/ cp -a server/qtsmbstatusd.7.gz $RPM_BUILD_ROOT/%{_mandir}/man7/ cp -a light/qtsmbstatusl.7.gz $RPM_BUILD_ROOT/%{_mandir}/man7/ %clean rm -rf $RPM_BUILD_ROOT %post server # postinstall: service chkconfig --add qtsmbstatusd %{_initrddir}/qtsmbstatusd start %preun server # If uninstall if [ $1 = 0 ]; then # stop qtsmbstatus server and remove service %{_initrddir}/qtsmbstatusd stop # service chkconfig --del qtsmbstatusd 2>/dev/null fi %files language %defattr(755,root,root) %dir %{_datadir}/qtsmbstatus %defattr(644,root,root) %{_datadir}/qtsmbstatus/*.qm %attr(-,root,root) %doc README README-* INSTALL COPYING changelog %files light %defattr(755,root,root) %{_bindir}/qtsmbstatusl %defattr(644,root,root) %attr(-,root,root) %doc README README-* INSTALL COPYING changelog %{_datadir}/pixmaps/qtsmbstatusl.xpm %{_datadir}/applications/qtsmbstatusl.desktop %{_mandir}/man7/qtsmbstatusl.7.gz %files client %defattr(755,root,root) %{_bindir}/qtsmbstatus %defattr(644,root,root) %attr(-,root,root) %doc README README-* INSTALL COPYING changelog %{_datadir}/pixmaps/qtsmbstatus.xpm %{_datadir}/applications/qtsmbstatus.desktop %{_mandir}/man7/qtsmbstatus.7.gz %files server %defattr(755,root,root) %{_bindir}/qtsmbstatusd %{_initrddir}/qtsmbstatusd %dir %{_sysconfdir}/qtsmbstatusd/ %defattr(644,root,root) %config(noreplace) %{_sysconfdir}/pam.d/* %attr(640,root,root) %config(noreplace) %{_sysconfdir}/qtsmbstatusd/* %attr(-,root,root) %doc README README-* INSTALL COPYING changelog %{_mandir}/man7/qtsmbstatusd.7.gz %changelog * Tue Jun 28 2011 Daniel Rocher 2.2.0-1 - New upstream version * Thu Apr 22 2010 Daniel Rocher 2.1.3-1 - New upstream version * Sun Jun 21 2009 Daniel Rocher 2.1.2-1 - New upstream version * Sun Apr 12 2009 Daniel Rocher 2.1.1-1 - New upstream version * Wed Nov 19 2008 Daniel Rocher 2.1-1 - New upstream version * Sun Aug 31 2008 Daniel Rocher 2.0.5-1 - Initial release qtsmbstatus-2.2.1/packages/rpm/fedora/qtsmbstatus-2.1.3-init.patch0000644000175000017500000001005011720232513024333 0ustar villouvilloudiff -up qtsmbstatus-2.1.3/server/etc/qtsmbstatusd.init qtsmbstatus-2.1.3/server/etc/qtsmbstatusd --- qtsmbstatus-2.1.3/server/etc/qtsmbstatusd.init 2009-04-12 14:46:48.000000000 +0200 +++ qtsmbstatus-2.1.3/server/etc/qtsmbstatusd 2009-04-12 17:51:37.000000000 +0200 @@ -1,8 +1,11 @@ #!/bin/sh -# script for qtsmbstatusd # +# qtsmbstatusd +# +# chkconfig: 2345 99 20 +# description: qtsmbstatusd server (QtSmbstatus is a graphical user \ +# interface for smbstatus) -# For LSB ### BEGIN INIT INFO # Provides: qtsmbstatusd # Required-Start: $samba @@ -13,69 +16,99 @@ # Description: QtSmbstatus is a graphical user interface for smbstatus ### END INIT INFO -# For Mandrake/Mandriva/Fedora: -# chkconfig: 2345 99 20 -# description: qtsmbstatusd server (QtSmbstatus is a graphical user interface for smbstatus) +# Source function library. +. /etc/rc.d/init.d/functions + +exec="/usr/bin/qtsmbstatusd" +prog="qtsmbstatusd" +config="/etc/qtsmbstatusd/qtsmbstatusd.conf" -PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:$PATH -NAME=qtsmbstatusd +[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog -# see if qtsmbstatusd is running -pid=`ps ax | awk '{print $1,$5}' | grep $NAME | awk '{print $1}' | awk '{print $1}'` +lockfile=/var/lock/subsys/$prog # get locale default_locale=en_US.UTF-8 -if [ -f /etc/default/locale ]; then - # Debian systems - system_locale=`grep -re "LANG=" /etc/default/locale | awk 'BEGIN { FS = "[\"]" } { print $2 }'` -elif [ -f /etc/sysconfig/language ]; then - # SuSE systems - system_locale=`grep -re "LANG=" /etc/sysconfig/language | awk 'BEGIN { FS = "[\"]" } { print $2 }'` -elif [ -f /etc/sysconfig/i18n ]; then +if [ -f /etc/sysconfig/i18n ]; then # RedHat/mandriva systems system_locale=`grep -re "LANG=" /etc/sysconfig/i18n | awk 'BEGIN { FS = "[\"]" } { print $2 }'` -elif [ -f /etc/profile ]; then - #default - system_locale=`grep -re "LANG=" /etc/profile | awk 'BEGIN { FS = "[\"]" } { print $2 }'` fi if [ -z $system_locale ]; then system_locale=$default_locale; fi -# Start or stop the qtsmbstatusd server -case $1 in - start | restart | reload | force-reload) - export LANG=$system_locale - if test "$pid" != ""; then - kill $pid - if qtsmbstatusd -d; then - echo "qtsmbstatusd server restarted." - fi - else - if qtsmbstatusd -d; then - echo "qtsmbstatusd server started." - fi - fi - ;; - stop) - if test "$pid" != ""; then - kill -3 $pid - fi - echo "qtsmbstatusd server stopped" - ;; - - status) - if test "$pid" != ""; then - echo "qtsmbstatusd : server is running." - else - echo "qtsmbstatusd : server is not running." - fi - ;; - - *) - echo "Usage: qtsmbstatusd {start|stop|reload|restart|status|force-reload}" - exit 1 - ;; -esac - -exit 0 +start() { + [ -x $exec ] || exit 5 + [ -f $config ] || exit 6 + export LANG=$system_locale + echo -n $"Starting $prog: " + $exec -d + retval=$? + echo + [ $retval -eq 0 ] && touch $lockfile + return $retval +} + +stop() { + echo -n $"Stopping $prog: " + killproc $prog + retval=$? + echo + [ $retval -eq 0 ] && rm -f $lockfile + return $retval +} + +restart() { + stop + start +} + +reload() { + restart +} + +force_reload() { + restart +} + +rh_status() { + # run checks to determine if the service is running or use generic status + status $prog +} + +rh_status_q() { + rh_status >/dev/null 2>&1 +} + + +case "$1" in + start) + rh_status_q && exit 0 + $1 + ;; + stop) + rh_status_q || exit 0 + $1 + ;; + restart) + $1 + ;; + reload) + rh_status_q || exit 7 + $1 + ;; + force-reload) + force_reload + ;; + status) + rh_status + ;; + condrestart|try-restart) + rh_status_q || exit 0 + restart + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}" + exit 2 +esac +exit $? qtsmbstatus-2.2.1/packages/rpm/fedora/qtsmbstatus-2.1-init.patch0000644000175000017500000000774511720232513024213 0ustar villouvilloudiff -up qtsmbstatus-2.1/server/etc/qtsmbstatusd.init qtsmbstatus-2.1/server/etc/qtsmbstatusd --- qtsmbstatus-2.1/server/etc/qtsmbstatusd.init 2008-11-19 15:34:11.000000000 +0100 +++ qtsmbstatus-2.1/server/etc/qtsmbstatusd 2008-11-19 16:26:39.000000000 +0100 @@ -1,8 +1,11 @@ #!/bin/sh -# script for qtsmbstatusd # +# qtsmbstatusd +# +# chkconfig: 35 99 20 +# description: qtsmbstatusd server (QtSmbstatus is a graphical user \ +# interface for smbstatus) -# For LSB ### BEGIN INIT INFO # Provides: qtsmbstatusd # Required-Start: $samba @@ -13,69 +16,99 @@ # Description: QtSmbstatus is a graphical user interface for smbstatus ### END INIT INFO -# For Mandrake/Mandriva/Fedora: -# chkconfig: 35 99 20 -# description: qtsmbstatusd server (QtSmbstatus is a graphical user interface for smbstatus) +# Source function library. +. /etc/rc.d/init.d/functions +exec="/usr/bin/qtsmbstatusd" +prog="qtsmbstatusd" +config="/etc/qtsmbstatusd/qtsmbstatusd.conf" -NAME=qtsmbstatusd +[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog -# see if qtsmbstatusd is running -pid=`ps ax | awk '{print $1,$5}' | grep $NAME | awk '{print $1}' | awk '{print $1}'` +lockfile=/var/lock/subsys/$prog # get locale default_locale=en_US.UTF-8 -if [ -f /etc/default/locale ]; then - # Debian systems - system_locale=`grep -re "LANG=" /etc/default/locale | awk 'BEGIN { FS = "[\"]" } { print $2 }'` -elif [ -f /etc/sysconfig/language ]; then - # SuSE systems - system_locale=`grep -re "LANG=" /etc/sysconfig/language | awk 'BEGIN { FS = "[\"]" } { print $2 }'` -elif [ -f /etc/sysconfig/i18n ]; then +if [ -f /etc/sysconfig/i18n ]; then # RedHat/mandriva systems system_locale=`grep -re "LANG=" /etc/sysconfig/i18n | awk 'BEGIN { FS = "[\"]" } { print $2 }'` -elif [ -f /etc/profile ]; then - #default - system_locale=`grep -re "LANG=" /etc/profile | awk 'BEGIN { FS = "[\"]" } { print $2 }'` fi if [ -z $system_locale ]; then system_locale=$default_locale; fi -# Start or stop the qtsmbstatusd server -case $1 in - start | restart | reload | force-reload) - export LANG=$system_locale - if test "$pid" != ""; then - kill $pid - if /usr/bin/qtsmbstatusd -d; then - echo "qtsmbstatusd server restarted." - fi - else - if /usr/bin/qtsmbstatusd -d; then - echo "qtsmbstatusd server started." - fi - fi - ;; - stop) - if test "$pid" != ""; then - kill -3 $pid - fi - echo "qtsmbstatusd server stopped" - ;; - - status) - if test "$pid" != ""; then - echo "qtsmbstatusd : server is running." - else - echo "qtsmbstatusd : server is not running." - fi - ;; - - *) - echo "Usage: qtsmbstatusd {start|stop|reload|restart|status|force-reload}" - exit 1 - ;; -esac - -exit 0 +start() { + [ -x $exec ] || exit 5 + [ -f $config ] || exit 6 + export LANG=$system_locale + echo -n $"Starting $prog: " + $exec -d + retval=$? + echo + [ $retval -eq 0 ] && touch $lockfile + return $retval +} + +stop() { + echo -n $"Stopping $prog: " + killproc $prog + retval=$? + echo + [ $retval -eq 0 ] && rm -f $lockfile + return $retval +} + +restart() { + stop + start +} + +reload() { + restart +} + +force_reload() { + restart +} + +rh_status() { + # run checks to determine if the service is running or use generic status + status $prog +} + +rh_status_q() { + rh_status >/dev/null 2>&1 +} + + +case "$1" in + start) + rh_status_q && exit 0 + $1 + ;; + stop) + rh_status_q || exit 0 + $1 + ;; + restart) + $1 + ;; + reload) + rh_status_q || exit 7 + $1 + ;; + force-reload) + force_reload + ;; + status) + rh_status + ;; + condrestart|try-restart) + rh_status_q || exit 0 + restart + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}" + exit 2 +esac +exit $? qtsmbstatus-2.2.1/packages/rpm/fedora/qtsmbstatus-2.1.2-init.patch0000644000175000017500000001004411720232513024335 0ustar villouvilloudiff -up qtsmbstatus-2.1.2/server/etc/qtsmbstatusd.init qtsmbstatus-2.1.2/server/etc/qtsmbstatusd --- qtsmbstatus-2.1.2/server/etc/qtsmbstatusd.init 2009-04-12 14:46:48.000000000 +0200 +++ qtsmbstatus-2.1.2/server/etc/qtsmbstatusd 2009-04-12 17:51:37.000000000 +0200 @@ -1,8 +1,11 @@ #!/bin/sh -# script for qtsmbstatusd # +# qtsmbstatusd +# +# chkconfig: 35 99 20 +# description: qtsmbstatusd server (QtSmbstatus is a graphical user \ +# interface for smbstatus) -# For LSB ### BEGIN INIT INFO # Provides: qtsmbstatusd # Required-Start: $samba @@ -13,69 +16,99 @@ # Description: QtSmbstatus is a graphical user interface for smbstatus ### END INIT INFO -# For Mandrake/Mandriva/Fedora: -# chkconfig: 35 99 20 -# description: qtsmbstatusd server (QtSmbstatus is a graphical user interface for smbstatus) +# Source function library. +. /etc/rc.d/init.d/functions + +exec="/usr/bin/qtsmbstatusd" +prog="qtsmbstatusd" +config="/etc/qtsmbstatusd/qtsmbstatusd.conf" -PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:$PATH -NAME=qtsmbstatusd +[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog -# see if qtsmbstatusd is running -pid=`ps ax | awk '{print $1,$5}' | grep $NAME | awk '{print $1}' | awk '{print $1}'` +lockfile=/var/lock/subsys/$prog # get locale default_locale=en_US.UTF-8 -if [ -f /etc/default/locale ]; then - # Debian systems - system_locale=`grep -re "LANG=" /etc/default/locale | awk 'BEGIN { FS = "[\"]" } { print $2 }'` -elif [ -f /etc/sysconfig/language ]; then - # SuSE systems - system_locale=`grep -re "LANG=" /etc/sysconfig/language | awk 'BEGIN { FS = "[\"]" } { print $2 }'` -elif [ -f /etc/sysconfig/i18n ]; then +if [ -f /etc/sysconfig/i18n ]; then # RedHat/mandriva systems system_locale=`grep -re "LANG=" /etc/sysconfig/i18n | awk 'BEGIN { FS = "[\"]" } { print $2 }'` -elif [ -f /etc/profile ]; then - #default - system_locale=`grep -re "LANG=" /etc/profile | awk 'BEGIN { FS = "[\"]" } { print $2 }'` fi if [ -z $system_locale ]; then system_locale=$default_locale; fi -# Start or stop the qtsmbstatusd server -case $1 in - start | restart | reload | force-reload) - export LANG=$system_locale - if test "$pid" != ""; then - kill $pid - if qtsmbstatusd -d; then - echo "qtsmbstatusd server restarted." - fi - else - if qtsmbstatusd -d; then - echo "qtsmbstatusd server started." - fi - fi - ;; - stop) - if test "$pid" != ""; then - kill -3 $pid - fi - echo "qtsmbstatusd server stopped" - ;; - - status) - if test "$pid" != ""; then - echo "qtsmbstatusd : server is running." - else - echo "qtsmbstatusd : server is not running." - fi - ;; - - *) - echo "Usage: qtsmbstatusd {start|stop|reload|restart|status|force-reload}" - exit 1 - ;; -esac - -exit 0 +start() { + [ -x $exec ] || exit 5 + [ -f $config ] || exit 6 + export LANG=$system_locale + echo -n $"Starting $prog: " + $exec -d + retval=$? + echo + [ $retval -eq 0 ] && touch $lockfile + return $retval +} + +stop() { + echo -n $"Stopping $prog: " + killproc $prog + retval=$? + echo + [ $retval -eq 0 ] && rm -f $lockfile + return $retval +} + +restart() { + stop + start +} + +reload() { + restart +} + +force_reload() { + restart +} + +rh_status() { + # run checks to determine if the service is running or use generic status + status $prog +} + +rh_status_q() { + rh_status >/dev/null 2>&1 +} + + +case "$1" in + start) + rh_status_q && exit 0 + $1 + ;; + stop) + rh_status_q || exit 0 + $1 + ;; + restart) + $1 + ;; + reload) + rh_status_q || exit 7 + $1 + ;; + force-reload) + force_reload + ;; + status) + rh_status + ;; + condrestart|try-restart) + rh_status_q || exit 0 + restart + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}" + exit 2 +esac +exit $? qtsmbstatus-2.2.1/packages/rpm/fedora/qtsmbstatus-2.2.1-init.patch0000644000175000017500000001005011720232513024332 0ustar villouvilloudiff -up qtsmbstatus-2.2.1/server/etc/qtsmbstatusd.init qtsmbstatus-2.2.1/server/etc/qtsmbstatusd --- qtsmbstatus-2.2.1/server/etc/qtsmbstatusd.init 2012-02-19 19:58:33.000000000 +0200 +++ qtsmbstatus-2.2.1/server/etc/qtsmbstatusd 2012-02-19 20:55:16.000000000 +0200 @@ -1,8 +1,11 @@ #!/bin/sh -# script for qtsmbstatusd # +# qtsmbstatusd +# +# chkconfig: 2345 99 20 +# description: qtsmbstatusd server (QtSmbstatus is a graphical user \ +# interface for smbstatus) -# For LSB ### BEGIN INIT INFO # Provides: qtsmbstatusd # Required-Start: $samba @@ -13,69 +16,99 @@ # Description: QtSmbstatus is a graphical user interface for smbstatus ### END INIT INFO -# For Mandrake/Mandriva/Fedora: -# chkconfig: 2345 99 20 -# description: qtsmbstatusd server (QtSmbstatus is a graphical user interface for smbstatus) +# Source function library. +. /etc/rc.d/init.d/functions + +exec="/usr/bin/qtsmbstatusd" +prog="qtsmbstatusd" +config="/etc/qtsmbstatusd/qtsmbstatusd.conf" -PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:$PATH -NAME=qtsmbstatusd +[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog -# see if qtsmbstatusd is running -pid=`ps ax | awk '{print $1,$5}' | grep $NAME | awk '{print $1}' | awk '{print $1}'` +lockfile=/var/lock/subsys/$prog # get locale default_locale=en_US.UTF-8 -if [ -f /etc/default/locale ]; then - # Debian systems - system_locale=`grep -re "LANG=" /etc/default/locale | awk 'BEGIN { FS = "[\"]" } { print $2 }'` -elif [ -f /etc/sysconfig/language ]; then - # SuSE systems - system_locale=`grep -re "LANG=" /etc/sysconfig/language | awk 'BEGIN { FS = "[\"]" } { print $2 }'` -elif [ -f /etc/sysconfig/i18n ]; then +if [ -f /etc/sysconfig/i18n ]; then # RedHat/mandriva systems system_locale=`grep -re "LANG=" /etc/sysconfig/i18n | awk 'BEGIN { FS = "[\"]" } { print $2 }'` -elif [ -f /etc/profile ]; then - #default - system_locale=`grep -re "LANG=" /etc/profile | awk 'BEGIN { FS = "[\"]" } { print $2 }'` fi if [ -z $system_locale ]; then system_locale=$default_locale; fi -# Start or stop the qtsmbstatusd server -case $1 in - start | restart | reload | force-reload) - export LANG=$system_locale - if test "$pid" != ""; then - kill $pid - if qtsmbstatusd -d; then - echo "qtsmbstatusd server restarted." - fi - else - if qtsmbstatusd -d; then - echo "qtsmbstatusd server started." - fi - fi - ;; - stop) - if test "$pid" != ""; then - kill -3 $pid - fi - echo "qtsmbstatusd server stopped" - ;; - - status) - if test "$pid" != ""; then - echo "qtsmbstatusd : server is running." - else - echo "qtsmbstatusd : server is not running." - fi - ;; - - *) - echo "Usage: qtsmbstatusd {start|stop|reload|restart|status|force-reload}" - exit 1 - ;; -esac - -exit 0 +start() { + [ -x $exec ] || exit 5 + [ -f $config ] || exit 6 + export LANG=$system_locale + echo -n $"Starting $prog: " + $exec -d + retval=$? + echo + [ $retval -eq 0 ] && touch $lockfile + return $retval +} + +stop() { + echo -n $"Stopping $prog: " + killproc $prog + retval=$? + echo + [ $retval -eq 0 ] && rm -f $lockfile + return $retval +} + +restart() { + stop + start +} + +reload() { + restart +} + +force_reload() { + restart +} + +rh_status() { + # run checks to determine if the service is running or use generic status + status $prog +} + +rh_status_q() { + rh_status >/dev/null 2>&1 +} + + +case "$1" in + start) + rh_status_q && exit 0 + $1 + ;; + stop) + rh_status_q || exit 0 + $1 + ;; + restart) + $1 + ;; + reload) + rh_status_q || exit 7 + $1 + ;; + force-reload) + force_reload + ;; + status) + rh_status + ;; + condrestart|try-restart) + rh_status_q || exit 0 + restart + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}" + exit 2 +esac +exit $? qtsmbstatus-2.2.1/packages/windows/0000755000175000017500000000000011720232513016760 5ustar villouvillouqtsmbstatus-2.2.1/packages/windows/nsi/0000755000175000017500000000000011720232513017551 5ustar villouvillouqtsmbstatus-2.2.1/packages/windows/nsi/qtsmbstatus.nsi0000644000175000017500000000730211720232513022660 0ustar villouvillou; qtsmbstatus.nsi ; by Daniel ROCHER ; ;-------------------------------- ;Include Modern UI !include "MUI.nsh" ;-------------------------------- Name "QtSmbstatus" OutFile "qtsmbstatus-client.2.2.1-1.exe" InstallDir "$PROGRAMFILES\qtsmbstatus" InstallDirRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qtsmbstatus""UninstallString" ;-------------------------------- ;Interface Settings !define MUI_ABORTWARNING ;-------------------------------- ;Pages !insertmacro MUI_PAGE_LICENSE "doc\license.txt" !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_INSTFILES ;-------------------------------- ;Languages !insertmacro MUI_LANGUAGE "English" ;-------------------------------- ;Installer Sections InstType "full" InstType "minimal" ; installe le programme Section "!Programs and libraries (required)" SecProgram SectionIn 1 2 RO SetOutPath "$INSTDIR\bin" File "bin\qtsmbstatus.exe" File "bin\*.dll" SectionEnd ; installe la documentation Section "Documentation" SecDoc SectionIn 1 SetOutPath "$INSTDIR\doc" File "doc\license.txt" File "doc\readme.txt" File "doc\readme-*.txt" File "doc\changelog.txt" SectionEnd ; installe les langues disponibles Section "Languages" SecLang SectionIn 1 SetOutPath "$INSTDIR\tr" File "tr\qtsmbstatus_*.qm" SectionEnd ; installe les racourcis Section "shortcuts" SecShortcuts SectionIn 1 SetOutPath "$SMPROGRAMS\qtsmbstatus" CreateShortCut "$SMPROGRAMS\qtsmbstatus\qtsmbstatus client.lnk""$INSTDIR\bin\qtsmbstatus.exe" CreateShortCut "$SMPROGRAMS\qtsmbstatus\readme.lnk""$INSTDIR\doc\readme.txt" CreateShortCut "$SMPROGRAMS\qtsmbstatus\license.lnk""$INSTDIR\doc\license.txt" CreateShortCut "$SMPROGRAMS\qtsmbstatus\uninstall.lnk""$INSTDIR\uninst-qtsmbstatus.exe" CreateShortCut "$DESKTOP\qtsmbstatus.lnk""$INSTDIR\bin\qtsmbstatus.exe" SectionEnd Section -PostInstall WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qtsmbstatus""DisplayName""qtsmbstatus (uninstall)" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qtsmbstatus""UninstallString"'"$INSTDIR\uninst-qtsmbstatus.exe"' WriteUninstaller "uninst-qtsmbstatus.exe" WriteRegStr HKLM "Software\qtsmbstatus\settings\""path""$INSTDIR" SectionEnd ;-------------------------------- ;Descriptions ;Language strings LangString DESC_SecProgram ${LANG_ENGLISH} "Install QtSmbstatus for windows in your computer. This section is required." LangString DESC_SecDoc ${LANG_ENGLISH} "Documentation (optionnal)." LangString DESC_SecLang ${LANG_ENGLISH} "to install other Languages (optionnal)." LangString DESC_SecShortcuts ${LANG_ENGLISH} "Install shortcuts (optionnal)." ;Assign language strings to sections !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${SecProgram} $(DESC_SecProgram) !insertmacro MUI_DESCRIPTION_TEXT ${SecDoc} $(DESC_SecDoc) !insertmacro MUI_DESCRIPTION_TEXT ${SecLang} $(DESC_SecLang) !insertmacro MUI_DESCRIPTION_TEXT ${SecShortcuts} $(DESC_SecShortcuts) !insertmacro MUI_FUNCTION_DESCRIPTION_END ;-------------------------------- Section "Uninstall" DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qtsmbstatus" DeleteRegKey HKLM "Software\qtsmbstatus" Delete "$INSTDIR\uninst-qtsmbstatus.exe" Delete "$INSTDIR\bin\*" Delete "$INSTDIR\doc\*" Delete "$INSTDIR\tr\*" RMDir $INSTDIR\doc RMDir $INSTDIR\bin RMDir $INSTDIR\tr RMDir $INSTDIR Delete "$DESKTOP\qtsmbstatus.lnk" Delete "$SMPROGRAMS\qtsmbstatus\*.*" RMDir "$SMPROGRAMS\qtsmbstatus" SectionEnd qtsmbstatus-2.2.1/packages/deb/0000755000175000017500000000000011720232513016020 5ustar villouvillouqtsmbstatus-2.2.1/packages/deb/changelog0000644000175000017500000000523611720232513017700 0ustar villouvillouqtsmbstatus (2.2.1-0) unstable; urgency=low * New upstream release -- Daniel Rocher Sun, 19 Feb 2012 18:36:20 +0100 qtsmbstatus (2.2.0-0) unstable; urgency=low * New upstream release -- Daniel Rocher Tue, 28 Jun 2011 20:43:16 +0200 qtsmbstatus (2.1.3-0) unstable; urgency=low * New upstream release -- Daniel Rocher Thu, 22 Apr 2010 17:48:24 +0200 qtsmbstatus (2.1.2-3) unstable; urgency=low * debian/qtsmbstatus-server.qtsmbstatusd.init: - Fix incorrect init.d dependencies, fix runlevels, thanks to Petter Reinholdtsen for the patch (Closes: #569647). * Adjust postint script to replace the init.d script properly. * debian/control: - Bump Standards. - Set DMUA to yes. - Adjust versioned build-dependency on debhelper. -- Alessio Treglia Sat, 13 Feb 2010 10:17:29 +0100 qtsmbstatus (2.1.2-2) unstable; urgency=low * Architecure of qtsmbstatus-language must be all. * Fix debian/copyright. -- Alessio Treglia Thu, 10 Dec 2009 17:00:06 +0100 qtsmbstatus (2.1.2-1) unstable; urgency=low * Initial release (Closes: #558202). -- Alessio Treglia Fri, 27 Nov 2009 00:35:12 +0100 qtsmbstatus (2.1.2-0ubuntu1) karmic; urgency=low * New upstream bugfix release. * Drop debian/patches/01-gcc44_ftbfs.dpatch, applied by upstream. * Drop dpatch support, remove debian/patches. * debian/control: Update Maintainer field as-per-spec. * Update debian/copyright. -- Alessio Treglia Tue, 30 Jun 2009 11:54:11 +0200 qtsmbstatus (2.1.1-0ubuntu1) karmic; urgency=low [ Daniel Rocher ] * New upstream release (LP: #300445) * Bump Standards-Version to 3.8.1 * Create package for qtsmbstatus-light * Create a separate package for Languages (required by qtsmbstatus-client and qtsmbstatus-light) * Remove depend on openssl * debian/qtsmbstatus-server.qtsmbstatusd.init: set the LANG environment variable value [ Alessio Treglia ] * Add dpatch support. * Add 01-gcc44_ftbfs.dpatch patch to add missing #include, fix FTBFS. -- Alessio Treglia Thu, 14 May 2009 18:55:03 +0200 qtsmbstatus (2.0.4-0ubuntu1) intrepid; urgency=low [ Daniel Rocher ] * New upstream version [ Harald Sitter ] * Changed distribution in changelog to intrepid * Bump Standards-Version to 3.8.0 -- Harald Sitter Mon, 28 Jul 2008 14:40:59 +0200 qtsmbstatus (2.0.3-0ubuntu1) hardy; urgency=low * Initial release (LP: #119179) -- Daniel Rocher Wed, 02 Jan 2008 21:00:00 +0200 qtsmbstatus-2.2.1/packages/deb/qtsmbstatus-server.qtsmbstatusd.pam0000755000175000017500000000033711720232513025160 0ustar villouvillou#%PAM-1.0 @include common-auth auth required pam_env.so auth required pam_listfile.so file=/etc/qtsmbstatusd/qtsmbstatusd.users onerr=fail sense=allow item=user @include common-account @include common-session qtsmbstatus-2.2.1/packages/deb/qtsmbstatus-light.dirs0000644000175000017500000000006111720232513022377 0ustar villouvillouusr/bin usr/share/pixmaps usr/share/applications qtsmbstatus-2.2.1/packages/deb/qtsmbstatus-light.install0000644000175000017500000000017611720232513023113 0ustar villouvilloulight/bin/qtsmbstatusl usr/bin/ light/qtsmbstatusl.xpm usr/share/pixmaps/ light/qtsmbstatusl.desktop usr/share/applications/ qtsmbstatus-2.2.1/packages/deb/qtsmbstatus-server.postinst0000644000175000017500000000036211720232513023524 0ustar villouvillou#!/bin/sh set -e # Recover from incorrect init.d script runlevel settings in # version 2.1.2-2 and earlier if [ "$1" = "configure" ] && dpkg --compare-versions "$2" le "2.1.2-2" ; then update-rc.d -f qtsmbstatusd remove fi #DEBHELPER# qtsmbstatus-2.2.1/packages/deb/qtsmbstatus-client.install0000644000175000017500000000017611720232513023262 0ustar villouvillouclient/bin/qtsmbstatus usr/bin/ client/qtsmbstatus.xpm usr/share/pixmaps/ client/qtsmbstatus.desktop usr/share/applications/ qtsmbstatus-2.2.1/packages/deb/watch0000644000175000017500000000010511720232513017045 0ustar villouvillouversion=3 http://qtsmbstatus.free.fr/files/qtsmbstatus-(.*)\.tar\.gz qtsmbstatus-2.2.1/packages/deb/qtsmbstatus-server.manpages0000644000175000017500000000003111720232513023425 0ustar villouvillouserver/qtsmbstatusd.7.gz qtsmbstatus-2.2.1/packages/deb/compat0000644000175000017500000000000211720232513017216 0ustar villouvillou7 qtsmbstatus-2.2.1/packages/deb/docs0000644000175000017500000000002011720232513016663 0ustar villouvillouREADME README-* qtsmbstatus-2.2.1/packages/deb/rules0000755000175000017500000000033311720232513017077 0ustar villouvillou#!/usr/bin/make -f %: dh $@ override_dh_auto_configure: qmake-qt4 override_dh_auto_install: override_dh_installinit: dh_installinit --name=qtsmbstatusd override_dh_installpam: dh_installpam --name=qtsmbstatusd qtsmbstatus-2.2.1/packages/deb/qtsmbstatus-server.dirs0000644000175000017500000000004311720232513022576 0ustar villouvillouusr/bin etc/pam.d etc/qtsmbstatusd qtsmbstatus-2.2.1/packages/deb/qtsmbstatus-client.menu0000644000175000017500000000031011720232513022546 0ustar villouvillou?package(qtsmbstatus-client): \ needs="X11" \ section="Applications/Network/Monitoring" \ title="QtSmbstatus Client" \ icon="/usr/share/pixmaps/qtsmbstatus.xpm" \ command="qtsmbstatus" qtsmbstatus-2.2.1/packages/deb/qtsmbstatus-language.install0000644000175000017500000000004611720232513023563 0ustar villouvillouclient/tr/*.qm usr/share/qtsmbstatus/ qtsmbstatus-2.2.1/packages/deb/qtsmbstatus-light.menu0000644000175000017500000000031011720232513022377 0ustar villouvillou?package(qtsmbstatus-light): \ needs="X11" \ section="Applications/Network/Monitoring" \ title="QtSmbstatus Light" \ icon="/usr/share/pixmaps/qtsmbstatusl.xpm" \ command="qtsmbstatusl" qtsmbstatus-2.2.1/packages/deb/qtsmbstatus-client.dirs0000644000175000017500000000006111720232513022546 0ustar villouvillouusr/bin usr/share/pixmaps usr/share/applications qtsmbstatus-2.2.1/packages/deb/qtsmbstatus-light.manpages0000644000175000017500000000003011720232513023225 0ustar villouvilloulight/qtsmbstatusl.7.gz qtsmbstatus-2.2.1/packages/deb/control0000644000175000017500000000414211720232513017424 0ustar villouvillouSource: qtsmbstatus Section: net Priority: optional Maintainer: Alessio Treglia Build-Depends: debhelper (>= 7.0.50~), libqt4-dev, libpam0g-dev Standards-Version: 3.8.4 DM-Upload-Allowed: yes Homepage: http://qtsmbstatus.free.fr/ Package: qtsmbstatus-language Architecture: all Depends: ${shlibs:Depends}, ${misc:Depends} Conflicts: qtsmbstatus-client (<= 2.0.99) Description: QtSmbstatus languages package QtSmbstatus is a smbstatus graphical interface (GUI). It is meant to provide the possibility of administering remote machines. QtSmbstatus was designed as a client/server system secured with SSL. . This package will install additional languages for qtsmbstatus-client and qtsmbstatus-light packages. Package: qtsmbstatus-light Architecture: any Depends: ${shlibs:Depends}, qtsmbstatus-language, libqt4-sql, ${misc:Depends} Description: GUI (graphical user interface) for smbstatus QtSmbstatus is a smbstatus graphical interface (GUI). It is meant to provide the possibility of administering remote machines. QtSmbstatus was designed as a client/server system secured with SSL. . This package provides the lightweight client-side application which works only locally and doesn't require qtsmbstatus-server. Package: qtsmbstatus-client Architecture: any Depends: ${shlibs:Depends}, qtsmbstatus-language, libqt4-sql, ${misc:Depends} Description: GUI (graphical user interface) for smbstatus (client) QtSmbstatus is a smbstatus graphical interface (GUI). It is meant to provide the possibility of administering remote machines. QtSmbstatus was designed as a client/server system secured with SSL. . This package provides the qtsmbtatus client application. Package: qtsmbstatus-server Architecture: any Depends: ${shlibs:Depends}, libqt4-sql, samba, ${misc:Depends} Description: GUI (graphical user interface) for smbstatus (server) QtSmbstatus is a smbstatus graphical interface (GUI). It is meant to provide the possibility of administering remote machines. QtSmbstatus was designed as a client/server system secured with SSL. . This package provides the server-side application. qtsmbstatus-2.2.1/packages/deb/qtsmbstatus-server.install0000644000175000017500000000024311720232513023305 0ustar villouvillouserver/bin/qtsmbstatusd usr/bin/ server/etc/*.pem etc/qtsmbstatusd/ server/etc/qtsmbstatusd.conf etc/qtsmbstatusd/ server/etc/qtsmbstatusd.users etc/qtsmbstatusd/ qtsmbstatus-2.2.1/packages/deb/qtsmbstatus-language.dirs0000644000175000017500000000002611720232513023054 0ustar villouvillouusr/share/qtsmbstatus qtsmbstatus-2.2.1/packages/deb/qtsmbstatus-client.manpages0000644000175000017500000000003011720232513023374 0ustar villouvillouclient/qtsmbstatus.7.gz qtsmbstatus-2.2.1/packages/deb/copyright0000644000175000017500000000255511720232513017762 0ustar villouvillouFormat-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=59 Name: QtSmbstatus Maintainer: Daniel Rocher Source: http://qtsmbstatus.free.fr/index.php?page=downloads File: * Copyright: 2004, Daniel Rocher License: GPL-2 File: client/mainwindows.* Copyright: 2008, Daniel Rocher License: GPL-2 File: debian/* Copyright: 2009, Alessio Treglia 2007, Daniel Rocher License: GPL-2 License: GPL-2 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 2 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, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. X-Comment: On Debian systems the full text of the GNU General Public License can be found in the `/usr/share/common-licenses/GPL-2' file. qtsmbstatus-2.2.1/packages/deb/qtsmbstatus-server.qtsmbstatusd.init0000755000175000017500000000275611720232513025355 0ustar villouvillou#!/bin/sh # script for qtsmbstatusd # # For LSB ### BEGIN INIT INFO # Provides: qtsmbstatusd # Required-Start: $remote_fs $syslog samba # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: start qtsmbstatusd server at boot time # Description: QtSmbstatus is a graphical user interface for smbstatus ### END INIT INFO NAME=qtsmbstatusd # see if qtsmbstatusd is running pid=`ps ax | awk '{print $1,$5}' | grep $NAME | awk '{print $1}' | awk '{print $1}'` # get locale default_locale=en_US.UTF-8 if [ -f /etc/default/locale ]; then # Debian systems system_locale=`grep -re "LANG=" /etc/default/locale | awk 'BEGIN { FS = "[\"]" } { print $2 }'` fi if [ -z $system_locale ]; then system_locale=$default_locale; fi # Start or stop the qtsmbstatusd server case $1 in start | restart | reload | force-reload) export LANG=$system_locale if test "$pid" != ""; then kill $pid if /usr/bin/qtsmbstatusd -d; then echo "qtsmbstatusd server restarted." fi else if /usr/bin/qtsmbstatusd -d; then echo "qtsmbstatusd server started." fi fi ;; stop) if test "$pid" != ""; then kill -3 $pid fi echo "qtsmbstatusd server stopped" ;; status) if test "$pid" != ""; then echo "qtsmbstatusd : server is running." else echo "qtsmbstatusd : server is not running." fi ;; *) echo "Usage: qtsmbstatusd {start|stop|reload|restart|status|force-reload}" exit 1 ;; esac exit 0 qtsmbstatus-2.2.1/COPYING0000644000175000017500000004334511720232513014554 0ustar villouvillou This program is released under the GPL Version 2 with the additional exemption that compiling, linking, and/or using OpenSSL is allowed. GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 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 2 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, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. qtsmbstatus-2.2.1/server/0000755000175000017500000000000011720232510015013 5ustar villouvillouqtsmbstatus-2.2.1/server/disconnect_manager.cpp0000755000175000017500000000720111720232510021345 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include "disconnect_manager.h" int disconnect_manager::compteur_objet=0; /** \class disconnect_manager \brief Kill a smb process (disconnect an %user) \date 2008-11-10 \version 1.2 \author Daniel Rocher \param MyPID PID of process \param USER username \param parent pointer to parent for this object \sa process_smbd_exist */ disconnect_manager::disconnect_manager(const QString & MyPID,const QString & USER,QObject *parent ) : QObject(parent) { debugQt("Object disconnect_manager : "+QString::number(++compteur_objet)); m_textDecoder = QTextCodec::codecForLocale()->makeDecoder(); MyPid=MyPID.simplified(); user=USER.simplified(); connect( &proc, SIGNAL(finished ( int, QProcess::ExitStatus) ),this, SLOT(end_process()) ); connect( &proc, SIGNAL(readyReadStandardError ()),this, SLOT(ReadStderr()) ); connect( &proc, SIGNAL(error ( QProcess::ProcessError) ),this, SLOT(error(QProcess::ProcessError)) ); QStringList arguments; arguments << "-c" << "kill -15 "+MyPid; debugQt ("Disconnect "+user+ " - sh "+arguments.join(" ")); proc.start("sh",arguments,QIODevice::ReadOnly); } disconnect_manager::~disconnect_manager() { debugQt("Object disconnect_manager : "+QString::number(--compteur_objet)); delete m_textDecoder; } /** an error occurs with the process */ void disconnect_manager::error(QProcess::ProcessError err) { debugQt("disconnect_manager::error()"); // error handling qWarning("process kill error"); switch (err) { case 0: debugQt(" ==> FailedToStart"); break; case 1: debugQt(" ==> Crashed"); break; case 2: debugQt(" ==> Timedout"); break; case 3: debugQt(" ==> ReadError"); break; case 4: debugQt(" ==> WriteError"); break; case 5: debugQt(" ==> UnknownError"); break; } emit ObjError(tr("process kill error")); deleteLater (); } /** Process ending */ void disconnect_manager::end_process() { debugQt("disconnect_manager::end_process()"); deleteLater (); // delete this object } /** Read errors */ void disconnect_manager::ReadStderr() { debugQt("disconnect_manager::ReadStderr()"); QString str=m_textDecoder->toUnicode(proc.readAllStandardError()); debugQt(str); emit ObjError(tr("Failed to disconnect user")+" "+ user + " : " + str ); } qtsmbstatus-2.2.1/server/clientsocket.cpp0000644000175000017500000002735711720232510020224 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include "clientsocket.h" #include "process_smbd_exist.h" #include "sendmessage_manager.h" #include "smbmanager.h" #include "../common/core_syntax.h" extern void debugQt(const QString & message); extern QStringList AllowUserDisconnect; extern QStringList AllowUserSendMsg; extern uint int_qtsmbstatus_version; extern QString version_qtsmbstatus; extern QString date_qtsmbstatus; int ClientSocket::compteur_objet=0; /** \class ClientSocket \brief This class dialogs with client. (One object/client) \date 2008-11-06 \version 2.0 \author Daniel Rocher \sa Server \param parent pointer to parent for this object */ ClientSocket :: ClientSocket( QObject* parent ) : QSslSocket ( parent ) { debugQt("ClientSocket::ClientSocket(): "+QString::number(++compteur_objet)); AuthUser=false; permitDisconnectUser=false; permitSendMsg=false; pamthread = new PamThread(); connect( pamthread, SIGNAL(finished()), this, SLOT(pamFinished()) ); ignoreSslErrors (); connect (this, SIGNAL(readyRead()),this, SLOT(core())); connect (this, SIGNAL(disconnected()),this, SLOT(deleteLater())); connect (this, SIGNAL( error ( QAbstractSocket::SocketError )),this,SLOT(SocketError())); connect (this, SIGNAL(sslErrors ( const QList & )),this,SLOT(SslErrors(const QList &))); connect (this, SIGNAL(encrypted ()),this,SLOT(socketEncrypted ())); } ClientSocket :: ~ClientSocket() { debugQt("ClientSocket::~ClientSocket(): "+QString::number(--compteur_objet)); // Blocks until the thread PamThread has finished execution pamthread->wait(); delete pamthread; } /** Socket error */ void ClientSocket::SocketError () { debugQt("ClientSocket::SocketError()"); qWarning() << errorString(); deleteLater(); } /** SSL error */ void ClientSocket::SslErrors (const QList & listErrors) { debugQt("ClientSocket::SslErrors()"); for (int i = 0; i < listErrors.size(); ++i) qWarning() <canReadLine ()) { lineArray = this->readLine(); line=QString::fromUtf8( lineArray.data() ).trimmed (); debugQt(line); stx.setValue(line); if (stx.returnArg(0) != "") { commande=(stx.returnArg(0)).toInt(&ok); if (ok) // if txt to int conversion is ok { switch (commande) { case auth_rq: // auth_rq debugQt("["+QString::number(commande)+"] auth_rq"); CmdAuthRq(line); break; case end: // end socket by client debugQt("["+QString::number(commande)+"] end"); deleteLater(); break; case kill_user: // disconnect user debugQt("["+QString::number(commande)+"] kill_user"); CmdKillUser(line); break; case send_msg: // send message to user debugQt("["+QString::number(commande)+"] send_msg"); CmdSendMsg(line); break; case smb_rq: // smbstatus request debugQt("["+QString::number(commande)+"] smb_rq"); CmdSmbRq(); break; case echo_request:// echo request from client debugQt("["+QString::number(commande)+"] echo_request"); sendToClient(echo_reply); break; case echo_reply: // echo reply from client debugQt("["+QString::number(commande)+"] echo_reply"); // now, ignore it (compatibility to qtsmbstatus =< 2.0.6) break; case error_command: // Command error ( the last command is not recognized) debugQt("["+QString::number(commande)+"] error_command"); break; case whoiam: debugQt("["+QString::number(commande)+"] whoiam"); break; default: // not implemented debugQt("["+QString::number(commande)+"] not implemented"); sendToClient(error_command,"["+QString::number(commande)+"] not implemented"); break; } } else { //conversion error string->int debugQt("Command error !"); } } else { // core_syntax sends an error debugQt("Command error !"); } } } /** Send datas to client \param cmd command \param inputArg1 argument 1 \param inputArg2 argument 2 \sa ClientSocket::command \sa core_syntax */ void ClientSocket ::sendToClient(int cmd,const QString & inputArg1,const QString & inputArg2) { debugQt ("ClientSocket::sendToClient()"); QString MyTxt; if (!inputArg1.isEmpty()) MyTxt=addEscapeKeys(inputArg1); if (!inputArg2.isEmpty()) MyTxt+=";"+addEscapeKeys(inputArg2); QString send_txt = "["+QString::number(cmd)+"]"+MyTxt+"\n" ; this->write(send_txt.toUtf8()); debugQt(send_txt); } /** Request from client to disconnect an %user \param texte arg1=PID, arg2=username \sa ClientSocket::permitDisconnectUser \sa process_smbd_exist */ void ClientSocket ::CmdKillUser(const QString & texte) { debugQt(" ClientSocket :: CmdKillUser()"); core_syntax stx(texte); if (!AuthUser) // if not authenticated { debugQt("Client not authenticated !"); sendToClient(error_auth,"Not authenticated !"); } else // if authenticated { if (!permitDisconnectUser) // if client is authorized { debugQt("Client is unauthorized to disconnect an user !"); sendToClient(error_obj,tr("Unauthorized request!")); return; } QString pid=stx.returnArg(1); if (pid!="") { QString user=stx.returnArg(2); if (user!="") { process_smbd_exist* killSmbProc = new process_smbd_exist(pid,user,this); connect(killSmbProc,SIGNAL(ObjError(const QString &)),this, SLOT(ObjError (const QString &)) ); } else sendToClient(error_command,"Missing arguments"); } else sendToClient(error_command,"Missing arguments"); } } /** Request from client to send popup message \param texte arg1=machine, arg2=message to be sent \sa ClientSocket::permitSendMsg \sa Sendmessage_manager */ void ClientSocket ::CmdSendMsg(const QString & texte) { debugQt(" ClientSocket :: CmdSendMsg()"); core_syntax stx(texte); if (!AuthUser) // if not authenticated { debugQt("Client not authenticated !"); sendToClient(error_auth,"Not authenticated !"); } else // if authenticated { if (!permitSendMsg) // if client is authorized { debugQt("Client is unauthorized to send popup message !"); sendToClient(error_obj,tr("Unauthorized request!")); return; } QString machine=stx.returnArg(1); if (machine!="") { QString message=stx.returnArg(2); if (message!="") { Sendmessage_manager* send_msg = new Sendmessage_manager(machine,message,this); connect(send_msg,SIGNAL(ObjError(const QString &)),this, SLOT(ObjError (const QString &)) ); } else sendToClient(error_command,"Missing arguments"); } else sendToClient(error_command,"Missing arguments"); } } /** Run Smbstatus request \sa slot_smbstatus */ void ClientSocket ::CmdSmbRq() { debugQt(" ClientSocket :: CmdSmbRq()"); if (!AuthUser) // if not authenticated { debugQt("Client not authenticated !"); sendToClient(error_auth,"Not authenticated !"); } else // if authenticated { smbmanager* processus_smbstatus = new smbmanager(this); connect(processus_smbstatus,SIGNAL(ObjError(const QString &)),this, SLOT(ObjError (const QString &)) ); connect( processus_smbstatus, SIGNAL(signal_std_output(const QStringList &)),this, SLOT(slot_smbstatus(const QStringList &)) ); } } /** Slot : Receive %smbstatus reply. \sa CmdSmbRq */ void ClientSocket ::slot_smbstatus(const QStringList & rcv_smb) { debugQt("ClientSocket::slot_smbstatus()"); QString ligne; QString toSend=""; bool start=true; int taille=0; QStringList data = rcv_smb; QStringList::Iterator it = data.begin(); while ( it != data.end()) { if (start==true) { // first time start=false; } else { // else, send [smb_data] toSend+="\n["+QString::number(smb_data)+"]"; } ligne = *it; // read one line toSend+=ligne; taille=toSend.length (); // calculate size ++it; // if size > 2048 char or if it's the end of stringlist, send data if ((taille>2048) || (it == data.end())) { sendToClient(smb_data,toSend); toSend=""; taille=0; start=true; } } sendToClient(end_smb_rq); // end of smbstatus reply. All datas has been sent } /** Slot : receive objects errors and send it to client. \param error_txt error to be sent */ void ClientSocket ::ObjError(const QString & error_txt) { debugQt("ClientSocket::ObjError()"); sendToClient(error_obj,error_txt); // send to client } /** Authentication Request \param texte arg=1=username, arg2=password \sa core_syntax PamThread */ void ClientSocket :: CmdAuthRq(const QString & texte) { debugQt(" ClientSocket :: CmdAuthRq()"); core_syntax stx(texte); QString Username=stx.returnArg(1); QString Passwd=stx.returnArg(2); if ( (!Username.isEmpty()) && (Username.length () < 50) && (!Passwd.isEmpty()) && (Passwd.length () < 50)) { // if client is authorized to disconnect user for ( QStringList::Iterator it = AllowUserDisconnect.begin(); it != AllowUserDisconnect.end(); ++it ) { if (((*it)==Username) || ((*it).toLower()=="all")) permitDisconnectUser=true; } // if client is authorized to send popup message for ( QStringList::Iterator it = AllowUserSendMsg.begin(); it != AllowUserSendMsg.end(); ++it ) { if (((*it)==Username) || ((*it).toLower ()=="all")) permitSendMsg=true; } // PAM Request pamthread->setAuth(Username,Passwd); pamthread->start(); return; } sendToClient(error_auth); QTimer::singleShot(100,this,SLOT(deleteLater())); } /** pamthread finished \sa CmdAuthRq */ void ClientSocket ::pamFinished() { debugQt ("ClientSocket::pamFinished()"); if (pamthread->auth_resu) { // client authenticated AuthUser=true; sendToClient(auth_ack); /* infoserver : right for current client 0000 0001 : permit client to disconnect an user 0000 0010 : permit client to send popup messages (popupwindows) */ int infoserver=0; if (permitDisconnectUser) infoserver=1; if (permitSendMsg) infoserver+=2; // send client's rights sendToClient(server_info,QString::number(infoserver)); } else { // client is not authenticated. disconnect it sendToClient(error_auth); QTimer::singleShot(100,this,SLOT(deleteLater())); } } qtsmbstatus-2.2.1/server/sendmessage_manager.h0000644000175000017500000000420111720232510021151 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #ifndef SENDMESSAGE_MANAGER_H #define SENDMESSAGE_MANAGER_H #include #include #include class QString; extern void debugQt(const QString & message); class Sendmessage_manager : public QObject { Q_OBJECT public: Sendmessage_manager(const QString & machine,const QString & message,QObject *parent=0); virtual ~Sendmessage_manager(); static int compteur_objet; private: // Private attributes QProcess proc; QString my_message; QString to_machine; QTextDecoder * m_textDecoder; private slots: // Private slots void readFromStdout(); void ReadStderr(); void end_process(); void error(QProcess::ProcessError); signals: void ObjError(const QString & ); }; #endif qtsmbstatus-2.2.1/server/etc/0000755000175000017500000000000011720232510015566 5ustar villouvillouqtsmbstatus-2.2.1/server/etc/privkey.pem0000644000175000017500000000332711720232510017767 0ustar villouvillou-----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: DES-EDE3-CBC,9EC7748F9D763909 LNOcZF/uC+BDtDqR3rkwNvseZuCpYPnFnZNzCbYhm29Oz4FDyyFxaSETeCe5yHc7 Rafnnrn9dUrnDKi7coui3WN1Ixrj/vzHcEVH2qn+MKtS18LMSSEHOWECulrs/c0L FlVze2nkYHnRaHa8X2BZZlAhzo7aEWODc3AGdKYnln7MAIu4hPHFf2fkx5nVy03Q iii2B5G9alUvHr3YugKWD2UG7v6j9AcXSXdxRd6Ar0tUL9tMZCAmLaZmMT9aYTRN rX3fAZjLz+TkhjohU7puBB+yfoZFnWf80KcVmH4BWkDgg+I/2RZJsldR3yRC/owe pm4UhUqXZ3o3UTYDdRhdRY0fbmWfJGSxftH6Wkw9RLArwZdimVEb0d4F0IIRniBa 4XNawmjD0JJuFUdDzbvaZgjojC91x0yte+a5uUQA43WK9kVLyFnFO+IPqiYwP953 N/jTCGB6bF/OiaxT8KV4wxbd6s1+j7pcEi05LYTx9sw1gDSDjlgblsVdVj9udKEy LG98OaTXP4TREp4i+OAiLOBqmfQnV/lyBLGrfzUwnRgDhZYzM/9Wwue6CytBWiFr beoz0Zsya9qexWGolna5/orEN22LccxkAERN4yA07SVk5rhXDPVpXLFr7JT7+8mW fsvzySYiYbR2Stu1wCpzj8EYafjnWqLMTfnZEEp5SiR4QVhrNdGwmMacnnKKkKZ7 w1wadSx7MPagqIszRhpQN1UofmqI9SpZnKZZFxa2IXIayy+2rWQmVswFrg76znEG h4kxa6VMLdJfpsyzdm3Qd08npu8il3H8TeIah2RaeuRkMsFf5xPyyOhW1IXTMPhO ld3HvziRPVcipHgsx2pofLJUE+GMig4rWrPZpodGiQs0lziTk87Jq6GCM3dmxkFy Pi7mjVyibMwgsRboPmtt39tWt9MlAuEG1txoiOxW6e7CDVxJ+CbsJ1oGIwO3x8bG Le67a+TvV0BDz7yXrOpDI7cLYbgRkU9K/ZLWe8i7VD2ZK0VedN/mhCUfc+WA5Ch9 CH6bB6JdEBeKsmB1G0qohdF3tP9v+pFT9wst0UzZGS3LGq8wC3wjVJd4QKuSkMW5 EYS+3VazFMVowwj8+jICHOTpB810ihPo11sdFCF0m1TgUS/OaIPF7o9uGxf26Txp C0dk3SoYcGeDgyoO5wTVWpnaFuX4K1wkZICbppN/P/GxoZS8GNYc6zPx7Cxce8GK xEUfuSe6xRw/2wtaLy4yqVkkk/dyOKYkE1cniJPvLwcdmaXMMRd++LLbI8OyJRIS FxIGuDeHyqJ4SrdYTz4tjbJyPPn+fisnTJO10rL5R0kIwuZ02AIKocLQmld9CW/7 ba2qSNq5LhaeO51xdOndSK2qyXaiKMxrJ9POs+gPptyJzElvcfiOTRe135bcXCW+ H9XxL+VtLy673ia1LRq1dMFmCn78T6uliH7hAvs8NWJdqn2AB6bu/zrgfiQzB15X VGIxSGlqSW3+JCR+hC7DW5KozhnAOO0Ynpqu5tGg1hXsAGx9CFs4G5f8SLTfTPLN iRe2HOUnPN6OCIgMF9Dw04sa8LTrggZ7PYl8JUOqcBq7kg9iqqHs5erTQ2MGNs8J -----END RSA PRIVATE KEY----- qtsmbstatus-2.2.1/server/etc/qtsmbstatusd.conf0000644000175000017500000000253311720232510021176 0ustar villouvillou# This is the configuration file for qtsmbstatusd (server) # Port where the server should listen at # default : port = 4443 port = 4443 # private key # you can create a private key by using the command: # openssl genrsa -des3 -out privkey.pem 2048 # please make sure that this file is only readable by root (for security reasons) # default : private_key = /etc/qtsmbstatusd/privkey.pem private_key = /etc/qtsmbstatusd/privkey.pem # ssl certificate # you can create a certificate by using the command: # openssl req -new -x509 -key privkey.pem -out server.pem -days 10000 # default : certificat = /etc/qtsmbstatusd/server.pem certificat = /etc/qtsmbstatusd/server.pem # password for ssl certificate # default : ssl_password = password ssl_password = password # Allow client to disconnect a user # You can authorize a client to disconnect a user. Use Username # or 'all' for all clients. # examples : # permit_disconnect_user = root, villou, dan # permit_disconnect_user = all # default : permit_disconnect_user = root permit_disconnect_user = root # Allow client to send a message # You can authorize a client to Send message. Use Username or 'all' for all clients. # examples : # permit_send_msg = root, villou, dan # permit_send_msg = all # default : permit_send_msg = root,all permit_send_msg = root,all # end file configuration qtsmbstatus-2.2.1/server/etc/qtsmbstatusd0000755000175000017500000000422611720232510020256 0ustar villouvillou#!/bin/sh # script for qtsmbstatusd # # For LSB ### BEGIN INIT INFO # Provides: qtsmbstatusd # Required-Start: $samba # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: start qtsmbstatusd server at boot time # Description: QtSmbstatus is a graphical user interface for smbstatus ### END INIT INFO # For Mandrake/Mandriva/Fedora: # chkconfig: 2345 99 20 # description: qtsmbstatusd server (QtSmbstatus is a graphical user interface for smbstatus) PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:$PATH NAME=qtsmbstatusd # see if qtsmbstatusd is running pid=`ps ax | awk '{print $1,$5}' | grep $NAME | awk '{print $1}' | awk '{print $1}'` # get locale default_locale=en_US.UTF-8 if [ -f /etc/default/locale ]; then # Debian systems system_locale=`grep -re "LANG=" /etc/default/locale | awk 'BEGIN { FS = "[\"]" } { print $2 }'` elif [ -f /etc/sysconfig/language ]; then # SuSE systems system_locale=`grep -re "LANG=" /etc/sysconfig/language | awk 'BEGIN { FS = "[\"]" } { print $2 }'` elif [ -f /etc/sysconfig/i18n ]; then # RedHat/mandriva systems system_locale=`grep -re "LANG=" /etc/sysconfig/i18n | awk 'BEGIN { FS = "[\"]" } { print $2 }'` elif [ -f /etc/profile ]; then #default system_locale=`grep -re "LANG=" /etc/profile | awk 'BEGIN { FS = "[\"]" } { print $2 }'` fi if [ -z $system_locale ]; then system_locale=$default_locale; fi # Start or stop the qtsmbstatusd server case $1 in start | restart | reload | force-reload) export LANG=$system_locale if test "$pid" != ""; then kill $pid if qtsmbstatusd -d; then echo "qtsmbstatusd server restarted." fi else if qtsmbstatusd -d; then echo "qtsmbstatusd server started." fi fi ;; stop) if test "$pid" != ""; then kill -3 $pid fi echo "qtsmbstatusd server stopped" ;; status) if test "$pid" != ""; then echo "qtsmbstatusd : server is running." else echo "qtsmbstatusd : server is not running." fi ;; *) echo "Usage: qtsmbstatusd {start|stop|reload|restart|status|force-reload}" exit 1 ;; esac exit 0 qtsmbstatus-2.2.1/server/etc/server.pem0000644000175000017500000000317311720232510017603 0ustar villouvillou-----BEGIN CERTIFICATE----- MIIEnTCCA4WgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBlTELMAkGA1UEBhMCRlIx DzANBgNVBAgTBkZyYW5jZTENMAsGA1UEBxMEQXVkZTEPMA0GA1UEChMGQURFTExB MRQwEgYDVQQLEwtRdFNtYnN0YXR1czEWMBQGA1UEAxMNUk9DSEVSIERhbmllbDEn MCUGCSqGSIb3DQEJARYYZGFuaWVsLnJvY2hlckBhZGVsbGEub3JnMB4XDTA1MDMw MzIwMjcwNVoXDTMyMDcxOTIwMjcwNVowgZUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQI EwZGcmFuY2UxDTALBgNVBAcTBEF1ZGUxDzANBgNVBAoTBkFERUxMQTEUMBIGA1UE CxMLUXRTbWJzdGF0dXMxFjAUBgNVBAMTDVJPQ0hFUiBEYW5pZWwxJzAlBgkqhkiG 9w0BCQEWGGRhbmllbC5yb2NoZXJAYWRlbGxhLm9yZzCCASIwDQYJKoZIhvcNAQEB BQADggEPADCCAQoCggEBANZ1LhatNlaxgxb8k/rqRwT8rWQ96WNuC6kVI3yV8Ez7 Q169Sa66x9kiiVoeh2cnzYbTEq2bgwoVPze3nrlHrUfRpd1ubfstx3tT+fpIxgo0 /X77TKWbqIUVN5R0sBdy9G263pIbGXpo+w96j65PQuz28vYxhYa80nDwwD+BgBhC 7csr7meeYtcqZ8C68M2+c+6viET1/ASjtWW59k+/wow2ERdvMv958NgYzjPyPFkq OdsKyv43pHJKy91InpdgxlGxsKKSJ+CjV0xgabWVdGJqEoO+txCi+wEPpQfNgxEV IIr0nMR/Rm5TY6xGroVgvAXVPvgMpY2SYz46DqBbi3cCAwEAAaOB9TCB8jAdBgNV HQ4EFgQUKFjkLcFeMMvIjEOAoWuJHWthXgIwgcIGA1UdIwSBujCBt4AUKFjkLcFe MMvIjEOAoWuJHWthXgKhgZukgZgwgZUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQIEwZG cmFuY2UxDTALBgNVBAcTBEF1ZGUxDzANBgNVBAoTBkFERUxMQTEUMBIGA1UECxML UXRTbWJzdGF0dXMxFjAUBgNVBAMTDVJPQ0hFUiBEYW5pZWwxJzAlBgkqhkiG9w0B CQEWGGRhbmllbC5yb2NoZXJAYWRlbGxhLm9yZ4IBADAMBgNVHRMEBTADAQH/MA0G CSqGSIb3DQEBBAUAA4IBAQCQkIZlw2mYHGqC6fOFvXnm4qUcZnfRR1T0BHMl/kX3 GlLdQ05QRjfEMeOfGEKG/5F99i3Vq1Ah3T8bZ0XNWZfCNEglgTNHbnmdz0gxAx7Q 9lQeLAZMEnDVtslXQD+mjJBQflFV0RVIGuU+0eG7uHw4MLhartCGbqYk/kULNTfR ikVeUQQRgJp1TImXtFnMstD71ExYnBQ+XpBrbpZb8K+uExsNPi/gDeeC4QqsaUIa sjvZQhklEWh52p3QPzHtA7oKrLOa/cXZmHGA4K8ZuXGjjzqXdbGwNAov+RBj64xK zLqbEzyE6mBkBBxxHVWxZBCmVngmQGiJEaAnfah7UER2 -----END CERTIFICATE----- qtsmbstatus-2.2.1/server/etc/qtsmbstatusd.users0000644000175000017500000000000511720232510021402 0ustar villouvillouroot qtsmbstatus-2.2.1/server/pamthread.h0000755000175000017500000000362111720232510017136 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #ifndef PAMTHREAD_H #define PAMTHREAD_H #include #include class QString; //authentication #include "pam.h" extern void debugQt(const QString & message); class PamThread : public QThread { public: PamThread(); virtual ~PamThread(); static int compteur_objet; bool auth_resu; virtual void run(); void setAuth(const QString & name,const QString & passwd); private: QString Name; QString Passwd; QTextEncoder * m_textEncoder; }; #endif qtsmbstatus-2.2.1/server/qtsmbstatusd.7.gz0000644000175000017500000000173211720232510020263 0ustar villouvillou8Iqtsmbstatusd.7UMs6 W`rix4So=];NJ,n)R!){__gC[lx8^]LihkB"P +*h} 3 X҉T!mMCuq!t&B:+`K;Zau)K*^UH\W)YSR<ȄZvWÝ?Urn:p5f١GR8Eg 2c.Vԥ̄ ¥:y6OIO0VŇӋVX /]jc8N99h*+dM;B,(p(39.A(_}rTbzPhϊkLć)h*@udtF\kApnT h5[IjLO1@aPe-s_Pʔ`4?]GOyw X׊#ayi3/uJΫ-v1 %K9~U_Đ#@ˇy> (?;,TR\逮1%Usí%旮%dkf$1|Hۖ(U1g BU1=7ͭ~ix9CI mkV[ PReFX!ra)gʫ:v߽=}y9-Ηrk!mM-Qdq؆ןEJ}h'{G+u."r7qtsmbstatus-2.2.1/server/smbmanager.h0000755000175000017500000000413611720232510017307 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #ifndef SMBMANAGER_H #define SMBMANAGER_H #include #include #include class QStringList; extern void debugQt(const QString & message); class smbmanager : public QObject { Q_OBJECT public: smbmanager(QObject * parent=0); virtual ~smbmanager(); static int compteur_objet; private: // Private attributes QProcess proc; QString datas; bool requestFailed; QTextDecoder * m_textDecoder; private slots: // Private slots void end_process (); void read_data (); void ReadStderr(); void error(QProcess::ProcessError); signals: // Signals void signal_std_output(const QStringList & ); void ObjError(const QString & ); }; #endif qtsmbstatus-2.2.1/server/pam.cpp0000755000175000017500000000531411720232510016302 0ustar villouvillou#include "pam.h" // most of this code I got from Rene Mayrhofer (rmayr@debian.org) /* Global variables for PAM authentication. */ static char *pamUsername, *pamPassword; /* This is the PAM conversation function, it uses the global variables pamUsername and pamPassword, they have to be initialized before using this function. It simply feeds the password to the PAM library in response to a PAM_PROMPT_ECHO_OFF message */ static int pamConversationFunction(int num_msg, const struct pam_message **msg, struct pam_response **resp, void *appdata_ptr) { struct pam_response *r; int count; // alloc the response r = (struct pam_response*) malloc(sizeof(struct pam_response) * num_msg); if (r == NULL) return PAM_CONV_ERR; for (count=0; countresp, pamUsername, PAM_MAX_RESP_SIZE); break; case PAM_PROMPT_ECHO_OFF: r[count].resp = (char*) malloc(PAM_MAX_RESP_SIZE); strncpy(r[count].resp, pamPassword, PAM_MAX_RESP_SIZE); r[count].resp_retcode = PAM_SUCCESS; break; default: free(r); return PAM_CONV_ERR; } } *resp = r; return PAM_SUCCESS; } /* pamUsername and pamPassword must be set before calling this method. Returns 0 when not successful, 1 when successful; */ int checkUserPass_real() { struct pam_conv pam_conversation; pam_handle_t *pam_h; int pamretval, ret=0; pam_conversation.conv = pamConversationFunction; pam_conversation.appdata_ptr = NULL; pamretval = pam_start(PAM_SERVICE_NAME, pamUsername, &pam_conversation, &pam_h); if (pamretval != PAM_SUCCESS) { //printf("Error initializing PAM library: %s\n", pam_strerror(pam_h, pamretval)); return 0; } pamretval = pam_authenticate(pam_h, PAM_SILENT); if (pamretval != PAM_SUCCESS) { //printf("User could not be authenticated: %s\n", pam_strerror(pam_h, pamretval)); ret = 0; } else { pamretval = pam_acct_mgmt(pam_h, 0); if (pamretval != PAM_SUCCESS) { // printf("User not healthy: %s\n", pam_strerror(pam_h, pamretval)); ret = 0; } else ret = 1; } if (pam_end(pam_h, pamretval) != PAM_SUCCESS) { // printf("Error releasing PAM library: %s\n", pam_strerror(pam_h, pamretval)); return 0; } return ret; } /* authenticate vs pam. Notice: PAM_SERVICE_NAME: pam service has to exist and be set up correctly*/ int auth(char *username, char *passwd) { if (!username) return 0; if (!passwd) return 0; pamUsername = strdup(username); pamPassword = strdup(passwd); if (checkUserPass_real()) return 1; else return 0; } qtsmbstatus-2.2.1/server/main.cpp0000755000175000017500000001733511720232510016457 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include #include #include #include "server.h" #include "process_smbd_exist.h" #include "sendmessage_manager.h" #include "smbmanager.h" #include "pamthread.h" extern void unsupported_options(char *error, const QString & usage); extern bool validatePort(const int & port); extern void debugQt(const QString & message); extern void writeToConsole(const QString & message); extern quint16 port_server; extern QString version_qtsmbstatus; extern bool debug_qtsmbstatus; // default values of configs QString Certificat = "/etc/qtsmbstatusd/server.pem"; QString Private_key = "/etc/qtsmbstatusd/privkey.pem"; QString ssl_password = "password"; bool daemonize=false; //! Allow client to disconnect user QStringList AllowUserDisconnect; //! Allow client to send message QStringList AllowUserSendMsg; Server* myserver; /** Receive SIGTERM, SIGINT or SIGQUIT signal */ void signal_handler(int) { writeToConsole ("Stop QtSmbstatusd , please wait ..."); QTimer::singleShot( 0, myserver, SLOT (stopServer())); } /** Add user to a list \param variable username \sa AllowUserDisconnect */ void GetUserDisconnect(QString variable) { QString allow_user; int fin=0; AllowUserDisconnect.clear(); while (variable.length() > 0) { fin=variable.indexOf (","); if (fin==-1) fin=variable.length(); allow_user=(variable.mid(0,fin)).simplified (); if (allow_user!="") AllowUserDisconnect.append(allow_user); variable=variable.mid(fin+1); } } /** Add user to a list \param variable username \sa AllowUserSendMsg */ void GetUserSend(QString variable) { QString allow_user; int fin=0; AllowUserSendMsg.clear(); while (variable.length() > 0) { fin=variable.indexOf (","); if (fin==-1) fin=variable.length(); allow_user=(variable.mid(0,fin)).simplified(); if (allow_user!="") AllowUserSendMsg.append(allow_user); variable=variable.mid(fin+1); } } /** Read configuration file */ void readConfigFile() { QString ligne; QString attr; QString variable; bool ok; int port; QFile f1( "/etc/qtsmbstatusd/qtsmbstatusd.conf" ); if ( !f1.open( QIODevice::ReadOnly ) ) { writeToConsole("Impossible to read configuration file. Use default settings."); return; } QTextStream t( &f1); while ( !t.atEnd() ) { ligne = t.readLine(); ligne = ligne.simplified(); if ((ligne.mid(0,1) == "#") || (ligne.length ()==0)) continue; if (ligne.contains("=")) { attr= (ligne.mid(0,ligne.indexOf ("="))).simplified(); variable = (ligne.mid(ligne.indexOf ("=")+1)).simplified(); if (attr=="port") { port=(variable).toInt(&ok); // if port is valid if ((ok==true) && (validatePort(port))) port_server=port; } if ((attr=="private_key") && (variable.length()!=0)) Private_key=variable; if ((attr=="certificat") && (variable.length()!=0)) Certificat=variable; if ((attr=="ssl_password") && (variable.length()!=0)) ssl_password=variable; if (attr=="permit_disconnect_user") GetUserDisconnect(variable); if (attr=="permit_send_msg") GetUserSend(variable); } } f1.close(); } int main( int argc,char *argv[] ) { // intercept the signals (kill) signal(SIGTERM, signal_handler); signal(SIGINT, signal_handler); signal(SIGQUIT, signal_handler); bool ok; // help message (option --help) QString usage="\n Usage: qtsmbstatusd -d -m -p -v --help\n\n" " -h|--help : Show this help\n" " -d : Daemonize\n" " -p : TCP port - default = " + QString::number(port_server) +"\n" " -v : Show qtsmbstatusd version\n" " -m : Show debug messages\n\n"; // read configuration file readConfigFile(); QCoreApplication app(argc, argv); // user interface is unused in this program app.setApplicationName("qtsmbstatusd"); #if QT_VERSION >= 0x040400 app.setApplicationVersion(version_qtsmbstatus); #endif app.setOrganizationName("adella.org"); app.setOrganizationDomain("qtsmbstatus.free.fr"); int optch; extern int opterr; opterr = 1; // show getopt errors if( app.arguments().contains("--help")) { writeToConsole(usage); return 0; } while ((optch = getopt(argc, argv, "hdp:vm")) != -1) { switch (optch) { case 'h': writeToConsole(usage); return 0; break; case 'v': writeToConsole("QtSmbstatusd version : " + version_qtsmbstatus); // view qtsmbstatusd version return 0; break; case 'd': daemonize=true; break; case 'p': port_server=(QString(optarg)).toInt(&ok); if (ok==false) { writeToConsole("\nbad syntax for -p\n" + usage); return 1; } if (!validatePort(port_server)) return 1; // port not valid break; case 'm': debug_qtsmbstatus=true; // view message debug break; default: // '?' writeToConsole(usage); return 1; } } if (optind < argc) { printf("\nUnknown option: %s\n\n",argv[optind]); return 1; } // SSL support if (!QSslSocket::supportsSsl()) writeToConsole("This platform don't supports SSL. The socket will fail in the connection phase."); myserver = new Server(Certificat, Private_key, ssl_password , &app); if (! myserver->listen ( QHostAddress::Any, port_server)) { writeToConsole("Failed to bind to port "+QString::number( port_server )); exit(1); } if (daemonize) // if daemonize server (run as server) { if (daemon(0, 0)==-1) { writeToConsole("Error in daemon(0,0) call - exiting"); exit(1); } } app.connect( myserver, SIGNAL( destroyed ()), &app, SLOT(quit()) ); int value_return=app.exec(); // for debug only debugQt("\n\n ___________ OBJECTS _________________"); debugQt("ClientSocket : "+QString::number(ClientSocket::compteur_objet)); debugQt("disconnect_manager : "+QString::number(disconnect_manager::compteur_objet)); debugQt("PamThread : "+QString::number(PamThread::compteur_objet)); debugQt("process_smbd_exist : "+QString::number(process_smbd_exist::compteur_objet)); debugQt("Sendmessage_manager : "+ QString::number(Sendmessage_manager::compteur_objet)); debugQt("smbmanager : "+ QString::number(smbmanager::compteur_objet)); if ((ClientSocket::compteur_objet+disconnect_manager::compteur_objet+PamThread::compteur_objet+process_smbd_exist::compteur_objet +Sendmessage_manager::compteur_objet+smbmanager::compteur_objet)==0) debugQt("\nDeleted objects : OK\n"); else debugQt("\nDeleted objects : Error !\n"); return value_return; } qtsmbstatus-2.2.1/server/pamthread.cpp0000755000175000017500000000477311720232510017502 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include "pamthread.h" /** \class PamThread \brief Authenticate with PAM \date 2008-11-25 \version 1.2 \author Daniel Rocher Use thread (don't block Mainwindow event loop) */ int PamThread::compteur_objet=0; PamThread::PamThread() : QThread() { debugQt("Object PamThread : "+QString::number(++compteur_objet)); auth_resu=false; m_textEncoder = QTextCodec::codecForLocale()->makeEncoder(); } PamThread::~PamThread() { debugQt("Object PamThread : "+QString::number(--compteur_objet)); } /** set Username and password \param name username \param passwd passord */ void PamThread::setAuth(const QString & name,const QString & passwd) { debugQt ("PamThread::setAuth()"); Name=name; Passwd=passwd; } /** PAM Request */ void PamThread::run() { debugQt ("PamThread::run()"); // try to authenticate using username and password if (auth(m_textEncoder->fromUnicode(Name).data() ,m_textEncoder->fromUnicode(Passwd).data())) { // authentication OK debugQt ("PAM AUTH : OK !"); auth_resu=true; } else { // bad authentication debugQt ("PAM AUTH : FALSE !"); } } qtsmbstatus-2.2.1/server/process_smbd_exist.cpp0000755000175000017500000001056511720232510021430 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include "process_smbd_exist.h" int process_smbd_exist::compteur_objet=0; /** \class process_smbd_exist \brief test if PID it's a correct smbd process. \date 2008-11-10 \version 1.2 \author Daniel Rocher \param MyPID PID of process \param USER username \param parent pointer to parent for this object \sa disconnect_manager */ process_smbd_exist::process_smbd_exist(const QString & MyPID,const QString & USER,QObject *parent) : QObject(parent) { debugQt("Object process_smbd_exist : "+QString::number(++compteur_objet)); m_textDecoder = QTextCodec::codecForLocale()->makeDecoder(); State=begin; MyPid=MyPID.simplified(); UserSamba=USER.simplified(); connect( &proc, SIGNAL(finished ( int, QProcess::ExitStatus)),this, SLOT(end_process()) ); connect( &proc, SIGNAL(readyReadStandardOutput ()),this, SLOT(readFromStdout()) ); connect( &proc, SIGNAL(error ( QProcess::ProcessError) ),this, SLOT(error(QProcess::ProcessError)) ); QStringList arguments; arguments << "-c" << "ps -f "+MyPid; debugQt ("check process : sh " + arguments.join(" ")); proc.start("sh",arguments,QIODevice::ReadOnly); } process_smbd_exist::~process_smbd_exist() { debugQt("Object process_smbd_exist : "+QString::number(--compteur_objet)); delete m_textDecoder; } /** an error occurs with the process */ void process_smbd_exist::error(QProcess::ProcessError err) { debugQt("process_smbd_exist::error()"); // error handling qWarning("process sh error"); switch (err) { case 0: debugQt(" ==> FailedToStart"); break; case 1: debugQt(" ==> Crashed"); break; case 2: debugQt(" ==> Timedout"); break; case 3: debugQt(" ==> ReadError"); break; case 4: debugQt(" ==> WriteError"); break; case 5: debugQt(" ==> UnknownError"); break; } emit ObjError("Process sh error. Contact your administrator."); deleteLater (); } /** Read Std output */ void process_smbd_exist::readFromStdout(){ debugQt("process_smbd_exist::readFromStdout()"); QString str=m_textDecoder->toUnicode(proc.readAllStandardOutput()); debugQt(str); if (str.contains (MyPid,Qt::CaseInsensitive) && str.contains ("smbd",Qt::CaseInsensitive)) { // It's a correct process State=find; debugQt("process is smbd"); // disconnect user (kill process) disconnect_manager * kill_process = new disconnect_manager(MyPid,UserSamba,this); connect (kill_process,SIGNAL(ObjError(QString)), this,SIGNAL(ObjError(QString))); connect( kill_process, SIGNAL(destroyed()),this, SLOT(slot_EndProcessKill()) ); } } /** End process. */ void process_smbd_exist::end_process(){ debugQt("process_smbd_exist::end_process()"); if (State!=find) { // It isn't process smbd debugQt("process is not smbd ! Pid: "+MyPid + " User: "+ UserSamba); emit ObjError(tr("Failed to disconnect user")+" "+ UserSamba); deleteLater (); } } /** disconnect_manager terminated */ void process_smbd_exist::slot_EndProcessKill() { debugQt("process_smbd_exist::slot_EndProcessKill()"); deleteLater(); } qtsmbstatus-2.2.1/server/server.pro0000644000175000017500000000346511720232510017053 0ustar villouvillou SOURCES += server.cpp \ clientsocket.cpp \ main.cpp \ disconnect_manager.cpp \ process_smbd_exist.cpp \ sendmessage_manager.cpp \ smbmanager.cpp \ pam.cpp \ ../common/common.cpp \ ../common/core_syntax.cpp \ pamthread.cpp HEADERS += server.h \ clientsocket.h \ disconnect_manager.h \ process_smbd_exist.h \ sendmessage_manager.h \ smbmanager.h \ pam.h \ ../common/core_syntax.h \ pamthread.h TEMPLATE = app QT += network QT -= gui CONFIG += release \ warn_on \ thread TARGET = qtsmbstatusd MOC_DIR = ./build/moc OBJECTS_DIR = ./build DESTDIR = ./bin UI_DIR = ./build/ui RCC_DIR = ./build/rcc LIBS += -lpam DATADIR= /etc/qtsmbstatusd DATAFILES = ./etc/privkey.pem \ ./etc/qtsmbstatusd.conf \ ./etc/server.pem \ ./etc/qtsmbstatusd.users data.path = $$DATADIR data.files += $$DATAFILES PAMDIR = /etc/pam.d PAMFILE = ./pam.d/qtsmbstatusd pam.path = $$PAMDIR pam.files += $$PAMFILE INITDIR= /etc/init.d INITFILE = ./etc/qtsmbstatusd init.path = $$INITDIR init.files += $$INITFILE #doc DOCDIR = /usr/local/share/doc/qtsmbstatusd DOCFILES = ../README \ ../README-FR \ ../INSTALL \ ../COPYING doc.path = $$DOCDIR doc.files += $$DOCFILES #manpage MANDIR = /usr/local/share/man/man7 MANFILES = qtsmbstatusd.7.gz manpage.path = $$MANDIR manpage.files = $$MANFILES target.path = /usr/local/bin/ postinstall.path=/ postinstall.extra+= sh $$(PWD)/postinst.sh \$(INSTALL_ROOT) unix { INSTALLS += data \ pam \ init \ doc \ manpage \ target \ postinstall } qtsmbstatus-2.2.1/server/server.h0000755000175000017500000000364511720232510016505 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #ifndef SERVER_H #define SERVER_H #include #include #include #include "clientsocket.h" class Server : public QTcpServer { Q_OBJECT public: Server(const QString & certificatFile, const QString & privateKeyFile ,const QString & sslPassword , QObject* parent=0 ); virtual ~Server(); void incomingConnection( int socket ); static int compteur_objet; public slots: void stopServer(); private: QSslCertificate certif; QSslKey s_key; }; #endif qtsmbstatus-2.2.1/server/smbmanager.cpp0000755000175000017500000000710011720232510017634 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include "smbmanager.h" int smbmanager::compteur_objet=0; /** \class smbmanager \brief start %smbstatus process \date 2008-11-10 \version 1.2 \author Daniel Rocher \param parent pointer to parent for this object */ smbmanager::smbmanager(QObject *parent ) : QObject(parent) { debugQt("Object smbmanager : "+ QString::number(++compteur_objet)); requestFailed=false; m_textDecoder = QTextCodec::codecForLocale()->makeDecoder(); connect( &proc, SIGNAL(finished ( int, QProcess::ExitStatus) ),this, SLOT(end_process()) ); connect( &proc, SIGNAL(readyReadStandardOutput ()),this, SLOT(read_data()) ); connect( &proc, SIGNAL(readyReadStandardError ()),this, SLOT(ReadStderr()) ); connect( &proc, SIGNAL(error ( QProcess::ProcessError) ),this, SLOT(error(QProcess::ProcessError)) ); proc.start("smbstatus",QIODevice::ReadOnly); } smbmanager::~smbmanager() { debugQt("Object smbmanager : "+ QString::number(--compteur_objet)); delete m_textDecoder; } /** an error occurs with the process */ void smbmanager::error(QProcess::ProcessError err) { debugQt("smbmanager::error()"); // error handling qWarning("process smbstatus error"); switch (err) { case 0: debugQt(" ==> FailedToStart"); break; case 1: debugQt(" ==> Crashed"); break; case 2: debugQt(" ==> Timedout"); break; case 3: debugQt(" ==> ReadError"); break; case 4: debugQt(" ==> WriteError"); break; case 5: debugQt(" ==> UnknownError"); break; } emit ObjError(tr("process smbstatus error")); requestFailed=true; deleteLater (); } /** Read Std error */ void smbmanager::ReadStderr() { debugQt("smbmanager::ReadStderr()"); QString str=m_textDecoder->toUnicode(proc.readAllStandardError()); debugQt(str); emit ObjError(tr("Smbstatus request error")+" : "+ str.replace('\n',' ')); } /** Read Std output */ void smbmanager::read_data () { debugQt("smbmanager::read_data ()"); datas+=m_textDecoder->toUnicode(proc.readAllStandardOutput()); } /** Process terminated */ void smbmanager::end_process () { debugQt("smbmanager::end_process ()"); QStringList list=datas.split("\n"); if (!requestFailed) emit signal_std_output(list); deleteLater(); } qtsmbstatus-2.2.1/server/server.cpp0000755000175000017500000000752311720232510017037 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include #include "server.h" extern void debugQt(const QString & message); int Server::compteur_objet=0; /** \class Server \brief The Server class handles new connections to the %server. For every client that connects, it creates a new ClientSocket \param certificatFile certificat file name \param privateKeyFile private key file name \param sslPassword passphras for private key \param parent pointer to the parent object \sa ClientSocket \date 2008-11-06 \version 2.0 \author Daniel Rocher */ Server :: Server( const QString & certificatFile , const QString & privateKeyFile ,const QString & sslPassword , QObject* parent ) : QTcpServer ( parent ) { debugQt("Server::Server(): "+QString::number(++compteur_objet)); // Certificat QFile f_certif(certificatFile); if (!f_certif.open(QIODevice::ReadOnly | QIODevice::Text)) { qWarning() << "Impossible to open certificat file : " << certificatFile << " !\n\n"; exit (1); } certif=QSslCertificate( &f_certif ); if (! certif.isValid()) { qWarning() << "Bad certificate !\n\n"; exit (1); } debugQt("Certificate OK"); // private key QByteArray sslPassPhras; sslPassPhras.append(sslPassword); QFile f_pKey(privateKeyFile); if (!f_pKey.open(QIODevice::ReadOnly | QIODevice::Text)) { qWarning() << "Impossible to open private key file : " << privateKeyFile << " !\n\n"; exit (1); } s_key=QSslKey( &f_pKey, QSsl::Rsa, QSsl::Pem, QSsl::PrivateKey, sslPassPhras ); if (s_key.isNull()) { qWarning() << "the private key or password are bad !\n\n"; exit (1); } debugQt("Private key OK"); } Server :: ~Server() { debugQt("Server::~Server(): "+QString::number(--compteur_objet)); } /** New client create new Clientsocket \param socketId socket number */ void Server :: incomingConnection( int socketId ) { debugQt ("Server :: incomingConnection()"); ClientSocket *socket = new ClientSocket( this ); // set protocol (SSLv2,v3 and TLS) socket->setProtocol (QSsl::AnyProtocol); socket->setLocalCertificate(certif); socket->setPrivateKey(s_key); if( socket->setSocketDescriptor( socketId ) ) { debugQt( "Calling sslSocket->startServerEncryption()"); socket->startServerEncryption(); } else { qWarning() << "Couldn't setSocketDescriptor(" << socketId << ") for this connection"; delete socket; } } /** Stop server */ void Server ::stopServer() { debugQt("Server::stopServer()"); deleteLater(); } qtsmbstatus-2.2.1/server/pam.d/0000755000175000017500000000000011720232510016012 5ustar villouvillouqtsmbstatus-2.2.1/server/pam.d/qtsmbstatusd0000755000175000017500000000053211720232510020476 0ustar villouvillou# # The PAM configuration file for the qtsmbstatusd daemon # # This is a generic file. Please read documentation. auth required pam_unix.so nullok auth required pam_listfile.so file=/etc/qtsmbstatusd/qtsmbstatusd.users onerr=fail sense=allow item=user account required pam_unix.so session required pam_unix.so password required pam_unix.so qtsmbstatus-2.2.1/server/pam.d/samples/0000755000175000017500000000000011720232510017456 5ustar villouvillouqtsmbstatus-2.2.1/server/pam.d/samples/qtsmbstatusd.redhat0000644000175000017500000000040211720232510023401 0ustar villouvillou#%PAM-1.0 auth include system-auth auth required pam_listfile.so file=/etc/qtsmbstatusd/qtsmbstatusd.users onerr=fail sense=allow item=user account include system-auth password include system-auth session include system-authqtsmbstatus-2.2.1/server/pam.d/samples/qtsmbstatusd.debian0000644000175000017500000000033611720232510023362 0ustar villouvillou#%PAM-1.0 @include common-auth auth required pam_env.so auth required pam_listfile.so file=/etc/qtsmbstatusd/qtsmbstatusd.users onerr=fail sense=allow item=user @include common-account @include common-sessionqtsmbstatus-2.2.1/server/pam.d/samples/qtsmbstatusd.suse0000644000175000017500000000037011720232510023115 0ustar villouvillou#%PAM-1.0 auth include common-auth auth required pam_listfile.so file=/etc/qtsmbstatusd/qtsmbstatusd.users onerr=fail sense=allow item=user account include common-account password include common-password session include common-sessionqtsmbstatus-2.2.1/server/disconnect_manager.h0000755000175000017500000000413611720232510021016 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #ifndef DISCONNECT_MANAGER_H #define DISCONNECT_MANAGER_H #include #include #include class QString; extern void debugQt(const QString & message); class disconnect_manager : public QObject { Q_OBJECT public: disconnect_manager(const QString & MyPID,const QString & USER,QObject *parent=0); virtual ~disconnect_manager(); static int compteur_objet; private: // Private attributes QProcess proc; QString MyPid; QString user; QTextDecoder * m_textDecoder; private slots: // Private slots void end_process(); void ReadStderr(); void error(QProcess::ProcessError); signals: // Signals void ObjError(const QString & ); }; #endif qtsmbstatus-2.2.1/server/preuninst.sh0000755000175000017500000000113411720232510017400 0ustar villouvillou#!/bin/bash # # Stop service # Remove System-V style init script links # ROOT_DIR=$1 # stop service echo "stop qtsmbstatusd service" $ROOT_DIR/etc/init.d/qtsmbstatusd stop # service echo "remove System-V style init script links" if test -s $ROOT_DIR/etc/debian_version; then # Debian systems echo "Debian systems" update-rc.d -f qtsmbstatusd remove 2>/dev/null elif test -s $ROOT_DIR/etc/SuSE-release; then # SuSE systems echo "SuSE systems" insserv -r qtsmbstatusd 2>/dev/null else # RedHat systems echo "RedHat systems" /sbin/chkconfig --del qtsmbstatusd 2>/dev/null fi echo "Done." qtsmbstatus-2.2.1/server/clientsocket.h0000644000175000017500000000504211720232510017654 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #ifndef CLIENTSOCKET_H #define CLIENTSOCKET_H #include #include #include "pamthread.h" class ClientSocket: public QSslSocket { Q_OBJECT public: ClientSocket(QObject* parent=0); virtual ~ClientSocket(); static int compteur_objet; private slots: void core (); void SocketError(); void SslErrors (const QList & listError); void socketEncrypted(); void pamFinished(); void ObjError(const QString & error_txt); void slot_smbstatus(const QStringList &); private: //! if %user authenticated bool AuthUser; //! if client is authorized to disconnect %user bool permitDisconnectUser; //! if client is authorized to send popup message bool permitSendMsg; PamThread * pamthread; enum command {auth_rq,auth_ack,end,kill_user,send_msg,smb_rq,smb_data,end_smb_rq,whoiam, server_info,error_auth,error_command,error_obj,echo_request,echo_reply} ; void sendToClient(int cmd,const QString & inputArg1="",const QString & inputArg2=""); void CmdKillUser(const QString & texte); void CmdSendMsg(const QString & texte); void CmdSmbRq(); void CmdAuthRq(const QString & texte); }; #endif qtsmbstatus-2.2.1/server/postinst.sh0000755000175000017500000000164511720232510017243 0ustar villouvillou#!/bin/bash # Install System-V style init script links # Start service ROOT_DIR=$1 chmod 640 $ROOT_DIR/etc/qtsmbstatusd/* chmod 750 $ROOT_DIR/etc/init.d/qtsmbstatusd # service echo "install System-V style init script links" if test -s $ROOT_DIR/etc/debian_version; then # Debian systems echo "Debian systems" update-rc.d -f qtsmbstatusd remove 2>/dev/null update-rc.d qtsmbstatusd defaults elif test -s $ROOT_DIR/etc/SuSE-release; then # SuSE systems echo "SuSE systems" insserv -r qtsmbstatusd 2>/dev/null insserv qtsmbstatusd else # RedHat systems echo "RedHat systems" /sbin/chkconfig --del qtsmbstatusd 2>/dev/null /sbin/chkconfig --add qtsmbstatusd fi # start service echo "start qtsmbstatusd service" $ROOT_DIR/etc/init.d/qtsmbstatusd start echo "Done." echo echo "WARNING:" echo " PAM configuration file (/etc/pam.d/qtsmbstatusd) is distribution dependent." echo " Please read the README file." echo qtsmbstatus-2.2.1/server/process_smbd_exist.h0000755000175000017500000000434111720232510021070 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #ifndef PROCESS_SMBD_EXIST_H #define PROCESS_SMBD_EXIST_H #include #include #include class QString; #include "disconnect_manager.h" extern void debugQt(const QString & message); class process_smbd_exist : public QObject { Q_OBJECT public: process_smbd_exist(const QString & MyPID, const QString & USER,QObject *parent = 0); virtual ~process_smbd_exist(); static int compteur_objet; private: // Private attributes QProcess proc; QString MyPid; QString UserSamba; enum {begin,find} State; QTextDecoder * m_textDecoder; private slots: // Private slots void end_process(); void readFromStdout(); void error(QProcess::ProcessError); protected slots: virtual void slot_EndProcessKill(); signals: // Signals void ObjError(const QString & ); }; #endif qtsmbstatus-2.2.1/server/sendmessage_manager.cpp0000755000175000017500000001036011720232510021512 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include "sendmessage_manager.h" /** \class Sendmessage_manager \brief Send message popup (smbclient required) \date 2008-11-10 \version 1.2 \author Daniel Rocher \param machine Machine name \param message message to be sent \param parent pointer to parent for this object */ int Sendmessage_manager::compteur_objet=0; Sendmessage_manager::Sendmessage_manager(const QString & machine, const QString & message,QObject *parent) : QObject(parent) { debugQt("Object Sendmessage_manager : "+ QString::number(++compteur_objet)); m_textDecoder = QTextCodec::codecForLocale()->makeDecoder(); to_machine=machine.simplified(); my_message=message.simplified(); my_message.replace( "\"", " ").replace( "\\", " "); my_message="echo " + my_message + " | smbclient -M " + to_machine + " -N"; connect( &proc, SIGNAL(finished ( int, QProcess::ExitStatus)),this, SLOT(end_process()) ); connect( &proc, SIGNAL(readyReadStandardOutput ()),this, SLOT(readFromStdout()) ); connect( &proc, SIGNAL(readyReadStandardError ()),this, SLOT(ReadStderr()) ); connect( &proc, SIGNAL(error ( QProcess::ProcessError) ),this, SLOT(error(QProcess::ProcessError)) ); QByteArray str; str.append ( "sh -c \"" + my_message + "\""); debugQt ("Send message to "+machine+ " - "+ str); proc.start(str,QIODevice::ReadOnly); } Sendmessage_manager::~Sendmessage_manager(){ debugQt("Object Sendmessage_manager : "+ QString::number(--compteur_objet)); delete m_textDecoder; } /** an error occurs with the process */ void Sendmessage_manager::error(QProcess::ProcessError err) { debugQt("Sendmessage_manager::error()"); // error handling qWarning("process smbclient error"); switch (err) { case 0: debugQt(" ==> FailedToStart"); break; case 1: debugQt(" ==> Crashed"); break; case 2: debugQt(" ==> Timedout"); break; case 3: debugQt(" ==> ReadError"); break; case 4: debugQt(" ==> WriteError"); break; case 5: debugQt(" ==> UnknownError"); break; } emit ObjError(tr("process smbclient error")); deleteLater (); } /** Read Std error */ void Sendmessage_manager::ReadStderr(){ debugQt("Sendmessage_manager::ReadStderr()"); QString str=m_textDecoder->toUnicode(proc.readAllStandardError()); debugQt(str); emit ObjError(tr("Failed to send message")+" : "+ str ); } /** Read Std output */ void Sendmessage_manager::readFromStdout(){ debugQt("Sendmessage_manager::readFromStdout()"); QString str(m_textDecoder->toUnicode(proc.readAllStandardOutput())); debugQt(str); if (str.contains ("Cannot resolve",Qt::CaseInsensitive) or str.contains (" failed",Qt::CaseInsensitive) or str.contains ("ERRSRV",Qt::CaseInsensitive)) emit ObjError(tr("Could not send message to") + " " + to_machine); } /** Process terminated */ void Sendmessage_manager::end_process(){ debugQt("Sendmessage_manager::end_process()"); deleteLater (); } qtsmbstatus-2.2.1/server/pam.h0000755000175000017500000000040211720232510015740 0ustar villouvillou#include #include #include #include #include extern "C" { #include #include } #define PAM_SERVICE_NAME "qtsmbstatusd" int auth(char *username,char* passwd); qtsmbstatus-2.2.1/qtsmbstatus.pro0000755000175000017500000000011311720232510016617 0ustar villouvillou TEMPLATE=subdirs SUBDIRS += client \ server \ light qtsmbstatus-2.2.1/README-FR0000644000175000017500000001372011720232510014675 0ustar villouvillou-*------------------------------------------------------------------------+- QtSmbstatus http://qtsmbstatus.free.fr/ Daniel Rocher - ADELLA -*------------------------------------------------------------------------+- Ce programme est distribue selon les termes de la General Public License version 2 QtSmbstatus permet de visualiser en temps reel, les ressources utilisees sur un serveur samba. Il s'agit d'une GUI (interface utilisateur) pour smbstatus. Cette application a un fonctionnement client/serveur. Les connexions sont securisees via une couche SSL et une authentification est requise pour se connecter au serveur. QtSmbstatus serveur doit-etre installé avec le serveur Samba. qtsmbstatus-server fournit l'application cote serveur. qtsmbstatus-client fournit l'application cliente qtsmbtatus. qtsmbstatus-light fournit l'application legere qui ne fonctionne que localement et ne necessite pas qtsmbstatus-server. 1/ Compilation a partir des sources 2/ Options en ligne de commande 3/ Demarrage et arret du serveur 4/ Configurer le serveur 5/ Fonctionnement du client sous X11 (Unix/Linux) 6/ Fonctionnement du client sous Windows ------------------------------------------------------------- 1/ Compilation a partir des sources: ------------------------------------------------------------- Pour installer qtsmbstatus light: ********************************* verifier les dependances: qt4-dev>=4.3 cd light qmake (ou qmake-qt4) make puis en tant tant que root: make install Pour installer le serveur: ************************** Verifier les dependances: pam-dev et qt4-dev>=4.3 cd server qmake (ou qmake-qt4) make puis en tant tant que root: make install Pour installer le client: ************************* verifier les dependances: qt4-dev>=4.3 cd client qmake (ou qmake-qt4) make puis en tant tant que root: make install ------------------------------------------------------------- 2/ Options en ligne de commande: ------------------------------------------------------------- Des options peuvent etre passees au serveur ainsi qu'au client, pour les connaitres: qtsmbstatusd --help (pour le serveur) qtsmbstatus --help (pour le client) qtsmbstatusl --help (pour la version light) ------------------------------------------------------------- 3/ Demarrage et arret du serveur: ------------------------------------------------------------- Demarrage du serveur: /etc/init.d/qtsmbstatusd start ou service qtsmbstatusd start Port par defaut: 4443 Arret du serveur: /etc/init.d/qtsmbstatusd stop ou service qtsmbstatusd stop ------------------------------------------------------------- 4/ Configurer le serveur: ------------------------------------------------------------- Les fichiers de configuration du serveur se trouvent sur: /etc/qtsmbstatusd/ contenu: privkey.pem qtsmbstatusd.conf qtsmbstatusd.users server.pem privkey.pem : cle prive (attention aux droits: 640 ! ) pour creer la votre: openssl genrsa -des3 -out privkey.pem 2048 server.pem : certificat autosigne avec la cle privkey.pem pour creer le votre: openssl req -new -x509 -key privkey.pem -out server.pem -days 10000 Les options sont enregistrees dans: qtsmbstatusd.conf port : Port TCP ecoute par le serveur private_key : Cle prive certificat : Certificat ssl ssl_password : mot de passe pour le certificat permit_disconnect_user : autorise un client a deconnecter un utilisateur Vous pouvez autoriser un client a deconnecter un utilisateur. Utilisez son Username ou 'all' pour autoriser tous les clients. permit_send_msg : Autorise un client a envoyer un message Vous pouvez autoriser un utilisateur a envoyer un message. Utilisez son Username ou 'all' pour autoriser tous les clients. == PAM: == Le fichier de configuration de PAM est dependant de la distribution. Si la connexion échoue, il faudra le modifier: /etc/pam.d/qtsmbstusd Exemples de configuration: ./server/pam.d/samples/ Les utilisateurs autorises a se connecter sont dans: qtsmbstatusd.users (root par defaut) ------------------------------------------------------------- 5/ Fonctionnement du client sous X11 (Unix/Linux) : ------------------------------------------------------------- Executez sous X11: qtsmbstatus Rentrez l'adresse IP du serveur, connectez et authentifiez-vous Clic droit sur un utilisateur pour lui envoyer un message ou le deconnecter (smbclient est necessaire pour les popupwindows) ------------------------------------------------------------- 6/ Fonctionnement du client sous Windows : ------------------------------------------------------------- Installez qtsmbstatus-client.X.X.X.exe Executez qtsmbstatus.exe Rentrez l'adresse IP du serveur, connectez et authentifiez-vous Clic droit sur un utilisateur pour lui envoyer un message ou le deconnecter (smbclient est necessaire pour les popupwindows) qtsmbstatus-2.2.1/common/0000755000175000017500000000000011720232510014775 5ustar villouvillouqtsmbstatus-2.2.1/common/core_syntax.cpp0000755000175000017500000001034211720232510020042 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include #include #include "core_syntax.h" /** \class core_syntax \brief This class manage the dialog between client and %server \date 2008-11-06 \version 1.2 \author Daniel Rocher Client and %server use a protocol : \verbatim command client server definition - auth_rq -> Authentication request (login+password) - auth_ack <- Authentication OK - end <-> Stop connection - kill_user -> Disconnect an user - send_msg -> Send a popup windows - smb_rq -> Sambstatus request - smb_data <- smbstatus reply - end_smb_rq <- smbstatus command finish - whoiam <-> version and application name - server_info <- Server Information (right for current client : permit disconnect an user,...) - error_auth <- Authentication error (bad password,...) - error_command <-> Command error - error_obj <- Server wants to open a dialogbox to visualize an error - echo_request <-> Test if connection is correct (is not dead) (obsolete) - echo_reply <-> connection is correct (obsolete) \endverbatim syntax: \verbatim [command]field1;field2 \endverbatim - command is an integer - field1 and field2 are optional example: \verbatim [auth_rq]login;password [end] [smb_rq] \endverbatim */ core_syntax::core_syntax(const QString & mte) { myTxt=mte; } core_syntax::~core_syntax() { } /** \param mte line to be analyzed */ void core_syntax::setValue(const QString & mte) { myTxt=mte; } /** Return value of an argument \param index index of argument \return value of argument index */ QString core_syntax::returnArg(int index) { int debut; int fin; int i=0; if (index==0) { QRegExp rx( "^\\[\\d\\d?\\]" ); debut=rx.indexIn(myTxt); if (debut != -1) { fin = myTxt.indexOf("]"); return (myTxt.mid(debut+1 , fin-debut -1 )); } } //same length without escape key QString withoutEscapeKeyTxt=myTxt; withoutEscapeKeyTxt.replace("\\\\","AA").replace("\\;","AA"); debut = myTxt.indexOf("]"); if (debut==-1) return (""); for (i=1 ; i<=index ; ++i) { debut+=1; fin=withoutEscapeKeyTxt.indexOf(";",debut); if (index==i) { if (fin!=-1) return (removeEscapeKeys(myTxt.mid(debut , fin-debut ))); else return (removeEscapeKeys(myTxt.mid(debut ))); } if (fin==-1) { return (""); // nothing to do } debut=fin; } return (""); } /** return string with escape keys \sa core_syntax removeEscapeKeys */ QString addEscapeKeys(QString txt) { return txt.replace("\\","\\\\").replace(";","\\;"); } /** return string without escape keys \sa core_syntax addEscapeKeys */ QString removeEscapeKeys(QString txt) { return txt.replace("\\\\","\\").replace("\\;",";"); } qtsmbstatus-2.2.1/common/core_syntax.h0000755000175000017500000000342311720232510017511 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #ifndef CORE_SYNTAX_H #define CORE_SYNTAX_H #include extern QString addEscapeKeys(QString txt); extern QString removeEscapeKeys( QString txt); class core_syntax { public: core_syntax(const QString & = ""); virtual ~core_syntax(); QString returnArg(int index); void setValue(const QString &); private: QString myTxt; }; #endif qtsmbstatus-2.2.1/common/common.cpp0000755000175000017500000000777111720232510017010 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ //include Qt #include #include #include /** \mainpage QtSmbstatus \image html samba.png \section Introduction Introduction QtSmbstatus is a GUI (graphical %user interface) for %smbstatus. QtSmbstatus was designed as a client/server system secured with SSL. A login and password is required to log on to %server (PAM). qtsmbstatus-server (qtsmbstatusd) ought to be installed on host where SAMBA executes. To use QtSmbstatus only locally (without qtsmbstatus-server), see qtsmbstatusl. qtsmbstatusl only works locally (no remote access). Commands: - qtsmbstatus client of qtsmbstatus - qtsmbstatusd %server of qtsmbstatus - qtsmbstatusl qtsmbstatus light \endverbatim This program is licensed to you under the terms of the GNU General Public License version 2 */ // variables environnements QString version_qtsmbstatus="2.2.1"; uint int_qtsmbstatus_version=221; QString date_qtsmbstatus="2012-02-19"; QString auteur_qtsmbstatus="Daniel Rocher"; QString mail_qtsmbstatus="daniel.rocher@adella.org"; QString web_qtsmbstatus="http://qtsmbstatus.free.fr"; //default value //! view debug messages bool debug_qtsmbstatus=false; //! TCP port quint16 port_server=4443; /** detect text encodings for locale \sa writeToConsole debugQt */ QTextEncoder * encoder=QTextCodec::codecForLocale()->makeEncoder(); /** Write to console. The message is printed to stderr. */ void writeToConsole (const QString & message) { qDebug("%s",encoder->fromUnicode ( message ).data()); } /** view debug messages. The message is printed to stderr only if debug is enabled. */ void debugQt(const QString & message) {if (debug_qtsmbstatus) writeToConsole(message); } //! command line error void unsupported_options(char *error, const QString & usage) { writeToConsole(QString("\n Unsupported option : %1 \n%2").arg(error).arg(usage)); } /** Convert string "true" and "false" to boolean \sa BoolToStr */ bool StrToBool(QString & value) { if (value.toLower()=="true") return true; return false; } /** Convert bool to string \sa StrToBool */ QString BoolToStr(bool & value) { if (value) return "true"; return "false"; } /** Test if TCP port is valid \param port port number \retval true TCP port is valid \retval false TCP port is not valid */ bool validatePort(const int & port) { if ((port < 1024) || (port > 49151)) { writeToConsole ( "available port : > 1023 and < 49152"); return false; } return true; } qtsmbstatus-2.2.1/client/0000755000175000017500000000000011720232510014763 5ustar villouvillouqtsmbstatus-2.2.1/client/linecore.cpp0000644000175000017500000001425411720232510017275 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include #include "linecore.h" /** \class LineCore \brief Parse lines of %smbstatus reply. \date 2008-11-11 \version 1.2 \author Daniel Rocher \sa smbstatus */ int LineCore::compteur_objet=0; // tolerance in the research of the beginning or the end of a field - advised: 2 const short int LineCore::back=2; LineCore::LineCore(QObject *parent) : QObject(parent) { debugQt("Object LineCore : "+QString::number(++compteur_objet)); initHead=false; // true if InitHeader has been processed // true if Analysis has been processed analysisProc=false; } LineCore::~LineCore() { debugQt("Object LineCore : "+QString::number(--compteur_objet)); listElement.clear(); } /** Init header. Received header for one section. \param OneHeader header of one section (connections, shares, locked files, ...). Example: \verbatim Pid DenyMode Access R/W Oplock Name \endverbatim */ void LineCore::InitHeader(const QString & OneHeader) { debugQt("LineCore::InitHeader("+OneHeader+")"); initHead=true; header=OneHeader; analysisProc=false; // Clear valuelist listElement.clear(); } /** Find field on header Example: "Pid", "DenyMode", . \param element field \return index or -1 if field doesn't exist \sa InitHeader */ int LineCore::InitElement(const QString & element) { debugQt("LineCore::InitElement("+element+")"); if (!initHead) return false; record mon_record; mon_record.Begin=header.indexOf (element,0,Qt::CaseInsensitive); // field doesn't exist if (mon_record.Begin==-1) return -1; // find first space+characters after 'element' mon_record.End=header.indexOf(QRegExp("[\\s][\\S]"),mon_record.Begin+element.length()); mon_record.New_Begin=0; mon_record.New_End=0; mon_record.Value=""; mon_record.Ident=element; // add field characteristics on a record listElement.append(mon_record); return listElement.size()-1; } /** Analysis one line \param OneLine one line of %smbstatus (without the header). Example: \verbatim 3456 DENY_NONE 0x1 RDONLY NONE /home/villou/Utilitaires/qtsmbstatus.pdf Fri Sep 10 14:14:12 2004 \endverbatim */ void LineCore::Analysis(const QString & OneLine) { debugQt("LineCore::Analysis()"); if (!initHead) return; // if first time in this section, sort if (!analysisProc) SortElements(); analysisProc=true; line=OneLine; int resu=0; int CumulDelta=0; QList::iterator itI; for (itI = listElement.begin(); itI != listElement.end(); ++itI ) { (*itI).New_Begin=(*itI).Begin; (*itI).New_End=(*itI).End; // if not first field if ((*itI).Begin!=0) { resu=line.indexOf(QRegExp("[\\s][\\S]"),-back+(*itI).Begin+CumulDelta); (*itI).New_Begin=resu+1; CumulDelta=(*itI).New_Begin-(*itI).Begin; } // if last field if ((*itI).End==-1) { (*itI).New_End=line.length(); } else { resu=line.indexOf(QRegExp("[\\s][\\S]"),-back+(*itI).End+CumulDelta); (*itI).New_End=resu; CumulDelta=(*itI).New_End-(*itI).End; } (*itI).Value=(line.mid((*itI).New_Begin,(*itI).New_End-(*itI).New_Begin)).trimmed(); /*debugQt( " Begin:"+QString::number((*itI).Begin)+ " End:"+QString::number((*itI).End)+ " New_Begin:"+QString::number((*itI).New_Begin)+ " New_End:"+QString::number((*itI).New_End)+ " CumulDelta:"+QString::number(CumulDelta)+ " Ident:"+(*itI).Ident+ " Value:"+(*itI).Value); */ } } /** Return one field contents \param element field name \return one field contents */ QString LineCore::ReturnElement(const QString & element) { debugQt("LineCore::ReturnElement("+element+")"); if (!initHead || !analysisProc) return ""; QList::iterator itI; for (itI = listElement.begin(); itI != listElement.end(); ++itI ) { if (((*itI).Ident).toLower()==element.toLower ()) return ((*itI).Value); } // if doesn't exist return ""; } /** Return one field contents \param index index of field \return one field contents */ QString LineCore::ReturnElement(int index) { debugQt("LineCore::ReturnElement("+QString::number(index)+")"); if (!initHead || !analysisProc) return ""; if ( index >= 0 && index < listElement.size()) { return listElement.at(index).Value; } else { // if doesn't exist return ""; } } /** Sort records **/ void LineCore::SortElements() { debugQt("LineCore::SortElements()"); if (!initHead) return; int plus_petit; QList::iterator itI; QList::iterator itJ; QList::iterator position; record mon_record; for (itI = listElement.begin(); itI != listElement.end(); ++itI ) { plus_petit=(*itI).Begin; position=itI; for (itJ = itI; itJ != listElement.end(); ++itJ) { if ((*itJ).Begin < plus_petit) { plus_petit=(*itJ).Begin; position=itJ; } } if (position!=itI) { mon_record=*itI; *itI=*position; *position=mon_record; } } } qtsmbstatus-2.2.1/client/login_windows.cpp0000755000175000017500000000420611720232510020356 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include "login_windows.h" /** \class login_windows \brief InputBox login and password \date 2008-11-11 \version 1.1 \param parent pointer to the parent object \author Daniel Rocher */ login_windows::login_windows(QWidget *parent) : QDialog(parent) { debugQt("login_windows::login_windows()"); this->setAttribute(Qt::WA_DeleteOnClose); setupUi(this); input_username->setText ( username_login ); input_password->setText ( passwd_login ); } login_windows::~login_windows() { debugQt("login_windows::~login_windows()"); } void login_windows::on_bt_login_clicked() { debugQt("login_windows::on_bt_login_clicked()"); username_login=input_username->text(); passwd_login=input_password->text(); } qtsmbstatus-2.2.1/client/configure_windows.cpp0000644000175000017500000001116411720232510021225 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include #include "configure_windows.h" extern uint int_qtsmbstatus_version; /** \class configure_windows \brief Configure Qtsmbstatus-Client \param parent pointer to the parent object \date 2007-06-21 \version 1.4 \author Daniel Rocher */ configure_windows::configure_windows(QWidget *parent) : QDialog(parent) { debugQt("configure_windows::configure_windows()"); this->setAttribute(Qt::WA_DeleteOnClose); setupUi(this); QSettings settings; settings.beginGroup("/Configuration"); uint last_known_release=settings.value("lastKnownRelease",int_qtsmbstatus_version).toUInt(); if (last_known_release>int_qtsmbstatus_version) { labelNewRelease->setText("

" +labelNewRelease->text()+" : " +""+ +"Downloads

"); labelNewRelease->setTextFormat ( Qt::RichText ); labelNewRelease->setTextInteractionFlags (Qt::LinksAccessibleByMouse); labelNewRelease->setOpenExternalLinks (true); } else labelNewRelease->hide(); spinInterval->setValue (settings.value("interval",interval).toInt()); EditHost->setText (settings.value("hostAddress",host).toString()); EditUsername->setText(settings.value("username",username_login).toString()); checkAutoconnect->setChecked (settings.value("autoconnect",autoconnect).toBool()); checkViewHiddenShares->setChecked (settings.value("viewHiddenShares",view_hidden_shares).toBool()); checkIcon->setChecked(settings.value("systemTray",iconize).toBool()); checkNotification->setChecked(settings.value("notificationMessages",show_messages).toBool()); checkLogActivity->setChecked(settings.value("logActivity",log_activity).toBool()); limitLogBox->setValue (settings.value("limitLog",limitLog).toInt()); checkNewRelease->setChecked(settings.value("checkNewRelease",check_new_release).toBool()); // first time on_checkIcon_toggled(checkIcon->isChecked()); on_checkLogActivity_toggled(checkLogActivity->isChecked()); settings.endGroup(); } configure_windows::~configure_windows() { debugQt("configure_windows::~configure_windows()"); } void configure_windows::on_checkIcon_toggled(bool checked ) { debugQt("configure_windows::on_checkIcon_toggled()"); checkNotification->setEnabled(checked); } void configure_windows::on_checkLogActivity_toggled(bool checked) { debugQt("configure_windows::on_checkLogActivity_toggled()"); limitLogBox->setEnabled(checked); } /** Save configuration */ void configure_windows::on_okButton_clicked() { debugQt("configure_windows::on_okButton_clicked() - Save Config file"); interval = spinInterval->value (); host= EditHost->text (); username_login = EditUsername->text(); autoconnect = checkAutoconnect->isChecked (); view_hidden_shares = checkViewHiddenShares->isChecked (); iconize=checkIcon->isChecked(); show_messages=checkNotification->isChecked(); log_activity=checkLogActivity->isChecked(); limitLog=limitLogBox->value (); check_new_release=checkNewRelease->isChecked(); // save configuration writeConfigFile(); emit (configuration_changed()); } qtsmbstatus-2.2.1/client/user.cpp0000644000175000017500000001053311720232510016447 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ /** \class user \brief Class of user items \date 2008-11-08 \version 2.0 \author Daniel Rocher \sa server machine service 'user' is parent of 'service' and child of 'machine' */ #include #include "user.h" extern void debugQt(const QString & message); extern QList QTreeWidgetItemList; int user::compteur_objet=0; user::user(QTreeWidgetItem * parent,const QString & PID,const QString & Username, const QString & Group) : QTreeWidgetItem(parent) { debugQt("Object user : "+QString::number(++compteur_objet)); QTreeWidgetItemList.append(this); mark=true; username=Username; pid=PID; group=Group; QIcon icon; icon.addPixmap(QPixmap(":/icons/user.png"), QIcon::Normal, QIcon::Off); this->setIcon( 0, icon ); //icon this->setText ( 0, Username) ; } user::~user(){ debugQt("Object user : "+QString::number(--compteur_objet)); QTreeWidgetItemList.removeAll (this); } /** add share if not exist \retval true already exist \retval false is new */ bool user::append_share(const QString & PID,const QString & Share,const QString & DateOpen) { bool exist=false; for (int i=0; i < this->childCount (); ++i ) { service * Child= dynamic_cast(this->child (i) ); if (!Child) break; // if child exist if ((Child->pid==PID) && (Child->share==Share) ) { exist=true; // Mark this object Child->mark=true; return true; // exit loop } } // if not exist add it if (!exist) new service (this,PID,Share,DateOpen); return false; } /** add lockedfile if not exist \retval true already exist \retval false is new */ bool user::append_lockedfile(const QString & PID,const QString & File,const QString & DenyMode,const QString & RW,const QString & Oplock,const QString & DateOpen) { bool exist=false; for (int i=0; i < this->childCount (); ++i ) { service * Child= dynamic_cast(this->child (i) ); if (!Child) break; // if child exist if ((Child->pid==PID) && (Child->filename==File) && (Child->denymode==DenyMode) && (Child->rw==RW) && (Child->oplock==Oplock) && (Child->dateopen==DateOpen) ) { exist=true; // Mark this object Child->mark=true; return true; // exit loop } } // if not exist add it if (!exist) new service (this,PID,File,DenyMode,RW,Oplock,DateOpen); return false; } /** Refresh view. Delete obsolete objects (mark = false). \sa mark_childs */ void user::refresh_childs() { for (int i=0; i < this->childCount (); ++i ) { service * Child= dynamic_cast(this->child (i) ); if (!Child) break; // if child doesn't exist any more if (!Child->mark) { delete Child; // delete item and his children --i; continue; } } } /** Mark all children. - mark = true -> exist - mark = false -> obsolete \sa refresh_childs */ void user::mark_childs() { for (int i=0; i < this->childCount (); ++i ) { service * Child= dynamic_cast(this->child (i) ); if (!Child) break; Child->mark=false; } } qtsmbstatus-2.2.1/client/mysortfilterproxymodel.cpp0000644000175000017500000000631611720232510022363 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include "mysortfilterproxymodel.h" /** \class MySortFilterProxyModel \brief Reimplement QSortFilterProxyModel \date 2007-06-27 \version 1.0 \author Daniel Rocher \param share_label the label of share used in LogForm \param file_label the label of file used in LogForm \param parent parent of this object \sa LogForm */ MySortFilterProxyModel::MySortFilterProxyModel(QString share_label,QString file_label,QObject *parent) : QSortFilterProxyModel(parent) { fileLabel = file_label; shareLabel = share_label; MShare=true; MFile=true; } MySortFilterProxyModel::~MySortFilterProxyModel() { } /** Show/hide shares */ void MySortFilterProxyModel::setFilterShare(bool value) { MShare = value; filterChanged(); } /** Show/hide files */ void MySortFilterProxyModel::setFilterFile(bool value) { MFile = value; filterChanged(); } /** reimplement filterAcceptsRow */ bool MySortFilterProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const { QModelIndex index0 = sourceModel()->index(sourceRow, 0, sourceParent); QModelIndex index1 = sourceModel()->index(sourceRow, 1, sourceParent); QModelIndex index2 = sourceModel()->index(sourceRow, 2, sourceParent); QModelIndex index3 = sourceModel()->index(sourceRow, 3, sourceParent); QModelIndex index4 = sourceModel()->index(sourceRow, 4, sourceParent); return ((sourceModel()->data(index0).toString().contains(filterRegExp()) || sourceModel()->data(index1).toString().contains(filterRegExp()) || sourceModel()->data(index2).toString().contains(filterRegExp()) || sourceModel()->data(index3).toString().contains(filterRegExp())) && ((sourceModel()->data(index4).toString().contains(fileLabel) && MFile==true) || (sourceModel()->data(index4).toString().contains(shareLabel) && MShare==true))); } qtsmbstatus-2.2.1/client/icons/0000755000175000017500000000000011720232510016076 5ustar villouvillouqtsmbstatus-2.2.1/client/icons/folder_open.png0000644000175000017500000000126611720232510021105 0ustar villouvillouPNG  IHDRasBIT|dtEXtSoftwarewww.inkscape.org<HIDAT8=OSQϹR,hJF$_:8bln|F߀/`5 Ԙ(Z-Bс?<955 Vw#>^ÌBT+ew0K_i܍Ђm;p!paߢ^!ӳJ9ssãGRԚÏl=V9GfCʯOPD AL+XKysx~+m5((k "҇$ @=H9-^v6=x\ ٓ[yݬeQ=@ pMZCϵlU:2VBը7\soVǓVZ7{b7R΅dݛNEcV:sI품XZVxC|s9tETֹ& ٣TR6YDԞU: IENDB`qtsmbstatus-2.2.1/client/icons/connect_no.png0000644000175000017500000000177711720232510020745 0ustar villouvillouPNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb,hu߿)L>a_Fǯ ?`2 &n^>^>Nmÿ~2_YSb/S7FSו,qVg8s~ b.?z 1^Ǐ31X:(2@'>a?|MdYOU삂^e_ R r2ҏxV&f0CER7P3## 6LYU!*DAYf#0L`##JÏ  F P#3@Cd<}L~?G:+DV&FF!L £Z9- l<s`cl'@1+)y33ӛnq#_䟮-f&/5PA@O-Q5/$YS0<6{E}YARK^TbPf`eaxPy @,虃=Ja$! ,f ̨A g=ЛeIENDB`qtsmbstatus-2.2.1/client/icons/server.png0000755000175000017500000000071211720232510020115 0ustar villouvillouPNG  IHDRa pHYs  gAMA|Q cHRMz%u0`:o_F@IDATxb?:Ȭߍ)]d2Ψp ]=@0AݳGlk`<@4DЀn qA+ ʀ"h!@@8s2 %e`dQٳg3|b [Ȉ5|_32&b( gϞ?wJJJΞ=ˠ;;;Ǐ?Pfff&&Dxrqq1tuu1}ݻw ?d(..f @ # į5M!@!% ,IENDB`qtsmbstatus-2.2.1/client/icons/connect_established.png0000644000175000017500000000175311720232510022612 0ustar villouvillouPNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<}IDATxAuS}FE o_~ۂe&+m+π˿3[/o%#)$&_;Nj\wg1|R+$+P__uhiEʙ0  0)3(0pq13+PYílLK_t Ĥ >#5ݘV&& _6&V&}ϊl@1* Zm >ɰaa9):g?\+ff@1{@YfWK0I22>>و!6,q1>ǎfx 8`Á e1P`ppSgt/L\Ca?Jȥ /=u ng?(2Ï A2' !o2 XXYY~-fou=6o 4_`b%I66`S0gҲA* ,3P1 M?bػ.õ2sw  x`fab`dblvA`? N w70*n GI݌1qˏ0 AF˷ /*IPg-H@ Xܸ(k?0HeX,=lY!ᓏl̢ =Ă6Ae{w{7oZ%$q&l1,~o_`YcIENDB`qtsmbstatus-2.2.1/client/icons/user.png0000755000175000017500000000123611720232510017567 0ustar villouvillouPNG  IHDRabKGD pHYs  tIME -͊|+IDAT8˥MHq?^llob E$QP]<;EPགྷ.C!)[Amlsw :=;<_>|?D0q-ϡ7mqlva| zCb[o6TʴR#R|W]_ vΛ76cwhjuQi|u-.JtbjYq{(:lc- ifMTV02ȓd]2<&DSsLIR/ r( b B8o JlDlR3YS_aK9#fJœ~Y(<݁//%أM@{k_68ޢ b}bvZ(Ҙ(jrV 19!BJki&"1ża:-if%^0评+UJIEOK1h-SU YdAQHZKH)RJ2>{v{ He{Qa:J+ Z78hR C pޑrʲ( Z nFEѠp[e]<'kmكl]@ri뀪 YV5֒<3L_cP-O[ף܈+}|֭룟G/=A5~zwݻ;a8A)M"Z[m~eUUdYRpD6 r0 ,scPJPJZ+:Y4EQ\y~[[[u:1ƞ14kZKYQu^ !.c~p_ oIENDB`qtsmbstatus-2.2.1/client/icons/configure.png0000755000175000017500000000401111720232510020564 0ustar villouvillouPNG  IHDR szzIDATxklwfvv6$F`65iK+ Y(HA|Z*PD>HAjiJ-P BNllc^LG:ڙ?w `5W~iѢE v7nD"]v;cƌ'N8xر2jkرbɂeY,Do^xwG88q ǎ ʡ!soll|C d2)w<c@lfwM:}t)݁yrW- n۶|SSSX@}}c@s6lqS@؛T'T +EV rٴkka˖-R"u]TUU@!EQUUY~'6y͞ST QFnvD4/HU٣Y; DJ(X_ !aŊGҸ I])%te֬Y7v]u4 @a󀸮ŋk\Fs)ȍ"11,TZhx|vIIcӧ*LXtWu)--%7S:61"z^RT%TUU\iӦswTB$JP>`HH@[[Ο?P(*t],4M޽ѣGۆMPTDIDB BBcӼ}5O:ZccM ݶm8ugΜOP4VB$Zd@LlU -0M?HӸ ۶I$C~ - +?8D+##ÕN=iS=s8 d_UʑzW P )t{*Xy6샢޽Ƕ<0>D/W_nf+8c*̺k^{6ai L/_xW{'Ι35kHG25vvC @@y'}Lon=:w\,yr7k7̃#Lڠ.$tФC'&.hFQ H)<&5MoCK _ pg5`2#Ͳ,Wut]'λYzMGZ4 ̟?ۦMF("jժy֭{>@t:MGG===~#(#lڴtSSSU,Cu"uuuYfySS/q'`Y/rrʕۺu W^u,A,++++}DQ*++2e >qEall'O|WWWw3Ƀ/"FGG?d2wTUE4UU4MڡR 񨪪3eeeUV=0OQŰ,˗/>|}?$Y2HfZ]qG)_ >jYk,"h"(C)&+PM+E"ѡ!\'t`||p4aRJDP=%Ϥ*3g2>8/@8i3Rnp"M(@²mL)VVpVVu?˗Yuu6mcZ##$wBVǸX$  f\ `5<]3/ZG$29IRupqP.' @|x 5űm37ݹ9"CCt=07=͛WW*qPJ#J=_~ק)b}-DL`N]*ѿo_^5Mǜ;r?@{;kkD,d\KG"`sϑf4DDL\~cdu۷_~O^c==,5M"Dq sϑI|ڳtw7dH(Ze+7O`$K% }Na.\4T:sLї_@ꪖ֑JN&;ؗJΝMO>;wTH?ǵmb]]daLYu۶^Bxfh 84Tp,FPiiSM Tivc jyW]C5ZZ䭁4ׅJe\if,k j!P^Xw {y=bmJR*A>b]iV2*J t۶єBjU"B\׃LĶlR.#Qߐ!+-C?7@S cz:8>NAu(P5fe0J)@6 hW)AOYVv0T oUFڡL@k/ou*٬Px);X#Fw.]"i!PfQ4R eu" ލo_J}ƭ?v&޽たs1{ʉ`!k Z_'BiObO8y2 a"CZeO(D[4y|o)=XooЦ Akdbx]‡SY)Qtk^6l&*Gdo!B br}=z&&hn;)^FU"6:JmQl4Cm AS4 /D䭷|O2]#w1y(:oJV{̞=%f9w&5ܷk&8zהBD8sۋ%66F֭W2Tfg.,01mP*eIsMZҵ)ŃO?~qY Mcs8d^Z*:0uPx\넓(Eֹ&Yms"u*E_Ŀ'[lf~q .t`f>ʶ͂_װ]R?y =kIENDB`qtsmbstatus-2.2.1/client/icons/icon.ico0000755000175000017500000002152611720232510017533 0ustar villouvillou f(N00hv  00(."( @N3.-\nY^^JZeho+!?3;dDLʬMܪDɪM٩ٚpI~~@D`~@NwGG}}}w@~~pfffkN@~afk<~fl<Naal74Naj=DgqtN""""%UN""""%UUTGDD""""*UUWvwN∈UUUU^N興]]]]^N興؈]]]]~N^Nҍ}^NGGGGGGGGGG@???????????@( t*bM&PXX"/a|qs蚆l~_̸̃ێ0=>}w츾?"w""Ń\3DDY3?ffݮޏ=7(0`K=&3^lX^]P`ގlZ?????:DDDJ0ٙdDJ˔Jsמ̚ڣݭKOO4ηD}KIԾǠ~tD@@N ˴ODDƙi@̜@NN knnnl4ffffl{affiffi'afaiݣafiCӐKaDdKaIkaaD"""""""UUUP@OL"""""""UUUUID""("""'UUUUDDO""'UUUUUDd((((("UUUYUUOU\UYULδO\\OK숻\\LŞ+UOK̜IOIɹOODDOOOOOOO?@ߠР??6U_( @   )#%$+)%$%-/./B/ 751*% 89M:I;><8.6"?]DY&)BOBEC@ =.2IJ4KGIJ]ILJD1J"WLJ-)5(M(Rh&*UgSUTX*T4.Z[ZO\_ .Z<1;;^?d_g6bradbOclc;n};d}h;gjhRySIInjloDj|FHlFgYly#;lom"anqopM';FN~spNU@LIx vyHUTtwu`&|)vw_y|zNz_QHTDv~`_FYygeXۆheionYdktvccmq]4u}HYS*l3šk1ȶ=¿"@$ҲdSq9G+.Dcc]ph8~pF3F3+  3ƿÂZL6/chij٫tGijʢ NҎ*Gd/յݶR絲RDݒ#mIA6T|ٸf fqfaVqqqI m*eWeu($q'-8@_jssƿcf%.=EP_jsyƿMQa''87EP__j+]gDq!-=E@HPB;fz'%.777@Z$ V)1)01K^ibbb  T&9999>>~)T< FU4CM E^GVFHF3[=HPD)GnK$h1 9^:NPN?e"SlQ3%*UWUOVZ10UF?Zh$1Z9?t<VD]_^b{`726%`|XiY&N8?gehgi@[s^7Dcd~FR]m{m{{ӹ̷j'09>FR]m{{{{Lw'00>FRR]mm{mS(j''09>RR]]]mm=t('0;9>>RR]]]}$Pf$')09>FFRV]hŽ >FF>h vj ֗E `')0099>>h< I  "".....I  X#%%&+++8+8+BNMMMQMQ  !#%1111818888BUQQQQ^Q*!KXKKKX2 j#44C4CHCHHHHOd^^^^^^\,Xj2!K4WTTTTTT[[[T[bkgggggg\\:G``As!X4iiiipppppppppzyxxxuuullllYY?׋!Epzl!E~EnͿÿ4?nͿͿͿY:ѝDzX~ ?} d2]`l}AIj'x{7.pz/7 @@L3ׯ?7Cwwz gq_.'BHN8?@\PT? _~ ×/߀ e`< w3dY h?bXO?iˎɞG`>=517L4?|7Éw0°Û/_ w0<|+Р?~2|3h@E@ge8~'7 ? @C!;++#?" qil e8^ /×ϯ0(>gPc0Ֆ8', pL~>4ޫ kϞ(   ߿d/ë@W * \ ?0y/^~e ` ?/0 /pS(mp?t> ~ ɯtw7o1q3|F)cp毟.-H`| wb%YP&*tO`f7މh1fd?~A3p9 X| ?U~hO?0q10@1cb/1Y ~P|fW ׏ ʱc``2>vIENDB`qtsmbstatus-2.2.1/client/icons/qtsmbstatus.png0000644000175000017500000000445111720232510021202 0ustar villouvillouPNG  IHDR szzbKGD pHYs  d_tIME RjIDATX͗[l3{Y{wC6 SB J%"@mHJ4Ri+ՍQy TQS* Ǝ - ^{ٝ3}plAH4s0uػwoeYa۶,[ibܻ[/]/ peee Sױ5 #f9~zk(Z$'H÷! #phjjC00q hF۶1)&eF&Ͻ?{Ξ^6l(zW;0 0MK1qh+š@f1MnM)L^DZ***Yn-X۶xڸq˗/]sH$fg2ع|˲P43/Uǩ%OJqץ8z7= 2`r)cbOMa&иhJ!H+:YIPQUd"%Ngy], 3bb$t˲ϨħSlLY#Gi?3lذgϵP@$iY|pTчmOς Rv9?Q:`RMcd \Khii8@ߏidYTUeݺ( ?O߉YDZwR.F>BJHsɥmZyi!TYaY׋(x<DQIFYx1׮]uA$}uE*vu_n6>F2} )'kN6mLiim@(" پ};x0L#p];+d%󎍒*-_qΝ m#"(""ٳ{%Ks+d<wsmǶGv!Xq( Ν;qzǡ~&i,$H6+5675dɒ9,˚"U5TWW#+* x8}2.UUsfEqނ: Y|9WZx:uÇd{yFO{&kQqg@lv%ׯ_GSr.e!RUUK.=wÉEm V.)u/Q__띓 s@ױ~^P!NsW~M ى=#%J5ٶAD"xnkBA4hj^y[DV9ac^ >ݻoʥ&^ x= ˘9(A&a<9aؿCJf!|<<}ю<ԕthms߼y7;i;XAͲ`K1r?|Pd{+gΜaٲeGæeK7"Lr{}\`0 gz{dZnDFx 0oc`֭X,u)^y啙@ YRl@U% sEtiZ̪RPU0 D%pbהy%:}s%ؼnS$s:NIob֦2# I/["jk>uqs:9-XՈ&E&<2!_}E>ki{}=?;?T=ԯ_ vpAg UIDAThlS??v$P(UW:iэ*i-"mT[٦NؤnCPitVڬl* a';yqދ)mDK{9>yۡl6xA$3Gm?8d2Cepppdyhhh|e76lذۗ,Y&'#E˗'&q  xキapر}SN8qId2̙3gΜb_TčRLflll r`0TJ0@ߧ(T6 /b0:$MM2ñX*ϫ*8 'O< ,Xd2LB( P[[[[Si1 <ؿرGGQh4t:ŊI$d9l6e%X,d |,jOvnXؘfJJD4д[oGX~ݺk୷sΟ?o{tB.[d@ 0=-ː 8r*ˉO! D"PEIa ԔxE BӷÉG%SStZf38FcI ݥ099:_Ng2 nCUA?)HĄ~ 0=(G4Ȳ,0wܹ[n*PY)bPs3|6 MWϙ.]44Ԕs$|K_ W\r)K$qa0 IlZLJKm6 JJJKKJ@QDl|>uZ[ixÇ{>90=BIwށիL2FF [WܾxBӢQClAmmMMm-x^+|VjX,0,IX $h4 tZ .4Bpx<VrA:-8>?/F01 P( -`nw8iP\S)EknnjjjU-T4P(> &\ ~zm@Q 'ݻ!f(--f .H׃l*4777;pkZoo___gzM۹s瞃~F#l ՁF$ 2F}Y#IFl6`Pp_ڵ VZV+_G?:cxXQ!cfY,p}W\ X,&˂rB1.FA}]K$IRQKEUfy(/ol\[dV$kڡC<*BSӎ`0<1% B>8.ו+te`0L*, a#0<<<<< B`0 k 8bB1$r BB 0>>6><@ ˗sͧǫ dnEJK!F_;JeYPh,޸.\EЅM>_(P(l.#D2lSZ**d\6 Ǐ?~8d2L6[eYOG;vnܹH4:6&`_̚e) RjRWg&ҦYQr =!h6u t ,!MӴB T.;?s犀G"4xi~0(d0xx5 .IӑH6ibyKGK/G"o?ط8$"FUCi##"햕ASSssssQ(ɲ1bwxҕguvy<#,?sYho_]Ο'-I8p@q=|| I7?w#Iutttp8`4 }΄TJΟ@ t̨)s9 jkkkkk1G:V7> O8t2|#G`lL4@,Y;`ժ{]-/|::/z!eYHhTTcccc>$fYf!ޚ(rtnƍvԸ\浴XH~_Ǣ hѢE }qm0{vSSK!T  6]19 XQ--MM^/twopßX`5kfn.,`ٲ3g`z۷o߾nu^STVVWAC녉G {ݟ޶ nKĖ7w޸qf8#[;3WVVVl`8$H\`2 ]]+W P^n0LL={S nEe(יL&}֭p.T-[jTX }ѿ@vڵk׍P(BfBWUU ۷׃,WVn\Q/^x"믿(ʿKlp@eeCCGh\G"0{><ݝ04(]]==iwvY#I33AӮˏ<"W&T$r.%%`0h(+hN8{ٳnPOoz~W^9xPOMVHk I*/K4]S) zz`||z)hk[S4mFZ[[[[[a{ݻZ3z{{%I4>!a%IC$fL~OW_BfT*R(EezQd0ؘzg?K&8~qcxŭ[4f<8qIdB!ǓI~xɵknMW.U$]]?I"$;wnz09)mm_/|gꪮ4lgH?'_QKPXIENDB`qtsmbstatus-2.2.1/client/icons/document.png0000755000175000017500000000110111720232510020416 0ustar villouvillouPNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?\Μΰ;6 \ Ϗ "}}8ׯ cԔ?(aW@,ldffd H31@`n0waÀݻς`e v 0В 2l@aj cj/ˊǯ >}e|\=@t C~ t_?~0i .y_@^{ Vl9 ߾}g AQ@d_@Ba=g/ >z0` M(_8;w\l;H# @z0/ 0 i"H}.GV @ h6C9"wb@9:IENDB`qtsmbstatus-2.2.1/client/icons/connect_creating.png0000644000175000017500000000211311720232510022106 0ustar villouvillouPNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxbhۇ^Ky&F=3 S_?wg÷_YX/3`?5P\bb`5ۧ_ dGf*iHo3gaɟ &@ A  BH('," %Aܺ#` JL' KW6  q>0^={70-In߿ ebb`󟁁 H.zdo9 `bb6a`4f tɎzޗ3Tcޜc`Ͽ . &.NPGee>߁ 6hFv eƠ Gua dl@ \@;G-g`1Pi9s=?, ۀa@,c~A@5&.!N&w o>`xt _:Vs[_޾<0?@㗁, *؁k ??a`xt߿ ;YTڋmd?!  *SV0\=Nwbش;t>)W7gq:@1g*Np d h| =3AJ< IENDB`qtsmbstatus-2.2.1/client/icons/samba.png0000644000175000017500000000772111720232510017676 0ustar villouvillouPNG  IHDR00WgAMA abKGD^SI pHYs  d_tIME -cJL_NIDATxm\U鞞d2Ɍ30ͮˋIx0[aj*ҭVɂVZQQu! % LL{vCOd27[?y醿&>"۷K `}0S^)H@.JT K!AUUhRӑGg? ,Zq21GF~G !Ūd`_(SSx,n.9993aŪCQȗ-rMlQb14w>֭[Hp]<#g4`~\t//: $4M\l΀a5Rͥf8eXVR)z^>|QȑKEnݵKJRq_Λ.gL)^$tr.|\ƯTazhEwɗ- Ur͡j見xk`&hHSMZEKKyXW =x~XxX>۱8eKhu*AkHS58.5t}e181FxԲq5%EnyҖJp]R'9) 9 ~tyhu KӚCFb+6ŪE栙 ?}CC|+g]׾ .@kNb|~mܩ)\7bTѴfIl"_(UMCbSE:ƭ,{|{tnU]|qݼ"@K/`%tipeCʫOK`XozZe&Y:Q%W=۵m tS*-NPΏ$iOS:,|?grttLr /d$2Jip] = w |uؔ"582UWqRWo`Rq.:7}ou+Y|/| ֥p2XNש&obfDͩb{& kG8>b7ޙ{8Z[>7x#kמ8묳]L r01OBYB7= שa;\ضleFǷ\Wm$?ĹkᦛoƶmReNoo/===Dc1u◿8rF6xk*W4f˒hNgH!#+<أtww!X 0Xl(JsG>B__/=eq,mh6OaYL=i]2͆Zd1 k\r 7ow(\A:;;瀗Rņ f6TRr |S- 4|Z9^40,0XfҚ 'Q*I SI&&&suəo$MQ+:_k7;vK$RٺR* aVZm݆82?E ̙>b-줿?*Xݻ@1i}asFغu+|`ZBg}vQʢ.`B"---$IVX﹬[A U{9tpok,Bz{{ٲe ͊?dbR+x뭷0r 7H$npIx@@=RI)IJ,I' h H)}ݷf7,M k/h4X(挾r3y$Iimko[?JB'Y=@2$9MlSUqϳׁh4mD"VX|t;w?/H]7b7ab/&#EQPTv:;:8s$x7hO(󴵥bsvh `T BHuZիYw9rYOطo_\K~yhӷk8tC>24+`N7.'99g%}=K'T) I&޽{ٿ@"hFƬ4{I#O o0<*%n:  H "zln8xfloo'7uܐL#I)Zcdxxt玫}}4Ў?p,ņvBC2)PUj :|>P8[s=tvv ?|H)1 >=c$WluF9]`O|GDDr]#ipyRf^3!ZbY)I&%[6Fw\.SI 0 J %^j,lW |$nK8tEl۞DlۦX,R,98Oi%N& T#XpN®?е1((iضM&'GiO(Ci]^i63!NO`߾} q3gFʟynxNÞq2Ks<9w-tvv299id2>OǐRlQBAe3 ӨRòA7$93ǵ|hhhh\|D@c?EJ_??kRDMu}zM g`^O %B)`ڼÖy~=<6_k!gRhLе\(jE2xJTja̜[ݖP*`]Ix`)ͯ|1Tm.ZZPpd6`ppo~_3W WN Ak\W?E"Ċ9!_t!U]lJ߷ }}I}|Ȉ7E2nO)BOIENDB`qtsmbstatus-2.2.1/client/qtsmbstatus.desktop0000644000175000017500000000100511720232510020744 0ustar villouvillou[Desktop Entry] Name=QtSmbstatus Client Comment=QtSmbstatus is a GUI (graphical user interface) for smbstatus Comment[fr]=QtSmbstatus - une interface graphique à smbstatus Comment[es]=QtSmbstatus - una interface grafica de smbstatus Comment[ru]=QtSmbstatus - графический интейфейс для smbstatus Comment[uk]=QtSmbstatus - графічний інтерфейс для smbstatus Exec=qtsmbstatus Terminal=false Type=Application Icon=qtsmbstatus Categories=Qt;Network;Utility; StartupNotify=false qtsmbstatus-2.2.1/client/qtsmbstatus.7.gz0000644000175000017500000000200211720232510020056 0ustar villouvillouq$Iqtsmbstatus.7UMo6W r[[ F[^ @I#[JԒ PWC[l>y 7W6>O0, $_*aD^&\*A(0ezM(DCw`b.=v9azXDZY ;[ W[IKNl\.-9 bK۴te)Db@yM|PXISiE 10o!4fHA 3Wfq.napbRKheieR)ʵ+J94Q9> (,*ЖՉ:&2QSM0y /(z[#\&BAML&=a`sǫ $٢2z'S~2JRQtF]PRZb, $9+|^PSL-;bc+XP^#SPY kڤZr(%uh ֜5ѡPRTi{ݹjj]\QW1yk2H< R^݊an!Z9:%`+K=ǥi ޵Qz .bL'a֒1m横c0xEO;᣺tYk)v %M{M6@KVK-˝&sƚnvwtBɄ8pr Na)ZP3΅Hף4jE ˢ<*HC?-VGos䀸'QJT Q"RTJl'DRHŵ;2>-e7' /qtsmbstatus-2.2.1/client/configure.ui0000755000175000017500000003112711720232510017312 0ustar villouvillou configure 0 0 431 551 0 0 Configure 0 0 Smbstatus 9 6 Qt::Horizontal 231 20 151 0 <p align="right">Interval:</p> false spinInterval Interval between smbstatus requests in seconds, (interval > 2) 3 300 Show hidden shares (share$) Show hidden shares 0 0 Notifications and log 9 6 151 0 Limit log: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter false limitLogBox 1 99 Qt::LeftToRight days Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter false Iconize QtSmbstatus in system tray Show activities in "balloon messages" Status notification messages Log SMB/CIFS activities Qt::Horizontal 151 20 OK Qt::Horizontal QSizePolicy::Expanding 329 27 Cancel false 0 0 Misc Automatically Check for updates A new release is available Qt::RichText 0 0 Connection 9 6 151 0 <p align="right">Default Username:</p> false EditUsername Autoconnect on qtsmbstatus startup Autoconnect <p align="right">Default host address:</p> false EditHost Username (default : username = root) Host Address Qt::Horizontal 91 20 Qt::Horizontal 91 20 Qt::Vertical 10 10 EditHost EditUsername checkAutoconnect checkViewHiddenShares spinInterval checkIcon checkNotification checkLogActivity limitLogBox checkNewRelease okButton cancelButton cancelButton clicked() configure close() 447 427 390 427 okButton clicked() configure accept() 38 424 155 422 qtsmbstatus-2.2.1/client/smbstatus.cpp0000755000175000017500000002164511720232510017527 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ /** \class smbstatus \brief Parse %smbstatus reply \date 2008-11-11 \version 1.2 \author Daniel Rocher \sa LineCore \param stringlist %smbstatus reply \param parent pointer to parent for this object */ #include #include "smbstatus.h" int smbstatus::compteur_objet=0; smbstatus :: smbstatus(const QStringList & stringlist,QObject *parent ) : QObject (parent) { debugQt("Object smbstatus : "+QString::number(++compteur_objet)); ListSmbstatus=stringlist; } smbstatus::~smbstatus() { debugQt("Object smbstatus : "+QString::number(--compteur_objet)); } /** start analysis */ void smbstatus::RQ_smbstatus() { debugQt("smbstatus::RQ_smbstatus()"); QString ligne; LineCore * linecore = new LineCore(this); readingpart=header_connexions; // section int iMachineIP=0; int iConnected=0; QString strShare; QString strUser; QString strGroup; QString strPid; QString strMode; QString strRW; QString strOplock; QString strMachineName; QString strMachineIP; QString strName; int idName=0; QString strConnected; QString strDateOpen; version_samba=unknown; // default, samba version is unknown // read all lines of smbstatus reply for ( QStringList::Iterator it = ListSmbstatus.begin(); it != ListSmbstatus.end(); ++it ) { ligne = *it; // one line // ------------- get samba version -------------------- if ((ligne.contains("samba version",Qt::CaseInsensitive)) && (version_samba==unknown)) { ligne=ligne.simplified (); if (ligne.contains("version 2.2",Qt::CaseInsensitive) ) version_samba=version2; if (ligne.contains("version 3.",Qt::CaseInsensitive) ) version_samba=version3; emit sambaVersion(ligne); } // inspired of ksmbstatus and updated for samba V3 // --------------- CONNECTIONS -------------------------- if ((readingpart==header_connexions) && ligne.contains("machine",Qt::CaseInsensitive)) { linecore->InitHeader(ligne); //version samba 3 if (version_samba==version3) { linecore->InitElement("Username"); linecore->InitElement("Group"); linecore->InitElement("PID"); linecore->InitElement("Machine"); } else { //version samba 2.2 linecore->InitElement("uid"); linecore->InitElement("gid"); linecore->InitElement("pid"); linecore->InitElement("machine"); linecore->InitElement("Service"); } } if ((readingpart==connexions) && (ligne.simplified ().isEmpty ()==false)) { linecore->Analysis(ligne); if ((version_samba==version3) || (version_samba==version2 ) ) { // version 2 and version 3 of samba strPid=linecore->ReturnElement("pid"); strMachineName=linecore->ReturnElement("machine"); iMachineIP=strMachineName.indexOf("("); iConnected=strMachineName.indexOf(")",iMachineIP)+1; strMachineIP=(strMachineName.mid(iMachineIP+1,iConnected-iMachineIP-2)).trimmed(); } if (version_samba==version3 ) { //version samba 3 strUser=linecore->ReturnElement("username"); strGroup=linecore->ReturnElement("group"); strMachineName=(strMachineName.mid(0,iMachineIP)).trimmed(); } if (version_samba==version2 ) { //version samba 2.2 strUser=linecore->ReturnElement("uid"); strGroup=linecore->ReturnElement("gid"); strShare=linecore->ReturnElement("Service"); strConnected=(strMachineName.mid(iConnected)).trimmed(); strMachineName=(strMachineName.mid(0,iMachineIP)).trimmed(); } emit add_user(strPid,strUser,strGroup,strMachineName,strMachineIP); if (version_samba==version2 ) { //version samba 2.2 // Send user BEFORE share (if not, the user is unknown) emit add_share(strPid,strShare,strConnected); } } // --------------- SERVICES --------------------------------------------- if ((readingpart==header_services) && ligne.contains("Service",Qt::CaseInsensitive)) { // only samba 3.0 linecore->InitHeader(ligne); linecore->InitElement("pid"); linecore->InitElement("Service"); linecore->InitElement("Connected at"); linecore->InitElement("Machine"); } if ((readingpart==services) && (ligne.simplified ().isEmpty ()==false) && (ligne.contains("locked files",Qt::CaseInsensitive)==false)) // shares { linecore->Analysis(ligne); strShare=linecore->ReturnElement("Service"); strPid=linecore->ReturnElement("pid"); strMachineName=linecore->ReturnElement("Machine"); strConnected=linecore->ReturnElement("Connected at"); emit add_user(strPid,"nobody","nogroup",strMachineName,strMachineName); emit add_share(strPid,strShare,strConnected); } // --------------- LOCKED FILES --------------------------------------------- if ((readingpart==header_locked_files) && ligne.contains("pid",Qt::CaseInsensitive)) { linecore->InitHeader(ligne); // samba 2 and 3 linecore->InitElement("pid"); linecore->InitElement("DenyMode"); linecore->InitElement("Access"); linecore->InitElement("R/W"); linecore->InitElement("Oplock"); QRegExp exp1("SharePath\\s*Name\\s*Time",Qt::CaseInsensitive); QRegExp exp2("SharePath\\s*Name",Qt::CaseInsensitive); // for samba >3.0.20 if (ligne.contains(exp1)) { int start=ligne.indexOf(exp1); int end=ligne.indexOf("Time")+4; idName=linecore->InitElement(ligne.mid(start,end-start)); } else if (ligne.contains(exp2)) { int start=ligne.indexOf(exp2); int end=ligne.indexOf("Name")+4; idName=linecore->InitElement(ligne.mid(start,end-start)); } else idName=linecore->InitElement("Name"); } if ((readingpart==locked_files) && (ligne.simplified ().isEmpty ()==false)) // locked files { linecore->Analysis(ligne); strPid=linecore->ReturnElement("pid"); strName=linecore->ReturnElement(idName); strMode=linecore->ReturnElement("DenyMode"); strRW=linecore->ReturnElement("R/W"); strOplock=linecore->ReturnElement("Oplock"); strDateOpen=(strName.mid(strName.length()-24)).trimmed(); strName=(strName.mid(0,strName.length()-24)).trimmed(); emit add_lockedfile(strPid,strName,strMode,strRW,strOplock,strDateOpen); } what_part(ligne); // find section } ListSmbstatus.clear(); // clear the QStringList linecore->deleteLater(); deleteLater(); } /** Find section of %smbstatus \sa readingpart Sections: header_connexions, connexions, header_services, services, header_locked_files, locked_files */ void smbstatus::what_part(QString part) { if ((readingpart==header_connexions) && (part.contains("----",Qt::CaseInsensitive))) // end header, start connection { readingpart=connexions; debugQt("header_connexions->connexions"); } if ((readingpart==connexions) && (part.simplified ().isEmpty ()==true)) // and connection { if (version_samba==version3 ) { //version samba 3 readingpart=header_services; debugQt("connexions->header_services"); } if (version_samba==version2 ) { // version samba 2.2 // go directly to header_locked_files because there isn't section 'service' on samba 2.2 readingpart=header_locked_files; debugQt("connexions->header_locked_files"); } } if ((readingpart==header_services) && (part.contains("----",Qt::CaseInsensitive))) // end header_services, start services { readingpart=services; debugQt("header_services->services"); } if ((readingpart==services) && (part.contains("Locked files",Qt::CaseInsensitive))) // end services, start header_locked_files { readingpart=header_locked_files; debugQt("services->header_locked_files"); } if ((readingpart==header_locked_files) && (part.contains("----",Qt::CaseInsensitive))) // end header_locked_files, start locked_files { readingpart=locked_files; debugQt("header_locked_files->locked_files"); } } qtsmbstatus-2.2.1/client/machine.cpp0000644000175000017500000000752611720232510017105 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ /** \class machine \brief Class of machine items \date 2008-11-08 \version 2.0 \author Daniel Rocher \sa server user service 'machine' is parent of 'user' and child of 'server' */ #include #include "machine.h" extern QList QTreeWidgetItemList; extern void debugQt(const QString & message); int machine::compteur_objet=0; machine::machine(QTreeWidgetItem * parent,const QString & PID,const QString & Username, const QString & Group,const QString & MachineName, const QString & MachineIP) : QTreeWidgetItem(parent) { debugQt("Object machine : "+QString::number(++compteur_objet)); QTreeWidgetItemList.append(this); mark=true; machine_name=MachineName; machine_ip=MachineIP; QIcon icon; icon.addPixmap(QPixmap(":/icons/machine.png"), QIcon::Normal, QIcon::Off); this->setIcon( 0, icon ); //icone this->setText ( 0, machine_name) ; // add new user new user(this,PID,Username,Group); } machine::~machine(){ debugQt("Object machine : "+QString::number(--compteur_objet)); QTreeWidgetItemList.removeAll (this); } /** Add user if not exist */ void machine::append_user(const QString & PID,const QString & Name,const QString & Group) { bool exist=false; for (int i=0; i < this->childCount (); ++i ) { user * Child= dynamic_cast(this->child (i) ); if (!Child) break; // If exist if (Child->pid==PID) { exist=true; // Mark this object Child->mark=true; // replace nobody by real name if ((Child->username=="nobody") && (Name!="nobody")) { Child->username=Name; Child->group=Group; Child->setText(0,Name); } return; // exit loop } } // if not exist add user if (!exist) new user (this,PID,Name,Group); } /** Refresh view. Delete obsolete objects (mark = false). \sa mark_childs */ void machine::refresh_childs() { for (int i=0; i < this->childCount (); ++i ) { user * Child= dynamic_cast(this->child (i) ); if (!Child) break; // if child doesn't exist any more if (!Child->mark) { delete Child; // delete item and his children --i; continue; } // if child exist Child->refresh_childs(); } } /** Mark all children. - mark = true -> exist - mark = false -> obsolete \sa refresh_childs */ void machine::mark_childs() { for (int i=0; i < this->childCount (); ++i ) { user * Child= dynamic_cast(this->child (i) ); if (!Child) break; Child->mark=false; Child->mark_childs(); } } qtsmbstatus-2.2.1/client/client.qrc0000755000175000017500000000131611720232510016754 0ustar villouvillou icons/connect_creating.png icons/connect_no.png icons/connect_established.png icons/server.png icons/folder_open.png icons/document.png icons/user.png icons/machine.png icons/samba.png icons/exit.png icons/configure.png icons/clear.png icons/filesaveas.png icons/qtsmbstatus.png icons/qtsmbstatusl.png qtsmbstatus-2.2.1/client/configure_windows.h0000644000175000017500000000511311720232510020667 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #ifndef CONFIGURE_WINDOWS_H #define CONFIGURE_WINDOWS_H #include "build/ui/ui_configure.h" extern void debugQt(const QString & message); extern void writeConfigFile(); extern QString host; extern quint16 port_server; //tcp port extern QString username_login; extern QString passwd_login; extern bool autoconnect; //Autoconnect when qtsmbstatus start extern int interval; // Interval, in seconds, between every request to smbstatus extern bool view_hidden_shares; // View hidden shares (share$) extern bool iconize; // Iconize QtSmbstatus on system tray extern bool show_messages; // show status notification messages extern bool log_activity; // log SMB/CIFS activities extern int limitLog; // limit log (number of days) extern bool check_new_release; // check for new release of qtsmbstatus class configure_windows : public QDialog, public Ui::configure { Q_OBJECT public: configure_windows(QWidget *parent = 0); virtual ~configure_windows(); signals: void configuration_changed(); private slots: // Private slots virtual void on_okButton_clicked(); virtual void on_checkIcon_toggled(bool); virtual void on_checkLogActivity_toggled(bool checked); }; #endif qtsmbstatus-2.2.1/client/qtsmbstatus.xpm0000644000175000017500000002327311720232510020112 0ustar villouvillou/* XPM */ static char * qtsmbstatus_xpm[] = { "32 32 480 2", " c None", ". c #525252", "+ c #4E4E4E", "@ c #494949", "# c #454545", "$ c #404040", "% c #3C3C3C", "& c #363636", "* c #323232", "= c #2E2E2E", "- c #292929", "; c #242424", "> c #202020", ", c #1B1B1B", "' c #191919", ") c #626262", "! c #878686", "~ c #817D7D", "{ c #7D7272", "] c #766060", "^ c #6F4E4E", "/ c #5D5D5D", "( c #6F6F70", "_ c #67696B", ": c #595D63", "< c #4A515B", "[ c #2E363F", "} c #1D1D1D", "| c #4D4D4D", "1 c #868686", "2 c #FBEEEE", "3 c #F4D0D0", "4 c #EDB4B4", "5 c #E38C8C", "6 c #D86767", "7 c #2D2D2D", "8 c #B7B8B8", "9 c #E2E9F2", "0 c #CCD8E8", "a c #ABBEDA", "b c #8BA7CD", "c c #526988", "d c #2A2A2A", "e c #4A4A4A", "f c #121214", "g c #2B2B2D", "h c #2F2F2F", "i c #474747", "j c #F4D2D2", "k c #EBAFAF", "l c #E69797", "m c #DE7575", "n c #CF5555", "o c #272727", "p c #ADAFB2", "q c #C1CEE3", "r c #AEC0DC", "s c #8FA9CF", "t c #7898C4", "u c #506586", "v c #39393A", "w c #141416", "x c #3C3C3D", "y c #1F1F21", "z c #1B1B1C", "A c #181817", "B c #424242", "C c #7C7474", "D c #EDB7B7", "E c #E18484", "F c #DA6565", "G c #C74646", "H c #222222", "I c #A0A4AB", "J c #A7BAD8", "K c #98B0D2", "L c #809CC8", "M c #6C8DC0", "N c #566C8D", "O c #1D1D1E", "P c #28282A", "Q c #202022", "R c #020204", "S c #0C0C0C", "T c #0A0A0B", "U c #171717", "V c #756464", "W c #E59292", "X c #D44C4C", "Y c #BE3131", "Z c #1C1C1C", "` c #8892A0", " . c #84A1CA", ".. c #7998C5", "+. c #6689BD", "@. c #5880B7", "#. c #445B7C", "$. c #131315", "%. c #060507", "&. c #060608", "*. c #1A1A1B", "=. c #101011", "-. c #030305", ";. c #373737", ">. c #6F5454", ",. c #DD7171", "'. c #D75858", "). c #D44B4B", "!. c #CF3535", "~. c #B61D1D", "{. c #6F7F94", "]. c #688CBD", "^. c #5F83BA", "/. c #4E77B3", "(. c #4570AF", "_. c #395074", ":. c #8D8C8C", "<. c #1A191A", "[. c #908F8F", "}. c #3C3C3B", "|. c #080809", "1. c #212122", "2. c #673D3D", "3. c #D14343", "4. c #C93232", "5. c #C52727", "6. c #BD1515", "7. c #A40606", "8. c #121212", "9. c #476083", "0. c #426DAC", "a. c #3C67A6", "b. c #2E5C9F", "c. c #28569B", "d. c #324C70", "e. c #949494", "f. c #71716F", "g. c #605C53", "h. c #858179", "i. c #656463", "j. c #A4A4A4", "k. c #1F1F1F", "l. c #000000", "m. c #2C2C2C", "n. c #3B2B2B", "o. c #5B2727", "p. c #531F1F", "q. c #4D1919", "r. c #451010", "s. c #3C0B0B", "t. c #0D0D0D", "u. c #17212E", "v. c #132238", "w. c #0E1D33", "x. c #0B1A30", "y. c #101E34", "z. c #2F3844", "A. c #807E7D", "B. c #7F6932", "C. c #B9982B", "D. c #B29833", "E. c #6B5D27", "F. c #888478", "G. c #6A6A69", "H. c #636360", "I. c #5C5C55", "J. c #515142", "K. c #47462F", "L. c #070707", "M. c #515350", "N. c #4B4F49", "O. c #404A3C", "P. c #3B4935", "Q. c #475241", "R. c #6F5628", "S. c #DDA914", "T. c #ECC315", "U. c #F3D426", "V. c #EBC918", "W. c #A48118", "X. c #1D1708", "Y. c #030304", "Z. c #696969", "`. c #F6F6ED", " + c #E6E5CE", ".+ c #D8D7B1", "++ c #C3C186", "@+ c #AFAC60", "#+ c #020202", "$+ c #A9A9A9", "%+ c #E3EFDE", "&+ c #CDE2C5", "*+ c #ACD09D", "=+ c #93C180", "-+ c #759666", ";+ c #675228", ">+ c #D4A310", ",+ c #E6C015", "'+ c #D9B219", ")+ c #C49411", "!+ c #96742D", "~+ c #221E16", "{+ c #252525", "]+ c #343333", "^+ c #636361", "/+ c #E7E6CF", "(+ c #D6D5AB", "_+ c #C9C791", ":+ c #B7B56E", "<+ c #A3A04C", "[+ c #A2A5A0", "}+ c #C6DEBC", "|+ c #B4D5A8", "1+ c #9BC68A", "2+ c #8BBD77", "3+ c #69895C", "4+ c #5D5D5E", "5+ c #B19B6D", "6+ c #B88D2F", "7+ c #BB923A", "8+ c #C3AF82", "9+ c #CAC9C8", "0+ c #444446", "a+ c #5C5C57", "b+ c #D9D9B4", "c+ c #BEBD7D", "d+ c #B0AD5D", "e+ c #99973D", "f+ c #969F93", "g+ c #ADD0A0", "h+ c #A1C991", "i+ c #8EBF7C", "j+ c #87BB74", "k+ c #485345", "l+ c #969696", "m+ c #CCCBC7", "n+ c #B5ACA0", "o+ c #C5BFB4", "p+ c #E2E1E0", "q+ c #FAF9F9", "r+ c #9F9FA0", "s+ c #212123", "t+ c #1C1C1E", "u+ c #2F2F30", "v+ c #111111", "w+ c #525246", "x+ c #C6C58C", "y+ c #A3A143", "z+ c #8A8928", "A+ c #82937C", "B+ c #8EBF7A", "C+ c #86BA73", "D+ c #82B86C", "E+ c #596A52", "F+ c #555555", "G+ c #EBEBEB", "H+ c #F8F8F8", "I+ c #E9E9E9", "J+ c #F6F6F6", "K+ c #FEFEFE", "L+ c #EEEEEE", "M+ c #222223", "N+ c #040406", "O+ c #3A3A3B", "P+ c #494836", "Q+ c #B5B36A", "R+ c #A9A64F", "S+ c #A2A041", "T+ c #96952B", "U+ c #7E7D13", "V+ c #6C8762", "W+ c #76B15D", "X+ c #74B05C", "Y+ c #628F51", "Z+ c #151B14", "`+ c #828282", " @ c #EFEFEF", ".@ c #F3F3F3", "+@ c #FCFCFC", "@@ c #ECECEC", "#@ c #E2E2E2", "$@ c #4C4C4C", "%@ c #040404", "&@ c #171719", "*@ c #060606", "=@ c #3B3B1D", "-@ c #9E9C39", ";@ c #929127", ">@ c #8B891C", ",@ c #7F7B0B", "'@ c #636002", ")@ c #4A743A", "!@ c #559E39", "~@ c #5CA143", "{@ c #272627", "]@ c #BBBABA", "^@ c #F5F5F5", "/@ c #F9F9F9", "(@ c #FDFDFD", "_@ c #DFDFDF", ":@ c #ACACAC", "<@ c #181819", "[@ c #060607", "}@ c #1D1C1E", "|@ c #010101", "1@ c #121106", "2@ c #31300C", "3@ c #2C2B07", "4@ c #292804", "5@ c #232200", "6@ c #1A1900", "7@ c #14250E", "8@ c #223C19", "9@ c #3A5132", "0@ c #161616", "a@ c #5A5A5A", "b@ c #E5E5E5", "c@ c #6A6A6A", "d@ c #343433", "e@ c #1C1B1C", "f@ c #161617", "g@ c #181818", "h@ c #292928", "i@ c #A0A0A0", "j@ c #F0F0F0", "k@ c #FBFBFB", "l@ c #B8B8B8", "m@ c #2B2A2B", "n@ c #AAAAAA", "o@ c #292828", "p@ c #484848", "q@ c #D0D0D0", "r@ c #FAFAFA", "s@ c #CDCDCD", "t@ c #323233", "u@ c #4A4949", "v@ c #323131", "w@ c #858585", "x@ c #313132", "y@ c #171617", "z@ c #6D6C6C", "A@ c #E8E8E8", "B@ c #E7E7E7", "C@ c #D3D3D3", "D@ c #353435", "E@ c #5B5B5C", "F@ c #242425", "G@ c #3B3B3B", "H@ c #424140", "I@ c #181715", "J@ c #7D7D7D", "K@ c #E6E6E6", "L@ c #79797A", "M@ c #373738", "N@ c #B4820D", "O@ c #CB9C0E", "P@ c #766943", "Q@ c #C0C0C0", "R@ c #F6ECC6", "S@ c #CFB867", "T@ c #312F2D", "U@ c #525253", "V@ c #2C2A28", "W@ c #54472D", "X@ c #606060", "Y@ c #8C600D", "Z@ c #A3710C", "`@ c #DBA50D", " # c #F4BD0E", ".# c #B78F13", "+# c #59523F", "@# c #CECECE", "## c #EBD48F", "$# c #D9A811", "%# c #1E1911", "&# c #3A2D0D", "*# c #B88E14", "=# c #DAA40F", "-# c #F0BA16", ";# c #F5C121", "># c #F5C01B", ",# c #F1BB10", "'# c #8D6F10", ")# c #232322", "!# c #9D9D9D", "~# c #F1F1F1", "{# c #CCB372", "]# c #DEA60C", "^# c #9D700F", "/# c #87610A", "(# c #CC970C", "_# c #EFB910", ":# c #EDB719", "<# c #F6C93E", "[# c #F6CD4A", "}# c #F5C11F", "|# c #F5BD0E", "1# c #DFB112", "2# c #312508", "3# c #393939", "4# c #DEDEDE", "5# c #B3995C", "6# c #E3AE17", "7# c #E2A90F", "8# c #E1A90D", "9# c #F0B80E", "0# c #CB960D", "a# c #EAB51C", "b# c #F6CC48", "c# c #F7CE4D", "d# c #C09C24", "e# c #B5AF9E", "f# c #F2F2F2", "g# c #C4C4C4", "h# c #787879", "i# c #6E5112", "j# c #E4B121", "k# c #F6CB45", "l# c #E8B10E", "m# c #AF7E0C", "n# c #585858", "o# c #C7C7C7", "p# c #906A1F", "q# c #E4B018", "r# c #EDBB24", "s# c #F3C22C", "t# c #F5BF16", "u# c #E3B114", "v# c #B1985E", "w# c #BEBEBE", "x# c #CBCBCB", "y# c #BFBFBF", "z# c #9A9A9A", "A# c #454546", "B# c #0F0F11", "C# c #715008", "D# c #E5AF17", "E# c #F7CE52", "F# c #F3C22D", "G# c #F1B90E", "H# c #E7B00E", "I# c #BB8A0E", "J# c #986B0D", "K# c #646464", "L# c #654918", "M# c #AB7C19", "N# c #C38F0C", "O# c #CE980D", "P# c #DFA80D", "Q# c #EDB50D", "R# c #F2BA0E", "S# c #DDA50D", "T# c #815A0C", "U# c #0C0B0B", "V# c #141415", "W# c #0B0B0B", "X# c #050506", "Y# c #77530A", "Z# c #DBA30B", "`# c #EBB616", " $ c #E4AF18", ".$ c #C9940D", "+$ c #AC790C", "@$ c #967029", "#$ c #A0720F", "$$ c #BB860B", "%$ c #CB930B", "&$ c #AB780C", "*$ c #624410", "=$ c #343334", "-$ c #715014", ";$ c #B8820A", ">$ c #CF970B", ",$ c #AE7D0D", "'$ c #86704B", ")$ c #775010", "!$ c #614413", "~$ c #776D5D", "{$ c #755216", "]$ c #7F5711", " ", " . + @ # $ % & * = - ; > , ' ", " . ) ! ~ { ] ^ * / ( _ : < [ } ", " | 1 2 3 4 5 6 7 8 9 0 a b c d e f g h ", " i ~ j k l m n o p q r s t u v w x y z A = ", " B C D l E F G H I J K L M N O P Q R S T U ", " % V W m F X Y Z ` ...+.@.#.$.Z %.&.*.=.-. ", " ;.>.,.'.).!.~.U {.].^./.(._.v :.<.d [.}.|.1. ", " * 2.3.4.5.6.7.8.9.0.a.b.c.d.e.f.g.h.i.j.k.l. ", " m.n.o.p.q.r.s.t.u.v.w.x.y.z.A.B.C.D.E.F.S l. ", " o % G.H.I.J.K.L.% M.N.O.P.Q.R.S.T.U.V.W.X.Y. ", " H Z.`. +.+++@+#+$+%+&+*+=+-+;+>+,+'+)+!+~+{+]+ ", " Z ^+/+(+_+:+<+l.[+}+|+1+2+3+4+5+6+7+8+9+0+$ O ", " U a+b+_+c+d+e+l.f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+ ", " v+w+x+:+d+y+z+l.A+B+C+D+E+F+G+H+I+J+K+K+L+M+N+=.O+ ", " S P+Q+R+S+T+U+l.V+W+X+Y+Z+`+ @J+.@+@H+@@#@$@%@Y.&@ ", " *@=@-@;@>@,@'@l.)@!@~@{@f ]@^@/@H+(@+@ @_@:@h <@[@}@ ", " |@1@2@3@4@5@6@l.7@8@9@0@a@ @(@(@(@(@(@(@+@b@c@d@e@f@ ", " l.l.l.l.l.l.l.%@g@;.h@i@j@(@/@k@(@K+(@(@k@l@o ]+N+m@ ", " n@ o@p@q@+@(@@@r@+@(@(@(@/@s@t@u@R v@ ", " w@ x@y@z@A@(@(@B@/@(@(@(@(@/@C@D@E@w F@ ", " G@ H@I@J@I+(@+@K@k@+@(@(@(@r@C@B L@M@F@ ", " n@ N@O@P@Q@+@(@A@/@(@+@+@(@R@S@T@U@V@W@ ", " X@ Y@Z@`@ #.#+#@#k@^@r@(@(@(@+@##$#%#$.&#*# ", " X@ Y@=#-#;#>#,#'#)#!#+@k@+@k@+@~#{#]#^#/#(#_#Z@ ", " n@ Z@:#<#[#}#|#1#2#3#J+(@(@(@^@4#5#6#7#8#9# #0# ", " G@ Z@a#b#c#>#|# #d#e#G+f#.@A@g#h#i#j#k#}#|# #l#m# ", " w@n#o#o#p#q#r#s#t#|#|#u#v#w#x#y#z#A#B#C#D#E#F#G#H#I#J# ", " n@m.K#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#N+N+Y#Z#`# $.$+$ ", " @$#$$$%$&$*$H@=$ -$;$>$,$ ", " '$)$!$~$ {$]$ ", " "}; qtsmbstatus-2.2.1/client/main.cpp0000755000175000017500000003063111720232510016421 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include #include #include "smbstatus.h" #include "instances_dlg.h" #include "main_windows.h" extern void unsupported_options(char *error, const QString & usage); extern bool validatePort(const int & port); extern bool StrToBool(QString & value); extern QString BoolToStr(bool & value); extern void debugQt(const QString & message); extern void writeToConsole(const QString & message); extern uint int_qtsmbstatus_version; extern quint16 port_server; //tcp port /** Convert QtSmbstatus config file to new format 2.0.1. We never use .qtsmbstatus.conf (replaced by QSetting). Read old file and save setting */ void convertto201() { debugQt("convertto201()"); QString ligne; QString attr; QString variable; bool ok; int port_conf; int interval_conf; int limit_log_conf; QString username_login_conf; QFile f1( QDir::homePath () + "/.qtsmbstatus.conf" ); if ( !f1.open( QIODevice::ReadOnly | QIODevice::Text ) ) { writeToConsole("Create configuration file, Use default settings."); writeConfigFile(); // create configuration file, use default value return; } QTextStream t( &f1 ); while ( !t.atEnd() ) { ligne = t.readLine(); ligne = ligne.simplified(); if ((ligne.mid(0,1) == "#") || (ligne.length ()==0)) continue; if (ligne.contains("=")) { attr= (ligne.mid(0,ligne.indexOf("="))).simplified(); variable = (ligne.mid(ligne.indexOf("=")+1)).simplified(); if (attr=="port") { port_conf=(variable).toInt(&ok); // if port is valid if ((ok==true) && (validatePort(port_conf))) port_server=port_conf; } if ((attr=="tempo") || (attr=="interval")) { interval_conf=(variable).toInt(&ok); // if interval is valid if ((ok==true) && (interval_conf>2)) interval=interval_conf; } if ((attr=="host_address") && (variable.length()!=0)) host=variable; if ((attr=="username") && (variable.length()!=0)) username_login=variable; if (attr=="autoconnect") autoconnect=StrToBool(variable); if (attr=="view_hidden_shares") view_hidden_shares=StrToBool(variable); if (attr=="system_tray") iconize=StrToBool(variable); if (attr=="notification_messages") show_messages=StrToBool(variable); if (attr=="log_activity") log_activity=StrToBool(variable); if (attr=="limit_log") { limit_log_conf=(variable).toInt(&ok); if (ok==true) limitLog=limit_log_conf; } } } f1.close(); // save change writeConfigFile(); } /** Save configuration file (create if not exist) \sa readConfigFile */ void writeConfigFile() { debugQt("WriteConfigFile()"); // new format // qtsmbstatus >= 2.0.1 QSettings settings; settings.beginGroup("/Configuration"); settings.setValue("qtsmbstatusVersion",int_qtsmbstatus_version); settings.setValue("port",port_server); settings.setValue("interval",interval); settings.setValue("hostAddress",host); settings.setValue("username",username_login); settings.setValue("autoconnect",autoconnect); settings.setValue("viewHiddenShares",view_hidden_shares); settings.setValue("systemTray",iconize); settings.setValue("notificationMessages",show_messages); settings.setValue("logActivity",log_activity); settings.setValue("limitLog",limitLog); settings.setValue("checkNewRelease",check_new_release); settings.endGroup(); // old format (.qtsmbstatus.conf) // qtsmbstatus < 2.0.1 /* QFile f1( QDir::homeDirPath () + "/.qtsmbstatus.conf" ); if ( !f1.open( QIODevice::WriteOnly | QIODevice::Text ) ) { writeToConsole("Impossible to create configuration file"); return; } QTextStream t( &f1 ); t << "# This is the configuration file for qtsmbstatus (client)\n" << "# Port destination\n" << "# default : port = 4443\n" << "port = " << QString::number(port_server) << "\n\n" << "# Interval, in seconds, between every request to smbstatus (interval > 2)\n" << "# default : interval = 10\n" << "interval = " << QString::number(interval) << "\n\n" << "# Host Address\n" << "# default : host_address = 127.0.0.1\n" << "host_address = " << host << "\n\n" << "# Username\n" << "# default : username = root\n" << "username = " << username_login << "\n\n" << "# Autoconnect when qtsmbstatus start\n" << "# default : autoconnect = false\n" << "autoconnect = " << BoolToStr(autoconnect) << "\n\n" << "#View Hidden Shares\n" "# default : view_hidden_shares = true\n" << "view_hidden_shares = " << BoolToStr(view_hidden_shares) << "\n\n" << "#Iconize QtSmbstatus on system tray\n" << "# default : system_tray = true\n" << "system_tray = " << BoolToStr(iconize) << "\n\n" << "#Show status notification messages\n" << "# default : notification_messages = true\n" << "notification_messages = " << BoolToStr(show_messages) << "\n\n" << "#Log SMB/CIFS activities\n" << "# default : log_activity = false\n" << "log_activity = " << BoolToStr(log_activity) << "\n\n" << "#Limit log SMB/CIFS (number of days)\n" << "# default : limit_log = 1\n" << "limit_log = " << QString::number(limitLog) << "\n\n" << "# end file configuration\n"; f1.close(); */ } /** Read configuration file. \sa writeConfigFile */ void readConfigFile() { debugQt("readConfigFile()"); QSettings settings; settings.beginGroup("/Configuration"); if (!settings.contains ("uuid")) settings.setValue("uuid",QUuid::createUuid().toString ()); // if qtsmbstatus < 2.0.1 or first time if ((settings.value("qtsmbstatusVersion",-1).toInt())==-1) { // convert to new format convertto201(); return; } settings.setValue("qtsmbstatusVersion",int_qtsmbstatus_version); // set version int port_conf=settings.value("port",port_server).toInt(); if (validatePort(port_conf)) port_server=port_conf; int interval_conf=settings.value("interval",interval).toInt(); if (interval_conf>2) interval=interval_conf; host=settings.value("hostAddress",host).toString(); username_login=settings.value("username",username_login).toString(); autoconnect=settings.value("autoconnect",autoconnect).toBool(); view_hidden_shares=settings.value("viewHiddenShares",view_hidden_shares).toBool(); iconize=settings.value("systemTray",iconize).toBool(); show_messages=settings.value("notificationMessages",show_messages).toBool(); log_activity=settings.value("logActivity",log_activity).toBool(); limitLog=settings.value("limitLog",limitLog).toInt(); check_new_release=settings.value("checkNewRelease",check_new_release).toBool(); settings.endGroup(); } int main(int argc, char *argv[]) { bool ok; QString usage="\n Usage: qtsmbstatus -i -m -p -v --help\n\n" " -h|--help : Show this help\n" " -i : Interval between smbstatus requests in seconds, (interval > 2) - default value = " + QString::number(interval) + "\n" " -v : Show qtsmbstatus version\n" " -p : TCP port - default = " + QString::number(port_server) + "\n" " -m : Show debug messages\n\n" "example: qtsmbstatus -i 50\n\n"; #ifdef Q_WS_WIN // for windows only - get install directory (register when qtsmbstatus has been installed) QSettings settings(QSettings::SystemScope,"qtsmbstatus", "settings"); if (settings.contains ( "path") ) { QString qtsmbstatus_path = settings.value("path").toString (); QDir::setCurrent ( qtsmbstatus_path ); } #endif MyApplication app( argc, argv ); app.setApplicationName("qtsmbstatus"); #if QT_VERSION >= 0x040400 app.setApplicationVersion(version_qtsmbstatus); #endif app.setOrganizationName("adella.org"); app.setOrganizationDomain("qtsmbstatus.free.fr"); // read configuration file readConfigFile(); int optch; extern int opterr; opterr = 1; // show getopt errors if( app.arguments().contains("--help")) { writeToConsole(usage); return 0; } while ((optch = getopt(argc, argv, "hi:vp:m")) != -1) { switch (optch) { case 'h': writeToConsole(usage); return 0; break; case 'v': writeToConsole("QtSmbstatus version : " + version_qtsmbstatus); // view qtsmbstatus version return 0; break; case 'i': interval=(QString(optarg)).toInt(&ok); if (ok==false) // bad conversion, quit { writeToConsole("\nbad syntax for -i\n" + usage); return 1; } if (interval<3) { writeToConsole("\nInterval it must be higher than two seconds (option: -i)\n"); return 1; } break; case 'p': port_server=(QString(optarg)).toInt(&ok); if (ok==false) { writeToConsole("\nbad syntax for -p\n" + usage); return 1; } if (!validatePort(port_server)) return 1; // port not valid break; case 'm': debug_qtsmbstatus=true; // view message debug break; default: // '?' writeToConsole(usage); return 1; } } if (optind < argc) { printf("\nUnknown option: %s\n\n",argv[optind]); return 1; } // SSL support if (!QSslSocket::supportsSsl()) writeToConsole("This platform don't supports SSL. The socket will fail in the connection phase."); // < translate > QTranslator qtTranslator; qtTranslator.load("qt_" + QLocale::system().name()); app.installTranslator(&qtTranslator); QString translate_file; QTranslator myappTranslator; // only windows #ifdef Q_WS_WIN translate_file= QDir::currentPath () + QString( "/tr/qtsmbstatus_"); myappTranslator.load(translate_file+ QLocale::system().name()); #else translate_file=QString("/usr/share/qtsmbstatus/qtsmbstatus_"); myappTranslator.load(translate_file+ QLocale::system().name()); if (myappTranslator.isEmpty()) { translate_file=QString("/usr/local/share/qtsmbstatus/qtsmbstatus_"); myappTranslator.load(translate_file+ QLocale::system().name()); } #endif app.installTranslator( &myappTranslator ); // < /translate > app.setQuitOnLastWindowClosed ( false ); main_windows fenetre_principale; if (debug_qtsmbstatus) { instances_dlg * tempdlg = new instances_dlg(&fenetre_principale); tempdlg->appendObject(&LineCore::compteur_objet,"LineCore"); tempdlg->appendObject(&server::compteur_objet,"server"); tempdlg->appendObject(&machine::compteur_objet,"machine"); tempdlg->appendObject(&user::compteur_objet,"user"); tempdlg->appendObject(&service::compteur_objet,"service"); tempdlg->appendObject(&smbstatus::compteur_objet,"smbstatus"); tempdlg->show(); } app.connect (&app, SIGNAL(quitMyApp()),&fenetre_principale,SLOT(beforeQuit())); fenetre_principale.show(); int value_return=app.exec(); // for debug only debugQt("\n\n ___________ OBJECTS _________________"); debugQt("LineCore : "+QString::number(LineCore::compteur_objet)); debugQt("server : "+QString::number(server::compteur_objet)); debugQt("machine : "+ QString::number(machine::compteur_objet)); debugQt("user : "+ QString::number(user::compteur_objet)); debugQt("service : "+ QString::number(service::compteur_objet)); debugQt("smbstatus : "+ QString::number(smbstatus::compteur_objet)); if ((LineCore::compteur_objet+server::compteur_objet +machine::compteur_objet+user::compteur_objet+service::compteur_objet+smbstatus::compteur_objet)==0) debugQt("\nDeleted objects : OK\n"); else debugQt("\nDeleted objects : Error !\n"); return value_return; } qtsmbstatus-2.2.1/client/login_windows.h0000755000175000017500000000351511720232510020025 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #ifndef LOGIN_WINDOWS_H #define LOGIN_WINDOWS_H #include "build/ui/ui_login_dialog.h" extern void debugQt(const QString & message); extern QString username_login; extern QString passwd_login; class login_windows :public QDialog, public Ui::login_dialog { Q_OBJECT public: login_windows(QWidget *parent = 0); virtual ~login_windows(); private slots: void on_bt_login_clicked(); }; #endif qtsmbstatus-2.2.1/client/instances_dlg.h0000755000175000017500000000371411720232510017761 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #ifndef instances_dlg_H #define instances_dlg_H #include class instances_dlg : public QDialog { Q_OBJECT public: instances_dlg(QWidget * parent = 0); virtual ~instances_dlg(); static int compteur_objet; void appendObject(int * compteur,const QString & name); protected slots: virtual void slotTimer(); private: //attributes struct struct_object { int * compteur; QString name; QLabel * label1; QLabel * label2; }; QTimer * timer; QVBoxLayout *layoutV; QList list_object; }; #endif qtsmbstatus-2.2.1/client/linecore.h0000644000175000017500000000433311720232510016737 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #ifndef LINECORE_H #define LINECORE_H #include #include extern void debugQt(const QString & message); class LineCore : public QObject { Q_OBJECT public: LineCore(QObject *parent=0); virtual ~LineCore(); void InitHeader(const QString & OneHeader); int InitElement(const QString & element); QString ReturnElement(int index); QString ReturnElement(const QString & element); void Analysis(const QString & OneLine); void SortElements(); public: //attributes static int compteur_objet; private: //attributes QString line; QString header; bool analysisProc; bool initHead; static const short int back; struct record { qint32 Begin; qint32 End; qint32 New_Begin; qint32 New_End; QString Ident; QString Value; }; QList listElement; }; #endif qtsmbstatus-2.2.1/client/log.cpp0000644000175000017500000001503311720232510016252 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include #include #include #include "log.h" #include "mysortfilterproxymodel.h" #define name_of_share "Share" #define name_of_file "File" extern void writeToConsole(const QString & message); /** \class LogForm \brief Form to view CIFS/SMB activities \date 2007-06-27 \version 1.1 \param parent pointer to the parent object \author Daniel Rocher */ LogForm::LogForm(QWidget *parent) : QDialog(parent) { debugQt("LogForm::LogForm()"); setupUi(this); model = new QStandardItemModel(0, 5,tableView); // sort and filter model proxyModel = new MySortFilterProxyModel(name_of_share,name_of_file,tableView); proxyModel->setSourceModel(model); // populate model tableView->setModel ( proxyModel); // sort enable tableView->setSortingEnabled(true); // proxy model is dynamically sorted and filtered whenever the contents of the source model change. proxyModel->setDynamicSortFilter ( true); //not editable tableView->setEditTriggers(QAbstractItemView::NoEditTriggers); tableView->verticalHeader ()->setVisible(false); // hide vertical header setHeader(); } LogForm::~LogForm() { debugQt("LogForm::~LogForm()"); } /** Set tableView's header */ void LogForm::setHeader() { debugQt("LogForm::setHeader()"); QStringList labels; labels << tr("Date") << tr("Machine") << tr("User") << tr("Service") << tr("Type"); model->setHorizontalHeaderLabels ( labels ); tableView->setColumnWidth ( 0, 200 ); tableView->setColumnWidth ( 1, 100 ); tableView->setColumnWidth ( 2, 100 ); tableView->setColumnWidth ( 3, 450 ); tableView->setColumnWidth ( 4, 0); tableView->setColumnHidden ( 4, true ); } /** Save log file. CSV format */ void LogForm::on_SaveLogButton_clicked() { debugQt("LogForm::on_SaveLogButton_clicked()"); QStandardItem * item; QString date; QString machine; QString user; QString type_of_service; QString service; QFileDialog fileDialog; fileDialog.setDefaultSuffix ( "csv" ); QString fileName = fileDialog.getSaveFileName(this, tr("Open File"), QDir::homePath (),"*.csv"); if (fileName.isEmpty()) return; if (!fileName.contains(".csv", Qt::CaseInsensitive)) fileName+=".csv"; QFile f1(fileName); if ( !f1.open( QIODevice::WriteOnly | QIODevice::Text ) ) { writeToConsole("Impossible to create file !"); QMessageBox::warning ( this, "Error" , "Impossible to create file !"); return; } QTextStream t( &f1 ); t << "Date;Machine;User;Type;Service\n"; // header of CSV for (int i=0; irowCount (); ++i) { item =model->item ( i, 0 ); if (item) date=item->text (); else continue; item =model->item ( i, 1 ); if (item) machine=item->text (); else continue; item =model->item ( i, 2 ); if (item) user=item->text (); else continue; item =model->item ( i, 3 ); if (item) service=item->text (); else continue; item =model->item ( i, 4 ); if (item) type_of_service=item->text (); else continue; t << date << ";" << machine << ";" << user << ";" << type_of_service << ";" << service << "\n"; } f1.close(); } /** erase old log \sa limitLog */ void LogForm::eraseOldLog() { debugQt("LogForm::eraseOldLog()"); QDateTime dateItem; QStandardItem * item; for (int i=0; irowCount (); ++i) { item =model->item ( i, 0 ); if (item) dateItem=QDateTime::fromString (item->text (),"yyyy-MM-dd hh:mm:ss"); else continue; if (!dateItem.isValid()) continue; if (dateItemremoveRow ( i ); i--; } } } /** Clear tableView */ void LogForm::on_clearButton_clicked() { debugQt("LogForm::on_clearButton_clicked()"); model->clear(); setHeader(); } /** Add new data \sa type_message */ void LogForm::append(const type_message & Tmessage) { QIcon icon_file(":/icons/document.png"); QIcon icon_share(":/icons/folder_open.png"); QString datetimeStr; QList listItem; // change date format QDateTime datetime=QDateTime::fromString ( Tmessage.date ); if (datetime.isValid ()) datetimeStr=datetime.toString("yyyy-MM-dd hh:mm:ss"); else datetimeStr=Tmessage.date; listItem << new QStandardItem(datetimeStr); // machine listItem << new QStandardItem(Tmessage.machine); // user listItem << new QStandardItem(Tmessage.user); // service if (Tmessage.type_message==0) listItem << new QStandardItem(icon_share, Tmessage.opened) << new QStandardItem(name_of_share); // a share if (Tmessage.type_message==1) listItem << new QStandardItem(icon_file, Tmessage.opened) << new QStandardItem(name_of_file); // a file model->appendRow (listItem); } /** User apply filter */ void LogForm::on_filterEdit_textChanged() { debugQt("LogForm::on_filterEdit_textChanged()"); QString filter=filterEdit->text(); proxyModel->setFilterCaseSensitivity ( Qt::CaseInsensitive ); proxyModel->setFilterFixedString (filter); } /** view/hide Shares */ void LogForm::on_checkShare_stateChanged ( int state) { debugQt("LogForm::on_checkShare_stateChanged ()"); proxyModel->setFilterShare(state); } /** view/hide Files */ void LogForm::on_checkFile_stateChanged ( int state) { debugQt("LogForm::on_checkFile_stateChanged ()"); proxyModel->setFilterFile(state); } qtsmbstatus-2.2.1/client/main_windows.cpp0000644000175000017500000004167211720232510020177 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include #include "../common/core_syntax.h" #include "main_windows.h" extern void writeToConsole(const QString & message); extern QList QTreeWidgetItemList; //default value QString host="127.0.0.1"; QString username_login="root"; QString passwd_login=""; //! Autoconnect when qtsmbstatus start bool autoconnect=false; /** \class main_windows \brief Main Window for QtSmbstatus Client \date 2008-11-16 \version 2.0 \author Daniel Rocher */ main_windows::main_windows(QWidget *parent) : MainWindows(parent) { debugQt("main_windows::main_windows()"); this->setWindowTitle ( "QtSmbstatus client "+version_qtsmbstatus); // forms title qApp->setWindowIcon ( QIcon (":/icons/qtsmbstatus.png") ); trayicon->setToolTip ( windowTitle ()); trayicon->setIcon (qApp->windowIcon()); connect_action= new QAction ( QIcon (":/icons/connect_no.png"),tr("Connect"),menuApp ); menuApp->insertAction ( viewlog_action, connect_action ); menuApp->insertSeparator ( viewlog_action ); connect(connect_action,SIGNAL( triggered ()),this , SLOT(on_pushButton_connect_clicked())); connect(action_Connect,SIGNAL( triggered ()),this , SLOT(on_pushButton_connect_clicked())); comboBox_hostaddr->setDuplicatesEnabled ( false ); // read the address history readHistoryFile(); comboBox_hostaddr->setEditText (host); // Socket SSL/TLS connect(&sslSocket, SIGNAL( encrypted() ), this, SLOT(socketConnected() ) ); connect(&sslSocket, SIGNAL( disconnected() ), this, SLOT(socketClosed() ) ); connect(&sslSocket,SIGNAL(readyRead()), this, SLOT(core()) ); connect(&sslSocket,SIGNAL( error ( QAbstractSocket::SocketError )),this,SLOT(error(QAbstractSocket::SocketError))); connect(&sslSocket, SIGNAL(sslErrors ( const QList & )),this,SLOT(SslErrors(const QList &))); // initial state setWidgetState(); //autoconnect if (autoconnect) on_pushButton_connect_clicked(); } main_windows::~main_windows() { debugQt("main_windows::~main_windows()"); } /** On close event. */ void main_windows::closeEvent(QCloseEvent *e) { debugQt("main_windows::closeEvent(QCloseEvent *e)"); if (trayicon->isVisible()) { this->hide (); logform->hide(); e->ignore(); } else { // write address history writeHistoryFile(); if (socketState()!=UnconnectedState) Disconnect(); //if connected, disconnect saveWindowSize(); logform->close(); logform->deleteLater(); QTimer::singleShot(800, qApp, SLOT(quit())); // wait before quit e->accept(); } } /** Write address history. Before quit, write history. */ void main_windows::writeHistoryFile() { debugQt ("main_windows::writeHistoryFile()"); QSettings settings; settings.beginGroup("/MainWindow"); settings.beginGroup("/History"); int index=0; while (indexcount ()) { settings.setValue("recentAddress"+QString::number(index),comboBox_hostaddr->itemText(index) ); index++; } settings.endGroup(); settings.endGroup(); } /** Read the address history. On startup, read history. */ void main_windows::readHistoryFile() { debugQt ("main_windows::readHistoryFile()"); QString value; QSettings settings; settings.beginGroup("/MainWindow"); settings.beginGroup("/History"); for ( int i = 0; i < 20 ; ++i ) { value=settings.value( "recentAddress" +QString::number( i) ).toString(); if (!value.isEmpty()) comboBox_hostaddr->addItem ( value ); } settings.endGroup(); settings.endGroup(); } /** address lists 20 Max addresses */ void main_windows::comboBox_valid() { debugQt ("main_windows::comboBox_valid()"); int index=1; QString texte = comboBox_hostaddr->currentText (); comboBox_hostaddr->insertItem (0,texte); while (indexcount ()) { if ((comboBox_hostaddr->itemText(index) == texte) || (index > 19) ) comboBox_hostaddr->removeItem (index); else index++; } comboBox_hostaddr->setCurrentIndex(0); } /** Slot connect. If connected, disconnect. */ void main_windows::on_pushButton_connect_clicked() { debugQt("main_windows::on_pushButton_connect_clicked()"); if (socketState()==UnconnectedState) open_dialog_for_login(); // open authentication dialogbox else Disconnect(); } /** Open authentication dialogbox \sa login_windows */ void main_windows::open_dialog_for_login() { debugQt("main_windows::open_dialog_for_login()"); login_windows * login_passwd = new login_windows(this); if (login_passwd->exec()==QDialog::Accepted) { host=comboBox_hostaddr->currentText (); // clear form log logform->on_clearButton_clicked(); // now, try to connect ... statusBar()->showMessage( tr("Connection in progress on %1").arg(host)); sslSocket.connectToHostEncrypted(host,port_server); sslSocket.ignoreSslErrors (); setWidgetState(); } } /** Slot connected. When client is connected to %server \sa on_pushButton_connect_clicked */ void main_windows::socketConnected() { debugQt("main_windows::socketConnected()"); // server address is valid, add to combobox comboBox_valid(); setWidgetState(); permitDisconnectUser=false; // permit (or not) client to disconnect an user permitSendMsg=false; // permit (or not) client to send popup messages currentIndexOfListItem=0; QString SearchTxt=""; //check certificate QSslCertificate cert=sslSocket.peerCertificate (); if ( cert.isNull() || ! cert.isValid()) { QMessageBox::warning ( this, "QtSmbstatus",tr("The server certificate doesn't contain valid data or expired !")); sslSocket.close(); return; } // get hash QByteArray digest=cert.digest (QCryptographicHash::Sha1); QStringList resu; for ( int i=0;i values; QSettings settings; settings.beginGroup("/knownHosts"); int size = settings.beginReadArray("host"); for (int i = 0; i < size; ++i) { settings.setArrayIndex(i); Host knowhost; knowhost.address=settings.value("address").toString(); knowhost.sha1 =settings.value("sha1").toString(); values.append(knowhost); } settings.endArray(); settings.endGroup(); Host knowhost; knowhost.address=comboBox_hostaddr->currentText (); knowhost.sha1=sha1; if ( ! values.contains(knowhost) ) { if (QMessageBox::question ( this, "QtSmbstatus", tr("The authenticity of host '%1' can't be established.").arg(knowhost.address)+"\n"+ tr("SHA1 Fingerprint: %1.").arg(knowhost.sha1)+"\n"+ tr("Are you sure you want to continue connecting ?"), QMessageBox::Yes|QMessageBox::No, QMessageBox::No ) ==QMessageBox::Yes) { values.append(knowhost); // save config settings.beginGroup("/knownHosts"); settings.beginWriteArray("host"); for (int i = 0; i < values.size(); ++i) { settings.setArrayIndex(i); settings.setValue("address", values.at(i).address); settings.setValue("sha1", values.at(i).sha1); } settings.endArray(); settings.endGroup(); } else { // unknown host and user want exit sslSocket.close(); return; } } firstTime=true; timerinfoSmb.start(10000); statusBar()->showMessage( tr("Connected to host") ); // create icon server on treeWidget item_server = new server( treeWidget ); // who i am sendToServer(whoiam,QString::number(int_qtsmbstatus_version),"QtSmbstatus client "+version_qtsmbstatus+" - "+date_qtsmbstatus); //Authentication sendToServer(auth_rq,username_login,passwd_login); // send username and password to server } /** Slot socketClosed. When client is disconnected */ void main_windows::socketClosed() { debugQt("main_windows::socketClosed()"); statusBar()->showMessage( tr("Connection closed") ); smbstatus_rq_started=false; ListSmbstatus.clear(); // clear listview treeWidget->clear(); timerinfoSmb.stop(); timerSmbRequest.stop(); menuPopup->clear (); setWidgetState(); } /** socket error \param socketError */ void main_windows::error (QAbstractSocket::SocketError socketError) { debugQt("main_windows::error()"); statusBar()->showMessage(sslSocket.errorString()); if (socketError!=QAbstractSocket::RemoteHostClosedError) QMessageBox::warning ( this, "QtSmbstatus",sslSocket.errorString()); qWarning() << sslSocket.errorString(); Disconnect(); } /** SSL error */ void main_windows::SslErrors (const QList & listErrors) { debugQt("main_windows::SslErrors()"); for (int i = 0; i < listErrors.size(); ++i) qWarning() << listErrors.at(i).errorString (); } /** Close TCP connection */ void main_windows::Disconnect() { debugQt("main_windows::Disconnect()"); sendToServer(end); // inform server sslSocket.close(); // close SSL/TCP connection setWidgetState(); } /** Enabled/disabled widget when connected/unconnected/... \sa socketState */ void main_windows::setWidgetState() { debugQt("main_windows::setWidgetState()"); QPixmap pixmap; QString label; bool actionIsEnabled=false; switch (socketState()) { case ConnectingState: pixmap=QPixmap(":/icons/connect_creating.png") ; label=tr("Disconnect"); actionIsEnabled=false; break; case ConnectedState: pixmap=QPixmap(QPixmap(":/icons/connect_established.png")); label=tr("Disconnect"); actionIsEnabled=true; break; default: pixmap=QPixmap(":/icons/connect_no.png"); label=tr("Connect"); actionIsEnabled=false; break; } pushButton_connect->setIcon(QIcon(pixmap)); connect_action->setIcon(QIcon(pixmap)); action_Connect->setIcon(QIcon(pixmap)); connect_action->setText( label ); action_Connect->setText( label ); searchAll->setEnabled ( actionIsEnabled ); searchMachineAction->setEnabled ( actionIsEnabled ); searchUserAction->setEnabled ( actionIsEnabled ); searchShare_openAction->setEnabled ( actionIsEnabled ); searchFile_openAction->setEnabled ( actionIsEnabled ); searchNextAction->setEnabled ( false ); } /** Send data to %server. \param cmd command \param inputArg1 argument 1 \param inputArg2 argument 2 \sa command \sa core_syntax */ void main_windows::sendToServer(int cmd,const QString & inputArg1,const QString & inputArg2) { debugQt("main_windows::sendToServer()"); if (socketState()!=ConnectedState) return; // if unconnected QString MyTxt; if (!inputArg1.isEmpty()) MyTxt=addEscapeKeys(inputArg1); if (!inputArg2.isEmpty()) MyTxt+=";"+addEscapeKeys(inputArg2); QString send_txt="["+QString::number(cmd)+"]"+MyTxt+"\n"; sslSocket.write(send_txt.toUtf8()); debugQt(send_txt); } /** Bad login or bad password. */ void main_windows::errorAuth() { debugQt("main_windows::errorAuth()"); QMessageBox::warning ( this, "QtSmbstatus",tr("Invalid login or password !")); on_pushButton_connect_clicked(); } /** Return states in which a socket can be \return state for socket \sa socket_state */ short unsigned int main_windows::socketState() { // connected and encrypted if (sslSocket.state()==QAbstractSocket::ConnectedState && sslSocket.isEncrypted()) return ConnectedState; // unconnected if (sslSocket.state()==QAbstractSocket::UnconnectedState) return UnconnectedState; // try to connect return ConnectingState; } /** Slot %smbstatus timer Request %smbstatus to %server */ void main_windows::slot_timer() { debugQt("main_windows::slot_timer()"); if (! smbstatus_rq_started) { ListSmbstatus.clear(); smbstatus_rq_started=true; sendToServer(smb_rq); } else writeToConsole("WARNING: smbstatus request is already started."); } /** Receive informations from %server (right for current client) \param text client's right: \verbatim 0000 0001 : permit client to disconnect an user 0000 0010 : permit client to send popup messages (popupwindows) \endverbatim */ void main_windows::infoserver(const QString & text) { debugQt("main_windows::infoserver()"); bool ok; permitDisconnectUser=false; permitSendMsg=false; int value = (text.mid(text.indexOf("]")+1)).toInt(&ok); debugQt("Info Serveur : "+QString::number(value)); if ( ok ) { if (value & 1) permitDisconnectUser=true; if (value & 2) permitSendMsg=true; } } /** Protocol interpreter. analyze the server's answers. \sa core_syntax */ void main_windows::core() { debugQt ("main_windows::core()"); QString line; QByteArray lineArray; int reponse; bool ok; core_syntax stx; while (sslSocket.canReadLine ()) { lineArray = sslSocket.readLine(); line=QString::fromUtf8( lineArray.data() ).trimmed (); debugQt(line); stx.setValue(line); if (stx.returnArg(0) != "") { reponse=(stx.returnArg(0)).toInt(&ok); if (ok) // if txt to int conversion is ok { switch (reponse) { case auth_ack: // authentication ok debugQt("["+QString::number(reponse)+"] auth_ack"); slot_timer(); // first time timerSmbRequest.start (interval*1000); break; case end: // end socket by server debugQt("["+QString::number(reponse)+"] end"); sslSocket.close(); break; case smb_data: // smbstatus datas debugQt("["+QString::number(reponse)+"] smb_data"); ListSmbstatus.append(stx.returnArg(1)); break; case end_smb_rq: // smbstatus command is finished debugQt("["+QString::number(reponse)+"] end_smb_rq"); AnalysisSmbstatus(ListSmbstatus); // interpret smbstatus reply break; case error_auth: // authentication error debugQt("["+QString::number(reponse)+"] error_auth"); // socketclient->closeConnection(); (don't close here, server will do it) QTimer::singleShot(200,this,SLOT(errorAuth())); // don't block loop break; case error_command: // Command error ( the last command is not recognized) debugQt("["+QString::number(reponse)+"] error_command"); break; case echo_request: // echo request from server debugQt("["+QString::number(reponse)+"] echo_request"); sendToServer(echo_reply); break; case echo_reply: // echo reply from server, reset echo timer debugQt("["+QString::number(reponse)+"] echo_reply"); // ignore it (for compatibility with qtsmbstatus =< 2.0.6) break; case error_obj: // Server wants to open a dialogbox to visualize an error debugQt("["+QString::number(reponse)+"] error_obj"); // QMessageBox::warning ( 0, "QtSmbstatus",stx.returnArg(1)); msgError->showMessage ( stx.returnArg(1) ) ; break; case server_info: // informations from server debugQt("["+QString::number(reponse)+"] server_info"); infoserver(line); break; case whoiam: debugQt("["+QString::number(reponse)+"] whoiam"); break; default: // not implemented debugQt("["+QString::number(reponse)+"] not implemented"); sendToServer(error_command,"["+QString::number(reponse)+"] not implemented"); break; } } else { //conversion error string->int debugQt("Command error !"); } } else { // core_syntax sends an error debugQt("Command error !"); } } } /** send message to an user \sa MainWindows::slotSendMessage MainWindows::slotSendMessageAllUsers */ void main_windows::sendMessage(const QString & machine,const QString & message) { debugQt("main_windows::sendMessage()"); sendToServer(send_msg,machine,message); } /** disconnect an user \sa MainWindows::slotDisconnectUser */ void main_windows::disconnectUser(const QString & pid,const QString & user) { debugQt("main_windows::disconnectUser()"); sendToServer(kill_user,pid,user); } /** Configure qtsmbstatus client (open form) \sa configure_windows */ void main_windows::on_configureAction_triggered() { debugQt("main_windows::on_configureAction_triggered()"); configure_windows * configurate = new configure_windows(this); connect (configurate,SIGNAL(configuration_changed()),this, SLOT(configuration_changed())); configurate->exec(); } qtsmbstatus-2.2.1/client/server.h0000644000175000017500000000530111720232510016441 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #ifndef SERVER_H #define SERVER_H #include #include #include "machine.h" struct type_message { QString date; QString user; QString machine; QString opened; /** - 0 = share - 1 = file */ short unsigned int type_message; }; class server : public QTreeWidgetItem { public: server(QTreeWidget * parent); virtual ~server(); void refresh_childs(); void mark_childs(); void add_user(const QString & PID,const QString & Name,const QString & Group,const QString & MachineName,const QString & MachineIP); void add_share(const QString & PID,const QString & Share,const QString & DateOpen); void add_lockedfile(const QString & PID,const QString & File,const QString & DenyMode,const QString & RW,const QString & Oplock,const QString & DateOpen); void setSambaVersion (const QString &); QString getSambaVersion(); QString ViewInfoServer(); QString ViewInfoUser(QTreeWidgetItem* Item); QString ViewInfoService(QTreeWidgetItem* Item); QString ViewInfoMachine(QTreeWidgetItem* Item); static int compteur_objet; QList listMessages; private: //private attributes QString SambaVersion; /** Enum type of service: - Tshare : 0 -> share - Tlockedfile : 1 -> locked file */ enum {Tshare,Tlockedfile} TypeService; }; #endif qtsmbstatus-2.2.1/client/mysortfilterproxymodel.h0000644000175000017500000000367311720232510022033 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #ifndef MYSORTFILTERPROXYMODEL_H #define MYSORTFILTERPROXYMODEL_H #include class MySortFilterProxyModel : public QSortFilterProxyModel { public: MySortFilterProxyModel(QString share_label,QString file_label,QObject *parent); virtual ~MySortFilterProxyModel(); bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const; void setFilterFile(bool ); void setFilterShare(bool ); private: QString fileLabel; QString shareLabel; bool MShare; bool MFile; }; #endif qtsmbstatus-2.2.1/client/smbstatus.h0000755000175000017500000000620211720232510017164 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #ifndef SMBSTATUS_H #define SMBSTATUS_H //Qt #include #include class QString; #include "linecore.h" extern void debugQt(const QString & message); class smbstatus : public QObject { Q_OBJECT public: smbstatus(const QStringList &,QObject *parent=0); virtual ~smbstatus(); void RQ_smbstatus(); static int compteur_objet; signals: /** Samba version \param version_samba samba version */ void sambaVersion (const QString & version_samba); /** Informations for an %user \param strPid PID \param strUser User name \param strGroup Group name \param strMachineName Machine name \param strMachineIP IP address **/ void add_user (const QString & strPid,const QString & strUser,const QString & strGroup,const QString & strMachineName,const QString & strMachineIP); /** Informations for a %share \param strPid PID \param strShare Share name \param strConnected date */ void add_share(const QString & strPid ,const QString & strShare,const QString & strConnected); /** Informations for a file opened (locked file) \param strPid PID \param strName File name \param strMode Mode \param strRW RW \param strOplock Oplock \param strDateOpen date */ void add_lockedfile(const QString & strPid,const QString & strName,const QString & strMode,const QString & strRW,const QString & strOplock,const QString & strDateOpen); private: // Private methods void what_part(QString part); private: // Private attributes QStringList ListSmbstatus; int version_samba; /** Enum samba version */ enum {unknown,version2,version3} enum_version_samba; /** Enum section of smbstatus */ enum {header_connexions, connexions, header_services, services, header_locked_files, locked_files} readingpart; }; #endif qtsmbstatus-2.2.1/client/login_dialog.ui0000755000175000017500000001242411720232510017757 0ustar villouvillou login_dialog 0 0 297 127 Connect to qtsmbstatus server 0 0 Username Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter false input_username 0 0 root 0 0 Password Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter false input_password 0 0 QLineEdit::Password Qt::Vertical 20 40 6 0 0 0 login Qt::Horizontal QSizePolicy::Preferred 51 37 0 0 exit input_password input_username bt_login bt_exit bt_login clicked() login_dialog accept() 67 104 18 122 bt_exit clicked() login_dialog reject() 259 100 271 121 qtsmbstatus-2.2.1/client/server.cpp0000644000175000017500000001754211720232510017006 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ /** \class server \brief Class of server items \date 2008-11-08 \version 2.0 \author Daniel Rocher \sa machine user service 'server' is parent of 'machine' and child of listview */ #include #include "server.h" // know instancies QList QTreeWidgetItemList; extern void debugQt(const QString & message); int server::compteur_objet=0; server::server(QTreeWidget * parent) : QTreeWidgetItem(parent) { debugQt("Object server : "+QString::number(++compteur_objet)); QTreeWidgetItemList.append(this); SambaVersion=""; QIcon icon; icon.addPixmap(QPixmap(":/icons/server.png"), QIcon::Normal, QIcon::Off); this->setIcon( 0, icon ); //icon this->setExpanded ( true ); // Sets item to be open } server::~server() { debugQt("Object server : "+QString::number(--compteur_objet)); QTreeWidgetItemList.removeAll (this); } /** Refresh view. Delete obsolete objects (mark = false). \sa mark_childs */ void server::refresh_childs() { debugQt("server::refresh_childs()"); for (int i=0; i < this->childCount (); ++i ) { machine * Child= dynamic_cast(this->child (i) ); if (!Child) break; // if child doesn't exist any more if (!Child->mark) { delete Child; // delete item and his children --i; continue; } // if child exist Child->refresh_childs(); } this->setExpanded ( true ); // Sets item to be open } /** Mark all children. - mark = true -> exist - mark = false -> obsolete \sa refresh_childs */ void server::mark_childs() { debugQt("server::mark_childs()"); for (int i=0; i < this->childCount (); ++i ) { machine * Child= dynamic_cast(this->child (i) ); if (!Child) break; Child->mark=false; Child->mark_childs(); } } /** add machine and user if not exist \sa add_share add_lockedfile */ void server::add_user(const QString & PID,const QString & Name,const QString & Group,const QString & MachineName,const QString & MachineIP) { bool exist=false; for (int i=0; i < this->childCount (); ++i ) { machine * Child= dynamic_cast(this->child (i) ); if (!Child) break; // if child exist if (Child->machine_name==MachineName) { exist=true; // mark this child Child->mark=true; Child->append_user(PID,Name,Group); return; // exit loop } } // if not exist add machine if (!exist) new machine (this,PID,Name,Group,MachineName,MachineIP); } /** add share if not exist \sa add_user add_lockedfile **/ void server::add_share(const QString & PID,const QString & Share,const QString & DateOpen) { for (int i=0; i < this->childCount (); ++i ) { machine * Child= dynamic_cast(this->child (i) ); if (!Child) break; for (int j=0; j < Child->childCount (); ++j ) { user * grandChildren = dynamic_cast(Child->child (j)); if (!grandChildren) break; // if child exist if (grandChildren->pid==PID) { grandChildren->mark=true; // send message (log and "balloon message") only if new if (!grandChildren-> append_share(PID,Share,DateOpen)) { type_message tempMessage; tempMessage.date=DateOpen; tempMessage.user=grandChildren->username; tempMessage.opened=Share; tempMessage.machine=Child->machine_name; tempMessage.type_message=0; // add to a list listMessages << tempMessage; } return; // exit loop } } } } /** add lockedfile if not exist \sa add_user add_share **/ void server::add_lockedfile(const QString & PID,const QString & File,const QString & DenyMode,const QString & RW,const QString & Oplock,const QString & DateOpen) { for (int i=0; i < this->childCount (); ++i ) { machine * Child= dynamic_cast(this->child (i) ); if (!Child) break; for (int j=0; j < Child->childCount (); ++j ) { user * grandChildren = dynamic_cast(Child->child (j)); if (!grandChildren) break; // if child exist if (grandChildren->pid==PID) { grandChildren->mark=true; // send message (log and "balloon message") only if new if (!grandChildren-> append_lockedfile(PID,File,DenyMode,RW,Oplock,DateOpen)) { type_message tempMessage; tempMessage.date=DateOpen; tempMessage.user=grandChildren->username; tempMessage.opened=File; tempMessage.machine=Child->machine_name; tempMessage.type_message=1; // add to a list listMessages << tempMessage; } return; // exit loop } } } } /** \return %server informations \sa ClientSocket::InfoServer */ QString server::ViewInfoServer() { debugQt("server::ViewInfoServer()"); return getSambaVersion(); } /** \return %user informations \sa ClientSocket::InfoUser */ QString server::ViewInfoUser(QTreeWidgetItem* Item) { debugQt("server::ViewInfoUser()"); QString message; user * myItem = dynamic_cast(Item); if (myItem) { message = "
User : "+ myItem->username+"

Group: "+ myItem->group+"

PID: "+ myItem->pid+"


"; } return message; } /** \return %machine informations \sa ClientSocket::InfoMachine */ QString server::ViewInfoMachine(QTreeWidgetItem* Item) { debugQt("server::ViewInfoMachine()"); QString message; machine * myItem = dynamic_cast(Item); if (myItem) { message = "
Machine : "+ myItem->machine_name+"

Address: "+ myItem->machine_ip+"

"; } return message; } /** \return %service informations (locked file or share) \sa ClientSocket::InfoService \sa TypeService */ QString server::ViewInfoService(QTreeWidgetItem* Item) { debugQt("server::ViewInfoService()"); QString message; service * myItem = dynamic_cast(Item); if (myItem) { // if a locked file or share switch (myItem->TypeOfService) { case Tshare: // partage message="
Service: "+ myItem->share+"

Date: "+ myItem->dateopen+"

PID: "+ myItem->pid+"

"; break; case Tlockedfile: // fichier ouvert message = "
File: "+ myItem->filename+"

Date: "+ myItem->dateopen+"

DenyMode: "+ myItem->denymode+"

R/W: "+ myItem->rw+"

"+"Oplock: "+ myItem->oplock+"

"+"PID: "+ myItem->pid+"

"; break; } } return message; } /** set samba version \param sambaversion samba version */ void server::setSambaVersion(const QString & sambaversion) { SambaVersion=sambaversion; } /** \return samba version */ QString server::getSambaVersion() { return SambaVersion; } qtsmbstatus-2.2.1/client/log.ui0000755000175000017500000001420511720232510016110 0ustar villouvillou logform 0 0 863 699 View Activities 9 6 0 6 5 0 0 0 Clear :/icons/clear.png false Qt::Horizontal QSizePolicy::Minimum 40 20 Save log :/icons/filesaveas.png false Qt::Horizontal 40 20 5 0 0 0 Close false 0 6 View/hide shares :/icons/folder_open.png true Qt::Horizontal QSizePolicy::Minimum 21 20 View/hide files :/icons/document.png true Qt::Horizontal QSizePolicy::Fixed 20 25 5 5 0 0 Filter: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter false QAbstractItemView::SingleSelection QAbstractItemView::SelectRows pushButton clicked() logform hide() 799 683 279 683 qtsmbstatus-2.2.1/client/service.cpp0000644000175000017500000000611011720232510017125 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ /** \class service \brief Class of service items (share or locked file) \date 2008-11-08 \version 2.0 \author Daniel Rocher \sa machine user server 'service' is child of 'user' */ #include #include "service.h" extern void debugQt(const QString & message); extern QList QTreeWidgetItemList; int service::compteur_objet=0; /** Constructor of share */ service::service(QTreeWidgetItem * parent,const QString & PID,const QString & Share,const QString & DateOpen ) : QTreeWidgetItem(parent) { debugQt("Object service : "+QString::number(++compteur_objet)); QTreeWidgetItemList.append(this); mark=true; pid=PID; share=Share; dateopen=DateOpen; this->setText ( 0, Share) ; QIcon icon; icon.addPixmap(QPixmap(":/icons/folder_open.png"), QIcon::Normal, QIcon::Off); this->setIcon( 0, icon ); //icon // define object type TypeOfService=Tshare; } /** Constructor of locked file */ service::service(QTreeWidgetItem * parent,const QString & PID,const QString & FileName,const QString & DenyMode,const QString & RW,const QString & Oplock,const QString & DateOpen): QTreeWidgetItem(parent) { debugQt("Object service : "+QString::number(++compteur_objet)); QTreeWidgetItemList.append(this); mark=true; pid=PID; filename=FileName; denymode=DenyMode; rw= RW; oplock=Oplock; dateopen=DateOpen; this->setText ( 0, FileName) ; QIcon icon; icon.addPixmap(QPixmap(":/icons/document.png"), QIcon::Normal, QIcon::Off); this->setIcon( 0, icon ); //icon // define object type TypeOfService=Tlockedfile; } service::~service(){ debugQt("Object service : "+QString::number(--compteur_objet)); QTreeWidgetItemList.removeAll (this); } qtsmbstatus-2.2.1/client/form_smbstatus.ui0000755000175000017500000002437311720232510020406 0ustar villouvillou form_smbstatus 0 0 330 608 qtsmbstatus 0 31 330 577 Qt::Horizontal QSizePolicy::Fixed 50 20 0 0 Host: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter false 0 0 100 0 true 20 QComboBox::NoInsert true false 24 24 24 24 Connect/Disconnect false false true 0 0 330 31 &File &Search &Help :/icons/samba.png:/icons/samba.png &About QtSmbstatus &About QtSmbstatus &About QtSmbstatus About QtSmbstatus About &Qt About &Qt About &Qt About Qt true :/icons/configure.png:/icons/configure.png &Configure client &Configure client Configure QtSmbstatus client &Machine &Machine Search machine &User &User Search user Share &open Share &open Search share open &Locked file &Locked file Search file open &Next &Next Next F3 &Find text &Find text Find text F5 :/icons/exit.png:/icons/exit.png &Quit Quit QtSmbstatus &Show CIFS/SMB activities :/icons/connect_no.png:/icons/connect_no.png Co&nnect helpAboutAction activated() form_smbstatus helpAbout() -1 -1 20 20 helpAbout_QtAction activated() form_smbstatus helpAboutQt() -1 -1 20 20 searchNextAction activated() form_smbstatus NextSlot() -1 -1 20 20 searchAll activated() form_smbstatus AllSearchSlot() -1 -1 20 20 qtsmbstatus-2.2.1/client/tr/0000755000175000017500000000000011720232510015410 5ustar villouvillouqtsmbstatus-2.2.1/client/tr/qtsmbstatus_fr.ts0000644000175000017500000003470011720232510021045 0ustar villouvillou LogForm Date Date Machine Machine User Utilisateur Service Service Open File Fichier ouvert Type Type MainWindows Show CIFS/SMB activities Visualiser les activités CIFS/SMB Configure Configure Minimize Réduire Quit Quitter Restore Restaurer Thanks to: Merci à: This program is licensed to you under the terms of the GNU General Public License version 2 Ce programme est distribué selon les termes de la General Public License version 2 Find text Rechercher un texte Text not found. Texte non trouvé. User %1 has opened share %2 (%3) Utilisateur %1 a ouvert le partage %2 (%3) User %1 has opened file %2 (%3) Utilisateur %1 a ouvert le fichier %2 (%3) CIFS/SMB activities Activités CIFS/SMB Message to send Message à envoyer Message to send to %1: Message à envoyer à %1: Do you really want to disconnect user %1 ? Voulez-vous vraiment déconnecter l'utilisateur %1 ? &Yes &Oui &No &Non Properties Propriétés Send out message to all users Envoyer un message à tous les utilisateurs Send out message to Envoyer un message à Disconnect user Déconnecter l'utilisateur Update is available Mise à jour disponible A new release of %1 is available Une nouvelle version de %1 est disponible You can download it here: %1 Vous pouvez la télécharger ici: %1 configure Configure Configure Autoconnect Autoconnexion <p align="right">Default host address:</p> <p align="right">Adresse par défaut du serveur:</p> <p align="right">Default Username:</p> <p align="right">Utilisateur par défaut:</p> Host Address Adresse du serveur <p align="right">Interval:</p> <p align="right">Intervalle:</p> Cancel Annuler OK OK Username (default : username = root) Nom de l'utilisateur ( defaut : username = root) Log SMB/CIFS activities Journal des activités SMB/CIFS Status notification messages Messages de notification d'état Notifications and log Notifications et journal Limit log: Limiter le journal: days jours Iconize QtSmbstatus in system tray Afficher QtSmbstatus dans la boite à miniatures Smbstatus Smbstatus Interval between smbstatus requests in seconds, (interval > 2) Intervalle, en secondes, entre deux requêtes à smbstatus (intervalle > 2) Show hidden shares (share$) Voir les partages cachés (share$) Show hidden shares Voir les partages cachés Connection Connexion Autoconnect on qtsmbstatus startup Autoconnexion au démarrage de qtsmbstatus Show activities in "balloon messages" Voir les activités dans des info-bulles Misc Divers Automatically Check for updates Rechercher automatiquement des mises à jour A new release is available Une nouvelle version est disponible form_smbstatus qtsmbstatus qtsmbstatus &Help &Aide &About QtSmbstatus &A propos de QtSmbstatus About &Qt A propos de &Qt Connect/Disconnect Connexion/Déconnexion Host: Hôte: &Configure client &Configure client &Search &Rechercher &Machine &Machine &User &Utilisateur Share &open Partage &ouvert &Locked file &Fichier ouvert &Next &Suivant F3 F3 &Find text &Rechercher un texte F5 F5 &File &Fichier About Qt A propos de Qt Configure QtSmbstatus client Configure QtSmbstatus client Search machine Rechercher une machine Search user Rechercher un utilisateur Search share open Rechercher un partage ouvert Search file open Rechercher un fichier ouvert Next Suivant Find text Rechercher un texte &Quit &Quitter Quit QtSmbstatus Quitter QtSmbstatus Co&nnect Co&nnexion &Show CIFS/SMB activities &Visualiser les activités CIFS/SMB About QtSmbstatus A propos de QtSmbstatus logform View Activities Visualiser les activités View/hide shares Voir/cacher les partages View/hide files Voir/cacher les fichiers Filter: Filtre: Clear Effacer Close Fermer Save log Enregistrer le journal login_dialog login login exit Annuler Username Nom root root Password Mot de passe Connect to qtsmbstatus server Connexion au serveur main_windows Connect Connexion Disconnect Déconnexion Invalid login or password ! Mauvais login ou mauvais mot de passe ! Connection in progress on %1 Connexion en cours sur %1 Connected to host Connecté au serveur Connection closed Connexion fermé The server certificate doesn't contain valid data or expired ! Le certificat du serveur ne contient pas des données valides ou bien le certificat a expiré ! The authenticity of host '%1' can't be established. L'authenticité de l'hôte '%1' ne peut pas être établie. Are you sure you want to continue connecting ? Êtes-vous sûr de vouloir continuer la connexion ? SHA1 Fingerprint: %1. Empreinte SHA1: %1. qtsmbstatus-2.2.1/client/tr/qtsmbstatus_uk.ts0000644000175000017500000003757311720232510021070 0ustar villouvillou Project-Id-Version: PACKAGE VERSION Report-Msgid-Bugs-To: POT-Creation-Date: 2008-11-12 21:25+0200 PO-Revision-Date: 2009-12-17 09:00+0000 Last-Translator: Андрей Стрепетов <Unknown> Language-Team: LANGUAGE <LL@li.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2009-12-26 10:24+0000 X-Generator: Launchpad (build Unknown) LogForm Date Дата Machine Комп'ютер User Користувач Service Сервіс Type Тип Open File Відкриття файла MainWindows Show CIFS/SMB activities Показати активність SMB/CIFS Configure Налаштування Minimize Мінімізувати Quit Вихід Restore Відновити Thanks to: Подяки: This program is licensed to you under the terms of the GNU General Public License version 2 Ця программа розповсюджується під ліцензією GNU General Public License версії 2 Find text Найти текст Text not found. Текст не знайдено. User %1 has opened share %2 (%3) Користувач %1 відкрив ресурс %2 (%3) User %1 has opened file %2 (%3) Користувач %1 відкрив файл %2 (%3) CIFS/SMB activities Активність SMB/CIFS Message to send Повідомлення Message to send to %1: Повідомлення для %1: Do you really want to disconnect user %1 ? Ви бажаєте від'єднати користувача %1 ? &Yes &Так &No &Ні Properties Властивості Send out message to all users Повідомлення всім користувачам Send out message to Повідомлення для Disconnect user Від'єднати користувача Update is available Доступне оновлення A new release of %1 is available Доступна нова версія %1 You can download it here: %1 Ви можете завантажити тут: %1 configure Configure Налаштування Smbstatus Smbstatus <p align="right">Interval:</p> <p align="right">Інтервал:</p> Interval between smbstatus requests in seconds, (interval > 2) Інтервал між запитами smbstatus в секундах (інтервал > 2) Show hidden shares (share$) Показати приховані ресурси (share$) Show hidden shares Показати приховані ресурси Notifications and log Повідомлення та звіт Limit log: Ліміт звіту: days днів Iconize QtSmbstatus in system tray Іконка QtSmbstatus в треї Show activities in "balloon messages" Активність в "плаваючих повідомленнях" Status notification messages Повідомлення статусу Log SMB/CIFS activities Звіт активності SMB/CIFS OK ТАК Cancel Відміна Misc Різне Automatically Check for updates Автоматично первіряти наявність оновлень A new release is available З'явилась нова версія Connection З'єднання <p align="right">Default Username:</p> <p align="right">Користувач за умовчанням:</p> Autoconnect on qtsmbstatus startup Автоз'єднання при старті qtsmbstatus Autoconnect Автоз'єднання <p align="right">Default host address:</p> <p align="right">Хост за умовчанням:</p> Username (default : username = root) Користувач (за умовчанням : користувач = root) Host Address Адреса хоста form_smbstatus qtsmbstatus qtsmbstatus Host: Хост: Connect/Disconnect З'єднання/Від'єднання &File &Файл &Search &Пошук &Help &Довідка &About QtSmbstatus &Про QtSmbstatus About QtSmbstatus Про QtSmbstatus About &Qt Про &Qt About Qt Про Qt &Configure client &Конфігурування клієнта Configure QtSmbstatus client Конфігурування QtSmbstatus клієнта &Machine &Комп'ютер Search machine Пошук комп'ютера &User &Користувач Search user Пошук користувача Share &open &Відкриті ресурси Search share open Пошук відкритих ресурсів &Locked file &Блоковані файли Search file open Пошук відкритих файлів &Next &Далі Next Далі F3 F3 &Find text &Найти текст Find text Найти текст F5 F5 &Quit &Вихід Quit QtSmbstatus Вийти з QtSmbstatus &Show CIFS/SMB activities &Показати активність SMB/CIFS Co&nnect З'&єднання logform View Activities Дивитись активність Clear Очистити Save log Зберегти звіт Close Закрити View/hide shares Показати/сховати ресурси View/hide files Показати/сховати файли Filter: Фільтр: login_dialog Connect to qtsmbstatus server З'єднання з сервером qtsmbstatus Username Користувач root root Password Пароль login логін exit вихід main_windows Connect З'єднання Connection in progress on %1 Процес з'єднання з %1 Connected to host З'єднано з хостом Connection closed З'єднання закрите Disconnect Від'єднання Invalid login or password ! Неправильний логін чи пароль! The server certificate doesn't contain valid data or expired ! The authenticity of host '%1' can't be established. Are you sure you want to continue connecting ? SHA1 Fingerprint: %1. qtsmbstatus-2.2.1/client/tr/qtsmbstatus_de.ts0000644000175000017500000003512411720232510021027 0ustar villouvillou Project-Id-Version: 2.1.2 Report-Msgid-Bugs-To: POT-Creation-Date: 2008-11-12 21:25+0200 PO-Revision-Date: 2009-09-26 16:54+0000 Last-Translator: Till Freier <till@thoran.eu> Language-Team: LANGUAGE <LL@li.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2009-12-26 10:24+0000 X-Generator: Launchpad (build Unknown) LogForm Date Datum Machine Maschine User User Service Dienst Type Belegungstyp Open File Öffne Datei MainWindows Show CIFS/SMB activities Zeige CIFS/SMB aktivitäten Configure Einrichten Minimize Minimieren Quit beenden Restore Wiederherstellen Thanks to: Dank an: This program is licensed to you under the terms of the GNU General Public License version 2 Find text Text suchen Text not found. Text nicht gefunden. User %1 has opened share %2 (%3) Benutzer %1 hat die Datei(en) %2 (%3) geöffnet User %1 has opened file %2 (%3) Benutzer %1 hat dei Datei(en) %2 (%3) geöffnet CIFS/SMB activities CIFS/SMB aktivitäten Message to send Nachricht zum Senden Message to send to %1: nachricht zu %1 senden: Do you really want to disconnect user %1 ? Möchten Sie wirklich die Verbindung von User %1 beenden? &Yes &Ja &No &Nein Properties Eigenschaften Send out message to all users Sende Nachricht an alle Benutzer Send out message to Sende Nachricht an Disconnect user Schliesse Verbindung von User Update is available Aktualisierung verfügbar A new release of %1 is available Es ist eine neue Version von %1 verfügbar You can download it here: %1 Sie können sie hier herunterladen: %1 configure Configure Einrichten Smbstatus Smbstatus <p align="right">Interval:</p> <p align="right">Interval:</p> Interval between smbstatus requests in seconds, (interval > 2) Intervall zwischen smbstatus anfragen in Sekunden, (intervall >2) Show hidden shares (share$) Zeige verstecke Anteile (share$) Show hidden shares Zeige verstecke Anteile Notifications and log Benachrichten und loggen Limit log: Begrenzter Log: days Tage Iconize QtSmbstatus in system tray Erschaffe QtSmbstatus Icon im System menu Show activities in "balloon messages" Zeige Aktivität in "Ballon Nachrichten" Status notification messages Status Benachrichtigung Log SMB/CIFS activities Logge SMB/CIFS tätigkeiten OK OK Cancel Abbrechen Misc Sonstiges Automatically Check for updates Automatische Updateprüfung A new release is available Eine neue Version ist verfügbar Connection Verbindung <p align="right">Default Username:</p> <p align="right">Standart Username:</p> Autoconnect on qtsmbstatus startup Automatische Verbindung bei qtsmbstatus start Autoconnect Automatisches Verbinden <p align="right">Default host address:</p> <p align="right">Standart Rechner Adresse:</p> Username (default : username = root) Benutzername (default: username = root) Host Address Rechneradresse form_smbstatus qtsmbstatus qtsmbstatus Host: Host: Connect/Disconnect Verbinden/Trennen &File &Datei &Search &Suche &Help &Hilfe &About QtSmbstatus &Über QtSmbstatus About QtSmbstatus Über QtSmbstatus About &Qt Über &Qt About Qt Über Qt &Configure client &Einstellungen Client Configure QtSmbstatus client Einstellung QtSmbstatus Clients &Machine &Maschine Search machine Suche Maschine &User &Benutzer Search user Suche User Share &open Teilen &öffenen Search share open Suche geöffnete Anteile &Locked file &verschlossene File Search file open Suche geöffnete Datei &Next &weiter Next Nächstes F3 F3 &Find text &Finde Text Find text Text suchen F5 F5 &Quit &beenden Quit QtSmbstatus Beende QtSmbstatus &Show CIFS/SMB activities &Zeige CIFS/SMB aktivitäten Co&nnect Verbi&nde logform View Activities Zeige Aktivitäten Clear Leeren/Zurücksetzen Save log Log speichern Close Schliessen View/hide shares Zeige/Verstecke Anteile View/hide files Zeige/verstecke Dateien Filter: Filter: login_dialog Connect to qtsmbstatus server Verbinde zum qtsmbstatus Server Username Username root root Password Passwort login Anmelden exit Beenden main_windows Connect Verbunden Connection in progress on %1 Verbindung wird aufgebaut bei %1 Connected to host Verbunden mit Host Connection closed Verbindung getrennt Disconnect Getrennt Invalid login or password ! Falscher Login oder Passwort ! The server certificate doesn't contain valid data or expired ! The authenticity of host '%1' can't be established. Are you sure you want to continue connecting ? SHA1 Fingerprint: %1. qtsmbstatus-2.2.1/client/tr/qtsmbstatus_sv.ts0000644000175000017500000003312311720232510021064 0ustar villouvillou LogForm Date Datum Machine User Användare Service Tjänst Open File Öppna fil Type Typ MainWindows Show CIFS/SMB activities Visa CIFS/SMB aktiviteter Configure Konfigurera Minimize Minimera Quit Restore Återställ Thanks to: Tack till: This program is licensed to you under the terms of the GNU General Public License version 2 Find text Sök text Text not found. Texten hittades inte. User %1 has opened share %2 (%3) User %1 has opened file %2 (%3) CIFS/SMB activities CIFS/SMB aktiviteter Message to send Medelande att skicka Message to send to %1: Medelande att skicka till %1: Do you really want to disconnect user %1 ? Vill du verkligen koppla ner användare %1? &Yes &Ja &No &Nej Properties Egenskaper Send out message to all users Skicka ut medelande till alla användare Send out message to Skicka ut medelande till Disconnect user Koppla ner användaren Update is available A new release of %1 is available You can download it here: %1 configure Configure Konfigurera Autoconnect Auto anslut <p align="right">Default host address:</p> <p align="right">Default Username:</p> Host Address Värdadress <p align="right">Interval:</p> Cancel Avbryt OK OK Username (default : username = root) Log SMB/CIFS activities Status notification messages Notifications and log Limit log: days dagar Iconize QtSmbstatus in system tray Smbstatus Smbstatus Interval between smbstatus requests in seconds, (interval > 2) Show hidden shares (share$) Show hidden shares Connection Anslutning Autoconnect on qtsmbstatus startup Show activities in "balloon messages" Misc Automatically Check for updates A new release is available form_smbstatus qtsmbstatus qtsmbstatus &Help &Hjälp &About QtSmbstatus &Om QrSmbstatus About &Qt Om &Qt Connect/Disconnect Anslut/Koppla ner Host: Värd: &Configure client &Search &Sök &Machine &User &Användare Share &open &Locked file &Next &Nästa F3 F3 &Find text &Sök text F5 F5 &File &Fil About Qt Om Qt Configure QtSmbstatus client Search machine Search user Search share open Search file open Next Nästa Find text Sök text &Quit &Avsluta Quit QtSmbstatus Avsluta QtSmbstatus Co&nnect A&nslut &Show CIFS/SMB activities About QtSmbstatus Om QtSmbstatus logform View Activities Visa aktiviteter View/hide shares View/hide files Visa/Göm filer Filter: Clear Close Stäng Save log login_dialog login logga in exit avsluta Username Användarnamn root Password Lösenord Connect to qtsmbstatus server Anslut till qtsmbstatus server main_windows Connect Anslut Disconnect Koppla ner Invalid login or password ! Ogiltigt användarnamn eller lösenord! Connection in progress on %1 Connected to host Ansluten till värd Connection closed Anslutning stängd The server certificate doesn't contain valid data or expired ! The authenticity of host '%1' can't be established. Are you sure you want to continue connecting ? SHA1 Fingerprint: %1. qtsmbstatus-2.2.1/client/tr/qtsmbstatus_es.qm0000644000175000017500000002512211720232520021033 0ustar villouvillou ) \1r'8O#x!ʶPEA% laN @  C#  1!" Ֆ5 qB -K Vd a4&2 eK$ ϑ } >t b ~W  % Q" E d"7 # ,? KY ! R) U3 %m Žs" ҘSRn ':t3i&@Project-Id-Version: 2.1.2 Report-Msgid-Bugs-To: daniel.rocher@adella.org POT-Creation-Date: 2008-11-12 21:25+0200 PO-Revision-Date: 2010-05-05 17:54+0000 Last-Translator: Jorge Dardn <jdardon@xelalug.org> Language-Team: LANGUAGE <LL@li.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-01-28 02:55+0000 X-Generator: Launchpad (build 12274)  FechaDateLogForm EquipoMachineLogFormAbrir archivo Open FileLogFormServicioServiceLogFormTipoTypeLogFormUsuarioUserLogForm&No&No MainWindows&Si&Yes MainWindowsNUna nueva versin de %1 est disponible A new release of %1 is available MainWindows(Actividades CIFS/SMBCIFS/SMB activities MainWindowsConfigurar Configure MainWindows&Desconectar usuarioDisconnect user MainWindowsVDesea realmente desconectar al usuario %1?*Do you really want to disconnect user %1 ? MainWindowsBuscar texto Find text MainWindows Mensaje a enviarMessage to send MainWindows2Mensaje para enviar a %1:Message to send to %1: MainWindowsMinimizarMinimize MainWindowsPropiedades Properties MainWindows SalirQuit MainWindowsRestaurarRestore MainWindows enviar mensaje aSend out message to MainWindowsHMandar mensajes a todos los usuariosSend out message to all users MainWindows8Mostrar actividades CIFS/SMBShow CIFS/SMB activities MainWindows(Texto no encontrado.Text not found. MainWindowsGracias a: Thanks to: MainWindowsEste programa esta licenciado a usted bajo los terminos de la Licencia General Publica GNU version 2[This program is licensed to you under the terms of the GNU General Public License version 2 MainWindows@La actualizacin est disponibleUpdate is available MainWindowsTEl Usuario %1 a abierto el archivo %2 (%3)User %1 has opened file %2 (%3) MainWindowsZEl Usuario %1 a abierto el compartido %2 (%3) User %1 has opened share %2 (%3) MainWindows@Puede descargarlo desde aqu: %1You can download it here: %1 MainWindowsf<p align="right">Nombre de usuario por defecto:</p>&

Default Username:

 configurel<p align="right">Direccin de host predeterminada:</p>*

Default host address:

 configure><p align="right">Intervalo:</p>

Interval:

 configureBUna nueva versin esta disponibleA new release is available configureAutoconectar Autoconnect configurelConectarse automticamente en el inicio de qtsmbstatus"Autoconnect on qtsmbstatus startup configureVRevisar automaticamente por actualizacionesAutomatically Check for updates configureCancelarCancel configureConfigurar Configure configureConexin Connection configure(Direccin del equipo Host Address configure^Iconizar QtSmbstatus en el rea de notificacin"Iconize QtSmbstatus in system tray configureIntervalo entre requerimientos smbstatus en segundos, (intervalo > 2)>Interval between smbstatus requests in seconds, (interval > 2) configure"Limitar registro: Limit log: configure<Registrar actividades SMB/CIFSLog SMB/CIFS activities configure VariosMisc configure2Notificaciones y registroNotifications and log configureOKOK configure\Mostrar las actividades en "Mensajes de globo"%Show activities in "balloon messages" configure6Mostrar compartidos ocultosShow hidden shares configureHMostrar compartidos ocultos (share$)Show hidden shares (share$) configureSmbstatus Smbstatus configureLEstado de los mensajes de notificacinStatus notification messages configureBUsuario(defecto : usuario = root)%Username (default : username = root) configurediasdays configure,&Acerca de QtSmbstatus&About QtSmbstatusform_smbstatus&&Configurar cliente&Configure clientform_smbstatus&Archivo&Fileform_smbstatus&Buscar texto &Find textform_smbstatus Ay&uda&Helpform_smbstatus$Archivo b&loqueado &Locked fileform_smbstatus&Maquina&Machineform_smbstatusSiguie&nte&Nextform_smbstatus &Salir&Quitform_smbstatusBu&scar&Searchform_smbstatusB&Mostrar las actividades CIFS/SMB&Show CIFS/SMB activitiesform_smbstatus&Usuario&Userform_smbstatusAcerca de &Qt About &Qtform_smbstatusAcerca de QtAbout Qtform_smbstatus*Acerca de QtSmbstatusAbout QtSmbstatusform_smbstatusCo&nectarCo&nnectform_smbstatusHConfigurar el cliente de QtSmbstatusConfigure QtSmbstatus clientform_smbstatus(Conectar/DesconectarConnect/Disconnectform_smbstatusF3F3form_smbstatusF5F5form_smbstatusBuscar texto Find textform_smbstatusServidor:Host:form_smbstatusSiguienteNextform_smbstatus(Salir de QtSmbstatusQuit QtSmbstatusform_smbstatus,Buscar archivo abiertoSearch file openform_smbstatusBuscar MaquinaSearch machineform_smbstatus2Buscar compartido abiertoSearch share openform_smbstatusBuscar usuario Search userform_smbstatus$Compartir &abierto Share &openform_smbstatusqtsmbstatus qtsmbstatusform_smbstatusLimpiarClearlogform CerrarCloselogformFiltro:Filter:logform Guardar registroSave loglogformVer ActividadesView Activitieslogform(Ver/ocultar archivosView/hide fileslogform$Ver/ocultar partesView/hide shareslogformDConectarse al servidor qtsmbstatusConnect to qtsmbstatus server login_dialogContraseaPassword login_dialog"Nombre de usuarioUsername login_dialog salirexit login_dialogIniciar sesinlogin login_dialogsuperusuarioroot login_dialogConectarConnect main_windows(Conectar al servidorConnected to host main_windows"Coneccin cerradaConnection closed main_windows4Conexin en progreso en %1Connection in progress on %1 main_windowsDesconectar Disconnect main_windows:Login o Password no validos !Invalid login or password ! main_windowsqtsmbstatus-2.2.1/client/tr/qtsmbstatus_pl.qm0000644000175000017500000002430411720232520021040 0ustar villouvillou) \sr'O"Cx ʶRPEA$) laf l C"v  1 Ֆ50 qB8 - Vd% a4$ eK#C ϑ  >2  ~ > %M Q!4 E d # ,? K  x R) U3 # Žs! ҘSvn ':43i%SProject-Id-Version: 2.1.2 Report-Msgid-Bugs-To: daniel.rocher@adella.org POT-Creation-Date: 2008-11-12 21:25+0200 PO-Revision-Date: 2010-05-11 23:40+0000 Last-Translator: Inox <Unknown> Language-Team: LANGUAGE <LL@li.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-01-28 02:55+0000 X-Generator: Launchpad (build 12274) DataDateLogFormKomputerMachineLogFormOtwrz plik Open FileLogForm ZasbServiceLogFormTypTypeLogFormU|ytkownikUserLogForm&Nie&No MainWindows&Tak&Yes MainWindows:Nowe wydanie %1 jest dostpne A new release of %1 is available MainWindows$Zdarzenia CIFS/SMBCIFS/SMB activities MainWindowsKonfiguracja Configure MainWindows$OdBcz u|ytkownikaDisconnect user MainWindowsJCzy na pewno odBczy u|ytkownika %1?*Do you really want to disconnect user %1 ? MainWindowsZnajdz tekst Find text MainWindows*Wiadomo[ do wysBaniaMessage to send MainWindows8Wiadomo[ do wysBania do %1:Message to send to %1: MainWindowsMinimalizujMinimize MainWindowsWBa[ciwo[ci Properties MainWindowsZakoDczQuit MainWindowsPrzywrRestore MainWindows&Wy[lij wiadomo[ doSend out message to MainWindowsVWy[lij wiadomo[ do wszystkich u|ytkownikwSend out message to all users MainWindows>Poka| dziennik zdarzeD CIFS/SMBShow CIFS/SMB activities MainWindows.Nie odnaleziono tekstu.Text not found. MainWindowsPodzikowania: Thanks to: MainWindowsTen program jest licencjonowany na zasadach GNU General Public License wersja 2[This program is licensed to you under the terms of the GNU General Public License version 2 MainWindows4Aktualizacja jest dostpnaUpdate is available MainWindowsFU|ytkownik %1 otworzyB plik %2 (%3)User %1 has opened file %2 (%3) MainWindowsJU|ytkownik %1 otworzyB udziaB %2 (%3) User %1 has opened share %2 (%3) MainWindows4Mo|esz pobra to tutaj: %1You can download it here: %1 MainWindows`<p align="right">Domy[lna nazwa u|ytkownika:</p>&

Default Username:

 configureT<p align="right">Domy[lny adres hosta:</p>*

Default host address:

 configureD<p align="right">Odstp czasu:</p>

Interval:

 configure4Nowe wydanie jest dostpneA new release is available configure$Acz automatycznie Autoconnect configureNAcz automatycznie podczas uruchamiania"Autoconnect on qtsmbstatus startup configure^Automatycznie sprawdzaj dostpno[ aktualizacjiAutomatically Check for updates configure AnulujCancel configureKonfiguracja Configure configurePoBczenie Connection configureAdres Hosta Host Address configure<Minimalizuj na tack systemow"Iconize QtSmbstatus in system tray configurenOdstp midzy kolejnymi poBczeniami (s, co najmniej 2)>Interval between smbstatus requests in seconds, (interval > 2) configureBOgraniczenie wielko[ci dziennika: Limit log: configureJRejestruj aktywne poBczenia SMB/CIFSLog SMB/CIFS activities configureInneMisc configure:Powiadomienia i rejestrowanieNotifications and log configureOKOK configureZPokazuj wykonywane czynno[ci w podpowiedziach%Show activities in "balloon messages" configure(Poka| ukryte udziaByShow hidden shares configure:Poka| ukryte udziaBy (share$)Show hidden shares (share$) configureSmbstatus Smbstatus configure:Powiadomienia o zmianie stanuStatus notification messages configurePU|ytkownik (domy[lnie: username = root)%Username (default : username = root) configurednidays configure&O QtSmbstatus&About QtSmbstatusform_smbstatus*&Konfiguracja klienta&Configure clientform_smbstatus &Plik&Fileform_smbstatusZnajdz &tekst &Find textform_smbstatus &Pomoc&Helpform_smbstatus"&Zablokowany plik &Locked fileform_smbstatus&Komputer&Machineform_smbstatus &Znajdz nastpne&Nextform_smbstatusZa&koDcz&Quitform_smbstatus&Znajdz&Searchform_smbstatus@P&oka| dziennik zdarzeD CIFS/SMB&Show CIFS/SMB activitiesform_smbstatus&U|ytkownik&Userform_smbstatus O &Qt About &Qtform_smbstatusO QtAbout Qtform_smbstatusO QtSmbstatusAbout QtSmbstatusform_smbstatus&PoBczCo&nnectform_smbstatus0Konfiguracja QtSmbstatusConfigure QtSmbstatus clientform_smbstatusPoBcz/RozBczConnect/Disconnectform_smbstatusF3F3form_smbstatusF5F5form_smbstatusZnajdz tekst Find textform_smbstatus Host:Host:form_smbstatus DalejNextform_smbstatus&ZakoDcz QtSmbstatusQuit QtSmbstatusform_smbstatus&Znajdz otwarty plikSearch file openform_smbstatusZnajdz komputerSearch machineform_smbstatus*Znajdz otwarty udziaBSearch share openform_smbstatus$Znajdz u|ytkownika Search userform_smbstatus&Otwarty udziaB Share &openform_smbstatusqtsmbstatus qtsmbstatusform_smbstatusWyczy[ClearlogformZamknijCloselogform Filtr:Filter:logformZapisz dziennikSave loglogform Dziennik zdarzeDView Activitieslogform*Poka| lub ukryj plikiView/hide fileslogform.Poka| lub ukryj udziaByView/hide shareslogform"PoBcz z serweremConnect to qtsmbstatus server login_dialog HasBoPassword login_dialogU|ytkownikUsername login_dialogWyj[cieexit login_dialog Loginlogin login_dialogrootroot login_dialog PoBczConnect main_windows$PoBczono z hostemConnected to host main_windows*PoBczenie zakoDczoneConnection closed main_windows$Trwa Bczenie z %1Connection in progress on %1 main_windowsRozBcz Disconnect main_windowsTNieprawidBowa nazwa u|ytkownika lub hasBo!Invalid login or password ! main_windows , qtsmbstatus-2.2.1/client/tr/qtsmbstatus_es.ts0000644000175000017500000003543011720232510021046 0ustar villouvillou Project-Id-Version: 2.1.2 Report-Msgid-Bugs-To: daniel.rocher@adella.org POT-Creation-Date: 2008-11-12 21:25+0200 PO-Revision-Date: 2010-05-05 17:54+0000 Last-Translator: Jorge Dardón <jdardon@xelalug.org> Language-Team: LANGUAGE <LL@li.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-01-28 02:55+0000 X-Generator: Launchpad (build 12274) LogForm Date Fecha Machine Equipo User Usuario Service Servicio Type Tipo Open File Abrir archivo MainWindows Show CIFS/SMB activities Mostrar actividades CIFS/SMB Configure Configurar Minimize Minimizar Quit Salir Restore Restaurar Thanks to: Gracias a: This program is licensed to you under the terms of the GNU General Public License version 2 Este programa esta licenciado a usted bajo los terminos de la Licencia General Publica GNU version 2 Find text Buscar texto Text not found. Texto no encontrado. User %1 has opened share %2 (%3) El Usuario %1 a abierto el compartido %2 (%3) User %1 has opened file %2 (%3) El Usuario %1 a abierto el archivo %2 (%3) CIFS/SMB activities Actividades CIFS/SMB Message to send Mensaje a enviar Message to send to %1: Mensaje para enviar a %1: Do you really want to disconnect user %1 ? ¿Desea realmente desconectar al usuario %1? &Yes &Si &No &No Properties Propiedades Send out message to all users Mandar mensajes a todos los usuarios Send out message to enviar mensaje a Disconnect user Desconectar usuario Update is available La actualización está disponible A new release of %1 is available Una nueva versión de %1 está disponible You can download it here: %1 Puede descargarlo desde aquí: %1 configure Configure Configurar Smbstatus Smbstatus <p align="right">Interval:</p> <p align="right">Intervalo:</p> Interval between smbstatus requests in seconds, (interval > 2) Intervalo entre requerimientos smbstatus en segundos, (intervalo > 2) Show hidden shares (share$) Mostrar compartidos ocultos (share$) Show hidden shares Mostrar compartidos ocultos Notifications and log Notificaciones y registro Limit log: Limitar registro: days dias Iconize QtSmbstatus in system tray Iconizar QtSmbstatus en el área de notificación Show activities in "balloon messages" Mostrar las actividades en "Mensajes de globo" Status notification messages Estado de los mensajes de notificación Log SMB/CIFS activities Registrar actividades SMB/CIFS OK OK Cancel Cancelar Misc Varios Automatically Check for updates Revisar automaticamente por actualizaciones A new release is available Una nueva versión esta disponible Connection Conexión <p align="right">Default Username:</p> <p align="right">Nombre de usuario por defecto:</p> Autoconnect on qtsmbstatus startup Conectarse automáticamente en el inicio de qtsmbstatus Autoconnect Autoconectar <p align="right">Default host address:</p> <p align="right">Dirección de host predeterminada:</p> Username (default : username = root) Usuario(defecto : usuario = root) Host Address Dirección del equipo form_smbstatus qtsmbstatus qtsmbstatus Host: Servidor: Connect/Disconnect Conectar/Desconectar &File &Archivo &Search Bu&scar &Help Ay&uda &About QtSmbstatus &Acerca de QtSmbstatus About QtSmbstatus Acerca de QtSmbstatus About &Qt Acerca de &Qt About Qt Acerca de Qt &Configure client &Configurar cliente Configure QtSmbstatus client Configurar el cliente de QtSmbstatus &Machine &Maquina Search machine Buscar Maquina &User &Usuario Search user Buscar usuario Share &open Compartir &abierto Search share open Buscar compartido abierto &Locked file Archivo b&loqueado Search file open Buscar archivo abierto &Next Siguie&nte Next Siguiente F3 F3 &Find text &Buscar texto Find text Buscar texto F5 F5 &Quit &Salir Quit QtSmbstatus Salir de QtSmbstatus &Show CIFS/SMB activities &Mostrar las actividades CIFS/SMB Co&nnect Co&nectar logform View Activities Ver Actividades Clear Limpiar Save log Guardar registro Close Cerrar View/hide shares Ver/ocultar partes View/hide files Ver/ocultar archivos Filter: Filtro: login_dialog Connect to qtsmbstatus server Conectarse al servidor qtsmbstatus Username Nombre de usuario root superusuario Password Contraseña login Iniciar sesión exit salir main_windows Connect Conectar Connection in progress on %1 Conexión en progreso en %1 Connected to host Conectar al servidor Connection closed Conección cerrada Disconnect Desconectar Invalid login or password ! Login o Password no validos ! The server certificate doesn't contain valid data or expired ! The authenticity of host '%1' can't be established. Are you sure you want to continue connecting ? SHA1 Fingerprint: %1. qtsmbstatus-2.2.1/client/tr/qtsmbstatus_fr.qm0000644000175000017500000002503111720232520021032 0ustar villouvillou)l \r' OX xʶ_PEA#' la   C 1 Ֆ5 qBO - Vd a4# eK"E ϑ 0 >  ~  % v Qw EY d ɾ$a  # ,? K  R)@ U3= " o! Žs ҘS%%n O':U3@i&DateDateLogFormMachineMachineLogFormFichier ouvert Open FileLogFormServiceServiceLogFormTypeTypeLogFormUtilisateurUserLogForm&Non&No MainWindows&Oui&Yes MainWindowsRUne nouvelle version de %1 est disponible A new release of %1 is available MainWindows$Activits CIFS/SMBCIFS/SMB activities MainWindowsConfigure Configure MainWindows2Dconnecter l'utilisateurDisconnect user MainWindowsfVoulez-vous vraiment dconnecter l'utilisateur %1 ?*Do you really want to disconnect user %1 ? MainWindows&Rechercher un texte Find text MainWindows"Message envoyerMessage to send MainWindows.Message envoyer %1:Message to send to %1: MainWindowsRduireMinimize MainWindowsProprits Properties MainWindowsQuitterQuit MainWindowsRestaurerRestore MainWindows(Envoyer un message Send out message to MainWindowsTEnvoyer un message tous les utilisateursSend out message to all users MainWindowsBVisualiser les activits CIFS/SMBShow CIFS/SMB activities MainWindows"Texte non trouv.Text not found. MainWindowsMerci : Thanks to: MainWindowsCe programme est distribu selon les termes de la General Public License version 2 [This program is licensed to you under the terms of the GNU General Public License version 2 MainWindows,Mise jour disponibleUpdate is available MainWindowsTUtilisateur %1 a ouvert le fichier %2 (%3)User %1 has opened file %2 (%3) MainWindowsTUtilisateur %1 a ouvert le partage %2 (%3) User %1 has opened share %2 (%3) MainWindowsDVous pouvez la tlcharger ici: %1You can download it here: %1 MainWindowsX<p align="right">Utilisateur par dfaut:</p>&

Default Username:

 configuref<p align="right">Adresse par dfaut du serveur:</p>*

Default host address:

 configure@<p align="right">Intervalle:</p>

Interval:

 configureFUne nouvelle version est disponibleA new release is available configureAutoconnexion Autoconnect configureRAutoconnexion au dmarrage de qtsmbstatus"Autoconnect on qtsmbstatus startup configureVRechercher automatiquement des mises jourAutomatically Check for updates configureAnnulerCancel configureConfigure Configure configureConnexion Connection configure$Adresse du serveur Host Address configure^Afficher QtSmbstatus dans la boite miniatures"Iconize QtSmbstatus in system tray configureIntervalle, en secondes, entre deux requtes smbstatus (intervalle > 2)>Interval between smbstatus requests in seconds, (interval > 2) configure&Limiter le journal: Limit log: configure<Journal des activits SMB/CIFSLog SMB/CIFS activities configure DiversMisc configure0Notifications et journalNotifications and log configureOKOK configureNVoir les activits dans des info-bulles%Show activities in "balloon messages" configure0Voir les partages cachsShow hidden shares configureBVoir les partages cachs (share$)Show hidden shares (share$) configureSmbstatus Smbstatus configure>Messages de notification d'tatStatus notification messages configurebNom de l'utilisateur ( defaut : username = root)%Username (default : username = root) configure joursdays configure0&A propos de QtSmbstatus&About QtSmbstatusform_smbstatus"&Configure client&Configure clientform_smbstatus&Fichier&Fileform_smbstatus(&Rechercher un texte &Find textform_smbstatus &Aide&Helpform_smbstatus&Fichier ouvert &Locked fileform_smbstatus&Machine&Machineform_smbstatus&Suivant&Nextform_smbstatus&Quitter&Quitform_smbstatus&Rechercher&Searchform_smbstatusD&Visualiser les activits CIFS/SMB&Show CIFS/SMB activitiesform_smbstatus&Utilisateur&Userform_smbstatusA propos de &Qt About &Qtform_smbstatusA propos de QtAbout Qtform_smbstatus.A propos de QtSmbstatusAbout QtSmbstatusform_smbstatusCo&nnexionCo&nnectform_smbstatus8Configure QtSmbstatus clientConfigure QtSmbstatus clientform_smbstatus*Connexion/DconnexionConnect/Disconnectform_smbstatusF3F3form_smbstatusF5F5form_smbstatus&Rechercher un texte Find textform_smbstatus Hte:Host:form_smbstatusSuivantNextform_smbstatus&Quitter QtSmbstatusQuit QtSmbstatusform_smbstatus8Rechercher un fichier ouvertSearch file openform_smbstatus,Rechercher une machineSearch machineform_smbstatus8Rechercher un partage ouvertSearch share openform_smbstatus2Rechercher un utilisateur Search userform_smbstatusPartage &ouvert Share &openform_smbstatusqtsmbstatus qtsmbstatusform_smbstatusEffacerClearlogform FermerCloselogformFiltre:Filter:logform,Enregistrer le journalSave loglogform0Visualiser les activitsView Activitieslogform0Voir/cacher les fichiersView/hide fileslogform0Voir/cacher les partagesView/hide shareslogform(Connexion au serveurConnect to qtsmbstatus server login_dialogMot de passePassword login_dialogNomUsername login_dialogAnnulerexit login_dialog loginlogin login_dialogrootroot login_dialogbtes-vous sr de vouloir continuer la connexion ?.Are you sure you want to continue connecting ? main_windowsConnexionConnect main_windows&Connect au serveurConnected to host main_windowsConnexion fermConnection closed main_windows2Connexion en cours sur %1Connection in progress on %1 main_windowsDconnexion Disconnect main_windowsNMauvais login ou mauvais mot de passe !Invalid login or password ! main_windows&Empreinte SHA1: %1.SHA1 Fingerprint: %1. main_windowsnL'authenticit de l'hte '%1' ne peut pas tre tablie.3The authenticity of host '%1' can't be established. main_windowsLe certificat du serveur ne contient pas des donnes valides ou bien le certificat a expir !>The server certificate doesn't contain valid data or expired ! main_windowsqtsmbstatus-2.2.1/client/tr/qtsmbstatus_sv.qm0000644000175000017500000001123411720232520021053 0ustar villouvillou)( \r'O!xʶPEA# laa   C!  1 Ֆ5C qB_ - Vd: a4$ eK" ϑ F >S  ~ C %z Q i Ez d  # ,? K  R) U3 #0 Žs ҘSyn E':~3i$Project-Id-Version: 2.1.2 Report-Msgid-Bugs-To: POT-Creation-Date: 2008-11-12 21:25+0200 PO-Revision-Date: 2009-09-26 16:54+0000 Last-Translator: Till Freier <till@thoran.eu> Language-Team: LANGUAGE <LL@li.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2009-12-26 10:24+0000 X-Generator: Launchpad (build Unknown)  DatumDateLogFormMaschineMachineLogFormffne Datei Open FileLogForm DienstServiceLogFormBelegungstypTypeLogFormUserUserLogForm &Nein&No MainWindows&Ja&Yes MainWindowsREs ist eine neue Version von %1 verfgbar A new release of %1 is available MainWindows(CIFS/SMB aktivittenCIFS/SMB activities MainWindowsEinrichten Configure MainWindows:Schliesse Verbindung von UserDisconnect user MainWindowspMchten Sie wirklich die Verbindung von User %1 beenden?*Do you really want to disconnect user %1 ? MainWindowsText suchen Find text MainWindows(Nachricht zum SendenMessage to send MainWindows.nachricht zu %1 senden:Message to send to %1: MainWindowsMinimierenMinimize MainWindowsEigenschaften Properties MainWindowsbeendenQuit MainWindows WiederherstellenRestore MainWindows$Sende Nachricht anSend out message to MainWindows@Sende Nachricht an alle BenutzerSend out message to all users MainWindows4Zeige CIFS/SMB aktivittenShow CIFS/SMB activities MainWindows(Text nicht gefunden.Text not found. MainWindowsDank an: Thanks to: MainWindows0Aktualisierung verfgbarUpdate is available MainWindows\Benutzer %1 hat dei Datei(en) %2 (%3) geffnetUser %1 has opened file %2 (%3) MainWindows\Benutzer %1 hat die Datei(en) %2 (%3) geffnet User %1 has opened share %2 (%3) MainWindowsJSie knnen sie hier herunterladen: %1You can download it here: %1 MainWindowsN<p align="right">Standart Username:</p>&

Default Username:

 configure\<p align="right">Standart Rechner Adresse:</p>*

Default host address:

 configure<<p align="right">Interval:</p>

Interval:

 configure>Eine neue Version ist verfgbarA new release is available configure.Automatisches Verbinden Autoconnect configureZAutomatische Verbindung bei qtsmbstatus start"Autoconnect on qtsmbstatus startup configure4Automatische UpdateprfungAutomatically Check for updates configureAbbrechenCancel configureEinrichten Configure configureVerbindung Connection configureRechneradresse Host Address configureRErschaffe QtSmbstatus Icon im System menu"Iconize QtSmbstatus in system tray configureIntervall zwischen smbstatus anfragen in Sekunden, (intervall >2)>Interval between smbstatus requests in seconds, (interval > 2) configureBegrenzter Log: Limit log: configure4Logge SMB/CIFS ttigkeitenLog SMB/CIFS activities configureSonstigesMisc configure0Benachrichten und loggenNotifications and log configureOKOK configureNZeige Aktivitt in "Ballon Nachrichten"%Show activities in "balloon messages" configure.Zeige verstecke AnteileShow hidden shares configure@Zeige verstecke Anteile (share$)Show hidden shares (share$) configureSmbstatus Smbstatus configure.Status BenachrichtigungStatus notification messages configureNBenutzername (default: username = root)%Username (default : username = root) configureTagedays configure"&ber QtSmbstatus&About QtSmbstatusform_smbstatus*&Einstellungen Client&Configure clientform_smbstatus &Datei&Fileform_smbstatus&Finde Text &Find textform_smbstatus &Hilfe&Helpform_smbstatus&&verschlossene File &Locked fileform_smbstatus&Maschine&Machineform_smbstatus&weiter&Nextform_smbstatus&beenden&Quitform_smbstatus &Suche&Searchform_smbstatus6&Zeige CIFS/SMB aktivitten&Show CIFS/SMB activitiesform_smbstatus&Benutzer&Userform_smbstatusber &Qt About &Qtform_smbstatusber QtAbout Qtform_smbstatus ber QtSmbstatusAbout QtSmbstatusform_smbstatusVerbi&ndeCo&nnectform_smbstatus>Einstellung QtSmbstatus ClientsConfigure QtSmbstatus clientform_smbstatus"Verbinden/TrennenConnect/Disconnectform_smbstatusF3F3form_smbstatusF5F5form_smbstatusText suchen Find textform_smbstatus Host:Host:form_smbstatusNchstesNextform_smbstatus$Beende QtSmbstatusQuit QtSmbstatusform_smbstatus*Suche geffnete DateiSearch file openform_smbstatusSuche MaschineSearch machineform_smbstatus.Suche geffnete AnteileSearch share openform_smbstatusSuche User Search userform_smbstatusTeilen &ffenen Share &openform_smbstatusqtsmbstatus qtsmbstatusform_smbstatus&Leeren/ZurcksetzenClearlogformSchliessenCloselogformFilter:Filter:logformLog speichernSave loglogform"Zeige AktivittenView Activitieslogform.Zeige/verstecke DateienView/hide fileslogform.Zeige/Verstecke AnteileView/hide shareslogform>Verbinde zum qtsmbstatus ServerConnect to qtsmbstatus server login_dialogPasswortPassword login_dialogUsernameUsername login_dialogBeendenexit login_dialogAnmeldenlogin login_dialogrootroot login_dialogVerbundenConnect main_windows$Verbunden mit HostConnected to host main_windows&Verbindung getrenntConnection closed main_windows@Verbindung wird aufgebaut bei %1Connection in progress on %1 main_windowsGetrennt Disconnect main_windows<Falscher Login oder Passwort !Invalid login or password ! main_windowsqtsmbstatus-2.2.1/client/tr/qtsmbstatus_hu.qm0000644000175000017500000002463411720232520021047 0ustar villouvillou) \r'AO"x ʶPEA$ la? ! u C#!  1  Ֆ5 qBq -X Vd a4%i eK$ ϑ >g 9 ~r  % Q! E d!. # ,? + K$  R) U3 $ Žs! ҘSAn ':3~i&BTProject-Id-Version: qtsmbstatus Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS> POT-Creation-Date: 2008-11-12 21:25+0200 PO-Revision-Date: 2009-10-13 07:57+0000 Last-Translator: Muszela Balzs <bazsi86@gmail.com> Language-Team: Hungarian <hu@li.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2009-12-26 10:24+0000 X-Generator: Launchpad (build Unknown)  DtumDateLogFormGpMachineLogFormFjl megnyitsa Open FileLogFormSzolgltatsServiceLogForm TipusTypeLogFormFelhasznlUserLogForm&Nem&No MainWindows &Igen&Yes MainWindows<%1 Egy j megjelense elrhetQ A new release of %1 is available MainWindows,CIFS/SMB tevkenysgekCIFS/SMB activities MainWindowsBellts Configure MainWindows:Felhasznl lecsatlakoztatsaDisconnect user MainWindows~Valban le akarja csatlakoztatni a kvetkezQ felhasznlt: %1 ?*Do you really want to disconnect user %1 ? MainWindowsSzveg keresse Find text MainWindowszenet kldseMessage to send MainWindows0zenet kldse ide : %1:Message to send to %1: MainWindowsMinimalizlsMinimize MainWindowsTulajdonsgok Properties MainWindowsKilpsQuit MainWindowsHelyrelltsRestore MainWindowszenet kldseSend out message to MainWindowsHzenet kldse minden felhasznlnakSend out message to all users MainWindows>CIFS/SMB tevkenysgek mutatsaShow CIFS/SMB activities MainWindows*Szveg nem tallhat.Text not found. MainWindows(Ksznetnyilvnts: Thanks to: MainWindows,Van elrhetQ frisstsUpdate is available MainWindowsZ%1 felhasznl megnyitotta a(z) %2 (%3) fjltUser %1 has opened file %2 (%3) MainWindowsd%1 felhasznl megnyitotta a(z) %2 (%3) megosztst User %1 has opened share %2 (%3) MainWindows(Letltheti innen: %1You can download it here: %1 MainWindowsh<p align="right">Alaprtelmezett felhasznlnv:</p>&

Default Username:

 configure^<p align="right">Alaprtelmezett hoszt cm:</p>*

Default host address:

 configure><p align="right">IdQtartam:</p>

Interval:

 configure4Egy j megjelens elrhetQA new release is available configureAutocsatlakozs Autoconnect configurebAutomatikus kapcsolds a QtSmbstatus indulsakor"Autoconnect on qtsmbstatus startup configureFFrisstsek autmatikus ellenQrzseAutomatically Check for updates configure MgsemCancel configureBellts Configure configureKapcsolat Connection configureHoszt cm Host Address configureVQtSmbstatus ikon mretqre a rendszertlcra"Iconize QtSmbstatus in system tray configureAz smbstatus lekrdezsek idQtartama kztt msodpercben. (idQtartam > 2)>Interval between smbstatus requests in seconds, (interval > 2) configureLog korlt: Limit log: configure>SMB/CIFS tevkenysgek trolsaLog SMB/CIFS activities configure EgybMisc configure.Figyelmeztetsek s logNotifications and log configureOKOK configureXTevkenysgek mutatsa "bubork-zenetekben"%Show activities in "balloon messages" configureFA rejtett megosztsok megjelentseShow hidden shares configureNMutasd a rejtett megosztsokat (share$)Show hidden shares (share$) configureSmbstatus Smbstatus configure<llapot figyelmeztetQ zenetekStatus notification messages configurepFelhasznlnv (alaprtelmezett : felhasznlnv = root)%Username (default : username = root) configure napokdays configure(&QtSmbstatus nvjegy&About QtSmbstatusform_smbstatus$Kliens &belltsa&Configure clientform_smbstatus &Fjl&Fileform_smbstatus &Szveg keresse &Find textform_smbstatus &Sg&Helpform_smbstatus&Zrolt fjlok &Locked fileform_smbstatus&Gp&Machineform_smbstatus&KvetkezQ&Nextform_smbstatus&Kilps&Quitform_smbstatus&Keress&Searchform_smbstatus@CIFS/SMB tevkenysgek &mutatsa&Show CIFS/SMB activitiesform_smbstatus&Felhasznl&Userform_smbstatus&Qt nvjegy About &Qtform_smbstatusQt nvjegyAbout Qtform_smbstatus&QtSmbstatus nvjegyAbout QtSmbstatusform_smbstatusCs&atlakozsCo&nnectform_smbstatus:QtSmbstatus kliens belltsaConfigure QtSmbstatus clientform_smbstatus$Kapcsolds/BontsConnect/Disconnectform_smbstatusF3F3form_smbstatusF5F5form_smbstatusSzveg keresse Find textform_smbstatusKiszolgl:Host:form_smbstatusKvetkezQNextform_smbstatus4Kilps a QtSmbstatus -blQuit QtSmbstatusform_smbstatus(Fjl nyits keresseSearch file openform_smbstatusGp keresseSearch machineform_smbstatus2Megoszts nyits keresseSearch share openform_smbstatus(Felhasznl keresse Search userform_smbstatus*Megoszts &megnyitsa Share &openform_smbstatusqtsmbstatus qtsmbstatusform_smbstatusTiszttsClearlogform BezrCloselogform SzqrQ:Filter:logformNapl mentseSave loglogform4Tevkenysgek megtekintseView Activitieslogform<Fjlok megjelentse/elrejtseView/hide fileslogformFMegosztsok megjelentse/elrejtseView/hide shareslogformHCsatlakozs a qtsmbstatus szerverhezConnect to qtsmbstatus server login_dialog JelszPassword login_dialogFelhasznlnvUsername login_dialogkilpsexit login_dialogbejelentkezslogin login_dialogrootroot login_dialogKapcsolatConnect main_windows2Csatlakoztatva a hoszthozConnected to host main_windows"Kapcsolat lezrvaConnection closed main_windows4Csatlakozs folyamatban %1Connection in progress on %1 main_windows"Kapcsolat bontsa Disconnect main_windowsPrvnytelen felhasznlnv vagy jelsz !Invalid login or password ! main_windowsqtsmbstatus-2.2.1/client/tr/qtsmbstatus_ru.ts0000644000175000017500000003637111720232510021072 0ustar villouvillou LogForm Date Дата Machine Компьютер User Пользователь Service Сервис Type Тип Open File Открытие файла MainWindows Show CIFS/SMB activities Показать активность SMB/CIFS Configure Настройка Minimize Минимизировать Quit Выход Restore Восстановить Thanks to: Благодарности: This program is licensed to you under the terms of the GNU General Public License version 2 Эта программа распространяется под лицензией GNU General Public License версии 2 Find text Найти текст Text not found. Текст не найден. User %1 has opened share %2 (%3) Пользователь %1 открыл ресурс %2 (%3) User %1 has opened file %2 (%3) Пользователь %1 открыл файл %2 (%3) CIFS/SMB activities Активность SMB/CIFS Message to send Сообщение Message to send to %1: Сообщение для %1: Do you really want to disconnect user %1 ? Вы хотите отсоединить пользователя %1 ? &Yes &Да &No &Нет Properties Свойства Send out message to all users Сообщение всем пользователям Send out message to Сообщение для Disconnect user Отсоединить пользователя Update is available Доступно обновление A new release of %1 is available Доступен новый релиз %1 You can download it here: %1 Вы можете загрузить здесь: %1 configure Configure Настройка Notifications and log Уведомления и отчет Limit log: Лимит отчета: days дней Iconize QtSmbstatus in system tray Иконка QtSmbstatus в лотке Show activities in "balloon messages" Активность в "плавающих сообщениях" Status notification messages Уведомление статуса Log SMB/CIFS activities Отчет активности SMB/CIFS Smbstatus Smbstatus <p align="right">Interval:</p> <p align="right">Интервал:</p> Interval between smbstatus requests in seconds, (interval > 2) Интервал между запросами smbstatus в секундах (интервал > 2) Show hidden shares (share$) Показать скрытые ресурсы (share$) Show hidden shares Показать скрытые ресурсы Connection Соединение <p align="right">Default Username:</p> <p align="right">Пользователь по умолчанию:</p> Autoconnect on qtsmbstatus startup Автоконнект при старте qtsmbstatus Autoconnect Автоконнект <p align="right">Default host address:</p> <p align="right">Хост по умолчанию:</p> Username (default : username = root) Пользователь (по умолчанию : пользователь = root) Host Address Адрес хоста OK ДА Cancel Отмена Misc Разное Automatically Check for updates Автоматически проверять обновления A new release is available Доступен новый релиз form_smbstatus qtsmbstatus qtsmbstatus Connect/Disconnect Коннект/Дисконнект Host: Хост: &File &Файл &Search &Поиск &Help &Справка &About QtSmbstatus &О QtSmbstatus About QtSmbstatus О QtSmbstatus About &Qt О &Qt About Qt О Qt &Configure client &Конфигурация клиента Configure QtSmbstatus client Конфигурация QtSmbstatus клиента &Machine &Компьютер Search machine Поиск компьютера &User &Пользователь Search user Поиск пользователя Share &open &Открытые ресурсы Search share open Поиск открытых ресурсов &Locked file &Блокированные файлы Search file open Поиск открытых файлов &Next &Дальше Next Дальше F3 F3 &Find text &Найти текст Find text Найти текст F5 F5 &Quit &Выход Quit QtSmbstatus Выйти из QtSmbstatus &Show CIFS/SMB activities &Показать активность SMB/CIFS Co&nnect Со&единение logform View Activities Смотреть активность Clear Очистить Save log Сохранить отчет Close Закрыть View/hide shares Показать/скрыть ресурсы View/hide files Показать/скрыть файлы Filter: Фильтр: login_dialog Connect to qtsmbstatus server Соединение с сервером qtsmbstatus Username Пользователь login логин exit выход root root Password Пароль main_windows Connect Соединение Disconnect Дисконнект Invalid login or password ! Неправильный логин или пароль! Connection in progress on %1 Процесс соединения на %1 Connected to host Соединено с хостом Connection closed Соединение закрыто The server certificate doesn't contain valid data or expired ! The authenticity of host '%1' can't be established. Are you sure you want to continue connecting ? SHA1 Fingerprint: %1. qtsmbstatus-2.2.1/client/tr/qtsmbstatus_pl.ts0000644000175000017500000003524611720232510021057 0ustar villouvillou Project-Id-Version: 2.1.2 Report-Msgid-Bugs-To: daniel.rocher@adella.org POT-Creation-Date: 2008-11-12 21:25+0200 PO-Revision-Date: 2010-05-11 23:40+0000 Last-Translator: Inox <Unknown> Language-Team: LANGUAGE <LL@li.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-01-28 02:55+0000 X-Generator: Launchpad (build 12274) LogForm Date Data Machine Komputer User Użytkownik Service Zasób Type Typ Open File Otwórz plik MainWindows Show CIFS/SMB activities Pokaż dziennik zdarzeń CIFS/SMB Configure Konfiguracja Minimize Minimalizuj Quit Zakończ Restore Przywróć Thanks to: Podziękowania: This program is licensed to you under the terms of the GNU General Public License version 2 Ten program jest licencjonowany na zasadach GNU General Public License wersja 2 Find text Znajdź tekst Text not found. Nie odnaleziono tekstu. User %1 has opened share %2 (%3) Użytkownik %1 otworzył udział %2 (%3) User %1 has opened file %2 (%3) Użytkownik %1 otworzył plik %2 (%3) CIFS/SMB activities Zdarzenia CIFS/SMB Message to send Wiadomość do wysłania Message to send to %1: Wiadomość do wysłania do %1: Do you really want to disconnect user %1 ? Czy na pewno odłączyć użytkownika %1? &Yes &Tak &No &Nie Properties Właściwości Send out message to all users Wyślij wiadomość do wszystkich użytkowników Send out message to Wyślij wiadomość do Disconnect user Odłącz użytkownika Update is available Aktualizacja jest dostępna A new release of %1 is available Nowe wydanie %1 jest dostępne You can download it here: %1 Możesz pobrać to tutaj: %1 configure Configure Konfiguracja Smbstatus Smbstatus <p align="right">Interval:</p> <p align="right">Odstęp czasu:</p> Interval between smbstatus requests in seconds, (interval > 2) Odstęp między kolejnymi połączeniami (s, co najmniej 2) Show hidden shares (share$) Pokaż ukryte udziały (share$) Show hidden shares Pokaż ukryte udziały Notifications and log Powiadomienia i rejestrowanie Limit log: Ograniczenie wielkości dziennika: days dni Iconize QtSmbstatus in system tray Minimalizuj na tackę systemową Show activities in "balloon messages" Pokazuj wykonywane czynności w podpowiedziach Status notification messages Powiadomienia o zmianie stanu Log SMB/CIFS activities Rejestruj aktywne połączenia SMB/CIFS OK OK Cancel Anuluj Misc Inne Automatically Check for updates Automatycznie sprawdzaj dostępność aktualizacji A new release is available Nowe wydanie jest dostępne Connection Połączenie <p align="right">Default Username:</p> <p align="right">Domyślna nazwa użytkownika:</p> Autoconnect on qtsmbstatus startup Łącz automatycznie podczas uruchamiania Autoconnect Łącz automatycznie <p align="right">Default host address:</p> <p align="right">Domyślny adres hosta:</p> Username (default : username = root) Użytkownik (domyślnie: username = root) Host Address Adres Hosta form_smbstatus qtsmbstatus qtsmbstatus Host: Host: Connect/Disconnect Połącz/Rozłącz &File &Plik &Search &Znajdź &Help &Pomoc &About QtSmbstatus &O QtSmbstatus About QtSmbstatus O QtSmbstatus About &Qt O &Qt About Qt O Qt &Configure client &Konfiguracja klienta Configure QtSmbstatus client Konfiguracja QtSmbstatus &Machine &Komputer Search machine Znajdź komputer &User &Użytkownik Search user Znajdź użytkownika Share &open &Otwarty udział Search share open Znajdź otwarty udział &Locked file &Zablokowany plik Search file open Znajdź otwarty plik &Next &Znajdź następne Next Dalej F3 F3 &Find text Znajdź &tekst Find text Znajdź tekst F5 F5 &Quit Za&kończ Quit QtSmbstatus Zakończ QtSmbstatus &Show CIFS/SMB activities P&okaż dziennik zdarzeń CIFS/SMB Co&nnect &Połącz logform View Activities Dziennik zdarzeń Clear Wyczyść Save log Zapisz dziennik Close Zamknij View/hide shares Pokaż lub ukryj udziały View/hide files Pokaż lub ukryj pliki Filter: Filtr: login_dialog Connect to qtsmbstatus server Połącz z serwerem Username Użytkownik root root Password Hasło login Login exit Wyjście main_windows Connect Połącz Connection in progress on %1 Trwa łączenie z %1 Connected to host Połączono z hostem Connection closed Połączenie zakończone Disconnect Rozłącz Invalid login or password ! Nieprawidłowa nazwa użytkownika lub hasło! The server certificate doesn't contain valid data or expired ! The authenticity of host '%1' can't be established. Are you sure you want to continue connecting ? SHA1 Fingerprint: %1. qtsmbstatus-2.2.1/client/tr/qtsmbstatus_hu.ts0000644000175000017500000003636311720232510021061 0ustar villouvillou Hungarian translation for qtsmbstatus Copyright (c) 2007 Rosetta Contributors and Canonical Ltd 2007 This file is distributed under the same license as the qtsmbstatus package. FIRST AUTHOR <EMAIL@ADDRESS>, 2007. Project-Id-Version: qtsmbstatus Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS> POT-Creation-Date: 2008-11-12 21:25+0200 PO-Revision-Date: 2009-10-13 07:57+0000 Last-Translator: Muszela Balázs <bazsi86@gmail.com> Language-Team: Hungarian <hu@li.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2009-12-26 10:24+0000 X-Generator: Launchpad (build Unknown) LogForm Date Dátum Machine Gép User Felhasználó Service Szolgáltatás Type Tipus Open File Fájl megnyitása MainWindows Show CIFS/SMB activities CIFS/SMB tevékenységek mutatása Configure Beállítás Minimize Minimalizálás Quit Kilépés Restore Helyreállítás Thanks to: Köszönetnyilvánítás: This program is licensed to you under the terms of the GNU General Public License version 2 Find text Szöveg keresése Text not found. Szöveg nem található. User %1 has opened share %2 (%3) %1 felhasználó megnyitotta a(z) %2 (%3) megosztást User %1 has opened file %2 (%3) %1 felhasználó megnyitotta a(z) %2 (%3) fájlt CIFS/SMB activities CIFS/SMB tevékenységek Message to send Üzenet küldése Message to send to %1: Üzenet küldése ide : %1: Do you really want to disconnect user %1 ? Valóban le akarja csatlakoztatni a következő felhasználót: %1 ? &Yes &Igen &No &Nem Properties Tulajdonságok Send out message to all users Üzenet küldése minden felhasználónak Send out message to Üzenet küldése Disconnect user Felhasználó lecsatlakoztatása Update is available Van elérhető frissítés A new release of %1 is available %1 Egy új megjelenése elérhető You can download it here: %1 Letöltheti innen: %1 configure Configure Beállítás Smbstatus Smbstatus <p align="right">Interval:</p> <p align="right">Időtartam:</p> Interval between smbstatus requests in seconds, (interval > 2) Az smbstatus lekérdezések időtartama között másodpercben. (időtartam > 2) Show hidden shares (share$) Mutasd a rejtett megosztásokat (share$) Show hidden shares A rejtett megosztások megjelenítése Notifications and log Figyelmeztetések és log Limit log: Log korlát: days napok Iconize QtSmbstatus in system tray QtSmbstatus ikon méretűre a rendszertálcára Show activities in "balloon messages" Tevékenységek mutatása "buborék-üzenetekben" Status notification messages Állapot figyelmeztető üzenetek Log SMB/CIFS activities SMB/CIFS tevékenységek tárolása OK OK Cancel Mégsem Misc Egyéb Automatically Check for updates Frissítések autómatikus ellenőrzése A new release is available Egy új megjelenés elérhető Connection Kapcsolat <p align="right">Default Username:</p> <p align="right">Alapértelmezett felhasználónév:</p> Autoconnect on qtsmbstatus startup Automatikus kapcsolódás a QtSmbstatus indulásakor Autoconnect Autocsatlakozás <p align="right">Default host address:</p> <p align="right">Alapértelmezett hoszt cím:</p> Username (default : username = root) Felhasználónév (alapértelmezett : felhasználónév = root) Host Address Hoszt cím form_smbstatus qtsmbstatus qtsmbstatus Host: Kiszolgáló: Connect/Disconnect Kapcsolódás/Bontás &File &Fájl &Search &Keresés &Help &Súgó &About QtSmbstatus &QtSmbstatus névjegy About QtSmbstatus QtSmbstatus névjegy About &Qt &Qt névjegy About Qt Qt névjegy &Configure client Kliens &beállítása Configure QtSmbstatus client QtSmbstatus kliens beállítása &Machine &Gép Search machine Gép keresése &User &Felhasználó Search user Felhasználó keresése Share &open Megosztás &megnyitása Search share open Megosztás nyitás keresése &Locked file &Zárolt fájlok Search file open Fájl nyitás keresése &Next &Következő Next Következő F3 F3 &Find text &Szöveg keresése Find text Szöveg keresése F5 F5 &Quit &Kilépés Quit QtSmbstatus Kilépés a QtSmbstatus -ból &Show CIFS/SMB activities CIFS/SMB tevékenységek &mutatása Co&nnect Cs&atlakozás logform View Activities Tevékenységek megtekintése Clear Tisztítás Save log Napló mentése Close Bezár View/hide shares Megosztások megjelenítése/elrejtése View/hide files Fájlok megjelenítése/elrejtése Filter: Szűrő: login_dialog Connect to qtsmbstatus server Csatlakozás a qtsmbstatus szerverhez Username Felhasználónév root root Password Jelszó login bejelentkezés exit kilépés main_windows Connect Kapcsolat Connection in progress on %1 Csatlakozás folyamatban %1 Connected to host Csatlakoztatva a hoszthoz Connection closed Kapcsolat lezárva Disconnect Kapcsolat bontása Invalid login or password ! Érvénytelen felhasználónév vagy jelszó ! The server certificate doesn't contain valid data or expired ! The authenticity of host '%1' can't be established. Are you sure you want to continue connecting ? SHA1 Fingerprint: %1. qtsmbstatus-2.2.1/client/tr/qtsmbstatus_ru.qm0000644000175000017500000002232211720232520021051 0ustar villouvillouq)\Tr' ObXxʶPElA B la! 5 n C 1 Ֆ5 qB - Vd a4 eKZ ϑ >  ~ 4  % Q) E] d  # ,?< KZ e R) U3  Žs~ ҘS3n 5':3Ti!f0B0DateLogForm><?LNB5@MachineLogFormB:@KB85 D09;0 Open FileLogForm !5@28AServiceLogForm"8?TypeLogForm>;L7>20B5;LUserLogForm&5B&No MainWindows&0&Yes MainWindows.>ABC?5= =>2K9 @5;87 %1 A new release of %1 is available MainWindows&:B82=>ABL SMB/CIFSCIFS/SMB activities MainWindows0AB@>9:0 Configure MainWindows0BA>548=8BL ?>;L7>20B5;ODisconnect user MainWindowsNK E>B8B5 >BA>548=8BL ?>;L7>20B5;O %1 ?*Do you really want to disconnect user %1 ? MainWindows09B8 B5:AB Find text MainWindows!>>1I5=85Message to send MainWindows"!>>1I5=85 4;O %1:Message to send to %1: MainWindows8=8<878@>20BLMinimize MainWindows!2>9AB20 Properties MainWindows KE>4Quit MainWindows>AAB0=>28BLRestore MainWindows!>>1I5=85 4;OSend out message to MainWindows8!>>1I5=85 2A5< ?>;L7>20B5;O<Send out message to all users MainWindows8>:070BL 0:B82=>ABL SMB/CIFSShow CIFS/SMB activities MainWindows "5:AB =5 =0945=.Text not found. MainWindows;03>40@=>AB8: Thanks to: MainWindows-B0 ?@>3@0<<0 @0A?@>AB@0=O5BAO ?>4 ;8F5=7859 GNU General Public License 25@A88 2[This program is licensed to you under the terms of the GNU General Public License version 2 MainWindows&>ABC?=> >1=>2;5=85Update is available MainWindowsF>;L7>20B5;L %1 >B:@K; D09; %2 (%3)User %1 has opened file %2 (%3) MainWindowsJ>;L7>20B5;L %1 >B:@K; @5AC@A %2 (%3) User %1 has opened share %2 (%3) MainWindows:K <>65B5 703@C78BL 745AL: %1You can download it here: %1 MainWindows^<p align="right">>;L7>20B5;L ?> C<>;G0=8N:</p>&

Default Username:

 configureN<p align="right">%>AB ?> C<>;G0=8N:</p>*

Default host address:

 configure<<p align="right">=B5@20;:</p>

Interval:

 configure(>ABC?5= =>2K9 @5;87A new release is available configure2B>:>==5:B Autoconnect configureD2B>:>==5:B ?@8 AB0@B5 qtsmbstatus"Autoconnect on qtsmbstatus startup configureD2B><0B8G5A:8 ?@>25@OBL >1=>2;5=8OAutomatically Check for updates configure B<5=0Cancel configure0AB@>9:0 Configure configure!>548=5=85 Connection configure4@5A E>AB0 Host Address configure4:>=:0 QtSmbstatus 2 ;>B:5"Iconize QtSmbstatus in system tray configurex=B5@20; <564C 70?@>A0<8 smbstatus 2 A5:C=40E (8=B5@20; > 2)>Interval between smbstatus requests in seconds, (interval > 2) configure8<8B >BG5B0: Limit log: configure2BG5B 0:B82=>AB8 SMB/CIFSLog SMB/CIFS activities configure  07=>5Misc configure&#254><;5=8O 8 >BG5BNotifications and log configureOK configureF:B82=>ABL 2 "?;020NI8E A>>1I5=8OE"%Show activities in "balloon messages" configure0>:070BL A:@KBK5 @5AC@AKShow hidden shares configureB>:070BL A:@KBK5 @5AC@AK (share$)Show hidden shares (share$) configureSmbstatus Smbstatus configure&#254><;5=85 AB0BCA0Status notification messages configured>;L7>20B5;L (?> C<>;G0=8N : ?>;L7>20B5;L = root)%Username (default : username = root) configure4=59days configure& QtSmbstatus&About QtSmbstatusform_smbstatus*&>=D83C@0F8O :;85=B0&Configure clientform_smbstatus &$09;&Fileform_smbstatus&09B8 B5:AB &Find textform_smbstatus&!?@02:0&Helpform_smbstatus(&;>:8@>20==K5 D09;K &Locked fileform_smbstatus&><?LNB5@&Machineform_smbstatus&0;LH5&Nextform_smbstatus &KE>4&Quitform_smbstatus &>8A:&Searchform_smbstatus:&>:070BL 0:B82=>ABL SMB/CIFS&Show CIFS/SMB activitiesform_smbstatus&>;L7>20B5;L&Userform_smbstatus  &Qt About &Qtform_smbstatus QtAbout Qtform_smbstatus QtSmbstatusAbout QtSmbstatusform_smbstatus!>&548=5=85Co&nnectform_smbstatus@>=D83C@0F8O QtSmbstatus :;85=B0Configure QtSmbstatus clientform_smbstatus$>==5:B/8A:>==5:BConnect/Disconnectform_smbstatusF3F3form_smbstatusF5F5form_smbstatus09B8 B5:AB Find textform_smbstatus %>AB:Host:form_smbstatus 0;LH5Nextform_smbstatus(K9B8 87 QtSmbstatusQuit QtSmbstatusform_smbstatus*>8A: >B:@KBKE D09;>2Search file openform_smbstatus >8A: :><?LNB5@0Search machineform_smbstatus.>8A: >B:@KBKE @5AC@A>2Search share openform_smbstatus$>8A: ?>;L7>20B5;O Search userform_smbstatus"&B:@KBK5 @5AC@AK Share &openform_smbstatusqtsmbstatus qtsmbstatusform_smbstatusG8AB8BLClearlogform0:@KBLCloselogform$8;LB@:Filter:logform!>E@0=8BL >BG5BSave loglogform&!<>B@5BL 0:B82=>ABLView Activitieslogform*>:070BL/A:@KBL D09;KView/hide fileslogform.>:070BL/A:@KBL @5AC@AKView/hide shareslogformB!>548=5=85 A A5@25@>< qtsmbstatusConnect to qtsmbstatus server login_dialog 0@>;LPassword login_dialog>;L7>20B5;LUsername login_dialog 2KE>4exit login_dialog ;>38=login login_dialogrootroot login_dialog!>548=5=85Connect main_windows$!>548=5=> A E>AB><Connected to host main_windows$!>548=5=85 70:@KB>Connection closed main_windows0@>F5AA A>548=5=8O =0 %1Connection in progress on %1 main_windows8A:>==5:B Disconnect main_windows<5?@028;L=K9 ;>38= 8;8 ?0@>;L!Invalid login or password ! main_windows ) , qtsmbstatus-2.2.1/client/tr/qtsmbstatus_pt_BR.ts0000644000175000017500000003604011720232510021443 0ustar villouvillou Brazilian Portuguese translation for qtsmbstatus Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 This file is distributed under the same license as the qtsmbstatus package. FIRST AUTHOR <EMAIL@ADDRESS>, 2008. Project-Id-Version: qtsmbstatus Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS> POT-Creation-Date: 2008-11-12 21:25+0200 PO-Revision-Date: 2009-10-18 03:57+0000 Last-Translator: Muriel de Souza Godoi <Unknown> Language-Team: Brazilian Portuguese <pt_BR@li.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2009-12-26 10:24+0000 X-Generator: Launchpad (build Unknown) LogForm Date Data Machine Máquina User Usuário Service Serviço Type Tipo Open File Abrir Arquivo MainWindows Show CIFS/SMB activities Mostrar atividades CIFS/SMB Configure Configurar Minimize Minimizar Quit Sair Restore Restaurar Thanks to: Obrigado a: This program is licensed to you under the terms of the GNU General Public License version 2 O programa é licensiado pelos termos do GNU Licensa Pública Geral versão 2 Find text Encontrar texto Text not found. Texto não encontrado. User %1 has opened share %2 (%3) Usuário %1 abriu compartilhamento %2 (%3) User %1 has opened file %2 (%3) Usuário %1 abriu arquivo %2 (%3) CIFS/SMB activities Atividades CIFS/SMB Message to send Mensagem para enviar Message to send to %1: Mensagem para enviar para %1: Do you really want to disconnect user %1 ? Você realmente quer desconectar o usuário %1? &Yes &Sim &No &Não Properties Propriedades Send out message to all users Enviar mensagens para todos usuários Send out message to Enviar mensagem para Disconnect user Desconectar usuário Update is available Uma atualização está disponível A new release of %1 is available Uma nova versão de %1 está disponível You can download it here: %1 Você pode fazer o download aqui: %1 configure Configure Configurar Smbstatus Smbstatus <p align="right">Interval:</p> <p align="right">Intervalo:</p> Interval between smbstatus requests in seconds, (interval > 2) Intervalo entre requisições smbstatus em segundos, (intervalo > 2) Show hidden shares (share$) Exibir compartilhamentos ocultos (share$) Show hidden shares Mostrar compartilhamentos ocultos Notifications and log Notificações e log Limit log: Log limite: days dias Iconize QtSmbstatus in system tray Iconizar QtSmbstatus na bandeja do sistema Show activities in "balloon messages" Mostrar atividades no "balão de mensagens" Status notification messages Estado da mensagem de notificação Log SMB/CIFS activities Log SMB/CIFS ativos OK OK Cancel Cancelar Misc Diversos Automatically Check for updates Verificar automaticamente por atualizações A new release is available Uma nova versão está disponível Connection Conexão <p align="right">Default Username:</p> <p align="right">Nome do usuário padrão:</p> Autoconnect on qtsmbstatus startup Conectar automaticamente ao iniciar qtsmbstatus Autoconnect Auto-conectar <p align="right">Default host address:</p> <p align="right">Endereço do host padrão:</p> Username (default : username = root) Nome do usuário (padrão: nome do usuário = root) Host Address Endereço do Host form_smbstatus qtsmbstatus qtsmbstatus Host: Host: Connect/Disconnect Conectar/Desconectar &File &Arquivo &Search &Procurar &Help &Ajuda &About QtSmbstatus &Sobre QtSmbstatus About QtSmbstatus Sobre QtSmbstatus About &Qt Sobre &Qt About Qt Sobre a Qt &Configure client &Configurar clientes Configure QtSmbstatus client Configurar cliente QtSmbstatus &Machine &Máquina Search machine Procurar máquina &User &Usuário Search user Procurar usuário Share &open &Abrir compartilhamento Search share open Procurar compartilhamento aberto &Locked file &Travar arquivo Search file open Procurar arquivo aberto &Next &Próximo Next Próximo F3 F3 &Find text &Procurar texto Find text Encontrar texto F5 F5 &Quit &Sair Quit QtSmbstatus Sair do QtSmbstatus &Show CIFS/SMB activities &Mostrar atividades CIFS/SMB Co&nnect Co&nectar logform View Activities Visualizar atividades Clear Limpar Save log Salvar registro Close Fechar View/hide shares Visualizar/esconder compartilhamento View/hide files Visualizar/esconder arquivos Filter: Filtro: login_dialog Connect to qtsmbstatus server Conectar ao servidor qtsmbstatus Username Nome de Usuário root root Password Senha login conectar exit sair main_windows Connect Conectar Connection in progress on %1 Conecção em progresso em %1 Connected to host Conectado ao host Connection closed Conexão fechada Disconnect Desconectar Invalid login or password ! Login ou senha inválida! The server certificate doesn't contain valid data or expired ! The authenticity of host '%1' can't be established. Are you sure you want to continue connecting ? SHA1 Fingerprint: %1. qtsmbstatus-2.2.1/client/tr/qtsmbstatus_pt_BR.qm0000644000175000017500000002473411720232520021442 0ustar villouvillou V) \r'O)#mx!ʶPECA%S la  K C#  1 Ֆ5 qB  -% Vd a4% eK$w ϑ u >  ~5  % Q" E d! # ,? K !P R)I U3X % Žs"{ ҘSn ':3i&sjProject-Id-Version: qtsmbstatus Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS> POT-Creation-Date: 2008-11-12 21:25+0200 PO-Revision-Date: 2009-10-18 03:57+0000 Last-Translator: Muriel de Souza Godoi <Unknown> Language-Team: Brazilian Portuguese <pt_BR@li.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2009-12-26 10:24+0000 X-Generator: Launchpad (build Unknown) DataDateLogFormMquinaMachineLogFormAbrir Arquivo Open FileLogFormServioServiceLogFormTipoTypeLogFormUsurioUserLogForm&No&No MainWindows&Sim&Yes MainWindowsJUma nova verso de %1 est disponvel A new release of %1 is available MainWindows&Atividades CIFS/SMBCIFS/SMB activities MainWindowsConfigurar Configure MainWindows&Desconectar usurioDisconnect user MainWindowsZVoc realmente quer desconectar o usurio %1?*Do you really want to disconnect user %1 ? MainWindowsEncontrar texto Find text MainWindows(Mensagem para enviarMessage to send MainWindows:Mensagem para enviar para %1:Message to send to %1: MainWindowsMinimizarMinimize MainWindowsPropriedades Properties MainWindowsSairQuit MainWindowsRestaurarRestore MainWindows(Enviar mensagem paraSend out message to MainWindowsHEnviar mensagens para todos usuriosSend out message to all users MainWindows6Mostrar atividades CIFS/SMBShow CIFS/SMB activities MainWindows*Texto no encontrado.Text not found. MainWindowsObrigado a: Thanks to: MainWindowsO programa licensiado pelos termos do GNU Licensa Pblica Geral verso 2[This program is licensed to you under the terms of the GNU General Public License version 2 MainWindows>Uma atualizao est disponvelUpdate is available MainWindows@Usurio %1 abriu arquivo %2 (%3)User %1 has opened file %2 (%3) MainWindowsRUsurio %1 abriu compartilhamento %2 (%3) User %1 has opened share %2 (%3) MainWindowsFVoc pode fazer o download aqui: %1You can download it here: %1 MainWindowsX<p align="right">Nome do usurio padro:</p>&

Default Username:

 configureZ<p align="right">Endereo do host padro:</p>*

Default host address:

 configure><p align="right">Intervalo:</p>

Interval:

 configure>Uma nova verso est disponvelA new release is available configureAuto-conectar Autoconnect configure^Conectar automaticamente ao iniciar qtsmbstatus"Autoconnect on qtsmbstatus startup configureTVerificar automaticamente por atualizaesAutomatically Check for updates configureCancelarCancel configureConfigurar Configure configureConexo Connection configure Endereo do Host Host Address configureTIconizar QtSmbstatus na bandeja do sistema"Iconize QtSmbstatus in system tray configureIntervalo entre requisies smbstatus em segundos, (intervalo > 2)>Interval between smbstatus requests in seconds, (interval > 2) configureLog limite: Limit log: configure&Log SMB/CIFS ativosLog SMB/CIFS activities configureDiversosMisc configure$Notificaes e logNotifications and log configureOKOK configureTMostrar atividades no "balo de mensagens"%Show activities in "balloon messages" configureBMostrar compartilhamentos ocultosShow hidden shares configureTExibir compartilhamentos ocultos (share$)Show hidden shares (share$) configureSmbstatus Smbstatus configureBEstado da mensagem de notificaoStatus notification messages configure`Nome do usurio (padro: nome do usurio = root)%Username (default : username = root) configurediasdays configure$&Sobre QtSmbstatus&About QtSmbstatusform_smbstatus(&Configurar clientes&Configure clientform_smbstatus&Arquivo&Fileform_smbstatus&Procurar texto &Find textform_smbstatus &Ajuda&Helpform_smbstatus&Travar arquivo &Locked fileform_smbstatus&Mquina&Machineform_smbstatus&Prximo&Nextform_smbstatus &Sair&Quitform_smbstatus&Procurar&Searchform_smbstatus8&Mostrar atividades CIFS/SMB&Show CIFS/SMB activitiesform_smbstatus&Usurio&Userform_smbstatusSobre &Qt About &Qtform_smbstatusSobre a QtAbout Qtform_smbstatus"Sobre QtSmbstatusAbout QtSmbstatusform_smbstatusCo&nectarCo&nnectform_smbstatus<Configurar cliente QtSmbstatusConfigure QtSmbstatus clientform_smbstatus(Conectar/DesconectarConnect/Disconnectform_smbstatusF3F3form_smbstatusF5F5form_smbstatusEncontrar texto Find textform_smbstatus Host:Host:form_smbstatusPrximoNextform_smbstatus&Sair do QtSmbstatusQuit QtSmbstatusform_smbstatus.Procurar arquivo abertoSearch file openform_smbstatus Procurar mquinaSearch machineform_smbstatus@Procurar compartilhamento abertoSearch share openform_smbstatus Procurar usurio Search userform_smbstatus.&Abrir compartilhamento Share &openform_smbstatusqtsmbstatus qtsmbstatusform_smbstatus LimparClearlogform FecharCloselogformFiltro:Filter:logformSalvar registroSave loglogform*Visualizar atividadesView Activitieslogform8Visualizar/esconder arquivosView/hide fileslogformHVisualizar/esconder compartilhamentoView/hide shareslogform@Conectar ao servidor qtsmbstatusConnect to qtsmbstatus server login_dialog SenhaPassword login_dialogNome de UsurioUsername login_dialogsairexit login_dialogconectarlogin login_dialogrootroot login_dialogConectarConnect main_windows"Conectado ao hostConnected to host main_windowsConexo fechadaConnection closed main_windows6Coneco em progresso em %1Connection in progress on %1 main_windowsDesconectar Disconnect main_windows0Login ou senha invlida!Invalid login or password ! main_windowsqtsmbstatus-2.2.1/client/tr/qtsmbstatus_it.qm0000644000175000017500000002130411720232520021036 0ustar villouvillou POT-Creation-Date: 2008-11-12 21:25+0200 PO-Revision-Date: 2011-05-13 19:15+0000 Last-Translator: simone.sandri <lexluxsox@hotmail.it> Language-Team: Italian <it@li.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-27 16:20+0000 X-Generator: Launchpad (build 13265) DataDateLogFormMacchinaMachineLogFormApri il file Open FileLogFormServizioServiceLogFormTipoTypeLogForm UtenteUserLogForm&No&No MainWindows&Si&Yes MainWindowsJ disponibile un nuovo rilascio di %1 A new release of %1 is available MainWindowsConfigura Configure MainWindows(Disconnettere utenteDisconnect user MainWindowsXSi vuole davvero disconnettere l'utente %1 ?*Do you really want to disconnect user %1 ? MainWindowsTrova testo Find text MainWindows(Messaggio da inviareMessage to send MainWindows4Messaggio da inviare a %1:Message to send to %1: MainWindowsMinimizzaMinimize MainWindowsProprieta' Properties MainWindows ChiudiQuit MainWindowsRipristinaRestore MainWindows,Spedire il messaggio aSend out message to MainWindowsNSpedire il messaggio a tutti gli utentiSend out message to all users MainWindows$Testo non trovato.Text not found. MainWindows"Ringraziamenti a: Thanks to: MainWindowsQuesto programma ti concesso in licenza in base ai termini della GNU General Public License versione 2[This program is licensed to you under the terms of the GNU General Public License version 2 MainWindowsJL'utente %1 ha aperto il file %2 (%3)User %1 has opened file %2 (%3) MainWindowsZ<p align="right">Nome utente predefinito:</p>&

Default Username:

 configurel<p align="right">Indirizzio dell'host predefinito:</p>*

Default host address:

 configure@<p align="right">Intervallo:</p>

Interval:

 configure4Nuova versione disponibileA new release is available configure,Connessione automatica Autoconnect configurebConnetti automaticamente all'avvio di qtsmbstatus"Autoconnect on qtsmbstatus startup configurepVerifica disponibilit di nuove versioni automaticamenteAutomatically Check for updates configureCancellaCancel configureConfigura Configure configureConnessione Connection configure&Indirizzo dell'host Host Address configuredRiduci a icona QtSmbstatus nel pannello di sistema"Iconize QtSmbstatus in system tray configure(Limite del registro: Limit log: configureRTieni un registro delle attivit SMB/CIFSLog SMB/CIFS activities configure VarieMisc configureNotifiche e logNotifications and log configureOkOK configureSmbstatus Smbstatus configure*Notifiche sullo statoStatus notification messages configure\Nome utente (predefinito : nome utente = root)%Username (default : username = root) configure giornidays configure8Inform&azioni su QtSmbstatus&About QtSmbstatusform_smbstatus"&Configura client&Configure clientform_smbstatus &File&Fileform_smbstatus&Trova testo &Find textform_smbstatus &Aiuto&Helpform_smbstatus&File bloccato &Locked fileform_smbstatus&Macchina&Machineform_smbstatus&Avanti&Nextform_smbstatus &Esci&Quitform_smbstatus &Cerca&Searchform_smbstatus8Mo&stra le attivit CIFS/SMB&Show CIFS/SMB activitiesform_smbstatus&Utente&Userform_smbstatus&Informazioni su &Qt About &Qtform_smbstatus$Informazioni su QtAbout Qtform_smbstatus6Informazioni su QtSmbstatusAbout QtSmbstatusform_smbstatusCo&nnettiCo&nnectform_smbstatus(Connetti/DisconnettiConnect/Disconnectform_smbstatusF3F3form_smbstatusF5F5form_smbstatusTrova testo Find textform_smbstatus Host:Host:form_smbstatus&Esci da QtSmbstatusQuit QtSmbstatusform_smbstatusCerca macchinaSearch machineform_smbstatusCerca utente Search userform_smbstatusqtsmbstatus qtsmbstatusform_smbstatus ChiudiCloselogformFiltro:Filter:logformSalva logSave loglogform&Visualizza attivitView Activitieslogform4Visualizza/nascondi i fileView/hide fileslogform>Mostra/nascondi le condivisioniView/hide shareslogform@Connettiti al server qtsmbstatusConnect to qtsmbstatus server login_dialogPasswordPassword login_dialogNome utenteUsername login_dialogesciexit login_dialog accedilogin login_dialogrootroot login_dialogConnettitiConnect main_windows"Connesso all'hostConnected to host main_windows*Connessione terminataConnection closed main_windows4Connessione in corso su %1Connection in progress on %1 main_windowsDisconetti Disconnect main_windowsqtsmbstatus-2.2.1/client/tr/qtsmbstatus_uk.qm0000644000175000017500000002403111720232520021041 0ustar villouvillou) )\r'O!xʶ6PEA# laf  C!  1 Ֆ5N qBr -9 Vd= a4# eK" ϑ >^  ~_ B % Q v E d % O # ,?o K  R) U3 #3 Žs ҘSxn '~':*3i$Project-Id-Version: PACKAGE VERSION Report-Msgid-Bugs-To: POT-Creation-Date: 2008-11-12 21:25+0200 PO-Revision-Date: 2009-12-17 09:00+0000 Last-Translator: =4@59 !B@5?5B>2 <Unknown> Language-Team: LANGUAGE <LL@li.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2009-12-26 10:24+0000 X-Generator: Launchpad (build Unknown) 0B0DateLogForm><?'NB5@MachineLogFormV4:@8BBO D09;0 Open FileLogForm !5@2VAServiceLogForm"8?TypeLogForm>@8ABC20GUserLogForm&V&No MainWindows&"0:&Yes MainWindows.>ABC?=0 =>20 25@AVO %1 A new release of %1 is available MainWindows&:B82=VABL SMB/CIFSCIFS/SMB activities MainWindows0;0HBC20==O Configure MainWindows,V4'T4=0B8 :>@8ABC20G0Disconnect user MainWindowsL8 1060TB5 2V4'T4=0B8 :>@8ABC20G0 %1 ?*Do you really want to disconnect user %1 ? MainWindows09B8 B5:AB Find text MainWindows>2V4><;5==OMessage to send MainWindows(>2V4><;5==O 4;O %1:Message to send to %1: MainWindowsV=V<V7C20B8Minimize MainWindows;0AB82>ABV Properties MainWindows 8EV4Quit MainWindowsV4=>28B8Restore MainWindows >2V4><;5==O 4;OSend out message to MainWindows<>2V4><;5==O 2AV< :>@8ABC20G0<Send out message to all users MainWindows8>:070B8 0:B82=VABL SMB/CIFSShow CIFS/SMB activities MainWindows$"5:AB =5 7=0945=>.Text not found. MainWindows>4O:8: Thanks to: MainWindows&O ?@>3@0<<0 @>7?>2AN46CTBLAO ?V4 ;VF5=7VTN GNU General Public License 25@AVW 2[This program is licensed to you under the terms of the GNU General Public License version 2 MainWindows$>ABC?=5 >=>2;5==OUpdate is available MainWindowsD>@8ABC20G %1 2V4:@82 D09; %2 (%3)User %1 has opened file %2 (%3) MainWindowsH>@8ABC20G %1 2V4:@82 @5AC@A %2 (%3) User %1 has opened share %2 (%3) MainWindows:8 <>65B5 7020=B068B8 BCB: %1You can download it here: %1 MainWindows\<p align="right">>@8ABC20G 70 C<>2G0==O<:</p>&

Default Username:

 configureP<p align="right">%>AB 70 C<>2G0==O<:</p>*

Default host address:

 configure<<p align="right">=B5@20;:</p>

Interval:

 configure*'O28;0AL =>20 25@AVOA new release is available configure2B>7'T4=0==O Autoconnect configureH2B>7'T4=0==O ?@8 AB0@BV qtsmbstatus"Autoconnect on qtsmbstatus startup configureP2B><0B8G=> ?5@2V@OB8 =0O2=VABL >=>2;5=LAutomatically Check for updates configureV4<V=0Cancel configure0;0HBC20==O Configure configure'T4=0==O Connection configure4@5A0 E>AB0 Host Address configure2:>=:0 QtSmbstatus 2 B@5W"Iconize QtSmbstatus in system tray configurer=B5@20; <V6 70?8B0<8 smbstatus 2 A5:C=40E (V=B5@20; > 2)>Interval between smbstatus requests in seconds, (interval > 2) configureV<VB 72VBC: Limit log: configure02VB 0:B82=>ABV SMB/CIFSLog SMB/CIFS activities configure  V7=5Misc configure(>2V4><;5==O B0 72VBNotifications and log configure"OK configureL:B82=VABL 2 "?;020NG8E ?>2V4><;5==OE"%Show activities in "balloon messages" configure4>:070B8 ?@8E>20=V @5AC@A8Show hidden shares configureF>:070B8 ?@8E>20=V @5AC@A8 (share$)Show hidden shares (share$) configureSmbstatus Smbstatus configure(>2V4><;5==O AB0BCACStatus notification messages configure^>@8ABC20G (70 C<>2G0==O< : :>@8ABC20G = root)%Username (default : username = root) configure4=V2days configure &@> QtSmbstatus&About QtSmbstatusform_smbstatus.&>=DV3C@C20==O :;VT=B0&Configure clientform_smbstatus &$09;&Fileform_smbstatus&09B8 B5:AB &Find textform_smbstatus&>2V4:0&Helpform_smbstatus &;>:>20=V D09;8 &Locked fileform_smbstatus&><?'NB5@&Machineform_smbstatus &0;V&Nextform_smbstatus &8EV4&Quitform_smbstatus &>HC:&Searchform_smbstatus:&>:070B8 0:B82=VABL SMB/CIFS&Show CIFS/SMB activitiesform_smbstatus&>@8ABC20G&Userform_smbstatus@> &Qt About &Qtform_smbstatus @> QtAbout Qtform_smbstatus@> QtSmbstatusAbout QtSmbstatusform_smbstatus'&T4=0==OCo&nnectform_smbstatusD>=DV3C@C20==O QtSmbstatus :;VT=B0Configure QtSmbstatus clientform_smbstatus*'T4=0==O/V4'T4=0==OConnect/Disconnectform_smbstatusF3F3form_smbstatusF5F5form_smbstatus09B8 B5:AB Find textform_smbstatus %>AB:Host:form_smbstatus0;VNextform_smbstatus&89B8 7 QtSmbstatusQuit QtSmbstatusform_smbstatus,>HC: 2V4:@8B8E D09;V2Search file openform_smbstatus >HC: :><?'NB5@0Search machineform_smbstatus0>HC: 2V4:@8B8E @5AC@AV2Search share openform_smbstatus">HC: :>@8ABC20G0 Search userform_smbstatus"&V4:@8BV @5AC@A8 Share &openform_smbstatusqtsmbstatus qtsmbstatusform_smbstatusG8AB8B8Clearlogform0:@8B8Closelogform$V;LB@:Filter:logform15@53B8 72VBSave loglogform&828B8AL 0:B82=VABLView Activitieslogform,>:070B8/AE>20B8 D09;8View/hide fileslogform0>:070B8/AE>20B8 @5AC@A8View/hide shareslogform@'T4=0==O 7 A5@25@>< qtsmbstatusConnect to qtsmbstatus server login_dialog 0@>;LPassword login_dialog>@8ABC20GUsername login_dialog 28EV4exit login_dialog ;>3V=login login_dialogrootroot login_dialog'T4=0==OConnect main_windows"'T4=0=> 7 E>AB><Connected to host main_windows"'T4=0==O 70:@8B5Connection closed main_windows*@>F5A 7'T4=0==O 7 %1Connection in progress on %1 main_windowsV4'T4=0==O Disconnect main_windows:5?@028;L=89 ;>3V= G8 ?0@>;L!Invalid login or password ! main_windows ) , qtsmbstatus-2.2.1/client/tr/qtsmbstatus_nl.qm0000644000175000017500000002634411720232520021044 0ustar villouvillou ) E\-r'tO#ex!ʶPEA& la> ( C#  1 Ֆ5 qB > -w Vd a4& eK%$ ϑ >N | ~  % Q"0 E d! ɾ'` M # ,? 1 KE !l R) U3 % o$ Žs" ҘSJ%(nK':3wi)[:Project-Id-Version: qtsmbstatus Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS> POT-Creation-Date: 2008-11-12 21:25+0200 PO-Revision-Date: 2011-10-25 18:23+0000 Last-Translator: Jogai <wouter@microshit.nl> Language-Team: Dutch <nl@li.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2012-02-19 17:04+0000 X-Generator: Launchpad (build 14814)  DatumDateLogFormMachineMachineLogFormBestand openen Open FileLogFormServiceServiceLogFormTypeTypeLogFormGebruikerUserLogForm&Nee&No MainWindows&Ja&Yes MainWindowsNEen nieuwe versie van %1 is beschikbaar A new release of %1 is available MainWindows*CIFS/SMB activitietenCIFS/SMB activities MainWindowsConfigureren Configure MainWindows<Verbinding gebruiker verbrekenDisconnect user MainWindowsWeet je zeker dat je de verbinding van gebruiker %1 wil verbreken ?*Do you really want to disconnect user %1 ? MainWindowsTekst zoeken Find text MainWindows(Te versturen berichtMessage to send MainWindows:Te versturen berciht naar %1:Message to send to %1: MainWindowsMinimaliserenMinimize MainWindowsEigenschappen Properties MainWindowsAfsluitenQuit MainWindowsHerstellenRestore MainWindows(Verzend bericht naarSend out message to MainWindowsHVerzend bericht naar alle gebruikersSend out message to all users MainWindows>Laat CIFS/SMB activitieten zienShow CIFS/SMB activities MainWindows(Tekst niet gevonden.Text not found. MainWindowsMet dank aan: Thanks to: MainWindowsDit programma is gelicenseerd onder de termen van de GNU General Public License versie 2[This program is licensed to you under the terms of the GNU General Public License version 2 MainWindows2Een update is beschikbaarUpdate is available MainWindowsTGebruiker %1 heeft bestand %2 (%3) geopendUser %1 has opened file %2 (%3) MainWindowsPGebruiker %1 heeft share %2 (%3) geopend User %1 has opened share %2 (%3) MainWindows:U kunt hem hier dowloaden: %1You can download it here: %1 MainWindows\<p align="right">Standaard Gebruikersnaam:</p>&

Default Username:

 configureT<p align="right">Standaard host adres:</p>*

Default host address:

 configure<<p align="right">Interval:</p>

Interval:

 configure@Een nieuwe versie is beschikbaarA new release is available configure*Automatisch verbinden Autoconnect configurejVerbind automatisch bij het opstarten van qtsmbstatus"Autoconnect on qtsmbstatus startup configureDAutomatisch op updates controlerenAutomatically Check for updates configureAnnulerenCancel configureConfigureren Configure configureVerbinding Connection configureHostadres Host Address configureZLaat icoon zien QtSmbstatus in de systeembalk"Iconize QtSmbstatus in system tray configure~Interval tussen smbstatus verzoeken in seconden, (interval > 2)>Interval between smbstatus requests in seconds, (interval > 2) configureLimiet log: Limit log: configure2Log SMB/CIFS activiteitenLog SMB/CIFS activities configureDiversenMisc configure&Notificaties en logNotifications and log configureOKOK configureXLaat activiteiten zien in "ballon berichten"%Show activities in "balloon messages" configure4Laat verborgen shares zienShow hidden shares configureFLaat verborgen shares zien (share$)Show hidden shares (share$) configureSmbstatus Smbstatus configure8Status notificatie berichtenStatus notification messages configuredGebruikersnaam (standaard: gebruikersnaam = root)%Username (default : username = root) configure dagendays configure"&Over QtSmbstatus&About QtSmbstatusform_smbstatus&&Configureer client&Configure clientform_smbstatus&Bestand&Fileform_smbstatus&Vind volgende &Find textform_smbstatus &Help&Helpform_smbstatus(&Geblokkeerd bestand &Locked fileform_smbstatus&Machine&Machineform_smbstatus&Volgende&Nextform_smbstatus&Afsluiten&Quitform_smbstatus&Zoeken&Searchform_smbstatus@&Laat CIFS/SMB activiteiten zien&Show CIFS/SMB activitiesform_smbstatus&Gebruiker&Userform_smbstatusOver &Qt About &Qtform_smbstatusOver QtAbout Qtform_smbstatus Over QtSmbstatusAbout QtSmbstatusform_smbstatusVerbi&ndenCo&nnectform_smbstatus<Configureer QtSmbstatus clientConfigure QtSmbstatus clientform_smbstatus@Verbinden / Verbinding verbrekenConnect/Disconnectform_smbstatusF3F3form_smbstatusF5F5form_smbstatusTekst zoeken Find textform_smbstatus Host:Host:form_smbstatusVolgendeNextform_smbstatus"Sluit QtSmbstatusQuit QtSmbstatusform_smbstatus"Zoek bestand openSearch file openform_smbstatusZoek machineSearch machineform_smbstatusZoek share openSearch share openform_smbstatusZoek gebruiker Search userform_smbstatusShare &open Share &openform_smbstatusqtsmbstatus qtsmbstatusform_smbstatus WissenClearlogformSluitenCloselogformFilter:Filter:logformLog opslaanSave loglogform.Laat Acitiviteiten ZienView Activitieslogform4Bekijk / verberg bestandenView/hide fileslogform.Bekijk / Verberg sharesView/hide shareslogform>Verbind naar qtsmbstatus serverConnect to qtsmbstatus server login_dialogWachtwoordPassword login_dialogGebruikersnaamUsername login_dialogafsluitenexit login_dialogaanmeldenlogin login_dialogrootroot login_dialogRWeet u zeker dat u verbinding wilt maken?.Are you sure you want to continue connecting ? main_windowsVerbindenConnect main_windows$Verbonden met hostConnected to host main_windows(Verbinding verbrokenConnection closed main_windows8Verbinding maken bezig op %1Connection in progress on %1 main_windows(Verbinding verbreken Disconnect main_windowsNOngeldig gebruikersnaam of wachtwoord !Invalid login or password ! main_windows,SHA1 Vingerafdruk: %1.SHA1 Fingerprint: %1. main_windowsjDe echtheid van host '%1' kan niet worden bevestigd.3The authenticity of host '%1' can't be established. main_windows|Het server certificaat bevat geen geldige data of is verlopen!>The server certificate doesn't contain valid data or expired ! main_windowsqtsmbstatus-2.2.1/client/tr/qtsmbstatus_it.ts0000644000175000017500000003560311720232510021055 0ustar villouvillou Italian translation for qtsmbstatus Copyright (c) 2007 Rosetta Contributors and Canonical Ltd 2007 This file is distributed under the same license as the qtsmbstatus package. FIRST AUTHOR <EMAIL@ADDRESS>, 2007. Project-Id-Version: qtsmbstatus Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS> POT-Creation-Date: 2008-11-12 21:25+0200 PO-Revision-Date: 2011-05-13 19:15+0000 Last-Translator: simone.sandri <lexluxsox@hotmail.it> Language-Team: Italian <it@li.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-27 16:20+0000 X-Generator: Launchpad (build 13265) LogForm Date Data Machine Macchina User Utente Service Servizio Type Tipo Open File Apri il file MainWindows Show CIFS/SMB activities Configure Configura Minimize Minimizza Quit Chiudi Restore Ripristina Thanks to: Ringraziamenti a: This program is licensed to you under the terms of the GNU General Public License version 2 Questo programma ti è concesso in licenza in base ai termini della GNU General Public License versione 2 Find text Trova testo Text not found. Testo non trovato. User %1 has opened share %2 (%3) User %1 has opened file %2 (%3) L'utente %1 ha aperto il file %2 (%3) CIFS/SMB activities Message to send Messaggio da inviare Message to send to %1: Messaggio da inviare a %1: Do you really want to disconnect user %1 ? Si vuole davvero disconnettere l'utente %1 ? &Yes &Si &No &No Properties Proprieta' Send out message to all users Spedire il messaggio a tutti gli utenti Send out message to Spedire il messaggio a Disconnect user Disconnettere utente Update is available A new release of %1 is available È disponibile un nuovo rilascio di %1 You can download it here: %1 configure Configure Configura Smbstatus Smbstatus <p align="right">Interval:</p> <p align="right">Intervallo:</p> Interval between smbstatus requests in seconds, (interval > 2) Show hidden shares (share$) Show hidden shares Notifications and log Notifiche e log Limit log: Limite del registro: days giorni Iconize QtSmbstatus in system tray Riduci a icona QtSmbstatus nel pannello di sistema Show activities in "balloon messages" Status notification messages Notifiche sullo stato Log SMB/CIFS activities Tieni un registro delle attività SMB/CIFS OK Ok Cancel Cancella Misc Varie Automatically Check for updates Verifica disponibilità di nuove versioni automaticamente A new release is available Nuova versione disponibile Connection Connessione <p align="right">Default Username:</p> <p align="right">Nome utente predefinito:</p> Autoconnect on qtsmbstatus startup Connetti automaticamente all'avvio di qtsmbstatus Autoconnect Connessione automatica <p align="right">Default host address:</p> <p align="right">Indirizzio dell'host predefinito:</p> Username (default : username = root) Nome utente (predefinito : nome utente = root) Host Address Indirizzo dell'host form_smbstatus qtsmbstatus qtsmbstatus Host: Host: Connect/Disconnect Connetti/Disconnetti &File &File &Search &Cerca &Help &Aiuto &About QtSmbstatus Inform&azioni su QtSmbstatus About QtSmbstatus Informazioni su QtSmbstatus About &Qt Informazioni su &Qt About Qt Informazioni su Qt &Configure client &Configura client Configure QtSmbstatus client &Machine &Macchina Search machine Cerca macchina &User &Utente Search user Cerca utente Share &open Search share open &Locked file &File bloccato Search file open &Next &Avanti Next F3 F3 &Find text &Trova testo Find text Trova testo F5 F5 &Quit &Esci Quit QtSmbstatus Esci da QtSmbstatus &Show CIFS/SMB activities Mo&stra le attività CIFS/SMB Co&nnect Co&nnetti logform View Activities Visualizza attività Clear Save log Salva log Close Chiudi View/hide shares Mostra/nascondi le condivisioni View/hide files Visualizza/nascondi i file Filter: Filtro: login_dialog Connect to qtsmbstatus server Connettiti al server qtsmbstatus Username Nome utente root root Password Password login accedi exit esci main_windows Connect Connettiti Connection in progress on %1 Connessione in corso su %1 The server certificate doesn't contain valid data or expired ! The authenticity of host '%1' can't be established. SHA1 Fingerprint: %1. Are you sure you want to continue connecting ? Connected to host Connesso all'host Connection closed Connessione terminata Disconnect Disconetti Invalid login or password ! qtsmbstatus-2.2.1/client/tr/qtsmbstatus_nl.ts0000644000175000017500000003616211720232510021053 0ustar villouvillou Dutch translation for qtsmbstatus Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 This file is distributed under the same license as the qtsmbstatus package. FIRST AUTHOR <EMAIL@ADDRESS>, 2008. Project-Id-Version: qtsmbstatus Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS> POT-Creation-Date: 2008-11-12 21:25+0200 PO-Revision-Date: 2011-10-25 18:23+0000 Last-Translator: Jogai <wouter@microshit.nl> Language-Team: Dutch <nl@li.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2012-02-19 17:04+0000 X-Generator: Launchpad (build 14814) LogForm Date Datum Machine Machine User Gebruiker Service Service Type Type Open File Bestand openen MainWindows Show CIFS/SMB activities Laat CIFS/SMB activitieten zien Configure Configureren Minimize Minimaliseren Quit Afsluiten Restore Herstellen Thanks to: Met dank aan: This program is licensed to you under the terms of the GNU General Public License version 2 Dit programma is gelicenseerd onder de termen van de GNU General Public License versie 2 Find text Tekst zoeken Text not found. Tekst niet gevonden. User %1 has opened share %2 (%3) Gebruiker %1 heeft share %2 (%3) geopend User %1 has opened file %2 (%3) Gebruiker %1 heeft bestand %2 (%3) geopend CIFS/SMB activities CIFS/SMB activitieten Message to send Te versturen bericht Message to send to %1: Te versturen berciht naar %1: Do you really want to disconnect user %1 ? Weet je zeker dat je de verbinding van gebruiker %1 wil verbreken ? &Yes &Ja &No &Nee Properties Eigenschappen Send out message to all users Verzend bericht naar alle gebruikers Send out message to Verzend bericht naar Disconnect user Verbinding gebruiker verbreken Update is available Een update is beschikbaar A new release of %1 is available Een nieuwe versie van %1 is beschikbaar You can download it here: %1 U kunt hem hier dowloaden: %1 configure Configure Configureren Smbstatus Smbstatus <p align="right">Interval:</p> <p align="right">Interval:</p> Interval between smbstatus requests in seconds, (interval > 2) Interval tussen smbstatus verzoeken in seconden, (interval > 2) Show hidden shares (share$) Laat verborgen shares zien (share$) Show hidden shares Laat verborgen shares zien Notifications and log Notificaties en log Limit log: Limiet log: days dagen Iconize QtSmbstatus in system tray Laat icoon zien QtSmbstatus in de systeembalk Show activities in "balloon messages" Laat activiteiten zien in "ballon berichten" Status notification messages Status notificatie berichten Log SMB/CIFS activities Log SMB/CIFS activiteiten OK OK Cancel Annuleren Misc Diversen Automatically Check for updates Automatisch op updates controleren A new release is available Een nieuwe versie is beschikbaar Connection Verbinding <p align="right">Default Username:</p> <p align="right">Standaard Gebruikersnaam:</p> Autoconnect on qtsmbstatus startup Verbind automatisch bij het opstarten van qtsmbstatus Autoconnect Automatisch verbinden <p align="right">Default host address:</p> <p align="right">Standaard host adres:</p> Username (default : username = root) Gebruikersnaam (standaard: gebruikersnaam = root) Host Address Hostadres form_smbstatus qtsmbstatus qtsmbstatus Host: Host: Connect/Disconnect Verbinden / Verbinding verbreken &File &Bestand &Search &Zoeken &Help &Help &About QtSmbstatus &Over QtSmbstatus About QtSmbstatus Over QtSmbstatus About &Qt Over &Qt About Qt Over Qt &Configure client &Configureer client Configure QtSmbstatus client Configureer QtSmbstatus client &Machine &Machine Search machine Zoek machine &User &Gebruiker Search user Zoek gebruiker Share &open Share &open Search share open Zoek share open &Locked file &Geblokkeerd bestand Search file open Zoek bestand open &Next &Volgende Next Volgende F3 F3 &Find text &Vind volgende Find text Tekst zoeken F5 F5 &Quit &Afsluiten Quit QtSmbstatus Sluit QtSmbstatus &Show CIFS/SMB activities &Laat CIFS/SMB activiteiten zien Co&nnect Verbi&nden logform View Activities Laat Acitiviteiten Zien Clear Wissen Save log Log opslaan Close Sluiten View/hide shares Bekijk / Verberg shares View/hide files Bekijk / verberg bestanden Filter: Filter: login_dialog Connect to qtsmbstatus server Verbind naar qtsmbstatus server Username Gebruikersnaam root root Password Wachtwoord login aanmelden exit afsluiten main_windows Connect Verbinden Connection in progress on %1 Verbinding maken bezig op %1 The server certificate doesn't contain valid data or expired ! Het server certificaat bevat geen geldige data of is verlopen! The authenticity of host '%1' can't be established. De echtheid van host '%1' kan niet worden bevestigd. SHA1 Fingerprint: %1. SHA1 Vingerafdruk: %1. Are you sure you want to continue connecting ? Weet u zeker dat u verbinding wilt maken? Connected to host Verbonden met host Connection closed Verbinding verbroken Disconnect Verbinding verbreken Invalid login or password ! Ongeldig gebruikersnaam of wachtwoord ! qtsmbstatus-2.2.1/client/main_windows.h0000644000175000017500000000636711720232510017646 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #ifndef MAIN_WINDOWS_H #define MAIN_WINDOWS_H #include #include "login_windows.h" #include "configure_windows.h" #include "mainwindows.h" extern bool autoconnect; class Host { public: QString address; QString sha1; bool operator == (Host other) const { return (other.address == address && other.sha1 == sha1); }; }; class main_windows : public MainWindows { Q_OBJECT public: main_windows(QWidget *parent=0); virtual ~main_windows(); private slots: // Private slots virtual void slot_timer(); virtual void on_pushButton_connect_clicked(); virtual void sendMessage(const QString & machine,const QString & message); virtual void disconnectUser(const QString & pid,const QString & user); virtual void on_configureAction_triggered(); void socketConnected(); void socketClosed(); void core(); void error(QAbstractSocket::SocketError); void SslErrors (const QList &); void errorAuth(); private: // Private attributes QStringList ListSmbstatus; QSslSocket sslSocket; QAction * connect_action; /** These enums describe connection state. \sa setWidgetState socketState */ enum socket_state {UnconnectedState,ConnectingState,ConnectedState}; /** These enums describe protocol between %server and client. \sa core_syntax */ enum command {auth_rq,auth_ack,end,kill_user,send_msg,smb_rq,smb_data,end_smb_rq,whoiam, server_info,error_auth,error_command,error_obj,echo_request,echo_reply}; protected: virtual void closeEvent(QCloseEvent *e); private: // Private methods void infoserver(const QString & text); void setWidgetState(); void Disconnect(); void sendToServer(int cmd,const QString & inputArg1="",const QString & inputArg2=""); short unsigned int socketState(); void writeHistoryFile(); void readHistoryFile(); void comboBox_valid(); void open_dialog_for_login(); }; #endif qtsmbstatus-2.2.1/client/instances_dlg.cpp0000755000175000017500000000641011720232510020310 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include "instances_dlg.h" extern void debugQt(const QString & message); /** \class instances_dlg \brief dialog box for debug only \author Daniel Rocher \version 0.9.1 \date 2008-11-15 */ int instances_dlg::compteur_objet=0; instances_dlg::instances_dlg(QWidget * parent) : QDialog(parent) { debugQt("instances_dlg::instances_dlg()"); this->setAttribute(Qt::WA_DeleteOnClose); compteur_objet++; this->setWindowTitle("view instances"); this->setGeometry(QRect(330, 120, 112, 68)); layoutV = new QVBoxLayout(this); appendObject(&instances_dlg::compteur_objet,"instances_dlg"); // this this->setLayout(layoutV); timer = new QTimer (this); connect(timer, SIGNAL(timeout()), this, SLOT(slotTimer())); timer->start(1500); slotTimer(); } instances_dlg::~instances_dlg() { debugQt("instances_dlg::~instances_dlg()"); compteur_objet--; } void instances_dlg::appendObject(int * compteur,const QString & name) { QHBoxLayout * tmplayoutH = new QHBoxLayout(); QLabel * label1 = new QLabel(this); QSizePolicy sizePolicy(static_cast(1), static_cast(5)); sizePolicy.setHorizontalStretch(0); sizePolicy.setVerticalStretch(0); sizePolicy.setHeightForWidth(label1->sizePolicy().hasHeightForWidth()); label1->setSizePolicy(sizePolicy); label1->setMinimumSize(QSize(150, 0)); QLabel * label2 = new QLabel(this); tmplayoutH->addWidget(label1); tmplayoutH->addWidget(label2); layoutV->addLayout(tmplayoutH); struct_object myobject; myobject.compteur=compteur; myobject.name=name; myobject.label1=label1; myobject.label2=label2; list_object.append(myobject); } void instances_dlg::slotTimer() { for (int i= 0 ; i < list_object.size(); ++i) { list_object[i].label1->setText(list_object[i].name); list_object[i].label2->setText(" : "+QString::number(*list_object[i].compteur)); } } qtsmbstatus-2.2.1/client/service.h0000644000175000017500000000425411720232510016601 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #ifndef SERVICE_H #define SERVICE_H #include #include class service : public QTreeWidgetItem { public: service(QTreeWidgetItem * parent,const QString & PID,const QString & Share,const QString & DateOpen); service(QTreeWidgetItem * parent,const QString & PID,const QString & FileName,const QString & DenyMode,const QString & RW,const QString & Oplock,const QString & DateOpen); virtual ~service(); static int compteur_objet; bool mark; QString share; QString pid; QString filename; QString denymode; QString rw; QString oplock; QString dateopen; int TypeOfService; /** Enum type of service: - Tshare : 0 -> share - Tlockedfile : 1 -> locked file */ enum {Tshare,Tlockedfile} TypeService; }; #endif qtsmbstatus-2.2.1/client/mainwindows.cpp0000644000175000017500000005711111720232510020033 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include #include "mainwindows.h" extern void writeToConsole(const QString & message); extern QList QTreeWidgetItemList; //default value //! Interval, in seconds, between every request to %smbstatus int interval=10; //! View hidden shares (share$) bool view_hidden_shares = true; //! Iconize QtSmbstatus on system tray bool iconize=true; //! show status notification messages (balloon messages) bool show_messages=true; //! log SMB/CIFS activities bool log_activity=false; //! limit log (number of days) int limitLog=1; //! check for new release of qtsmbstatus bool check_new_release=true; /** \class MyApplication \brief reimplementing QApplication::commitData() \date 2007-07-26 \version 1.0 \author Daniel Rocher */ MyApplication::MyApplication(int & argc, char ** argv ) : QApplication(argc,argv) { } /** reimplementing QApplication::commitData(). This function deals with session management. It is invoked when the QSessionManager wants the application to commit all its data. */ void MyApplication::commitData(QSessionManager& manager) { debugQt("MyApplication::commitData()"); if (manager.allowsInteraction()) { manager.release(); emit quitMyApp(); } } /** \class MainWindows \brief Main Window for QtSmbstatus Client et Light \date 2008-11-16 \version 2.1 \author Daniel Rocher */ MainWindows::MainWindows(QWidget *parent) : QMainWindow(parent) { debugQt("MainWindows::MainWindows()"); setupUi(this); if (check_new_release) checkForUpdateOfQtSmbstatus(); msgError=new QErrorMessage(this); // an error message display dialog trayicon =new QSystemTrayIcon(QIcon (":/icons/qtsmbstatus.png"),this); menuApp=new QMenu( this ); viewlog_action=menuApp->addAction ( tr("Show CIFS/SMB activities") ); connect(viewlog_action,SIGNAL( triggered ()),this , SLOT(on_action_View_log_triggered())); configure_action= menuApp->addAction ( QIcon (":/icons/configure.png"),tr("Configure") ); connect(configure_action,SIGNAL( triggered ()),this , SLOT(on_configureAction_triggered())); menuApp->addSeparator (); restore_action=menuApp->addAction (tr("Minimize") ); connect(restore_action,SIGNAL( triggered ()),this , SLOT(restore_minimize())); QAction * exit_action=menuApp->addAction ( QIcon (":/icons/exit.png"),tr("Quit") ); connect(exit_action,SIGNAL( triggered ()),this , SLOT(beforeQuit () )); connect(action_Quit,SIGNAL( triggered ()),this , SLOT(beforeQuit () )); trayicon->setContextMenu ( menuApp ); connect(trayicon,SIGNAL(activated ( QSystemTrayIcon::ActivationReason ) ),this,SLOT(trayicon_activated(QSystemTrayIcon::ActivationReason))); restoreWindowSize(); // create statusBar statusBar()->showMessage (""); //status bar smbstatus_rq_started=false; // treeWidget treeWidget->setSortingEnabled ( true ); treeWidget->setRootIsDecorated ( false ); treeWidget->setHeaderLabel ( ""); treeWidget->setContextMenuPolicy (Qt::CustomContextMenu ); // create popup menu menuPopup = new QMenu( treeWidget ); connect(treeWidget, SIGNAL( customContextMenuRequested ( const QPoint & ) ), this, SLOT( slotPopupMenu( const QPoint & ) ) ); // first time configuration_changed(); // form view CIFS/SMB activities logform = new LogForm(this); connect(this ,SIGNAL(refreshviewlog(const type_message &)), logform,SLOT(append(const type_message &))); connect(&timerinfoSmb, SIGNAL(timeout()), this, SLOT(InfoSMB())); connect(&timerSmbRequest, SIGNAL(timeout()), this, SLOT(slot_timer())); } MainWindows::~MainWindows() { debugQt("MainWindows::~MainWindows()"); } /** Before quit qtsmbstatus */ void MainWindows::beforeQuit() { debugQt("MainWindows::beforeQuit()"); trayicon->setVisible(false); this->close(); } /** When %user restore or minimize windows */ void MainWindows::restore_minimize() { debugQt("MainWindows::restore_minimize()"); if ((this->isMinimized ()) || !(this->isVisible())) { this->setVisible(true); this->showNormal (); } else { this->setVisible(false); logform->setVisible(false); } } /** Connected to signal when the %user activates the system tray icon \param reason describes the reason the system tray was activated \sa restore_minimize */ void MainWindows::trayicon_activated(QSystemTrayIcon::ActivationReason reason) { debugQt("MainWindows::trayicon_activated()"); if ((this->isMinimized ()) || !(this->isVisible())) restore_action->setText(tr("Restore")); else restore_action->setText(tr("Minimize")); if (reason == QSystemTrayIcon::Trigger) restore_minimize(); } /** restore window size \sa saveWindowSize On startup, restore windows size. */ void MainWindows::restoreWindowSize() { debugQt("MainWindows::restoreWindowSize()"); QSettings settings; settings.beginGroup("/MainWindow"); settings.beginGroup("/Geometry"); QRect rec= this->geometry (); int left=settings.value( "left",20 ).toInt(); int top=settings.value( "top", 20 ).toInt(); int width=settings.value( "width",300 ).toInt(); int height=settings.value( "height", 600 ).toInt(); settings.endGroup(); settings.endGroup(); this->setGeometry(QRect( left, top, width, height )); } /** save window size \sa restoreWindowSize Before quit, save window size */ void MainWindows::saveWindowSize() { debugQt("MainWindows::saveWindowSize()"); QSettings settings; settings.beginGroup("/MainWindow"); settings.beginGroup("/Geometry"); QRect rec= this->geometry (); settings.setValue( "left", rec.left () ); settings.setValue( "top", rec.top () ); settings.setValue( "width", rec.width () ); settings.setValue( "height", rec.height () ); settings.endGroup(); settings.endGroup(); } /** When configuration changed \sa configure_windows */ void MainWindows::configuration_changed() { debugQt("MainWindows::configuration_changed()"); if (!iconize) this->setVisible(true); action_View_log->setEnabled(log_activity); viewlog_action->setEnabled(log_activity); trayicon->setVisible(iconize); timerSmbRequest.setInterval(interval*1000); } /** menu Help/helpAbout */ void MainWindows::helpAbout() { QMessageBox::about( this, "QtSmbstatus","QtSmbstatus : "+web_qtsmbstatus+"
Version: "+version_qtsmbstatus+"
"+date_qtsmbstatus+"
" "Developer : "+auteur_qtsmbstatus+" "+mail_qtsmbstatus+"


" ""+tr("Thanks to:")+QString::fromUtf8("
" "" "" "" "" "" "" "" "" "" "" "" "" "" "
Polish translation Inox, Jarosław Ogrodnik, Pawel Dyda, Sh4dow
Spanish translation Abel O'Rian, Amaeth, DiegoJ, Fernando Muñoz, Ian Springer, Jorge Dardón, Monkey
Italian translation Martino Barbon, Naldini Paolo, Salvatore Udda, simone.sandri
German translation Alex Djekic, Till Freier
Hungarian translation Muszela Balázs, Pittmann Tamás, Szenográdi Norbert Péter, Szilveszter Kovács
Russian translation Motsyo Gennadi
Ukrainian translation Motsyo Gennadi, Андрей Стрепетов
Swedish translation Zirro
Brazilian Portuguese translation Muriel de Souza Godoi, Rafael Porto Rodrigues
Dutch translation Jogai, Elco, Robert Wubs
RPM packages for FC3 CG (cyberkoa)
Second reading Eric Bresson


")+ tr("This program is licensed to you under the terms of the GNU General Public License version 2")); } /** menu Help/helpAboutQt */ void MainWindows::helpAboutQt() { QMessageBox::aboutQt( this, "Qt Application" ); } /** View log \sa LogForm */ void MainWindows::on_action_View_log_triggered () { debugQt("MainWindows::on_action_View_log_triggered ()"); logform->show(); } /** Find items \sa search NextSlot */ void MainWindows::AllSearchSlot() { debugQt("MainWindows::AllSearchSlot()"); bool ok; currentIndexOfListItem=0; QString txt = QInputDialog::getText(this,"Search", tr("Find text")+":", QLineEdit::Normal,QString::null, &ok ); if ( ok && !txt.isEmpty() ) { SearchTxt=txt; search(); } } /** Find next. \sa AllSearchSlot */ void MainWindows::NextSlot() { debugQt("MainWindows::NextSlot()"); search(to_next); } /** Select item \param item pointer on QListViewItem \sa NextSlot search */ void MainWindows::selectItem(QTreeWidgetItem *item) { debugQt("MainWindows::selectItem()"); treeWidget->setCurrentItem(item); } /** Search item. \param direction \sa T_Direction selectItem */ void MainWindows::search(T_Direction direction) { debugQt("MainWindows::search()"); QList listItemFound=treeWidget->findItems (SearchTxt, Qt::MatchContains | Qt::MatchRecursive); if (direction==to_next) currentIndexOfListItem++; if (direction==to_first || currentIndexOfListItem>=listItemFound.size()) currentIndexOfListItem=0; if (listItemFound.size()==0) { treeWidget->clearSelection (); statusBar ()->showMessage ( tr("Text not found."), 2000 ); QApplication::beep (); searchNextAction->setEnabled ( false ); } else { QTreeWidgetItem *FindItem=listItemFound.at(currentIndexOfListItem); selectItem(FindItem); searchNextAction->setEnabled ( true ); } } /** Info CIFS/SMB for log and balloon messages */ void MainWindows::InfoSMB() { debugQt("MainWindows::InfoSMB()"); QString user; QString opened; QString machine; short unsigned int type_message=0; QString message; int occurence=0; int nb_occurences=3; // number of occurences on "balloon messages" server * item =dynamic_cast(treeWidget->topLevelItem(0)); if (item) { while (!item->listMessages.isEmpty()) { occurence++; if (occurence>1 && occurence<=nb_occurences) message+="\n"; // LineFeed user=item->listMessages.first().user; opened=item->listMessages.first().opened; // limit size of text if (opened.size()>60) opened=opened.left(7)+"..."+opened.right(50); machine=item->listMessages.first().machine; type_message=item->listMessages.first().type_message; //view 3 occurences max if (type_message==0 && occurence<=nb_occurences) message+=tr("User %1 has opened share %2 (%3)").arg(user).arg(opened).arg(machine); if (type_message==1 && occurence<=nb_occurences) message+=tr("User %1 has opened file %2 (%3)").arg(user).arg(opened).arg(machine); // log if (log_activity) emit (refreshviewlog(item->listMessages.first())); item->listMessages.removeFirst (); } if (occurence>nb_occurences) message+="\n ..."; // hide others datas // refresh filter if (occurence>0) logform->on_filterEdit_textChanged(); // erase old log logform->eraseOldLog(); // just see 1 "balloon" (3 last occurences) if show_messages=true if (!message.isEmpty() && show_messages && !firstTime) trayicon->showMessage ( tr("CIFS/SMB activities"), message, QSystemTrayIcon::Information ) ; } firstTime=false; } /** Interpret %smbstatus reply. \param listSmbstatus a QStringList \sa smbstatus */ void MainWindows::AnalysisSmbstatus(const QStringList & listSmbstatus) { debugQt("MainWindows::AnalysisSmbstatus()"); // mark items of listview first item_server->mark_childs(); smbstatus * InstanceSmbstatus = new smbstatus(listSmbstatus,this); // InstanceSmbstatus sends samba version connect (InstanceSmbstatus,SIGNAL(sambaVersion (const QString &)),this,SLOT(setSambaVersion (const QString &))); // InstanceSmbstatus has found a share connect (InstanceSmbstatus,SIGNAL(add_share(const QString &,const QString &,const QString &)),this,SLOT(add_share(const QString &,const QString &,const QString &))); // InstanceSmbstatus has found an user connect (InstanceSmbstatus,SIGNAL(add_user (const QString &,const QString &,const QString &,const QString &,const QString &)),this,SLOT(add_user (const QString &,const QString &,const QString &,const QString &,const QString &))); // InstanceSmbstatus has found a file opened (locked file) connect (InstanceSmbstatus,SIGNAL(add_lockedfile(const QString &,const QString &,const QString &,const QString &,const QString &,const QString &)),this,SLOT(add_lockedfile(const QString &,const QString &,const QString &,const QString &,const QString &,const QString &))); // InstanceSmbstatus has finished his work connect (InstanceSmbstatus,SIGNAL(destroyed ()),this,SLOT(AnalysisSmbDestroyed())); // Start analysis InstanceSmbstatus->RQ_smbstatus(); } /** InstanceSmbstatus has finished his work \sa smbstatus */ void MainWindows::AnalysisSmbDestroyed () { debugQt("MainWindows::AnalysisSmbDestroyed ()"); item_server->refresh_childs(); // erase items obsoleted smbstatus_rq_started=false; } /** InstanceSmbstatus sends samba version. \param version_samba samba version \sa smbstatus */ void MainWindows::setSambaVersion (const QString & version_samba) { debugQt("MainWindows::setSambaVersion ()"); item_server->setSambaVersion(version_samba); } /** InstanceSmbstatus has found an %user \param strPid PID \param strUser User name \param strGroup Group name \param strMachineName Machine name \param strMachineIP IP address \sa smbstatus **/ void MainWindows::add_user (const QString & strPid,const QString & strUser,const QString & strGroup,const QString & strMachineName,const QString & strMachineIP) { debugQt("MainWindows::add_user ()"); item_server->add_user(strPid,strUser,strGroup,strMachineName,strMachineIP); } /** InstanceSmbstatus has found a %share \param strPid PID \param strShare Share name \param strConnected date \sa smbstatus */ void MainWindows::add_share(const QString & strPid ,const QString & strShare,const QString & strConnected) { debugQt("MainWindows::add_share ()"); // if hidden shares if (!view_hidden_shares && (strShare.indexOf(QRegExp("\\$$"))!=-1)) return; item_server->add_share(strPid,strShare,strConnected); } /** InstanceSmbstatus has found a file opened (locked file) \param strPid PID \param strName File name \param strMode Mode \param strRW RW \param strOplock Oplock \param strDateOpen date \sa smbstatus */ void MainWindows::add_lockedfile(const QString & strPid,const QString & strName,const QString & strMode,const QString & strRW,const QString & strOplock,const QString & strDateOpen) { debugQt("MainWindows::add_lockedfile ()"); item_server->add_lockedfile(strPid,strName,strMode,strRW,strOplock,strDateOpen); } /** send out messages (popupwindows) to all users \sa slotPopupMenu */ void MainWindows::slotSendMessageAllUsers() { machine* Item; bool ok; QString message = QInputDialog::getText(this, "QtSmbstatus", tr("Message to send")+":", QLineEdit::Normal, QString::null, &ok); if ( !ok || message.isEmpty() ) return; for (int i=0; i < item_server->childCount () ; ++i ) { Item= dynamic_cast(item_server->child (i) ); if (!Item) break; // if object is dead if (!QTreeWidgetItemList.contains(Item)) break; sendMessage(Item->machine_name,message); } } /** send out messages (popupwindows) to one %user \sa slotPopupMenu */ void MainWindows::slotSendMessage() { bool ok; // if object is dead if (!QTreeWidgetItemList.contains(currentPopupMenuItem)) return; machine* Item=dynamic_cast(currentPopupMenuItem); if (!Item) return; QString message = QInputDialog::getText(this, "QtSmbstatus", tr("Message to send to %1:").arg(Item->machine_name), QLineEdit::Normal, QString::null, &ok); if ( ok && !message.isEmpty() ) { // user entered something and pressed OK // if object is dead if (!QTreeWidgetItemList.contains(currentPopupMenuItem)) return; sendMessage(Item->machine_name,message); } } /** Disconnect an %user \sa slotPopupMenu */ void MainWindows::slotDisconnectUser() { QString username; QString pid; // if object is dead if (!QTreeWidgetItemList.contains(currentPopupMenuItem)) return; user* Item=dynamic_cast(currentPopupMenuItem); if (!Item) return; // get PID pid=Item->pid; // get user name username=Item->username; if ( !QMessageBox::information(this,"QtSmbstatus", tr("Do you really want to disconnect user %1 ?").arg(username), tr("&Yes"), tr("&No"),QString::null, 1, 1 ) ) { // if object is dead if (!QTreeWidgetItemList.contains(currentPopupMenuItem)) return; disconnectUser(pid,username); } } /** popup menu */ void MainWindows::slotPopupMenu( const QPoint & point ) { currentPopupMenuItem = treeWidget->itemAt ( point ); // if object is dead if (!QTreeWidgetItemList.contains(currentPopupMenuItem)) return; if( currentPopupMenuItem ) { // create popup menu menuPopup->clear(); if (currentPopupMenuItem==item_server) // if a server item { menuPopup->addAction ( tr( "Properties"),this,SLOT(InfoServer() ) ); QAction * action=menuPopup->addAction ( tr( "Send out message to all users"),this,SLOT(slotSendMessageAllUsers() ) ); action->setEnabled(permitSendMsg); menuPopup->exec( QCursor::pos() ); return; } if (currentPopupMenuItem->parent()==item_server) // if a machine item { machine * myItem=dynamic_cast(currentPopupMenuItem); if (!myItem) return; menuPopup->addAction ( tr( "Properties"),this,SLOT(InfoMachine() ) ); QAction * action=menuPopup->addAction ( tr( "Send out message to")+ " " + myItem->machine_name,this,SLOT(slotSendMessage() ) ); action->setEnabled(permitSendMsg); // if client can send popup messages menuPopup->exec( QCursor::pos() ); return; } if (currentPopupMenuItem->parent()->parent()==item_server) // if an user item { user * myItem=dynamic_cast(currentPopupMenuItem); if (!myItem) return; menuPopup->addAction ( tr( "Properties"),this,SLOT(InfoUser() ) ); QAction * action=menuPopup->addAction ( tr( "Disconnect user")+ " " + myItem->username,this,SLOT(slotDisconnectUser() ) ); action->setEnabled(permitDisconnectUser); // if client can disconnect an user menuPopup->exec( QCursor::pos() ); return; } // it's a locked file or share menuPopup->addAction ( tr( "Properties"),this,SLOT(InfoService() ) ); menuPopup->exec( QCursor::pos() ); } } /** View samba version \sa slotPopupMenu \sa server::ViewInfoServer */ void MainWindows::InfoServer() { // if object is dead if (!QTreeWidgetItemList.contains(currentPopupMenuItem)) return; QString message=item_server->ViewInfoServer(); QMessageBox::information(this, "QtSmbstatus",message,QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton); } /** View %user informations \sa slotPopupMenu \sa server::ViewInfoUser */ void MainWindows::InfoUser() { // if object is dead if (!QTreeWidgetItemList.contains(currentPopupMenuItem)) return; QString message=item_server->ViewInfoUser(currentPopupMenuItem); QMessageBox::information(this, "QtSmbstatus",message,QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton); } /** View %service informations (locked file or %share) \sa slotPopupMenu \sa server::ViewInfoService */ void MainWindows::InfoService() { // if object is dead if (!QTreeWidgetItemList.contains(currentPopupMenuItem)) return; QString message=item_server->ViewInfoService(currentPopupMenuItem); QMessageBox::information(this, "QtSmbstatus",message,QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton); } /** View %machine informations \sa slotPopupMenu \sa server::ViewInfoMachine */ void MainWindows::InfoMachine() { // if object is dead if (!QTreeWidgetItemList.contains(currentPopupMenuItem)) return; QString message=item_server->ViewInfoMachine(currentPopupMenuItem); QMessageBox::information(this, "QtSmbstatus",message,QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton); } /** Check for update of qtsmbstatus \sa requestHtmlFinished */ void MainWindows::checkForUpdateOfQtSmbstatus () { debugQt("MainWindows::checkForUpdateOfQtSmbstatus ()"); QSettings settings; settings.beginGroup("/Configuration"); QDateTime dateTimeForlastCheck=settings.value("dateTimeForlastCheck").toDateTime (); QString uuid=settings.value("uuid").toString().remove(QRegExp("[{}]")); settings.endGroup(); if (dateTimeForlastCheck.isValid()) { if (dateTimeForlastCheck>QDateTime::currentDateTime().addDays(-1)) return; // wait 1 day } http = new QHttp(this); connect(http, SIGNAL(done(bool)), this, SLOT(requestHtmlFinished ( bool ))); http->setHost("qtsmbstatus.free.fr"); http->get("/last_version.php?uuid="+uuid+"&app="+qApp->applicationName ()); } /** request HTML finished \sa checkForUpdateOfQtSmbstatus */ void MainWindows::requestHtmlFinished ( bool error ) { debugQt("MainWindows::requestHtmlFinished ()"); if (!error) { bool ok; uint available_release=QString(http->readAll()).simplified().toUInt (&ok); if (ok) { debugQt("Available release: "+QString::number(available_release)); QSettings settings; settings.beginGroup("/Configuration"); uint last_known_release=settings.value("lastKnownRelease",int_qtsmbstatus_version).toUInt(); settings.setValue("lastKnownRelease",available_release); settings.setValue("dateTimeForlastCheck",QDateTime::currentDateTime()); if (available_release>last_known_release && available_release>int_qtsmbstatus_version) { debugQt("A new release is available :-)"); // New version available QDialog * dialog= new QDialog(this); dialog->setAttribute(Qt::WA_DeleteOnClose); QDialogButtonBox * dialogButton=new QDialogButtonBox ( QDialogButtonBox::Ok, Qt::Horizontal,dialog); dialog->setWindowTitle ( tr("Update is available")); QGridLayout *layout = new QGridLayout(dialog); QLabel * label= new QLabel("

"+ tr("A new release of %1 is available").arg("qtsmbstatus")+ ".

"+ tr("You can download it here: %1").arg("
"+web_qtsmbstatus)+ "


",dialog); label->setTextFormat (Qt::RichText); label->setTextInteractionFlags (Qt::LinksAccessibleByMouse); label->setOpenExternalLinks (true); QLabel * labelPixmap= new QLabel(dialog); labelPixmap->setPixmap(qApp->windowIcon().pixmap(QSize (32,32)) ); layout->addWidget(labelPixmap, 0, 0, 5, 1); layout->addWidget(label, 0, 1, 5, 1); layout->addWidget(dialogButton, 6, 0, 1, 2, Qt::AlignHCenter); dialog->setLayout(layout); connect(dialogButton,SIGNAL(accepted ()),dialog,SLOT(accept())); dialog->show(); } else debugQt("No new release"); settings.endGroup(); } else writeToConsole("impossible to convert release number"); } else writeToConsole("impossible to check for update"); http->deleteLater(); } qtsmbstatus-2.2.1/client/log.h0000644000175000017500000000434011720232510015716 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #ifndef LOG_H #define LOG_H #include "build/ui/ui_log.h" #include "server.h" class QStandardItemModel; class MySortFilterProxyModel; extern void debugQt(const QString & message); extern bool Log_activity; // Log SMB/CIFS activities extern int limitLog; // limit log (number of days) class LogForm: public QDialog, public Ui::logform { Q_OBJECT public: LogForm(QWidget *parent = 0); virtual ~LogForm(); void setHeader(); public slots: void append(const type_message &); void on_clearButton_clicked(); void eraseOldLog(); void on_filterEdit_textChanged(); private slots: void on_checkShare_stateChanged ( int state); void on_checkFile_stateChanged ( int state); void on_SaveLogButton_clicked(); private: // attributes QStandardItemModel * model; MySortFilterProxyModel *proxyModel; }; #endif qtsmbstatus-2.2.1/client/qtsmbstatus.rc0000755000175000017500000000010211720232510017677 0ustar villouvillouIDI_ICON1 ICON DISCARDABLE "./icons/icon.ico"qtsmbstatus-2.2.1/client/mainwindows.h0000644000175000017500000001103111720232510017467 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #ifndef MAINWINDOWS_H #define MAINWINDOWS_H #include #include #include #include #include #include #include #include #include "build/ui/ui_form_smbstatus.h" #include "log.h" #include "server.h" #include "smbstatus.h" #include "../common/core_syntax.h" extern void debugQt(const QString & message); extern QString version_qtsmbstatus; extern uint int_qtsmbstatus_version; extern QString date_qtsmbstatus; extern QString mail_qtsmbstatus; extern QString auteur_qtsmbstatus; extern QString web_qtsmbstatus; extern bool debug_qtsmbstatus; class MyApplication : public QApplication { Q_OBJECT public: MyApplication (int & argc, char ** argv ); virtual void commitData(QSessionManager& manager); signals: void quitMyApp(); }; class MainWindows : public QMainWindow, public Ui::form_smbstatus { Q_OBJECT public: MainWindows(QWidget *parent=0); virtual ~MainWindows(); signals: void refreshviewlog(const type_message &); public slots: void beforeQuit(); protected slots: virtual void slot_timer() = 0; virtual void sendMessage(const QString & machine,const QString & message) = 0; virtual void disconnectUser(const QString & pid,const QString & user) = 0; virtual void on_configureAction_triggered()=0; virtual void on_pushButton_connect_clicked() {printf ("not implemented here.\n");} void AnalysisSmbstatus(const QStringList & listSmbstatus); private slots: // Private slots void helpAbout(); void helpAboutQt(); void on_action_View_log_triggered (); void AllSearchSlot(); void NextSlot(); void requestHtmlFinished ( bool error ); void trayicon_activated(QSystemTrayIcon::ActivationReason reason); void restore_minimize(); void configuration_changed(); void setSambaVersion (const QString &); void add_user (const QString &,const QString &,const QString &,const QString &,const QString &); void add_share(const QString &,const QString &,const QString &); void add_lockedfile(const QString &,const QString &,const QString &,const QString &,const QString &,const QString &); void AnalysisSmbDestroyed(); void InfoSMB(); void InfoServer(); void InfoUser(); void InfoService(); void InfoMachine(); void slotPopupMenu(const QPoint &); void slotSendMessage(); void slotSendMessageAllUsers(); void slotDisconnectUser(); protected: // protected attributes QMenu * menuApp; bool permitDisconnectUser; bool permitSendMsg; server * item_server; QHttp * http; QErrorMessage * msgError; QSystemTrayIcon * trayicon; QAction * configure_action; QAction * restore_action; QAction * viewlog_action; QMenu* menuPopup; QTreeWidgetItem* currentPopupMenuItem; /** direction of search \sa search */ enum T_Direction {to_first,to_preview,to_next}; QString SearchTxt; int currentIndexOfListItem; QTimer timerSmbRequest; QTimer timerinfoSmb; bool smbstatus_rq_started; bool firstTime; LogForm * logform; protected: // Protected methods void restoreWindowSize(); void saveWindowSize(); void search(T_Direction direction=to_first); void selectItem(QTreeWidgetItem *item); void checkForUpdateOfQtSmbstatus (); }; #endif qtsmbstatus-2.2.1/client/user.h0000644000175000017500000000411311720232510016111 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #ifndef USER_H #define USER_H #include #include #include "service.h" class user : public QTreeWidgetItem { public: user(QTreeWidgetItem * parent,const QString & PID,const QString & Username, const QString & Group); virtual ~user(); bool append_share(const QString & PID,const QString & Share,const QString & DateOpen); bool append_lockedfile(const QString & PID,const QString & File,const QString & DenyMode,const QString & RW,const QString & Oplock,const QString & DateOpen); void refresh_childs(); void mark_childs(); static int compteur_objet; bool mark; QString username; QString group; QString pid; }; #endif qtsmbstatus-2.2.1/client/machine.h0000644000175000017500000000375111720232510016546 0ustar villouvillou/*************************************************************************** * Copyright (C) 2004 by Daniel Rocher * * daniel.rocher@adella.org * * * * 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 2 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, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #ifndef MACHINE_H #define MACHINE_H #include #include #include "user.h" class machine : public QTreeWidgetItem { public: machine(QTreeWidgetItem * parent,const QString & PID,const QString & Username, const QString & Group, const QString & MachineName, const QString & MachineIP); virtual ~machine(); void append_user(const QString & PID,const QString & Name,const QString & Group); void refresh_childs(); void mark_childs(); static int compteur_objet; bool mark; QString machine_name; QString machine_ip; }; #endif qtsmbstatus-2.2.1/client/client.pro0000644000175000017500000000516611720232510016773 0ustar villouvillou TEMPLATE = app CONFIG += release \ warn_on TARGET = qtsmbstatus MOC_DIR = ./build/moc OBJECTS_DIR = ./build DESTDIR = ./bin UI_DIR = ./build/ui RCC_DIR = ./build/rcc SOURCES += main.cpp \ mainwindows.cpp \ main_windows.cpp \ server.cpp \ machine.cpp \ service.cpp \ user.cpp \ smbstatus.cpp \ login_windows.cpp \ configure_windows.cpp \ linecore.cpp \ ../common/core_syntax.cpp \ ../common/common.cpp \ log.cpp \ mysortfilterproxymodel.cpp \ instances_dlg.cpp HEADERS += main_windows.h \ mainwindows.h \ server.h \ machine.h \ service.h \ user.h \ smbstatus.h \ linecore.h \ login_windows.h \ ../common/core_syntax.h \ configure_windows.h \ log.h \ mysortfilterproxymodel.h \ instances_dlg.h RESOURCES = client.qrc RC_FILE = qtsmbstatus.rc TRANSLATIONS = ./tr/qtsmbstatus_fr.ts \ ./tr/qtsmbstatus_es.ts \ ./tr/qtsmbstatus_pl.ts \ ./tr/qtsmbstatus_de.ts \ ./tr/qtsmbstatus_it.ts \ ./tr/qtsmbstatus_ru.ts \ ./tr/qtsmbstatus_uk.ts \ ./tr/qtsmbstatus_sv.ts \ ./tr/qtsmbstatus_hu.ts \ ./tr/qtsmbstatus_nl.ts \ ./tr/qtsmbstatus_pt_BR.ts FORMS += form_smbstatus.ui \ configure.ui \ login_dialog.ui \ log.ui # install unix { # Translation TRANSDIR = /usr/local/share/qtsmbstatus TRANSFILES = ./tr/*.qm trans.path = $$TRANSDIR trans.files = $$TRANSFILES # Documentation DOCDIR = /usr/local/share/doc/qtsmbstatus DOCFILES = ../README \ ../README-FR \ ../INSTALL \ ../COPYING doc.path = $$DOCDIR doc.files = $$DOCFILES #icons ICONSDIR = /usr/share/pixmaps ICONSFILES = qtsmbstatus.xpm icons.path = $$ICONSDIR icons.files = $$ICONSFILES #menu MENUDIR = /usr/share/applications MENUFILES = qtsmbstatus.desktop menu.path = $$MENUDIR menu.files = $$MENUFILES #manpage MANDIR = /usr/local/share/man/man7 MANFILES = qtsmbstatus.7.gz manpage.path = $$MANDIR manpage.files = $$MANFILES target.path = /usr/local/bin INSTALLS += trans \ target \ doc \ icons \ menu \ manpage system(lrelease $$TRANSLATIONS) } QT += network