#!/usr/bin/env python
### *|--------------------------------------|* ###
### *| NO-IP Account-Renew Script 1.0 |* ###
### *| (c) by DarkStarXxX @ DEB |* ###
### *|--------------------------------------|* ###
# Modifiziert von MegaV0lt @ DEB
# Modifiziert von SLASH @ DEB
# VERSION=161020_2
import mechanize
import ssl
if hasattr(ssl, '_create_unverified_context'):
ssl._create_default_https_context = ssl._create_unverified_context
import time
import datetime
# Define data
USERNAME = "
username"
PASSWORD = "
password"
HOST_URL = "
Sie müssen registriert sein, um Links zu sehen.
"
LOG_FILE = "/var/log/NOIP_renew.log"
RESULT_STR = []
# Date and time for log
ts=datetime.datetime.now().strftime("%d. %B %Y %I:%M%p")
# Update host
def update_host(str_host, brow):
global RESULT_STR
brow.select_form(nr=00)
brow.submit()
# Check if OK
if brow.response().read().find("Update will be applied") >= 0:
f1=open(LOG_FILE, 'a+')
print >> f1,ts,"OK " + str_host
print("OK " + str_host)
RESULT_STR.append("OK " + str_host)
else:
print >> f1,ts,"FAILED " + str_host
print("FAILED " + str_host)
RESULT_STR.append("FAILED " + str_host)
return
# Browser options
br = mechanize.Browser()
br.set_handle_equiv(True)
br.set_handle_robots(False)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.addheaders = [('User-agent', 'Chrome')]
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
# Open site
br.open(HOST_URL)
br.select_form(nr=0)
br.form["username"] = USERNAME
br.form["password"] = PASSWORD
br.submit()
br.find_link(text='Manage Hosts')
req = br.click_link(text='Manage Hosts')
br.open(req)
mylink = [] # Leers Array
# Links in Array speichern
for link in br.links():
if link.text == 'Modify':
mylink += [link]
# Links klicken
for link in mylink:
req = br.click_link(link)
br.open(req)
update_host(link.url, br)
# Please uncomment the below line if you don't like to send a Status Mail
# quit()
####### SMTP Section ############
# Sending Result e-Mail
import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
from email.MIMEBase import MIMEBase
from email import encoders
fromaddr = "
sender@domain.de"
toaddr = "
recipient@domain.de"
msg = MIMEMultipart()
msg['From'] = fromaddr
msg['To'] = toaddr
msg['Subject'] = "NO-IP Account Updater"
body = "NO-IP Account Updater Service updated your NO-IP Account for another 30 days. Please check the attached Logfile\n\n"
for var in RESULT_STR:
body = str(body)+str(var) + "\n"
msg.attach(MIMEText(body, 'plain'))
filename = "NO-IP_updater.log"
attachment = open(LOG_FILE, "rb")
part = MIMEBase('application', 'octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', "attachment; filename= %s" % filename)
msg.attach(part)
# Example: Server Address and TCP Port - Exmaple: '192.168.1.1' , 25
server = smtplib.SMTP('
192.168.0.1',
25)
server.starttls()
# In case server needs Authentication, uncomment below line - remove #
#server.login(fromaddr, "password")
text = msg.as_string()
server.sendmail(fromaddr, toaddr, text)
server.quit()