def getLastInsertId(self): c = self.con.cursor() l.debug("SELECT last_insert_rowid() as id") c.execute("SELECT last_insert_rowid() as id") u = c.fetchone() c.close() return u['id'] if 'id' in u else None
def addEmailAccount(self, email): c = self.con.cursor() l.debug("INSERT INTO %s (email_id, server_id) VALUES ( ?, ?) " % 'email_to_server') l.debug([str(email), str(self.get('id'))]) c.execute("INSERT INTO %s (email_id, server_id) VALUES ( ?, ?) " % 'email_to_server', (str(email), str(self.get('id')))) self.con.commit() c.close();
def removeUser(self, user): c = self.con.cursor() l.debug("DELETE FROM %s WHERE user_id = ? AND server_id = ? " % 'user_to_server') l.debug([str(user), str(self.get('id'))]) c.execute("DELETE FROM %s WHERE user_id = ? AND server_id = ? " % 'user_to_server', (str(user), str(self.get('id')))) self.con.commit() c.close();
def addUser(self, user): c = self.con.cursor() l.debug("INSERT INTO %s (user_id, server_id) VALUES ( ?, ?) " % 'user_to_server') l.debug([str(user), str(self.get('id'))]) c.execute("INSERT INTO %s (user_id, server_id) VALUES ( ?, ?) " % 'user_to_server', (str(user), str(self.get('id')))) self.con.commit() c.close();
def removeEmailAccount(self, email): c = self.con.cursor() l.debug("DELETE FROM %s WHERE email_id = ? AND server_id = ? " % 'email_to_server') l.debug([str(email), str(self.get('id'))]) c.execute("DELETE FROM %s WHERE email_id = ? AND server_id = ? " % 'email_to_server', (str(email), str(self.get('id')))) self.con.commit() c.close();
def load(args, db, config, **kwargs): if not os.path.isdir("%s/custom" % config['storage_folder']): os.makedirs("%s/custom" % config['storage_folder']) if not os.path.isdir("%s/custom" % config['storage_folder']): l.error("Directory does not exists") return 1 if ('file' in args) and (os.path.isfile(args['file'])): validator = None ejson = None with open(args['file']) as f: ejson = json.load(f) validator = cmailer.validateJSON(ejson) if validator is None: l.error("Unable to load json from file") return 1 try: l.debug("validate check") validator.doCheck() newfile = "%s/custom/%s.json" % (config['storage_folder'], str(uuid.uuid4())) with open(newfile, 'w') as fw: fw.write(json.dumps(ejson)) q = sql3.entity.Queque(db.getConnection()) q.set('path', newfile) q.save() except Exception, e: l.error(str(e))
def adduser(db, args, **kwargs): l.debug("Add user to server") if 'user' not in args: l.error("User id not provided") return 1 if 'server' not in args: l.error("Server id not provided") return 1 user = sql3.entity.User(db.getConnection()) user.fetch(args['user']) if 'id' not in user.data: l.error("User %s not found" % args['user']) return 1 server = sql3.entity.Server(db.getConnection()) server.fetch(args['server']) if 'id' not in server.data: l.error("Server %s not found" % args['server']) return 1 server.addUser(user.get('id'))
def removeemail(db, args, **kwargs): l.debug("Remove email from server ") if 'email' not in args: l.error("Email id not provided") return 1 if 'server' not in args: l.error("Server id not provided") return 1 user = sql3.entity.EmailAccount(db.getConnection()) user.fetch(args['email']) if 'id' not in user.data: l.error("User %s not found" % args['user']) return 1 server = sql3.entity.Server(db.getConnection()) server.fetch(args['server']) if 'id' not in server.data: l.error("Server %s not found" % args['server']) return 1 server.removeEmailAccount(user.get('id'))
def restart(db, db_file, args, config, **kwargs): l.debug("Restart server instance ") l.debug(args) if __is_valid_iser__(): l.error("User %s does not have permission" % getpass.getuser()) return 1 server = sql3.entity.Server(db.getConnection()) server.fetch(args['id']) if 'id' not in server.data: l.error("Server Instance not found") return 2 if int(server.get('pid')) <= 0: l.error("Server not running.") return 3 import server as s s.restart(server, db_file) s.stop(server) time.sleep(3) pid = os.fork() if pid == 0: s.run(server, db_file, config['storage_folder'])
def resend(db, args, **kwargs): l.debug("Load queque") l.debug(args) if 'id' not in args: l.error("Id for queque not found") return 1 q = sql3.entity.Queque(db.getConnection()) q.fetch(args['id']) if 'id' not in q.data: l.error("Queque does not exists") return 2 u = cmailer.load(q.get('path')) acc = sql3.entity.EmailAccount(db.getConnection()) acc.data = acc.fetchBy('email', u['from']) if 'id' not in acc.data: l.error("Unable to find email %s" % u['from']) try : cmailer.sendEmail(u, acc, q) except Exception, e: l.error("Error in queque") l.error(str(e))
def start(db, db_file, args, config, **kwargs): l.debug("Start server instance") l.debug(args) if __is_valid_iser__(): l.error("User %s does not have permission" % getpass.getuser()) return 1 if 'id' not in args: l.error("Please provide server id") return 1 server = sql3.entity.Server(db.getConnection()) server.fetch(args['id']) if 'id' not in server.data: l.error("Server Instance not found") return 2 if int(server.get('pid')) > 0: l.error("Server already running PID=%s" % server.get('pid')) return 3 pid = os.fork() if pid == 0: from .server import run run(server, db_file, config['storage_folder']) return 0
def allWaitingWithLimit(self, limit=10): c = self.con.cursor(); if not isinstance(limit, int): raise Exception("Limit must be integer") l.debug("SELECT * FROM %s WHERE error IS NULL AND done IS NULL LIMIT %d" % (self.get_table_name(), limit)) c.execute("SELECT * FROM %s WHERE error IS NULL AND done IS NULL LIMIT %d" % (self.get_table_name(), limit)) return c.fetchall()
def remove(db, args, **kwargs): l.debug("Remove user") l.debug(args) if 'id' not in args: l.error("Id for user not found") return 1 user = sql3.entity.User(db.getConnection()) user.delete()
def remove(db, args, **kwargs): l.debug("Remove queque") l.debug(args) if 'id' not in args: l.error("Id for queque not found") return 1 q = sql3.entity.Queque(db.getConnection()); q.fetch(args['id']) q.delete()
def fetchBy(self, name, val): c = self.con.cursor() l.debug("SELECT * FROM %s WHERE %s = ?" % (self.get_table_name(), name)) l.debug("%s = %s" % (name, val)) c.execute("SELECT * FROM %s WHERE %s = ?" % (self.get_table_name(), name), (val,)) u= c.fetchone() if u is None: u = {} c.close(); return u
def flush_to_file(self, data): unique_filename = "%s.json" % str(uuid.uuid4()) file_loc = "%s/%s" % (self.get_server_location(), unique_filename) l.debug("flush to file %s" % file_loc) with open(file_loc, "w") as f: f.write(data) return file_loc
def delete(self, id=None): if id is None: id = self.get('id') c = self.con.cursor() l.debug("DELETE FROM %s WHERE id = %d" % (self.get_table_name(), int(id))) l.debug("id = %d" % int(id)) c.execute("DELETE FROM %s WHERE id = %d" % (self.get_table_name(), int(id))) self.data = c.fetchone() c.close(); self.con.commit() return self.data
def getEmailAccounts(self): c = self.con.cursor() l.debug("SELECT email_id FROM %s WHERE server_id = ? " % 'email_to_server') l.debug(str(self.get('id'))) c.execute("SELECT email_id FROM %s WHERE server_id = ? " % 'email_to_server', str(self.get('id'))) users = [] for i in c.fetchall(): users.append(i['email_id']) c.close(); return users
def remove(db, args, **kwargs): l.debug("Remove server") l.debug(args) if __is_valid_iser__(): l.error("User %s does not have permission" % getpass.getuser()) return 1 if 'id' not in args: l.error("Id for user not found") return 1 user = sql3.entity.Server(db.getConnection()) user.delete()
def add(db, args, **kwargs): l.debug("Add queque") l.debug(args) if len(args) == 0: print "No arguments." return 0 q = sql3.entity.Queque(db.getConnection()) for key, val in args.items(): q.set(key, val); q.save()
def add(db, args, **kwargs): l.debug("Add user") l.debug(args) if len(args) == 0: print "No arguments." return 0 user = sql3.entity.User(db.getConnection()) for key, val in args.items(): user.set(key, val) user.save() return 0
def save(self): q = "INSERT INTO %s " % self.get_table_name() param = () columns = "" values = "" for name, value in self.data.items(): columns = "%s, %s" % (columns, name) values = "%s, ?" % values param = param + (value,) c = self.con.cursor() l.debug("%s (%s) VALUES (%s)" % (q, columns[2:], values[2:])) l.debug(str(param)) c.execute("%s (%s) VALUES (%s)" % (q, columns[2:], values[2:]), param) self.con.commit() c.close();
def update(self): q = "UPDATE %s SET " % self.get_table_name() up = "" param = () for name, value in self.data.items(): up = "%s, %s = ?" % (up, name) param = param + (value,) param = param + (self.data['id'],) c = self.con.cursor() #debug l.debug("%s %s WHERE id = ?" % (q, up[2:])) l.debug(str(param)) c.execute("%s %s WHERE id = ?" % (q, up[2:]), param) self.con.commit() c.close();
def update(db, args, **kwargs): l.debug("Update queque") l.debug(args) if 'id' not in args: l.error("Id for queque not found") return 1 q = sql3.entity.Queque(db.getConnection()) q.fetch(args['id']) if 'id' not in user.data: l.error("Queque does not exists") return 2 for key, val in args.items(): q.set(key, val); q.update()
def update(db, args, **kwargs): l.debug("Update user") l.debug(args) if 'id' not in args: l.error("Id for user not found") return 1 user = sql3.entity.User(db.getConnection()) user.fetch(args['id']) if 'id' not in user.data: print "User does not exists" return 2 for key, val in args.items(): user.set(key, val) user.update()
def add(db, args, **kwargs): l.debug("Add server") l.debug(args) if __is_valid_iser__(): l.error("User %s does not have permission" % getpass.getuser()) return 1 if len(args) == 0: l.error("No arguments.") return 0 user = sql3.entity.Server(db.getConnection()) for key, val in args.items(): user.set(key, val) user.save() return 0
def list(db, args, **kwargs): l.debug("List queques") q = sql3.entity.Queque(db.getConnection()) if 'failed' in args: for i in q.allFailed(): print i return if 'done' in args: for i in q.allDone(): print i return if 'waiting' in args: for i in q.allWaiting(): print i return for i in q.all(): print i
def stop(db, args, **kwargs): l.debug("Stop server instance") l.debug(args) if __is_valid_iser__(): l.error("User %s does not have permission" % getpass.getuser()) return 1 server = sql3.entity.Server(db.getConnection()) server.fetch(args['id']) if 'id' not in server.data: l.error("Server Instance not found") return 2 if int(server.get('pid')) <= 0: l.error("Server not running.") return 3 from .server import stop stop(server)
def sendwaiting(db, **kwargs): l.debug("Send waiting emails in queque") q = sql3.entity.Queque(db.getConnection()) for i in q.allWaitingWithLimit(): tmpq = sql3.entity.Queque(db.getConnection()) tmpq.fetch(i['id']) if 'id' not in tmpq.data: l.error("Unable to find queque") l.error(str(i)) continue u = cmailer.load(tmpq.get('path')) acc = sql3.entity.EmailAccount(db.getConnection()) acc.data = acc.fetchBy('email', u['from']) if 'id' not in acc.data: l.error("Unable to find email %s" % u['from']) try : l.debug("Send email ") l.debug(str(i)) cmailer.sendEmail(u, acc, tmpq) except Exception, e: l.error("Error in queque") l.error(str(e))
def update(db, args, **kwargs): l.debug("Update user") l.debug(args) if __is_valid_iser__(): l.error("User %s does not have permission" % getpass.getuser()) return 1 if 'id' not in args: l.error("Id for user not found") return 1 user = sql3.entity.Server(db.getConnection()) user.fetch(args['id']) if 'id' not in user.data: l.error("User does not exists") return 2 for key, val in args.items(): user.set(key, val) user.update()