Trac に xmlrpc plugin をいれてみた。

ちょっと要望があったのでインストールしてみた。

xmlrpc pluginをインストール

TracHacksからxmlrpcをダウンロード

# wget "http://trac-hacks.org/changeset/latest/xmlrpcplugin?old_path=/&filename=xmlrpcplugin&format=zip"

unzip で解凍する。

# unzip xmlrpcplugin.zip
Archive:  xmlrpcplugin.zip
  inflating: xmlrpcplugin/trunk/setup.py
  inflating: xmlrpcplugin/trunk/tracrpc/api.py
  inflating: xmlrpcplugin/trunk/tracrpc/web_ui.py
  inflating: xmlrpcplugin/trunk/tracrpc/util.py
  inflating: xmlrpcplugin/trunk/tracrpc/__init__.py
  inflating: xmlrpcplugin/trunk/tracrpc/ticket.py
  inflating: xmlrpcplugin/trunk/tracrpc/wiki.py
  inflating: xmlrpcplugin/trunk/tracrpc/search.py
  inflating: xmlrpcplugin/trunk/tracrpc/templates/xmlrpclist.html
  inflating: xmlrpcplugin/0.10/setup.py
  inflating: xmlrpcplugin/0.10/tracrpc/api.py
  inflating: xmlrpcplugin/0.10/tracrpc/web_ui.py
  inflating: xmlrpcplugin/0.10/tracrpc/util.py
  inflating: xmlrpcplugin/0.10/tracrpc/__init__.py
  inflating: xmlrpcplugin/0.10/tracrpc/ticket.py
  inflating: xmlrpcplugin/0.10/tracrpc/wiki.py
  inflating: xmlrpcplugin/0.10/tracrpc/search.py
  inflating: xmlrpcplugin/0.10/tracrpc/templates/xmlrpclist.cs
  inflating: xmlrpcplugin/sandbox/setup.py
  inflating: xmlrpcplugin/sandbox/tracrpc/api.py
  inflating: xmlrpcplugin/sandbox/tracrpc/web_ui.py
  inflating: xmlrpcplugin/sandbox/tracrpc/htdocs/css/rpc.css
  inflating: xmlrpcplugin/sandbox/tracrpc/htdocs/js/json.js
  inflating: xmlrpcplugin/sandbox/tracrpc/htdocs/js/jsonrpc.js
  inflating: xmlrpcplugin/sandbox/tracrpc/htdocs/js/jquery.js
  inflating: xmlrpcplugin/sandbox/tracrpc/json_rpc.py
  inflating: xmlrpcplugin/sandbox/tracrpc/util.py
  inflating: xmlrpcplugin/sandbox/tracrpc/__init__.py
  inflating: xmlrpcplugin/sandbox/tracrpc/ticket.py
  inflating: xmlrpcplugin/sandbox/tracrpc/wiki.py
  inflating: xmlrpcplugin/sandbox/tracrpc/xml_rpc.py
  inflating: xmlrpcplugin/sandbox/tracrpc/search.py
  inflating: xmlrpcplugin/sandbox/tracrpc/templates/xmlrpclist.cs
#

解凍したディレクトリに移動して、setup.pyを実行

# cd xmlrpcplugin 
# python setup.py bdist_egg
running bdist_egg
running egg_info
creating TracXMLRPC.egg-info
writing TracXMLRPC.egg-info/PKG-INFO
writing top-level names to TracXMLRPC.egg-info/top_level.txt
writing dependency_links to TracXMLRPC.egg-info/dependency_links.txt
writing entry points to TracXMLRPC.egg-info/entry_points.txt
writing manifest file 'TracXMLRPC.egg-info/SOURCES.txt'
reading manifest file 'TracXMLRPC.egg-info/SOURCES.txt'
writing manifest file 'TracXMLRPC.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-i686/egg
running install_lib
running build_py
creating build
creating build/lib
creating build/lib/tracrpc
copying tracrpc/util.py -> build/lib/tracrpc
copying tracrpc/wiki.py -> build/lib/tracrpc
copying tracrpc/search.py -> build/lib/tracrpc
copying tracrpc/web_ui.py -> build/lib/tracrpc
copying tracrpc/api.py -> build/lib/tracrpc
copying tracrpc/__init__.py -> build/lib/tracrpc
copying tracrpc/ticket.py -> build/lib/tracrpc
creating build/lib/tracrpc/templates
copying tracrpc/templates/xmlrpclist.cs -> build/lib/tracrpc/templates
creating build/bdist.linux-i686
creating build/bdist.linux-i686/egg
creating build/bdist.linux-i686/egg/tracrpc
copying build/lib/tracrpc/util.py -> build/bdist.linux-i686/egg/tracrpc
copying build/lib/tracrpc/wiki.py -> build/bdist.linux-i686/egg/tracrpc
copying build/lib/tracrpc/search.py -> build/bdist.linux-i686/egg/tracrpc
copying build/lib/tracrpc/web_ui.py -> build/bdist.linux-i686/egg/tracrpc
creating build/bdist.linux-i686/egg/tracrpc/templates
copying build/lib/tracrpc/templates/xmlrpclist.cs -> build/bdist.linux-i686/egg/tracrpc/templates
copying build/lib/tracrpc/api.py -> build/bdist.linux-i686/egg/tracrpc
copying build/lib/tracrpc/__init__.py -> build/bdist.linux-i686/egg/tracrpc
copying build/lib/tracrpc/ticket.py -> build/bdist.linux-i686/egg/tracrpc
byte-compiling build/bdist.linux-i686/egg/tracrpc/util.py to util.pyc
byte-compiling build/bdist.linux-i686/egg/tracrpc/wiki.py to wiki.pyc
byte-compiling build/bdist.linux-i686/egg/tracrpc/search.py to search.pyc
byte-compiling build/bdist.linux-i686/egg/tracrpc/web_ui.py to web_ui.pyc
byte-compiling build/bdist.linux-i686/egg/tracrpc/api.py to api.pyc
byte-compiling build/bdist.linux-i686/egg/tracrpc/__init__.py to __init__.pyc
byte-compiling build/bdist.linux-i686/egg/tracrpc/ticket.py to ticket.pyc
creating build/bdist.linux-i686/egg/EGG-INFO
copying TracXMLRPC.egg-info/PKG-INFO -> build/bdist.linux-i686/egg/EGG-INFO
copying TracXMLRPC.egg-info/SOURCES.txt -> build/bdist.linux-i686/egg/EGG-INFO
copying TracXMLRPC.egg-info/dependency_links.txt -> build/bdist.linux-i686/egg/EGG-INFO
copying TracXMLRPC.egg-info/entry_points.txt -> build/bdist.linux-i686/egg/EGG-INFO
copying TracXMLRPC.egg-info/top_level.txt -> build/bdist.linux-i686/egg/EGG-INFO
copying TracXMLRPC.egg-info/zip-safe -> build/bdist.linux-i686/egg/EGG-INFO
creating dist
creating 'dist/TracXMLRPC-0.1-py2.4.egg' and adding 'build/bdist.linux-i686/egg' to it
removing 'build/bdist.linux-i686/egg' (and everything under it)
# 

