def new_tab(args): prefix, window_id = parse_prefix_and_window_id(args.prefix_window_id) search_query = ' '.join(args.query) brotab_logger.info('Opening search for "%s", prefix "%s", window_id "%s"', search_query, prefix, window_id) url = "https://www.google.com/search?q=%s" % quote_plus(search_query) api = MultipleMediatorsAPI(create_clients(args.target_hosts)) api.open_urls([url], prefix, window_id)
def close_tabs(args): # Try stdin if arguments are empty tab_ids = args.tab_ids if len(args.tab_ids) == 0: tab_ids = split_tab_ids(read_stdin().strip()) brotab_logger.info('Closing tabs: %s', tab_ids) api = MultipleMediatorsAPI(create_clients(args.target_hosts)) tabs = api.close_tabs(tab_ids)
def query_tabs(args): brotab_logger.info('Querying tabs: %s', args) d = vars(args) if d['info'] is not None: queryInfo = d['info'] else: queryInfo = {k: v for k, v in d.items() if v is not None and k not in ['func', 'info']} api = MultipleMediatorsAPI(create_clients(args.target_hosts)) for tab in api.query_tabs(queryInfo): print(tab)
def list_tabs(args): """ Use this to show duplicates: bt list | sort -k3 | uniq -f2 -D | cut -f1 | bt close """ brotab_logger.info('Listing tabs') api = MultipleMediatorsAPI(create_clients(args.target_hosts)) tabs = api.list_tabs([]) message = '\n'.join(tabs) + '\n' sys.stdout.buffer.write(message.encode('utf8'))
def get_words(args): # return tab.execute({javascript: " # [...new Set(document.body.innerText.match(/\w+/g))].sort().join('\n'); # "}) import time start = time.time() logger.info('Get words from tabs: %s', args.tab_ids) api = MultipleMediatorsAPI(create_clients()) words = api.get_words(args.tab_ids) print('\n'.join(words)) delta = time.time() - start
def get_words(args): # return tab.execute({javascript: " # [...new Set(document.body.innerText.match(/\w+/g))].sort().join('\n'); # "}) start = time.time() brotab_logger.info('Get words from tabs: %s, match_regex=%s, join_with=%s', args.tab_ids, args.match_regex, args.join_with) api = MultipleMediatorsAPI(create_clients(args.target_hosts)) words = api.get_words(args.tab_ids, args.match_regex, args.join_with) print('\n'.join(words)) delta = time.time() - start
def close_tabs(args): #urls = [line.strip() for line in sys.stdin.readlines()] # Try stdin if arguments are empty tab_ids = args.tab_ids # print(read_stdin()) if len(args.tab_ids) == 0: tab_ids = split_tab_ids(read_stdin().strip()) logger.info('Closing tabs: %s', tab_ids) #api = MultipleMediatorsAPI([SingleMediatorAPI('f')]) api = MultipleMediatorsAPI(create_clients(args)) tabs = api.close_tabs(tab_ids)
def open_urls(args): """ curl -X POST 'http://*****:*****@urls.txt' curl -X POST 'http://*****:*****@urls.txt' -F 'window_id=749' where urls.txt containe one url per line (not JSON) """ prefix, window_id = parse_prefix_and_window_id(args.prefix_window_id) urls = [line.strip() for line in sys.stdin.readlines()] brotab_logger.info('Opening URLs from stdin, prefix "%s", window_id "%s": %s', prefix, window_id, urls) api = MultipleMediatorsAPI(create_clients(args.target_hosts)) api.open_urls(urls, prefix, window_id)
def list_tabs(args): """ Use this to show duplicates: bt list | sort -k3 | uniq -f2 -D | cut -f1 | bt close """ logger.info('Listing tabs') api = MultipleMediatorsAPI(create_clients(args)) tabs = api.list_tabs([]) #print('\n'.join([tab.encode('utf8') for tab in tabs])) # print(u'\n'.join(tabs).encode('utf8')) # print(u'\n'.join(tabs)) message = '\n'.join(tabs) + '\n' sys.stdout.buffer.write(message.encode('utf8'))
def get_text(args): logger.info('Get text from tabs') api = MultipleMediatorsAPI(create_clients(args)) tabs = api.get_text([], args.delimiter_regex, args.replace_with) if args.cleanup: pattern = re.compile(r'\s+') old_tabs = tabs tabs = [] for line in old_tabs: tab_id, title, url, text = line.split('\t') text = re.sub(pattern, ' ', text) tabs.append('\t'.join([tab_id, title, url, text])) message = '\n'.join(tabs) + '\n' if args.tsv is None: sys.stdout.buffer.write(message.encode('utf8')) else: with open(args.tsv, 'w') as file_: file_.write(message)
def return_tabs(): logger.info('Listing tabs') api = MultipleMediatorsAPI(create_clients()) tabs = api.list_tabs([]) return tabs
def show_windows(args): brotab_logger.info('Showing windows') api = MultipleMediatorsAPI(create_clients(args.target_hosts)) tabs = api.list_tabs([]) _print_available_windows(tabs)
def get_html(args): brotab_logger.info('Get html from tabs') api = MultipleMediatorsAPI(create_clients(args.target_hosts)) return get_text_or_html(api.get_html, args)
def move_tabs(args): logger.info('Moving tabs') api = MultipleMediatorsAPI(create_clients(args)) api.move_tabs([])
def activate_tab(prefix): api = MultipleMediatorsAPI(create_clients()) api.activate_tab([prefix], True)
def activateFocus_tab(args): logger.info('Activating tab: %s', args.tab_id) #api = MultipleMediatorsAPI([SingleMediatorAPI('f')]) api = MultipleMediatorsAPI(create_clients(args)) api.activateFocus_tab(args.tab_id)
def move_tabs(args): brotab_logger.info('Moving tabs') api = MultipleMediatorsAPI(create_clients(args.target_hosts)) api.move_tabs([])
def get_api(): clients = create_clients() return MultipleMediatorsAPI(clients)
def close_tab(prefix): # Try stdin if arguments are empty logger.info('Closing tabs: %s', prefix) api = MultipleMediatorsAPI(create_clients()) api.close_tabs([prefix])
def activate_tab(args): brotab_logger.info('Activating tab: %s', args.tab_id) api = MultipleMediatorsAPI(create_clients(args.target_hosts)) api.activate_tab(args.tab_id, args.focused)