Configuring a local installation to contact another local application

Hi, I’m kind of new to Phabricator, and I’m working on creating a webhook based integration between Phabricator and a Django based application that I’m helping develop.

To do this, I’ve set up Phabricator on localhost on a virtual machine (with Apache2); then edited my hosts file and created a virtualhost in my Apache configuration which maps “phabricator.localhost.com” to localhost. Then I tested Phabricator out a bit and everything works just fine.

I also set up my Django application locally by bounding it to the VM’s IP address at: http://10.0.2.15:9991, and tested it out. Everything works fine there too.

After this, I created two firehose-style webhooks in Herald. One contacts webhook.site and the other contacts my locally hosted Django application directly. Originally Phabricator complained about this but after a bit of digging, I came across this link and then ran sudo ./bin/config set security.outbound-blacklist [] which allowed me to remove any blacklist rules.

So far the configuration seems right, and now I’m looking at the Django app’s access log and the realtime updates from webhook.site to see if Phabricator will contact them.

When I add a commit to a Differential repository, I’ve noticed that webhook.site was successfully contacted with a “CMIT” event payload whereas my Django application was not contacted at all (as can be seen from the logs).

So, have I configured anything incorrectly here? What could you suggest I do to enable Phabricator to contact my Django application in this case?

I’d be happy to update this thread with any more information requested. Any and all help is appreciated :slight_smile:.

Oh, one extra piece of information that I’d like to share is that when I look at Herald’s transcripts, the records show that the webhook was successfully contacted in both cases. Are there any logs which I could check which would show me the response from the contacted end?

I found this discussion but it didn’t make sense since I received the payload at webhook.site successfully.

Are there any logs which I could check which would show me the response from the contacted end?

You can see the outcome and HTTP status code in “Herald > Webhooks > (Your Webhook) > Recent Requests”.

There is no full log of the request headers and body.

Oh, I see. Out of curiosity, is there a design related reason for this, or was it just a feature that was never considered? Also @epriestley, do you have any advice for my current situation?

Also @epriestley, do you have any advice for my current situation?

First, check the “Recent Requests” table to see the outcome and HTTP status code for the requests. This is almost certainly diagnostically useful.

Assuming that shows the HTTP request is connecting, use nc to start a server on port 9992. Add a hook to contact that server.

Push a commit or use bin/webhook call to trigger the hook.

If that works, you have a complete request transcript from Phabricator in the window running nc. Replay that request against port 9991 to figure out what Django is doing when it receives that request.

If that doesn’t work, your server is probably haunted.

1 Like