Using cURL with the API
Here is how to create, activate, assign, and enable a Railgun using cURL and the Optimized Partner API.
Look up the
user_keyfor the domain to add a Railgun to. This can be done using the user_lookup Host API method and the user’s email address or unique ID:$ curl -s 'https://api.cloudflare.com/host-gw.html?act=user_lookup&host_key=YOUR_HOST_API_KEY&cloudflare_email=user@example.com'{"msg": null,"request": {"act": "user_lookup","cloudflare_email": "user@example.com"},"response": {"cloudflare_email": "user@example.com","hosted_zones": ["example.com"],"unique_id": "UNIQUE_ID (CAN BE USED IN PLACE OF USER'S EMAIL)","user_api_key": "USER_API_KEY (NOT USED FOR RAILGUN)","user_authed": true,"user_exists": true,"user_key": "UNIQUE_USER_KEY_OF_32_CHARACTERS"},"result": "success"}Next, call the
initAPI method to create a new Railgun using thehost_keyanduser_key:$ curl 'https://www.cloudflare.com/api/v2/railgun/init?host_key=YOUR_HOST_API_KEY&pubname=My%20Railgun'{"msg": null,"response": {"act": "railgun_init","railgun_id": "1","railgun_name": "GENERATED_OR_SPECIFIED_RG_NAME","railgun_status": "INI","rtkn": "30_CHARACTER_RTKN"},"result": "success"}The Railgun daemon should then be started so that it may complete the activation process, which should be logged via syslog after startup:
$ tail -f /var/log/messagesOct 27 22:29:41 www railgun[Activation]: Activation POST completed.Oct 27 22:29:41 www railgun[Activation]: Assigned Railgun ID: 1Oct 27 22:29:41 www railgun[Activation]: Acquired cert from serverNext, the
suggestion_setmethod is called withauto_enabledset to0in order to expose the Railgun to the domain. Settingauto_enabledto0will not enable Railgun for the domain, it will only expose the Railgun instance to the domain within Cloudflare Settings. To expose, associate, and enable Railgun in a single API call, setauto_enabledto1.$ curl 'https://www.cloudflare.com/api/v2/railgun/suggestion_set?host_key=YOUR_HOST_API_KEY&z=example.com&rtkn=30_CHARACTER_RTKN&auto_enabled=0'{"msg": null,"response": {"act": "railgun_suggest","railgun_id": "1",},"result": "success"}The user should now be able to see the Railgun configuration dropdown menu within their Cloudflare Settings panel. The user can now test and enable Railgun themselves. If
auto_enabledhad been set to1, the followingconn_setcall is not necessary and would’ve been performed automatically.Finally, the
conn_setmethod is called to associate the Railgun with the domain and create the necessary port2408.net DNS records and SSL certificate. It is possible to test Railgun without enabling it using a special HTTP header. More details on testing with the port2408.net hostname (railgun_rec_name) in the installation documentation.
$ curl 'https://www.cloudflare.com/api/v2/railgun/conn_set?host_key=YOUR_HOST_API_KEY&z=example.com&rtkn=30_CHARACTER_RTKN&mode=0'
{
"msg": null,
"response": {
"act": "railgun_conn_set",
"railgun_conn_id": "2",
"railgun_rec_name": "rg-ffffffff1111111111111111.port2408.net"
},
"result": "success"
}