Neue SLA bei kostenlosen Dyndns Accounts mittels AutoLoginScript umgehen

Status
Für weitere Antworten geschlossen.

easyglider

Benutzer
Mitglied seit
20. Jun 2012
Beiträge
3
Punkte für Reaktionen
0
Punkte
1
Guten Tag,

möchte mich auch bedanken bei 3x3cut0r!

Habe heute vormittag mal das Script eingespielt und mal manuell getestet (via Aufgabenplaner) - es dürfte funktioniert haben:

2014/05/03 11:05:18 - INFO - We have succesfully logged into NoIP.

Habe allerdings noch die 4.3 xxxx Version auf meiner DS212 - kann ich irgendwo sonst noch kontrollieren, ob das Script wirklich ohne Fehler durchgelaufen ist oder reicht die LOG-Meldung da völlig?

Danke
 

Feuerwasser

Benutzer
Mitglied seit
28. Aug 2012
Beiträge
245
Punkte für Reaktionen
0
Punkte
22
Normalerweise reicht das LOG. Sind ja prints.
Über kurz oder lang werden denke ich alle dyndns Anbieter ihre kostenlosen Accounts abschalten, da hilft wohl nix. Nachdem ich aber ein no-ip Angebot für 15$ im Jahr gesehen hab für ne Domain bin ich sehr in Versuchung :)
Danke dass Du Dir da so viel Mühe machst! Ist natürlich schwierig für Laien eine allgemeine Anleitung zu schreiben die 0 Coder-Erfahrung haben.
 

3x3cut0r

Benutzer
Mitglied seit
21. Mai 2011
Beiträge
507
Punkte für Reaktionen
15
Punkte
44
@easyglider:
Ich habe es ja heute morgen selber getestet. Würde der Aufgabenplaner das Skript nicht ausführen, kommt zwar kein Fehler, er würde aber auch kein Log-Eintrag erstellen.
Heißt also: Ist ein Log-Eintrag vorhanden, hat er das Skript schonmal ausführen können.
Steht jetzt im Log auch noch "... succesfully ...", müsste auch alles funktioniert haben mit den Login-Daten.
Denke also, JA ... die Log-Meldung reicht völlig.

@Feuerwasser:
Eine Allgemeine Anleitung für Laien ist hier nicht möglich. Selbst ich habe net wirklich viel Ahnung von Phyton und muss mir jedes mal das Skript und die Methoden neu anschaun, wenn ich da was veränder. Hinzu kommt dann noch das Auswerten des Seitenquelltextes von den jeweiligen Dyndns-Anbietern, um auch die richtigen Objektnamen zu verwenden, die von Seite zu Seite unterschiedlich sind. Dyndns verwendet z.b. generierte Hiddenvalues, die mittels Skript erst ausgelesen werden mussten, was NoIP wiederum nicht macht.

Kann es nur anbieten, wenn gewünscht setz ich mich ran und schreib das Skript für andere Anbieter um. Weis aber auch nicht auswendig welche Anbieter alle 30 Tage Ihre Hosts löschen bei Free-Accounts.

Gruß
 

QTip

Super-Moderator
Teammitglied
Mitglied seit
04. Sep 2008
Beiträge
2.341
Punkte für Reaktionen
13
Punkte
84
Könnte mich auch geirrt haben, da steht
Hostnames Expire Every 30 Days
http://www.noip.com/managed-dns/
Bei fast allen Free Anbietern muss man die Hostnamen innerhalb eines Zeitraumes aktualiseren, sonst verliert man sie. Dafür gibt es bei den meisten Aktualisierungstools das Feature "Zwangsaktualisierung nach xx Tagen", das hat aber nichts mit dem Login auf deren Seite zu tun. Ich musste mich deswegen noch nie anmelden und bekomme seitdem auch keine Emailaufforderungen mehr.

