No-ip.org DUC nachbauen ?

  • Hallo Leute

    Ich denke mal ihr kennt alle no-ip.org (oder dynDNS) bei no-ip.org ist es so das man sich ein programm mit dem namen no-ip.duc downloaden und installieren muss, über diesen wird dann die statische ip initialisiert
    und ich würde jetzt gerne diesen no-ip.duc nachbauen. Nur leider fällt mir hierzu nicht einmal der geringste ansatz ein wie dies realisierbar wäre.

    Habt ihr dazu irgendwelche ideen ? hatt so etwas schon einmal jemand gemacht ? Ist es Überhaupt zu realisieren und wenn ja wie ?

    Ich hoffe auf viele Tips und anregungen

    Mfg Eistee :)?(

  • Das sollte keine Problem darstellen, bei no-ip.org bzw. bei dyndns.com kann man über eine URL seinen Account updaten. Ich bastele mal was zusammen, mal schauen was bei rum kommt :)

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

  • So ich habe mir gedacht, ich mache es mal für no-ip.org und habe auch fleißig Kommentare in das Script gehämmert.

    Spoiler anzeigen
    [autoit]


    #NoTrayIcon ; <-- Kein Trayicon anzeigen
    #cs ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    AutoIt Version: 3.2.12.0
    Author: McPoldy

    [/autoit] [autoit][/autoit] [autoit]

    Script Function:
    Diese Script soll prüfen ob unsere derzeitige IP (z.B. der Zuhause) mit
    der IP bei http://www.no-ip.org übereinstimmt.
    Folgende Schritte sind dazu nötig:
    1. Prüfen welche IP aktuell bei no-ip.org hinterlegt ist
    2. Prüfen welche IP aktuell bei uns als öffentliche IP da ist
    3. Ggf. die IP auf no-ip.org updaten.

    [/autoit] [autoit][/autoit] [autoit]

    #ce ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    ; Includes
    #include <IE.au3>
    #include <Inet.au3>
    #include <file.au3>
    #Include <Constants.au3>
    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    ; <-- ENDE

    [/autoit] [autoit][/autoit] [autoit]

    ; Optionen
    Opt("TrayMenuMode",1)
    Opt("TrayOnEventMode",1)
    ; <-- ENDE

    [/autoit] [autoit][/autoit] [autoit]

    ; Konstanten
    Const $bolRunEndless = True ; <-- Soll das Skript ständig laufen
    Const $intIntervall = 15 ; <-- Alle wieviel Minuten soll geprüft werden
    Const $bolLog = True ; <-- Soll eine Logdatei erstellt werden
    Const $strLogFile = @ScriptDir & '\ipudater.log' ; <-- Pfad zum Logfile
    ; <-- ENDE

    [/autoit] [autoit][/autoit] [autoit]

    ; Zugangsdaten zu no-ip.org
    Local $strUser = 'xxxxxxxxxxxxxxxxxxxxxxxx' ; <-- Anmeldename bei No-IP.org
    Local $strPwd = 'xxxxx' ; <-- Unser Passwort
    Local $strDomain = 'xxxxxxxxxxxxxxxx' ; <-- Unsere Domain bei No-IP.org
    ; <-- ENDE

    [/autoit] [autoit][/autoit] [autoit]

    ; Dekleration allgemeiner Variablen
    Local $strUpdateUrl = '' ; <-- Hier wird nachher die URL gespeichert, die wir benötigen um unsere IP zu aktualisieren
    Local $strLocalIP = '' ; <-- Hier wird unsere derzeitige lokale (vom ISP zugewiesene) IP gespeichert
    Local $strRemoteIP = '' ; <-- Hier wird unsere derzeitige remote (bei No-IP hinterlegte) IP gespeichert
    Local $strLastCheck = '' ; <-- Hier wird gespeichert wann das letzte mal geprüft wurde
    ; <-- ENDE

    [/autoit] [autoit][/autoit] [autoit]

    ; Allgemeiner Teil
    _Log("Programm gestartet") ; <-- Programm gestartet Log Eintrag
    _GetIPs() ; <-- Hole IP`s

    [/autoit] [autoit][/autoit] [autoit]

    If $bolRunEndless Then ; <-- Prüfe ob Endlosbetrieb aktiv ist
    _CreateTray() ; <-- Tray Menü anzeigen
    AdlibEnable("_Main",(1000 * 60 * $intIntervall)) ; <-- Setze Adlib mit angabe der Minuten in der geprüfter werden soll
    While 1
    Sleep(200)
    WEnd
    Else ; <-- Wenn nur einmal ausgeführt werden soll dann mache hier weiter
    _Main()
    _Exit()
    EndIf
    ; <-- ENDE

    [/autoit] [autoit][/autoit] [autoit]

    ; Die Hauptfunktion die in bestimmten Abständen aufgerufen wird
    Func _Main()
    _getIps() ; <-- Hole aktuelle IP`s
    If $strLocalIP <> $strRemoteIP Then _Update($strLocalIP) ; <-- Falls die IP`s unterschiedlich sind führe ein Update aus
    EndFunc
    ; <-- ENDE

    [/autoit] [autoit][/autoit] [autoit]

    ; Tray-Menü Erstellung
    Func _CreateTray()
    $infoitem = TrayCreateItem("Info Anzeige")
    TrayItemSetOnEvent(-1,"_ShowInfo")
    $logitem = TrayCreateItem("Log Anzeige")
    TrayItemSetOnEvent(-1,"_openLog")
    TrayCreateItem("")
    $exititem = TrayCreateItem("Exit")
    TrayItemSetOnEvent(-1,"_Exit")
    TraySetState()
    TraySetClick(3)
    EndFunc
    ; <--Ende

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; Hier werden die beiden IP`s geholt
    Func _getIPs()
    TCPStartup() ; <-- TCP starten, wird für TCPNameToIP benötigt
    $strLocalIP = _GetIP() ; <-- Unsere vom ISP zugewiesene IP
    _Log("Folgende lokale IP wurde ermittelt: " & $strLocalIP)
    $strRemoteIP = TCPNameToIP($strDomain) ; <-- Unsere IP bei No-IP
    _Log("Folgende remote IP wurde ermittelt: " & $strLocalIP)
    TCPShutdown() ; <-- TCP wieder stoppen
    EndFunc
    ; <-- ENDE

    [/autoit] [autoit][/autoit] [autoit]

    ; Hier wird das Update durchgeführt
    Func _Update($Ip,$User = $strUser,$Pwd = $strPwd,$Domain = $strDomain)
    _Log("Update wurde gestartet....")
    $strUpdateUrl = StringFormat('http://dynupdate.no-ip.com/dns?username=%s&password=%s&hostname=%s&ip=%s',$User,$Pwd,$Domain,$Ip) ; <-- Unsere Update URL
    $oIE = _IECreate ($strUpdateUrl)
    If _IEBodyReadText($oIE) = StringFormat("%s:0",$strDomain) Or _IEBodyReadText($oIE) = StringFormat("%s:1",$strDomain) Then
    _Log("Update erfolgreich")
    Else
    _Log("Update NICHT erfolgreich")
    EndIf
    EndFunc
    ; <-- ENDE

    [/autoit] [autoit][/autoit] [autoit]

    ; Hier wird das Logfile geschrieben
    Func _Log($text)
    If $bolLog Then ; <-- Soll geloggt werden, siehe Konstanten
    $strLastCheck = StringFormat("%04d.%02d.%02d - %02d:%02d:%02d",@YEAR,@MON,@MDAY,@HOUR,@MIN,@SEC) ; <-- Aktuelles Datum
    _FileWriteLog($strLogFile,$text,0) ; <-- Schreiben der Log Datei
    EndIf
    EndFunc
    ; <-- ENDE

    [/autoit] [autoit][/autoit] [autoit]

    ; Logdatei im Default Texteditor öffnen
    Func _openLog()
    ShellExecute($strLogFile)
    EndFunc
    ; <-- ENDE

    [/autoit] [autoit][/autoit] [autoit]

    ; Fenster für Infoanzeige
    Func _ShowInfo()
    #Region ### START Koda GUI section ### Form=C:\Dokumente und Einstellungen\Jens\Desktop\ipupdater.kxf
    $frmMain = GUICreate("frmMain", 520, 114, -1, -1, BitOR($WS_POPUP,$WS_CLIPSIBLINGS))
    GUISetBkColor(0x9DB9EB)
    $lblLine01 = GUICtrlCreateLabel("", 0, 24, 520, 2)
    GUICtrlSetBkColor(-1, 0x000000)
    $lblTitel = GUICtrlCreateLabel("STATUS - Übersicht IP Updater", 180, 4, 204, 17)
    GUICtrlSetFont(-1, 8, 800, 4, "Verdana")
    $lblLokalIP = GUICtrlCreateLabel("Lokale IP: " & $strLocalIP, 25, 38, 240, 17)
    GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
    $lblRemoteIP = GUICtrlCreateLabel("Remote IP: " & $strRemoteIP, 275, 38, 240, 25)
    GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
    $lblLine02 = GUICtrlCreateLabel("", 0, 70, 520, 2)
    GUICtrlSetBkColor(-1, 0x000000)
    $lblLastCheck = GUICtrlCreateLabel("Letzte Prüfung: " & $strLastCheck, 100, 78, 312, 25)
    GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
    $lblLine03 = GUICtrlCreateLabel("lblLine03", 0, 111, 520, 2)
    GUICtrlSetBkColor(-1, 0x000000)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    GUIDelete($frmMain)
    ExitLoop
    EndSwitch
    WEnd
    EndFunc
    ; <-- ENDE

    [/autoit] [autoit][/autoit] [autoit]

    ; Diese Funktion wird beim beenden des Scripts ausgeführt
    Func _Exit()
    If $bolRunEndless Then AdlibDisable() ; <-- Falls Entlosbetrieb, wird Adlib deaktiviert
    _Log("Letze eigene IP: " & $strLocalIP) ; <-- Abschliessende Log Einträge
    _Log("Letze remote IP: " & $strRemoteIP) ; <-- Abschliessende Log Einträge
    _Log("Zuletzt geprüft: " & $strLastCheck) ; <-- Abschliessende Log Einträge
    _Log("Programm wird nun beendet.") ; <-- Abschliessende Log Einträge
    Exit 0
    EndFunc

    [/autoit]

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

    Einmal editiert, zuletzt von McPoldy (23. Juni 2008 um 06:41)

  • Gut :) Jetzt nur noch _IECreate mit _INetGetSource ersetzen... Der IE wird nicht benötigt :)

  • Versteckbar:
    Am Anfang des Skripts folgende Zeilen einfügen:

    Spoiler anzeigen
    [autoit]

    Global $TrayNotShowing = False
    HotKeySet("#n","_ToggleTray")
    Func _ToggleTray()
    $TrayNotShowing = Not $TrayNotShowing
    TraySetState($TrayNotShowing+1)
    EndFunc

    [/autoit]


    Dann kann das TrayMenu mit {Windows} - N versteckt und wieder angezeigt werden.
    Zum verstecken von Beginn an:
    Global $TrayNotShowing = True und in _CreateTray() das TrayItemSetState löschen :)

  • ok echt grossen dank an euch

    MfG Eistee


    Edit:\ habe es wie gesagt angepasst ist aber immer noch im tray ?

    Spoiler anzeigen
    [autoit]

    Global $TrayNotShowing = TRUE
    HotKeySet("#n","_ToggleTray")
    Func _ToggleTray()
    $TrayNotShowing = Not $TrayNotShowing
    TraySetState()
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    #NoTrayIcon ; <-- Kein Trayicon anzeigen
    #cs ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    AutoIt Version: 3.2.12.0
    Author: McPoldy

    [/autoit] [autoit][/autoit] [autoit]

    Script Function:
    Diese Script soll prüfen ob unsere derzeitige IP (z.B. der Zuhause) mit
    der IP bei http://www.no-ip.org übereinstimmt.
    Folgende Schritte sind dazu nötig:
    1. Prüfen welche IP aktuell bei no-ip.org hinterlegt ist
    2. Prüfen welche IP aktuell bei uns als öffentliche IP da ist
    3. Ggf. die IP auf no-ip.org updaten.

    [/autoit] [autoit][/autoit] [autoit]

    #ce ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    ; Includes
    #include <IE.au3>
    #include <Inet.au3>
    #include <file.au3>
    #Include <Constants.au3>
    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    ; <-- ENDE

    [/autoit] [autoit][/autoit] [autoit]

    ; Optionen
    Opt("TrayMenuMode",1)
    Opt("TrayOnEventMode",1)
    ; <-- ENDE

    [/autoit] [autoit][/autoit] [autoit]

    ; Konstanten
    Const $bolRunEndless = True ; <-- Soll das Skript ständig laufen
    Const $intIntervall = 15 ; <-- Alle wieviel Minuten soll geprüft werden
    Const $bolLog = True ; <-- Soll eine Logdatei erstellt werden
    Const $strLogFile = @ScriptDir & '\ipudater.log' ; <-- Pfad zum Logfile
    ; <-- ENDE

    [/autoit] [autoit][/autoit] [autoit]

    ; Zugangsdaten zu no-ip.org
    Local $strUser = 'to//////////de' ; <-- Anmeldename bei No-IP.org
    Local $strPwd = '///////c' ; <-- Unser Passwort
    Local $strDomain = '////////' ; <-- Unsere Domain bei No-IP.org
    ; <-- ENDE

    [/autoit] [autoit][/autoit] [autoit]

    ; Dekleration allgemeiner Variablen
    Local $strUpdateUrl = '' ; <-- Hier wird nachher die URL gespeichert, die wir benötigen um unsere IP zu aktualisieren
    Local $strLocalIP = '' ; <-- Hier wird unsere derzeitige lokale (vom ISP zugewiesene) IP gespeichert
    Local $strRemoteIP = '' ; <-- Hier wird unsere derzeitige remote (bei No-IP hinterlegte) IP gespeichert
    Local $strLastCheck = '' ; <-- Hier wird gespeichert wann das letzte mal geprüft wurde
    ; <-- ENDE

    [/autoit] [autoit][/autoit] [autoit]

    ; Allgemeiner Teil
    _Log("Programm gestartet") ; <-- Programm gestartet Log Eintrag
    _GetIPs() ; <-- Hole IP`s

    [/autoit] [autoit][/autoit] [autoit]

    If $bolRunEndless Then ; <-- Prüfe ob Endlosbetrieb aktiv ist
    _CreateTray() ; <-- Tray Menü anzeigen
    ;~ AdlibEnable("_Main",(1000 * 60 * $intIntervall)) ; <-- Setze Adlib mit angabe der Minuten in der geprüfter werden soll
    While 1
    Sleep(200)
    WEnd
    Else ; <-- Wenn nur einmal ausgeführt werden soll dann mache hier weiter
    _Main()
    _Exit()
    EndIf
    ; <-- ENDE

    [/autoit] [autoit][/autoit] [autoit]

    ; Die Hauptfunktion die in bestimmten Abständen aufgerufen wird
    Func _Main()
    _getIps() ; <-- Hole aktuelle IP`s
    If $strLocalIP <> $strRemoteIP Then _Update($strLocalIP) ; <-- Falls die IP`s unterschiedlich sind führe ein Update aus
    EndFunc
    ; <-- ENDE

    [/autoit] [autoit][/autoit] [autoit]

    ; Tray-Menü Erstellung
    Func _CreateTray()
    $infoitem = TrayCreateItem("Info Anzeige")
    TrayItemSetOnEvent(-1,"_ShowInfo")
    $logitem = TrayCreateItem("Log Anzeige")
    TrayItemSetOnEvent(-1,"_openLog")
    TrayCreateItem("")
    $exititem = TrayCreateItem("Exit")
    TrayItemSetOnEvent(-1,"_Exit")
    TraySetState()
    TraySetClick(3)
    EndFunc
    ; <--Ende

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; Hier werden die beiden IP`s geholt
    Func _getIPs()
    TCPStartup() ; <-- TCP starten, wird für TCPNameToIP benötigt
    $strLocalIP = _GetIP() ; <-- Unsere vom ISP zugewiesene IP
    _Log("Folgende lokale IP wurde ermittelt: " & $strLocalIP)
    $strRemoteIP = TCPNameToIP($strDomain) ; <-- Unsere IP bei No-IP
    _Log("Folgende remote IP wurde ermittelt: " & $strLocalIP)
    TCPShutdown() ; <-- TCP wieder stoppen
    EndFunc
    ; <-- ENDE

    [/autoit] [autoit][/autoit] [autoit]

    ; Hier wird das Update durchgeführt
    Func _Update($Ip,$User = $strUser,$Pwd = $strPwd,$Domain = $strDomain)
    _Log("Update wurde gestartet....")
    $strUpdateUrl = StringFormat('http://dynupdate.no-ip.com/dns?username=%s&password=%s&hostname=%s&ip=%s',$User,$Pwd,$Domain,$Ip) ; <-- Unsere Update URL
    $oIE = _IECreate ($strUpdateUrl)
    If _IEBodyReadText($oIE) = StringFormat("%s:0",$strDomain) Or _IEBodyReadText($oIE) = StringFormat("%s:1",$strDomain) Then
    _Log("Update erfolgreich")
    Else
    _Log("Update NICHT erfolgreich")
    EndIf
    EndFunc
    ; <-- ENDE

    [/autoit] [autoit][/autoit] [autoit]

    ; Hier wird das Logfile geschrieben
    Func _Log($text)
    If $bolLog Then ; <-- Soll geloggt werden, siehe Konstanten
    $strLastCheck = StringFormat("%04d.%02d.%02d - %02d:%02d:%02d",@YEAR,@MON,@MDAY,@HOUR,@MIN,@SEC) ; <-- Aktuelles Datum
    _FileWriteLog($strLogFile,$text,0) ; <-- Schreiben der Log Datei
    EndIf
    EndFunc
    ; <-- ENDE

    [/autoit] [autoit][/autoit] [autoit]

    ; Logdatei im Default Texteditor öffnen
    Func _openLog()
    ShellExecute($strLogFile)
    EndFunc
    ; <-- ENDE

    [/autoit] [autoit][/autoit] [autoit]

    ; Fenster für Infoanzeige
    Func _ShowInfo()
    #Region ### START Koda GUI section ### Form=C:\Dokumente und Einstellungen\Jens\Desktop\ipupdater.kxf
    $frmMain = GUICreate("frmMain", 520, 114, -1, -1, BitOR($WS_POPUP,$WS_CLIPSIBLINGS))
    GUISetBkColor(0x9DB9EB)
    $lblLine01 = GUICtrlCreateLabel("", 0, 24, 520, 2)
    GUICtrlSetBkColor(-1, 0x000000)
    $lblTitel = GUICtrlCreateLabel("STATUS - Übersicht IP Updater [by Progandy]", 130, 4, 280, 17)
    GUICtrlSetFont(-1, 8, 800, 4, "Verdana")
    $lblLokalIP = GUICtrlCreateLabel("Lokale IP: " & $strLocalIP, 25, 38, 240, 17)
    GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
    $lblRemoteIP = GUICtrlCreateLabel("Remote IP: " & $strRemoteIP, 275, 38, 240, 25)
    GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
    $lblLine02 = GUICtrlCreateLabel("", 0, 70, 520, 2)
    GUICtrlSetBkColor(-1, 0x000000)
    $lblLastCheck = GUICtrlCreateLabel("Letzte Prüfung: " & $strLastCheck, 100, 78, 312, 25)
    GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
    $lblLine03 = GUICtrlCreateLabel("lblLine03", 0, 111, 520, 2)
    GUICtrlSetBkColor(-1, 0x000000)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    GUIDelete($frmMain)
    ExitLoop
    EndSwitch
    WEnd
    EndFunc
    ; <-- ENDE

    [/autoit] [autoit][/autoit] [autoit]

    ; Diese Funktion wird beim beenden des Scripts ausgeführt
    Func _Exit()
    If $bolRunEndless Then AdlibDisable() ; <-- Falls Entlosbetrieb, wird Adlib deaktiviert
    _Log("Letze eigene IP: " & $strLocalIP) ; <-- Abschliessende Log Einträge
    _Log("Letze remote IP: " & $strRemoteIP) ; <-- Abschliessende Log Einträge
    _Log("Zuletzt geprüft: " & $strLastCheck) ; <-- Abschliessende Log Einträge
    _Log("Programm wird nun beendet.") ; <-- Abschliessende Log Einträge
    Exit 0
    EndFunc

    [/autoit]
  • Moin, doch einen "Fehler" hatte ich drin, den haste aber bestimmt schon gesehen, ich hate in Zeile 58 die Zeile AdLibEnable auskommentiert. Ich habe es gestern und heute noch mal laufen lassen und es klappt bei mir ohne Probleme, ich habe doch eine Log-Funktion mit eingebaut, was schreibt die eigentlich?

    Nachtrag, ich bastele noch nen bissel rum, da mir noch so ein zwei Sachen aufgefallen sind, die ich nicht so gut finde.

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

    Einmal editiert, zuletzt von McPoldy (23. Juni 2008 um 07:28)

  • ich habe die zeile 58 jetzt wieder integriert und es geht immer noch nicht erkläre mich bitte nicht für blöd oder so aber ich kann wenn ich dieses teil laufen habe immer noch niht drauf zugreifen wie wenn ich den original no-ip.duc verwende

    P.s. wenn es dir vielleicht weiterhilft hier die letzte logfile

    Spoiler anzeigen
    [autoit]

    2008-06-23 08:08:18 : Folgende remote IP wurde ermittelt: 85.181.144.64
    2008-06-23 08:08:18 : Folgende lokale IP wurde ermittelt: 85.181.144.64
    2008-06-23 08:08:17 : Programm gestartet
    2008-06-23 08:07:18 : Programm wird nun beendet.
    2008-06-23 08:07:18 : Zuletzt geprüft: 2008.06.23 - 08:07:18
    2008-06-23 08:07:18 : Letze remote IP: 85.151.150.188
    2008-06-23 08:07:18 : Letze eigene IP: 85.181.144.64
    2008-06-23 08:03:52 : Folgende remote IP wurde ermittelt: 85.181.144.64
    2008-06-23 08:03:52 : Folgende lokale IP wurde ermittelt: 85.181.144.64
    2008-06-23 08:03:51 : Programm gestartet

    [/autoit]

    desweiteren habe ich keinen router (sitze nur an nem modem) und auch keine firewall
    woran liegt das bitte ?

  • Hmm, ich kriege in der Zeile 117 Ein Fehler: "Incorrect Number of parameters in function call"

    Wieso?

    Einmal editiert, zuletzt von Remax (23. Juni 2008 um 08:51)