This pages shows you how to get the SPF-Setting of a Domain and ask ChatGPT if this setting is ok.
Step 1: Create a simple PHP-Page to ask an DNS-Server
Create a PHP-Page on your Webserver with this code:
<?php $doin = $_GET["d"] ?? ''; function is_valid_domain_name($domain_name) { return (preg_match("/^([a-z\d](-*[a-z\d])*)(\.([a-z\d](-*[a-z\d])*))*$/i", $domain_name) && preg_match("/^.{1,253}$/", $domain_name) && preg_match("/^[^\.]{1,63}(\.[^\.]{1,63})*$/", $domain_name) ); } $result = array(); if (is_valid_domain_name($doin)) { $result = dns_get_record($doin, DNS_ALL); } echo json_encode($result); ?>
The URL of this page is URL_DNS_REQUEST (you need that in Step 2). By URL_DNS_REQUEST?d=DOMAIN you get DNS-data (if dns_get_record works on your Server).
Step 2: Create a new JCI-Template
Name: spfcheck
URL:
{% set dom = "json-content-importer.com" %}{% if urlparam.d %}{% set dom = urlparam.d %}{% endif %}URL_DNS_REQUEST?d={{dom | e}}
URLParam: d
Method: CURL-GET
Curloptions: leave empty
Cachetime: 60000 (for testing – each ChatGPT requests costs ChatGPT-Token)
Timeout: 30 (give ChatGPT a bit time to answer)
Twig:
{% set dom = "json-content-importer.com" %}{% if urlparam.d %}{% set dom = urlparam.d %}{% endif %} <form action="/spf-check/"> <input type=text name=d value="{{ dom | e}}" size=150> <br> <input type=submit> </form> <hr> Domain: {{dom}} {% set fno = 0 %} <hr> {% for i in _context %} {% if i.type=="TXT" %} {% if i.txt matches "/spf/" %} SPF-Setting DNS: <strong>{{i.txt}}</strong><br> {% set gptprompt = 'der spf-eintrag für ' ~ dom ~ ' ist \'' ~ '' ~ i.txt ~ '\'. ist dieser eintrag syntaktisch korrekt und was bedeutet er?' %} {#gptprompt: {{gptprompt}}<br>#} {% set sc = '[jsoncontentimporterpro nameoftemplate="chtgpt" param1="'~gptprompt~'"]' %} {#sc: {{sc}}#} {% set scexe = (sc | doshortcode) %} {% set scjson = (scexe | json_decode(TRUE)) %} {#scexe: {{ scjson | dump}}#} ChatGPT gefragt: "Ist dieser Eintrag syntaktisch korrekt und was bedeutet er?"<br> {{scjson.choices.0.text}} {% set fno = 1 %} {% endif %} {% endif %} {% endfor %} {% if fno==0 %} Kein SPF-Eintrag gefunden. Wenn die Domain nicht für Mails verwendet wird, ist das ok. {% endif %}
Step 3: Create and publish a page
URL of this page: /spf-check/ (to match the Form in the twig-template)
On this page:
[jsoncontentimporterpro nameoftemplate="spfcheck" orderofshortcodeeval=10]
Step 4: Create another JCI-Template
Name: chtgpt
URL:
https://api.openai.com/v1/completions
URLParam: q
Method: CURL-POST
Curloptions:
CURLOPT_HTTPHEADER=Authorization: Bearer YOUR_CHAT_GPT_TOKEN##Content-Type: application/json;CURLOPT_POSTFIELDS={ "model": "text-davinci-003", "prompt": "##param1##", "max_tokens": 700, "temperature": 0 }
Cachetime: 60000 (for testing – each ChatGPT requests costs ChatGPT-Token)
Timeout: 30 (give ChatGPT a bit time to answer)
Twig:
{{ _context | json_encode() }}