netman and userman throws exceptions and other bugfixes.
diff --git a/userman.py b/userman.py
old mode 100755
new mode 100644
index 0488d10..f0042bd
--- a/userman.py
+++ b/userman.py
@@ -61,23 +61,23 @@
@dbus.service.method(INTF_NAME, "s", "x")
def GroupAddUsr (self, groupname):
- if not groupname : return 1
+ if not groupname : raise ValueError("Invalid Groupname")
groups = self.GroupListAll ()
- if groupname in groups: return 1
+ if groupname in groups: raise ValueError("Group ", groupname, " Exists")
r = call (["addgroup", groupname])
return r
- @dbus.service.method(INTF_NAME, "s", "x")
+ #@dbus.service.method(INTF_NAME, "s", "x")
def GroupAddSys (self, groupname):
- if not groupname : return 1
+ if not groupname : raise ValueError("Invalid Groupname")
groups = self.GroupListAll ()
- if groupname in groups: return 1
+ if groupname in groups: raise ValueError("Group ", groupname, " Exists")
r = call (["addgroup", "-S", groupname])
- return 0
+ return r
@dbus.service.method(INTF_NAME, "", "as")
def GroupListUsr (self):
@@ -121,10 +121,10 @@
@dbus.service.method(INTF_NAME, "", "x")
def GroupDel (self, groupname):
- if not groupname : return 1
+ if not groupname : raise ValueError("Invalid Groupname")
groups = Groupsobj.GroupListAll ()
- if groupname not in groups: return 1
+ if groupname not in groups: raise ValueError("No such Group: ", groupname)
r = call (["delgroup", groupname])
return r
@@ -144,14 +144,14 @@
@dbus.service.method(INTF_NAME, "ssss", "x")
def UserAdd (self, gecos, username, groupname, passwd):
- if not username: return 1
+ if not username : raise ValueError("Invalid Username")
- users = self.UserList ()
- if username in users : return 1
+ users = self.UserListAll ()
+ if username in users : raise ValueError("User ", username, " Exists")
if groupname:
groups = Groupsobj.GroupListAll ()
- if groupname not in groups: return 1
+ if groupname not in groups: raise ValueError("No such Group: ", groupname)
opts = ""
if gecos: opts = " -g " + '"' + gecos + '"'
@@ -167,8 +167,8 @@
proc.expect (['New password: ', 'Retype password: '])
proc.sendline (passwd)
- proc.wait()
- return 0
+ r = proc.wait()
+ return r
@dbus.service.method(INTF_NAME, "", "as")
def UserList (self):
@@ -180,6 +180,14 @@
userList.append(userParams[0])
return userList
+ def UserListAll (self):
+ userList = []
+ with open("/etc/passwd", "r") as f:
+ for usent in f:
+ userParams = usent.split (":")
+ userList.append(userParams[0])
+ return userList
+
class UserManUser (dbus.service.Object):
def __init__(self, bus, name):
self.bus = bus
@@ -195,20 +203,20 @@
@dbus.service.method(INTF_NAME, "s", "x")
def UserDel (self, username):
- if not username : return 1
+ if not username : raise ValueError("Invalid Username")
users = Usersobj.UserList ()
- if username not in users : return 1
+ if username not in users : raise ValueError("No such User: ", username)
r = call (["deluser", username])
return r
@dbus.service.method(INTF_NAME, "ss", "x")
def Passwd (self, username, passwd):
- if not username : return 1
+ if not username : raise ValueError("Invalid Username")
users = Usersobj.UserList ()
- if username not in users : return 1
+ if username not in users : raise ValueError("No such User: ", username)
cmd = "passwd" + " " + username
proc = pexpect.spawn (cmd)