def command_unsetg(args):
     if len(args.split(' ')) == 2:
         parse = args.split(' ')
         if parse[0] == 'proxy':
             optProxy.__set__(None)
     else:
         LOGGER.warning('Please input unsetg <proxy>')
Esempio n. 2
0
 def register_option(self, key, value):
     if key in self.option.keys():
         if value:
             self.option[key]['Current Setting'] = value
             print(f'{key} => {value}')
         else:
             msg = f'Please input {key}\'s value'
             LOGGER.warning(msg)
Esempio n. 3
0
 def __set__(self, value):
     if 'http://' in value:
         self.value = value
         LOGGER.info(f'proxy => {self.value}')
     elif 'socks5://' in value:
         self.value = value
         LOGGER.info(f'proxy => {self.value}')
     else:
         LOGGER.warning('Support only http:// or socks5://')
         self.value = None
    def check_run(self):
        # 运行前检查必填参数
        options = self.current_module.option
        for k, v in options.items():
            c_set = v['Current Setting']
            required = v['Required']
            if not c_set and required == 'yes':
                LOGGER.warning(f'{k} is not set!')
                return False

        return True
 def command_search(args):
     if len(args.split(' ')) == 1:
         keyword = args.split(' ')[0]
         result = module_manager.search_module(keyword)
         if not result:
             msg = f'search {keyword} not found'
             LOGGER.info(msg)
         else:
             search_style(result)
     else:
         LOGGER.warning('Please input search <keyword>')
    async def send_request_cgi(self, method, url, **kwargs):

        kwargs.setdefault('timeout', self.http_timeout)
        kwargs.setdefault('headers', self.http_headers)
        kwargs.setdefault('verify_ssl', self.verify_ssl)
        kwargs.setdefault('allow_redirects', self.http_allow_redirects)
        kwargs.setdefault('proxy', self.proxy)

        # 连接数限制 禁止dns缓存
        conn = aiohttp.TCPConnector(use_dns_cache=False)

        try:
            # async with asyncio.Semaphore(rate):
            async with aiohttp.ClientSession(connector=conn) as session:
                # async with aiohttp.ClientSession(connector=conn) as session:
                resp = await session.request(method, url, **kwargs)
                LOGGER.debug(f'Requests: {method} {url}', self.debug)
                text = await resp.text()
                content = await resp.read()
                stream_content = await resp.content.read()
                resp = {
                    'code': resp.status,
                    'text': text,
                    'content': content,
                    'url': resp.url,
                    'stream_content': stream_content,
                    'headers': resp.headers,
                    'cookie': resp.cookies
                }
                LOGGER.debug(http_response_style(resp['code'], resp['headers'], resp['text'], resp['content'],
                                                 resp['stream_content']), self.debug)
                return resp
        except aiohttp.ClientConnectorError:
            LOGGER.error(f'{url} Error: ConnectionError')
        except aiohttp.ServerDisconnectedError:
            LOGGER.error(f'{url} Error: ServerDisconnectedError')
        except aiohttp.InvalidURL:
            LOGGER.error(f'Invalid URL format: {url}')
        except socket.error as e:
            LOGGER.warning(e)
        except KeyboardInterrupt:
            LOGGER.warning('Module has been stopped')
        except asyncio.TimeoutError as e:
            pass
        except Exception as e:
            LOGGER.exception(e)

        return None
Esempio n. 7
0
 def get_options(self, key):
     try:
         return self.option[key]['Current Setting']
     except KeyError:
         msg = f'{key} not found'
         LOGGER.warning(msg)