azlux / botamusique

Bot to play youtube / soundcloud / radio / local music on Mumble (using pymumble).
MIT License
313 stars 79 forks source link

Allow disable fetching of changelog #268

Closed mweinelt closed 3 years ago

mweinelt commented 3 years ago

Is your feature request related to a problem? Please describe. We are testing botamusique in an offline environment with a local mumble instance. Botamusique tries to fetch the changelog, which currently cannot be disabled, and which subsequently fails:

murmurd[846]: <W>2021-05-11 17:49:24.696 ServerDB: Opened SQLite database /var/lib/murmur/murmur.sqlite
murmurd[846]: <W>2021-05-11 17:49:24.698 ServerDB: Using SQLite's default rollback journal.
murmurd[846]: <W>2021-05-11 17:49:25.826 Performed initial PBKDF2 benchmark. Will use 8000 iterations as default
murmurd[846]: <W>2021-05-11 17:49:25.829 Generating new tables...
murmurd[846]: <W>2021-05-11 17:49:25.885 OSInfo: Failed to execute lsb_release
murmurd[846]: <W>2021-05-11 17:49:25.887 Murmur 1.3.4 (1.3.4) running on X11: Linux 5.10.32: Booting servers
murmurd[846]: <W>2021-05-11 17:49:25.919 1 => Password for 'SuperUser' set to 'taKmmqqFkHti'
murmurd[846]: <W>2021-05-11 17:49:25.955 1 => Server listening on 0.0.0.0:64738
murmurd[846]: <W>2021-05-11 17:49:27.094 1 => Generating new server certificate.
botamusique[759]: [May 11 17:49:27 INFO] database: no settings table found. Creating settings table version 2.
botamusique[759]: [May 11 17:49:27 INFO] database: no music table found. Creating music table version 4.
botamusique[759]: [May 11 17:49:27 INFO] library: rebuild directory cache
botamusique[759]: [May 11 17:49:27 INFO] bot: botamusique version unknown, starting...
murmurd[846]: <W>2021-05-11 17:49:27.629 1 => Registration needs nonempty 'registername', 'registerpassword' and 'registerurl', must have an empty 'password' and allowed pings.
murmurd[846]: <W>2021-05-11 17:49:27.641 1 => <1:(-1)> New connection: [0::1]:50972
murmurd[846]: <W>2021-05-11 17:49:27.722 1 => <1:(-1)> Client version 1.2.4 (PyMumble 1.6: PyMumble 1.6)
murmurd[846]: <W>2021-05-11 17:49:27.733 1 => Starting voice thread
murmurd[846]: <W>2021-05-11 17:49:27.742 1 => CELT codec switch ffffffff8000000b 0 (prefer ffffffff8000000b) (Opus 1)
murmurd[846]: <W>2021-05-11 17:49:27.750 1 => <1:botamusique(-1)> Authenticated
botamusique[759]: Traceback (most recent call last):
botamusique[759]:   File "/nix/store/8c2hpw473d80yfw1nqyaxdkaz12rqj0w-python3.8-urllib3-1.26.4/lib/python3.8/site-packages/urllib3/connection.py", line 169, in _new_conn
botamusique[759]:     conn = connection.create_connection(
botamusique[759]:   File "/nix/store/8c2hpw473d80yfw1nqyaxdkaz12rqj0w-python3.8-urllib3-1.26.4/lib/python3.8/site-packages/urllib3/util/connection.py", line 73, in create_connection
botamusique[759]:     for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):
botamusique[759]:   File "/nix/store/q6gfck5czr67090pwm53xrdyhpg6bx67-python3-3.8.9/lib/python3.8/socket.py", line 918, in getaddrinfo
botamusique[759]:     for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
botamusique[759]: OSError: [Errno 16] Device or resource busy
botamusique[759]: During handling of the above exception, another exception occurred:
botamusique[759]: Traceback (most recent call last):
botamusique[759]:   File "/nix/store/8c2hpw473d80yfw1nqyaxdkaz12rqj0w-python3.8-urllib3-1.26.4/lib/python3.8/site-packages/urllib3/connectionpool.py", line 699, in urlopen
botamusique[759]:     httplib_response = self._make_request(
botamusique[759]:   File "/nix/store/8c2hpw473d80yfw1nqyaxdkaz12rqj0w-python3.8-urllib3-1.26.4/lib/python3.8/site-packages/urllib3/connectionpool.py", line 382, in _make_request
botamusique[759]:     self._validate_conn(conn)
botamusique[759]:   File "/nix/store/8c2hpw473d80yfw1nqyaxdkaz12rqj0w-python3.8-urllib3-1.26.4/lib/python3.8/site-packages/urllib3/connectionpool.py", line 1010, in _validate_conn
botamusique[759]:     conn.connect()
botamusique[759]:   File "/nix/store/8c2hpw473d80yfw1nqyaxdkaz12rqj0w-python3.8-urllib3-1.26.4/lib/python3.8/site-packages/urllib3/connection.py", line 353, in connect
botamusique[759]:     conn = self._new_conn()
botamusique[759]:   File "/nix/store/8c2hpw473d80yfw1nqyaxdkaz12rqj0w-python3.8-urllib3-1.26.4/lib/python3.8/site-packages/urllib3/connection.py", line 181, in _new_conn
botamusique[759]:     raise NewConnectionError(
botamusique[759]: urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPSConnection object at 0x7fa10bb18730>: Failed to establish a new connection: [Errno 16] Device or resource busy
botamusique[759]: During handling of the above exception, another exception occurred:
botamusique[759]: Traceback (most recent call last):
botamusique[759]:   File "/nix/store/534d0l78q3apma8naqgfkxf2vb1p7i0x-python3.8-requests-2.25.1/lib/python3.8/site-packages/requests/adapters.py", line 439, in send
botamusique[759]:     resp = conn.urlopen(
botamusique[759]:   File "/nix/store/8c2hpw473d80yfw1nqyaxdkaz12rqj0w-python3.8-urllib3-1.26.4/lib/python3.8/site-packages/urllib3/connectionpool.py", line 755, in urlopen
botamusique[759]:     retries = retries.increment(
botamusique[759]:   File "/nix/store/8c2hpw473d80yfw1nqyaxdkaz12rqj0w-python3.8-urllib3-1.26.4/lib/python3.8/site-packages/urllib3/util/retry.py", line 574, in increment
botamusique[759]:     raise MaxRetryError(_pool, url, error or ResponseError(cause))
botamusique[759]: urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='packages.azlux.fr', port=443): Max retries exceeded with url: /botamusique/changelog (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fa10bb18730>: Failed to establish a new connection: [Errno 16] Device or resource busy'))
botamusique[759]: During handling of the above exception, another exception occurred:
botamusique[759]: Traceback (most recent call last):
botamusique[759]:   File "/nix/store/0b1amqm5ppkk6wzmyl6132ylcyf2jadj-botamusique-unstable-2021-03-13/share/botamusique/.mumbleBot.py-wrapped", line 875, in <module>
botamusique[759]:     var.bot = MumbleBot(args)
botamusique[759]:   File "/nix/store/0b1amqm5ppkk6wzmyl6132ylcyf2jadj-botamusique-unstable-2021-03-13/share/botamusique/.mumbleBot.py-wrapped", line 189, in __init__
botamusique[759]:     changelog = util.fetch_changelog()
botamusique[759]:   File "/nix/store/0b1amqm5ppkk6wzmyl6132ylcyf2jadj-botamusique-unstable-2021-03-13/share/botamusique/util.py", line 103, in fetch_changelog
botamusique[759]:     r = requests.get("https://packages.azlux.fr/botamusique/changelog")
botamusique[759]:   File "/nix/store/534d0l78q3apma8naqgfkxf2vb1p7i0x-python3.8-requests-2.25.1/lib/python3.8/site-packages/requests/api.py", line 76, in get
botamusique[759]:     return request('get', url, params=params, **kwargs)
botamusique[759]:   File "/nix/store/534d0l78q3apma8naqgfkxf2vb1p7i0x-python3.8-requests-2.25.1/lib/python3.8/site-packages/requests/api.py", line 61, in request
botamusique[759]:     return session.request(method=method, url=url, **kwargs)
murmurd[846]: <W>2021-05-11 17:49:27.905 1 => <1:botamusique(-1)> Connection closed: The remote host closed the connection [1]
murmurd[846]: <W>2021-05-11 17:49:27.913 1 => Ending voice thread
botamusique[759]:   File "/nix/store/534d0l78q3apma8naqgfkxf2vb1p7i0x-python3.8-requests-2.25.1/lib/python3.8/site-packages/requests/sessions.py", line 542, in request
botamusique[759]:     resp = self.send(prep, **send_kwargs)
botamusique[759]:   File "/nix/store/534d0l78q3apma8naqgfkxf2vb1p7i0x-python3.8-requests-2.25.1/lib/python3.8/site-packages/requests/sessions.py", line 655, in send
botamusique[759]:     r = adapter.send(request, **kwargs)
botamusique[759]:   File "/nix/store/534d0l78q3apma8naqgfkxf2vb1p7i0x-python3.8-requests-2.25.1/lib/python3.8/site-packages/requests/adapters.py", line 516, in send
botamusique[759]:     raise ConnectionError(e, request=request)
botamusique[759]: requests.exceptions.ConnectionError: HTTPSConnectionPool(host='packages.azlux.fr', port=443): Max retries exceeded with url: /botamusique/changelog (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fa10bb18730>: Failed to establish a new connection: [Errno 16] Device or resource busy'))
systemd[1]: botamusique.service: Main process exited, code=exited, status=1/FAILURE
systemd[1]: botamusique.service: Failed with result 'exit-code'.

Describe the solution you'd like Allow disabling fetching the changelog, same as the auto update check.

Describe alternatives you've considered Patching out the call to util.fetch_changelog downstream.

Additional context

https://github.com/azlux/botamusique/blob/f36611f07b2c660b4130a4f166217e5c5d97ea4d/mumbleBot.py#L179-L194

TerryGeng commented 3 years ago

Thanks for your suggestion. Would you make PR so I can merge it?