From 37333bf25ad9a4c538250f5af2f9f1d666362883 Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdeadmin@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- kuser/kgroup.h | 150 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 kuser/kgroup.h (limited to 'kuser/kgroup.h') diff --git a/kuser/kgroup.h b/kuser/kgroup.h new file mode 100644 index 0000000..c91f496 --- /dev/null +++ b/kuser/kgroup.h @@ -0,0 +1,150 @@ +/* + * Copyright (c) 1998 Denis Perchine + * Copyright (c) 2004 Szombathelyi György + * Maintained by Adriaan de Groot + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License version 2 as published by the Free Software Foundation. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + **/ + +#ifndef _KU_GROUP_H_ +#define _KU_GROUP_H_ + +#include + +#include +#include +#include + +#include "kuserprefs.h" +#include "sid.h" + +namespace KU { + +class KGroup { +public: + KGroup(); + KGroup(KGroup *group); + ~KGroup(); + + enum Cap { + Cap_Samba = 1 + }; + + void copy(const KGroup *group); + void setCaps( int data ); + int getCaps(); + + const QString &getName() const; + const QString &getPwd() const; + gid_t getGID() const; + const SID &getSID() const; + int getType() const; + const QString &getDisplayName() const; + const QString &getDesc() const; + + void setName(const QString &data); + void setPwd(const QString &data); + void setGID(gid_t data); + void setSID(const SID &data); + void setType(int data); + void setDisplayName(const QString &data); + void setDesc(const QString &data); + + bool addUser(const QString &name); + bool removeUser(const QString &name); + bool lookup_user(const QString &name); + uint count() const; + QString user(uint i); + void clear(); + +protected: + QString + name, + pwd; + gid_t gid; + +//samba attributes + SID sid; + int type; + int caps; + QString displayname; + QString desc; + + QStringList u; +}; + +class KGroups { +public: + enum Cap { + Cap_ReadOnly = 1, + Cap_Passwd = 2, + Cap_Shadow = 4, + Cap_Samba = 8 + }; + + typedef QPtrListIterator DelIt; + typedef QPtrListIterator AddIt; + typedef QMapIterator ModIt; + + QPtrList mDelSucc; + QPtrList mAddSucc; + QMap mModSucc; + + KGroups( KUserPrefsBase *cfg ); + virtual ~KGroups(); + + int getCaps() const { return caps; } + const QString &getDOMSID() const; + + KGroup *lookup( const QString &name ); + KGroup *lookup( gid_t gid ); + KGroup *lookup_sam( const SID &sid ); + KGroup *lookup_sam( const QString &sid ); + KGroup *lookup_sam( uint rid ); + + KGroup *first(); + KGroup *next(); + KGroup *operator[](uint num); + uint count() const; + + void add(KGroup *group); + void del(KGroup *group); + void mod(KGroup *gold, const KGroup &gnew); + void commit(); + void cancelMods(); + + enum { + NO_FREE = (gid_t) -1 + }; + + virtual gid_t first_free(); + virtual uint first_free_sam(); + virtual bool reload() = 0; + virtual bool dbcommit() = 0; + +protected: + KUserPrefsBase *mCfg; + QPtrList mGroups; + + QPtrList mDel; + QPtrList mAdd; + QMap mMod; + int caps; + QString domsid; +}; + +} + +#endif // _KU_GROUP_H_ -- cgit v1.2.3