настроить python - qualysapi - подключить функцию, чтобы получить имя пользователя, пароль и ПРОКСИ напрямую - PullRequest
0 голосов
/ 11 октября 2019

Файл util.py формы функции qualys api connect поддерживает 2 способа аутентификации:
1. Передать имя пользователя и пароль - он будет проходить аутентификацию, используя только эти данные
2. Путь к файлу конфигурации- Он будет использовать имя пользователя, пароль, прокси и т. Д. Из конфигурационного файла

Нет варианта, где мы можем:
a. передать имя пользователя, пароль и файл конфигурации напрямую
b. передать имя пользователя, пароль и прокси напрямую

Причина, по которой мне нужен этот параметр:
i. Мне нужно расшифровать и передать открытый текстовый пароль непосредственно в функцию соединения вместо того, чтобы хранить его в файле конфигурации
ii. Мне также нужен прокси-сервер, так как без него он не подключается и не получает несанкционированную ошибку из-за безопасности на моем конце, которая должна быть такой, какая есть.

Есть ли способ сделать это стандартным способом?

Я думал о копировании файла утилит qualysapi в новый файл в моемспроектируйте и просто отредактируйте функцию соединения, как требуется.
Но это не оптимизировано , поскольку завтра, если qualysapi будет обновлен, мой скопированный файл будет устаревшим, и я буду поддерживать его вручную всегда.

pip install qualysapi  
from qualysapi import connect
api_url = "xx"
params = {"xx":"yy"}

conn = connect('username', 'password')
# OR 
conn = connect('config.txt')

resp = conn.request(api_url, params)
print(resp)

Но мне нужно передать «username», «password», «config.txt» (с прокси-сервером) ИЛИ
«username», «password»,'proxy'

config.txt выглядит следующим образом:

[info]
hostname = xx
username = xx
password = xx
max_retries = 10
[proxy]
proxy_url = xx.xx.xx.xx
proxy_port = xx

Встроенный файл утилит qualysapi выглядит так:

# -*- coding: future_fstrings -*-
""" A set of utility functions for QualysConnect module. """
from __future__ import absolute_import
import logging

import qualysapi.config as qcconf
import qualysapi.connector as qcconn
import qualysapi.settings as qcs

__author__ = "Parag Baxi <parag.baxi@gmail.com> & Colin Bell <colin.bell@uwaterloo.ca>"
__copyright__ = "Copyright 2011-2013, Parag Baxi & University of Waterloo"
__license__ = 'Apache License 2.0'

# Set module level logger.
logger = logging.getLogger(__name__)


# NOTE: Possibly switch to multimethod for clarity
def connect(config_file=qcs.default_filename, section='info', remember_me=False, remember_me_always=False,
            username=None, password=None, hostname="qualysapi.qualys.com", max_retries="3"):
    """ Return a QGAPIConnect object for v1 API pulling settings from config
    file.
    """
    # Use function parameter login credentials.
    if username and password:
        connect = qcconn.QGConnector(auth=(username, password),
                                     server=hostname,
                                     max_retries=max_retries)

    # Retrieve login credentials from config file.
    else:
        conf = qcconf.QualysConnectConfig(filename=config_file, section=section, remember_me=remember_me,
                                          remember_me_always=remember_me_always)
        connect = qcconn.QGConnector(conf.get_auth(),
                                     conf.get_hostname(),
                                     conf.proxies,
                                     conf.max_retries)

    logger.info("Finished building connector.")
    return connect

Ожидается:
Мы должны быть в состоянии передать имя пользователя, пароль напрямую и прокси через конфигурационный файл / direct.

Фактически:
Мы можем передавать только имя пользователя и пароль напрямую, иначе нам нужно взять имя пользователя, пароль, прокси все из файла конфигурации

...