Das einzige Problem, welches bei noip.com auftritt, betrifft nur User mit einer (fast) festen IP. Denn trotz Aktualisierung setzt eine unveränderte IP nicht den Zeitstempel und man erhält alle 25 Tage eine Emailaufforderung. Kann man umgehen, in dem man zuvor mit einer Dummy-IP und anschließend mit der korrekten (nicht veränderten) IP aktualisiert. Übrigens beherscht der DDNS updater seit Version 1.24 dieses Verfahren.
 

easyglider

Benutzer
Mitglied seit
20. Jun 2012
Beiträge
3
Punkte für Reaktionen
0
Punkte
1
Hallo,

danke @3x3cut0r - Gut zu wissen, dass es jetzt funktioniert!

Feuerwasser: Du hast ja recht, ich glaube für umgerechnet EUR 0,9 pro Monat !!! - das muss man sich mal auf der Zunge zergehen lassen - eine fixe Adresse zu haben ist doch echt nicht teuer. Man denke mal daran, wie viel Arbeit das erspart, jedesmal einen neuen Anbieter suchen zu müssen, die ganze Family/Friends auf den Neuen umzustellen und das Script zu testen...

Ich denke, ich werde mir da bei Noip einen solchen Account holen und dann ist für lange Zeit Ruhe! Die Anbieter müssen ja auch von was leben - immer umsonst ist auch nicht gut...

Danke
Easyglider
 

Feuerwasser

Benutzer
Mitglied seit
28. Aug 2012
Beiträge
245
Punkte für Reaktionen
0
Punkte
22
@easyglider: werde über kurz oder lang auch diesen Weg gehen. Das wird dann das letzte mal sein, via email alle Benutzer zu benachrichtigen.
@3x3cut0r: Dennnoch für freeuser wie mich, für die sich eine feste IP oder eine Domain nicht rentiert, eine super Unterstützung, 1000 Dank!
@Qtip: Danke für die Aufklärung, man lernt nie aus.
Kennt dennnoch jemand von euch eine Methode, vom Server aus eine Email an die Benutzer zu senden, oder auch ein Paket? (sry für OT)
 

QTip

Super-Moderator
Teammitglied
Mitglied seit
04. Sep 2008
Beiträge
2.341
Punkte für Reaktionen
13
Punkte
84
Wenn du mit "Server" die Diskstation meinst, dann kannst du das Paket "Notification Messenger" benutzen. Dieser kann Nachrichten als DSM Notification oder Email an die Benutzer senden, welche dann auch antworten könnten.
 

Feuerwasser

Benutzer
Mitglied seit
28. Aug 2012
Beiträge
245
Punkte für Reaktionen
0
Punkte
22
Super danke!
 

Hogo Dorn

Benutzer
Mitglied seit
08. Jun 2012
Beiträge
31
Punkte für Reaktionen
0
Punkte
6

Magicgoose

Benutzer
Mitglied seit
16. Aug 2014
Beiträge
9
Punkte für Reaktionen
0
Punkte
0
@3x3cut0r: Danke erstmal für das Script( Noip ). Hat bis zum 07.08.2014 super funktioniert, allerdings funktioniert es ab dahin nicht mehr mit folgender Fehler Meldung
"Login Failed". Kann es sein , dass die Loginseite von Noip verändert wurde?

Beste Grüsse
 

3x3cut0r

Benutzer
Mitglied seit
21. Mai 2011
Beiträge
507
Punkte für Reaktionen
15
Punkte
44
hey
danke für den hinweis. hab mir schon monate meine logs nicht mehr angeschaut und hatte auch keinen Anlass mehr von außen mit meiner noip-adresse daheim zuzugreifen. ist mir also bisher nicht aufgefallen.
nach kurzer analyse kann ich nur bestätigen das die Loginseite tatsächlich verändert wurde.
ähnelt jetzt sehr der von dyndns. muss also das script wieder anpassen auf die jetzt nicht mehr statischen sondern dynamisch generierten hidden values.
hmm werde mich da nächste woche mal ran setzen.

gruß
 

Magicgoose

Benutzer
Mitglied seit
16. Aug 2014
Beiträge
9
Punkte für Reaktionen
0
Punkte
0
hey,

tolle Arbeit die du da machst. Allerdings hab ich es auch nur durch Zufall mitbekommen. Hab heut mein DSM neu aufgesetzt und hab halt geschaut, ob das Script noch läuft… :p.

Weisst Du denn zufällig , ob der DDNS Services von Synology , regelmässig ein Login benötigt? Der läuft bei mir parallel… :p.
 

3x3cut0r

Benutzer
Mitglied seit
21. Mai 2011
Beiträge
507
Punkte für Reaktionen
15
Punkte
44
den von synology habe ich halt in der dsm eingetragen, sodass sich meine nas dort regelmäßig anmeldet. das funktioniert dann so gesehen ohne login ja.
für meine fritzbox nutz ich dann halt den von noip. unter anderem deswegen, weil ich den von synology da gar nicht eintragen kann und weil ich auch wenn meine nas aus ist noch erreichbar bzw. auf meine fritzbox kommen möchte.

gruß
 

Magicgoose

Benutzer
Mitglied seit
16. Aug 2014
Beiträge
9
Punkte für Reaktionen
0
Punkte
0
Ah verstehe. Den Ansatz mit dem Synology Service auf der FritzBox hatte ich auch versucht. Ohne Erfolg. Nun laufen beide parallel. Wobei ich 2 domains von Noip benutze. 1x auf der FritzBox , falls mal die DS den Kontakt zur Auswellt verliert. Und wie gesagt der andere auf der DS.

Gruss
 

3x3cut0r

Benutzer
Mitglied seit
21. Mai 2011
Beiträge
507
Punkte für Reaktionen
15
Punkte
44
so script is fertig
wiki is nur bei mir grad irgendwie nicht erreichbar ... stells rein sobalds wieder geht

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

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

def getHiddenRandHTMLResponse(response):
    target = "<input type=\"hidden\" name=\"_token\" 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)+40]

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 = getHiddenRandHTMLResponse(response)
    txdata = urllib.urlencode({'username':username, 'password':password, 'Login':"1", 'submit_login_page':"1", '_token':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:])
 

Magicgoose

Benutzer
Mitglied seit
16. Aug 2014
Beiträge
9
Punkte für Reaktionen
0
Punkte
0
Super, wie versprochen hast Du es fertig gemacht. Werd es heut Abend mal Test. Vielen Danke schon mal im Vorraus . ;-)
 

Magicgoose

Benutzer
Mitglied seit
16. Aug 2014
Beiträge
9
Punkte für Reaktionen
0
Punkte
0
Läuft in gewohnter Qualität… Danke nochmal….:D
 

3x3cut0r

Benutzer
Mitglied seit
21. Mai 2011
Beiträge
507
Punkte für Reaktionen
15
Punkte
44
dann ists ja gut.
steht jetzt auch im wiki.
wenn wieder was is einfach melden...

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 

 
 
  AdBlocker gefunden!

Du bist nicht hier, um Support für Adblocker zu erhalten. Dein Adblocker funktioniert bereits ;-)

Klar machen Adblocker einen guten Job, aber sie blockieren auch nützliche Funktionen.

Das Forum wird mit hohem technischen, zeitlichen und finanziellen Aufwand kostenfrei zur Verfügung gestellt. Wir zeigen keine offensive Werbung und bemühen uns um eine dezente Integration.

Bitte unterstütze dieses Forum, in dem du deinen Adblocker für diese Seite deaktivierst.

Du kannst uns auch über unseren Kaffeautomat einen Kaffe ausgeben oder ein PUR Abo abschließen und das Forum so werbefrei nutzen.

Vielen Dank für Deine Unterstützung!