new
This commit is contained in:
275
server/WebHandler.py
Normal file
275
server/WebHandler.py
Normal file
@ -0,0 +1,275 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
from change_password import change_password #@UnusedImport
|
||||||
|
from db_helper import Db, getAuthTuple
|
||||||
|
from hscException import HscException
|
||||||
|
from loader_personal_statistics import loader_personal_statistics #@UnusedImport
|
||||||
|
from logger import Logger
|
||||||
|
from mandant import add_mandant, loader_change_mandant, change_mandant, change_mandant2, delete_really #@UnusedImport
|
||||||
|
from params import Params
|
||||||
|
from person import person #@UnusedImport
|
||||||
|
from session import Session, SessionContainer
|
||||||
|
|
||||||
|
import BaseHTTPServer
|
||||||
|
import Cheetah.Template
|
||||||
|
import Cookie
|
||||||
|
import SocketServer
|
||||||
|
import StringIO
|
||||||
|
import cgi
|
||||||
|
import getopt
|
||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import uuid
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
pidfile_name = "/tmp/hsc.pid"
|
||||||
|
foreGround = False
|
||||||
|
templateDir = "./templates"
|
||||||
|
port = 8000
|
||||||
|
DSN = "host=127.0.0.1 dbname=radius user=webapp password=webapp123"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class HscWebApp(object):
|
||||||
|
def __init__(self, sid):
|
||||||
|
self.buf = StringIO.StringIO()
|
||||||
|
self.params = None
|
||||||
|
self.session = sessionContainer.get(sid)
|
||||||
|
self.error_msg = None
|
||||||
|
self.msg = None
|
||||||
|
self.sid = sid
|
||||||
|
|
||||||
|
def finish(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def log(self, msg):
|
||||||
|
Logger.log(msg)
|
||||||
|
|
||||||
|
def setParams(self, p):
|
||||||
|
self.params = p
|
||||||
|
|
||||||
|
def showPage(self, forcePage=''):
|
||||||
|
if self.session:
|
||||||
|
if forcePage != '':
|
||||||
|
page = forcePage
|
||||||
|
else:
|
||||||
|
page = self.session.redirectTarget
|
||||||
|
else:
|
||||||
|
page = 'login'
|
||||||
|
|
||||||
|
if page == 'logout':
|
||||||
|
sessionContainer.delete(self.sid)
|
||||||
|
self.session = None
|
||||||
|
page = 'login'
|
||||||
|
|
||||||
|
templateFile = page + '.tmpl'
|
||||||
|
|
||||||
|
try:
|
||||||
|
if self.session:
|
||||||
|
self.log("showPage, session: %s" % str(self.session))
|
||||||
|
self.log("showPage, params: %s" % str(self.session.params))
|
||||||
|
self.session.setShownPage(page)
|
||||||
|
|
||||||
|
try:
|
||||||
|
loaderObjectClass = eval("loader_" + page)
|
||||||
|
loaderObject = loaderObjectClass(self.session)
|
||||||
|
loaderObject.mergeAdditionalData()
|
||||||
|
except NameError, e:
|
||||||
|
self.log("loader class for %s not found: %s" % (page, str(e)))
|
||||||
|
except HscException, e:
|
||||||
|
s = "HSC Failure loading data: %s" % str(e)
|
||||||
|
self.log(s)
|
||||||
|
raise Exception(s)
|
||||||
|
|
||||||
|
tmpl = Cheetah.Template.Template(file=templateDir + '/' + templateFile,
|
||||||
|
searchList=[self])
|
||||||
|
#self.log("OUTPUT: %s" % str(tmpl))
|
||||||
|
self.buf.write(str(tmpl))
|
||||||
|
|
||||||
|
if self.session:
|
||||||
|
self.session.clearMsgs()
|
||||||
|
except Exception, e:
|
||||||
|
sessionContainer.delete(self.sid)
|
||||||
|
self.buf.write("Problems to show this page: %s %s" % (e.__class__.__name__, str(e)))
|
||||||
|
finally:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def processAction(self):
|
||||||
|
if self.params.action == "Login":
|
||||||
|
authTuple = getAuthTuple(self.params.username, self.params.password)
|
||||||
|
if authTuple:
|
||||||
|
self.params = Params({})
|
||||||
|
self.sid = str(uuid.uuid1())
|
||||||
|
session = Session(self.sid, self.params)
|
||||||
|
|
||||||
|
session.setAuthTuple(authTuple)
|
||||||
|
session.setGoodMsg("Welcome")
|
||||||
|
session.setRedirectTarget("menu")
|
||||||
|
sessionContainer.add(session)
|
||||||
|
else:
|
||||||
|
self.sid = 0
|
||||||
|
else:
|
||||||
|
if self.session == None:
|
||||||
|
self.sid = 0
|
||||||
|
else:
|
||||||
|
shownPage = self.session.getShownPage()
|
||||||
|
self.session.setParams(self.params)
|
||||||
|
self.log("shownPage: %s" % shownPage)
|
||||||
|
try:
|
||||||
|
dataObjectClass = eval(shownPage)
|
||||||
|
dataObject = dataObjectClass(self.session)
|
||||||
|
dataObject.process()
|
||||||
|
self.session.setGoodMsg("Action on %s performed successfully" % shownPage)
|
||||||
|
self.session.setRedirectTarget(dataObject.getNextPage())
|
||||||
|
except NameError, e:
|
||||||
|
self.log("processAction, NameError PARAMS: %s" % str(self.session.params))
|
||||||
|
s = "Internal program error: %s" % str(e)
|
||||||
|
self.session.setBadMsg(s)
|
||||||
|
self.log(s)
|
||||||
|
self.session.setRedirectTarget("menu")
|
||||||
|
except HscException, e:
|
||||||
|
self.log("processAction, HscException PARAMS: %s" % str(self.session.params))
|
||||||
|
s = "HSC Failure: %s" % str(e)
|
||||||
|
self.session.setBadMsg(s)
|
||||||
|
self.log(s)
|
||||||
|
self.session.setRedirectTarget(shownPage)
|
||||||
|
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.buf.getvalue()
|
||||||
|
|
||||||
|
|
||||||
|
class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler):
|
||||||
|
server_version = "MyHscWebAppHTTP/1.0"
|
||||||
|
|
||||||
|
def log_message(self, format, *args):
|
||||||
|
Logger.log(format%args)
|
||||||
|
|
||||||
|
def getSidFromCookie(self):
|
||||||
|
try:
|
||||||
|
cookie = Cookie.SimpleCookie(self.headers.get('Cookie'))
|
||||||
|
sid = cookie['sid'].value
|
||||||
|
except KeyError:
|
||||||
|
sid = None
|
||||||
|
return sid
|
||||||
|
|
||||||
|
def setSidInCookie(self, sid):
|
||||||
|
cookie = Cookie.SimpleCookie()
|
||||||
|
cookie['sid'] = sid
|
||||||
|
cookie['sid']['Max-Age'] = 10*60
|
||||||
|
self.wfile.write(str(cookie) + '\r\n')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def do_POST(self):
|
||||||
|
self.log_message("Request: %s", self.path)
|
||||||
|
sid = self.getSidFromCookie()
|
||||||
|
self.log_message("Cookie: %s" % self.headers.get('Cookie'))
|
||||||
|
|
||||||
|
d = HscWebApp(sid)
|
||||||
|
|
||||||
|
l = int(self.headers.get('Content-Length', '0'))
|
||||||
|
q = self.rfile.read(l)
|
||||||
|
e = cgi.parse_qs(q)
|
||||||
|
self.log_message("QUERY: %s" % str(e))
|
||||||
|
d.setParams(Params(e))
|
||||||
|
|
||||||
|
d.processAction()
|
||||||
|
|
||||||
|
self.send_response(303, "See Other")
|
||||||
|
self.setSidInCookie(d.sid)
|
||||||
|
self.send_header("Location", "/")
|
||||||
|
self.end_headers()
|
||||||
|
|
||||||
|
d.finish()
|
||||||
|
|
||||||
|
def do_GET(self):
|
||||||
|
self.log_message("Request: %s", self.path)
|
||||||
|
sid = self.getSidFromCookie()
|
||||||
|
self.log_message("SID: %s" % sid)
|
||||||
|
|
||||||
|
d = HscWebApp(sid)
|
||||||
|
|
||||||
|
d.showPage(self.path.split('/')[1])
|
||||||
|
|
||||||
|
self.send_response(200, "OK")
|
||||||
|
|
||||||
|
self.send_header("Content-Type", "text/html")
|
||||||
|
self.end_headers()
|
||||||
|
self.wfile.write(str(d))
|
||||||
|
|
||||||
|
d.finish()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class MyServer(SocketServer.ThreadingTCPServer):
|
||||||
|
def __init__(self, server_address, RequestHandlerClass):
|
||||||
|
self.allow_reuse_address = True
|
||||||
|
SocketServer.ThreadingTCPServer.__init__(self, server_address, RequestHandlerClass)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def usage():
|
||||||
|
print "Usage"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Logger.openlog()
|
||||||
|
|
||||||
|
try:
|
||||||
|
opts, args = getopt.getopt(sys.argv[1:], "hp:dFD:", ["help", "port=", "debug" "ForeGround", "DSN="])
|
||||||
|
except getopt.GetoptError:
|
||||||
|
usage()
|
||||||
|
sys.exit(2)
|
||||||
|
|
||||||
|
|
||||||
|
for o, a in opts:
|
||||||
|
if o in ("-h", "--help"):
|
||||||
|
usage()
|
||||||
|
sys.exit()
|
||||||
|
if o in ("-F", "--ForeGround"):
|
||||||
|
foreGround = True
|
||||||
|
if o in ("-p", "--port"):
|
||||||
|
port = int(a)
|
||||||
|
if o in ("-d", "--debug"):
|
||||||
|
foreGround = True
|
||||||
|
Logger.debugEnable()
|
||||||
|
if o in ("-D", "--DSN"):
|
||||||
|
DSN=a
|
||||||
|
|
||||||
|
Db.setDSN(DSN)
|
||||||
|
|
||||||
|
if foreGround:
|
||||||
|
pid = 0
|
||||||
|
else:
|
||||||
|
pid = os.fork()
|
||||||
|
|
||||||
|
|
||||||
|
if pid:
|
||||||
|
pidFile = file(pidfile_name, mode='w')
|
||||||
|
pidFile.write("%i\n" % pid)
|
||||||
|
pidFile.close()
|
||||||
|
print "daemon started with pid ", pid
|
||||||
|
sys.exit(0)
|
||||||
|
else:
|
||||||
|
Logger.log("Daemon started")
|
||||||
|
|
||||||
|
sessionContainer = SessionContainer(60, 600)
|
||||||
|
sessionContainer.setDaemon(True)
|
||||||
|
sessionContainer.start()
|
||||||
|
|
||||||
|
MyServer(('', port), MyHandler).serve_forever()
|
||||||
|
|
914
server/a.ps
Normal file
914
server/a.ps
Normal file
@ -0,0 +1,914 @@
|
|||||||
|
%!PS-Adobe-3.0
|
||||||
|
%%Title: yadyn
|
||||||
|
%%For: Wolfgang Hottgenroth
|
||||||
|
%%Creator: a2ps version 4.13
|
||||||
|
%%CreationDate: Sat Nov 10 10:08:03 2007
|
||||||
|
%%BoundingBox: 24 24 588 768
|
||||||
|
%%DocumentData: Clean7Bit
|
||||||
|
%%Orientation: Landscape
|
||||||
|
%%Pages: 1
|
||||||
|
%%PageOrder: Ascend
|
||||||
|
%%DocumentMedia: Letter 612 792 0 () ()
|
||||||
|
%%DocumentNeededResources: font Courier
|
||||||
|
%%+ font Courier-Bold
|
||||||
|
%%+ font Courier-BoldOblique
|
||||||
|
%%+ font Courier-Oblique
|
||||||
|
%%+ font Helvetica
|
||||||
|
%%+ font Helvetica-Bold
|
||||||
|
%%+ font Symbol
|
||||||
|
%%+ font Times-Bold
|
||||||
|
%%+ font Times-Roman
|
||||||
|
%%DocumentProcessColors: Black
|
||||||
|
%%DocumentSuppliedResources: procset a2ps-a2ps-hdr
|
||||||
|
%%+ procset a2ps-black+white-Prolog
|
||||||
|
%%+ encoding ISO-8859-1Encoding
|
||||||
|
%%EndComments
|
||||||
|
/a2psdict 200 dict def
|
||||||
|
a2psdict begin
|
||||||
|
%%BeginProlog
|
||||||
|
%%Copyright: (c) 1988, 89, 90, 91, 92, 93 Miguel Santana
|
||||||
|
%%Copyright: (c) 1995, 96, 97, 98 Akim Demaille, Miguel Santana
|
||||||
|
% Check PostScript language level.
|
||||||
|
/languagelevel where {
|
||||||
|
pop /gs_languagelevel languagelevel def
|
||||||
|
} {
|
||||||
|
/gs_languagelevel 1 def
|
||||||
|
} ifelse
|
||||||
|
|
||||||
|
% EPSF import as in the Red Book
|
||||||
|
/BeginInclude {
|
||||||
|
/b4_Inc_state save def % Save state for cleanup
|
||||||
|
/dict_count countdictstack def % Count objects on dict stack
|
||||||
|
/op_count count 1 sub def % Count objects on operand stack
|
||||||
|
userdict begin
|
||||||
|
0 setgray 0 setlinecap
|
||||||
|
1 setlinewidth 0 setlinejoin
|
||||||
|
10 setmiterlimit [ ] 0 setdash newpath
|
||||||
|
gs_languagelevel 1 ne {
|
||||||
|
false setstrokeadjust false setoverprint
|
||||||
|
} if
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/EndInclude {
|
||||||
|
count op_count sub { pos } repeat % Clean up stacks
|
||||||
|
countdictstack dict_count sub { end } repeat
|
||||||
|
b4_Inc_state restore
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/BeginEPSF {
|
||||||
|
BeginInclude
|
||||||
|
/showpage { } def
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/EndEPSF {
|
||||||
|
EndInclude
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% Page prefeed
|
||||||
|
/page_prefeed { % bool -> -
|
||||||
|
statusdict /prefeed known {
|
||||||
|
statusdict exch /prefeed exch put
|
||||||
|
} {
|
||||||
|
pop
|
||||||
|
} ifelse
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/deffont {
|
||||||
|
findfont exch scalefont def
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/reencode_font {
|
||||||
|
findfont reencode 2 copy definefont pop def
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% Function c-show (str => -)
|
||||||
|
% centers text only according to x axis.
|
||||||
|
/c-show {
|
||||||
|
dup stringwidth pop
|
||||||
|
2 div neg 0 rmoveto
|
||||||
|
show
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% Function l-show (str => -)
|
||||||
|
% prints texts so that it ends at currentpoint
|
||||||
|
/l-show {
|
||||||
|
dup stringwidth pop neg
|
||||||
|
0
|
||||||
|
rmoveto show
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% center-fit show (str w => -)
|
||||||
|
% show centered, and scale currentfont so that the width is less than w
|
||||||
|
/cfshow {
|
||||||
|
exch dup stringwidth pop
|
||||||
|
% If the title is too big, try to make it smaller
|
||||||
|
3 2 roll 2 copy
|
||||||
|
gt
|
||||||
|
{ % if, i.e. too big
|
||||||
|
exch div
|
||||||
|
currentfont exch scalefont setfont
|
||||||
|
} { % ifelse
|
||||||
|
pop pop
|
||||||
|
}
|
||||||
|
ifelse
|
||||||
|
c-show % center title
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% Return the y size of the current font
|
||||||
|
% - => fontsize
|
||||||
|
/currentfontsize {
|
||||||
|
currentfont /FontMatrix get 3 get 1000 mul
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% reencode the font
|
||||||
|
% <encoding-vector> <fontdict> -> <newfontdict>
|
||||||
|
/reencode
|
||||||
|
{
|
||||||
|
dup length 5 add dict begin
|
||||||
|
{ % <vector> <key> <val>
|
||||||
|
1 index /FID ne
|
||||||
|
{ def }{ pop pop } ifelse
|
||||||
|
} forall
|
||||||
|
/Encoding exch def % -
|
||||||
|
|
||||||
|
% Use the font's bounding box to determine the ascent, descent,
|
||||||
|
% and overall height; don't forget that these values have to be
|
||||||
|
% transformed using the font's matrix. We use `load' because sometimes
|
||||||
|
% BBox is executable, sometimes not. Since we need 4 numbers an not
|
||||||
|
% an array avoid BBox from being executed
|
||||||
|
/FontBBox load aload pop
|
||||||
|
FontMatrix transform /Ascent exch def pop
|
||||||
|
FontMatrix transform /Descent exch def pop
|
||||||
|
/FontHeight Ascent Descent sub def
|
||||||
|
|
||||||
|
% Get the underline position and thickness if they're defined.
|
||||||
|
% Use 1 if they are not defined.
|
||||||
|
currentdict /FontInfo 2 copy known
|
||||||
|
{ get
|
||||||
|
/UnderlinePosition 2 copy % <FontInfo> /UP <FontInfo> /UP
|
||||||
|
2 copy known
|
||||||
|
{ get }{ pop pop 1} ifelse
|
||||||
|
0 exch FontMatrix transform exch pop
|
||||||
|
def % <FontInfo>
|
||||||
|
|
||||||
|
/UnderlineThickness 2 copy % <FontInfo> /UT <FontInfo> /UT
|
||||||
|
2 copy known
|
||||||
|
{ get }{ pop pop 1} ifelse
|
||||||
|
0 exch FontMatrix transform exch pop
|
||||||
|
def % <FontInfo>
|
||||||
|
pop % -
|
||||||
|
}{ pop pop
|
||||||
|
} ifelse
|
||||||
|
|
||||||
|
currentdict
|
||||||
|
end
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% Function print line number (<string> # -)
|
||||||
|
/# {
|
||||||
|
gsave
|
||||||
|
sx cw mul neg 2 div 0 rmoveto
|
||||||
|
f# setfont
|
||||||
|
c-show
|
||||||
|
grestore
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% -------- Some routines to enlight plain b/w printings ---------
|
||||||
|
|
||||||
|
% Underline
|
||||||
|
% width --
|
||||||
|
/dounderline {
|
||||||
|
currentpoint
|
||||||
|
gsave
|
||||||
|
moveto
|
||||||
|
0 currentfont /Descent get currentfontsize mul rmoveto
|
||||||
|
0 rlineto
|
||||||
|
stroke
|
||||||
|
grestore
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% Underline a string
|
||||||
|
% string --
|
||||||
|
/dounderlinestring {
|
||||||
|
stringwidth pop
|
||||||
|
dounderline
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/UL {
|
||||||
|
/ul exch store
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% Draw a box of WIDTH wrt current font
|
||||||
|
% width --
|
||||||
|
/dobox {
|
||||||
|
currentpoint
|
||||||
|
gsave
|
||||||
|
newpath
|
||||||
|
moveto
|
||||||
|
0 currentfont /Descent get currentfontsize mul rmoveto
|
||||||
|
dup 0 rlineto
|
||||||
|
0 currentfont /FontHeight get currentfontsize mul rlineto
|
||||||
|
neg 0 rlineto
|
||||||
|
closepath
|
||||||
|
stroke
|
||||||
|
grestore
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/BX {
|
||||||
|
/bx exch store
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% Box a string
|
||||||
|
% string --
|
||||||
|
/doboxstring {
|
||||||
|
stringwidth pop
|
||||||
|
dobox
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
%
|
||||||
|
% ------------- Color routines ---------------
|
||||||
|
%
|
||||||
|
/FG /setrgbcolor load def
|
||||||
|
|
||||||
|
% Draw the background
|
||||||
|
% width --
|
||||||
|
/dobackground {
|
||||||
|
currentpoint
|
||||||
|
gsave
|
||||||
|
newpath
|
||||||
|
moveto
|
||||||
|
0 currentfont /Descent get currentfontsize mul rmoveto
|
||||||
|
dup 0 rlineto
|
||||||
|
0 currentfont /FontHeight get currentfontsize mul rlineto
|
||||||
|
neg 0 rlineto
|
||||||
|
closepath
|
||||||
|
bgcolor aload pop setrgbcolor
|
||||||
|
fill
|
||||||
|
grestore
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% Draw bg for a string
|
||||||
|
% string --
|
||||||
|
/dobackgroundstring {
|
||||||
|
stringwidth pop
|
||||||
|
dobackground
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
|
||||||
|
/BG {
|
||||||
|
dup /bg exch store
|
||||||
|
{ mark 4 1 roll ] /bgcolor exch store } if
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
|
||||||
|
/Show {
|
||||||
|
bg { dup dobackgroundstring } if
|
||||||
|
ul { dup dounderlinestring } if
|
||||||
|
bx { dup doboxstring } if
|
||||||
|
show
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% Function T(ab), jumps to the n-th tabulation in the current line
|
||||||
|
/T {
|
||||||
|
cw mul x0 add
|
||||||
|
bg { dup currentpoint pop sub dobackground } if
|
||||||
|
ul { dup currentpoint pop sub dounderline } if
|
||||||
|
bx { dup currentpoint pop sub dobox } if
|
||||||
|
y0 moveto
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% Function n: move to the next line
|
||||||
|
/n {
|
||||||
|
/y0 y0 bfs sub store
|
||||||
|
x0 y0 moveto
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% Function N: show and move to the next line
|
||||||
|
/N {
|
||||||
|
Show
|
||||||
|
/y0 y0 bfs sub store
|
||||||
|
x0 y0 moveto
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/S {
|
||||||
|
Show
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
%%BeginResource: procset a2ps-a2ps-hdr 2.0 2
|
||||||
|
%%Copyright: (c) 1988, 89, 90, 91, 92, 93 Miguel Santana
|
||||||
|
%%Copyright: (c) 1995, 96, 97, 98 Akim Demaille, Miguel Santana
|
||||||
|
% Function title: prints page header.
|
||||||
|
% <ct> <rt> <lt> are passed as argument
|
||||||
|
/title {
|
||||||
|
% 1. Draw the background
|
||||||
|
x v get y v get moveto
|
||||||
|
gsave
|
||||||
|
0 th 2 div neg rmoveto
|
||||||
|
th setlinewidth
|
||||||
|
0.95 setgray
|
||||||
|
pw 0 rlineto stroke
|
||||||
|
grestore
|
||||||
|
% 2. Border it
|
||||||
|
gsave
|
||||||
|
0.7 setlinewidth
|
||||||
|
pw 0 rlineto
|
||||||
|
0 th neg rlineto
|
||||||
|
pw neg 0 rlineto
|
||||||
|
closepath stroke
|
||||||
|
grestore
|
||||||
|
% stk: ct rt lt
|
||||||
|
x v get y v get th sub 1 add moveto
|
||||||
|
%%IncludeResource: font Helvetica
|
||||||
|
fHelvetica fnfs 0.8 mul scalefont setfont
|
||||||
|
% 3. The left title
|
||||||
|
gsave
|
||||||
|
dup stringwidth pop fnfs 0.8 mul add exch % leave space took on stack
|
||||||
|
fnfs 0.8 mul hm rmoveto
|
||||||
|
show % left title
|
||||||
|
grestore
|
||||||
|
exch
|
||||||
|
% stk: ct ltw rt
|
||||||
|
% 4. the right title
|
||||||
|
gsave
|
||||||
|
dup stringwidth pop fnfs 0.8 mul add exch % leave space took on stack
|
||||||
|
dup
|
||||||
|
pw exch stringwidth pop fnfs 0.8 mul add sub
|
||||||
|
hm
|
||||||
|
rmoveto
|
||||||
|
show % right title
|
||||||
|
grestore
|
||||||
|
% stk: ct ltw rtw
|
||||||
|
% 5. the center title
|
||||||
|
gsave
|
||||||
|
pw 3 1 roll
|
||||||
|
% stk: ct pw ltw rtw
|
||||||
|
3 copy
|
||||||
|
% Move to the center of the left room
|
||||||
|
sub add 2 div hm rmoveto
|
||||||
|
% What is the available space in here?
|
||||||
|
add sub fnfs 0.8 mul sub fnfs 0.8 mul sub
|
||||||
|
% stk: ct space_left
|
||||||
|
%%IncludeResource: font Helvetica-Bold
|
||||||
|
fHelvetica-Bold fnfs scalefont setfont
|
||||||
|
cfshow
|
||||||
|
grestore
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% Function border: prints virtual page border
|
||||||
|
/border { %def
|
||||||
|
gsave % print four sides
|
||||||
|
0 setgray
|
||||||
|
x v get y v get moveto
|
||||||
|
0.7 setlinewidth % of the square
|
||||||
|
pw 0 rlineto
|
||||||
|
0 ph neg rlineto
|
||||||
|
pw neg 0 rlineto
|
||||||
|
closepath stroke
|
||||||
|
grestore
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% Function water: prints a water mark in background
|
||||||
|
/water { %def
|
||||||
|
gsave
|
||||||
|
scx scy moveto rotate
|
||||||
|
%%IncludeResource: font Times-Bold
|
||||||
|
fTimes-Bold 100 scalefont setfont
|
||||||
|
.97 setgray
|
||||||
|
dup stringwidth pop 2 div neg -50 rmoveto
|
||||||
|
show
|
||||||
|
grestore
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% Function rhead: prints the right header
|
||||||
|
/rhead { %def
|
||||||
|
lx ly moveto
|
||||||
|
fHelvetica fnfs 0.8 mul scalefont setfont
|
||||||
|
l-show
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% Function footer (cf rf lf -> -)
|
||||||
|
/footer {
|
||||||
|
fHelvetica fnfs 0.8 mul scalefont setfont
|
||||||
|
dx dy moveto
|
||||||
|
show
|
||||||
|
|
||||||
|
snx sny moveto
|
||||||
|
l-show
|
||||||
|
|
||||||
|
fnx fny moveto
|
||||||
|
c-show
|
||||||
|
} bind def
|
||||||
|
%%EndResource
|
||||||
|
%%BeginResource: procset a2ps-black+white-Prolog 2.0 1
|
||||||
|
|
||||||
|
% Function T(ab), jumps to the n-th tabulation in the current line
|
||||||
|
/T {
|
||||||
|
cw mul x0 add y0 moveto
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% Function n: move to the next line
|
||||||
|
/n { %def
|
||||||
|
/y0 y0 bfs sub store
|
||||||
|
x0 y0 moveto
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% Function N: show and move to the next line
|
||||||
|
/N {
|
||||||
|
Show
|
||||||
|
/y0 y0 bfs sub store
|
||||||
|
x0 y0 moveto
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/S {
|
||||||
|
Show
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/p {
|
||||||
|
false UL
|
||||||
|
false BX
|
||||||
|
fCourier bfs scalefont setfont
|
||||||
|
Show
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/sy {
|
||||||
|
false UL
|
||||||
|
false BX
|
||||||
|
fSymbol bfs scalefont setfont
|
||||||
|
Show
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/k {
|
||||||
|
false UL
|
||||||
|
false BX
|
||||||
|
fCourier-Oblique bfs scalefont setfont
|
||||||
|
Show
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/K {
|
||||||
|
false UL
|
||||||
|
false BX
|
||||||
|
fCourier-Bold bfs scalefont setfont
|
||||||
|
Show
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/c {
|
||||||
|
false UL
|
||||||
|
false BX
|
||||||
|
fCourier-Oblique bfs scalefont setfont
|
||||||
|
Show
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/C {
|
||||||
|
false UL
|
||||||
|
false BX
|
||||||
|
fCourier-BoldOblique bfs scalefont setfont
|
||||||
|
Show
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/l {
|
||||||
|
false UL
|
||||||
|
false BX
|
||||||
|
fHelvetica bfs scalefont setfont
|
||||||
|
Show
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/L {
|
||||||
|
false UL
|
||||||
|
false BX
|
||||||
|
fHelvetica-Bold bfs scalefont setfont
|
||||||
|
Show
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/str{
|
||||||
|
false UL
|
||||||
|
false BX
|
||||||
|
fTimes-Roman bfs scalefont setfont
|
||||||
|
Show
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/e{
|
||||||
|
false UL
|
||||||
|
true BX
|
||||||
|
fHelvetica-Bold bfs scalefont setfont
|
||||||
|
Show
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
%%EndResource
|
||||||
|
%%EndProlog
|
||||||
|
%%BeginSetup
|
||||||
|
%%IncludeResource: font Courier
|
||||||
|
%%IncludeResource: font Courier-Oblique
|
||||||
|
%%IncludeResource: font Courier-Bold
|
||||||
|
%%IncludeResource: font Times-Roman
|
||||||
|
%%IncludeResource: font Symbol
|
||||||
|
%%IncludeResource: font Courier-BoldOblique
|
||||||
|
%%BeginResource: encoding ISO-8859-1Encoding
|
||||||
|
/ISO-8859-1Encoding [
|
||||||
|
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||||
|
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||||
|
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||||
|
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||||
|
/space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright
|
||||||
|
/parenleft /parenright /asterisk /plus /comma /minus /period /slash
|
||||||
|
/zero /one /two /three /four /five /six /seven
|
||||||
|
/eight /nine /colon /semicolon /less /equal /greater /question
|
||||||
|
/at /A /B /C /D /E /F /G
|
||||||
|
/H /I /J /K /L /M /N /O
|
||||||
|
/P /Q /R /S /T /U /V /W
|
||||||
|
/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
|
||||||
|
/quoteleft /a /b /c /d /e /f /g
|
||||||
|
/h /i /j /k /l /m /n /o
|
||||||
|
/p /q /r /s /t /u /v /w
|
||||||
|
/x /y /z /braceleft /bar /braceright /asciitilde /.notdef
|
||||||
|
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||||
|
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||||
|
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||||
|
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||||
|
/space /exclamdown /cent /sterling /currency /yen /brokenbar /section
|
||||||
|
/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron
|
||||||
|
/degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /bullet
|
||||||
|
/cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown
|
||||||
|
/Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
|
||||||
|
/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis
|
||||||
|
/Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply
|
||||||
|
/Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls
|
||||||
|
/agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla
|
||||||
|
/egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
|
||||||
|
/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide
|
||||||
|
/oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis
|
||||||
|
] def
|
||||||
|
%%EndResource
|
||||||
|
% Initialize page description variables.
|
||||||
|
/sh 612 def
|
||||||
|
/sw 792 def
|
||||||
|
/llx 24 def
|
||||||
|
/urx 768 def
|
||||||
|
/ury 588 def
|
||||||
|
/lly 24 def
|
||||||
|
/#copies 1 def
|
||||||
|
/th 15.000000 def
|
||||||
|
/fnfs 11 def
|
||||||
|
/bfs 6.000000 def
|
||||||
|
/cw 3.600000 def
|
||||||
|
|
||||||
|
% Dictionary for ISO-8859-1 support
|
||||||
|
/iso1dict 8 dict begin
|
||||||
|
/fCourier ISO-8859-1Encoding /Courier reencode_font
|
||||||
|
/fCourier-Bold ISO-8859-1Encoding /Courier-Bold reencode_font
|
||||||
|
/fCourier-BoldOblique ISO-8859-1Encoding /Courier-BoldOblique reencode_font
|
||||||
|
/fCourier-Oblique ISO-8859-1Encoding /Courier-Oblique reencode_font
|
||||||
|
/fHelvetica ISO-8859-1Encoding /Helvetica reencode_font
|
||||||
|
/fHelvetica-Bold ISO-8859-1Encoding /Helvetica-Bold reencode_font
|
||||||
|
/fTimes-Bold ISO-8859-1Encoding /Times-Bold reencode_font
|
||||||
|
/fTimes-Roman ISO-8859-1Encoding /Times-Roman reencode_font
|
||||||
|
currentdict end def
|
||||||
|
/bgcolor [ 0 0 0 ] def
|
||||||
|
/bg false def
|
||||||
|
/ul false def
|
||||||
|
/bx false def
|
||||||
|
% The font for line numbering
|
||||||
|
/f# /Helvetica findfont bfs .6 mul scalefont def
|
||||||
|
/fSymbol /Symbol findfont def
|
||||||
|
/hm fnfs 0.25 mul def
|
||||||
|
/pw
|
||||||
|
cw 101.400000 mul
|
||||||
|
def
|
||||||
|
/ph
|
||||||
|
520.200000 th add
|
||||||
|
def
|
||||||
|
/pmw urx llx sub pw 2 mul sub 1 div def
|
||||||
|
/pmh 0 def
|
||||||
|
/v 0 def
|
||||||
|
/x [
|
||||||
|
0
|
||||||
|
dup pmw add pw add
|
||||||
|
] def
|
||||||
|
/y [
|
||||||
|
pmh ph add 0 mul ph add
|
||||||
|
dup
|
||||||
|
] def
|
||||||
|
/scx sw 2 div def
|
||||||
|
/scy sh 2 div def
|
||||||
|
/snx urx def
|
||||||
|
/sny lly 2 add def
|
||||||
|
/dx llx def
|
||||||
|
/dy sny def
|
||||||
|
/fnx scx def
|
||||||
|
/fny dy def
|
||||||
|
/lx snx def
|
||||||
|
/ly ury fnfs 0.8 mul sub def
|
||||||
|
/sx 0 def
|
||||||
|
/tab 8 def
|
||||||
|
/x0 0 def
|
||||||
|
/y0 0 def
|
||||||
|
%%EndSetup
|
||||||
|
|
||||||
|
%%Page: (1-2) 1
|
||||||
|
%%BeginPageSetup
|
||||||
|
/pagesave save def
|
||||||
|
sh 0 translate 90 rotate
|
||||||
|
%%EndPageSetup
|
||||||
|
iso1dict begin
|
||||||
|
gsave
|
||||||
|
llx lly 12 add translate
|
||||||
|
/v 0 store
|
||||||
|
/x0 x v get 2.520000 add sx cw mul add store
|
||||||
|
/y0 y v get bfs th add sub store
|
||||||
|
x0 y0 moveto
|
||||||
|
(#!/usr/bin/python) c n
|
||||||
|
() p n
|
||||||
|
(import) K
|
||||||
|
( socket) p n
|
||||||
|
(import) K
|
||||||
|
( Queue) p n
|
||||||
|
(import) K
|
||||||
|
( threading) p n
|
||||||
|
(import) K
|
||||||
|
( md5) p n
|
||||||
|
(import) K
|
||||||
|
( time) p n
|
||||||
|
() N
|
||||||
|
(class) K
|
||||||
|
( Entry\(object\):) p n
|
||||||
|
( ) S
|
||||||
|
(def) K
|
||||||
|
( __init__\(self, dynid, sharedSecret, name\):) p n
|
||||||
|
( self.dynid = dynid) N
|
||||||
|
( self.sharedSecret = sharedSecret) N
|
||||||
|
( self.name = name) N
|
||||||
|
( self.lastEventTime = 0) N
|
||||||
|
( self.address = '') N
|
||||||
|
() N
|
||||||
|
(class) K
|
||||||
|
( IllegalEventException\(Exception\):) p n
|
||||||
|
( ) S
|
||||||
|
(def) K
|
||||||
|
( __init__\(self, msg\):) p n
|
||||||
|
( self.msg = msg) N
|
||||||
|
() N
|
||||||
|
() N
|
||||||
|
(class) K
|
||||||
|
( Event\(object\):) p n
|
||||||
|
( ) S
|
||||||
|
(def) K
|
||||||
|
( __init__\(self, address, data, receiveTime\):) p n
|
||||||
|
( self.address = address) N
|
||||||
|
( self.data = data) N
|
||||||
|
( self.receiveTime = receiveTime) N
|
||||||
|
() N
|
||||||
|
( ) S
|
||||||
|
(def) K
|
||||||
|
( prepare\(self\):) p n
|
||||||
|
( self.port = self.address[1]) N
|
||||||
|
( self.address = self.address[0]) N
|
||||||
|
( \(self.dynid, self.msgTime, self.checksum\) = self.data.split\(') S
|
||||||
|
( ) str
|
||||||
|
('\)) p n
|
||||||
|
( self.msgTime = int\(self.msgTime\)) N
|
||||||
|
( self.prepared = True) N
|
||||||
|
() N
|
||||||
|
( ) S
|
||||||
|
(def) K
|
||||||
|
( process\(self\):) p n
|
||||||
|
( ) S
|
||||||
|
(if) K
|
||||||
|
( ) p
|
||||||
|
(not) K
|
||||||
|
( self.prepared:) p n
|
||||||
|
( self.prepare\(\)) N
|
||||||
|
() N
|
||||||
|
( ) S
|
||||||
|
(if) K
|
||||||
|
( ) p
|
||||||
|
(not) K
|
||||||
|
( ENTRIES.has_key\(self.dynid\):) p n
|
||||||
|
( ) S
|
||||||
|
(raise) K
|
||||||
|
( IllegalEventException\(") p
|
||||||
|
(unknown dynid in event %s) str
|
||||||
|
(" % str\(self\)\)) p n
|
||||||
|
( entry = ENTRIES[self.dynid]) N
|
||||||
|
() N
|
||||||
|
( ) S
|
||||||
|
(if) K
|
||||||
|
( self.msgTime + MSG_TIME_CORRIDOR < self.receiveTime:) p n
|
||||||
|
( ) S
|
||||||
|
(raise) K
|
||||||
|
( IllegalEventException\(") p
|
||||||
|
(event too old %s) str
|
||||||
|
(" % str\(self\)\)) p n
|
||||||
|
( ) S
|
||||||
|
(if) K
|
||||||
|
( self.msgTime - MSG_TIME_CORRIDOR > self.receiveTime:) p n
|
||||||
|
( ) S
|
||||||
|
(raise) K
|
||||||
|
( IllegalEventException\(") p
|
||||||
|
(event too young %s) str
|
||||||
|
(" % str\(self\)\)) p n
|
||||||
|
() N
|
||||||
|
() N
|
||||||
|
( ) S
|
||||||
|
(if) K
|
||||||
|
( entry.lastEventTime >= self.msgTime:) p n
|
||||||
|
( ) S
|
||||||
|
(raise) K
|
||||||
|
( IllegalEventException\(") p
|
||||||
|
(timing sequence failure in event, possibly replay %s) str
|
||||||
|
(" % str\(self\)\)) p n
|
||||||
|
() N
|
||||||
|
( di = ") S
|
||||||
|
(%s %s %d) str
|
||||||
|
(" % \(self.dynid, entry.sharedSecret, self.msgTime\)) p n
|
||||||
|
( d = md5.new\(di\).hexdigest\(\)) N
|
||||||
|
( ) S
|
||||||
|
(print) K
|
||||||
|
( ") p
|
||||||
|
(%s, received: %s, calculated: %s) str
|
||||||
|
(" % \(di, self.checksum, d\)) p n
|
||||||
|
( ) S
|
||||||
|
(if) K
|
||||||
|
( d != self.checksum:) p n
|
||||||
|
( ) S
|
||||||
|
(raise) K
|
||||||
|
( IllegalEventException\(") p
|
||||||
|
(wrong checksum for event %s) str
|
||||||
|
(" % str\(self\)\)) p n
|
||||||
|
() N
|
||||||
|
( entry.lastEventTime = self.msgTime) N
|
||||||
|
() N
|
||||||
|
( ) S
|
||||||
|
(if) K
|
||||||
|
( entry.address == self.address:) p n
|
||||||
|
( ) S
|
||||||
|
(print) K
|
||||||
|
( ") p
|
||||||
|
(Same address, nothing to do.) str
|
||||||
|
(") p n
|
||||||
|
( ) S
|
||||||
|
(else) K
|
||||||
|
(:) p n
|
||||||
|
( entry.address = self.address) N
|
||||||
|
( ) S
|
||||||
|
(print) K
|
||||||
|
( ") p
|
||||||
|
(Set in DNS: %s -> %s) str
|
||||||
|
(" % \(entry.name, entry.address\)) p n
|
||||||
|
() N
|
||||||
|
() N
|
||||||
|
( ) S
|
||||||
|
(def) K
|
||||||
|
( __str__\(self\):) p n
|
||||||
|
( ) S
|
||||||
|
(if) K
|
||||||
|
( ) p
|
||||||
|
(not) K
|
||||||
|
( self.prepared:) p n
|
||||||
|
( self.prepare\(\)) N
|
||||||
|
( ) S
|
||||||
|
(return) K
|
||||||
|
( ") p
|
||||||
|
(%s from %s:%d) str
|
||||||
|
(" % \(self.data, self.address, self.port\)) p n
|
||||||
|
() N
|
||||||
|
(class) K
|
||||||
|
( Handler\(threading.Thread\):) p n
|
||||||
|
( ) S
|
||||||
|
(def) K
|
||||||
|
( __init__\(self, queue\):) p n
|
||||||
|
( threading.Thread.__init__\(self\)) N
|
||||||
|
( self.q = queue) N
|
||||||
|
( self.setDaemon\(True\)) N
|
||||||
|
() N
|
||||||
|
( ) S
|
||||||
|
(def) K
|
||||||
|
( run\(self\):) p n
|
||||||
|
( ) S
|
||||||
|
(while) K
|
||||||
|
( True:) p n
|
||||||
|
( event = self.q.get\(\)) N
|
||||||
|
( ) S
|
||||||
|
(try) K
|
||||||
|
(:) p n
|
||||||
|
( event.prepare\(\)) N
|
||||||
|
( ) S
|
||||||
|
(print) K
|
||||||
|
( ") p
|
||||||
|
(Processing event %s) str
|
||||||
|
(" % str\(event\)) p n
|
||||||
|
( event.process\(\)) N
|
||||||
|
( ) S
|
||||||
|
(except) K
|
||||||
|
( IllegalEventException, e:) p n
|
||||||
|
( ) S
|
||||||
|
(print) K
|
||||||
|
( ") p
|
||||||
|
(Some failure: %s) str
|
||||||
|
(" % e.msg) p n
|
||||||
|
(yadyn) (Seite 1/2) (Nov 09, 07 13:31) title
|
||||||
|
border
|
||||||
|
/v 1 store
|
||||||
|
/x0 x v get 2.520000 add sx cw mul add store
|
||||||
|
/y0 y v get bfs th add sub store
|
||||||
|
x0 y0 moveto
|
||||||
|
() p n
|
||||||
|
(class) K
|
||||||
|
( Expirer\(threading.Thread\):) p n
|
||||||
|
( ) S
|
||||||
|
(def) K
|
||||||
|
( __init__\(self\):) p n
|
||||||
|
( threading.Thread.__init__\(self\)) N
|
||||||
|
( self.setDaemon\(True\)) N
|
||||||
|
() N
|
||||||
|
( ) S
|
||||||
|
(def) K
|
||||||
|
( run\(self\):) p n
|
||||||
|
( ) S
|
||||||
|
(while) K
|
||||||
|
( True:) p n
|
||||||
|
( ) S
|
||||||
|
(print) K
|
||||||
|
( ") p
|
||||||
|
(Expiring ...) str
|
||||||
|
(") p n
|
||||||
|
( currentTime = int\(time.time\(\)\)) N
|
||||||
|
( ) S
|
||||||
|
(for) K
|
||||||
|
( entry ) p
|
||||||
|
(in) K
|
||||||
|
( ENTRIES.values\(\):) p n
|
||||||
|
( ) S
|
||||||
|
(if) K
|
||||||
|
( entry.lastEventTime != 0 ) p
|
||||||
|
(and) K
|
||||||
|
( entry.lastEventTime + EVENT_LIFE_TIME < currentTime:) p n
|
||||||
|
( ) S
|
||||||
|
(print) K
|
||||||
|
( ") p
|
||||||
|
(Entry %s expired) str
|
||||||
|
(" % entry.dynid) p n
|
||||||
|
( entry.lastEventTime = 0) N
|
||||||
|
( entry.address = NULL_ADDRESS) N
|
||||||
|
( ) S
|
||||||
|
(print) K
|
||||||
|
( ") p
|
||||||
|
(Set in DNS: %s -> %s) str
|
||||||
|
(" % \(entry.name, entry.address\)) p n
|
||||||
|
( time.sleep\(10\)) N
|
||||||
|
( ) N
|
||||||
|
() N
|
||||||
|
(ENTRIES = {) N
|
||||||
|
( ') S
|
||||||
|
(testhost) str
|
||||||
|
(': Entry\(') p
|
||||||
|
(testhost,) str
|
||||||
|
(', ') p
|
||||||
|
(test123) str
|
||||||
|
(', ') p
|
||||||
|
(test.test.de) str
|
||||||
|
('\),) p n
|
||||||
|
( }) N
|
||||||
|
(MSG_TIME_CORRIDOR = 5) N
|
||||||
|
(EVENT_LIFE_TIME = 10) N
|
||||||
|
(NULL_ADDRESS = ') S
|
||||||
|
(0.0.0.0) str
|
||||||
|
(') p n
|
||||||
|
() N
|
||||||
|
(q = Queue.Queue\(\)) N
|
||||||
|
() N
|
||||||
|
(handler = Handler\(q\)) N
|
||||||
|
(handler.start\(\)) N
|
||||||
|
() N
|
||||||
|
(expirer = Expirer\(\)) N
|
||||||
|
(expirer.start\(\)) N
|
||||||
|
() N
|
||||||
|
(s = socket.socket\(socket.AF_INET, socket.SOCK_DGRAM\)) N
|
||||||
|
(s.bind\(\("", 9090\)\)) N
|
||||||
|
() N
|
||||||
|
(while) K
|
||||||
|
( True:) p n
|
||||||
|
( data, address = s.recvfrom\(256\)) N
|
||||||
|
( ) S
|
||||||
|
(try) K
|
||||||
|
(:) p n
|
||||||
|
( q.put_nowait\(Event\(address, data, int\(time.time\(\)\)\)\)) N
|
||||||
|
( ) S
|
||||||
|
(except) K
|
||||||
|
( Queue.Full:) p n
|
||||||
|
( ) S
|
||||||
|
(print) K
|
||||||
|
( ") p
|
||||||
|
(Event %s from %s dropped) str
|
||||||
|
(" % \(data, str\(address\)\)) p n
|
||||||
|
() N
|
||||||
|
(yadyn) (Seite 2/2) (Nov 09, 07 13:31) title
|
||||||
|
border
|
||||||
|
grestore
|
||||||
|
(Gedruckt von Wolfgang Hottgenroth) rhead
|
||||||
|
(yadyn) (1/1) (Samstag November 10, 2007) footer
|
||||||
|
end % of iso1dict
|
||||||
|
pagesave restore
|
||||||
|
showpage
|
||||||
|
|
||||||
|
%%Trailer
|
||||||
|
end
|
||||||
|
%%EOF
|
937
server/a.ps~
Normal file
937
server/a.ps~
Normal file
@ -0,0 +1,937 @@
|
|||||||
|
%!PS-Adobe-3.0
|
||||||
|
%%Title: yadyn
|
||||||
|
%%For: Wolfgang Hottgenroth
|
||||||
|
%%Creator: a2ps version 4.13
|
||||||
|
%%CreationDate: Sat Nov 10 10:07:58 2007
|
||||||
|
%%BoundingBox: 24 24 588 768
|
||||||
|
%%DocumentData: Clean7Bit
|
||||||
|
%%Orientation: Landscape
|
||||||
|
%%Pages: 2
|
||||||
|
%%PageOrder: Ascend
|
||||||
|
%%DocumentMedia: Letter 612 792 0 () ()
|
||||||
|
%%DocumentNeededResources: font Courier
|
||||||
|
%%+ font Courier-Bold
|
||||||
|
%%+ font Courier-BoldOblique
|
||||||
|
%%+ font Courier-Oblique
|
||||||
|
%%+ font Helvetica
|
||||||
|
%%+ font Helvetica-Bold
|
||||||
|
%%+ font Symbol
|
||||||
|
%%+ font Times-Bold
|
||||||
|
%%+ font Times-Roman
|
||||||
|
%%DocumentProcessColors: Black
|
||||||
|
%%DocumentSuppliedResources: procset a2ps-a2ps-hdr
|
||||||
|
%%+ procset a2ps-black+white-Prolog
|
||||||
|
%%+ encoding ISO-8859-1Encoding
|
||||||
|
%%EndComments
|
||||||
|
/a2psdict 200 dict def
|
||||||
|
a2psdict begin
|
||||||
|
%%BeginProlog
|
||||||
|
%%Copyright: (c) 1988, 89, 90, 91, 92, 93 Miguel Santana
|
||||||
|
%%Copyright: (c) 1995, 96, 97, 98 Akim Demaille, Miguel Santana
|
||||||
|
% Check PostScript language level.
|
||||||
|
/languagelevel where {
|
||||||
|
pop /gs_languagelevel languagelevel def
|
||||||
|
} {
|
||||||
|
/gs_languagelevel 1 def
|
||||||
|
} ifelse
|
||||||
|
|
||||||
|
% EPSF import as in the Red Book
|
||||||
|
/BeginInclude {
|
||||||
|
/b4_Inc_state save def % Save state for cleanup
|
||||||
|
/dict_count countdictstack def % Count objects on dict stack
|
||||||
|
/op_count count 1 sub def % Count objects on operand stack
|
||||||
|
userdict begin
|
||||||
|
0 setgray 0 setlinecap
|
||||||
|
1 setlinewidth 0 setlinejoin
|
||||||
|
10 setmiterlimit [ ] 0 setdash newpath
|
||||||
|
gs_languagelevel 1 ne {
|
||||||
|
false setstrokeadjust false setoverprint
|
||||||
|
} if
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/EndInclude {
|
||||||
|
count op_count sub { pos } repeat % Clean up stacks
|
||||||
|
countdictstack dict_count sub { end } repeat
|
||||||
|
b4_Inc_state restore
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/BeginEPSF {
|
||||||
|
BeginInclude
|
||||||
|
/showpage { } def
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/EndEPSF {
|
||||||
|
EndInclude
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% Page prefeed
|
||||||
|
/page_prefeed { % bool -> -
|
||||||
|
statusdict /prefeed known {
|
||||||
|
statusdict exch /prefeed exch put
|
||||||
|
} {
|
||||||
|
pop
|
||||||
|
} ifelse
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/deffont {
|
||||||
|
findfont exch scalefont def
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/reencode_font {
|
||||||
|
findfont reencode 2 copy definefont pop def
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% Function c-show (str => -)
|
||||||
|
% centers text only according to x axis.
|
||||||
|
/c-show {
|
||||||
|
dup stringwidth pop
|
||||||
|
2 div neg 0 rmoveto
|
||||||
|
show
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% Function l-show (str => -)
|
||||||
|
% prints texts so that it ends at currentpoint
|
||||||
|
/l-show {
|
||||||
|
dup stringwidth pop neg
|
||||||
|
0
|
||||||
|
rmoveto show
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% center-fit show (str w => -)
|
||||||
|
% show centered, and scale currentfont so that the width is less than w
|
||||||
|
/cfshow {
|
||||||
|
exch dup stringwidth pop
|
||||||
|
% If the title is too big, try to make it smaller
|
||||||
|
3 2 roll 2 copy
|
||||||
|
gt
|
||||||
|
{ % if, i.e. too big
|
||||||
|
exch div
|
||||||
|
currentfont exch scalefont setfont
|
||||||
|
} { % ifelse
|
||||||
|
pop pop
|
||||||
|
}
|
||||||
|
ifelse
|
||||||
|
c-show % center title
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% Return the y size of the current font
|
||||||
|
% - => fontsize
|
||||||
|
/currentfontsize {
|
||||||
|
currentfont /FontMatrix get 3 get 1000 mul
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% reencode the font
|
||||||
|
% <encoding-vector> <fontdict> -> <newfontdict>
|
||||||
|
/reencode
|
||||||
|
{
|
||||||
|
dup length 5 add dict begin
|
||||||
|
{ % <vector> <key> <val>
|
||||||
|
1 index /FID ne
|
||||||
|
{ def }{ pop pop } ifelse
|
||||||
|
} forall
|
||||||
|
/Encoding exch def % -
|
||||||
|
|
||||||
|
% Use the font's bounding box to determine the ascent, descent,
|
||||||
|
% and overall height; don't forget that these values have to be
|
||||||
|
% transformed using the font's matrix. We use `load' because sometimes
|
||||||
|
% BBox is executable, sometimes not. Since we need 4 numbers an not
|
||||||
|
% an array avoid BBox from being executed
|
||||||
|
/FontBBox load aload pop
|
||||||
|
FontMatrix transform /Ascent exch def pop
|
||||||
|
FontMatrix transform /Descent exch def pop
|
||||||
|
/FontHeight Ascent Descent sub def
|
||||||
|
|
||||||
|
% Get the underline position and thickness if they're defined.
|
||||||
|
% Use 1 if they are not defined.
|
||||||
|
currentdict /FontInfo 2 copy known
|
||||||
|
{ get
|
||||||
|
/UnderlinePosition 2 copy % <FontInfo> /UP <FontInfo> /UP
|
||||||
|
2 copy known
|
||||||
|
{ get }{ pop pop 1} ifelse
|
||||||
|
0 exch FontMatrix transform exch pop
|
||||||
|
def % <FontInfo>
|
||||||
|
|
||||||
|
/UnderlineThickness 2 copy % <FontInfo> /UT <FontInfo> /UT
|
||||||
|
2 copy known
|
||||||
|
{ get }{ pop pop 1} ifelse
|
||||||
|
0 exch FontMatrix transform exch pop
|
||||||
|
def % <FontInfo>
|
||||||
|
pop % -
|
||||||
|
}{ pop pop
|
||||||
|
} ifelse
|
||||||
|
|
||||||
|
currentdict
|
||||||
|
end
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% Function print line number (<string> # -)
|
||||||
|
/# {
|
||||||
|
gsave
|
||||||
|
sx cw mul neg 2 div 0 rmoveto
|
||||||
|
f# setfont
|
||||||
|
c-show
|
||||||
|
grestore
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% -------- Some routines to enlight plain b/w printings ---------
|
||||||
|
|
||||||
|
% Underline
|
||||||
|
% width --
|
||||||
|
/dounderline {
|
||||||
|
currentpoint
|
||||||
|
gsave
|
||||||
|
moveto
|
||||||
|
0 currentfont /Descent get currentfontsize mul rmoveto
|
||||||
|
0 rlineto
|
||||||
|
stroke
|
||||||
|
grestore
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% Underline a string
|
||||||
|
% string --
|
||||||
|
/dounderlinestring {
|
||||||
|
stringwidth pop
|
||||||
|
dounderline
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/UL {
|
||||||
|
/ul exch store
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% Draw a box of WIDTH wrt current font
|
||||||
|
% width --
|
||||||
|
/dobox {
|
||||||
|
currentpoint
|
||||||
|
gsave
|
||||||
|
newpath
|
||||||
|
moveto
|
||||||
|
0 currentfont /Descent get currentfontsize mul rmoveto
|
||||||
|
dup 0 rlineto
|
||||||
|
0 currentfont /FontHeight get currentfontsize mul rlineto
|
||||||
|
neg 0 rlineto
|
||||||
|
closepath
|
||||||
|
stroke
|
||||||
|
grestore
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/BX {
|
||||||
|
/bx exch store
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% Box a string
|
||||||
|
% string --
|
||||||
|
/doboxstring {
|
||||||
|
stringwidth pop
|
||||||
|
dobox
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
%
|
||||||
|
% ------------- Color routines ---------------
|
||||||
|
%
|
||||||
|
/FG /setrgbcolor load def
|
||||||
|
|
||||||
|
% Draw the background
|
||||||
|
% width --
|
||||||
|
/dobackground {
|
||||||
|
currentpoint
|
||||||
|
gsave
|
||||||
|
newpath
|
||||||
|
moveto
|
||||||
|
0 currentfont /Descent get currentfontsize mul rmoveto
|
||||||
|
dup 0 rlineto
|
||||||
|
0 currentfont /FontHeight get currentfontsize mul rlineto
|
||||||
|
neg 0 rlineto
|
||||||
|
closepath
|
||||||
|
bgcolor aload pop setrgbcolor
|
||||||
|
fill
|
||||||
|
grestore
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% Draw bg for a string
|
||||||
|
% string --
|
||||||
|
/dobackgroundstring {
|
||||||
|
stringwidth pop
|
||||||
|
dobackground
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
|
||||||
|
/BG {
|
||||||
|
dup /bg exch store
|
||||||
|
{ mark 4 1 roll ] /bgcolor exch store } if
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
|
||||||
|
/Show {
|
||||||
|
bg { dup dobackgroundstring } if
|
||||||
|
ul { dup dounderlinestring } if
|
||||||
|
bx { dup doboxstring } if
|
||||||
|
show
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% Function T(ab), jumps to the n-th tabulation in the current line
|
||||||
|
/T {
|
||||||
|
cw mul x0 add
|
||||||
|
bg { dup currentpoint pop sub dobackground } if
|
||||||
|
ul { dup currentpoint pop sub dounderline } if
|
||||||
|
bx { dup currentpoint pop sub dobox } if
|
||||||
|
y0 moveto
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% Function n: move to the next line
|
||||||
|
/n {
|
||||||
|
/y0 y0 bfs sub store
|
||||||
|
x0 y0 moveto
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% Function N: show and move to the next line
|
||||||
|
/N {
|
||||||
|
Show
|
||||||
|
/y0 y0 bfs sub store
|
||||||
|
x0 y0 moveto
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/S {
|
||||||
|
Show
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
%%BeginResource: procset a2ps-a2ps-hdr 2.0 2
|
||||||
|
%%Copyright: (c) 1988, 89, 90, 91, 92, 93 Miguel Santana
|
||||||
|
%%Copyright: (c) 1995, 96, 97, 98 Akim Demaille, Miguel Santana
|
||||||
|
% Function title: prints page header.
|
||||||
|
% <ct> <rt> <lt> are passed as argument
|
||||||
|
/title {
|
||||||
|
% 1. Draw the background
|
||||||
|
x v get y v get moveto
|
||||||
|
gsave
|
||||||
|
0 th 2 div neg rmoveto
|
||||||
|
th setlinewidth
|
||||||
|
0.95 setgray
|
||||||
|
pw 0 rlineto stroke
|
||||||
|
grestore
|
||||||
|
% 2. Border it
|
||||||
|
gsave
|
||||||
|
0.7 setlinewidth
|
||||||
|
pw 0 rlineto
|
||||||
|
0 th neg rlineto
|
||||||
|
pw neg 0 rlineto
|
||||||
|
closepath stroke
|
||||||
|
grestore
|
||||||
|
% stk: ct rt lt
|
||||||
|
x v get y v get th sub 1 add moveto
|
||||||
|
%%IncludeResource: font Helvetica
|
||||||
|
fHelvetica fnfs 0.8 mul scalefont setfont
|
||||||
|
% 3. The left title
|
||||||
|
gsave
|
||||||
|
dup stringwidth pop fnfs 0.8 mul add exch % leave space took on stack
|
||||||
|
fnfs 0.8 mul hm rmoveto
|
||||||
|
show % left title
|
||||||
|
grestore
|
||||||
|
exch
|
||||||
|
% stk: ct ltw rt
|
||||||
|
% 4. the right title
|
||||||
|
gsave
|
||||||
|
dup stringwidth pop fnfs 0.8 mul add exch % leave space took on stack
|
||||||
|
dup
|
||||||
|
pw exch stringwidth pop fnfs 0.8 mul add sub
|
||||||
|
hm
|
||||||
|
rmoveto
|
||||||
|
show % right title
|
||||||
|
grestore
|
||||||
|
% stk: ct ltw rtw
|
||||||
|
% 5. the center title
|
||||||
|
gsave
|
||||||
|
pw 3 1 roll
|
||||||
|
% stk: ct pw ltw rtw
|
||||||
|
3 copy
|
||||||
|
% Move to the center of the left room
|
||||||
|
sub add 2 div hm rmoveto
|
||||||
|
% What is the available space in here?
|
||||||
|
add sub fnfs 0.8 mul sub fnfs 0.8 mul sub
|
||||||
|
% stk: ct space_left
|
||||||
|
%%IncludeResource: font Helvetica-Bold
|
||||||
|
fHelvetica-Bold fnfs scalefont setfont
|
||||||
|
cfshow
|
||||||
|
grestore
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% Function border: prints virtual page border
|
||||||
|
/border { %def
|
||||||
|
gsave % print four sides
|
||||||
|
0 setgray
|
||||||
|
x v get y v get moveto
|
||||||
|
0.7 setlinewidth % of the square
|
||||||
|
pw 0 rlineto
|
||||||
|
0 ph neg rlineto
|
||||||
|
pw neg 0 rlineto
|
||||||
|
closepath stroke
|
||||||
|
grestore
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% Function water: prints a water mark in background
|
||||||
|
/water { %def
|
||||||
|
gsave
|
||||||
|
scx scy moveto rotate
|
||||||
|
%%IncludeResource: font Times-Bold
|
||||||
|
fTimes-Bold 100 scalefont setfont
|
||||||
|
.97 setgray
|
||||||
|
dup stringwidth pop 2 div neg -50 rmoveto
|
||||||
|
show
|
||||||
|
grestore
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% Function rhead: prints the right header
|
||||||
|
/rhead { %def
|
||||||
|
lx ly moveto
|
||||||
|
fHelvetica fnfs 0.8 mul scalefont setfont
|
||||||
|
l-show
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% Function footer (cf rf lf -> -)
|
||||||
|
/footer {
|
||||||
|
fHelvetica fnfs 0.8 mul scalefont setfont
|
||||||
|
dx dy moveto
|
||||||
|
show
|
||||||
|
|
||||||
|
snx sny moveto
|
||||||
|
l-show
|
||||||
|
|
||||||
|
fnx fny moveto
|
||||||
|
c-show
|
||||||
|
} bind def
|
||||||
|
%%EndResource
|
||||||
|
%%BeginResource: procset a2ps-black+white-Prolog 2.0 1
|
||||||
|
|
||||||
|
% Function T(ab), jumps to the n-th tabulation in the current line
|
||||||
|
/T {
|
||||||
|
cw mul x0 add y0 moveto
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% Function n: move to the next line
|
||||||
|
/n { %def
|
||||||
|
/y0 y0 bfs sub store
|
||||||
|
x0 y0 moveto
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
% Function N: show and move to the next line
|
||||||
|
/N {
|
||||||
|
Show
|
||||||
|
/y0 y0 bfs sub store
|
||||||
|
x0 y0 moveto
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/S {
|
||||||
|
Show
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/p {
|
||||||
|
false UL
|
||||||
|
false BX
|
||||||
|
fCourier bfs scalefont setfont
|
||||||
|
Show
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/sy {
|
||||||
|
false UL
|
||||||
|
false BX
|
||||||
|
fSymbol bfs scalefont setfont
|
||||||
|
Show
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/k {
|
||||||
|
false UL
|
||||||
|
false BX
|
||||||
|
fCourier-Oblique bfs scalefont setfont
|
||||||
|
Show
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/K {
|
||||||
|
false UL
|
||||||
|
false BX
|
||||||
|
fCourier-Bold bfs scalefont setfont
|
||||||
|
Show
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/c {
|
||||||
|
false UL
|
||||||
|
false BX
|
||||||
|
fCourier-Oblique bfs scalefont setfont
|
||||||
|
Show
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/C {
|
||||||
|
false UL
|
||||||
|
false BX
|
||||||
|
fCourier-BoldOblique bfs scalefont setfont
|
||||||
|
Show
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/l {
|
||||||
|
false UL
|
||||||
|
false BX
|
||||||
|
fHelvetica bfs scalefont setfont
|
||||||
|
Show
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/L {
|
||||||
|
false UL
|
||||||
|
false BX
|
||||||
|
fHelvetica-Bold bfs scalefont setfont
|
||||||
|
Show
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/str{
|
||||||
|
false UL
|
||||||
|
false BX
|
||||||
|
fTimes-Roman bfs scalefont setfont
|
||||||
|
Show
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
/e{
|
||||||
|
false UL
|
||||||
|
true BX
|
||||||
|
fHelvetica-Bold bfs scalefont setfont
|
||||||
|
Show
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
%%EndResource
|
||||||
|
%%EndProlog
|
||||||
|
%%BeginSetup
|
||||||
|
%%IncludeResource: font Courier
|
||||||
|
%%IncludeResource: font Courier-Oblique
|
||||||
|
%%IncludeResource: font Courier-Bold
|
||||||
|
%%IncludeResource: font Times-Roman
|
||||||
|
%%IncludeResource: font Symbol
|
||||||
|
%%IncludeResource: font Courier-BoldOblique
|
||||||
|
%%BeginResource: encoding ISO-8859-1Encoding
|
||||||
|
/ISO-8859-1Encoding [
|
||||||
|
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||||
|
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||||
|
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||||
|
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||||
|
/space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright
|
||||||
|
/parenleft /parenright /asterisk /plus /comma /minus /period /slash
|
||||||
|
/zero /one /two /three /four /five /six /seven
|
||||||
|
/eight /nine /colon /semicolon /less /equal /greater /question
|
||||||
|
/at /A /B /C /D /E /F /G
|
||||||
|
/H /I /J /K /L /M /N /O
|
||||||
|
/P /Q /R /S /T /U /V /W
|
||||||
|
/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
|
||||||
|
/quoteleft /a /b /c /d /e /f /g
|
||||||
|
/h /i /j /k /l /m /n /o
|
||||||
|
/p /q /r /s /t /u /v /w
|
||||||
|
/x /y /z /braceleft /bar /braceright /asciitilde /.notdef
|
||||||
|
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||||
|
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||||
|
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||||
|
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||||
|
/space /exclamdown /cent /sterling /currency /yen /brokenbar /section
|
||||||
|
/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron
|
||||||
|
/degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /bullet
|
||||||
|
/cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown
|
||||||
|
/Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
|
||||||
|
/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis
|
||||||
|
/Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply
|
||||||
|
/Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls
|
||||||
|
/agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla
|
||||||
|
/egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
|
||||||
|
/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide
|
||||||
|
/oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis
|
||||||
|
] def
|
||||||
|
%%EndResource
|
||||||
|
% Initialize page description variables.
|
||||||
|
/sh 612 def
|
||||||
|
/sw 792 def
|
||||||
|
/llx 24 def
|
||||||
|
/urx 768 def
|
||||||
|
/ury 588 def
|
||||||
|
/lly 24 def
|
||||||
|
/#copies 1 def
|
||||||
|
/th 15.000000 def
|
||||||
|
/fnfs 11 def
|
||||||
|
/bfs 8.000000 def
|
||||||
|
/cw 4.800000 def
|
||||||
|
|
||||||
|
% Dictionary for ISO-8859-1 support
|
||||||
|
/iso1dict 8 dict begin
|
||||||
|
/fCourier ISO-8859-1Encoding /Courier reencode_font
|
||||||
|
/fCourier-Bold ISO-8859-1Encoding /Courier-Bold reencode_font
|
||||||
|
/fCourier-BoldOblique ISO-8859-1Encoding /Courier-BoldOblique reencode_font
|
||||||
|
/fCourier-Oblique ISO-8859-1Encoding /Courier-Oblique reencode_font
|
||||||
|
/fHelvetica ISO-8859-1Encoding /Helvetica reencode_font
|
||||||
|
/fHelvetica-Bold ISO-8859-1Encoding /Helvetica-Bold reencode_font
|
||||||
|
/fTimes-Bold ISO-8859-1Encoding /Times-Bold reencode_font
|
||||||
|
/fTimes-Roman ISO-8859-1Encoding /Times-Roman reencode_font
|
||||||
|
currentdict end def
|
||||||
|
/bgcolor [ 0 0 0 ] def
|
||||||
|
/bg false def
|
||||||
|
/ul false def
|
||||||
|
/bx false def
|
||||||
|
% The font for line numbering
|
||||||
|
/f# /Helvetica findfont bfs .6 mul scalefont def
|
||||||
|
/fSymbol /Symbol findfont def
|
||||||
|
/hm fnfs 0.25 mul def
|
||||||
|
/pw
|
||||||
|
cw 75.400000 mul
|
||||||
|
def
|
||||||
|
/ph
|
||||||
|
517.600000 th add
|
||||||
|
def
|
||||||
|
/pmw urx llx sub pw 2 mul sub 1 div def
|
||||||
|
/pmh 0 def
|
||||||
|
/v 0 def
|
||||||
|
/x [
|
||||||
|
0
|
||||||
|
dup pmw add pw add
|
||||||
|
] def
|
||||||
|
/y [
|
||||||
|
pmh ph add 0 mul ph add
|
||||||
|
dup
|
||||||
|
] def
|
||||||
|
/scx sw 2 div def
|
||||||
|
/scy sh 2 div def
|
||||||
|
/snx urx def
|
||||||
|
/sny lly 2 add def
|
||||||
|
/dx llx def
|
||||||
|
/dy sny def
|
||||||
|
/fnx scx def
|
||||||
|
/fny dy def
|
||||||
|
/lx snx def
|
||||||
|
/ly ury fnfs 0.8 mul sub def
|
||||||
|
/sx 0 def
|
||||||
|
/tab 8 def
|
||||||
|
/x0 0 def
|
||||||
|
/y0 0 def
|
||||||
|
%%EndSetup
|
||||||
|
|
||||||
|
%%Page: (1-2) 1
|
||||||
|
%%BeginPageSetup
|
||||||
|
/pagesave save def
|
||||||
|
sh 0 translate 90 rotate
|
||||||
|
%%EndPageSetup
|
||||||
|
iso1dict begin
|
||||||
|
gsave
|
||||||
|
llx lly 12 add translate
|
||||||
|
/v 0 store
|
||||||
|
/x0 x v get 3.360000 add sx cw mul add store
|
||||||
|
/y0 y v get bfs th add sub store
|
||||||
|
x0 y0 moveto
|
||||||
|
(#!/usr/bin/python) c n
|
||||||
|
() p n
|
||||||
|
(import) K
|
||||||
|
( socket) p n
|
||||||
|
(import) K
|
||||||
|
( Queue) p n
|
||||||
|
(import) K
|
||||||
|
( threading) p n
|
||||||
|
(import) K
|
||||||
|
( md5) p n
|
||||||
|
(import) K
|
||||||
|
( time) p n
|
||||||
|
() N
|
||||||
|
(class) K
|
||||||
|
( Entry\(object\):) p n
|
||||||
|
( ) S
|
||||||
|
(def) K
|
||||||
|
( __init__\(self, dynid, sharedSecret, name\):) p n
|
||||||
|
( self.dynid = dynid) N
|
||||||
|
( self.sharedSecret = sharedSecret) N
|
||||||
|
( self.name = name) N
|
||||||
|
( self.lastEventTime = 0) N
|
||||||
|
( self.address = '') N
|
||||||
|
() N
|
||||||
|
(class) K
|
||||||
|
( IllegalEventException\(Exception\):) p n
|
||||||
|
( ) S
|
||||||
|
(def) K
|
||||||
|
( __init__\(self, msg\):) p n
|
||||||
|
( self.msg = msg) N
|
||||||
|
() N
|
||||||
|
() N
|
||||||
|
(class) K
|
||||||
|
( Event\(object\):) p n
|
||||||
|
( ) S
|
||||||
|
(def) K
|
||||||
|
( __init__\(self, address, data, receiveTime\):) p n
|
||||||
|
( self.address = address) N
|
||||||
|
( self.data = data) N
|
||||||
|
( self.receiveTime = receiveTime) N
|
||||||
|
() N
|
||||||
|
( ) S
|
||||||
|
(def) K
|
||||||
|
( prepare\(self\):) p n
|
||||||
|
( self.port = self.address[1]) N
|
||||||
|
( self.address = self.address[0]) N
|
||||||
|
( \(self.dynid, self.msgTime, self.checksum\) = self.data.split\(') S
|
||||||
|
( ) str
|
||||||
|
('\)) p n
|
||||||
|
( self.msgTime = int\(self.msgTime\)) N
|
||||||
|
( self.prepared = True) N
|
||||||
|
() N
|
||||||
|
( ) S
|
||||||
|
(def) K
|
||||||
|
( process\(self\):) p n
|
||||||
|
( ) S
|
||||||
|
(if) K
|
||||||
|
( ) p
|
||||||
|
(not) K
|
||||||
|
( self.prepared:) p n
|
||||||
|
( self.prepare\(\)) N
|
||||||
|
() N
|
||||||
|
( ) S
|
||||||
|
(if) K
|
||||||
|
( ) p
|
||||||
|
(not) K
|
||||||
|
( ENTRIES.has_key\(self.dynid\):) p n
|
||||||
|
( ) S
|
||||||
|
(raise) K
|
||||||
|
( IllegalEventException\(") p
|
||||||
|
(unknown dynid in event %s) str
|
||||||
|
(" % str\(self\)\)) p n
|
||||||
|
( entry = ENTRIES[self.dynid]) N
|
||||||
|
() N
|
||||||
|
( ) S
|
||||||
|
(if) K
|
||||||
|
( self.msgTime + MSG_TIME_CORRIDOR < self.receiveTime:) p n
|
||||||
|
( ) S
|
||||||
|
(raise) K
|
||||||
|
( IllegalEventException\(") p
|
||||||
|
(event too old %s) str
|
||||||
|
(" % str\(self\)\)) p n
|
||||||
|
( ) S
|
||||||
|
(if) K
|
||||||
|
( self.msgTime - MSG_TIME_CORRIDOR > self.receiveTime:) p n
|
||||||
|
( ) S
|
||||||
|
(raise) K
|
||||||
|
( IllegalEventException\(") p
|
||||||
|
(event too young %s) str
|
||||||
|
(" % str\(self\)\)) p n
|
||||||
|
() N
|
||||||
|
() N
|
||||||
|
( ) S
|
||||||
|
(if) K
|
||||||
|
( entry.lastEventTime >= self.msgTime:) p n
|
||||||
|
( ) S
|
||||||
|
(raise) K
|
||||||
|
( IllegalEventException\(") p
|
||||||
|
(timing sequence failure in event, possibly replay ) str n
|
||||||
|
(%s) S
|
||||||
|
(" % str\(self\)\)) p n
|
||||||
|
() N
|
||||||
|
( di = ") S
|
||||||
|
(%s %s %d) str
|
||||||
|
(" % \(self.dynid, entry.sharedSecret, self.msgTime\)) p n
|
||||||
|
( d = md5.new\(di\).hexdigest\(\)) N
|
||||||
|
( ) S
|
||||||
|
(print) K
|
||||||
|
( ") p
|
||||||
|
(%s, received: %s, calculated: %s) str
|
||||||
|
(" % \(di, self.checksum, d\)) p n
|
||||||
|
( ) S
|
||||||
|
(if) K
|
||||||
|
( d != self.checksum:) p n
|
||||||
|
( ) S
|
||||||
|
(raise) K
|
||||||
|
( IllegalEventException\(") p
|
||||||
|
(wrong checksum for event %s) str
|
||||||
|
(" % str\(self) p n
|
||||||
|
(\)\)) N
|
||||||
|
() N
|
||||||
|
( entry.lastEventTime = self.msgTime) N
|
||||||
|
() N
|
||||||
|
( ) S
|
||||||
|
(if) K
|
||||||
|
( entry.address == self.address:) p n
|
||||||
|
( ) S
|
||||||
|
(print) K
|
||||||
|
( ") p
|
||||||
|
(Same address, nothing to do.) str
|
||||||
|
(") p n
|
||||||
|
( ) S
|
||||||
|
(else) K
|
||||||
|
(:) p n
|
||||||
|
(yadyn) (Seite 1/3) (Nov 09, 07 13:31) title
|
||||||
|
border
|
||||||
|
/v 1 store
|
||||||
|
/x0 x v get 3.360000 add sx cw mul add store
|
||||||
|
/y0 y v get bfs th add sub store
|
||||||
|
x0 y0 moveto
|
||||||
|
( entry.address = self.address) p n
|
||||||
|
( ) S
|
||||||
|
(print) K
|
||||||
|
( ") p
|
||||||
|
(Set in DNS: %s -> %s) str
|
||||||
|
(" % \(entry.name, entry.address\)) p n
|
||||||
|
() N
|
||||||
|
() N
|
||||||
|
( ) S
|
||||||
|
(def) K
|
||||||
|
( __str__\(self\):) p n
|
||||||
|
( ) S
|
||||||
|
(if) K
|
||||||
|
( ) p
|
||||||
|
(not) K
|
||||||
|
( self.prepared:) p n
|
||||||
|
( self.prepare\(\)) N
|
||||||
|
( ) S
|
||||||
|
(return) K
|
||||||
|
( ") p
|
||||||
|
(%s from %s:%d) str
|
||||||
|
(" % \(self.data, self.address, self.port\)) p n
|
||||||
|
() N
|
||||||
|
(class) K
|
||||||
|
( Handler\(threading.Thread\):) p n
|
||||||
|
( ) S
|
||||||
|
(def) K
|
||||||
|
( __init__\(self, queue\):) p n
|
||||||
|
( threading.Thread.__init__\(self\)) N
|
||||||
|
( self.q = queue) N
|
||||||
|
( self.setDaemon\(True\)) N
|
||||||
|
() N
|
||||||
|
( ) S
|
||||||
|
(def) K
|
||||||
|
( run\(self\):) p n
|
||||||
|
( ) S
|
||||||
|
(while) K
|
||||||
|
( True:) p n
|
||||||
|
( event = self.q.get\(\)) N
|
||||||
|
( ) S
|
||||||
|
(try) K
|
||||||
|
(:) p n
|
||||||
|
( event.prepare\(\)) N
|
||||||
|
( ) S
|
||||||
|
(print) K
|
||||||
|
( ") p
|
||||||
|
(Processing event %s) str
|
||||||
|
(" % str\(event\)) p n
|
||||||
|
( event.process\(\)) N
|
||||||
|
( ) S
|
||||||
|
(except) K
|
||||||
|
( IllegalEventException, e:) p n
|
||||||
|
( ) S
|
||||||
|
(print) K
|
||||||
|
( ") p
|
||||||
|
(Some failure: %s) str
|
||||||
|
(" % e.msg) p n
|
||||||
|
() N
|
||||||
|
(class) K
|
||||||
|
( Expirer\(threading.Thread\):) p n
|
||||||
|
( ) S
|
||||||
|
(def) K
|
||||||
|
( __init__\(self\):) p n
|
||||||
|
( threading.Thread.__init__\(self\)) N
|
||||||
|
( self.setDaemon\(True\)) N
|
||||||
|
() N
|
||||||
|
( ) S
|
||||||
|
(def) K
|
||||||
|
( run\(self\):) p n
|
||||||
|
( ) S
|
||||||
|
(while) K
|
||||||
|
( True:) p n
|
||||||
|
( ) S
|
||||||
|
(print) K
|
||||||
|
( ") p
|
||||||
|
(Expiring ...) str
|
||||||
|
(") p n
|
||||||
|
( currentTime = int\(time.time\(\)\)) N
|
||||||
|
( ) S
|
||||||
|
(for) K
|
||||||
|
( entry ) p
|
||||||
|
(in) K
|
||||||
|
( ENTRIES.values\(\):) p n
|
||||||
|
( ) S
|
||||||
|
(if) K
|
||||||
|
( entry.lastEventTime != 0 ) p
|
||||||
|
(and) K
|
||||||
|
( entry.lastEventTime + EVEN) p n
|
||||||
|
(T_LIFE_TIME < currentTime:) N
|
||||||
|
( ) S
|
||||||
|
(print) K
|
||||||
|
( ") p
|
||||||
|
(Entry %s expired) str
|
||||||
|
(" % entry.dynid) p n
|
||||||
|
( entry.lastEventTime = 0) N
|
||||||
|
( entry.address = NULL_ADDRESS) N
|
||||||
|
( ) S
|
||||||
|
(print) K
|
||||||
|
( ") p
|
||||||
|
(Set in DNS: %s -> %s) str
|
||||||
|
(" % \(entry.name, entry.address\)) p n
|
||||||
|
( time.sleep\(10\)) N
|
||||||
|
( ) N
|
||||||
|
() N
|
||||||
|
(ENTRIES = {) N
|
||||||
|
( ') S
|
||||||
|
(testhost) str
|
||||||
|
(': Entry\(') p
|
||||||
|
(testhost,) str
|
||||||
|
(', ') p
|
||||||
|
(test123) str
|
||||||
|
(', ') p
|
||||||
|
(test.test.de) str
|
||||||
|
('\),) p n
|
||||||
|
( }) N
|
||||||
|
(MSG_TIME_CORRIDOR = 5) N
|
||||||
|
(EVENT_LIFE_TIME = 10) N
|
||||||
|
(NULL_ADDRESS = ') S
|
||||||
|
(0.0.0.0) str
|
||||||
|
(') p n
|
||||||
|
() N
|
||||||
|
(q = Queue.Queue\(\)) N
|
||||||
|
() N
|
||||||
|
(handler = Handler\(q\)) N
|
||||||
|
(handler.start\(\)) N
|
||||||
|
() N
|
||||||
|
(expirer = Expirer\(\)) N
|
||||||
|
(expirer.start\(\)) N
|
||||||
|
() N
|
||||||
|
(s = socket.socket\(socket.AF_INET, socket.SOCK_DGRAM\)) N
|
||||||
|
(s.bind\(\("", 9090\)\)) N
|
||||||
|
() N
|
||||||
|
(while) K
|
||||||
|
( True:) p n
|
||||||
|
( data, address = s.recvfrom\(256\)) N
|
||||||
|
(yadyn) (Seite 2/3) (Nov 09, 07 13:31) title
|
||||||
|
border
|
||||||
|
grestore
|
||||||
|
(Gedruckt von Wolfgang Hottgenroth) rhead
|
||||||
|
(yadyn) (1/2) (Samstag November 10, 2007) footer
|
||||||
|
end % of iso1dict
|
||||||
|
pagesave restore
|
||||||
|
showpage
|
||||||
|
%%Page: (3) 2
|
||||||
|
%%BeginPageSetup
|
||||||
|
/pagesave save def
|
||||||
|
sh 0 translate 90 rotate
|
||||||
|
%%EndPageSetup
|
||||||
|
iso1dict begin
|
||||||
|
gsave
|
||||||
|
llx lly 12 add translate
|
||||||
|
/v 0 store
|
||||||
|
/x0 x v get 3.360000 add sx cw mul add store
|
||||||
|
/y0 y v get bfs th add sub store
|
||||||
|
x0 y0 moveto
|
||||||
|
( ) p
|
||||||
|
(try) K
|
||||||
|
(:) p n
|
||||||
|
( q.put_nowait\(Event\(address, data, int\(time.time\(\)\)\)\)) N
|
||||||
|
( ) S
|
||||||
|
(except) K
|
||||||
|
( Queue.Full:) p n
|
||||||
|
( ) S
|
||||||
|
(print) K
|
||||||
|
( ") p
|
||||||
|
(Event %s from %s dropped) str
|
||||||
|
(" % \(data, str\(address\)\)) p n
|
||||||
|
() N
|
||||||
|
(yadyn) (Seite 3/3) (Nov 09, 07 13:31) title
|
||||||
|
border
|
||||||
|
grestore
|
||||||
|
(Gedruckt von Wolfgang Hottgenroth) rhead
|
||||||
|
(yadyn) (2/2) (Samstag November 10, 2007) footer
|
||||||
|
end % of iso1dict
|
||||||
|
pagesave restore
|
||||||
|
showpage
|
||||||
|
|
||||||
|
%%Trailer
|
||||||
|
end
|
||||||
|
%%EOF
|
Reference in New Issue
Block a user