Dynamisk IP (DDNS)

Såfremt du har dynamisk IP og ønsker at benytte GratisDNS til at hoste dit website, FTP eller hvad det nu måtte være, kan du evt. bruge dette script til at vedligeholde din IP hos GratisDNS.

BEMÆRK: Har du ikke allerede gjort det, så skal du oprette et DDNS kodeord, dette gøres på kontrolpanelet under Bruger Setup → DDNS.

BEMÆRK: Vi yder ingen support på scripts på denne side, da disse scripts ikke er lavet af os.

Det du skal gøre er følgende:

  1. Kopier koden herunder.
  2. Start Notesblok og indsætte koden.
  3. Gem Filen som GratisDNS.vbs på C drevet.
  4. Ændre dine (GratisDNS) bruger informationer i bunden af koden.
  5. Klik på start→Alle Programmer→Tilbehør→system værktøjer og klikke på Planlagte Opgaver
  6. Dobbelt klik på Planlæg ny opgave
  7. klik på Næste
  8. Klik på Gennemse… og navigere til C:\Windows\System32\cscript.exe og klik Åbn
  9. Markere Feltet Når min computer starter og klik på Næste
  10. Udfyld bruger informationer og klik på Næste
  11. Markere Åben avancerede egenskaber… og klik på Udfør
  12. Under Fanebladet Job i feltet Kør: skriver du følgende: C:\WINDOWS\system32\cscript.exe C:\GratisDNS.vbs //B

Sådan nu har du oprettet en opgave som kører 1 gang, hver gang computeren starter. Opgaven køre VBS filen som sender din nye IP addresse til GratisDNS.

Du kan selv tilrette hvor ofte opgaven skal køre, f.eks. hver 3. time.

'##################################################################################
'Udviklet af Paw Jershauge for indlæg på div. coding sites...
'Se eventuelt mere på www.XplainVB.dk eller www.XplainASP.dk
'##################################################################################
'----------------------------------------------------------------------------------
Function binToText(varBinData, intDataSizeInBytes)
Const adFldLong = &H80
Const adVarChar = 200
Set objRS = CreateObject("ADODB.Recordset")
objRS.Fields.Append "txt", adVarChar, intDataSizeInBytes, adFldLong
objRS.Open
objRS.AddNew
objRS.Fields("txt").AppendChunk varBinData
binToText = objRS("txt").value
objRS.Close
Set objRS = Nothing
End Function
'----------------------------------------------------------------------------------
Function GetURL(URL,method,ReturnData)
on error resume next
set xmlhttp = CreateObject(method)
if method="MSXML2.ServerXMLHTTP.4.0" and ProxyAddress<>"" then
xmlhttp.setProxy 0,ProxyAddress,""
if proxyusername<>"" then
xmlhttp.setProxyCredentials proxyusername, proxypassword
end if
end if
xmlhttp.open "GET", URL, false
if method="Microsoft.XMLHTTP" then
xmlhttp.send
else
xmlhttp.send()
end if
ReturnData = binToText(xmlhttp.responseBody, 100000)
if err.number <> 0 then
GetURL=false
response.end
else
GetURL=true
end if
set xmlhttp = nothing
End Function
'-----------------------------------------------------------------------------------
Function GetUrlData(Url,ReturnData)
Dim methods(3)
methods(2)="MSXML2.ServerXMLHTTP.4.0"
methods(1)="MSXML2.ServerXMLHTTP.3.0"
methods(0)="MSXML2.ServerXMLHTTP"
methods(3)="Microsoft.XMLHTTP"
success=false
Err = 0
for each method in methods
if GetURL(Url,method,ReturnData) then
If Not 0 = Err Then
GetUrlData = False
else
GetUrlData = True
exit for
end if
end if
Err=0
next
end function
'------------------------------------------------------------------------------------
Function ValidateIp(IPaddress)
Dim MyIPArray,i,IpBlockNum
if instr(1,IPaddress,".") > 1 then
MyIPArray = split(IPaddress,".")
if ubound(MyIPArray) = 3 then
IpBlockNum = true
for i = 0 to 3
if not isnumeric(MyIPArray(i)) then
IpBlockNum = false
Exit For
else
if int(MyIPArray(i)) > 255 or int(MyIPArray(i)) < 0 then
IpBlockNum = false
Exit For
end if
end if
next
ValidateIp = IpBlockNum
else
ValidateIp = false
end if
else
ValidateIp = false
end if
End Function
'-------------------------------------------------------------------------------------
Function GetMyIP(MyPublicIp)
Dim MyIP
if GetUrlData("https://api.ipify.org/",MyIP) then
if ValidateIp(MyIP) then
MyPublicIp = MyIP
GetMyIP = true
else
MyPublicIp = ""
GetMyIP = false
end if
else
GetMyIP = false
end if
End Function
'--------------------------------------------------------------------------------------
if GetMyIP(PubIp) then
Dim UserName ,Password ,Host ,Domain
'GratisDNS URL = https://ssl.gratisdns.dk/ddns.phtml?u=<username>&p=<kodeord>&d=<domæne>&h=<host>&i=<IP>
UserName = ""
Password = ""
Host = ""
Domain = ""
if GetUrlData("https://ssl.gratisdns.dk/ddns.phtml?u=" & UserName & "&p=" & Password & "&d=" & Domain & "&h=" & Host & "&i=" & PubIp,GratisDnsSvar) then
msgbox "Public IP:" & PubIp & vbcrlf & "GratisDNS returnerede dette svar:" & vbcrlf & vbcrlf & GratisDnsSvar,64,"Opdatering af GratisDNS (af Paw Jershauge)"
else
msgbox "Public IP:" & PubIp & vbcrlf & "GratisDNS blev IKKE opdateret" & vbcrlf & vbcrlf & GratisDnsSvar,16,"Opdatering af GratisDNS (af Paw Jershauge)"
end if
End if
'##################################################################################

Tusinde tak til Paw for hjælpen med VB scriptet.

https://github.com/lsim/gratisddns/blob/master/gratisddns.sh

Tusinde tak til Lars Ole Simonsen for Linux scriptet.