117 lines
2.5 KiB
Python
117 lines
2.5 KiB
Python
#!/usr/bin/python
|
|
|
|
# Author: Bandie Yip Kojote for TTYgap
|
|
# License: GNU-GPLv3
|
|
# Year: 2016
|
|
#
|
|
# Software is provided AS IS and so on.
|
|
|
|
|
|
# Host of the IRC server
|
|
HOST="irc.example.com"
|
|
# TLS port of the IRC server
|
|
PORT=6697
|
|
# Nick of the bot
|
|
NICK="PagerBot"
|
|
# Ident of the bot
|
|
IDENT="PagerBot"
|
|
# Realname of the bot
|
|
REALNAME="PagerBot"
|
|
# Channel which should be joined
|
|
CHAN="#supercoolchan"
|
|
|
|
|
|
# Mail adress you're sending from
|
|
FROM="ircbot@example.com"
|
|
|
|
|
|
import sys
|
|
import socket
|
|
import string
|
|
import ssl
|
|
import time
|
|
import smtplib
|
|
|
|
|
|
|
|
|
|
def page(receiver, text, user):
|
|
|
|
number=""
|
|
|
|
|
|
# CONFIGURE YOUR USERS HERE
|
|
|
|
# if(receiver=="someone"):
|
|
# number="1234567"
|
|
|
|
else:
|
|
return "The username you tried to page has no number saved."
|
|
|
|
|
|
|
|
|
|
to=number+"@ecityruf.de"
|
|
message=HOST+":"+user+":"+text
|
|
if(len(message)>80):
|
|
return "The message \"%s\" is too big. It has to be less than 80 characters.\r\n" % (message)
|
|
m = smtplib.SMTP('smtpgw3.emessage.de')
|
|
try:
|
|
m.sendmail(FROM, to, "FROM: %s\nTO: %s\nSUBJECT: %s" % (FROM, to, message))
|
|
except:
|
|
e=sys.exc_info()[0]
|
|
return "Error: %s" % e
|
|
m.quit()
|
|
return "Sent."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
readbuffer=""
|
|
|
|
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
s.connect((HOST, PORT))
|
|
ircsock = ssl.wrap_socket(s)
|
|
ircsock.send("NICK %s\r\n" % NICK)
|
|
ircsock.send("USER %s %s no :%s\r\n" % (IDENT, HOST, REALNAME))
|
|
time.sleep(2)
|
|
ircsock.send("JOIN %s\r\n" % (CHAN))
|
|
print("OK\n")
|
|
|
|
while 1:
|
|
readbuffer=readbuffer+ircsock.recv(1024)
|
|
temp=string.split(readbuffer, "\n")
|
|
readbuffer=temp.pop( )
|
|
|
|
pagingtext=""
|
|
|
|
for line in temp:
|
|
line=string.rstrip(line)
|
|
line=string.split(line)
|
|
|
|
if(line[0]=="PING"):
|
|
ircsock.send("PONG %s\r\n" % line[1])
|
|
if(line[1]=="PRIVMSG" and "#" not in line[2]):
|
|
un=string.split(line[0], "!")
|
|
un2=string.split(un[0], ":")
|
|
usernick=un2[1]
|
|
un=None
|
|
un2=None
|
|
if(line[3] == ":help"):
|
|
ircsock.send("PRIVMSG %s This is a bot to use a paging service.\r\n" % usernick)
|
|
time.sleep(1)
|
|
ircsock.send("PRIVMSG %s Use \"&pager <Username> <Message>\" to page someone.\r\n" % usernick)
|
|
|
|
elif(line[3] == ":&pager"):
|
|
pagingtext=' '.join(line[5:])
|
|
print("%s sends to %s \"%s\"\n" % (usernick, line[4], pagingtext))
|
|
ircsock.send("PRIVMSG %s %s\r\n" % (usernick, page(line[4], pagingtext, usernick)))
|
|
|
|
|
|
# print(line)
|
|
|
|
|