Hey guys -

unfortunately I was not able to place following ticket on the ticket
system. Hopefully I can get help here.

Version: Gajim 0.16.6
OS: Linux / Windows 7
Server: ejabberd

When uploading file with http_upload I get following error:

Exception in thread Thread-61:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 763, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/usr/share/gajim/src/gui_interface.py", line 3117, in
thread_function
    output = func(*func_args)
  File
"/home/opolch/.local/share/gajim/plugins/httpupload/httpupload.py", line
488, in uploader
    transfer = urllib2.urlopen(request, timeout=30)
  File "/usr/lib/python2.7/urllib2.py", line 154, in urlopen
    return opener.open(url, data, timeout)
  File "/usr/lib/python2.7/urllib2.py", line 431, in open
    response = self._open(req, data)
  File "/usr/lib/python2.7/urllib2.py", line 449, in _open
    '_open', req)
  File "/usr/lib/python2.7/urllib2.py", line 409, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.7/urllib2.py", line 1240, in https_open
    context=self._context)
  File "/usr/lib/python2.7/urllib2.py", line 1197, in do_open
    raise URLError(err)
URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate
verify failed (_ssl.c:590)>

After changing function def_uploader(): as shown below it works. This
means to not verify the certificate anymore. Is that the recommended way
for a unsigned cert?

def uploader():
                progress_messages.put(_('Uploading file via HTTP...'))
                try:
                    #################################
                    # SSL_CERTIFICATE_ERROR fix
                    context = ssl.create_default_context()
                    context.check_hostname = False
                    context.verify_mode = ssl.CERT_NONE
                    #################################
                    headers = {'User-Agent': 'Gajim %s' % gajim.version,
'Content-Type': mime_type}
                    request =
urllib2.Request(put.getData().encode("utf-8"), data=data, headers=headers)
                    request.get_method = lambda: 'PUT'
                    log.debug("opening urllib2 upload request...")
                    transfer = urllib2.urlopen(request, timeout=30,
context=context)
                    #transfer = urllib2.urlopen(request, timeout=30)
                    log.debug("urllib2 upload request done, response
code: " + str(transfer.getcode()))
                    return transfer.getcode()

Here is the ejabberd conf:

module: ejabberd_http
port: 5443
tls: true
certfile: "/etc/ejabberd/ejabberd.pem"
request_handlers:
  "": mod_http_upload

Regards,
 Marcus

_______________________________________________
Gajim-devel mailing list
Gajim-devel@gajim.org
https://lists.gajim.org/cgi-bin/listinfo/gajim-devel

Reply via email to