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 stop(server): l.info("Stoping server instance...") l.info("ID: %s" % server.get('id')) l.info("Host: %s" % server.get('ip')) l.info("Port: %s" % server.get('port')) l.info("User: %s" % server.get('uid')) l.info("Group: %s" % server.get('gid')) l.info("Pid: %s" % server.get('pid')) pid = int(server.get('pid')) if pid > 0: try: os.kill(pid, 0) except: l.error("Process %d does not exists" % pid) return False os.kill(pid, 9) server.set('pid', 0) server.update() return True else: l.warning("Service not runing") return False
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 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 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 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 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 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 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 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 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 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 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()
def list(db, args, **kwargs): l.debug("List Servers") if __is_valid_iser__(): l.error("User %s does not have permission" % getpass.getuser()) return 1 srv = sql3.entity.Server(db.getConnection()) if 'users' in args and 'id' in args: l.debug("List users for server %s" % args['id']) srv.fetch(args['id']) if 'id' not in srv.data: l.error("Server %s not found" % str(args['id'])) return 1 for i in srv.getUsers(): user = sql3.entity.User(db.getConnection()) print user.fetch(i) return 1 if 'emails' in args and 'id' in args: l.debug("List email accounts for server %s" % args['id']) srv.fetch(args['id']) if 'id' not in srv.data: l.error("Server %s not found" % str(args['id'])) return 1 for i in srv.getEmailAccounts(): ea = sql3.entity.EmailAccount(db.getConnection()) print ea.fetch(i) return 1 for i in srv.all(): print i
return json.dumps({"success": True, "msg": quid}) @requires_auth def all(): pass try: l.info("Starting new instance of server ID = %s " % server.get('id')) server.set('pid', os.getpid()) server.update() app.run(threaded=False, host=server.get('ip'), port=int(server.get('port'))) except Exception: l.error("Error with server %s" % server.get('id')) raise def stop(server): l.info("Stoping server instance...") l.info("ID: %s" % server.get('id')) l.info("Host: %s" % server.get('ip')) l.info("Port: %s" % server.get('port')) l.info("User: %s" % server.get('uid')) l.info("Group: %s" % server.get('gid')) l.info("Pid: %s" % server.get('pid')) pid = int(server.get('pid')) if pid > 0:
"app_dir": app_dir, "app_file": os.path.basename(app_file), "_app_file": app_file, "module": args.module, "config": conf, "log": logging, "db_file": conf['sqlite3']['database'], "db": sql3.connection.Connection(conf['sqlite3']['database']), "args": app_modules.parse_custom_arguments(args.carg) if len(args.carg) > 0 else {}, } sql3.create_tables(conf['sqlite3']['database']) if not app_modules.module_exists("%s/modules/%s" % (app_dir, args.module)): l.error("Module %s does not exists" % args.module) quit() mod = app_modules.load_module(args.module) if hasattr(mod, args.action): method = getattr(mod, args.action) v = method(**options) if v is None: v = 0 sys.exit(int(v)) try: options['db'].close() except:
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)) else: l.error("Please pass correct path ") return 1