コード例 #1
0
def list_by_procinstid(db_host, db_user, db_passwd, db_name, tenant_id,
                       instance_id):
    conn = torch.connect(db_host, db_user, db_passwd, db_name)
    sql = ("SELECT ActivityID "
           "FROM flowcraft_execution "
           "WHERE TenantID = %s AND ProcInstID = %s ")
    return torch.query_with_param(conn, sql, (tenant_id, instance_id))
コード例 #2
0
ファイル: tasks.py プロジェクト: life-game-player/Hephaestus
def get(db_host, db_user, db_passwd, db_name, tenant_id, task_id):
    conn = torch.connect(db_host, db_user, db_passwd, db_name)
    sql = ("SELECT TaskID, Name, StartTime, EndTime, "
           "DeleteReason, Outcome "
           "FROM flowcraft_task "
           "WHERE TenantID = %s AND TaskID = %s ")
    return torch.query_with_param(conn, sql, (tenant_id, task_id))
コード例 #3
0
ファイル: users.py プロジェクト: life-game-player/Hephaestus
def get_by_name(db_host, db_user, db_passwd, username):
    conn = torch.connect(db_host, db_user, db_passwd, 'hephaestus')
    sql = ("SELECT `id`, `name`, dominated, `status`, "
           "created, modified, last_login "
           "FROM gods "
           "WHERE name = '{}'").format(username)
    return torch.query(conn, sql)
コード例 #4
0
def get_tenant_db(db_host, db_user, db_passwd, tenant_id):
    conn = torch.connect(db_host, db_user, db_passwd, 'yeeoffice-management')
    sql = ("SELECT DISTINCT map.DatabaseName AS tenant_db "
           "FROM merchant m "
           "INNER JOIN merchantdbmapping map "
           "ON m.MerchantID = map.MerchantID "
           "WHERE m.MerchantKey = {}".format(tenant_id))
    return torch.query(conn, sql)
コード例 #5
0
def test(host, user, passwd, db='mysql'):
    result = 0
    try:
        conn = torch.connect(host, user, passwd, db)
        conn.close()
    except Exception as e:
        result = 1
        logger.error("{} occured".format(type(e).__name__), exc_info=True)
    return result
コード例 #6
0
def find_duplicate(host, user, passwd, env, env_read_host, env_write_host):
    conn = torch.connect(host, user, passwd, 'hephaestus')
    sql = ("SELECT `name`, read_host, user, "
           "CBC_DECRYPT(guid, secret, vector) AS passwd "
           "FROM islands "
           "WHERE `name` = '{}' "
           "OR read_host = '{}' "
           "OR write_host = '{}' ").format(env, env_read_host, env_write_host)
    return torch.query(conn, sql)
コード例 #7
0
def get(
    db_host, db_user, db_passwd, db_name,
    tenant_id, instance_id
):
    conn = torch.connect(db_host, db_user, db_passwd, db_name)
    sql = (
        "SELECT ProcInstID, `Name`, Created, Modified, `Status`, "
        "`Comment`"
        "FROM flowcraft_procinst "
        "WHERE TenantID = %s AND ProcInstID = %s "
    )
    return torch.query_with_param(conn, sql, (tenant_id, instance_id))
コード例 #8
0
ファイル: users.py プロジェクト: life-game-player/Hephaestus
def create(db_host, db_user, db_passwd, username, passwd, permission_list):
    conn = torch.connect(db_host, db_user, db_passwd, 'hephaestus')
    sql = ("INSERT INTO gods(`name`, `secret`) " "VALUES(%s, SHA2(%s, 256))")
    result = torch.execute(conn, sql, (username, passwd))  # 添加用户
    if result == 0:
        new_user = get_by_name(db_host, db_user, db_passwd, username)
        if new_user and new_user[0]['id']:
            # 添加用户权限
            pl = []
            user_id = new_user[0]['id']
            for p in permission_list:
                if p['permission'] != 0:
                    pl.append((p['env'], user_id, p['permission']))
            conn = torch.connect(db_host, db_user, db_passwd, 'hephaestus')
            sql = ("INSERT INTO permission(island_name, god_id, access_level) "
                   "VALUES(%s, %s, %s)")
            return torch.execute_many(conn, sql, pl)
        else:
            return 1
    else:
        return 1
コード例 #9
0
def get_detail(db_host, db_user, db_passwd, tenant_id):
    conn = torch.connect(db_host, db_user, db_passwd, 'yeeoffice-management')
    sql = ("SELECT "
           "e.TenantID, m.MerchantName, m.Created, "
           "DATE_FORMAT(e.ExpireDate, '%Y-%m-%d') AS ExpireDate, "
           "(SELECT DISTINCT map.DatabaseName AS tenant_db "
           "FROM merchantdbmapping map "
           "WHERE map.MerchantID = m.MerchantID "
           ") AS tenant_db "
           "FROM yeeoffice_enterprise e "
           "INNER JOIN merchant m ON e.TenantID = m.MerchantKey "
           "WHERE TenantID = {}".format(tenant_id))
    return torch.query(conn, sql)
