Пример #1
0
def worker(url, agent, vmhost, residential=False):
    # Only useful when testing outside of Docker; Can be removed later
    utils.kill_old_processes('chrome', age=config.OBSOLETE_PROCESS_AGE)
    utils.delete_old_files(config.CHROME_BINARY_PATH, 'jsgraph.log',
                           config.OBSOLETE_PROCESS_AGE)

    print "%s started. Domain: %s; Agent: %s" % (os.getpid(), url, agent)
    tabs_opened = 0
    log_id = "_".join((vmhost, socket.gethostname(), us_timestamp_str()))
    error = False
    adminer = None
    try:
        adminer = ad_miner.AdMiner(start_url=url,
                                   log_id=log_id,
                                   agent_name=agent)
        tabs_opened = run_adminer(adminer)
    except Exception as e:
        error = True
        print "Got exception: for %s" % (os.getpid())
        print e
        #import ipdb; ipdb.set_trace()
        if adminer is not None:
            utils.kill_processes_by_cmdline(
                'chrome', adminer.log_id
            )  # Kill relevant chrome and chromedriver processes
            adminer.cleanup()
        print "Killed browser for a broken session: %s" % (log_id, )
    # print "tabs opened:", tabs_opened
    ads_opened = 0
    if adminer is not None:
        tabs_opened = adminer.bi.overall_tabs_opened
        log_id = adminer.log_id
        logger = logging.getLogger(log_id)
        logger.info("END OF CRAWLER LOGS")
        ad_objects = log_parser.process_session(log_id, logger)
        if ad_objects is not None:
            ads_opened = len(
                [x for x in ad_objects if len(x.redirections) > 0])

    # Sending logs:
    if ads_opened > 0:
        ship_logs(log_id, residential=residential)

    print "**************NUMBER OF TABS OPENED HERE: %s*************" % (
        tabs_opened, )
    print "**************URL: %s, AGENT: %s, Log ID: %s*************" % (
        url, agent, log_id)
    downloads_path = os.path.join(config.MAIN_LOG_PATH, config.DOWNLOADS_DIR)
    print "******* DOWNLOADS seen:", os.listdir(downloads_path)

    return {
        "log_id": log_id,
        "tabs_opened": tabs_opened,
        "error": error,
        "ads_opened": ads_opened
    }
Пример #2
0
def worker(url, agent, vmhost):
    # Only useful when testing outside of Docker; Can be removed later
    utils.kill_old_processes('chrome', age=config.OBSOLETE_PROCESS_AGE)
    utils.delete_old_files(config.CHROME_BINARY_PATH, 'jsgraph.log',
                           config.OBSOLETE_PROCESS_AGE)
    print "%s started. Domain: %s; Agent: %s" % (os.getpid(), url, agent)
    tabs_opened = 0
    log_id = "_".join((vmhost, socket.gethostname(), us_timestamp_str()))
    error = False
    adminer = None
    try:
        adminer = ad_miner.AdMiner(start_url=url,
                                   log_id=log_id,
                                   agent_name=agent)
        tabs_opened = run_adminer(adminer)
    except Exception as e:
        error = True
        print "Got exception: for %s" % (os.getpid())
        print e
        #import ipdb; ipdb.set_trace()
        if adminer is not None:
            utils.kill_processes_by_cmdline(
                'chrome', adminer.log_id
            )  # Kill relevant chrome and chromedriver processes
            adminer.cleanup()
        print "Killed browser for a broken session: %s" % (log_id, )
    image_hash, loaded_url, downloaded_files = get_milking_return_data(log_id)
    file_hashes = get_downloaded_files_list()
    loaded_sld = ""
    if loaded_url:
        ext = tldextract.extract(loaded_url)
        loaded_sld = '.'.join(part for part in ext if part)
    # Sending logs:
    ship_logs(log_id, milking=True)
    return {
        "log_id": log_id,
        "error": error,
        "image_hash": image_hash,
        "loaded_url": loaded_url,
        "loaded_sld": loaded_sld,
        "downloaded_files": downloaded_files,
        "file_hashes": file_hashes
    }
