Файл 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.
Фактически:
Мы можем передавать только имя пользователя и пароль напрямую, иначе нам нужно взять имя пользователя, пароль, прокси все из файла конфигурации