Загрузка SetupTools в Maximo / Jython завершается с ошибкой HTTP 403 Требуется SSL - PullRequest
7 голосов
/ 10 июля 2020

Приложение A к Полному руководству по Jython описывает загрузку SetupTools для использования с Jython.

https://jython.readthedocs.io/en/latest/appendixA/

Это указывает мне на то, что должно быть возможно загрузите и используйте SetupTools из сценария автоматизации Jython в Maximo (v7.6 в моем случае). Книга указывает нам на следующий URL-адрес для копирования сценария Jython, который будет делать это:

http://peak.telecommunity.com/dist/ez_setup.py

Я добавляю одну строку в приведенный выше сценарий для вызова function "use_setuptools":

use_setuptools()

Затем я создаю кнопку pu sh в приложении Maximo и связываю вышеупомянутый сценарий с нажатием кнопки. Я получаю следующую ошибку:

Системное сообщение BMXAA7837E - Произошла ошибка, из-за которой не удалось запустить сценарий EZ_SETUP для точки запуска EZ_SETUP. urllib2.HTTPError: Ошибка HTTP 403: SSL требуется в строке номер 280

Трассировка стека указывает на следующую строку в функции «download_setuptools», которая вызывается «use_setuptools»:

src = urllib2.urlopen(url)

Похоже, это связано с тем, что в моем случае запрошенный URL:

http://pypi.python.org/packages/2.5/s/setuptools/setuptools-0.6c11-py2.5.egg

... перенаправляется несколько раз до прибытия по следующему URL-адресу:

https://files.pythonhosted.org/packages/98/d3/ed3bc7e3f4b143092862dab99d984261ac4be6a40d4fb1e66d2a10e9ea99/setuptools-0.6c11-py2.5.egg

Обратите внимание, что URL-адрес использует HTTPS, а не HTTP. Следующее показывает, почему это может быть так:

https://sourceforge.net/p/pypi/support-requests/300/

jython.jar, включенный в Maximo, не включает модуль ssl, поэтому мы могли либо:

  1. Загрузите модуль ssl вручную и скопируйте его в правильное место на сервере.
  2. Загрузите соответствующий файл яйца вручную через HTTPS и скопируйте его в нужное место на сервере.
  3. Обойти проблему, создав зеркало для файла, который мы ищем, который доступен по HTTP, и использовать этот URL в коде.

Хотя это возможно, я бы предпочел измените код, чтобы игнорировать сертификат SSL, если это возможно, однако все обходные пути в StackOverflow и в других местах, похоже, требуют, чтобы вы могли «импортировать ssl», чтобы обойти его, что, скорее, нарушает цель. * В идеале я ищу решение, которое изменяет код из приведенного выше URL, чтобы заставить его работать с Maximo / Jython 2.5.2 и не требует загрузки и добавление новых модулей или пакетов и все, что это влечет за собой с Maximo. Обход или временное отключение ssl нормально, поскольку код проверяет ha sh загруженного файла .egg. Если возможно, это будет мое предпочтительное решение.

1 Ответ

2 голосов
/ 15 июля 2020

По моему опыту, сценарии автоматизации работают лучше всего, если вы можете оставаться «как Java насколько возможно» и «как можно более Maximo». Итак, я бы использовал сценарий LIB_HTTPCLIENT из документа Scripting 76 Features (первый пример кода, имя которого дается логическим выводом во втором бите кода), чтобы попытаться загрузить SetupTools.

Если этот документ снова перемещается, вот сценарий LIB_HTTPCLIENT. Обратите внимание, что переменная url должна быть передана в этот библиотечный скрипт вызывающим скриптом.

from psdi.iface.router import HTTPHandler
from java.util import HashMap
from java.util import String
handler = HTTPHandler()
map = HashMap()
map.put("URL",url)
map.put("HTTPMETHOD","GET")
responseBytes = handler.invoke(map,None)
response = String(responseBytes,"utf-8")
...