• Be part of the TeaParty!
    Click here for more information

Simple Server Hosting Script

BIOS

Well-known member
wäre praktisch wenn mir jemand zur hand gehen würde ich komme mit der api von cloudflare atm nicht zurecht der läd die domains nicht....
 

BIOS

Well-known member
sollen ja keine subdomain aufen server angelegt werden lediglich in der cloudflare dns verwaltung dazu müsste das script aber über die api die domains laden ;)

und es ist via cloudflare möglich den meinen allen ts hab ich auch die ne dns über cloudflare verpasst
 

Kevinos

TeaSpeak Team
Staff member
TeaTeam
I do not think it's possible to list the domains via the cloudflare API, each domain has a different zone, and the API needs a specific zone for it to work.
For example, if you take the zone of a domain A, you can only manage that zone of domain A.
 

Kalle801

Active member
Premium User
Brauche ich den Create DNS record key ?

Okay, hab den Global Key gefunden aber mir wird keine Domain angezeigt.
 
Last edited:

xZarex

Member
I do not think it's possible to list the domains via the cloudflare API, each domain has a different zone, and the API needs a specific zone for it to work.
For example, if you take the zone of a domain A, you can only manage that zone of domain A.
You can list the zones:
JSON:
--  List Zones

curl -X GET "https://api.cloudflare.com/client/v4/zones?status=active&page=1&per_page=50&order=status&direction=desc&match=all" \
     -H "X-Auth-Email: EMAIL" \
     -H "X-Auth-Key: APIKEY" \
     -H "Content-Type: application/json"
    
php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.cloudflare.com/client/v4/zones?status=active&page=1&per_page=50&order=status&direction=desc&match=all",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_HTTPHEADER => array(
    "content-type: application/json",
    "x-auth-email: EMAIL",
    "x-auth-key: APIKEY"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

   
example:
{
   "result":[
      {
         "id":"asd341afb42hj5k5s9sdfm40smf04jgjsdf02",// ZONE ID!
         "name":"xzarex.xyz", // DOMAIN!
         "status":"active",
         "paused":false,
         "type":"full",
         "development_mode":0,
         "name_servers":[
            "adam.ns.cloudflare.com",
            "naomi.ns.cloudflare.com"
         ],
         "original_name_servers":[
            "dns2.registrar-servers.com",
            "dns1.registrar-servers.com"
         ],
         "original_registrar":null,
         "original_dnshost":null,
         "modified_on":"2018-10-21T07:03:44.154390Z",
         "created_on":"2018-07-13T12:03:35.190506Z",
         "activated_on":"2018-07-13T12:13:48.502583Z",
         "meta":{
            "step":3,
            "wildcard_proxiable":false,
            "custom_certificate_quota":0,
            "page_rule_quota":3,
            "phishing_detected":false,
            "multiple_railguns_allowed":false
         },
         "owner":{
            "id":"OWNERID",
            "type":"user",
            "email":"EMAIL"
         },
         "account":{
            "id":"ACCOUNTID",
            "name":"EMAIL"
         },
         "permissions":[
            "#access:edit",
            "#access:read",
            "#analytics:read",
            "#app:edit",
            "#auditlogs:read",
            "#billing:edit",
            "#billing:read",
            "#cache_purge:edit",
            "#dns_records:edit",
            "#dns_records:read",
            "#lb:edit",
            "#lb:read",
            "#legal:edit",
            "#legal:read",
            "#logs:edit",
            "#logs:read",
            "#member:edit",
            "#member:read",
            "#organization:edit",
            "#organization:read",
            "#ssl:edit",
            "#ssl:read",
            "#stream:edit",
            "#stream:read",
            "#subscription:edit",
            "#subscription:read",
            "#waf:edit",
            "#waf:read",
            "#webhooks:edit",
            "#webhooks:read",
            "#worker:edit",
            "#worker:read",
            "#zone:edit",
            "#zone:read",
            "#zone_settings:edit",
            "#zone_settings:read"
         ],
         "plan":{
            "id":"0feeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
            "name":"Free Website",
            "price":0,
            "currency":"USD",
            "frequency":"",
            "is_subscribed":true,
            "can_subscribe":false,
            "legacy_id":"free",
            "legacy_discount":false,
            "externally_managed":false
         }
      }
   ],
   "result_info":{
      "page":1,
      "per_page":50,
      "total_pages":1,
      "count":1,
      "total_count":1
   },
   "success":true,
   "errors":[

   ],
   "messages":[

   ]
}


-- List DNS Records with specific name
curl -X GET "https://api.cloudflare.com/client/v4/zones/*ZONEID*/dns_records?name=SUB.DOMAIN.TDL&page=1&per_page=50&order=type&direction=desc&match=all" \
     -H "X-Auth-Email: EMAIL" \
     -H "X-Auth-Key: APIKEY" \
     -H "Content-Type: application/json"

php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.cloudflare.com/client/v4/zones/*ZONEID*/dns_records?name=SUB.DOMAIN.TDL&page=1&per_page=50&order=type&direction=desc&match=all",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_HTTPHEADER => array(
    "content-type: application/json",
    "x-auth-email: EMAIL",
    "x-auth-key: APIKEY"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);
    
example:
{
   "result":[

   ],
   "result_info":{
      "page":1,
      "per_page":50,
      "total_pages":0,
      "count":0, // perfect -> no dns record with our name
      "total_count":0
   },
   "success":true,
   "errors":[

   ],
   "messages":[

   ]
}

-- Create A DNS Record

curl -X POST "https://api.cloudflare.com/client/v4/zones/*ZONEID*/dns_records" \
     -H "X-Auth-Email: EMAIL" \
     -H "X-Auth-Key: APIKEY" \
     -H "Content-Type: application/json" \
     --data '{"type":"A","name":"ts.xzarex.xyz","content":"127.0.0.1","ttl":1,"priority":10,"proxied":false}'

php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.cloudflare.com/client/v4/zones/*ZONEID*/dns_records",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_POST => 1,
  CURLOPT_POSTFIELDS => "{\"type\":\"A\",\"name\":\"ts.xzarex.xyz\",\"content\":\"127.0.0.1\",\"ttl\":1,\"priority\":10,\"proxied\":false}",
  CURLOPT_HTTPHEADER => array(
    "content-type: application/json",
    "x-auth-email: EMAIL",
    "x-auth-key: APIKEY"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

example:
{
   "result": {
      "id": "68c21a9970bf7ccc145751cb36ea0c02",
      "type": "A",
      "name": "ts.xzarex.xyz",
      "content": "127.0.0.1",
      "proxiable": false,
      "proxied": false,
      "ttl": 1,
      "locked": false,
      "zone_id": "499fb35cCCCCC8a6d91",
      "zone_name": "xzarex.xyz",
      "modified_on": "2019-05-14T16:06:01.699504Z",
      "created_on": "2019-05-14T16:06:01.699504Z",
      "meta": {
         "auto_added": false,
         "managed_by_apps": false,
         "managed_by_argo_tunnel": false
      }
   },
   "success": true,
   "errors": [],
   "messages": []
}

-- Create SRV DNS Record

curl -X POST "https://api.cloudflare.com/client/v4/zones/*ZONEID*/dns_records" \
     -H "X-Auth-Email: EMAIL" \
     -H "X-Auth-Key: APIKEY" \
     -H "Content-Type: application/json" \
     --data '{"type":"SRV", "data": {"service":"_ts3", "proto":"_udp", "name":"ts3.xzarex.xyz","target":"ts.xzarex.xyz","port": 9987,"ttl":1,"priority":10, "weight":1,"proxied":false}}'

php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.cloudflare.com/client/v4/zones/*ZONEID*/dns_records",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_POST => 1,
  CURLOPT_POSTFIELDS => "{\"type\":\"SRV\", \"data\": {\"service\":\"_ts3\", \"proto\":\"_udp\", \"name\":\"ts3.xzarex.xyz\",\"target\":\"ts.xzarex.xyz\",\"port\": 9987,\"ttl\":1,\"priority\":10, \"weight\":1,\"proxied\":false}}",
  CURLOPT_HTTPHEADER => array(
    "content-type: application/json",
    "x-auth-email: EMAIL",
    "x-auth-key: APIKEY"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

example:
{
   "result": {
      "id": "8aba0bb02ASDASDSD3e03c152",
      "type": "SRV",
      "name": "_ts3._udp.ts3.xzarex.xyz",
      "content": "1\t9987\tts.xzarex.xyz",
      "proxiable": false,
      "proxied": false,
      "ttl": 1,
      "priority": 10,
      "locked": false,
      "zone_id": "499fb35ASDASD48a6d91",
      "zone_name": "xzarex.xyz",
      "modified_on": "2019-05-14T16:08:34.586992Z",
      "created_on": "2019-05-14T16:08:34.586992Z",
      "meta": {
         "auto_added": false,
         "managed_by_apps": false,
         "managed_by_argo_tunnel": false
      },
      "data": {
         "service": "_ts3",
         "proto": "_udp",
         "name": "ts3",
         "weight": 1,
         "port": 9987,
         "target": "ts.xzarex.xyz",
         "priority": 10
      }
   },
   "success": true,
   "errors": [],
   "messages": []
}
 
Last edited: