Proxy support for webhooks #3579

Closed
opened 2025-12-29 18:29:59 +01:00 by adam · 3 comments
Owner

Originally created by @benjy44 on GitHub (Apr 16, 2020).

Originally assigned to: @jeremystretch on GitHub.

Environment

  • Python version: 3.6.5
  • NetBox version: 2.8.0

Proposed Functionality

It would be nice to be able to set a proxy server for the webhooks in the admin panel or in configuration.py

Use Case

The majority of the companies are behind a corporate proxy and when sending wehbooks requests to slack for example it would be convenient to be able to set a proxy server.
At the moment in my case, I have to manually modify extras/webhooks_worker.py to be able to post notifications to slack.

Database Changes

None

External Dependencies

None

Originally created by @benjy44 on GitHub (Apr 16, 2020). Originally assigned to: @jeremystretch on GitHub. <!-- NOTE: IF YOUR ISSUE DOES NOT FOLLOW THIS TEMPLATE, IT WILL BE CLOSED. This form is only for proposing specific new features or enhancements. If you have a general idea or question, please post to our mailing list instead of opening an issue: https://groups.google.com/forum/#!forum/netbox-discuss NOTE: Due to an excessive backlog of feature requests, we are not currently accepting any proposals which significantly extend NetBox's feature scope. Please describe the environment in which you are running NetBox. Be sure that you are running an unmodified instance of the latest stable release before submitting a bug report. --> ### Environment * Python version: 3.6.5 * NetBox version: 2.8.0 <!-- Describe in detail the new functionality you are proposing. Include any specific changes to work flows, data models, or the user interface. --> ### Proposed Functionality It would be nice to be able to set a proxy server for the webhooks in the admin panel or in configuration.py <!-- Convey an example use case for your proposed feature. Write from the perspective of a NetBox user who would benefit from the proposed functionality and describe how. ---> ### Use Case The majority of the companies are behind a corporate proxy and when sending wehbooks requests to slack for example it would be convenient to be able to set a proxy server. At the moment in my case, I have to manually modify extras/webhooks_worker.py to be able to post notifications to slack. <!-- Note any changes to the database schema necessary to support the new feature. For example, does the proposal require adding a new model or field? (Not all new features require database changes.) ---> ### Database Changes None <!-- List any new dependencies on external libraries or services that this new feature would introduce. For example, does the proposal require the installation of a new Python package? (Not all new features introduce new dependencies.) --> ### External Dependencies None
adam added the status: acceptedtype: feature labels 2025-12-29 18:29:59 +01:00
adam closed this issue 2025-12-29 18:29:59 +01:00
Author
Owner

@kobayashi commented on GitHub (Apr 19, 2020):

I think we can set this by add proxy field in webhook model or add to configuration.py.

configration.py might be flexible, i think.

WEBHOOK_PROXIES = {
  'http': 'http://192.168.1.10:3128',
  'https': 'http://192.168.2.10:1080',
}

Then set this as proxies attribute to session in webhook_worker.py.

Any idea?

@kobayashi commented on GitHub (Apr 19, 2020): I think we can set this by add `proxy` field in webhook model or add to configuration.py. configration.py might be flexible, i think. ``` WEBHOOK_PROXIES = { 'http': 'http://192.168.1.10:3128', 'https': 'http://192.168.2.10:1080', } ``` Then set this as `proxies` attribute to session in `webhook_worker.py`. Any idea?
Author
Owner

@molusk commented on GitHub (Apr 20, 2020):

We did the same modification to webhook_worker.py, it works like a charm !

# We need to use proxy to send webhooks
response = session.send(prepared_request, proxies={'https': 'http://proxy.example.org:8080'})
#response = session.send(prepared_request)

But it would be nice to allow also new version checks to pass through a proxy (the same in our case). We didn't find how to do it, yet.

@molusk commented on GitHub (Apr 20, 2020): We did the same modification to `webhook_worker.py`, it works like a charm ! ``` # We need to use proxy to send webhooks response = session.send(prepared_request, proxies={'https': 'http://proxy.example.org:8080'}) #response = session.send(prepared_request) ``` But it would be nice to allow also new version checks to pass through a proxy (the same in our case). We didn't find how to do it, yet.
Author
Owner

@jeremystretch commented on GitHub (Apr 20, 2020):

IMO it makes more sense to establish a configuration option to be used for all outbound HTTP connections, rather than defining a proxy individually per webhook.

@jeremystretch commented on GitHub (Apr 20, 2020): IMO it makes more sense to establish a configuration option to be used for all outbound HTTP connections, rather than defining a proxy individually per webhook.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/netbox#3579