Пример #3
0
def publish_recent(src, dst, ext=".exe", keep_n_recent=KEEP_N_RECENT_FILES):
    """
    Copy most recent file with 'ext' extension from src directory to dst directory

    :param src: source directory
    :param dst: destination directory
    :param ext: file extension to be copied
    :param keep_n_recent: indicates max number of files to keep, deletes oldest (if n > 0)
    :return: void
    """
    print "\n>>> Looking for most recent \'%s\' file in \'%s\'\n" % (ext, src)
    lst_files = utils.get_files(src, ext)
    if not lst_files:
        print "\t No such file found, aborting."
        return

    latest_version = os.path.basename(max(lst_files, key=os.path.getctime))
    print "\t Latest version available: \'%s\'\n" % latest_version

    publish(os.path.join(src, latest_version), dst)
    utils.delete_old_files(dst, ext, keep_n_recent)
    utils.delete_old_files(src, ext, keep_n_recent)
Пример #4
0
    def backup(self):
        try:

            column_value = {
                'name': socket.gethostname(),
                'percents_completed': 0,
                'status': 1,
                'start_backup_datetime': 'now()',
                'finish_backup_datetime': 'NULL'
            }
            self.pk_row = self.db.insert(
                self.config['db_name_record'], column_value)

            query = (
                u"UPDATE {0} SET database_storage_ip='{1}', storage_ip='{2}',"
                " path_folders_pass='******', storage_destiny_path='{4}' WHERE id={5}"
            ).format(
                self.config['db_name_record'],
                self.db.get_ip(),
                self.config['server_address'],
                ','.join(self.config['folders_to_pass']),
                self.config['server_mount_folder'],
                self.pk_row
            )
            self.db.query(query)
            self.mount(self.config)

            self.insert_config(
                self.config['pg_user'], self.config['db_password'])
            db_list = self.get_db_list(
                self.config['pg_user'], self.config['host_machine'])

            self.create_bkp_files(db_list, self.config)
            msg = "Deleting old folders"
            self.pk_log_row = self.db.insert(
                self.config['db_name_log_record'], {
                    'backup_id': self.pk_row,
                    'log': msg,
                    'status': 1,
                    'log_datetime': 'now()'
                }
            )

            folders_deleted = delete_old_files(
                self.config['days_delete'],
                get_last_folder_path(self.bkp_folder_path))

            msg = "Old folders deleted: {0}".format(folders_deleted)
            self.steps_done.append(True)
            self.db.update(
                self.config['db_name_log_record'], {
                    'id': self.pk_log_row,
                    'status': 2,
                    'log': msg
                }
            )
            self.db.update(
                self.config['db_name_record'], {
                    'id': self.pk_row,
                    'status': 1,
                    'percents_completed': self.count_percentage(),
                    'finish_backup_datetime': 'NULL'
                }

            )
            self.email_context_success = self.email_context_success \
                + '- {0}\n'.format(
                    msg)

            self.sync(self.config)

        except KeyError as err:
            err = "Error in {0}! Variable not found: ".format(
                socket.gethostname()) + str(err)
            print (err)
            self.email_context_error = \
                self.email_context_error + err + '\n'

        except Exception as err:
            self.treat_exception(err)

        finally:
            self.umount(self.config)
            percentage = self.count_percentage()
            if self.get_status() == 3:
                percentage = 100

            self.db.update(
                self.config['db_name_record'], {
                    'id': self.pk_row,
                    'status': self.get_status(),
                    'percents_completed': percentage,
                    'finish_backup_datetime': 'now()'
                }
            )

            self.db.close_conn()

            email_ctx_error = self.email_context_error
            email_ctx_success = self.email_context_success

            if self.email_context_error == '':
                email_ctx_error = self.email['success_msg']
            if self.email_context_success == '':
                email_ctx_success = self.email['error_msg']

            email_context = self.email['email_context'].format(
                email_ctx_success, email_ctx_error)
            print(email_context)
            if self.config['send_email_success']\
                    or self.email_context_error != '':
                    self.dispatch_email(email_context)
