Description
The environment variable http_proxy is ignored, ater starteing wikiserver.py and trying to sync.
Steps to reproduce
export http_proxy="http://127.0.0.1:3128" # Or whatever Web Proxy is needed
- ./wikiserver.py
Run action=SyncPages
Example
You will get the Message "The wiki is currently not reachable"
Component selection
- the bug happens because http_proxy is ignored in moin-1.7.2/MoinMoin/wikisync.py
Details
Workaround
here is my patch:
--- moin-1.7.2.org/MoinMoin/wikisync.py 2008-03-22 23:02:46.000000000 +0000
+++ moin-1.7.2/MoinMoin/wikisync.py 2008-10-08 08:07:40.831318400 +0000
@@ -9,6 +9,9 @@
import os
import socket
import xmlrpclib
+import httplib
+import urlparse
+
from MoinMoin import wikiutil
from MoinMoin.util import lock, pickle
@@ -17,6 +20,9 @@
from MoinMoin.packages import unpackLine, packLine
from MoinMoin.support.multicall import MultiCall
+from MoinMoin import log
+logging = log.getLogger(__name__)
+
MIMETYPE_MOIN = "text/wiki"
# sync directions
@@ -156,6 +162,17 @@
""" Returns a list of SyncPage instances. """
return NotImplemented
+class ProxiedTransport(xmlrpclib.Transport):
+ def set_proxy(self, proxy):
+ self.proxy = proxy
+ def make_connection(self, host):
+ self.realhost = host
+ h = httplib.HTTP(self.proxy)
+ return h
+ def send_request(self, connection, handler, request_body):
+ connection.putrequest("POST", 'http://%s%s' % (self.realhost, handler))
+ def send_host(self, connection, host):
+ connection.putheader('Host', self.realhost)
class MoinRemoteWiki(RemoteWiki):
""" Used for MoinMoin wikis reachable via XMLRPC. """
@@ -166,6 +183,7 @@
self.verbose = verbose
_ = self.request.getText
+ self.verbose=True
wikitag, wikiurl, wikitail, wikitag_bad = wikiutil.resolve_interwiki(self.request, interwikiname, '')
self.wiki_url = wikiutil.mapURL(self.request, wikiurl)
self.valid = not wikitag_bad
@@ -205,8 +223,18 @@
else:
self.iwid_full = packLine([remote_iwid, interwikiname])
+
def createConnection(self):
- return xmlrpclib.ServerProxy(self.xmlrpc_url, allow_none=True, verbose=self.verbose)
+ proxy=os.getenv("http_proxy") # exp: proxy="http://127.0.0.1:3128"
+ logging.debug("proxy=<%s>" % proxy)
+ if ( proxy != None ):
+ p = ProxiedTransport()
+ proxy=urlparse.urlparse(proxy)[1] # exp: proxy="127.0.0.1:3128"
+ logging.debug("proxy=<%s>" % proxy)
+ p.set_proxy(proxy)
+ return xmlrpclib.ServerProxy(self.xmlrpc_url, transport=p, allow_none=True, verbose=self.verbose)
+ else:
+ return xmlrpclib.ServerProxy(self.xmlrpc_url, allow_none=True, verbose=self.verbose)
# Public methods
def get_diff_pre(self, pagename, from_rev, to_rev, n_name=None):
Discussion
Isn't this rather a feature request than a bug?
Plan
- Priority:
- Assigned to:
- Status:
