summaryrefslogtreecommitdiff
path: root/noncore/settings/usermanager/passwd.cpp
Unidiff
Diffstat (limited to 'noncore/settings/usermanager/passwd.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/usermanager/passwd.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/noncore/settings/usermanager/passwd.cpp b/noncore/settings/usermanager/passwd.cpp
index 5063661..0a2bfba 100644
--- a/noncore/settings/usermanager/passwd.cpp
+++ b/noncore/settings/usermanager/passwd.cpp
@@ -51,6 +51,7 @@ char *Passwd::crypt_make_salt() {
51 return result; 51 return result;
52} 52}
53 53
54// opens the files /etc/passwd & /etc/group and loads the contents into passwdStringList & groupStringList
54bool Passwd::open() { 55bool Passwd::open() {
55 int returnvalue=false; 56 int returnvalue=false;
56 57
@@ -76,6 +77,7 @@ bool Passwd::open() {
76 return returnvalue; 77 return returnvalue;
77} 78}
78 79
80// Writes back the contents of passwdStringList to /etc/passwd & groupStringList to /etc/group
79bool Passwd::close() { 81bool Passwd::close() {
80 int returnvalue=false; 82 int returnvalue=false;
81 QFile passwd_file("/etc/passwd"); 83 QFile passwd_file("/etc/passwd");
@@ -98,6 +100,7 @@ bool Passwd::close() {
98 return returnvalue; 100 return returnvalue;
99} 101}
100 102
103// Splits a "passwd" line into the components and stores them in the pw_* variables.
101void Passwd::splitPasswdEntry(QString &userString) { 104void Passwd::splitPasswdEntry(QString &userString) {
102 userdataStringList=QStringList::split(":",userString,true); 105 userdataStringList=QStringList::split(":",userString,true);
103 QStringList::Iterator it=userdataStringList.begin(); 106 QStringList::Iterator it=userdataStringList.begin();
@@ -110,6 +113,7 @@ void Passwd::splitPasswdEntry(QString &userString) {
110 pw_shell=(*it++); 113 pw_shell=(*it++);
111} 114}
112 115
116// Splits a "group" line into the components and stores them in the gr_* variables.
113void Passwd::splitGroupEntry(QString &groupString) { 117void Passwd::splitGroupEntry(QString &groupString) {
114 groupdataStringList=QStringList::split(":",groupString,true); 118 groupdataStringList=QStringList::split(":",groupString,true);
115 QStringList::Iterator it=groupdataStringList.begin(); 119 QStringList::Iterator it=groupdataStringList.begin();
@@ -119,6 +123,7 @@ void Passwd::splitGroupEntry(QString &groupString) {
119 gr_mem=QStringList::split(" ",(*it++)); 123 gr_mem=QStringList::split(" ",(*it++));
120} 124}
121 125
126// Find a user in the passwdStringList. Return true if found and also fill the pw_* variables.
122bool Passwd::searchUser(QRegExp &userRegExp) { 127bool Passwd::searchUser(QRegExp &userRegExp) {
123 QStringList tempStringList(passwdStringList.grep(userRegExp)); 128 QStringList tempStringList(passwdStringList.grep(userRegExp));
124 if((tempStringList.isEmpty())) { 129 if((tempStringList.isEmpty())) {
@@ -130,16 +135,19 @@ bool Passwd::searchUser(QRegExp &userRegExp) {
130 return true; 135 return true;
131} 136}
132 137
138// Find a user by login.
133bool Passwd::findUser(const char *username) { 139bool Passwd::findUser(const char *username) {
134 QRegExp userRegExp(QString("^%1\\:").arg(username)); 140 QRegExp userRegExp(QString("^%1\\:").arg(username));
135 return searchUser(userRegExp); 141 return searchUser(userRegExp);
136} 142}
137 143
144// Find a user by uid.
138bool Passwd::findUser(int uid) { 145bool Passwd::findUser(int uid) {
139 QRegExp userRegExp(QString(":%1\\:").arg(uid)); 146 QRegExp userRegExp(QString(":%1\\:").arg(uid));
140 return searchUser(userRegExp); 147 return searchUser(userRegExp);
141} 148}
142 149
150// Add a user to the passwdStringList, create home directory, and optionally create a group for the user.
143bool Passwd::addUser(QString pw_name, QString pw_passwd, int pw_uid, int pw_gid, QString pw_gecos,QString pw_dir, QString pw_shell, bool createGroup) { 151bool Passwd::addUser(QString pw_name, QString pw_passwd, int pw_uid, int pw_gid, QString pw_gecos,QString pw_dir, QString pw_shell, bool createGroup) {
144 QString tempString; 152 QString tempString;
145 if((createGroup) && (!(findGroup(pw_gid)))) addGroup(pw_name,pw_gid); 153 if((createGroup) && (!(findGroup(pw_gid)))) addGroup(pw_name,pw_gid);
@@ -156,6 +164,7 @@ bool Passwd::addUser(QString pw_name, QString pw_passwd, int pw_uid, int pw_gid,
156 return 1; 164 return 1;
157} 165}
158 166
167// Update info for a user in passwdStringList, take info from the pw_* fields.
159bool Passwd::updateUser(QString login) { 168bool Passwd::updateUser(QString login) {
160 QRegExp userRegExp(QString("^%1\\:").arg(login)); 169 QRegExp userRegExp(QString("^%1\\:").arg(login));
161 for(QStringList::Iterator it=passwdStringList.begin(); it!=passwdStringList.end(); ++it) { 170 for(QStringList::Iterator it=passwdStringList.begin(); it!=passwdStringList.end(); ++it) {
@@ -167,6 +176,7 @@ bool Passwd::updateUser(QString login) {
167 return false; 176 return false;
168} 177}
169 178
179// Delete a user from passwdStringList.
170bool Passwd::deleteUser(QRegExp &userRegExp, bool delGroup) { 180bool Passwd::deleteUser(QRegExp &userRegExp, bool delGroup) {
171 for(QStringList::Iterator it=passwdStringList.begin(); it!=passwdStringList.end(); ++it) { 181 for(QStringList::Iterator it=passwdStringList.begin(); it!=passwdStringList.end(); ++it) {
172 if(userRegExp.find((*it),0)!=-1) { 182 if(userRegExp.find((*it),0)!=-1) {
@@ -179,16 +189,19 @@ bool Passwd::deleteUser(QRegExp &userRegExp, bool delGroup) {
179 return false; 189 return false;
180} 190}
181 191
192// Delete a user by login, and optionally also delete group.
182bool Passwd::delUser(const char *username, bool delGroup) { 193bool Passwd::delUser(const char *username, bool delGroup) {
183 QRegExp userRegExp(QString("^%1\\:").arg(username)); 194 QRegExp userRegExp(QString("^%1\\:").arg(username));
184 return deleteUser(userRegExp,delGroup); 195 return deleteUser(userRegExp,delGroup);
185} 196}
186 197
198// Delete a user by uid, and optionally also delete group.
187bool Passwd::delUser(int uid, bool delGroup) { 199bool Passwd::delUser(int uid, bool delGroup) {
188 QRegExp userRegExp(QString(":%1\\:").arg(uid)); 200 QRegExp userRegExp(QString(":%1\\:").arg(uid));
189 return deleteUser(userRegExp,delGroup); 201 return deleteUser(userRegExp,delGroup);
190} 202}
191 203
204// Locate a group in the groupStringList, fill out the gr_* variables and return "true" if found.
192bool Passwd::searchGroup(QRegExp &groupRegExp) { 205bool Passwd::searchGroup(QRegExp &groupRegExp) {
193 QStringList tempStringList(groupStringList.grep(groupRegExp)); 206 QStringList tempStringList(groupStringList.grep(groupRegExp));
194 if((tempStringList.isEmpty())) { 207 if((tempStringList.isEmpty())) {
@@ -200,16 +213,19 @@ bool Passwd::searchGroup(QRegExp &groupRegExp) {
200 return true; 213 return true;
201} 214}
202 215
216// Find a group by groupname.
203bool Passwd::findGroup(const char *groupname) { 217bool Passwd::findGroup(const char *groupname) {
204 QRegExp groupRegExp(QString("^%1\\:").arg(groupname)); 218 QRegExp groupRegExp(QString("^%1\\:").arg(groupname));
205 return searchGroup(groupRegExp); 219 return searchGroup(groupRegExp);
206} 220}
207 221
222// Find a group by gid.
208bool Passwd::findGroup(int gid) { 223bool Passwd::findGroup(int gid) {
209 QRegExp groupRegExp(QString(":%1\\:").arg(gid)); 224 QRegExp groupRegExp(QString(":%1\\:").arg(gid));
210 return searchGroup(groupRegExp); 225 return searchGroup(groupRegExp);
211} 226}
212 227
228// Add a group to groupStringList
213bool Passwd::addGroup(QString gr_name, int gr_gid) { 229bool Passwd::addGroup(QString gr_name, int gr_gid) {
214 QString tempString; 230 QString tempString;
215 tempString=gr_name+":*:"+QString::number(gr_gid)+":"; 231 tempString=gr_name+":*:"+QString::number(gr_gid)+":";
@@ -217,6 +233,7 @@ bool Passwd::addGroup(QString gr_name, int gr_gid) {
217 return 1; 233 return 1;
218} 234}
219 235
236// Update fields for a group in groupStringList, take info from the gr_* variables.
220bool Passwd::updateGroup(int gid) { 237bool Passwd::updateGroup(int gid) {
221 QRegExp groupRegExp(QString(":%1\\:").arg(QString::number(gid))); 238 QRegExp groupRegExp(QString(":%1\\:").arg(QString::number(gid)));
222 for(QStringList::Iterator it=groupStringList.begin(); it!=groupStringList.end(); ++it) { 239 for(QStringList::Iterator it=groupStringList.begin(); it!=groupStringList.end(); ++it) {
@@ -232,6 +249,7 @@ bool Passwd::updateGroup(int gid) {
232 return false; 249 return false;
233} 250}
234 251
252// Delete a group from groupStringList.
235bool Passwd::deleteGroup(QRegExp &groupRegExp) { 253bool Passwd::deleteGroup(QRegExp &groupRegExp) {
236 for(QStringList::Iterator it=groupStringList.begin(); it!=groupStringList.end(); ++it) { 254 for(QStringList::Iterator it=groupStringList.begin(); it!=groupStringList.end(); ++it) {
237 if(groupRegExp.find((*it),0)!=-1) { 255 if(groupRegExp.find((*it),0)!=-1) {
@@ -242,16 +260,19 @@ bool Passwd::deleteGroup(QRegExp &groupRegExp) {
242 return false; 260 return false;
243} 261}
244 262
263// Delete a group by groupname.
245bool Passwd::delGroup(const char *groupname) { 264bool Passwd::delGroup(const char *groupname) {
246 QRegExp groupRegExp(QString("^%1\\:").arg(groupname)); 265 QRegExp groupRegExp(QString("^%1\\:").arg(groupname));
247 return deleteGroup(groupRegExp); 266 return deleteGroup(groupRegExp);
248} 267}
249 268
269// Delete a group by gid.
250bool Passwd::delGroup(int gid) { 270bool Passwd::delGroup(int gid) {
251 QRegExp groupRegExp(QString(":%1\\:").arg(gid)); 271 QRegExp groupRegExp(QString(":%1\\:").arg(gid));
252 return deleteGroup(groupRegExp); 272 return deleteGroup(groupRegExp);
253} 273}
254 274
275// Add a user as a member to a group in groupStringList.
255bool Passwd::addGroupMember(QString groupname, QString member) { 276bool Passwd::addGroupMember(QString groupname, QString member) {
256 if(!(findGroup(groupname))) return false; 277 if(!(findGroup(groupname))) return false;
257 gr_mem << member; 278 gr_mem << member;
@@ -259,6 +280,7 @@ bool Passwd::addGroupMember(QString groupname, QString member) {
259 return true; 280 return true;
260} 281}
261 282
283// Delete a user as a groupmember from a group in groupStringList.
262bool Passwd::delGroupMember(QString groupname, QString member) { 284bool Passwd::delGroupMember(QString groupname, QString member) {
263 if(!(findGroup(groupname))) return false; 285 if(!(findGroup(groupname))) return false;
264 for(QStringList::Iterator it=gr_mem.begin(); it!=gr_mem.end(); ++it) { 286 for(QStringList::Iterator it=gr_mem.begin(); it!=gr_mem.end(); ++it) {
@@ -271,4 +293,5 @@ bool Passwd::delGroupMember(QString groupname, QString member) {
271 return true; 293 return true;
272} 294}
273 295
296// Global Object
274Passwd *accounts; 297Passwd *accounts;