Neue SLA bei kostenlosen Dyndns Accounts mittels AutoLoginScript umgehen

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.
Hallo,

hat schon jemand das Skript unter DSM 5.0 am laufen? Bei mir scheint das Skript nicht mehr zu laufen. Zumindest wird nichts mehr in der Logdatei protokolliert. Bis auf das Update von DSM 4.3 auf DSM 5.0 und damit verbunden auch das update auf Python (nicht Python 3) ist alles unverändert.

Grüße

Oli
 
Schon unter der Beta lief es bei mir nicht mehr.
Hab jetzt aber auch keine Lust mehr drauf, habe über einen externen Webspace meinen eignen dynanischen dns, indem ich meine IP und etwas html mit einer Weiterleitung per FTP draufschiebe.

Holger
 
Hallo
bin aktuell noch auf 4.3-3810 Update 4 und kann, so wie es aussieht, auch erst frühestens Wochenende Updaten.
Werde mir das dann mal anschauen und ggfls. ein HowTo/Fix für das Script bringen, falls möglich :rolleyes:

Gruß
 
Hallo,

vielen Dank für die schnelle Antwort / Hilfe.

Grüße

Oli
 
Hi
so habe nun auch auf 5.0-4458 geupdatet und wie erwartet funktionierte das Script auch bei mir nicht mehr.
Das Problem konnte hier aber ziemlich einfach lokalisiert werden. Und zwar verwendet DSM 5.x jetzt einen anderen Pfad für Python2.x.
So musste ich nur die Shebang-Zeile (1. Zeile im Script) abändern und schon geht wieder alles:
Rich (BBCode):
#!/usr/local/packages/@appstore/Python/usr/local/bin/python

Werds auch noch im wiki ändern

Zur Info noch am Rande: Mit Python3.x müsste ein wenig am Script selber geändert werden müssen, damit das funktionieren würde. Hierfür habe ich aber gerade weder die Zeit noch die Lust ;)

Gruß
 
Hallo,

weltklasse. Vielen Dank.
Hab's bei mir angepasst und rennt wieder.

Danke

Oli
 
Vielen Dank für den Hinweis ..... das wäre mir sonst glatt entgangen!!

Nun funktioniert es wieder!!!

Auch für den Hinweis zu Phyton 3.xxx .... Ich würde mich freuen, wenn du irgenwann die Zeit für ein update finden würdest :-) und werde solange geduldig warten ;-)
 
Auch für den Hinweis zu Phyton 3.xxx .... Ich würde mich freuen, wenn du irgenwann die Zeit für ein update finden würdest :-) und werde solange geduldig warten ;-)
Es ist problemlos möglich Python 2 und 3 parallel installiert und am Laufen zu haben. Deshalb sehe ich gerade nicht die Notwendigkeit das Script auf Python 3 umzustellen. :o

MfG
 
ui... und schon wieder etwas gelernt ... Danke! :o
 
So, hab' die ganze Zeit darauf gewartet, nun ist es dann soweit:

DynDNS.com wird nun endgültig die kostenlosen Accounts nach Ablauf von 30 Tagen löschen!
Eben bekam ich die Mail zur Info von DynDNS.com, dass sie sich "schweren Herzens" dazu entschlossen haben.

Da hilft dann wohl auch kein monatliches Einloggen mehr... :(
 
Jap ... kann ich bestätigen.
Hier die Original Nachricht:
To our Dyn free hostname users:

For the last 15 years, all of us at Dyn have taken pride in offering you and millions of others a free version of our Dynamic DNS Pro product. What was originally a product built for a small group of users has blossomed into an exciting technology used around the world.

That is why with mixed emotions we are notifying you that in 30 days, we will be ending our free hostname program. This change in the business will allow us to invest in our customer support teams, Internet infrastructure, and platform security so that we can continue to strive to deliver an exceptional customer experience for our paying customers.

We would like to invite you to upgrade to VIP status for less than $20 -- a 25% discount good for any package of Remote Access (formerly DynDNS Pro). By doing so, you'll have access to customer support, additional hostnames, and more.

Here's how you get this done in two easy steps:

- Login to account.dyn.com.
- Click here to add Remote Access to your cart at the 25% off VIP rate. The discount will be applied upon checkout.

We thank you for your usage of Dyn through the years, and hope to continue to support you through Dyn Remote Access or other products for years to come. Visit our FAQ page or this blog post for more information.

Schade
 
Ok toll und kennt wer ein vergleichbares kostenloses Service eines anderen Anbieters?
 
no-ip oder
twodns, die hocken in Berlin glaube ich und haben eine coole Auswahl an Domainnamen... ;)

Stefan
 
Ok toll und kennt wer ein vergleichbares kostenloses Service eines anderen Anbieters?

Ich nutze schon seit einiger Zeit den MyFRITZ Dienst von AVM. Das monatliche Anmelden bei DynDNS ging mir auf die Nerven. Zusammen mit einem CNAME Eintrag zu meiner Domain klappt das genauso zuverlässig. Oder der Synology eigene Dienst.
 
Noch ist es ja für no-ip nicht notwendig .....
Würde sich denn das Script auf den Anbieter https://www.noip.com/ anpassen lassen??
 
das würde mich auch interessieren, da bei no-ip nämlich auch schon monatlich eingeloggt werden muss...
 
@Hogo Dorn:
Werde mich demnächst mal ransetzen und versuchen ein, für NoIP, funktionierendes script zu schreiben.

@Feuerwasser:
Ist das wirklich schon so, sich monatlich einloggen zu müssen? Ich habe diesbezüglich nichts gefunden.
 