Пример #5
0
        	pass
	logger = logging.getLogger()
	fh = logging.FileHandler(log_filename)
    	logger.addHandler(fh)
	logger.setLevel(logging.DEBUG)
	
	logger.info('Loading config...')
	print 'Loading config...'

	env = simpy.Environment()
	hierarchy, links = build_d3n(config, logger,env)

	logger.info('Creating Enviroment...')
	print 'Creating Enviroment...'

	utils.delete_old_files(config)

	logger.info('Parsing Trace File...')
	print "Parsing Trace File..."	
	jobList=deque()
	inputParser(config.get('Simulation', 'input'),jobList)
	# Instantiate a thread pool with N worker threads
     

	clientNum = int(config.get('Simulation', 'clientNum'))
        nodeNum = int(config.get('Simulation', 'nodeNum'))
        threadNum = int(config.get('Simulation', 'threadNum'))
        shadow_window = int(config.get('Simulation', 'shadow_window'))
        f_adapt = config.get('Simulation', 'adaptive_algorithm')
        warmup = int(config.get('Simulation', 'warmup_time'))
        a_time = int(config.get('Simulation', 'algorithm_time'))
Пример #6
0
    def backup(self):
        try:

            column_value = {
                'name': socket.gethostname(),
                'percents_completed': 0,
                'status': 1,
                'start_backup_datetime': 'now()',
                'finish_backup_datetime': 'NULL'
            }
            self.pk_row = self.db.insert(self.config['db_name_record'],
                                         column_value)

            # query = (
            #     u"UPDATE {0} SET database_storage_ip='{1}', storage_ip='{2}',"
            #     " path_folders_pass='******', storage_destiny_path='{4}' WHERE id={5}"
            # ).format(
            #     self.config['db_name_record'],
            #     self.db.get_ip(),
            #     self.config['server_address'],
            #     ','.join(self.config['folders_to_pass']),
            #     self.config['server_mount_folder'],
            #     self.pk_row
            # )
            # self.db.query(query)
            # self.mount(self.config)

            self.insert_config(self.config['pg_user'],
                               self.config['db_password'])
            db_list = self.get_db_list(self.config['pg_user'],
                                       self.config['host_machine'])

            self.create_bkp_files(db_list, self.config)
            msg = "Deleting old folders"
            self.pk_log_row = self.db.insert(
                self.config['db_name_log_record'], {
                    'backup_id': self.pk_row,
                    'log': msg,
                    'status': 1,
                    'log_datetime': 'now()'
                })

            folders_deleted = delete_old_files(
                self.config['days_delete'],
                get_last_folder_path(self.bkp_folder_path))

            msg = "Old folders deleted: {0}".format(folders_deleted)
            self.steps_done.append(True)
            self.db.update(self.config['db_name_log_record'], {
                'id': self.pk_log_row,
                'status': 2,
                'log': msg
            })
            self.db.update(
                self.config['db_name_record'], {
                    'id': self.pk_row,
                    'status': 1,
                    'percents_completed': self.count_percentage(),
                    'finish_backup_datetime': 'NULL'
                })
            self.email_context_success = self.email_context_success \
                + '- {0}\n'.format(
                    msg)

            self.sync(self.config)

        except KeyError as err:
            err = "Error in {0}! Variable not found: ".format(
                socket.gethostname()) + str(err)
            print(err)
            self.email_context_error = \
                self.email_context_error + err + '\n'

        except Exception as err:
            self.treat_exception(err)

        finally:
            # self.umount(self.config)
            percentage = self.count_percentage()
            if self.get_status() == 3:
                percentage = 100

            self.db.update(
                self.config['db_name_record'], {
                    'id': self.pk_row,
                    'status': self.get_status(),
                    'percents_completed': percentage,
                    'finish_backup_datetime': 'now()'
                })

            self.db.close_conn()

            email_ctx_error = self.email_context_error
            email_ctx_success = self.email_context_success

            if self.email_context_error == '':
                email_ctx_error = self.email['success_msg']
            if self.email_context_success == '':
                email_ctx_success = self.email['error_msg']

            email_context = self.email['email_context'].format(
                email_ctx_success, email_ctx_error)
            print(email_context)
            if self.config['send_email_success']\
                    or self.email_context_error != '':
                self.dispatch_email(email_context)