-
Notifications
You must be signed in to change notification settings - Fork 58
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support unverified SSL certificates #74
base: master
Are you sure you want to change the base?
Conversation
…an optinal ssl context for the query. This is required in order to send a query to a site which has an unverified ssl certificate, i.e a self signed certificate.
the context parameter from the query function to the constructor.
Well, it seems that the context parameter for urlopen exists in 2.7.9 <= Python < 3 and was reintroduced in 3.4.3. Thus, the test builds for Python 3.0 - 3.3 are broken. This issue was also discussed on stackoverflow but the only answer was to upgrade Python. So, either merge this patch to the master branch and applications using Overpy with a Python3 version of < 3.4.3 will break, create a new branch which only support Python > 3.3 or simply neglect that pull request. |
Sometimes, the openstreetmap server is inconsistent in that way that the list of node ids of a `Way` contains nodes that actually do not exist. In that case, no nodes of a `Way` will be retrieved even if there are valid nodes. You can now set the strict_mode to False so that invalid nodes will be removed from a Way. The default behaviour still is to try to retrieve the missing nodes and if the node does not exist, a DataIncomplete exception is thrown.
Issue type
Summary
I have a self hosted OpenStreetMap server which can only be accessed using SSL connections. The certificates are however generated using certbot and thus queries cannot be send using overpy due to the fact that those certificates are by default marked as unverified.
Hence, to fix this issue, I've added a new optional parameter context to the constructor of the Overpass object in order to define an optional ssl context which is passed to the call of urlopen in the query method.
So, if you want to connect to a Overpass server with a self signed certificate, create a new ssl context with:
ssl_context = ssl._create_unverified_context()
and setup a new Overpass object using that context
opy = overpy.Overpass(url='https://example.com/api/interpreter', context=ssl_context)