Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # code by Georgi Talmazov - netskay
- # license - open source
- # main.py
- from twisted.web.client import getPage
- from twisted.internet import reactor, defer, task
- import re
- import os
- import smtp
- def content(page):
- inetip=re.findall("\d+\.\d+\.\d+\.\d+", page)
- networkip=os.popen("ipconfig").readlines()
- for line in networkip:
- regex=re.findall("[192]+\.[168]+\.\d+\.\d+", line)
- if not regex==[]:
- iplist.append(regex[0])
- iplist.sort()
- p=0
- for i in xrange(1,len(iplist)):
- if iplist[i] != iplist[p]:
- p=p+1
- iplist[p]=iplist[i]
- del iplist[p+1:]
- iplistbool=[]
- for ip in prevdict['previplist']:
- if not ip in iplist:
- iplistbool.append(False)
- else: iplistbool.append(True)
- if not (inetip[0]==prevdict['previnetip'] or True in iplistbool):
- print '--> IP Change'
- print '::internet: %s'%inetip[0]
- for ip in iplist:
- print '::intranet: %s'%ip
- data={}
- mail=smtp.zSMTP()
- data['destination']=['my_email@my_domain.com']
- data['header']='Cube Studios - IP Update'
- data['payload']='New IP assignments on the network.\n\ninternet: %s\nintranet: '%inetip[0]
- for ip in iplist:
- data['payload']=data['payload']+'%s, '%ip
- data['payload']=data['payload'][:-2]
- mail.send(data)
- prevdict['previplist']=iplist
- prevdict['previnetip']=inetip[0]
- def netError(data):
- print data
- def query():
- deferred = getPage('http://ip-adress.com/')
- deferred.addCallback(content)
- deferred.addErrback(netError)
- print '--> IP Notifier 0.1 by NetSkay - Georgi Talmazov\nInternet\--> Intranet Server IP notification vie email.\n'
- iplist=[]
- prevdict={}
- prevdict['previplist']=[]
- prevdict['previnetip']=None
- lc = task.LoopingCall(query)
- lc.start(86400) #86400 seconds in 24 hours
- print '--> Initiating reactor service.'
- reactor.run()
- print '--> Reactor stopped!'
- ############################################################
- # smtp.py
- from twisted.internet.threads import deferToThread
- from email.mime.multipart import MIMEMultipart, MIMEBase
- from email import encoders
- import sys, mimetypes, os
- import smtplib
- class zSMTP:
- def buildMessage(self,fromaddr, toaddr, subject, body):
- message=MIMEMultipart()
- message['From']=fromaddr
- message['To']=toaddr
- message['Subject']=subject
- textPart=MIMEBase('text', 'plain')
- textPart.set_payload(body)
- message .attach(textPart)
- return message
- def sendComplete(self, data, emails):
- #log.zlog.info('Sent log err;to=%s ::-:: %s'%(emails, data))
- print 'email sent to %s' %emails
- def send(self, data):
- try:
- mailServer = smtplib.SMTP("smtp.gmail.com", 587)
- mailServer.ehlo()
- mailServer.starttls()
- mailServer.ehlo()
- mailServer.login('mail@mydomain.com', 'mypassword')
- for recvr in data['destination']:
- msg=self.buildMessage( 'mail@mydomain.com', recvr, data['header'], data['payload'])
- msgData=msg.as_string(unixfrom=False)
- mailServer.sendmail('cube3d.designs@gmail.com', recvr, msgData)
- mailServer.close()
- self.sendComplete(data['header'], data['destination'])
- except Exception, e:
- #log.zlog.error('ERROR @ SMTP Mod:::%s'%(e))
- print 'received error at %s'%e
- @classmethod
- def email(self, **data):
- deferToThread(self.send, data)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement