AutisticShark / Chevereto-Telegram-Bot

Python Telegram Bot for Chevereto
https://t.me/jpg_dog_bot
GNU General Public License v3.0
7 stars 1 forks source link

Not able to upload to Chevereto instance (SSL error) #76

Closed Cysime closed 2 years ago

Cysime commented 2 years ago

Hello. I'm using Ubuntu 22.04 and Python 3.10, while using the bot, it shows the error:

2022-09-22 16:03:32,632 - apscheduler.scheduler - INFO - Scheduler started
image/jpeg
[('source', ('17fb854f-592b-4c80-9ef6-b4bc83fd603f.jpg', <_io.BufferedReader name='17fb854f-592b-4c80-9ef6-b4bc83fd603f.jpg'>, 'image/jpeg'))]
2022-09-22 16:03:36,216 - telegram.ext.dispatcher - ERROR - No error handlers are registered, logging exception.
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 394, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 234, in request
    super(HTTPConnection, self).request(method, url, body=body, headers=headers)
  File "/usr/lib/python3.10/http/client.py", line 1282, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/lib/python3.10/http/client.py", line 1328, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.10/http/client.py", line 1277, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.10/http/client.py", line 1076, in _send_output
    self.send(chunk)
  File "/usr/lib/python3.10/http/client.py", line 998, in send
    self.sock.sendall(data)
  File "/usr/lib/python3.10/ssl.py", line 1236, in sendall
    v = self.send(byte_view[count:])
  File "/usr/lib/python3.10/ssl.py", line 1205, in send
    return self._sslobj.write(data)
ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:2396)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/ubuntu/.local/lib/python3.10/site-packages/requests/adapters.py", line 489, in send
    resp = conn.urlopen(
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 755, in urlopen
    retries = retries.increment(
  File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 574, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='EXAMPLE.COM', port=443): Max retries exceeded with url: /api/1/upload/?key=APIKEYHERE&format=json (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:2396)')))
During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/ubuntu/.local/lib/python3.10/site-packages/telegram/ext/dispatcher.py", line 557, in process_update
    handler.handle_update(update, self, check, context)
  File "/home/ubuntu/.local/lib/python3.10/site-packages/telegram/ext/handler.py", line 199, in handle_update
    return self.callback(update, context)
  File "/home/ubuntu/cheverto-bot/bot.py", line 35, in command_function
    function(update, context, *args, **kwargs)
  File "/home/ubuntu/cheverto-bot/bot.py", line 96, in image
    return_data = image_upload(request_format(image_name))
  File "/home/ubuntu/cheverto-bot/bot.py", line 134, in image_upload
    upload_response = requests.post(request_url, files = images)
  File "/home/ubuntu/.local/lib/python3.10/site-packages/requests/api.py", line 115, in post
    return request("post", url, data=data, json=json, **kwargs)
  File "/home/ubuntu/.local/lib/python3.10/site-packages/requests/api.py", line 59, in request
    return session.request(method=method, url=url, **kwargs)
  File "/home/ubuntu/.local/lib/python3.10/site-packages/requests/sessions.py", line 587, in request
    resp = self.send(prep, **send_kwargs)
  File "/home/ubuntu/.local/lib/python3.10/site-packages/requests/sessions.py", line 701, in send
    r = adapter.send(request, **kwargs)
  File "/home/ubuntu/.local/lib/python3.10/site-packages/requests/adapters.py", line 563, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='EXAMPLE.COM', port=443): Max retries exceeded with url: /api/1/upload/?key=APIKEYHERE&format=json (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:2396)')))

And the telegram bot will stuck on message Downloading image from Telegram...

AutisticShark commented 2 years ago

HTTPSConnectionPool(host='EXAMPLE.COM', port=443)

Are you sure this host is correct?

Cysime commented 2 years ago

HTTPSConnectionPool(host='EXAMPLE.COM', port=443)

Are you sure this host is correct?

Yes, host and API keys are correct with my own instance's information, and command like help and storage status are working with no issue.

/storage_status

Filesystem      Size  Used Avail Use% Mounted on
tmpfs           2.4G  2.0M  2.4G   1% /run
/dev/sda1        97G   19G   79G  20% /
tmpfs            12G  4.0K   12G   1% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
/dev/sda15       98M  5.1M   93M   6% /boot/efi
tmpfs           2.4G  4.0K  2.4G   1% /run/user/1001
smarych commented 2 years ago

HTTPSConnectionPool(host='EXAMPLE.COM', port=443)

letsencrypt? use fullchain.pem (not cert.pem) in domain settings

AutisticShark commented 2 years ago

command like help and storage status are working with no issue

Btw just to point out, if you can use other built-in bot commands other than upload means the bot is probably working as intended, Chevereto has docs for it's API v1 which you can debug using curl.

smarych commented 2 years ago

I had the same error, helped changing cert.pem to fullchain.pem in the nginx config on the host chevereto