summaryrefslogtreecommitdiffstats
path: root/filesharing/advanced/kcm_sambaconf/smbpasswdfile.h
diff options
context:
space:
mode:
Diffstat (limited to 'filesharing/advanced/kcm_sambaconf/smbpasswdfile.h')
-rw-r--r--filesharing/advanced/kcm_sambaconf/smbpasswdfile.h141
1 files changed, 141 insertions, 0 deletions
diff --git a/filesharing/advanced/kcm_sambaconf/smbpasswdfile.h b/filesharing/advanced/kcm_sambaconf/smbpasswdfile.h
new file mode 100644
index 00000000..6a15c8c0
--- /dev/null
+++ b/filesharing/advanced/kcm_sambaconf/smbpasswdfile.h
@@ -0,0 +1,141 @@
+/***************************************************************************
+ smbpasswdfile.h - description
+ -------------------
+ begin : Tue June 6 2002
+ copyright : (C) 2002 by Jan Sch�fer
+ ***************************************************************************/
+
+/******************************************************************************
+ * *
+ * This file is part of KSambaPlugin. *
+ * *
+ * KSambaPlugin 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. *
+ * *
+ * KSambaPlugin 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 KSambaPlugin; if not, write to the Free Software *
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
+ * *
+ ******************************************************************************/
+
+#ifndef SMBPASSWDFILE_H
+#define SMBPASSWDFILE_H
+
+
+/**
+ *@author Jan Sch�fer
+ */
+
+#include <qstring.h>
+#include <kurl.h>
+
+class SambaFile;
+class KProcess;
+
+/**
+ * Simple class to store a Samba User
+ **/
+class SambaUser
+{
+public:
+ SambaUser(const QString & aName = QString::null, int anUid = -1) {name = aName; uid = anUid;};
+
+ QString name;
+ int uid;
+ int gid;
+ bool isUserAccount;
+ bool hasNoPassword;
+ bool isDisabled;
+ bool isWorkstationTrustAccount;
+};
+
+/**
+ * A QPtrList of SambaUser
+ **/
+class SambaUserList : public QPtrList<SambaUser>
+{
+public:
+ QStringList getUserNames();
+};
+
+/**
+ * This class represents the SAMBA smbpasswd file.
+ * It provides :
+ * - getting a list of all SAMBA users
+ * - adding a new user -> uses smbpasswd program
+ * - removing an existing user -> uses smbpasswd program
+ **/
+class SmbPasswdFile : public QObject
+{
+Q_OBJECT
+public:
+ SmbPasswdFile();
+ SmbPasswdFile(const KURL &);
+ ~SmbPasswdFile();
+
+ void setUrl(const KURL &);
+
+ /**
+ * Returns a list of all users stored in
+ * the smbpasswd file
+ **/
+ SambaUserList getSambaUserList();
+
+ /**
+ * Calls smbpasswd with the given arguments
+ **/
+ bool executeSmbpasswd(const QStringList & args);
+
+ /**
+ * Tries to add the passed user to the smbpasswd file
+ * returns true if successful otherwise false
+ **/
+ bool addUser(const SambaUser &, const QString & password);
+
+ /**
+ * Tries to remove the passed user from the smbpasswd file
+ * returns true if successful otherwise false
+ **/
+ bool removeUser(const SambaUser &);
+
+ /**
+ * Tries to change the password of the passed user
+ * if it fails returns false otherwise true
+ **/
+ bool changePassword(const SambaUser &, const QString & password);
+
+ bool enableUser(const SambaUser &);
+
+ bool disableUser(const SambaUser &);
+
+ bool setNoPassword(const SambaUser &);
+
+ bool setMachineTrustAccount(const SambaUser &);
+
+ bool joinADomain(const QString &, const QString &, const QString &, const QString &);
+
+ /**
+ * Returns the Url of the smbpasswd file
+ * specified in the [global] section of
+ * the smb.conf file.
+ * If there is no entry in the [global] section
+ * it tries to guess the location.
+ **/
+ static KURL getUrlFromSambaFile(const SambaFile *file);
+protected:
+ KURL _url;
+ QString _smbpasswdOutput;
+
+protected slots:
+ void smbpasswdStdOutReceived(KProcess*,char*,int);
+};
+
+#endif