コード例 #10
0
def create(host, user, passwd, env, env_read_host, env_write_host, env_user,
           env_passwd):
    conn = torch.connect(host, user, passwd, 'hephaestus')
    guid = str(uuid.uuid4())
    vector = secrets.token_bytes(16)
    sql = ("INSERT INTO islands"
           "(name, read_host, write_host, user, secret, guid, vector) "
           "VALUES(%s, %s, %s, %s, "
           "CBC_ENCRYPT(%s, %s, _binary %s), "
           "%s, _binary %s)")
    return torch.execute(conn, sql,
                         (env, env_read_host, env_write_host, env_user, guid,
                          env_passwd, vector, guid, vector))
コード例 #11
0
def list(db_host, db_user, db_passwd, curr_user_id=None):
    conn = torch.connect(db_host, db_user, db_passwd, 'hephaestus')
    if curr_user_id:
        sql = ("SELECT `name` FROM islands i "
               "WHERE EXISTS(SELECT 1 "
               "FROM permission p "
               "WHERE i.name = p.island_name "
               "AND p.god_id = {} "
               "AND p.access_level >= 1) "
               "ORDER BY Created").format(curr_user_id)
    else:
        sql = "SELECT `name` FROM islands ORDER BY Created"
    return torch.query(conn, sql)
コード例 #12
0
def list_root_instances(
    db_host, db_user, db_passwd, db_name,
    tenant_id, applicationid
):
    conn = torch.connect(db_host, db_user, db_passwd, db_name)
    sql = (
        "SELECT ProcInstID, `Name`, Created, Modified, `Status`, "
        "`Comment`"
        "FROM flowcraft_procinst "
        "WHERE TenantID = %s AND ApplicationID = %s "
        "AND ParentInstID = 0 "
        "ORDER BY Created DESC"
    )
    return torch.query_with_param(conn, sql, (tenant_id, applicationid))
コード例 #13
0
def list_by_procinstid(
    db_host, db_user, db_passwd, db_name,
    tenant_id, procinstid
):
    conn = torch.connect(db_host, db_user, db_passwd, db_name)
    sql = (
        "SELECT ActivityID, PrevAcitivtyID AS PrevActivityID, `Name`, "
        "ExecutionID, ActivityDefID, ProcDefID, CallProcInstID, TaskID, "
        "ActivityType, `Status`, Created, Modified "
        "FROM flowcraft_activity "
        "WHERE TenantID = %s AND ProcInstID = %s "
        "ORDER BY ActivityID, Created"
    )
    return torch.query_with_param(conn, sql, (tenant_id, procinstid))
コード例 #14
0
def update(db_host, db_user, db_passwd, env, read_host, write_host, user,
           passwd):
    conn = torch.connect(db_host, db_user, db_passwd, 'hephaestus')
    guid = str(uuid.uuid4())
    vector = secrets.token_bytes(16)
    sql = ("UPDATE islands "
           "SET read_host = %s, "
           "write_host = %s, "
           "user = %s, "
           "secret = CBC_ENCRYPT(%s, %s, _binary %s), "
           "guid = %s, "
           "vector = _binary %s "
           "WHERE `name` = %s")
    return torch.execute(conn, sql,
                         (read_host if read_host else None, write_host, user,
                          guid, passwd, vector, guid, vector, env))
コード例 #15
0
def update_by_user(db_host, db_user, db_passwd, user_permisson, user_id):
    result = 0
    for up in user_permisson:
        conn = torch.connect(db_host, db_user, db_passwd, 'hephaestus')
        if up['permission']:
            sql = ("INSERT INTO permission VALUES("
                   "%s, %s, %s, NOW()"
                   ") ON DUPLICATE KEY UPDATE "
                   "access_level = %s")
            params = (up['env'], user_id, up['permission'], up['permission'])
        else:
            sql = ("DELETE FROM permission "
                   "WHERE island_name = %s AND god_id = %s")
            params = (up['env'], user_id)
        result += torch.execute(conn, sql, params)
    return result
コード例 #16
0
def create(host, user, passwd, module, operator, operation, result):
    """
        Operation:
            1: Create
            2: Modify
            3: Query
            4: Delete

        Result:
            0: Succeeded
            1: Failed
    """
    conn = torch.connect(host, user, passwd, 'hephaestus')
    list_sql = list()
    list_sql.append(
        "INSERT INTO mnemosyne(module, operator, operation, result) "
        "VALUES('{}', {}, {}, {})".format(module, operator, operation, result))
    torch.execute_list(conn, list_sql)
コード例 #17
0
def get(host, user, passwd, env, curr_user_id=None):
    conn = torch.connect(host, user, passwd, 'hephaestus')
    if curr_user_id:
        sql = ("SELECT i.`name`, i.read_host, i.user, "
               "CBC_DECRYPT(i.guid, i.secret, i.vector) AS passwd "
               "FROM islands i "
               "WHERE `name` = '{}' "
               "AND EXISTS(SELECT 1 "
               "FROM permission p "
               "WHERE i.name = p.island_name "
               "AND p.god_id = {} "
               "AND p.access_level >= 1) ").format(env, curr_user_id)
    else:
        sql = ("SELECT `name`, read_host, user, "
               "write_host, "
               "CBC_DECRYPT(guid, secret, vector) AS passwd "
               "FROM islands "
               "WHERE `name` = '{}' ").format(env)
    return torch.query(conn, sql)
コード例 #18
0
def list(db_host, db_user, db_passwd):
    conn = torch.connect(db_host, db_user, db_passwd, 'yeeoffice-management')
    sql = ("SELECT MerchantKey AS id, MerchantName AS `name` "
           "FROM merchant "
           "ORDER BY Created DESC")
    return torch.query(conn, sql)
コード例 #19
0
def delete(db_host, db_user, db_passwd, env):
    conn = torch.connect(db_host, db_user, db_passwd, 'hephaestus')
    sql = "DELETE FROM islands WHERE `name` = %s"
    return torch.execute(conn, sql, (env, ))
コード例 #20
0
def update_name(db_host, db_user, db_passwd, env, new_env):
    conn = torch.connect(db_host, db_user, db_passwd, 'hephaestus')
    sql = "UPDATE islands SET `name` = %s WHERE `name` = %s"
    return torch.execute(conn, sql, (new_env, env))
コード例 #21
0
ファイル: users.py プロジェクト: life-game-player/Hephaestus
def update_name(db_host, db_user, db_passwd, user_id, new_name):
    conn = torch.connect(db_host, db_user, db_passwd, 'hephaestus')
    sql = ("UPDATE gods SET name = %s " "WHERE id = %s")
    return torch.execute(conn, sql, (new_name, user_id))
コード例 #22
0
ファイル: users.py プロジェクト: life-game-player/Hephaestus
def update_passwd(db_host, db_user, db_passwd, user_id, passwd):
    conn = torch.connect(db_host, db_user, db_passwd, 'hephaestus')
    sql = ("UPDATE gods SET secret = SHA2(%s, 256) " "WHERE id = %s")
    return torch.execute(conn, sql, (passwd, user_id))
コード例 #23
0
ファイル: users.py プロジェクト: life-game-player/Hephaestus
def delete(db_host, db_user, db_passwd, user_id):
    conn = torch.connect(db_host, db_user, db_passwd, 'hephaestus')
    sql = ("DELETE FROM gods WHERE id = %s")
    return torch.execute(conn, sql, (user_id, ))
コード例 #24
0
ファイル: users.py プロジェクト: life-game-player/Hephaestus
def update_user_status(db_host, db_user, db_passwd, user_status, user_id):
    conn = torch.connect(db_host, db_user, db_passwd, 'hephaestus')
    sql = ("UPDATE gods SET `status` = %s " "WHERE id = %s")
    return torch.execute(conn, sql, (user_status, user_id))
コード例 #25
0
ファイル: users.py プロジェクト: life-game-player/Hephaestus
def list(db_host, db_user, db_passwd):
    conn = torch.connect(db_host, db_user, db_passwd, 'hephaestus')
    sql = ("SELECT id, `name`, dominated FROM gods " "WHERE dominated = FALSE")
    return torch.query(conn, sql)
コード例 #26
0
ファイル: users.py プロジェクト: life-game-player/Hephaestus
def login(db_host, db_user, db_passwd, user, passwd):
    conn = torch.connect(db_host, db_user, db_passwd, 'hephaestus')
    sql = ("CALL login('{}', '{}')").format(user, passwd)
    result, resultset = torch.call_proc_with_resultset(conn, sql)
    return resultset[0] if resultset else None
コード例 #27
0
ファイル: users.py プロジェクト: life-game-player/Hephaestus
def find_duplicate(db_host, db_user, db_passwd, username):
    conn = torch.connect(db_host, db_user, db_passwd, 'hephaestus')
    sql = "SELECT `name` FROM gods WHERE `name` = '{}'".format(username)
    return torch.query(conn, sql)
コード例 #28
0
def get_by_user(db_host, db_user, db_passwd, user_id):
    conn = torch.connect(db_host, db_user, db_passwd, 'hephaestus')
    sql = ("SELECT island_name, access_level "
           "FROM permission "
           "WHERE god_id = {}").format(user_id)
    return torch.query(conn, sql)
コード例 #29
0
def reset_option():
    global special
    special = input('欢迎回到您的世界!\n')


print(datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
print('准备点燃火山...')
host = input('请指定火山位置(默认为本地): ') or 'localhost'
user = input('以谁的名义点燃? ')
passwd = getpass.getpass('出示您的密令: ')

lighted, message = torch.light_up(host, user, passwd)
if lighted:
    print('尊者! 火山已为您点燃!')
    conn = torch.connect(
        host, user, passwd, 'information_schema'
    )
    if torch.seek_hera(conn):
        special = None
        thread_reset_option = threading.Thread(
            target=reset_option
        )
        thread_reset_option.daemon = True
        thread_reset_option.start()
        thread_reset_option.join(6)  # 等待用户输入(10秒)
        if special == 'Hera':
            while True:
                passwd1 = getpass.getpass('请重置主宰的密令: ')
                passwd2 = getpass.getpass('请再次确认您的密令: ')
                if passwd1 == passwd2:
                    try: