Exemple #1
0
 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
Exemple #2
0
 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();
Exemple #3
0
 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();
Exemple #4
0
 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();
Exemple #5
0
 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();
Exemple #6
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))
Exemple #7
0
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'))
Exemple #8
0
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'))
Exemple #9
0
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'])
Exemple #10
0
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))
Exemple #11
0
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
Exemple #12
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() 
Exemple #13
0
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()
Exemple #14
0
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()
Exemple #15
0
 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
Exemple #16
0
    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
Exemple #17
0
 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
Exemple #18
0
 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
Exemple #19
0
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()
Exemple #20
0
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()
Exemple #21
0
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
Exemple #22
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();
Exemple #23
0
 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();
Exemple #24
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()
Exemple #25
0
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()
Exemple #26
0
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
Exemple #27
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
Exemple #28
0
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)
Exemple #29
0
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))
Exemple #30
0
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()