Hier mal ne schnelle Rohfassung :rolleyes:
Wäre cool wenn die mal ein paar Leute testen könnten.
Was mir nur bisher aufgefallen ist: Wenn man sich öfter innerhalb von 15 min einloggt, wird der Login für einen kurzfristig gesperrt.
Also bitte kurze Rückinfo ...

Rich (BBCode):
#!/usr/local/packages/@appstore/Python/usr/local/bin/python

import urllib
import urllib2
import cookielib
import getopt
import sys
import logging

def getRandHTMLResponse(response):
    target = "<form id=\'login"
    targetresponse = "<div id=\'sign-up-wrap\'"

    response = response[response.find(targetresponse):len(response)]
    return response[response.find(target)+len(target):response.find(target)+len(target):response.find(target)+len(target)+4]

def getHiddenRandHTMLResponse(response):
    target = "<input type=\'hidden\' name=\'Login\' value=\'"
    targetresponse = "<div id=\'sign-up-wrap\'"
    parsedres = response[response.find(targetresponse):len(response)]
    return parsedres[parsedres.find(target)+len(target):parsedres.find(target)+len(target)+34]

def checkLogin(response):
    target = "<title>No-IP Members Portal: Your No-IP</title>"
    if response.find(target) == -1:
        return False
    return True

def usage():
    print "usage: ./noipAutoLogin [options]"
    print ""
    print "options:"
    print "-h, --help 	 show this help message and exit"
    print "-u, --username   set your NoIP login_username"
    print "-p, --password   set your NoIP login_password"
    print ""
    print "example:"
    print "./noipAutoLogin -u username -p password"

class HTMLSession:
    cj = None
    opener = None
    txHeaders = None
    
    def __init__(self, txHeaders):
        #The CookieJar will hold any cookies necessary throughout the login process.
        self.cj = cookielib.MozillaCookieJar()
        self.txHeaders = txHeaders
        self.opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cj))
        urllib2.install_opener(self.opener)

    def setHeaders(self, txheaders):
        self.txHeaders = txHeaders

    def getHeaders(self):
        return self.txHeaders

    def openURI(self, uri, txdata):
        try:
            req = urllib2.Request(uri, txdata, self.txHeaders)
            # create a request object

            handle = urllib2.urlopen(req)
            # and open it to return a handle on the url

        except IOError as e:
            print 'we failed to open "%s".' % uri

            if hasattr(e, 'code'):
                print 'We failed with error code - %s.' % e.code
                logging.error('We failed with error code - %s.' % e.code)
            elif hasattr(e, 'reason'):
                print "The error object has the following 'reason' attribute :"
                print e.reason
                print "This usually means the server doesn't exist,'"
                print "is down, or we don't have an internet connection."
                return None
        else:
            return handle.read()

def main(argv):
    username = ""
    password = ""
    logfile = "/volume1/logs/noipAutoLogin.log"
    hiddenval = ""
    theurl = "https://www.noip.com/login"
    thelogouturl = "https://www.noip.com/logout"
    txdata = None
    txheaders =  {'User-agent' : 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'}
    # fake a user agent, some websites (like google) don't like automated exploration
    logging.basicConfig(filename=logfile,level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s', datefmt='%Y/%m/%d %H:%M:%S')

    try:
        opts, args = getopt.getopt(argv, "hu:p:", ["help", "username=","password="])
    except getopt.GetoptError:
        usage()
        logging.warning('Manual login with incorrect parameters')
        exit(2)
    for opt, arg in opts:
        if opt in ("-h", "--help"):
            usage()
            exit(2)
        elif opt in ("-u", "--username"):
            username = arg
        elif opt in ("-p", "--password"):
            password = arg

    myhtmlsession = HTMLSession(txheaders)
    response = myhtmlsession.openURI(theurl, None)

    if response == None:
        sys.exit(0)

    hiddenval = "1"
    txdata = urllib.urlencode({'username':username, 'password':password, 'Login':hiddenval, 'Login': "Sign In"})
    response = myhtmlsession.openURI(theurl, txdata)
    if response == None:
        sys.exit(0)
    
    #we should sleep here for about 10 seconds.
    if checkLogin(response):
        print 'We have succesfully logged into NoIP.'
        logging.info('We have succesfully logged into NoIP.')
    else:
        print 'Login failed'
        logging.info('Login failed')

    response = myhtmlsession.openURI(thelogouturl, None)
    if response == None:
        sys.exit(0)

if __name__ == "__main__":
    main(sys.argv[1:])

Gruß
 
Hammer wie schnell das ging! Danke!
2014/05/02 22:59:29 - INFO - We have succesfully logged into NoIP.
Ich lasse das Script jede Woche einmal ausführen, werde also nicht mit der Loginsperre konfrontiert werden.
Muss ich eigentlich das Script mit "chmod +x" ausführbar machen oder ist das überflüssig?
Könnte mich auch geirrt haben, da steht
Hostnames Expire Every 30 Days
http://www.noip.com/managed-dns/
 
OK scheint wohl so zu sein ^^

Das Skript sollte ausführbar sein ja ... jetzt wo du das so erwähnst, hab mir darüber nie Gedanken gemacht. Steht auch so im wiki nicht drin :O
Die skripte müssen bei mir eh ausführbar sein, weil ich die ja eh immer erst auf Konsole getestet hatte und da gehts net anders.
Habs auch grad ausprobiert, ein script mit -rw-r--r-- wird mittels Aufgabenplaner nicht ausgeführt ... zeigt aber auch net ma ne Fehlermeldung an ...
Werds auch mal ins wiki reinschreiben.

Muss warscheinlich eh den kompletten Artikel umschreiben. Der is jetzt für Dyndns geschrieben. Werd ihn dann etwas allgemeiner formulieren. Warscheinlich dauerts auch net lang und ich muss das Skript eh wieder für andere Anbieter umbiegen :D

Gruß
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat