PC SOFT
ONLINE REPOSITORY
FOR WINDEVWEBDEV AND WINDEV MOBILE

Home |  | Sign in | English US
Alter DNS Failover with Api CloudFlare
Published by Boller
in the category Tools
New features



Description
Alter DNS Failover with Api CloudFlare

BY TOM SILVA
QUE ME AJUDOU A FAZER O EXEMPLO

FINALIDADE

DIGAMOS QUE TENHA UM SERVIDOR COM MAIS DE UMA INTERNET E CADA PORTA RJ45
ENTAO ASSIM VOCE POSSUI 2 IP NO MESMO COMPUTADOR
DIGAMOS QUE UM IP FICOU FORA DO AR
SE COLOCAR ESSE CODIGO NUM LOOP ETERNO
VAI ALTERAR PARA O IP DISPONIVEL NA TABELA LOCAL E VAI MONTAR O JSON PARA ENVIAR PARA O CLOUDFLARE QUE AGORA É OUTRO IP
EM ALGUNS MINUTOS O SERVIDOR VOLTA A FUNCIONAR POIS O CLOUDFLARE VOLTA A RESPONDER MAS POR OUTRO IP


GOAL

SAY YOU HAVE A SERVER WITH MORE THAN ONE INTERNET AND EACH RJ45 PORT
SO YOU HAVE 2 IP ON THE SAME COMPUTER
LET'S SAY AN IP IS OUT OF AIR
IF YOU PUT THIS CODE IN AN ETERNAL LOOP
IT WILL CHANGE TO THE IP AVAILABLE IN THE LOCAL TABLE AND IT WILL ASSEMBLE THE JSON TO SEND TO CLOUDFLARE WHICH IS NOW ANOTHER IP
IN A FEW MINUTES THE SERVER WILL BE WORKING AGAIN BECAUSE CLOUDFLARE WILL BE RESPONDING AGAIN BUT FROM A DIFFERENT IP

ANEXO FONTE DO PROJETO
ALTERAR O SEUS IPS, DNS E SENHA TOKEN PARA FAZER FUNCIONAR


CODE

// Summary: <specify the procedure action>
// Syntax:
//API_Cloudflare ()
//
// Parameters:
// None
// Example:
// <Specify a usage example>
//
// Return value:
PROCEDURE API_Cloudflare()

HourGlass(True)

bok is boolean
oReq is httpRequest
oResultado is httpResponse

jSend is JSON
jSend.name = "vpnwxbr.wxsolucoes.com.br"
jSend.proxied = False
jSend.type = "A"
jSend.ttl = 3600

oReq.URL = "https://api.cloudflare.com/client/v4/zones/9efff2175544b87a406e08f2f648a6af/dns_records/43f88addd578986670afff56d32fe1a1"
oReq..Method = httpPatch
oReq..ContentType = mimeTypeJSON
oReq..Header["Authorization"] = "Bearer wlDgq--------------------------------------------------" ///COLOQUE AQUI O SEU TOKEN

//busca que ip esta atualmente funcionando com prioridade o da horizon e copel
HReset(t005_ip_atual_local)

IF HReadSeek(t005_ip_atual_local,t005_id,1,hIdentical) = True THEN

IF HFound(t005_ip_atual_local) THEN

IF Ping(DNS_IP_Copel,10s) = True AND Ping(DNS_IP_Horizon,10s) = True
oReq..UserAgent = "WX SOLUCOES"
jSend.comment = "VPN trabalhando pela Horizon"
jSend.content = DNS_IP_Horizon
t005_ip_atual_local.t005_horizon = True
t005_ip_atual_local.t005_copel = False
t005_ip_atual_local.t005_startlink = False
t005_ip_atual_local.t005_net_casa = False
t005_ip_atual_local.t005_ip_atual = DNS_IP_Horizon
ELSE IF Ping(DNS_IP_Copel,10s) = True AND Ping(DNS_IP_Horizon,10s) = False
oReq..UserAgent = "WX SOLUCOES"
jSend.comment = "VPN trabalhando pela copel"
jSend.content = DNS_IP_Copel
t005_ip_atual_local.t005_horizon = False
t005_ip_atual_local.t005_copel = True
t005_ip_atual_local.t005_startlink = False
t005_ip_atual_local.t005_net_casa = False
t005_ip_atual_local.t005_ip_atual = DNS_IP_Copel
ELSE IF Ping(DNS_IP_Copel,10s) = False AND Ping(DNS_IP_Horizon,10s) = True THEN
oReq..UserAgent = "WX SOLUCOES"
jSend.comment = "VPN trabalhando pela horizon"
jSend.content = DNS_IP_Horizon
t005_ip_atual_local.t005_horizon = True
t005_ip_atual_local.t005_copel = False
t005_ip_atual_local.t005_startlink = False
t005_ip_atual_local.t005_ip_atual = DNS_IP_Horizon
ELSE IF Ping(DNS_IP_Copel,10s) = False AND Ping(DNS_IP_Horizon,10s) = False AND Ping(DNS_IP_Starlink_NoIP,10s) = True
oReq..UserAgent = "WX SOLUCOES"
jSend.comment = "VPN trabalhando pela Starlink"
jSend.content = DNS_IP_Starlink_NoIP
t005_ip_atual_local.t005_horizon = False
t005_ip_atual_local.t005_copel = False
t005_ip_atual_local.t005_startlink = True
t005_ip_atual_local.t005_net_casa = False
t005_ip_atual_local.t005_ip_atual = DNS_IP_Starlink_NoIP
ELSE IF Ping(DNS_IP_Copel,10s) = False AND Ping(DNS_IP_Horizon,10s) = False AND Ping(DNS_IP_Starlink_NoIP,10s) = False
oReq..UserAgent = "WX SOLUCOES"
jSend.comment = "VPN trabalhando pela Net Casa"
jSend.content = DNS_IP_Net_Casa_NoIp
t005_ip_atual_local.t005_horizon = False
t005_ip_atual_local.t005_copel = False
t005_ip_atual_local.t005_startlink = False
t005_ip_atual_local.t005_net_casa = True
t005_ip_atual_local.t005_ip_atual = DNS_IP_Net_Casa_NoIp
ELSE
oReq..UserAgent = "WX SOLUCOES"
jSend.comment = "VPN trabalhando pela Horizon"
jSend.content = DNS_IP_Horizon
t005_ip_atual_local.t005_horizon = True
t005_ip_atual_local.t005_copel = False
t005_ip_atual_local.t005_startlink = False
t005_ip_atual_local.t005_net_casa = False
t005_ip_atual_local.t005_ip_atual = DNS_IP_Horizon
END

HModify(t005_ip_atual_local)

END

END

oReq..Content = jSend

oResultado = RESTSend(oReq)

jResult is JSON = oResultado..Content

IF oResultado.StatusCode = 200 THEN
bok = True
//Info("OK", oResultado..Content)
EDT_T005_ip_atual = jResult.result.content
//aqui tem que colocar uma procedure para notificar whatsapp ou email
ELSE
bok = False
Info("Erro: ",oResultado..Content,ErrorInfo()+CR+HErrorInfo())
END

//DNS_IP_Horizon is string = "187.95.147.139"
//DNS_IP_Copel is string = "177.220.154.126"
//DNS_IP_Starlink_NoIP is string = "srvwxtoken.ddns.net"
//DNS_IP_Net_Casa_NoIp is string = "srvwxtoken.ddns.net"
//DNS_IP_Serveraddr is string = "10.1.1.102"
//DNS_IP_Server is string = DNS_IP_Horizon
//DNS_CLOUDFLARE is string = "vpnwxbr.wxsolucoes.com.br"


TableDeleteAll(TABLE_IP_Status)

IF Ping(DNS_IP_Horizon,10s) = True THEN
TableAddLine(TABLE_IP_Status,"DNS_IP_Horizon: "+DNS_IP_Horizon,"True")
CBOX_T005_horizon = True
ELSE
TableAddLine(TABLE_IP_Status,"DNS_IP_Horizon: "+DNS_IP_Horizon,"False")
CBOX_T005_horizon = False
END

IF Ping(DNS_IP_Copel,10s) = True THEN
TableAddLine(TABLE_IP_Status,"DNS_IP_Copel: "+DNS_IP_Copel,"True")
CBOX_T005_copel = True
ELSE
TableAddLine(TABLE_IP_Status,"DNS_IP_Copel: "+DNS_IP_Copel,"False")
CBOX_T005_copel = False
END

IF Ping(DNS_IP_Starlink_NoIP,10s) = True THEN
TableAddLine(TABLE_IP_Status,"DNS_IP_Starlink_NoIP: "+DNS_IP_Starlink_NoIP,"True")
CBOX_T005_startlink = True
ELSE
TableAddLine(TABLE_IP_Status,"DNS_IP_Starlink_NoIP: "+DNS_IP_Starlink_NoIP,"False")
CBOX_T005_startlink = False
END

IF Ping(DNS_IP_Net_Casa_NoIp,10s) = True THEN
TableAddLine(TABLE_IP_Status,"DNS_IP_Net_Casa_NoIp: "+DNS_IP_Net_Casa_NoIp,"True")
CBOX_T005_outra_conexao = True
ELSE
TableAddLine(TABLE_IP_Status,"DNS_IP_Net_Casa_NoIp: "+DNS_IP_Net_Casa_NoIp,"False")
CBOX_T005_outra_conexao = False
END

IF Ping(DNS_IP_Serveraddr,10s) = True THEN
TableAddLine(TABLE_IP_Status,"DNS_IP_Serveraddr: "+DNS_IP_Serveraddr,"True")
CBOX_T005_outra_conexao1 = True
ELSE
TableAddLine(TABLE_IP_Status,"DNS_IP_Serveraddr: "+DNS_IP_Serveraddr,"False")
CBOX_T005_outra_conexao1 = False
END

IF Ping(DNS_IP_Server,10s) = True THEN
TableAddLine(TABLE_IP_Status,"DNS_IP_Server: "+DNS_IP_Server,"True")
CBOX_VPN_STATUS = True
ELSE
TableAddLine(TABLE_IP_Status,"DNS_IP_Server: "+DNS_IP_Server,"False")
CBOX_VPN_STATUS = False
END

IF Ping(DNS_IP_Hfsql,10s) = True THEN
TableAddLine(TABLE_IP_Status,"DNS_IP_Hfsql: "+DNS_IP_Hfsql,"True")
CBOX_HFSQL_STATUS = True
ELSE
TableAddLine(TABLE_IP_Status,"DNS_IP_Hfsql: "+DNS_IP_Hfsql,"False")
CBOX_HFSQL_STATUS = False
END

IF Ping(DNS_CLOUDFLARE,10s) = True THEN
TableAddLine(TABLE_IP_Status,"DNS_CLOUDFLARE: "+DNS_CLOUDFLARE,"True")
CBOX_CLOUDFLARE_STATUS = True
ELSE
TableAddLine(TABLE_IP_Status,"DNS_CLOUDFLARE: "+DNS_CLOUDFLARE,"False")
CBOX_CLOUDFLARE_STATUS = False
END

TableDisplay(TABLE_IP_Status,taInit)

HourGlass(False)

RESULT bok
Illustrations, screen shots
none
none
User reviews
(To evaluate this resource, click 'Write a review')
No review or comment? Be the first one!