Package gozerbot :: Module dbusers
[hide private]
[frames] | no frames]

Source Code for Module gozerbot.dbusers

  1  # gozerbot/dbusers.py 
  2  # 
  3  # 
  4   
  5  """ bots users for mysql interface""" 
  6   
  7  __copyright__ = 'this file is in the public domain' 
  8   
  9  from gozerbot.generic import rlog 
 10  from gozerbot.db import db 
 11  import types 
 12   
13 -class Dbusers(object):
14 15 """ users class """ 16
17 - def __init__(self):
18 self.db = db
19
20 - def size(self):
21 """ return nr of users """ 22 result = self.db.execute(""" SELECT DISTINCT COUNT(*) FROM userhosts \ 23 """) 24 if result: 25 return result[0][0]
26
27 - def getperms(self, userhost):
28 """ return permission of user""" 29 name = self.getname(userhost) 30 if not name: 31 return ['ANON', ] 32 result = self.db.execute(""" SELECT perm FROM perms WHERE name = %s \ 33 """, name) 34 res = [] 35 for i in result: 36 res.append(i[0]) 37 return res
38
39 - def exist(self, name):
40 """ see if user with <name> exists """ 41 name = name.lower() 42 result = self.db.execute(""" SELECT name,userhost FROM userhosts WHERE \ 43 name = %s """, name) 44 return result
45
46 - def getname(self, userhost):
47 """ get name of user belonging to <userhost> """ 48 if not userhost: 49 rlog(10, 'dbusers', 'no userhost provided') 50 return 51 result = self.db.execute(""" SELECT name FROM userhosts WHERE \ 52 userhost LIKE %s """, userhost) 53 if result: 54 return result[0][0]
55
56 - def add(self, name, userhosts, perms):
57 """ add an user """ 58 if type(userhosts) != types.ListType: 59 rlog(10, 'dbusers', 'i need a list of userhosts') 60 return 0 61 for i in userhosts: 62 self.adduserhost(name, i) 63 for i in perms: 64 self.addperm(name, i) 65 rlog(10, 'users', '%s added to user database' % name) 66 return 1
67
68 - def adduserhost(self, name, userhost):
69 """ add userhost """ 70 name = name.lower() 71 res = None 72 result = self.db.execute(""" INSERT INTO userhosts(name, userhost) \ 73 values(%s, %s) """, (name, userhost)) 74 if result: 75 res = 1 76 rlog(10, 'users', '%s (%s) added to userhosts' % (name, userhost)) 77 return res
78
79 - def addperm(self, name, perm):
80 """ add permission """ 81 name = name.lower() 82 perm = perm.upper() 83 res = None 84 result = self.db.execute(""" INSERT INTO perms(name, perm) \ 85 values(%s, %s) """, (name, perm)) 86 if result: 87 res = 1 88 rlog(10, 'users', '%s perm %s added' % (name, perm)) 89 return res
90
91 - def delperm(self, name, perm):
92 """ add permission """ 93 name = name.lower() 94 perm = perm.upper() 95 result = self.db.execute(""" DELETE FROM perms WHERE name = %s AND \ 96 perm = %s """, (name, perm)) 97 if result: 98 rlog(10, 'users', '%s perm %s deleted' % (name, perm)) 99 return result
100
101 - def permitted(self, userhost, who, what):
102 """ check if (who,what) is in users permit list """ 103 name = self.getname(userhost) 104 res = None 105 if name: 106 result = self.db.execute(""" SELECT permit FROM permits WHERE \ 107 name = %s """, name) 108 if result: 109 for i in result: 110 if "%s %s" % (who, what) == i[0]: 111 res = 1 112 return res
113
114 - def names(self):
115 """ get names of all users """ 116 res = [] 117 result = self.db.execute(""" SELECT DISTINCT name FROM userhosts """) 118 if result: 119 for i in result: 120 res.append(i[0]) 121 return res
122
123 - def merge(self, name, userhost):
124 """ add userhosts to user with name """ 125 name = name.lower() 126 if not self.exist(name): 127 return 0 128 res = None 129 result = self.db.execute(""" INSERT INTO userhosts(userhost, name) \ 130 VALUES (%s, %s) """, (userhost, name)) 131 if result: 132 res = 1 133 return res
134
135 - def delete(self, name):
136 """ delete user with name """ 137 name = name.lower() 138 res = None 139 nr1 = self.db.execute(""" DELETE FROM userhosts WHERE name = %s \ 140 """, name) 141 nr2 = self.db.execute(""" DELETE FROM perms WHERE name = %s \ 142 """, name) 143 if nr1 and nr2: 144 res = 1 145 return res
146
147 - def status(self, userhost, status):
148 """ check if user with <userhost> has <status> set """ 149 name = self.getname(userhost) 150 res = None 151 if name: 152 status = status.upper() 153 result = self.db.execute(""" SELECT status FROM statuses WHERE \ 154 name = %s """, name) 155 if result: 156 for i in result: 157 if status == i[0]: 158 res = 1 159 return res
160
161 - def gotperm(self, name, perm):
162 """ check if user had permission """ 163 name = name.lower() 164 perm = perm.upper() 165 result = self.db.execute(""" SELECT perm FROM perms WHERE \ 166 name = %s """, name) 167 if result: 168 for i in result: 169 if i[0] == perm: 170 return True
171
172 - def gotstatus(self, name, status):
173 """ check if user has status """ 174 name = name.lower() 175 status = status.upper() 176 result = self.db.execute(""" SELECT status FROM statuses WHERE \ 177 name = %s """, name) 178 if result: 179 for i in result: 180 if status == i[0]: 181 return True
182
183 - def gotuserhost(self, name, userhost):
184 """ check if user has userhost """ 185 name = name.lower() 186 result = self.db.execute(""" SELECT userhost FROM userhosts WHERE \ 187 name = %s """, name) 188 if result: 189 for i in result: 190 if i[0] == userhost: 191 return True
192
193 - def gotpermit(self, name, permit):
194 """ check if user permits something """ 195 name = name.lower() 196 result = self.db.execute(""" SELECT permit FROM permits WHERE \ 197 name = %s """, name) 198 if result: 199 for i in result: 200 if "%s %s" % permit == i[0]: 201 return True
202
203 - def allowed(self, userhost, perms, log=True):
204 """ check if user with userhosts is allowed to execute perm command """ 205 if not type(perms) == types.ListType: 206 perms = [perms, ] 207 if 'ANY' in perms: 208 return 1 209 res = None 210 name = self.getname(userhost) 211 if not name: 212 if log: 213 rlog(10, 'users', '%s userhost denied' % userhost) 214 return res 215 result = self.db.execute(""" SELECT perm FROM perms WHERE \ 216 name = %s """, name) 217 if result: 218 for i in result: 219 if i[0] in perms: 220 res = 1 221 if not res: 222 if log: 223 rlog(10, 'users', "%s perm %s denied" % (userhost, perms)) 224 return res
225
226 - def getemail(self, name):
227 """ get email of user """ 228 name = name.lower() 229 email = None 230 email = self.db.execute(""" SELECT email FROM email WHERE name = %s \ 231 """, name) 232 if email: 233 return email[0][0]
234
235 - def setemail(self, name, email):
236 """ set email of user """ 237 res = 0 238 try: 239 result = self.db.execute(""" INSERT INTO email(name, email) \ 240 VALUES (%s, %s) """, (name, email)) 241 except: 242 try: 243 result = self.db.execute(""" UPDATE email SET email = %s \ 244 WHERE name = %s """, (email, name)) 245 except: 246 pass 247 if result: 248 res = 1 249 return res
250
251 - def addpermall(self, perm):
252 """ add permission to all users """ 253 perm = perm.upper() 254 for i in self.names(): 255 try: 256 self.addperm(i, perm) 257 except: 258 pass
259
260 - def delpermall(self, perm):
261 """ delete permission from all users """ 262 perm = perm.upper() 263 for i in self.names(): 264 try: 265 self.delperm(i, perm) 266 except: 267 pass
268