[asciipron] / asciipron.py Repository:
ViewVC logotype

View of /asciipron.py

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3 - (download) (as text) (annotate)
Wed Oct 25 19:58:05 2006 UTC (3 years ago) by synack
File size: 1267 byte(s)
Added MOTD and logfile functionality
from random import randint
from thread import start_new_thread
from time import sleep
import socket
import os

PRONDIR = '/home/jeremy/src/asciipron/pron/'
PRONUSER = 1000
LOGFILE = "/home/jeremy/src/asciipron/pron.log"
MOTDDELAY = 3
MOTD = """--------------------------------------------------------------------------------\r
Welcome to the ASCII Pr0n server on jalapeno. Please send questions and comments\r
to synack@csh.rit.edu. Enjoy the show!\r
--------------------------------------------------------------------------------"""

logfile = open(LOGFILE, 'w')
def log(host, message):
	logfile.write(repr(host) + '\t' + message + '\n')
	logfile.flush()

if os.geteuid() == 0:
	os.seteuid(PRONUSER)

sd = socket.socket()
sd.bind(('0.0.0.0', 6969))
sd.listen(6)

pronfiles = os.listdir(PRONDIR)

def pronserve(sock, addr):
	log(addr, 'connected')
	try:
		sock.send(MOTD + '\r\n')
		sleep(MOTDDELAY)
		while True:
			pron = open(PRONDIR + pronfiles[randint(0, (len(pronfiles) - 1))])
			for line in pron.readlines():
				sock.send(line + '\r')
				sleep(0.05)
	except socket.error:
		log(addr, 'disconnected')
		sock.close()
	return 0

try:
	while True:
		afd = sd.accept()
		start_new_thread(pronserve, (afd))
except KeyboardInterrupt:
	sd.close()
	logfile.close()

synack at csh.rit.edu
ViewVC Help
Powered by ViewVC 1.0.0