kongr45gpen / kongr45gpen/supybot-github

Support IPv6

Open
#33 0 comments 2 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
10
Forks
2
PR merge metrics
No merged PRs in 30d

Description

Github has recently added two IPv6 networks to their hook servers. So they will at some point start using them.

Setting `config supybot.plugins.Github.address ::` or (::0) fails with a nice backtrace:

```
ERROR 2021-08-25T16:12:46 Failed to load Github:
Traceback (most recent call last):
File "/limnoria/.local/lib/python3.9/site-packages/supybot/plugins/Owner/", line 190, in _loadPlugins
plugin.loadPluginClass(irc, m)
File "/limnoria/.local/lib/python3.9/site-packages/supybot/", line 153, in loadPluginClass
cb = module.Class(irc)
File "/limnoria/.local/lib/python3.9/site-packages/supybot/utils/", line 102, in __init__
original__init__(self, *args, **kwargs)
File "/limnoria/limnoria/plugins/Github/", line 85, in __init__
self.httpd = server_class((self.address, self.port), RequestHandler.GithubHandler)
File "/usr/lib/python3.9/", line 452, in __init__
self.server_bind()
File "/usr/lib/python3.9/http/", line 138, in server_bind
socketserver.TCPServer.server_bind(self)
File "/usr/lib/python3.9/", line 466, in server_bind
self.socket.bind(self.server_address)
socket.gaierror: [Errno -2] Name does not resolve
ERROR 2021-08-25T16:12:46 Exception id: 0x75898
```
Would be nice to support "::" or "::0" to get a dual stack listening socket.
And probably there should be an `address6` to bind to if `address` (`address4?`) is a qualified IPv4, similarly to what limnoria does for the `supybot.servers.http.hosts4` and `supybot.servers.http.hosts6` config values.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start at limnoria/plugins/Github/ around line 85, where the webhook server is created, and compare its address handling with Limnoria's hosts4 and hosts6 configuration. Define the supported behavior for :: or ::0 and qualified IPv4 addresses, then verify that the Github webhook server can bind the intended IPv6 or dual-stack socket.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend, networking
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.