dist/に移動してpythonのライブラリディレクトリに生成された egg をコピー

# cd dist/
# cp TracXMLRPC-0.1-py2.4.egg /usr/lib/python2.4/site-packages

trac.ini 編集

[component]
tracrpc.* = enabled

HttpAuthPlugin

AccountManagerPlugin を使っている場合、このプラグインもインストールしないと、xmlrpcプラグインは動かない。
HttpAuthPluginからダウンロード。
やり方は同じなので、ログだけ。

# wget http://trac-hacks.org/changeset/latest/httpauthplugin?old_path=/&filename=httpauthplugin&format=zip
# mv httpauthplugin\?old_path\=%2F\&filename\=httpauthplugin\&format\=zip  httpauthplugin.zip
# unzip httpauthplugin.zip
Archive:  httpauthplugin.zip
  inflating: httpauthplugin/0.10/httpauth/__init__.py
  inflating: httpauthplugin/0.10/httpauth/filter.py
  inflating: httpauthplugin/0.10/setup.py
[root@aldebaran trac_plugin]# cd httpauthplugin/0.10
# python setup.py bdist_egg
running bdist_egg
running egg_info
creating TracHTTPAuth.egg-info
writing requirements to TracHTTPAuth.egg-info/requires.txt
writing TracHTTPAuth.egg-info/PKG-INFO
writing top-level names to TracHTTPAuth.egg-info/top_level.txt
writing dependency_links to TracHTTPAuth.egg-info/dependency_links.txt
writing entry points to TracHTTPAuth.egg-info/entry_points.txt
writing manifest file 'TracHTTPAuth.egg-info/SOURCES.txt'
reading manifest file 'TracHTTPAuth.egg-info/SOURCES.txt'
writing manifest file 'TracHTTPAuth.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-i686/egg
running install_lib
running build_py
creating build
creating build/lib
creating build/lib/httpauth
copying httpauth/filter.py -> build/lib/httpauth
copying httpauth/__init__.py -> build/lib/httpauth
creating build/bdist.linux-i686
creating build/bdist.linux-i686/egg
creating build/bdist.linux-i686/egg/httpauth
copying build/lib/httpauth/filter.py -> build/bdist.linux-i686/egg/httpauth
copying build/lib/httpauth/__init__.py -> build/bdist.linux-i686/egg/httpauth
byte-compiling build/bdist.linux-i686/egg/httpauth/filter.py to filter.pyc
byte-compiling build/bdist.linux-i686/egg/httpauth/__init__.py to __init__.pyc
creating build/bdist.linux-i686/egg/EGG-INFO
copying TracHTTPAuth.egg-info/PKG-INFO -> build/bdist.linux-i686/egg/EGG-INFO
copying TracHTTPAuth.egg-info/SOURCES.txt -> build/bdist.linux-i686/egg/EGG-INFO
copying TracHTTPAuth.egg-info/dependency_links.txt -> build/bdist.linux-i686/egg/EGG-INFO
copying TracHTTPAuth.egg-info/entry_points.txt -> build/bdist.linux-i686/egg/EGG-INFO
copying TracHTTPAuth.egg-info/requires.txt -> build/bdist.linux-i686/egg/EGG-INFO
copying TracHTTPAuth.egg-info/top_level.txt -> build/bdist.linux-i686/egg/EGG-INFO
zip_safe flag not set; analyzing archive contents...
creating dist
creating 'dist/TracHTTPAuth-1.1-py2.4.egg' and adding 'build/bdist.linux-i686/egg' to it
removing 'build/bdist.linux-i686/egg' (and everything under it)
# cd dist/
# cp TracHTTPAuth-1.1-py2.4.egg /usr/lib/python2.4/site-packages/

trac.ini を編集

[component]
httpauth.* = enabled
[httpauth]
paths = /xmlrpc, /login/xmlrpc

http://hogehoge/trac/project/xmlrpcにアクセスできて表示されればオッケー

"mod_python+Apache+python2.4 じゃ動かないかもしんない。"とかって記述があったけど普通に動いたぞ。まぁとりあえず様子見

Problems with mod_python, Apache, python 2.4

XmlRpcPlugin might not work with Apache and python 2.4 as explained in TracInstall. Use python 2.5 if you want to run Trac with mod_python.