%PDF-1.5 %���� ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµù Õ5sLOšuY donat Was Here
donatShell
Server IP : 188.40.95.74  /  Your IP : 216.73.216.205
Web Server : Apache
System : Linux cp01.striminghost.net 3.10.0-1160.119.1.el7.tuxcare.els13.x86_64 #1 SMP Fri Nov 22 06:29:45 UTC 2024 x86_64
User : vlasotin ( 1054)
PHP Version : 5.6.40
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/lib/python2.7/site-packages/leapp/utils/audit/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME SHELL ]     

Current File : /usr/lib/python2.7/site-packages/leapp/utils/audit/contextclone.py
from leapp.utils.audit import dict_factory, get_connection


def _fetch_table_for_context(db, table, context):
    cursor = db.execute('''
            SELECT * FROM {table} WHERE context = ?
        '''.format(table=table), (context,))
    cursor.row_factory = dict_factory
    while True:
        row = cursor.fetchone()
        if not row:
            break
        yield row
    del cursor


def _row_tuple(row, *fields):
    return tuple(row[name] for name in fields or row.keys())


def _dup_host(db, newcontext, oldcontext):
    lookup = {}
    for row in _fetch_table_for_context(db, 'host', oldcontext):
        # id, context, hostname
        row_id, hostname = _row_tuple(row, 'id', 'hostname')
        cursor = db.execute('INSERT INTO host (context, hostname) VALUES(?, ?)',
                            (newcontext, hostname))
        lookup[row_id] = cursor.lastrowid
    return lookup


def _dup_data_source(db, host, newcontext, oldcontext):
    lookup = {}
    for row in _fetch_table_for_context(db, 'data_source', oldcontext):
        # id, context, hostname
        row_id, host_id, actor, phase = _row_tuple(row, 'id', 'host_id', 'actor', 'phase')
        cursor = db.execute('INSERT INTO data_source (context, host_id, actor, phase) VALUES(?, ?, ?, ?)',
                            (newcontext, host[host_id], actor, phase))
        lookup[row_id] = cursor.lastrowid
    return lookup


def _dup_message(db, data_source, newcontext, oldcontext):
    lookup = {}
    for row in _fetch_table_for_context(db, 'message', oldcontext):
        # id, context, data_source_id, stamp, topic, type, message_data_hash
        row_id, data_source_id, stamp, topic, type_, message_data_hash = _row_tuple(
            row, 'id', 'data_source_id', 'stamp', 'topic', 'type', 'message_data_hash')
        cursor = db.execute(
            'INSERT INTO message (context, data_source_id, stamp, topic, type, message_data_hash) '
            ' VALUES(?, ?, ?, ?, ?, ?)',
            (newcontext, data_source[data_source_id], stamp, topic, type_, message_data_hash))
        lookup[row_id] = cursor.lastrowid
    return lookup


def _dup_audit(db, message, data_source, newcontext, oldcontext):
    lookup = {}
    for row in _fetch_table_for_context(db, 'audit', oldcontext):
        # id, context, event, stamp, data_source_id, message_id, data
        row_id, event, stamp, data_source_id, message_id, data = _row_tuple(
            row, 'id', 'event', 'stamp', 'data_source_id', 'message_id', 'data')
        if message_id is not None:
            message_id = message[message_id]

        cursor = db.execute(
            'INSERT INTO audit (context, event, stamp, data_source_id, message_id, data) VALUES(?, ?, ?, ?, ?, ?)',
            (newcontext, event, stamp, data_source[data_source_id], message_id, data))
        lookup[row_id] = cursor.lastrowid
    return lookup


def _dup_entity(db, newcontext, oldcontext):
    for row in _fetch_table_for_context(db, 'entity', oldcontext):
        # id context kind name metadata_hash
        row_id, kind, name, metadata_hash = _row_tuple(row, 'id', 'kind', 'name', 'metadata_hash')

        db.execute(
            'INSERT INTO entity (context, kind, name, metadata_hash) VALUES(?, ?, ?, ?)',
            (newcontext, kind, name, metadata_hash))


def _dup_dialog(db, data_source, newcontext, oldcontext):
    for row in _fetch_table_for_context(db, 'dialog', oldcontext):
        # id context scope data data_source_id
        row_id, scope, data, data_source_id = _row_tuple(row, 'id', 'scope', 'data', 'data_source_id')

        db.execute(
            'INSERT INTO dialog (context, scope, data, data_source_id) VALUES(?, ?, ?, ?)',
            (newcontext, scope, data, data_source[data_source_id]))


def clone_context(oldcontext, newcontext, use_db=None):
    # Enter transaction - In case of any exception automatic rollback is issued
    # and it is automatically committed if there was no exception
    with get_connection(use_db) as db:
        # First clone host entries
        host = _dup_host(db=db, newcontext=newcontext, oldcontext=oldcontext)
        # Next clone data_source entries and use the lookup table generated by the host duplication
        data_source = _dup_data_source(db=db, host=host, newcontext=newcontext, oldcontext=oldcontext)
        # Next clone message entries and use the lookup table generated by the data_source duplication
        message = _dup_message(db=db, data_source=data_source, newcontext=newcontext, oldcontext=oldcontext)
        # Last clone message entries and use the lookup table generated by the data_source and message duplications
        _dup_audit(db=db, data_source=data_source, message=message, newcontext=newcontext, oldcontext=oldcontext)
        _dup_entity(db=db, oldcontext=oldcontext, newcontext=newcontext)
        _dup_dialog(db=db, data_source=data_source, oldcontext=oldcontext, newcontext=newcontext)

Anon7 - 2022
AnonSec Team