#!/usr/bin/env python
import urllib
import string
import smtplib
import rxb
import re
import sys
import time
import thread
import socket
import resource
from htmllib import *
from cStringIO import StringIO
G_DEBUG = 1
G_FROM = '"The gnut killer" <honey@7thguard.net>'
G_TO = '" A humble 7g reader" <kowalski@kowalski.com>'
G_LASTONE = 0
G_MINUTE = 60
#G_TAIMAUT = G_MINUTE * 20
G_TAIMAUT = 1
from html2text import HTML2Text
def html2text(s):
parser = HTML2Text()
parser.feed(s)
parser.close()
return parser.result
def sendmesycz(mesycz):
server = smtplib.SMTP('localhost')
server.sendmail(G_FROM,G_TO,html2text(mesycz))
server.quit()
if G_DEBUG == 1: print "mail sent"
def getpejcz(urlik):
a=urllib.urlopen("http://7thguard.net/news.php?id=" + urlik)
if G_DEBUG == 1: print "getting news no ", urlik
b=a.read()
for i in range (len(b)):
pat = rxb.label.spam(rxb.exactly("<!-- tabelka z treścią -->"))
pat.search(b)
d = pat.after
return d
def get7list():
a=urllib.urlopen("http://7thguard.net")
if G_DEBUG == 1: print "index opened"
b=a.read()
c=string.split(b,'<div class="head"')
numberlist = []
for i in range (len(c)):
pat = rxb.label.spam(rxb.exactly("id="))
pat.search(c[i])
d = pat.after
pat2 = rxb.label.spam(rxb.some(rxb.digit))
pat2.search(pat.after)
numberlist.append(pat2.found)
return numberlist
def poczontek():
global G_LASTONE
d = get7list()
d.reverse()
for i in d[0:(len(d)-1)]:
l = getpejcz(i)
sendmesycz(l)
G_LASTONE = eval(i)
def sprawdz7g():
global G_LASTONE
x = 0
while x == 0:
time.sleep(G_TAIMAUT)
d = get7list()
d.reverse()
print d
for i in d[0:(len(d)-1)]:
if eval(i) > G_LASTONE:
print "found a new news:", i
l = getpejcz(str(i))
sendmesycz(l)
G_LASTONE = eval(i)
def gimme_res():
m = 'HTTP/1.1 200 OK\nContent-Type: text/html\n\n<html><head><title>Guardian status</title></head><body bgcolor="#FFFFFF"><center>'
reso = resource.getrusage(0)
n = "Time in user mode: " + str(reso[0]) + "<br>" + \
"Time in system mode: " + str(reso[1]) + "<br>" + \
"Maximum resident set size: " + str(reso[2]) + "<br>" + \
"Shared memory size: " + str(reso[3]) + "<br>" + \
"Unshared memory size: " + str(reso[4]) + "<br>" + \
"Unshared stack size: " + str(reso[5]) + "<br>" + \
"Page faults not requiring I/O: " + str(reso[6]) + "<br>" + \
"Page faults requiring I/O: " + str(reso[7]) + "<br>" + \
"Number of swap outs: " + str(reso[8]) + "<br>" + \
"Block input operations: " + str(reso[9]) + "<br>" + \
"Block output operations: " + str(reso[10]) + "<br>" + \
"Messages sent: " + str(reso[11]) + "<br>" + \
"Messages received: " + str(reso[12]) + "<br>" + \
"Signals received: " + str(reso[13]) + "<br>" + \
"Voluntary context switches: " + str(reso[14]) + "<br>" + \
"Involuntary context switches: " + str(reso[15]) + "<br> </center>"
return m + n
def nasluchuj(n):
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind(('localhost',8081))
s.listen(2)
while 1:
conn,addr = s.accept()
time.sleep(0.1)
data = conn.recv(1024)
if not data: break
conn.send(gimme_res())
conn.close()
if (G_TO == '"A humble 7g reader" <kowalski@kowalski.com>'):
print "You have to set G_TO at least..."
print "Poor Kowalski hates spam as much as you do..."
sys.exit()
thread.start_new_thread(nasluchuj,('',))
poczontek()
sprawdz7g()