Есть ли способ получить удаленные запросы от trac

У меня есть trac-сервер, работающий в http://127.0.0.1:8001/project/ то я хочу запросить билеты по сценарию, а не из веб-интерфейса. Поэтому я искал в Интернете и получал плагин tracxmlrpc , я установил его на своем сервере trac, а затем попытаюсь использовать скрипт для запроса билетов. Код, как показано ниже:

import xmlrpclib
server = xmlrpclib.ServerProxy('http://user:[email protected]:8001/project/login/xmlrpc')
tickets = server.ticket.query('max=0')

Но этот код не может работать, кто может сказать мне, как заставить его работать, или есть ли другие способы реализации функции удаленного запроса.

1
добавлено отредактировано
Просмотры: 1
de
Я считаю, что плагин trackxmlrpc - лучший способ запросить установку Trac с удаленного компьютера. Не могли бы вы дать нам более подробную информацию о том, почему приведенный выше код не работает? Возвращает ли ваш код ошибку или просто нет билетов?
добавлено автор Josh Laase, источник

2 ответы

Бесстыдный плагин, но я написал библиотеку PHP для взаимодействия с API Trac Bugtracker через удаленные вызовы процедур.

https://github.com/jakoch/PHPTracRPC

Требования

  • PHP 5.3.0 или новее
  • с расширениями PHP «JSON» и «cURL»
  • Trac с XmlRpcPlugin

Пример базового использования

include 'TracRPC.php';

$credentials = array('username' => 'username', 'password' => 'password'); 

$trac = new TracRPC('http://trac.example.com/login/jsonrpc', $credentials);

$result = $trac->getTicket('32');
0
добавлено
Спасибо, что поделился. Придется проверить это.
добавлено автор Drew, источник

Конечно, он может работать. Как и вы ожидали. Вот моя проверка с помощью данных конфигурации ключа:

  1. An empty test project hosted at http://127.0.0.1:8000/trac/
  2. Project configured to use Basic authentication which is the only thing supported by the Python xmlrpclib.
  3. A user 'foo' with password 'bar' that have both XML_RPC permission (to allow calls through the API), and TICKET_VIEW permissions to be allowed to view tickets.
  4. I created 2 tickets, #1 is closed while #2 is still open.

Интерактивный код:

>>> import xmlrpclib
>>> server = xmlrpclib.ServerProxy('http://foo:[email protected]:8000/trac/login/rpc')
>>> server.ticket.query('max=0')
[1, 2]
>>> server.ticket.query('max=0&status!=closed')
[2]
>>> server.ticket.get(2)
[2,
 ,
 ,
 {'_ts': '1357300088007920',
  'cc': '',
  'changetime': ,
  'component': 'component1',
  'description': '',
  'keywords': '',
  'milestone': 'milestone1',
  'owner': '',
  'priority': 'major',
  'reporter': 'admin',
  'resolution': '',
  'status': 'new',
  'summary': 'stackoverflow test',
  'time': ,
  'type': 'defect',
  'version': ''}]

Обычно это проверка подлинности или разрешения, поэтому, чтобы убедиться, что плагин RPC и запрос работают, вы можете временно назначить XML_RPC и TICKET_VIEW разрешения для пользователя anonymous , и вместо этого используйте этот серверный прокси (удаление из URL-адреса foo: bar @ и /login ):

server = xmlrpclib.ServerProxy('http://127.0.0.1:8000/trac/rpc')
0
добавлено
Другой способ протестировать проблемы аутентификации - использовать ваш браузер. Если вы попытаетесь получить доступ к URL-адресу http://127.0.0.1:8001/project/login/xmlrpc , вам будут предложены учетные данные, а затем они будут отправлены на страницу, объясняющую, как использовать интерфейс RPC. Если вы не получили приглашение пароля, ваш URL-адрес неверен. Если вы регистрируете ошибку, дважды проверьте свои учетные данные и разрешения учетной записи.
добавлено автор bta, источник
Пункт использования браузера состоял в том, чтобы убедиться, что вы используете правильный URL-адрес, что ваше имя пользователя и пароль верны, и что ваша учетная запись имеет правильные разрешения (вещи, которые являются общими ошибками в моем опыте). Если одна из них действительно является проблемой, обычно проще отлаживать и тестировать через браузер, чем через скрипт.
добавлено автор bta, источник
Нет, проверка подлинности через браузер не будет одинаковой. Браузер имеет лучшую поддержку аутентификации, чем xmlrpclib . Если на сайте была настроена аутентификация дайджеста, браузер будет с радостью играть вместе, а xmlrpclib завершится неудачно, поскольку у него нет поддержки Digest. См. Мой ответ на этот билет .
добавлено автор osimons, источник