Принудительно использовать http-прокси с модулем, который уже использует LWP :: UserAgent? - PullRequest
0 голосов
/ 03 июля 2019

Я хотел бы использовать прокси-сервер вместе со сторонним SDK, но SDK внутренне использует LWP :: UserAgent и не предоставляет никаких настроек прокси в своем API.Я попытался установить соответствующую переменную среды, но модуль, похоже, не распознает ее.Есть ли способ обойти это (без изменения самого модуля)?

$ENV{HTTPS_PROXY} = 'http://$proxyip:$proxyport';

my $s = NaServer->new ($filer, 1, 20);
$s->set_style(LOGIN);
$s->set_transport_type(HTTPS);
$s->set_server_type(FILER);
$s->set_port(443);
$s->set_admin_user($user, $pass);
$s->env_proxy;

[john0839 @ 478261-apps ~] $ ./netapp_command_proxy.pl filerip myuser mypass Нет определения для env-proxy API, найденного в netapp-manageability-sdk-9.4 / lib / perl / NetApp / OntapClusterAPI.pm строка 109445.

1 Ответ

1 голос
/ 04 июля 2019

Вы выяснили, что вам нужно вызвать env_proxy() для объекта UserAgent.Но кажется, что NaServer не является подклассом LWP::UserAgent, поэтому вы не можете вызвать метод этого класса, как вы пытались в своем примере кода.

Давайте посмотрим на документация для LWP::UserAgent для подсказок.Секция для new() содержит интересный текст.

Если env_proxy не указан, переменная окружения PERL_LWP_ENV_PROXY управляет значением "env_proxy" в LWP ::UserAgent вызывается во время инициализации.

Мне кажется, эта функция предназначена именно для этой ситуации.Если у вас нет доступа к конструктору для объекта, вы можете использовать эту переменную среды для управления использованием прокси.Код в конструкторе выглядит следующим образом:

my $env_proxy = exists $cnf{env_proxy} ? delete $cnf{env_proxy} : $ENV{PERL_LWP_ENV_PROXY};

И, позже,

$self->env_proxy if $env_proxy;

Таким образом, исправление, кажется, добавляет:

$ENV{PERL_LWP_ENV_PROXY} = 1;

кверх вашего кода.

(NB У меня не было времени, чтобы проверить это.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...