forked from github/server
Merge branch 'svn-1381'
This commit is contained in:
commit
60920d20bd
|
@ -0,0 +1,95 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
# If (password, custid) exist in the database, and the user is in state
|
||||
# 'WAITING', he will be changed to 'CONFIRMED'.
|
||||
|
||||
import sys
|
||||
import MySQLdb
|
||||
import cgi
|
||||
import os
|
||||
import re
|
||||
|
||||
# specify the filename of the template file
|
||||
HTMLTemplate = "eressea.html"
|
||||
DefaultTitle = "Eressea Anmeldung"
|
||||
dbname = "eressea"
|
||||
db=None
|
||||
tutorial_id=1 # the tuorial game has id 1
|
||||
|
||||
# define a new function called Display
|
||||
# it takes one parameter - a string to Display
|
||||
def Display(Content, Title=DefaultTitle):
|
||||
TemplateHandle = open(HTMLTemplate, "r") # open in read only mode
|
||||
# read the entire file as a string
|
||||
TemplateInput = TemplateHandle.read()
|
||||
TemplateHandle.close() # close the file
|
||||
|
||||
# this defines an exception string in case our
|
||||
# template file is messed up
|
||||
BadTemplateException = "There was a problem with the HTML template."
|
||||
|
||||
SubResult = re.subn("<!-- INSERT TITLE HERE -->", Title, TemplateInput)
|
||||
SubResult = re.subn("<!-- INSERT CONTENT HERE -->", Content, SubResult[0])
|
||||
if SubResult[1] == 0:
|
||||
raise BadTemplateException
|
||||
|
||||
print "Content-Type: text/html\n\n"
|
||||
print SubResult[0]
|
||||
return
|
||||
|
||||
|
||||
def GetKey(Form, key):
|
||||
if Form.has_key(key):
|
||||
value=Form[key].value
|
||||
if value!="":
|
||||
return value
|
||||
return None
|
||||
|
||||
|
||||
def genpasswd():
|
||||
newpasswd=""
|
||||
chars = string.letters + string.digits
|
||||
for i in range(8):
|
||||
newpasswd = newpasswd + choice(chars)
|
||||
return newpasswd
|
||||
|
||||
|
||||
#Display("Derzeit ist wegen einer technischen Umstellung keine Anmeldung möglich")
|
||||
#sys.exit(0)
|
||||
|
||||
Form = cgi.FieldStorage()
|
||||
|
||||
custid=GetKey(Form, "custid")
|
||||
password=GetKey(Form, "password")
|
||||
|
||||
if (password==None) or (custid==None):
|
||||
output="<p>Um Deine Anmeldung zu bestätigen musst Du das Formular vollständig ausfüllen.\n "
|
||||
for key in Form.keys():
|
||||
output=output+"<br>"+str(key)+"="+str(Form[key])
|
||||
Display(output)
|
||||
else:
|
||||
db=MySQLdb.connect(db=dbname)
|
||||
cursor=db.cursor()
|
||||
try:
|
||||
custid=int(custid)
|
||||
except:
|
||||
custid=0
|
||||
query = "select u.status, s.id, s.game from users u, subscriptions s where u.id="+str(custid)+" and s.status in ('WAITING', 'CONFIRMED') and u.status not in ('INVALID', 'BANNED') and s.password='"+password+"'"
|
||||
exist=cursor.execute(query)
|
||||
if exist==0:
|
||||
Display('<p>Kundennummer oder Schlüssel falsch. Bitte beachte, dass Du beim Schlüssel auf Groß- und Kleinschreibung achten mußt.')
|
||||
else:
|
||||
status, sid, gid = cursor.fetchone()
|
||||
if os.environ.has_key('REMOTE_ADDR'):
|
||||
ip=os.environ['REMOTE_ADDR']
|
||||
cursor.execute("REPLACE userips (ip, user) VALUES ('"+ip+"', "+str(custid)+")")
|
||||
if status=='NEW' or status=='TUTORIAL':
|
||||
if tutorial_id!=None and gid==tutorial_id:
|
||||
# user confirms his tutorial participation
|
||||
cursor.execute("update users set status='TUTORIAL' where id="+str(custid))
|
||||
else:
|
||||
cursor.execute("update users set status='ACTIVE' where id="+str(custid))
|
||||
cursor.execute("update subscriptions set status='CONFIRMED' where id="+str(sid))
|
||||
|
||||
Display("<p>Deine Anmeldung wurde bestätigt.");
|
||||
db.close()
|
|
@ -0,0 +1,209 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
## this cgi script adds a new user to the eressea DB,
|
||||
## as well as a new subscription entry. it logs IP addresses for registrations.
|
||||
|
||||
import sys
|
||||
import MySQLdb
|
||||
import os
|
||||
import cgi
|
||||
import re
|
||||
import string
|
||||
import smtplib
|
||||
from whrandom import choice
|
||||
|
||||
# specify the filename of the template file
|
||||
HTMLTemplate = "eressea.html"
|
||||
MailTemplate="register.mail"
|
||||
DefaultTitle = "Eressea Anmeldung"
|
||||
dbname = "eressea"
|
||||
From = "accounts@eressea-pbem.de"
|
||||
locale="de"
|
||||
smtpserver = 'localhost'
|
||||
db=None
|
||||
game_id=0 # Eressea Main game
|
||||
tutorial_id=1 # 1 to active, None to disable tutorials
|
||||
|
||||
# define a new function called Display
|
||||
# it takes one parameter - a string to Display
|
||||
def Display(Content, Title=DefaultTitle):
|
||||
TemplateHandle = open(HTMLTemplate, "r") # open in read only mode
|
||||
# read the entire file as a string
|
||||
TemplateInput = TemplateHandle.read()
|
||||
TemplateHandle.close() # close the file
|
||||
|
||||
# this defines an exception string in case our
|
||||
# template file is messed up
|
||||
BadTemplateException = "There was a problem with the HTML template."
|
||||
|
||||
SubResult = re.subn("<!-- INSERT TITLE HERE -->", Title, TemplateInput)
|
||||
SubResult = re.subn("<!-- INSERT CONTENT HERE -->", Content, SubResult[0])
|
||||
if SubResult[1] == 0:
|
||||
raise BadTemplateException
|
||||
|
||||
print "Content-Type: text/html\n\n"
|
||||
print SubResult[0]
|
||||
return
|
||||
|
||||
|
||||
def Send(email, custid, sid, firstname, password, game):
|
||||
cursor=db.cursor()
|
||||
cursor.execute("select count(*), g.name from games g, subscriptions s where g.id="+str(game)+" AND (s.status='WAITING' or s.status='CONFIRMED') AND g.id=s.game GROUP BY g.id")
|
||||
position, name = cursor.fetchone()
|
||||
TemplateHandle = open(MailTemplate+"."+string.lower(name)+"."+locale, "r") # open in read only mode
|
||||
# read the entire file as a string
|
||||
TemplateInput = TemplateHandle.read()
|
||||
TemplateHandle.close() # close the file
|
||||
|
||||
SubResult = re.subn("<FIRSTNAME>", firstname, TemplateInput)
|
||||
SubResult = re.subn("<PASSWORD>", password, SubResult[0])
|
||||
SubResult = re.subn("<POSITION>", str(int(position)), SubResult[0])
|
||||
SubResult = re.subn("<GAME>", name, SubResult[0])
|
||||
SubResult = re.subn("<CUSTID>", str(int(custid)), SubResult[0])
|
||||
subject={"de":"Anmeldung","en":"Registration"}
|
||||
Msg="From: "+From+"\nTo: "+email+"\nSubject: "+name+" "+subject[locale]+"\n\n"
|
||||
Msg=Msg+SubResult[0]
|
||||
server=smtplib.SMTP(smtpserver)
|
||||
server.sendmail(From, email, Msg)
|
||||
server.close()
|
||||
return
|
||||
|
||||
def GetKey(Form, key):
|
||||
if Form.has_key(key):
|
||||
value=Form[key].value
|
||||
if value!="":
|
||||
return value
|
||||
return None
|
||||
|
||||
def ValidEmail(email):
|
||||
if string.find(email, "@")==-1:
|
||||
return 0
|
||||
elif string.find(email, " ")!=-1:
|
||||
return 0
|
||||
return 1
|
||||
|
||||
def genpasswd():
|
||||
newpasswd=""
|
||||
chars = string.letters + string.digits
|
||||
for i in range(8):
|
||||
newpasswd = newpasswd + choice(chars)
|
||||
return newpasswd
|
||||
|
||||
#Display("Derzeit ist wegen einer technischen Umstellung keine Anmeldung möglich")
|
||||
#sys.exit(0)
|
||||
|
||||
Form = cgi.FieldStorage()
|
||||
|
||||
email=GetKey(Form, "email")
|
||||
firstname=GetKey(Form, "firstname")
|
||||
lastname=GetKey(Form, "lastname")
|
||||
#info=GetKey(Form, "info")
|
||||
address=GetKey(Form, "address")
|
||||
city=GetKey(Form, "city")
|
||||
country=GetKey(Form, "country")
|
||||
phone=GetKey(Form, "phone")
|
||||
race=GetKey(Form, "race")
|
||||
locale=GetKey(Form, "locale")
|
||||
|
||||
referrer=GetKey(Form, "referrer")
|
||||
firsttime=GetKey(Form, "firsttime")
|
||||
bonus=GetKey(Form, "bonus")
|
||||
|
||||
if (locale==None) or (lastname==None) or (race==None) or (firstname==None) or (address==None) or (city==None):
|
||||
output="<p>Um Dich zu Eressea anzumelden musst Du das Formular vollständig ausfüllen.\n "
|
||||
for key in Form.keys():
|
||||
output=output+"<br>"+key+": "+Form[key].value+"\n"
|
||||
Display(output)
|
||||
elif ValidEmail(email)==0:
|
||||
output="<p>Um Dich zu Eressea anzumelden musst Du eine gültige Email-Adresse angeben.\n "
|
||||
Display(output)
|
||||
else:
|
||||
db=MySQLdb.connect(db=dbname)
|
||||
cursor=db.cursor()
|
||||
# check if he is already entered in the main game:
|
||||
exist=cursor.execute("select u.id from users u, subscriptions s where s.user=u.id AND s.game="+str(game_id)+" AND u.email='"+email+"' and (s.status='WAITING' or s.status='CONFIRMED')")
|
||||
if exist:
|
||||
text={"de":"Du stehst bereits auf der Warteliste","en":"You are already on the waiting list"}
|
||||
Display('<p>'+text[locale])
|
||||
else:
|
||||
bans=cursor.execute('select regex, reason from bannedemails')
|
||||
while bans:
|
||||
bans=bans-1
|
||||
regexp, reason = cursor.fetchone()
|
||||
if (re.match(regexp, email, re.IGNORECASE))!=None:
|
||||
Display('Deine Email-Adresse ist für Eressea nicht zugelassen. '+reason)
|
||||
sys.exit(0)
|
||||
|
||||
# create a new user record
|
||||
fields = "firstname, lastname, locale, email, address, city"
|
||||
values = "'"+firstname+"', '"+lastname+"', '"+locale+"', '"+email+"', '"+address+"', '"+city+"'"
|
||||
if phone!=None:
|
||||
fields=fields+", phone"
|
||||
values=values+", '"+phone+"'"
|
||||
# if info!=None:
|
||||
# fields=fields+", info"
|
||||
# values=values+", '"+info+"'"
|
||||
if country!=None:
|
||||
fields=fields+", country"
|
||||
values=values+", "+country+""
|
||||
if referrer!=None:
|
||||
fields=fields+", referrer"
|
||||
values=values+", '"+referrer+"'"
|
||||
if firsttime!=None:
|
||||
fields=fields+", firsttime"
|
||||
if firsttime=='yes':
|
||||
values=values+", 1"
|
||||
else:
|
||||
values=values+", 0"
|
||||
exist=cursor.execute("select password, status, id from users where email='"+email+"'")
|
||||
custid=0
|
||||
status='NEW'
|
||||
if exist:
|
||||
# user exists, update his data
|
||||
password, status, custid=cursor.fetchone()
|
||||
if status=='BANNED':
|
||||
Display('<em>Dein Account ist gesperrt.</em><br>Bitte wende Dich an <a href="mailto:accounts@eressea-pbem.de">accounts@eressea-pbem.de</a> falls Du Fragen zu dieser Meldung hast.')
|
||||
sys.exit(0)
|
||||
fields=fields+", id, status"
|
||||
values=values+", "+str(custid)+", '"+status+"'"
|
||||
command="REPLACE"
|
||||
cursor.execute("REPLACE into users ("+fields+") VALUES ("+values+")")
|
||||
else:
|
||||
password = genpasswd()
|
||||
fields=fields+", password, status"
|
||||
values=values+", '"+password+"', 'NEW'"
|
||||
cursor.execute("INSERT into users ("+fields+") VALUES ("+values+")")
|
||||
cursor.execute("SELECT LAST_INSERT_ID() from dual")
|
||||
custid=cursor.fetchone()[0]
|
||||
|
||||
# track IP addresses
|
||||
ip=None
|
||||
if os.environ.has_key('REMOTE_ADDR'):
|
||||
ip=os.environ['REMOTE_ADDR']
|
||||
if ip!=None:
|
||||
cursor.execute("REPLACE userips (ip, user) VALUES ('"+ip+"', "+str(int(custid))+")")
|
||||
|
||||
game = game_id
|
||||
if tutorial_id!=None and status!='ACTIVE':
|
||||
game=tutorial_id
|
||||
exist = cursor.execute("select id, password from subscriptions where status='WAITING' AND user="+str(custid)+" and game="+str(game))
|
||||
if exist:
|
||||
sid, password = cursor.fetchone()
|
||||
else:
|
||||
# add a subscription record
|
||||
password = genpasswd()
|
||||
values="'WAITING', '"+password+"'"
|
||||
fields="status, password"
|
||||
if bonus!=None:
|
||||
fields=fields+", bonus"
|
||||
if bonus=='yes':
|
||||
values=values+", 1"
|
||||
else:
|
||||
values=values+", 0"
|
||||
cursor.execute("insert into subscriptions (user, race, game, "+fields+") VALUES ("+str(int(custid))+", '"+race+"', "+str(game)+", "+values+")")
|
||||
cursor.execute("SELECT LAST_INSERT_ID() from dual")
|
||||
sid = cursor.fetchone()[0]
|
||||
Send(email, custid, sid, firstname, password, game)
|
||||
text={"de":"Deine Anmeldung wurde bearbeitet. Eine EMail mit Hinweisen ist unterwegs zu Dir", "en":"Your application was processed. An email containing further instructions is being sent to you"}
|
||||
Display("<p>"+text[locale]+".")
|
||||
db.close()
|
|
@ -0,0 +1,319 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
import sys
|
||||
import MySQLdb
|
||||
import cgi
|
||||
import re
|
||||
import smtplib
|
||||
|
||||
# specify the filename of the template file
|
||||
scripturl="http://eressea.upb.de/cgi-bin/eressea/info.py"
|
||||
TemplateFile = "/home/enno/www/cgi-bin/vinyambar.html"
|
||||
DefaultTitle = "Vinyambar Datenbank"
|
||||
dbname = "vinyambar"
|
||||
From = "accounts@vinyambar.de"
|
||||
smtpserver = 'localhost'
|
||||
Errors = ""
|
||||
|
||||
# define a new function called Display
|
||||
# it takes one parameter - a string to Display
|
||||
def Display(Content, Title=DefaultTitle):
|
||||
TemplateHandle = open(TemplateFile, "r") # open in read only mode
|
||||
# read the entire file as a string
|
||||
TemplateInput = TemplateHandle.read()
|
||||
TemplateHandle.close() # close the file
|
||||
|
||||
# for key in Form.keys():
|
||||
# Content=Content+"<br>"+str(key)+"="+str(Form[key])
|
||||
|
||||
# this defines an exception string in case our
|
||||
# template file is messed up
|
||||
BadTemplateException = "There was a problem with the HTML template."
|
||||
|
||||
SubResult = re.subn("<!-- INSERT TITLE HERE -->", Title, TemplateInput)
|
||||
SubResult = re.subn("<!-- INSERT CONTENT HERE -->", Content, SubResult[0])
|
||||
if SubResult[1] == 0:
|
||||
raise BadTemplateException
|
||||
|
||||
print "Content-Type: text/html\n\n"
|
||||
print SubResult[0]
|
||||
return
|
||||
|
||||
|
||||
def SendTransfer(userid, factionid, game):
|
||||
db = MySQLdb.connect(db=dbname)
|
||||
cursor=db.cursor()
|
||||
cursor.execute("select email, firstname from users where id="+str(userid))
|
||||
email, firstname = cursor.fetchone()
|
||||
Msg="From: "+From+"\nTo: "+email+"\nSubject: Vinambar Passwort\n\n"
|
||||
Msg=Msg+"Hallo, "+firstname+"\n"
|
||||
Msg=Msg+"Ein Spieler hat Dir seine Partei " + factionid + " im Spiel " + game + "\n"
|
||||
Msg=Msg+"übertragen. Um die Partei zu übernehmen, gehe bitte auf die Webseite \n"
|
||||
Msg=Msg+"http://www.vinyambar.de/accounts.shtml, und akzeptiere dort den Transfer.\n"
|
||||
server=smtplib.SMTP(smtpserver)
|
||||
server.sendmail(From, email, Msg)
|
||||
server.close()
|
||||
db.close()
|
||||
return
|
||||
|
||||
|
||||
def SendPass(email):
|
||||
try:
|
||||
db = MySQLdb.connect(db=dbname)
|
||||
cursor=db.cursor()
|
||||
# print custid
|
||||
cursor.execute("select id, email, password from users where email='"+email+"'")
|
||||
custid, email, password = cursor.fetchone()
|
||||
Msg="From: "+From+"\nTo: "+email+"\nSubject: Vinambar Passwort\n\n"
|
||||
Msg=Msg+"Deine Kundennummer ist: "+str(int(custid))+"\n"
|
||||
Msg=Msg+"Dein Vinyambar-Passwort lautet: "+password+"\n"
|
||||
Msg=Msg+"\nDiese Mail wurde an Dich versandt, weil Du (oder jemand anders) \n"
|
||||
Msg=Msg+"es im Formular auf http://www.vinyambar.de/accounts.shtml angefordert hat.\n"
|
||||
server=smtplib.SMTP(smtpserver)
|
||||
server.sendmail(From, email, Msg)
|
||||
server.close()
|
||||
db.close()
|
||||
Display('<div align="center">Das Passwort wurde verschickt</div>', 'Kundendaten #'+str(custid))
|
||||
except:
|
||||
Display('<div align="center">Beim Versenden des Passwortes ist ein Fehler aufgetreten.<br>Eventuell ist die email-Adresse unbekannt</div>', 'Kundendaten für '+email)
|
||||
|
||||
|
||||
def ShowInfo(custid, Password):
|
||||
global Errors
|
||||
db = MySQLdb.connect(db=dbname)
|
||||
cursor = db.cursor()
|
||||
query=("select firstname, lastname, email, address, city, country, phone, status "+
|
||||
"from users "+
|
||||
"where id="+str(custid)+" and password='"+Password+"' ")
|
||||
|
||||
results = cursor.execute(query)
|
||||
if results != 0:
|
||||
firstname, lastname, email, address, city, country, phone, status = cursor.fetchone()
|
||||
if status=='WAITING':
|
||||
cursor.execute("update users set status='CONFIRMED' where id="+str(custid))
|
||||
cursor.execute("select max(date), max(id) from transactions")
|
||||
lastdate, id = cursor.fetchone()
|
||||
|
||||
nraces = cursor.execute("select distinct race, name from races where locale='de'")
|
||||
races=[('', 'Keine Anmeldung')]
|
||||
while nraces>0:
|
||||
nraces = nraces - 1
|
||||
races.append(cursor.fetchone())
|
||||
|
||||
output = '<div align=center>Letzter Buchungstag: '+str(lastdate)[0:10]+'</div><form action="'+scripturl+'" method=post><div align=center><table bgcolor="#e0e0e0" width=80% border>\n'
|
||||
|
||||
query = "SELECT sum(balance) from transactions where user="+str(custid)
|
||||
transactions = cursor.execute(query)
|
||||
balance = 0.00
|
||||
if transactions != 0:
|
||||
balance = cursor.fetchone()[0]
|
||||
if balance == None:
|
||||
balance=0.00
|
||||
|
||||
line = "<font color=red>"+Errors+"</font><tr>"
|
||||
line = line + "<tr><th height=30>Vorname</th><td><input size=40 name=firstname value=\""+firstname+"\"></td></tr>\n"
|
||||
line = line + "<tr><th height=30>Nachname</th><td><input size=40 name=lastname value=\""+lastname+"\"></td></tr>\n"
|
||||
if email==None:
|
||||
email=""
|
||||
line = line + "<tr><th height=30>EMail Adresse</th><td><input size=40 name=email value=\""+email+"\"></td></tr>\n"
|
||||
if address==None:
|
||||
address=""
|
||||
line = line + "<tr><th height=30>Adresse</th><td><input size=40 name=address value=\""+address+"\"></td></tr>\n"
|
||||
if city==None:
|
||||
city=""
|
||||
line = line + "<tr><th height=30>Wohnort</th><td><input size=40 name=city value=\""+city+"\"></td></tr>\n"
|
||||
if phone==None:
|
||||
phone=""
|
||||
line = line + "<tr><th height=30>Telefon</th><td><input size=40 name=phone value=\""+phone+"\"></td></tr>\n"
|
||||
line = line + "<tr><th height=30>Kontostand</th><td>"+str(balance)+" EUR</td></tr>\n"
|
||||
line = line + "<tr><th height=30>Status</th><td>"+status+"</td></tr>\n"
|
||||
output = output + line;
|
||||
|
||||
output=output+"</table></div>"
|
||||
|
||||
output=output+"<div align=center><h3>Partien</h3>\n"
|
||||
games = cursor.execute("select id, name, status, info from games order by id")
|
||||
while games>0:
|
||||
games=games-1
|
||||
gid, game, status, info = cursor.fetchone()
|
||||
cself = db.cursor();
|
||||
sub = cself.execute("select s.race from subscriptions s, users u where game="+str(int(gid))+" and u.id=s.user and u.id="+str(int(custid)))
|
||||
prev=""
|
||||
if sub>0:
|
||||
prev=cself.fetchone()[0]
|
||||
if prev==None:
|
||||
prev=""
|
||||
line = '<table bgcolor="#e0e0e0" width=80% border>\n<tr><th align=center><em>' + game + '</em>: ' + info + '</th></tr>'
|
||||
if status=='WAITING':
|
||||
line = line+'<tr><td>'
|
||||
line = line + 'Ich möchte an diesem Spiel teilnehmen, und bevorzuge folgende Rasse:<br>\n'
|
||||
nraces=len(races)
|
||||
line = line + '<select name="race_'+str(int(gid))+'" size="1">'
|
||||
while nraces>0:
|
||||
nraces=nraces-1
|
||||
race=races[nraces]
|
||||
if prev == race[0]:
|
||||
line = line + '<OPTION selected value="'+race[0]+'">'+race[1]+'\n'
|
||||
else:
|
||||
line = line + '<OPTION value="'+race[0]+'">'+race[1]+'\n'
|
||||
line = line + '</select>'
|
||||
line = line+'</td></tr>'
|
||||
elif status=='RUNNING':
|
||||
query = ("select games.name, races.name, s.status, s.faction "+
|
||||
"from races, games, subscriptions s "+
|
||||
"where s.race=races.race and s.game="+str(int(gid))+" and s.game=games.id "+
|
||||
"and s.user="+str(custid)+" ")
|
||||
|
||||
fcursor = db.cursor()
|
||||
results = fcursor.execute(query)
|
||||
if results>0:
|
||||
while results>0:
|
||||
results = results - 1
|
||||
game, race, status, faction = fcursor.fetchone()
|
||||
line = line + '<tr><td><em>Partei ' + faction + ', ' + race + ", " + status + "</em></td></tr>"
|
||||
line = line + "<tr><td>"
|
||||
if status=='ACTIVE':
|
||||
line = line + 'Ich möchte diese Partei aufgeben: <input type="checkbox" name="cancel_' + faction + '"><br>\n'
|
||||
line = line + 'Ich möchte die Partei an Spieler #<input size=4 name="transfer_' + faction + '"> übergeben.\n'
|
||||
elif status=='CANCELLED':
|
||||
line = line + 'Reaktivieren: <input type="checkbox" name="activate_' + faction + '">\n'
|
||||
elif status=='TRANSFERED':
|
||||
line = line + 'Transfer akzeptieren: <input type="checkbox" name="accept_' + faction + '">\n'
|
||||
line = line+'</td></tr>'
|
||||
else:
|
||||
continue
|
||||
else:
|
||||
continue
|
||||
output=output+line+'</table>\n<p>\n'
|
||||
output=output+"</div>"
|
||||
|
||||
query="select date, balance, text from transactions, descriptions where descriptions.handle=transactions.description and user="+str(custid)+" ORDER BY date"
|
||||
results = cursor.execute(query);
|
||||
|
||||
if results>0:
|
||||
output=output+'<div align=center>\n<h3>Transaktionen</h3>\n<table width=80% bgcolor="#e0e0e0" border>\n'
|
||||
output=output+"<tr><th>Datum</th><th>Betrag</th><th>Verwendung</th></tr>\n"
|
||||
while results>0:
|
||||
results = results - 1
|
||||
row = cursor.fetchone()
|
||||
line = "<tr>"
|
||||
line = line + "<td align=left>"+str(row[0])[0:10]+"</td>\n"
|
||||
line = line + "<td align=right>"+str(row[1])+" EUR</td>\n"
|
||||
line = line + "<td align=left>"+row[2]+"</td>\n"
|
||||
line = line + "</tr>\n"
|
||||
output=output+line
|
||||
output=output+"</table></div>"
|
||||
|
||||
output=output+'<div align=center><p><input name="save" type="submit" value="Speichern"></div>'
|
||||
output=output+'<input type="hidden" name="user" value="'+str(custid)+'"></div>'
|
||||
output=output+'<input type="hidden" name="pass" value="'+Password+'"></div>'
|
||||
output=output+"</form>"
|
||||
else:
|
||||
output = "Die Kundennummer oder das angegebene Passwort sind nicht korrekt."
|
||||
db.close()
|
||||
Display(output, "Kundendaten #"+str(custid))
|
||||
Errors = ""
|
||||
|
||||
def TransferFaction(sid, faction, olduser, newuser, game, gid):
|
||||
db = MySQLdb.connect(db=dbname)
|
||||
update = db.cursor()
|
||||
exist = update.execute("select id from users where id="+str(int(newuser)))
|
||||
if exist==1:
|
||||
update.execute("INSERT into transfers (subscription, src, dst, reason) values ("+str(int(sid))+", "+str(int(olduser))+", "+str(int(newuser))+", 'TRANSFER')")
|
||||
update.execute("UPDATE subscriptions set status='TRANSFERED', user=" + str(newuser) + " where id="+str(sid))
|
||||
SendTransfer(newuser, faction, game);
|
||||
db.close()
|
||||
return
|
||||
|
||||
def Save(custid, Password):
|
||||
global Errors
|
||||
validkeys=['email','address','lastname','firstname','city','password','phone']
|
||||
values='id='+str(custid)
|
||||
for key in Form.keys():
|
||||
if key in validkeys:
|
||||
values=values+", "+key+"='"+Form[key].value+"'"
|
||||
db = MySQLdb.connect(db=dbname)
|
||||
cursor=db.cursor()
|
||||
cursor.execute('UPDATE users SET '+values+' where id='+str(custid))
|
||||
|
||||
ngames = cursor.execute("select id from games where status='WAITING'")
|
||||
while ngames > 0:
|
||||
ngames=ngames - 1
|
||||
gid = cursor.fetchone()[0]
|
||||
key="race_"+str(int(gid))
|
||||
update = db.cursor()
|
||||
if Form.has_key(key):
|
||||
newrace=Form[key].value
|
||||
if newrace=='':
|
||||
newrace=None
|
||||
if newrace==None:
|
||||
update.execute('delete from subscriptions where user='+str(int(custid))+' and game='+str(int(gid)))
|
||||
else:
|
||||
exist=update.execute('select id, race from subscriptions where game='+str(int(gid))+' and user='+str(int(custid)))
|
||||
if exist>0:
|
||||
sid, race = update.fetchone()
|
||||
if race!=newrace:
|
||||
update.execute("update subscriptions set race='"+newrace+"' where id="+str(int(sid)))
|
||||
else:
|
||||
update.execute("insert subscriptions (race, user, status, game) values ('"+newrace+"', "+str(int(custid))+", 'WAITING', "+str(int(gid))+")")
|
||||
else:
|
||||
update.execute('delete from subscriptions where user='+str(int(custid))+' and game='+str(int(gid)))
|
||||
|
||||
nfactions = cursor.execute("select g.id, g.name, s.id, faction from games g, subscriptions s where s.status='ACTIVE' and s.user="+str(custid) + " and s.game=g.id")
|
||||
while nfactions > 0:
|
||||
gid, game, sid, faction = cursor.fetchone()
|
||||
if Form.has_key("cancel_"+faction):
|
||||
update = db.cursor()
|
||||
update.execute("UPDATE subscriptions set status='CANCELLED' where id="+str(int(sid)))
|
||||
elif Form.has_key("transfer_"+faction):
|
||||
newuser = int(Form["transfer_"+faction].value)
|
||||
TransferFaction(sid, faction, custid, newuser, game, gid)
|
||||
nfactions = nfactions - 1
|
||||
|
||||
nfactions = cursor.execute("select g.id, g.name, s.id, faction from games g, subscriptions s where s.status='TRANSFERED' and s.user="+str(custid) + " and s.game=g.id")
|
||||
while nfactions > 0:
|
||||
gid, game, sid, faction = cursor.fetchone()
|
||||
if Form.has_key("accept_"+faction):
|
||||
update = db.cursor()
|
||||
i = update.execute("SELECT count(*) from subscriptions where status='ACTIVE' and game="+str(int(gid)))
|
||||
if i==0:
|
||||
update.execute("UPDATE subscriptions set status='ACTIVE' where id="+str(int(sid)))
|
||||
else:
|
||||
Errors=Errors+"Du hast bereits eine Aktive Partei in "+game+"<br>\n"
|
||||
nfactions = nfactions - 1
|
||||
|
||||
nfactions = cursor.execute("select g.name, s.id, faction from games g, subscriptions s where s.status='CANCELLED' and s.user="+str(custid) + " and s.game=g.id")
|
||||
while nfactions > 0:
|
||||
game, sid, faction = cursor.fetchone()
|
||||
if Form.has_key("activate_"+faction):
|
||||
update = db.cursor()
|
||||
update.execute("UPDATE subscriptions set status='ACTIVE' where id="+str(int(sid)))
|
||||
nfactions = nfactions - 1
|
||||
|
||||
db.close()
|
||||
ShowInfo(custid, Password)
|
||||
# Display("Noch nicht implementiert", "Daten speichern für Kunde #"+str(custid))
|
||||
|
||||
|
||||
Form = cgi.FieldStorage()
|
||||
|
||||
if Form.has_key("user"):
|
||||
custid = int(Form["user"].value)
|
||||
else:
|
||||
custid = 0
|
||||
|
||||
if Form.has_key("pass"):
|
||||
Password = Form["pass"].value
|
||||
else:
|
||||
Password=""
|
||||
|
||||
if Form.has_key("sendpass"):
|
||||
if Form.has_key("email"):
|
||||
Email = Form["email"].value
|
||||
else:
|
||||
Email=""
|
||||
SendPass(Email)
|
||||
elif Form.has_key("save"):
|
||||
Save(custid, Password)
|
||||
else:
|
||||
ShowInfo(custid, Password)
|
|
@ -0,0 +1,213 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
import sys
|
||||
import MySQLdb
|
||||
import cgi
|
||||
import re
|
||||
|
||||
# specify the filename of the template file
|
||||
TemplateFile = "vinyambar.html"
|
||||
DefaultTitle = "Eressea Umfrage 2001"
|
||||
dbname = "eressea"
|
||||
myurl="http://eressea.upb.de/cgi-bin/eressea/poll2001.py"
|
||||
|
||||
# define a new function called Display
|
||||
# it takes one parameter - a string to Display
|
||||
print "Content-Type: text/html\n\n"
|
||||
def Display(Content, Title=DefaultTitle):
|
||||
TemplateHandle = open(TemplateFile, "r") # open in read only mode
|
||||
# read the entire file as a string
|
||||
TemplateInput = TemplateHandle.read()
|
||||
TemplateHandle.close() # close the file
|
||||
|
||||
# this defines an exception string in case our
|
||||
# template file is messed up
|
||||
BadTemplateException = "There was a problem with the HTML template."
|
||||
|
||||
SubResult = re.subn("<!-- INSERT TITLE HERE -->", Title, TemplateInput)
|
||||
SubResult = re.subn("<!-- INSERT CONTENT HERE -->", Content, SubResult[0])
|
||||
if SubResult[1] == 0:
|
||||
raise BadTemplateException
|
||||
|
||||
print SubResult[0]
|
||||
|
||||
def ReadForm(Form):
|
||||
output=""
|
||||
|
||||
if (Form.has_key('faction') & Form.has_key('password'))==0:
|
||||
Display('Partei oder Passwort nicht angegeben')
|
||||
sys.exit()
|
||||
faction=Form['faction'].value
|
||||
password=Form['password'].value
|
||||
db = MySQLdb.connect(db=dbname)
|
||||
cursor = db.cursor()
|
||||
num = cursor.execute('SELECT password from factions where id=\''+faction+'\' and password=\''+password+'\'')
|
||||
if num==0:
|
||||
Display('Partei oder Passwort ungültig')
|
||||
sys.exit()
|
||||
|
||||
fields="faction"
|
||||
values="'"+faction+"'"
|
||||
booleans=['otherpbem', 'party','othertools','crtools','magellan','emap','ehmv','echeck','vorlage','esurvey','mercator', 'madmax', 'slow', 'fast']
|
||||
for field in booleans:
|
||||
if Form.has_key(field):
|
||||
fields=fields+", "+field
|
||||
values=values+", 1"
|
||||
ints=['age','country','turn','starts','socializer','killer','explorer','achiever']
|
||||
for field in ints:
|
||||
if Form.has_key(field):
|
||||
fields=fields+", "+field
|
||||
values=values+", "+Form[field].value
|
||||
strings=['referer','refererother','fun','toolsother', 'freetext']
|
||||
for field in strings:
|
||||
if Form.has_key(field):
|
||||
fields=fields+", "+field
|
||||
values=values+", '"+Form[field].value+"'"
|
||||
query="REPLACE poll ("+fields+") VALUES ("+values+")"
|
||||
# print query
|
||||
cursor.execute(query)
|
||||
|
||||
Display('Danke für die Teilnahme an der Umfrage.\n<p><a href="'+myurl+'">Ergebnisse ansehen</a>\n')
|
||||
|
||||
def ShowResult():
|
||||
db = MySQLdb.connect(db=dbname)
|
||||
cursor = db.cursor()
|
||||
results=cursor.execute('SELECT factions.email, poll.freetext, poll.age, countries.name FROM factions, poll, countries WHERE factions.id=poll.faction AND countries.id=poll.country')
|
||||
answers=int(results)
|
||||
ages = {}
|
||||
countries = {}
|
||||
comments = "<h2>Kommentare</h2>\n"
|
||||
while results > 0:
|
||||
results=results-1
|
||||
email, freetext, age, country=cursor.fetchone()
|
||||
|
||||
if freetext!=None:
|
||||
name=""
|
||||
# if email==None:
|
||||
# email="unknown"
|
||||
# name = " ("+re.subn('@', " at ", email)[0]+")"
|
||||
comments=comments+"<p>"+freetext+name+"\n"
|
||||
if age!=None:
|
||||
if (ages.has_key(age)):
|
||||
ages[age]=ages[age]+1
|
||||
else:
|
||||
ages[age]=1;
|
||||
if country!=None:
|
||||
if (countries.has_key(country)):
|
||||
countries[country]=countries[country]+1
|
||||
else:
|
||||
countries[country]=1;
|
||||
|
||||
personaltext="<h2>Spielerprofil</h2>\n"
|
||||
personals={ 'age': 'Alter', 'turn':'Startrunde', 'starts':'Anzahl Starts'}
|
||||
for key in personals.keys():
|
||||
cursor.execute("SELECT AVG("+key+"), MIN("+key+"), MAX("+key+") FROM poll")
|
||||
kavg, kmin, kmax = cursor.fetchone()
|
||||
personaltext=personaltext+personals[key]+": "+str(int(kmin))+" bis "+str(int(kmax))+" (Durchschnitt "+str(kavg)+")<br>\n"
|
||||
cursor.execute("select count(*) from poll where party=1")
|
||||
value = cursor.fetchone()[0]
|
||||
personaltext=personaltext+str(int(value))+" der "+str(answers)+" Spieler haben schon einmal wegen Eressea eine Party frühzeitig verlassen."
|
||||
|
||||
funtypes= {
|
||||
'quitting':'Ich höre auf',
|
||||
'okay':'Geht so',
|
||||
'greatfun':'Macht großen Spaß',
|
||||
'bestgame':'Bestes Spiel der Welt'
|
||||
}
|
||||
funtext ="<h2>Spielspaß</h2>\n<table>\n"
|
||||
for key in funtypes.keys():
|
||||
cursor.execute("SELECT COUNT(*) FROM poll WHERE fun='"+key+"'")
|
||||
value = int(cursor.fetchone()[0])
|
||||
funtext=funtext+"<tr><td>"+funtypes[key]+"</td><td>"+str(value)+"</td></tr>\n"
|
||||
funtext=funtext+"</table>\n"
|
||||
|
||||
playertypes = { 'killer': 'Strategiespiel', 'explorer':'Erkundung', 'achiever':'Aufbau und Entwicklung', 'socializer':'Rollenspiel' }
|
||||
typetext ="<h2>Spielaspekte</h2>\n<table>\n"
|
||||
for key in playertypes.keys():
|
||||
cursor.execute("SELECT AVG("+key+") FROM poll")
|
||||
value = cursor.fetchone()[0]
|
||||
typetext=typetext+"<tr><td>"+playertypes[key]+"</td><td>"+str(value)+"</td></tr>\n"
|
||||
typetext=typetext+"</table>\n"
|
||||
|
||||
toolnames=('magellan', 'crtools','ehmv', 'echeck', 'mercator', 'emap', 'esurvey', 'vorlage', 'othertools')
|
||||
tooltext="<h2>Tools</h2>\n<table>\n"
|
||||
for tool in toolnames:
|
||||
results=cursor.execute('SELECT count(*) from poll where '+tool+'=1')
|
||||
if results==1:
|
||||
num=int(cursor.fetchone()[0]);
|
||||
tooltext=tooltext+"<tr><td>"+tool+'</td><td>'+str(num)+' ('+str(int(num*100.0/answers))+'%)</td></tr>\n'
|
||||
tooltext=tooltext+"</table><h3>...andere</h3>\n"
|
||||
num=cursor.execute("SELECT DISTINCT toolsother FROM poll where toolsother is not null order by toolsother")
|
||||
while num!=0:
|
||||
num=num-1
|
||||
text=str(cursor.fetchone()[0])
|
||||
tooltext=tooltext+text+"<br>\n"
|
||||
|
||||
referernames= {'friends':'Freunde & Familie','pbemdirect':'PBEM Webseiten','other':'Andere', 'otherpbem':'Andere PBEM', 'searchengi':'Suchmaschinen','press':'Presse','yahoo':'Yahoo & Co,' }
|
||||
referertext="<h2>Wie bist Du zu Eressea gekommen?</h2>\n<table>\n"
|
||||
for referer in referernames.keys():
|
||||
results=cursor.execute("SELECT count(*) from poll where referer='"+referer+"'")
|
||||
if results==1:
|
||||
num=int(cursor.fetchone()[0]);
|
||||
referertext=referertext+"<tr><td>"+referernames[referer]+'</td><td>'+str(num)+"</td></tr>\n"
|
||||
referertext=referertext+"</table><h3>...andere</h3>\n"
|
||||
num=cursor.execute("SELECT DISTINCT refererother FROM poll where refererother is not null order by refererother")
|
||||
while num!=0:
|
||||
num=num-1
|
||||
text=str(cursor.fetchone()[0])
|
||||
referertext=referertext+text+"<br>\n"
|
||||
|
||||
scenarionames={'fast':'Zweimal pro Woche','slow':'Alle zwei Wochen','madmax':'Endzeit-Eressea'}
|
||||
scenariotext="<h2>Kommerzielle Szenarios</h2>\n<table>\n"
|
||||
for scenario in scenarionames.keys():
|
||||
results=cursor.execute('SELECT count(*) from poll where '+scenario+'=1')
|
||||
if results==1:
|
||||
scenariotext=scenariotext+"<tr><td>"+scenarionames[scenario]+'</td><td>'+str(int(cursor.fetchone()[0]))+'</td>\n'
|
||||
scenariotext=scenariotext+"</table>\n"
|
||||
# agefile=open('poll2001-age.dat', 'w')
|
||||
# countryfile=open('poll2001-country.dat', 'w')
|
||||
# for age in ages.keys():
|
||||
# agefile.write(str(int(age)) + '\t' + str(ages[age]) + '\n')
|
||||
countrytext = "<h2>Heimatländer</h2>\n<table>"
|
||||
for country in countries.keys():
|
||||
# countryfile.write(country + '\t' + str(countries[country]) + '\n')
|
||||
countrytext=countrytext+"<tr><td>"+country + '</td><td>' + str(countries[country]) + '</td></tr>\n'
|
||||
countrytext=countrytext+"</table>\n"
|
||||
# agefile.close()
|
||||
# countryfile.close()
|
||||
Display(personaltext+countrytext+typetext+funtext+scenariotext+referertext+tooltext+comments)
|
||||
|
||||
Form = cgi.FieldStorage()
|
||||
if Form.has_key('faction'):
|
||||
ReadForm(Form)
|
||||
else:
|
||||
ShowResult()
|
||||
|
||||
#+--------------+-------------+------+-----+---------+-------+
|
||||
#| Field | Type | Null | Key | Default | Extra |
|
||||
#+--------------+-------------+------+-----+---------+-------+
|
||||
#| faction | varchar(6) | YES | | NULL | |
|
||||
#| age | int(11) | YES | | NULL | |
|
||||
#| country | int(11) | YES | | NULL | |
|
||||
#| turn | int(11) | YES | | NULL | |
|
||||
#| starts | int(11) | YES | | NULL | |
|
||||
#| otherpbem | tinyint(1) | | | 0 | |
|
||||
#| party | tinyint(1) | | | 0 | |
|
||||
#| referer | varchar(10) | YES | | NULL | |
|
||||
#| refererother | varchar(64) | YES | | NULL | |
|
||||
#| fun | varchar(10) | YES | | NULL | |
|
||||
#| socializer | int(11) | YES | | NULL | |
|
||||
#| killer | int(11) | YES | | NULL | |
|
||||
#| explorer | int(11) | YES | | NULL | |
|
||||
#| achiever | int(11) | YES | | NULL | |
|
||||
#| scenarios | varchar(10) | YES | | NULL | |
|
||||
#| magellan | tinyint(1) | | | 0 | |
|
||||
#| emap | tinyint(1) | | | 0 | |
|
||||
#| ehmv | tinyint(1) | | | 0 | |
|
||||
#| vorlage | tinyint(1) | | | 0 | |
|
||||
#| esurvey | tinyint(1) | | | 0 | |
|
||||
#| mercator | tinyint(1) | | | 0 | |
|
||||
#| echeck | tinyint(1) | | | 0 | |
|
||||
#| toolsother | varchar(64) | YES | | NULL | |
|
||||
#+--------------+-------------+------+-----+---------+-------+
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
Hallo <FIRSTNAME>,
|
||||
|
||||
Du stehst mit deiner Anmeldung bei Eressea auf der Warteliste für neue Parteien
|
||||
derzeit an Position <POSITION>. Um Deine Anmeldung zu bestätigen, gehe bitte
|
||||
auf die folgende Webseite, und gib dort zur Bestätigung deine Kundennummer
|
||||
und den Bestätigungsschlüssel ein.
|
||||
|
||||
http://eressea-pbem.de/confirm.html
|
||||
Kundennummer: <CUSTID>
|
||||
Schlüssel: <PASSWORD>
|
||||
|
||||
Um sicherzustellen, das nur interessierte Spieler in der Warteliste sind,
|
||||
muß diese Prozedur einmal wöchentlich wiederholt werden. Du bekommst daher
|
||||
wöchentlich eine Erinnerungsmail, in der Du auch deine aktuelle Position in
|
||||
der Warteliste sehen kannst.
|
||||
|
||||
Solltest Du den Schlüssel bis Sonntag früh nicht eingegeben haben, wird
|
||||
deine Anmeldung aus der Warteliste entfernt, und Du bekommst keine weiteren
|
||||
Mails von uns.
|
||||
|
||||
|
||||
Das Eressea-Team
|
|
@ -0,0 +1,20 @@
|
|||
Hello <FIRSTNAME>,
|
||||
|
||||
You are now entered into the waiting list of Eressea, at position <POSITION>.
|
||||
To confirm your subscription, please go to the following URL and enter your
|
||||
Customer-ID and confirmation key.
|
||||
|
||||
http://eressea-pbem.de/en/confirm.html
|
||||
Customer ID: <CUSTID>
|
||||
Key: <PASSWORD>
|
||||
|
||||
To make sure that only those players interested in playing remain on the
|
||||
list, you need to repeat this procedure once every week. We will send you this
|
||||
reminder by mail, in which you'll also see your updated position on the
|
||||
waiting list.
|
||||
|
||||
If you do not enter the key before sunday morning 9:00 CET, your
|
||||
registration will be considered cancelled, and you will receive no further
|
||||
email from us.
|
||||
|
||||
The Eressea Team
|
|
@ -0,0 +1,125 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
import smtplib
|
||||
import MySQLdb
|
||||
import cgi
|
||||
import re
|
||||
|
||||
# specify the filename of the template file
|
||||
scripturl='http://eressea.upb.de/cgi-bin/eressea/standin.py'
|
||||
TemplateFile = "vinyambar.html"
|
||||
DefaultTitle = "Vinyambar Parteibörse"
|
||||
dbname = "vinyambar"
|
||||
From = "accounts@vinyambar.de"
|
||||
Errors = ""
|
||||
db = MySQLdb.connect(db=dbname)
|
||||
smtpserver='localhost'
|
||||
notify='accounts@vinyambar.de'
|
||||
minnmr=0
|
||||
|
||||
# define a new function called Display
|
||||
# it takes one parameter - a string to Display
|
||||
def Display(Content, Title=DefaultTitle):
|
||||
TemplateHandle = open(TemplateFile, "r") # open in read only mode
|
||||
# read the entire file as a string
|
||||
TemplateInput = TemplateHandle.read()
|
||||
TemplateHandle.close() # close the file
|
||||
|
||||
# for key in Form.keys():
|
||||
# Content=Content+"<br>"+str(key)+"="+str(Form[key])
|
||||
|
||||
# this defines an exception string in case our
|
||||
# template file is messed up
|
||||
BadTemplateException = "There was a problem with the HTML template."
|
||||
|
||||
SubResult = re.subn("<!-- INSERT TITLE HERE -->", Title, TemplateInput)
|
||||
SubResult = re.subn("<!-- INSERT CONTENT HERE -->", Content, SubResult[0])
|
||||
if SubResult[1] == 0:
|
||||
raise BadTemplateException
|
||||
|
||||
print "Content-Type: text/html\n\n"
|
||||
print SubResult[0]
|
||||
return
|
||||
|
||||
def ShowPage():
|
||||
cursor=db.cursor()
|
||||
maxturn = {}
|
||||
games = cursor.execute("SELECT max(lastturn), game from subscriptions GROUP by game")
|
||||
while games>0:
|
||||
games=games-1
|
||||
lastturn, game = cursor.fetchone()
|
||||
maxturn[game] = lastturn
|
||||
output='<p>Um eine der folgenden Parteien zu übernehmen, musst du zuerst ein <a href="register.php">Spielerkonto anlegen</a>. Wenn Du eines hast, markiere die Partei, die Du übernehmen willst, und trage Kundennummer und Kundenpasswort ein.'
|
||||
query = "SELECT g.id, g.name, s.faction, s.lastturn, s.id, r.name, s.info from games g, subscriptions s, races r where s.game=g.id and s.race=r.race and s.status='CANCELLED' order by s.lastturn DESC"
|
||||
results = cursor.execute(query)
|
||||
output=output+'<div align=center><form action="'+scripturl+'" method=post><table bgcolor="#e0e0e0" width="80%" border>\n'
|
||||
output=output+'<tr><th>Rasse</th><th>Spiel</th><th>NMRs</th><th>Informationen</th><th>Markieren</th></tr>'
|
||||
while results>0:
|
||||
results=results-1
|
||||
gid, game, faction, lastturn, sid, race, info = cursor.fetchone()
|
||||
if lastturn<=maxturn[gid]+minnmr:
|
||||
if info==None:
|
||||
info='Keine Informationen'
|
||||
output=output+'<tr><td>'+ race + '</td><td>'+ game + '</td><td>' + str(int(maxturn[gid]-lastturn)) + '</td><td>' + info + '</td>'
|
||||
output=output+'<td><input type="checkbox" name="accept_' + str(int(sid)) + '"> übernehmen</td></tr>\n'
|
||||
|
||||
output=output+'</table>'
|
||||
output=output+'<p><table><tr><td>Kundennummer:</td><td><input name="user" size="4"></tr><tr><td>Passwort:</td><td><input name="pass" type="password" size="40"></td>'
|
||||
output=output+'<tr><td>'
|
||||
output=output+'<input name="save" type="submit" value="Abschicken">'
|
||||
output=output+'</td></tr></table>'
|
||||
# output=output+'<p>Aus technischen Gründen wird diese Seite erst am Dienstag abend wieder benutzbar sein.'
|
||||
|
||||
output=output+'</form></div>'
|
||||
Display(output)
|
||||
return
|
||||
|
||||
Form = cgi.FieldStorage()
|
||||
|
||||
custid=None
|
||||
password=None
|
||||
if Form.has_key("user"):
|
||||
custid = int(Form["user"].value)
|
||||
|
||||
if Form.has_key("pass"):
|
||||
password = Form["pass"].value
|
||||
|
||||
if (password!=None) & (custid!=None):
|
||||
cursor=db.cursor()
|
||||
output=""
|
||||
if cursor.execute("select firstname, lastname, email, id from users where password='"+password+"' and id="+str(int(custid)))==1:
|
||||
firstname, lastname, email, custid = cursor.fetchone()
|
||||
c = cursor.execute("SELECT id, game, password, faction, user from subscriptions where status='CANCELLED'")
|
||||
while c>0:
|
||||
c=c-1
|
||||
sid, gid, newpass, faction, uid = cursor.fetchone()
|
||||
if Form.has_key("accept_"+str(int(sid))):
|
||||
update = db.cursor()
|
||||
update.execute("INSERT into transfers (subscription, src, dst, reason) values ("+str(int(sid))+", "+str(int(uid))+", "+str(int(custid))+", 'STANDIN')")
|
||||
update.execute("UPDATE subscriptions set user=" + str(int(custid)) + ", status='ACTIVE' where id=" + str(int(sid)))
|
||||
output=output+"Die Partei " + faction + " wurde Dir überschrieben. Eine Email mit dem Passwort und weiteren Hinweisen ist unterwegs zu Dir.<br>"
|
||||
server=smtplib.SMTP(smtpserver)
|
||||
|
||||
Msg="From: "+From+"\nTo: "+email+"\nSubject: Vinambar Parteiuebernahme\n\n"
|
||||
Msg=Msg+"Das Passwort für deine neue Vinyambar-Partei "+faction+" lautet\n"
|
||||
Msg=Msg+" "+newpass+"\n"
|
||||
Msg=Msg+"\nUm den Report der letzten Woche zu erhalten, schicke eine Mail mit dem Betreff\n"
|
||||
Msg=Msg+"VIN"+str(int(gid))+" REPORT "+faction+" \""+newpass+"\" an die Adresse "
|
||||
Msg=Msg+"vinyambar@eressea.amber.kn-bremen.de"
|
||||
server.sendmail(From, email, Msg)
|
||||
|
||||
Msg="From: "+From+"\nTo: "+notify+"\nSubject: Vinambar Parteiuebernahme\n\n"
|
||||
Msg=Msg+"Die Partei "+faction+" wurde übernommen.\n"
|
||||
Msg=Msg+" Spieler: "+str(int(custid))+"\n"
|
||||
Msg=Msg+" Name : "+firstname+" "+lastname+"\n"
|
||||
Msg=Msg+" email : "+email+"\n"
|
||||
server.sendmail(From, notify, Msg)
|
||||
|
||||
server.close()
|
||||
else:
|
||||
output="<font color=red>Fehler in Passwort oder Kundennummer<br></font>"
|
||||
Display(output)
|
||||
else:
|
||||
ShowPage()
|
||||
|
||||
db.close()
|
|
@ -0,0 +1,132 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
import sys
|
||||
import MySQLdb
|
||||
import os
|
||||
import cgi
|
||||
import re
|
||||
import string
|
||||
import smtplib
|
||||
from whrandom import choice
|
||||
|
||||
# specify the filename of the template file
|
||||
scripturl="http://eressea.upb.de/cgi-bin/eressea/vinyambar-register.py"
|
||||
HTMLTemplate = "vinyambar.html"
|
||||
MailTemplate="vinyambar-register.mail"
|
||||
DefaultTitle = "Vinyambar Anmeldung"
|
||||
dbname = "vinyambar"
|
||||
From = "accounts@vinyambar.de"
|
||||
locale="de"
|
||||
smtpserver = 'localhost'
|
||||
db=None
|
||||
|
||||
# define a new function called Display
|
||||
# it takes one parameter - a string to Display
|
||||
def Display(Content, Title=DefaultTitle):
|
||||
TemplateHandle = open(HTMLTemplate, "r") # open in read only mode
|
||||
# read the entire file as a string
|
||||
TemplateInput = TemplateHandle.read()
|
||||
TemplateHandle.close() # close the file
|
||||
|
||||
# this defines an exception string in case our
|
||||
# template file is messed up
|
||||
BadTemplateException = "There was a problem with the HTML template."
|
||||
|
||||
SubResult = re.subn("<!-- INSERT TITLE HERE -->", Title, TemplateInput)
|
||||
SubResult = re.subn("<!-- INSERT CONTENT HERE -->", Content, SubResult[0])
|
||||
if SubResult[1] == 0:
|
||||
raise BadTemplateException
|
||||
|
||||
print "Content-Type: text/html\n\n"
|
||||
print SubResult[0]
|
||||
return
|
||||
|
||||
|
||||
def Send(email, custid, firstname, password, position):
|
||||
TemplateHandle = open(MailTemplate+"."+locale, "r") # open in read only mode
|
||||
# read the entire file as a string
|
||||
TemplateInput = TemplateHandle.read()
|
||||
TemplateHandle.close() # close the file
|
||||
|
||||
SubResult = re.subn("<FIRSTNAME>", firstname, TemplateInput)
|
||||
SubResult = re.subn("<PASSWORD>", password, SubResult[0])
|
||||
SubResult = re.subn("<POSITION>", str(int(position)), SubResult[0])
|
||||
SubResult = re.subn("<CUSTID>", str(int(custid)), SubResult[0])
|
||||
|
||||
Msg="From: "+From+"\nTo: "+email+"\nSubject: Vinyambar Anmeldung\n\n"
|
||||
Msg=Msg+SubResult[0]
|
||||
server=smtplib.SMTP(smtpserver)
|
||||
server.sendmail(From, email, Msg)
|
||||
server.close()
|
||||
return
|
||||
|
||||
|
||||
def GetKey(Form, key):
|
||||
if Form.has_key(key):
|
||||
value=Form[key].value
|
||||
if value!="":
|
||||
return value
|
||||
return None
|
||||
|
||||
def ValidEmail(email):
|
||||
if string.find(email, "@")==-1:
|
||||
return 0
|
||||
elif string.find(email, " ")!=-1:
|
||||
return 0
|
||||
return 1
|
||||
|
||||
def genpasswd():
|
||||
newpasswd=""
|
||||
chars = string.letters + string.digits
|
||||
for i in range(8):
|
||||
newpasswd = newpasswd + choice(chars)
|
||||
return newpasswd
|
||||
|
||||
|
||||
Form = cgi.FieldStorage()
|
||||
|
||||
email=GetKey(Form, "email")
|
||||
firstname=GetKey(Form, "firstname")
|
||||
lastname=GetKey(Form, "lastname")
|
||||
address=GetKey(Form, "address")
|
||||
city=GetKey(Form, "city")
|
||||
country=GetKey(Form, "country")
|
||||
phone=GetKey(Form, "phone")
|
||||
|
||||
if (locale==None) or (lastname==None) or (firstname==None) or (address==None) or (city==None):
|
||||
output="<p>Um Dich zu Vinyambar anzumelden musst Du das Formular vollständig ausfüllen.\n "
|
||||
for key in Form.keys():
|
||||
output=output+"<br>"+key+": "+Form[key].value+"\n"
|
||||
Display(output)
|
||||
elif ValidEmail(email)==0:
|
||||
output="<p>Um Dich zu Vinyambar anzumelden musst Du eine gültige Email-Adresse angeben.\n "
|
||||
Display(output)
|
||||
else:
|
||||
db=MySQLdb.connect(db=dbname)
|
||||
cursor=db.cursor()
|
||||
exist=cursor.execute("select id from users where email='"+email+"'")
|
||||
if exist>0:
|
||||
Display('<p>Du hast bereits einen Eintrag in der Datenbank.')
|
||||
else:
|
||||
password=genpasswd()
|
||||
fields = "firstname, lastname, locale, email, address, city, status, password"
|
||||
values = "'"+firstname+"', '"+lastname+"', '"+locale+"', '"+email+"', '"+address+"', '"+city+"', 'WAITING', '"+password+"'"
|
||||
if phone!=None:
|
||||
fields=fields+", phone"
|
||||
values=values+", '"+phone+"'"
|
||||
if country!=None:
|
||||
fields=fields+", country"
|
||||
values=values+", "+country+""
|
||||
cursor.execute("insert into users ("+fields+") VALUES ("+values+")")
|
||||
cursor.execute("SELECT LAST_INSERT_ID() from dual")
|
||||
custid=cursor.fetchone()[0]
|
||||
if os.environ.has_key('REMOTE_ADDR'):
|
||||
ip=os.environ['REMOTE_ADDR']
|
||||
if ip!=None:
|
||||
cursor.execute("REPLACE userips (ip, user) VALUES ('"+ip+"', "+str(int(custid))+")")
|
||||
cursor.execute("select count(*) from users where status='WAITING' or status='CONFIRMED'")
|
||||
waiting=cursor.fetchone()[0]
|
||||
Send(email, custid, firstname, password, waiting)
|
||||
text={"de":"Deine Anmeldung wurde bearbeitet. Eine EMail mit Hinweisen ist unterwegs zu Dir", "en":"Your application was processed. An email containing further instructions is being sent to you"}
|
||||
Display("<p>"+text[locale]+".")
|
||||
db.close()
|
|
@ -0,0 +1,24 @@
|
|||
#!/bin/bash
|
||||
echo "running build.sh"
|
||||
module=eressea
|
||||
rootdir=/home/cvs/checkout/${module}
|
||||
# www=$rootdir/www-data -- no web archives of eressea source
|
||||
subdir="source"
|
||||
|
||||
date >> ${rootdir}/buildlog
|
||||
|
||||
echo ==---------------------==
|
||||
echo `date` : Rebuilding ${module}
|
||||
echo ==---------------------==
|
||||
|
||||
for sub in $subdir
|
||||
do
|
||||
# update the source tree
|
||||
cd $rootdir/$sub
|
||||
cvs -q update -drP
|
||||
# create the source archive
|
||||
# cd $rootdir
|
||||
# tar czf ${www}/downloads/${module}-${sub}.tar.gz ${sub}
|
||||
done
|
||||
cat >| parameters
|
||||
${rootdir}/senddiff.pl `cat parameters` 2>&1 >> /tmp/senddiff.log
|
|
@ -0,0 +1,42 @@
|
|||
#!/bin/sh
|
||||
NOTIFY="eressea-design@eressea.kn-bremen.de"
|
||||
#NOTIFY="enno@eressea.upb.de"
|
||||
NEWFILE="/tmp/commit.source.$$"
|
||||
OLDFILE="/tmp/commit.source.last"
|
||||
|
||||
BUILDNO=0
|
||||
BUILDLOG="/home/cvs/.build/eressea-source.log"
|
||||
BUILDFILE="/home/cvs/.build/eressea-source.no"
|
||||
if [ -e $BUILDFILE ]; then
|
||||
BUILDNO=`cat $BUILDFILE`
|
||||
fi
|
||||
|
||||
perl -e '$i=0; while (<>) { if (/^Log Message.*$/) { $i=1; } else { if ($i==1) { print $_; } else { if (/^.*(Tag.*)$/) { print "$1\n\n"; } } } }' >| $NEWFILE
|
||||
WHO="$1"
|
||||
shift
|
||||
|
||||
NEWMD5=`md5sum $NEWFILE | awk '{ print $1 }'`
|
||||
echo "New md5sum=$NEWMD5"
|
||||
if [ -e $OLDFILE ]; then
|
||||
OLDMD5=`md5sum $OLDFILE | awk '{ print $1 }'`
|
||||
else
|
||||
OLDMD5="N/A"
|
||||
fi
|
||||
cp $NEWFILE $OLDFILE
|
||||
echo "Old md5sum=$OLDMD5"
|
||||
if [ $NEWMD5 != $OLDMD5 ]; then
|
||||
let BUILDNO=$BUILDNO+1
|
||||
echo $BUILDNO >| $BUILDFILE
|
||||
(
|
||||
echo
|
||||
echo -n "[commit $BUILDNO] $WHO"
|
||||
date
|
||||
cat $NEWFILE
|
||||
) >> $BUILDLOG
|
||||
mailx -s "[commit $BUILDNO] eressea-source by $WHO" $NOTIFY < $NEWFILE
|
||||
echo "New log message. Sent out notification"
|
||||
else
|
||||
echo "Identical log message. Notification skipped"
|
||||
fi
|
||||
echo $BUILDNO $@ | mailx -s "build eressea" cvs@eressea.upb.de
|
||||
rm $NEWFILE
|
|
@ -0,0 +1,4 @@
|
|||
#!/bin/sh
|
||||
|
||||
# notify the web user of the change
|
||||
mailx -s "update eressea" www-data@eressea.upb.de
|
|
@ -0,0 +1,12 @@
|
|||
PATH=$HOME/bin:/usr/bin:/public/bin:/bin:/usr/local/bin:/usr/sbin
|
||||
ORGMAIL=/var/spool/mail/cvs
|
||||
DEFAULT=/var/spool/mail/cvs
|
||||
MAILDIR=$HOME/Mail
|
||||
LOGFILE=$MAILDIR/procmail-log
|
||||
LOCKFILE=$HOME/.lockmail
|
||||
VERBOSE=on
|
||||
LOGABSTRACT=all
|
||||
|
||||
:0:$MAILDIR/.build.lock
|
||||
* ^Subject: build \/.*
|
||||
| formail -I "" | $HOME/bin/build.sh $MATCH
|
|
@ -0,0 +1,30 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
require Mail::Send;
|
||||
|
||||
if(scalar(@ARGV) == 0) {
|
||||
exit();
|
||||
}
|
||||
|
||||
$msg = new Mail::Send;
|
||||
$msg->to('eressea-diff@eressea.upb.de');
|
||||
|
||||
# system('cvs update');
|
||||
|
||||
$no = shift(@ARGV);
|
||||
$dir = shift(@ARGV);
|
||||
($project, $dir) = split(/\//, $dir, 2);
|
||||
|
||||
$msg->set('Subject', "[commit $no] diff $project/$dir");
|
||||
$mail = $msg->open();
|
||||
|
||||
print $mail "updated files in $project/$dir\n";
|
||||
chdir('/home/cvs/checkout/eressea/$project/$dir');
|
||||
|
||||
foreach $arg (@ARGV) {
|
||||
($file, $oldver, $newver) = split(/,/, $arg);
|
||||
print $mail "COMMAND: cvs diff -u -r $oldver -r $newver $file\n\n";
|
||||
print $mail `cd /home/cvs/checkout/eressea/$project/$dir ; cvs diff -u -r $oldver -r $newver $file`;
|
||||
}
|
||||
|
||||
$mail->close();
|
|
@ -0,0 +1,36 @@
|
|||
** Status und Statusänderungen
|
||||
|
||||
* USERS.STATUS
|
||||
|
||||
NEW: Initialer Status, warten auf Bestätigung der Anmeldung.
|
||||
Übergänge:
|
||||
-> TUTORIAL, wenn Anmeldung von Benutzer bestätigt wurde.
|
||||
-> INVALID, BANNED (nur manuell)
|
||||
|
||||
TUTORIAL: Emailadresse des Spielers ist korrekt, seine Anmeldung wurde
|
||||
bestätigt, und er muss ein Tutorial bestehen.
|
||||
Übergänge:
|
||||
-> ACTIVE, wenn er ein Tutorial abgeschlossen hat
|
||||
-> INVALID, BANNED (nur manuell)
|
||||
|
||||
ACTIVE: Spieler hat das Tutorial erfüllt, und kann sich für Partien anmelden
|
||||
Übergänge:
|
||||
-> INVALID, BANNED (nur manuell)
|
||||
|
||||
INVALID: Spieler hat ungültige Daten übermittelt
|
||||
|
||||
BANNED: Spieler ist aus dem Spiel ausgeschlossen worden.
|
||||
|
||||
|
||||
* SUBSCRIPTIONS.STATUS
|
||||
|
||||
WAITING: Warten auf Bestätigung
|
||||
-> EXPIRED
|
||||
-> CONFIRMED
|
||||
|
||||
CONFIRMED: Bestätigung eingetroffen
|
||||
-> WAITING
|
||||
-> ACTIVE
|
||||
|
||||
ACTIVE: Spiel ist gestartet
|
||||
-> DEAD
|
|
@ -0,0 +1,51 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
# merge two accounts. not used.
|
||||
# needs to be checked before used.
|
||||
# does not update the TRANSFERS table
|
||||
|
||||
import MySQLdb
|
||||
import sys
|
||||
|
||||
dbname=sys.argv[1]
|
||||
userid=int(sys.argv[2])
|
||||
oldid=int(sys.argv[3])
|
||||
|
||||
db=MySQLdb.connect(db=dbname)
|
||||
cursor=db.cursor()
|
||||
|
||||
i=cursor.execute("select distinct email from users where id="+str(oldid)+" or id="+str(userid))
|
||||
|
||||
if i==0:
|
||||
print "Could not find specified usernames"
|
||||
sys.exit()
|
||||
|
||||
if i>1:
|
||||
print "EMail addresses do not match"
|
||||
i=cursor.execute("select id, email from users where id="+str(oldid)+" or id="+str(userid))
|
||||
while i>0:
|
||||
i=i-1
|
||||
id, email = cursor.fetchone()
|
||||
print " "+str(int(id))+" "+email
|
||||
sys.exit()
|
||||
|
||||
i=cursor.execute("select id, email, balance from users where id="+str(oldid)+" or id="+str(userid))
|
||||
if i!=2:
|
||||
print "Could not find both customer ids"
|
||||
while i>0:
|
||||
i=i-1
|
||||
id, email, balance = cursor.fetchone()
|
||||
print " "+str(int(id))+" "+email
|
||||
sys.exit()
|
||||
|
||||
bal=0.0
|
||||
while i>0:
|
||||
i=i-1
|
||||
id, email, balance = cursor.fetchone()
|
||||
bal=bal+balance
|
||||
|
||||
cursor.execute("update users set balance="+str(bal)+" where id="+str(userid))
|
||||
cursor.execute("delete from users where id="+str(oldid))
|
||||
cursor.execute("update transactions set user="+str(userid)+" where user="+str(oldid))
|
||||
cursor.execute("update subscriptions set user="+str(userid)+" where user="+str(oldid))
|
||||
print "Customer records have been merged"
|
|
@ -0,0 +1,19 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
import MySQLdb
|
||||
import sys
|
||||
import smtplib
|
||||
|
||||
From='accounts@vinyambar.de'
|
||||
dbname=sys.argv[1]
|
||||
|
||||
server=smtplib.SMTP('localhost')
|
||||
db=MySQLdb.connect(db=dbname)
|
||||
cursor=db.cursor()
|
||||
|
||||
i=cursor.execute('SELECT email, balance, firstname, lastname FROM users WHERE balance>0.0')
|
||||
|
||||
while i>0:
|
||||
email, balance, firstname, lastname = cursor.fetchone()
|
||||
print 'Balance for '+firstname+' '+lastname+' is '+str(balance)
|
||||
i=i-1
|
|
@ -0,0 +1,18 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
import MySQLdb
|
||||
import sys
|
||||
|
||||
dbname=sys.argv[1]
|
||||
db=MySQLdb.connect(db=dbname)
|
||||
|
||||
cursor=db.cursor()
|
||||
bans = cursor.execute("select user, users.email, users.status, userips.ip from bannedips, users, userips where users.status!='BANNED' and users.id=userips.user and userips.ip=bannedips.ip")
|
||||
bc = db.cursor()
|
||||
while bans:
|
||||
bans=bans-1
|
||||
user, email, status, ip = cursor.fetchone()
|
||||
if status!='ACTIVE':
|
||||
bc.execute("update users set status='BANNED' where id="+str(int(user)))
|
||||
else:
|
||||
print email + " is active, and playing from banned ip "+ip
|
|
@ -0,0 +1,54 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
import MySQLdb
|
||||
import re
|
||||
import sys
|
||||
import smtplib
|
||||
|
||||
|
||||
dbname=sys.argv[1]
|
||||
template=sys.argv[2]
|
||||
game=sys.argv[3]
|
||||
|
||||
server=smtplib.SMTP('localhost')
|
||||
db=MySQLdb.connect(db=dbname)
|
||||
From="accounts@vinyambar.de"
|
||||
|
||||
cursor=db.cursor()
|
||||
query=("select u.id, u.email, u.firstname "+
|
||||
"from users u, games, subscriptions, transactions t "+
|
||||
"where u.id=subscriptions.user and subscriptions.game=games.id and "+
|
||||
"u.status='CONFIRMED' and games.name='"+game+"' GROUP BY u.id HAVING SUM(t.balance)=0")
|
||||
|
||||
users=cursor.execute(query)
|
||||
print "Sending confirmation to "+str(int(users))+" users"
|
||||
while users!=0:
|
||||
users=users-1
|
||||
entry=cursor.fetchone()
|
||||
custid=str(int(entry[0]))
|
||||
email=entry[1]
|
||||
firstname=entry[2]
|
||||
|
||||
infile=open(template,"r")
|
||||
line = infile.read()
|
||||
|
||||
line = re.sub('<CUSTID>', custid, line)
|
||||
line = re.sub('<FIRSTNAME>', firstname, line)
|
||||
line = re.sub("<GAMENAME>", game, line)
|
||||
|
||||
Msg = ("From: "+From+"\nTo: "+email+"\n"+
|
||||
"Subject: Vinyambar Kontoinformationen.\n\n"+
|
||||
line)
|
||||
|
||||
try:
|
||||
server.sendmail(From, email, Msg)
|
||||
update=db.cursor()
|
||||
update.execute("UPDATE users set status='PENDING' WHERE id="+custid)
|
||||
print "Sent billing information to "+email
|
||||
|
||||
except:
|
||||
print "Could not inform "+To
|
||||
print "Reason was: '"+Reason+"'"
|
||||
print "Exception is:", sys.exc_type, ":", sys.exc_value
|
||||
|
||||
infile.close()
|
|
@ -0,0 +1,56 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
# this script picks all NEW users from the database, (subscribed through
|
||||
# the web interface), and sends them their customer-id and password
|
||||
# if the mail was sent cuccessfully, it sets the user to the 'WAITING'
|
||||
# state, meaning that we wait for his confirmation.
|
||||
|
||||
import sys
|
||||
import MySQLdb
|
||||
import smtplib
|
||||
|
||||
dbname=sys.argv[1]
|
||||
db = MySQLdb.connect(db=dbname)
|
||||
|
||||
From="accounts@vinyambar.de"
|
||||
server=smtplib.SMTP('localhost')
|
||||
|
||||
cursor=db.cursor()
|
||||
records=cursor.execute("SELECT u.id, u.password, u.email "+
|
||||
"from users u "+
|
||||
"where u.status='NEW'")
|
||||
|
||||
while records>0:
|
||||
records = records - 1
|
||||
customerid, passwd, email = cursor.fetchone()
|
||||
|
||||
Msg = ("From: "+From+"\nTo: "+email+"\nSubject: Vinyambar Anmeldung angenommen.\n\n"+
|
||||
"Deine Anmeldung für Vinyambar wurde akzeptiert.\n"
|
||||
"\n"+
|
||||
"Kundennummer: " + str(int(customerid)) + "\n"+
|
||||
"Passwort: " + passwd + "\n" +
|
||||
"\n" +
|
||||
"Bitte bewahre diese Mail sorgfältig auf, da Du deine Kundennummer und das\n"+
|
||||
"Passwort für das Spiel benötigst. Solltest Du noch Fragen zu Deiner \n"+
|
||||
"Anmeldung haben, wende Dich bitte an accounts@vinyambar.de.\n" +
|
||||
"\n"+
|
||||
"Die Kundennummer gib bitte bei der Überweisung der Spielgebühren an. \n" +
|
||||
"Unsere Kontoinformationen lauten:\n" +
|
||||
" Katja Zedel\n"+
|
||||
" Kontonummer 1251 886 106 \n"+
|
||||
" BLZ 500 502 01 (Frankfurter Sparkasse)\n" +
|
||||
"\n"+
|
||||
"Zugang zu deinem Konto erhältst Du mit dem Passowrt auf der Webseite\n"+
|
||||
" http://www.vinyambar.de/accounts.shtml\n"+
|
||||
"\n"+
|
||||
"Das Vinyambar-Team")
|
||||
now = time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime())
|
||||
try:
|
||||
server.sendmail(From, email, Msg)
|
||||
print "[%s] USER %d - UPDATE: status='WAITING' " % (now, customerid)
|
||||
update=db.cursor()
|
||||
update.execute("UPDATE users set status='WAITING' WHERE id="+
|
||||
str(int(customerid)))
|
||||
except:
|
||||
print "[%s] USER %d - ERROR: could not send to %s: %s " % (now, customerid, email, sys.exc_indo())
|
||||
sys.exit()
|
|
@ -0,0 +1,351 @@
|
|||
# MySQL dump 8.13
|
||||
#
|
||||
# Host: localhost Database: vinyambar
|
||||
#--------------------------------------------------------
|
||||
# Server version 3.23.36-log
|
||||
|
||||
#
|
||||
# Table structure for table 'countries'
|
||||
#
|
||||
|
||||
DROP table countries;
|
||||
CREATE TABLE countries (
|
||||
id int(11) NOT NULL default '0',
|
||||
name varchar(32) default NULL,
|
||||
PRIMARY KEY (id)
|
||||
) TYPE=MyISAM;
|
||||
|
||||
#
|
||||
# Dumping data for table 'countries'
|
||||
#
|
||||
|
||||
INSERT INTO countries VALUES (1,'United States');
|
||||
INSERT INTO countries VALUES (10,'Anguilla');
|
||||
INSERT INTO countries VALUES (100,'Israel');
|
||||
INSERT INTO countries VALUES (101,'Italy');
|
||||
INSERT INTO countries VALUES (102,'Jamaica');
|
||||
INSERT INTO countries VALUES (103,'Jan Mayen');
|
||||
INSERT INTO countries VALUES (104,'Japan');
|
||||
INSERT INTO countries VALUES (105,'Jersey');
|
||||
INSERT INTO countries VALUES (106,'Jordan');
|
||||
INSERT INTO countries VALUES (107,'Kazakhstan');
|
||||
INSERT INTO countries VALUES (108,'Kenya Coast Republic');
|
||||
INSERT INTO countries VALUES (109,'Kiribati');
|
||||
INSERT INTO countries VALUES (11,'Antigua and Barbuda');
|
||||
INSERT INTO countries VALUES (111,'Korea, South');
|
||||
INSERT INTO countries VALUES (112,'Kuwait');
|
||||
INSERT INTO countries VALUES (113,'Kyrgyzstan');
|
||||
INSERT INTO countries VALUES (114,'Laos');
|
||||
INSERT INTO countries VALUES (115,'Latvia');
|
||||
INSERT INTO countries VALUES (116,'Lebanon');
|
||||
INSERT INTO countries VALUES (117,'Lesotho');
|
||||
INSERT INTO countries VALUES (118,'Liberia');
|
||||
INSERT INTO countries VALUES (12,'Argentina');
|
||||
INSERT INTO countries VALUES (120,'Liechtenstein');
|
||||
INSERT INTO countries VALUES (121,'Lithuania');
|
||||
INSERT INTO countries VALUES (122,'Luxembourg');
|
||||
INSERT INTO countries VALUES (123,'Macau');
|
||||
INSERT INTO countries VALUES (124,'Macedonia');
|
||||
INSERT INTO countries VALUES (125,'Madagascar');
|
||||
INSERT INTO countries VALUES (126,'Malawi');
|
||||
INSERT INTO countries VALUES (127,'Malaysia');
|
||||
INSERT INTO countries VALUES (128,'Maldives');
|
||||
INSERT INTO countries VALUES (129,'Mali');
|
||||
INSERT INTO countries VALUES (13,'Armenia');
|
||||
INSERT INTO countries VALUES (130,'Malta');
|
||||
INSERT INTO countries VALUES (131,'Marshall Islands');
|
||||
INSERT INTO countries VALUES (132,'Martinique');
|
||||
INSERT INTO countries VALUES (133,'Mauritania');
|
||||
INSERT INTO countries VALUES (134,'Mauritius');
|
||||
INSERT INTO countries VALUES (135,'Mayotte');
|
||||
INSERT INTO countries VALUES (136,'Mexico');
|
||||
INSERT INTO countries VALUES (137,'Moldova');
|
||||
INSERT INTO countries VALUES (138,'Monaco');
|
||||
INSERT INTO countries VALUES (139,'Mongolia');
|
||||
INSERT INTO countries VALUES (14,'Aruba');
|
||||
INSERT INTO countries VALUES (140,'Montserrat');
|
||||
INSERT INTO countries VALUES (141,'Morocco');
|
||||
INSERT INTO countries VALUES (142,'Mozambique');
|
||||
INSERT INTO countries VALUES (143,'Namibia');
|
||||
INSERT INTO countries VALUES (144,'Nauru');
|
||||
INSERT INTO countries VALUES (145,'Nepal');
|
||||
INSERT INTO countries VALUES (146,'Netherlands');
|
||||
INSERT INTO countries VALUES (147,'Netherlands Antilles');
|
||||
INSERT INTO countries VALUES (148,'New Caledonia');
|
||||
INSERT INTO countries VALUES (149,'New Zealand');
|
||||
INSERT INTO countries VALUES (15,'Australia');
|
||||
INSERT INTO countries VALUES (150,'Nicaragua');
|
||||
INSERT INTO countries VALUES (151,'Niger');
|
||||
INSERT INTO countries VALUES (152,'Nigeria');
|
||||
INSERT INTO countries VALUES (153,'Niue');
|
||||
INSERT INTO countries VALUES (154,'Norway');
|
||||
INSERT INTO countries VALUES (155,'Oman');
|
||||
INSERT INTO countries VALUES (156,'Pakistan');
|
||||
INSERT INTO countries VALUES (157,'Palau');
|
||||
INSERT INTO countries VALUES (158,'Panama');
|
||||
INSERT INTO countries VALUES (159,'Papua New Guinea');
|
||||
INSERT INTO countries VALUES (16,'Austria');
|
||||
INSERT INTO countries VALUES (160,'Paraguay');
|
||||
INSERT INTO countries VALUES (161,'Peru');
|
||||
INSERT INTO countries VALUES (162,'Philippines');
|
||||
INSERT INTO countries VALUES (163,'Poland');
|
||||
INSERT INTO countries VALUES (164,'Portugal');
|
||||
INSERT INTO countries VALUES (165,'Puerto Rico');
|
||||
INSERT INTO countries VALUES (166,'Qatar');
|
||||
INSERT INTO countries VALUES (167,'Romania');
|
||||
INSERT INTO countries VALUES (168,'Russian Federation');
|
||||
INSERT INTO countries VALUES (169,'Rwanda');
|
||||
INSERT INTO countries VALUES (17,'Azerbaijan Republic');
|
||||
INSERT INTO countries VALUES (170,'Saint Helena');
|
||||
INSERT INTO countries VALUES (171,'Saint Kitts-Nevis');
|
||||
INSERT INTO countries VALUES (172,'Saint Lucia');
|
||||
INSERT INTO countries VALUES (173,'Saint Pierre and Miquelon');
|
||||
INSERT INTO countries VALUES (174,'Saint Vincent and the Grenadines');
|
||||
INSERT INTO countries VALUES (175,'San Marino');
|
||||
INSERT INTO countries VALUES (176,'Saudi Arabia');
|
||||
INSERT INTO countries VALUES (177,'Senegal');
|
||||
INSERT INTO countries VALUES (178,'Seychelles');
|
||||
INSERT INTO countries VALUES (179,'Sierra Leone');
|
||||
INSERT INTO countries VALUES (18,'Bahamas');
|
||||
INSERT INTO countries VALUES (180,'Singapore');
|
||||
INSERT INTO countries VALUES (181,'Slovakia');
|
||||
INSERT INTO countries VALUES (182,'Slovenia');
|
||||
INSERT INTO countries VALUES (183,'Solomon Islands');
|
||||
INSERT INTO countries VALUES (184,'Somalia');
|
||||
INSERT INTO countries VALUES (185,'South Africa');
|
||||
INSERT INTO countries VALUES (186,'Spain');
|
||||
INSERT INTO countries VALUES (187,'Sri Lanka');
|
||||
INSERT INTO countries VALUES (188,'Sudan');
|
||||
INSERT INTO countries VALUES (189,'Suriname');
|
||||
INSERT INTO countries VALUES (19,'Bahrain');
|
||||
INSERT INTO countries VALUES (190,'Svalbard');
|
||||
INSERT INTO countries VALUES (191,'Swaziland');
|
||||
INSERT INTO countries VALUES (192,'Sweden');
|
||||
INSERT INTO countries VALUES (193,'Switzerland');
|
||||
INSERT INTO countries VALUES (194,'Syria');
|
||||
INSERT INTO countries VALUES (195,'Tahiti');
|
||||
INSERT INTO countries VALUES (196,'Taiwan');
|
||||
INSERT INTO countries VALUES (197,'Tajikistan');
|
||||
INSERT INTO countries VALUES (198,'Tanzania');
|
||||
INSERT INTO countries VALUES (199,'Thailand');
|
||||
INSERT INTO countries VALUES (2,'Canada');
|
||||
INSERT INTO countries VALUES (20,'Bangladesh');
|
||||
INSERT INTO countries VALUES (200,'Togo');
|
||||
INSERT INTO countries VALUES (201,'Tonga');
|
||||
INSERT INTO countries VALUES (202,'Trinidad and Tobago');
|
||||
INSERT INTO countries VALUES (203,'Tunisia');
|
||||
INSERT INTO countries VALUES (204,'Turkey');
|
||||
INSERT INTO countries VALUES (205,'Turkmenistan');
|
||||
INSERT INTO countries VALUES (206,'Turks and Caicos Islands');
|
||||
INSERT INTO countries VALUES (207,'Tuvalu');
|
||||
INSERT INTO countries VALUES (208,'Uganda');
|
||||
INSERT INTO countries VALUES (209,'Ukraine');
|
||||
INSERT INTO countries VALUES (21,'Barbados');
|
||||
INSERT INTO countries VALUES (210,'United Arab Emirates');
|
||||
INSERT INTO countries VALUES (211,'Uruguay');
|
||||
INSERT INTO countries VALUES (212,'Uzbekistan');
|
||||
INSERT INTO countries VALUES (213,'Vanuatu');
|
||||
INSERT INTO countries VALUES (214,'Vatican City State');
|
||||
INSERT INTO countries VALUES (215,'Venezuela');
|
||||
INSERT INTO countries VALUES (216,'Vietnam');
|
||||
INSERT INTO countries VALUES (217,'Virgin Islands (U.S.)');
|
||||
INSERT INTO countries VALUES (218,'Wallis and Futuna');
|
||||
INSERT INTO countries VALUES (219,'Western Sahara');
|
||||
INSERT INTO countries VALUES (22,'Belarus');
|
||||
INSERT INTO countries VALUES (220,'Western Samoa');
|
||||
INSERT INTO countries VALUES (221,'Yemen');
|
||||
INSERT INTO countries VALUES (222,'Yugoslavia');
|
||||
INSERT INTO countries VALUES (223,'Zambia');
|
||||
INSERT INTO countries VALUES (224,'Zimbabwe</SELECT>');
|
||||
INSERT INTO countries VALUES (225,'APO/FPO');
|
||||
INSERT INTO countries VALUES (226,'Micronesia');
|
||||
INSERT INTO countries VALUES (23,'Belgium');
|
||||
INSERT INTO countries VALUES (24,'Belize');
|
||||
INSERT INTO countries VALUES (25,'Benin');
|
||||
INSERT INTO countries VALUES (26,'Bermuda');
|
||||
INSERT INTO countries VALUES (27,'Bhutan');
|
||||
INSERT INTO countries VALUES (28,'Bolivia');
|
||||
INSERT INTO countries VALUES (29,'Bosnia and Herzegovina');
|
||||
INSERT INTO countries VALUES (3,'United Kingdom');
|
||||
INSERT INTO countries VALUES (30,'Botswana');
|
||||
INSERT INTO countries VALUES (31,'Brazil');
|
||||
INSERT INTO countries VALUES (32,'British Virgin Islands');
|
||||
INSERT INTO countries VALUES (33,'Brunei Darussalam');
|
||||
INSERT INTO countries VALUES (34,'Bulgaria');
|
||||
INSERT INTO countries VALUES (35,'Burkina Faso');
|
||||
INSERT INTO countries VALUES (36,'Burma');
|
||||
INSERT INTO countries VALUES (37,'Burundi');
|
||||
INSERT INTO countries VALUES (38,'Cambodia');
|
||||
INSERT INTO countries VALUES (39,'Cameroon');
|
||||
INSERT INTO countries VALUES (4,'Afghanistan');
|
||||
INSERT INTO countries VALUES (40,'Cape Verde Islands');
|
||||
INSERT INTO countries VALUES (41,'Cayman Islands');
|
||||
INSERT INTO countries VALUES (42,'Central African Republic');
|
||||
INSERT INTO countries VALUES (43,'Chad');
|
||||
INSERT INTO countries VALUES (44,'Chile');
|
||||
INSERT INTO countries VALUES (45,'China');
|
||||
INSERT INTO countries VALUES (46,'Colombia');
|
||||
INSERT INTO countries VALUES (47,'Comoros');
|
||||
INSERT INTO countries VALUES (48,'Congo, Democratic Republic of th');
|
||||
INSERT INTO countries VALUES (49,'Congo, Republic of the');
|
||||
INSERT INTO countries VALUES (5,'Albania');
|
||||
INSERT INTO countries VALUES (50,'Cook Islands');
|
||||
INSERT INTO countries VALUES (51,'Costa Rica');
|
||||
INSERT INTO countries VALUES (52,'Cote d Ivoire (Ivory Coast)');
|
||||
INSERT INTO countries VALUES (53,'Croatia, Republic of');
|
||||
INSERT INTO countries VALUES (55,'Cyprus');
|
||||
INSERT INTO countries VALUES (56,'Czech Republic');
|
||||
INSERT INTO countries VALUES (57,'Denmark');
|
||||
INSERT INTO countries VALUES (58,'Djibouti');
|
||||
INSERT INTO countries VALUES (59,'Dominica');
|
||||
INSERT INTO countries VALUES (6,'Algeria');
|
||||
INSERT INTO countries VALUES (60,'Dominican Republic');
|
||||
INSERT INTO countries VALUES (61,'Ecuador');
|
||||
INSERT INTO countries VALUES (62,'Egypt');
|
||||
INSERT INTO countries VALUES (63,'El Salvador');
|
||||
INSERT INTO countries VALUES (64,'Equatorial Guinea');
|
||||
INSERT INTO countries VALUES (65,'Eritrea');
|
||||
INSERT INTO countries VALUES (66,'Estonia');
|
||||
INSERT INTO countries VALUES (67,'Ethiopia');
|
||||
INSERT INTO countries VALUES (68,'Falkland Islands (Islas Malvinas');
|
||||
INSERT INTO countries VALUES (69,'Fiji');
|
||||
INSERT INTO countries VALUES (7,'American Samoa');
|
||||
INSERT INTO countries VALUES (70,'Finland');
|
||||
INSERT INTO countries VALUES (71,'France');
|
||||
INSERT INTO countries VALUES (72,'French Guiana');
|
||||
INSERT INTO countries VALUES (73,'French Polynesia');
|
||||
INSERT INTO countries VALUES (74,'Gabon Republic');
|
||||
INSERT INTO countries VALUES (75,'Gambia');
|
||||
INSERT INTO countries VALUES (76,'Georgia');
|
||||
INSERT INTO countries VALUES (77,'Germany');
|
||||
INSERT INTO countries VALUES (78,'Ghana');
|
||||
INSERT INTO countries VALUES (79,'Gibraltar');
|
||||
INSERT INTO countries VALUES (8,'Andorra');
|
||||
INSERT INTO countries VALUES (80,'Greece');
|
||||
INSERT INTO countries VALUES (81,'Greenland');
|
||||
INSERT INTO countries VALUES (82,'Grenada');
|
||||
INSERT INTO countries VALUES (83,'Guadeloupe');
|
||||
INSERT INTO countries VALUES (84,'Guam');
|
||||
INSERT INTO countries VALUES (85,'Guatemala');
|
||||
INSERT INTO countries VALUES (86,'Guernsey');
|
||||
INSERT INTO countries VALUES (87,'Guinea');
|
||||
INSERT INTO countries VALUES (88,'Guinea-Bissau');
|
||||
INSERT INTO countries VALUES (89,'Guyana');
|
||||
INSERT INTO countries VALUES (9,'Angola');
|
||||
INSERT INTO countries VALUES (90,'Haiti');
|
||||
INSERT INTO countries VALUES (91,'Honduras');
|
||||
INSERT INTO countries VALUES (92,'Hong Kong');
|
||||
INSERT INTO countries VALUES (93,'Hungary');
|
||||
INSERT INTO countries VALUES (94,'Iceland');
|
||||
INSERT INTO countries VALUES (95,'India');
|
||||
INSERT INTO countries VALUES (96,'Indonesia');
|
||||
INSERT INTO countries VALUES (99,'Ireland');
|
||||
|
||||
#
|
||||
# Table structure for table 'factions'
|
||||
#
|
||||
|
||||
DROP table factions;
|
||||
CREATE TABLE factions (
|
||||
id varchar(6) NOT NULL default '',
|
||||
game int(11) NOT NULL default '0',
|
||||
email varchar(64) default NULL,
|
||||
banner text,
|
||||
vacation varchar(64) default NULL,
|
||||
password varchar(64) default NULL,
|
||||
name varchar(64) default NULL,
|
||||
user int(11) NOT NULL default '0',
|
||||
vacation_start date default NULL,
|
||||
race varchar(16) default NULL,
|
||||
locale varchar(10) default NULL,
|
||||
lastorders int(11) default NULL,
|
||||
PRIMARY KEY (id,game)
|
||||
) TYPE=MyISAM;
|
||||
|
||||
#
|
||||
# Dumping data for table 'factions'
|
||||
#
|
||||
|
||||
|
||||
#
|
||||
# Table structure for table 'games'
|
||||
#
|
||||
|
||||
drop table games;
|
||||
CREATE TABLE games (
|
||||
id int(11) NOT NULL auto_increment,
|
||||
name varchar(32) NOT NULL default '',
|
||||
info text,
|
||||
PRIMARY KEY (id)
|
||||
) TYPE=MyISAM;
|
||||
|
||||
#
|
||||
# Dumping data for table 'games'
|
||||
#
|
||||
|
||||
INSERT INTO games VALUES (1,'Vinyambar I','Vinyambar nach alten Regeln');
|
||||
INSERT INTO games VALUES (2,'Vinyambar II','Vinyambar nach neuen Regeln');
|
||||
|
||||
#
|
||||
# Table structure for table 'races'
|
||||
#
|
||||
|
||||
drop table races;
|
||||
CREATE TABLE races (
|
||||
locale varchar(10) NOT NULL default '',
|
||||
race varchar(10) NOT NULL default '',
|
||||
name varchar(20) default NULL
|
||||
) TYPE=MyISAM;
|
||||
|
||||
#
|
||||
# Dumping data for table 'races'
|
||||
#
|
||||
|
||||
INSERT INTO races VALUES ('de','GOBLIN','Goblins');
|
||||
INSERT INTO races VALUES ('de','DWARF','Zwerge');
|
||||
INSERT INTO races VALUES ('de','ELF','Elfen');
|
||||
INSERT INTO races VALUES ('de','HALFLING','Halblinge');
|
||||
INSERT INTO races VALUES ('de','INSECT','Insekten');
|
||||
INSERT INTO races VALUES ('de','AQUARIAN','Meermenschen');
|
||||
INSERT INTO races VALUES ('de','HUMAN','Menschen');
|
||||
INSERT INTO races VALUES ('de','CAT','Katzen');
|
||||
INSERT INTO races VALUES ('de','TROLL','Trolle');
|
||||
INSERT INTO races VALUES ('de','ORC','Orks');
|
||||
INSERT INTO races VALUES ('de','DEMON','Dämonen');
|
||||
|
||||
#
|
||||
# Table structure for table 'subscriptions'
|
||||
#
|
||||
|
||||
drop table subscriptions;
|
||||
CREATE TABLE subscriptions (
|
||||
game int(11) NOT NULL default '0',
|
||||
user int(11) NOT NULL default '0',
|
||||
credits int(11) NOT NULL default '0',
|
||||
race varchar(10) default NULL,
|
||||
id int(10) NOT NULL auto_increment,
|
||||
status varchar(10) NOT NULL default 'NEW',
|
||||
updated timestamp(14) NOT NULL,
|
||||
PRIMARY KEY (id)
|
||||
) TYPE=MyISAM;
|
||||
|
||||
|
||||
#
|
||||
# Table structure for table 'users'
|
||||
#
|
||||
|
||||
drop table users;
|
||||
CREATE TABLE users (
|
||||
id int(11) NOT NULL auto_increment,
|
||||
email varchar(64) default NULL,
|
||||
info text,
|
||||
address varchar(28) default NULL,
|
||||
city varchar(28) default NULL,
|
||||
country int(11) NOT NULL default '0',
|
||||
phone varchar(32) default NULL,
|
||||
firstname varchar(32) default NULL,
|
||||
lastname varchar(32) default NULL,
|
||||
password varchar(16) NOT NULL default '',
|
||||
updated timestamp(14) NOT NULL,
|
||||
PRIMARY KEY (id)
|
||||
) TYPE=MyISAM;
|
|
@ -0,0 +1,30 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
# duplicates.py
|
||||
# this script will find users that registered from the same IP,
|
||||
# where at least one of them is currenly ACTIVE.
|
||||
|
||||
import MySQLdb
|
||||
import sys
|
||||
|
||||
dbname=sys.argv[1]
|
||||
db = MySQLdb.connect(db=dbname)
|
||||
cursor = db.cursor()
|
||||
dupes = cursor.execute("select count(*) sum, ip from users,userips where users.id=userips.user and status!='EXPIRED' group by ip having sum>1")
|
||||
|
||||
while dupes:
|
||||
dupes=dupes-1
|
||||
sum, ip = cursor.fetchone()
|
||||
c = db.cursor()
|
||||
c.execute("select count(*) from users, userips where users.id=userips.user and status='CONFIRMED' and ip='"+ip+"'")
|
||||
(active,) = c.fetchone()
|
||||
if active:
|
||||
users = c.execute("select id, email, firstname, lastname, status from users, userips where userips.user=users.id and ip='"+ip+"'")
|
||||
if users:
|
||||
print ip
|
||||
while users:
|
||||
users=users-1
|
||||
uid, email, firstname, lastname, status = c.fetchone()
|
||||
print "\t"+str(int(uid)) +"("+status+")\t"+firstname+" "+lastname+" <"+email+">"
|
||||
print "\n"
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
import smtplib
|
||||
import time
|
||||
import sys
|
||||
import os
|
||||
import re
|
||||
import locking
|
||||
from locking import lock, unlock
|
||||
|
||||
From="accounts@vinyambar.de"
|
||||
|
||||
# lock the input file:
|
||||
lock(sys.argv[1]+'.err',180)
|
||||
|
||||
# move input file then unlock it:
|
||||
if os.access(sys.argv[1]+'.err', os.F_OK)==0:
|
||||
unlock(sys.argv[1]+'.err')
|
||||
sys.exit();
|
||||
|
||||
try:
|
||||
os.rename(sys.argv[1]+'.err', sys.argv[1]+'.tmp')
|
||||
finally:
|
||||
unlock(sys.argv[1]+'.err')
|
||||
|
||||
infile=open(sys.argv[1]+".tmp", "r")
|
||||
server=smtplib.SMTP('localhost')
|
||||
#server.set_debuglevel(1)
|
||||
|
||||
matchline=re.compile(
|
||||
r"""([^\s]+)\s*([^\n\r]+)*""",
|
||||
re.IGNORECASE | re.DOTALL | re.VERBOSE)
|
||||
|
||||
for line in infile.readlines():
|
||||
match=matchline.match(line)
|
||||
if match!=None:
|
||||
To = match.group(1)
|
||||
Reason = match.group(2)
|
||||
print "ERROR: "+To+": "+Reason
|
||||
Msg = ("From: "+From+"\nTo: "+To+"\nSubject: Vinyambar Anmeldung fehlgeschlagen.\n\n"
|
||||
+"Deine Anmeldung konnte aus folgendem Grund nicht akzeptiert werden:\n "+Reason+"\n")
|
||||
try:
|
||||
server.sendmail(From, To, Msg)
|
||||
except:
|
||||
print "Could not send Error to "+To
|
||||
print "Reason was: '"+Reason+"'"
|
||||
print "Exception is:", sys.exc_type, ":", sys.exc_value
|
||||
|
||||
os.unlink(sys.argv[1]+".tmp")
|
||||
infile.close()
|
||||
server.quit()
|
|
@ -0,0 +1,35 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
import MySQLdb
|
||||
import sys
|
||||
import string
|
||||
from whrandom import choice
|
||||
|
||||
dbname=sys.argv[1]
|
||||
maxnum=int(sys.argv[2])
|
||||
game_id=0 # eressea is game 0, tutorial is 1
|
||||
|
||||
def genpasswd():
|
||||
newpasswd=""
|
||||
chars = string.letters + string.digits
|
||||
for i in range(8):
|
||||
newpasswd = newpasswd + choice(chars)
|
||||
return newpasswd
|
||||
|
||||
query = "select distinct u.email, s.id, s.password, r.name, u.locale, s.bonus from users u, races r, subscriptions s left join userips i on u.id=i.user left join bannedips b on i.ip=b.ip where s.user=u.id and b.ip is NULL and s.status='CONFIRMED' and r.race=s.race and s.game="+str(game_id)+" and r.locale='de' order by s.id"
|
||||
db=MySQLdb.connect(db=dbname)
|
||||
cursor = db.cursor()
|
||||
c = db.cursor()
|
||||
num=cursor.execute(query)
|
||||
if num>maxnum:
|
||||
num=maxnum
|
||||
while num:
|
||||
num=num-1
|
||||
email, sid, password, race, locale, bonus = cursor.fetchone()
|
||||
if bonus==None:
|
||||
bonus=0
|
||||
if password==None:
|
||||
password=genpasswd()
|
||||
c.execute("UPDATE subscriptions set password='"+password+"' where id="+str(int(sid)))
|
||||
|
||||
print email+" "+race+" "+locale+" "+str(int(bonus))+" "+password
|
|
@ -0,0 +1,34 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
import time
|
||||
import os
|
||||
import stat
|
||||
|
||||
def trylock(file):
|
||||
try:
|
||||
os.symlink(file, file+'.lock')
|
||||
except OSError:
|
||||
return 1
|
||||
return 0
|
||||
|
||||
def lock(file, timeout=60):
|
||||
locked=1
|
||||
while locked:
|
||||
try:
|
||||
locked=0
|
||||
os.symlink(file, file+'.lock')
|
||||
except:
|
||||
update=os.stat(file+'.lock')[stat.ST_MTIME]
|
||||
now=time.time()
|
||||
if (now > update + timeout):
|
||||
locked=0
|
||||
print "removing stale lockfile "+file+".lock"
|
||||
os.unlink(file+'.lock')
|
||||
else:
|
||||
locked=1
|
||||
print "Waiting for lock on "+file+".lock"
|
||||
time.sleep(20)
|
||||
|
||||
def unlock(file):
|
||||
os.unlink(file+'.lock')
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
import MySQLdb
|
||||
import re
|
||||
import sys
|
||||
import smtplib
|
||||
|
||||
|
||||
dbname=sys.argv[1]
|
||||
template=sys.argv[2]
|
||||
sql=sys.argv[3]
|
||||
|
||||
server=smtplib.SMTP('localhost')
|
||||
db=MySQLdb.connect(db=dbname)
|
||||
From="accounts@vinyambar.de"
|
||||
|
||||
cursor=db.cursor()
|
||||
query=("select distinct users.id, users.email, users.firstname "+
|
||||
"from users, games, subscriptions "+
|
||||
"where users.id=subscriptions.user and subscriptions.game=games.id and "+
|
||||
sql)
|
||||
|
||||
users=cursor.execute(query)
|
||||
print "Sending confirmation to "+str(int(users))+" users"
|
||||
while users!=0:
|
||||
users=users-1
|
||||
entry=cursor.fetchone()
|
||||
custid=str(int(entry[0]))
|
||||
email=entry[1]
|
||||
firstname=entry[2]
|
||||
|
||||
infile=open(template,"r")
|
||||
line = infile.read()
|
||||
|
||||
line = re.sub('<CUSTID>', custid, line)
|
||||
line = re.sub('<FIRSTNAME>', firstname, line)
|
||||
# line = re.sub("<GAMENAME>", game, line)
|
||||
|
||||
Msg = ("From: "+From+"\nTo: "+email+"\n"+
|
||||
line)
|
||||
|
||||
try:
|
||||
server.sendmail(From, email, Msg)
|
||||
update=db.cursor()
|
||||
update.execute("UPDATE users set status='PENDING' WHERE id="+custid)
|
||||
print "Sent billing information to "+email
|
||||
|
||||
except:
|
||||
print "Could not inform "+To
|
||||
print "Reason was: '"+Reason+"'"
|
||||
print "Exception is:", sys.exc_type, ":", sys.exc_value
|
||||
|
||||
infile.close()
|
|
@ -0,0 +1,3 @@
|
|||
select s.id ID, s.faction Partei, s.race Rasse, s.status Status, g.name Spiel
|
||||
from subscriptions s, games g
|
||||
where s.user=0 and g.id=s.game;
|
|
@ -0,0 +1,157 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
import MySQLdb
|
||||
import sys
|
||||
import smtplib
|
||||
|
||||
From='accounts@vinyambar.de'
|
||||
#!/usr/bin/env python
|
||||
|
||||
import re
|
||||
import MySQLdb
|
||||
import sys
|
||||
|
||||
def pay(db, userid, email, cash, date, reason='PAYMENT'):
|
||||
cursor=db.cursor()
|
||||
locale="de"
|
||||
cursor.execute("UPDATE users SET status='PAYING' WHERE id="+str(userid));
|
||||
|
||||
cursor.execute('INSERT transactions (user, balance, description, date) VALUES ('+str(userid)+', '+str(cash)+', \''+reason+'\', \''+date+'\')')
|
||||
cursor.execute('SELECT LAST_INSERT_ID() FROM transactions WHERE user='+str(userid));
|
||||
lastid = int(cursor.fetchone()[0])
|
||||
result = cursor.execute('SELECT text FROM descriptions WHERE locale=\''+locale+'\' AND handle=\''+reason+'\'')
|
||||
if result!=0:
|
||||
reason = cursor.fetchone()[0]
|
||||
|
||||
i=cursor.execute('SELECT sum(balance) from transactions WHERE user='+str(userid))
|
||||
balance=cursor.fetchone()[0]
|
||||
if balance==None:
|
||||
balance=0.0
|
||||
Msg = ("From: Vinyambar Buchhaltung <"+From+">\nTo: "+email+"\nSubject: Vinyambar Zahlungseingang.\n\n"+
|
||||
"Kundennummer: "+str(userid)+"\n"+
|
||||
"Eingangsdatum: "+date+"\n"+
|
||||
"Transaktionsnummer: "+str(lastid)+"\n"+
|
||||
"Alter Kontostand: "+str(balance)+" EUR\n"+
|
||||
"Zahlungseingang: "+str(cash)+" EUR\n"+
|
||||
"Neuer Kontostand: "+str(balance+cash)+" EUR\n"+
|
||||
"Verwendungszweck: "+reason+"\n"+
|
||||
"\n"+
|
||||
"Deine Zahlung ist eingegangen und wurde auf dein Spielerkonto verbucht.\n")
|
||||
|
||||
try:
|
||||
server=smtplib.SMTP('localhost')
|
||||
server.sendmail(From, email, Msg)
|
||||
except:
|
||||
print "Could not send confirmation to "+email
|
||||
print "Exception is:", sys.exc_type, ":", sys.exc_value
|
||||
return
|
||||
|
||||
def charge(ids, balance, kto, blz, date):
|
||||
if len(ids):
|
||||
custids = []
|
||||
db=MySQLdb.connect(db=dbname)
|
||||
cursor = db.cursor()
|
||||
for custid in ids:
|
||||
k = cursor.execute('SELECT firstname, lastname FROM users WHERE id='+str(custid))
|
||||
if k:
|
||||
custids.append(custid)
|
||||
if len(custids)==1:
|
||||
k = cursor.execute('SELECT balance from transactions where USER='+str(custid)+" and description='PAYMENT' and date='"+date+"'")
|
||||
if k:
|
||||
print "user already had a transaction today, not adding it for safety reasons"
|
||||
else:
|
||||
cursor.execute('SELECT email FROM users WHERE users.id='+str(custid))
|
||||
email = cursor.fetchone()[0]
|
||||
pay(db, custid, email, balance, date)
|
||||
return 0
|
||||
else:
|
||||
print "zero or more than one possible customerid found:", custids
|
||||
return -1
|
||||
|
||||
def eumel(dbname):
|
||||
balance=None
|
||||
kto=None
|
||||
blz=None
|
||||
date=None
|
||||
zweck=[]
|
||||
ids = []
|
||||
rv=0
|
||||
for line in sys.stdin.readlines():
|
||||
match=re.match('Buchung/Wert.* / ([0-9][0-9][0-9][0-9])([0-9][0-9])([0-9][0-9]).*H (.*),(.*) EUR', line)
|
||||
if match!=None:
|
||||
if (balance!=None):
|
||||
r = charge(ids, balance, kto, blz, date)
|
||||
if r!=0:
|
||||
print "FAILED", balance, kto, blz, date, zweck
|
||||
rv=r
|
||||
balance=None
|
||||
kto=None
|
||||
blz=None
|
||||
date=None
|
||||
ids = []
|
||||
date=match.groups()[0]+'-'+match.groups()[1]+'-'+match.groups()[2]
|
||||
balance=float(match.groups()[3]+'.'+match.groups()[4])
|
||||
continue
|
||||
match=re.match(' KTO/BLZ\s*([0-9]*) / ([0-9]*)', line)
|
||||
if match!=None:
|
||||
kto, blz = match.groups()
|
||||
continue
|
||||
match=re.match(' VZweck [0-9] *(.*)', line)
|
||||
if match!=None:
|
||||
zweck.append(line)
|
||||
line=match.groups()[0]
|
||||
while len(line):
|
||||
match = re.match('(.*[^ ]) +(.+)', line)
|
||||
if (match!=None):
|
||||
line, value = match.groups()
|
||||
else:
|
||||
value = line
|
||||
line=''
|
||||
try:
|
||||
custid = int(value)
|
||||
ids.append(custid)
|
||||
except ValueError:
|
||||
continue
|
||||
if (balance):
|
||||
r = charge(ids, balance, kto, blz, date)
|
||||
if r!=0:
|
||||
print "FAILED", balance, kto, blz, date, zweck
|
||||
rv=r
|
||||
return rv
|
||||
|
||||
def manual(dbname):
|
||||
userid=sys.argv[2]
|
||||
|
||||
db=MySQLdb.connect(db=dbname)
|
||||
cursor=db.cursor()
|
||||
|
||||
i=cursor.execute('SELECT email, firstname, lastname FROM users, transactions WHERE users.id='+str(userid))
|
||||
if i==0:
|
||||
print "Unknown user "+str(userid)
|
||||
sys.exit()
|
||||
|
||||
email, firstname, lastname = cursor.fetchone()
|
||||
i=cursor.execute('SELECT sum(balance) from transactions WHERE user='+str(userid))
|
||||
balance=cursor.fetchone()[0]
|
||||
if balance==None:
|
||||
balance=0.0
|
||||
|
||||
print 'Balance for '+firstname+' '+lastname+' is '+str(balance)+' EUR'
|
||||
|
||||
if len(sys.argv)>4:
|
||||
cash=float(sys.argv[3])
|
||||
date=sys.argv[4]
|
||||
reason='PAYMENT'
|
||||
if len(sys.argv)>5:
|
||||
reason=sys.argv[5]
|
||||
|
||||
pay(db, int(userid), email, cash, date, reason)
|
||||
print 'New balance is '+str(balance+cash)+' EUR'
|
||||
return
|
||||
|
||||
dbname=sys.argv[1]
|
||||
if sys.argv[2]=='--eumel':
|
||||
r = eumel(dbname)
|
||||
sys.exit(r)
|
||||
else:
|
||||
manual(dbname)
|
|
@ -0,0 +1 @@
|
|||
and users.balance=0 and users.status='PENDING'
|
|
@ -0,0 +1,10 @@
|
|||
select races.name Rasse, count(*) Anmeldungen
|
||||
from races, subscriptions, users
|
||||
where races.race=subscriptions.race and subscriptions.user=users.id
|
||||
group by races.race;
|
||||
|
||||
select games.name Spiel, count(*) Anmeldungen
|
||||
from games, subscriptions, users
|
||||
where subscriptions.game=games.id and subscriptions.user=users.id
|
||||
group by game;
|
||||
|
|
@ -0,0 +1,140 @@
|
|||
#!/usr/bin/python
|
||||
## This script is called when an email from the user arrives
|
||||
## in reply to the registration form's confirmation email.
|
||||
## It's the first time the user is added to the database.
|
||||
|
||||
import MySQLdb
|
||||
import sys
|
||||
import re
|
||||
import string
|
||||
from whrandom import choice
|
||||
|
||||
import locking
|
||||
from locking import lock, unlock
|
||||
|
||||
dbname=sys.argv[2]
|
||||
db=MySQLdb.connect(db=dbname)
|
||||
|
||||
lock(sys.argv[1]+".err")
|
||||
errors=open(sys.argv[1]+".err", 'a')
|
||||
|
||||
def validrace(race):
|
||||
validraces=('GOBLIN', 'DWARF', 'ELF', 'HALFLING', 'INSECT', 'AQUARIAN', 'HUMAN', 'CAT', 'TROLL', 'ORC', 'DEMON')
|
||||
name = string.upper(str(race))
|
||||
if name in validraces:
|
||||
return name
|
||||
return None
|
||||
|
||||
def genpasswd():
|
||||
newpasswd=""
|
||||
chars = string.letters + string.digits
|
||||
for i in range(8):
|
||||
newpasswd = newpasswd + choice(chars)
|
||||
return newpasswd
|
||||
|
||||
def error(email, message):
|
||||
errors.write(email + " "+ message+"\n");
|
||||
|
||||
matchfrom=re.compile(
|
||||
r"""From ([^\s]*)""",
|
||||
re.IGNORECASE | re.DOTALL | re.VERBOSE)
|
||||
|
||||
matchfirstname=re.compile(
|
||||
r""".*vorname:\s*([^\n\r]*)""",
|
||||
re.IGNORECASE | re.DOTALL | re.VERBOSE)
|
||||
firstname=None
|
||||
|
||||
matchlastname=re.compile(
|
||||
r""".*nachname:\s*([^\n\r]*)\s*""",
|
||||
re.IGNORECASE | re.DOTALL | re.VERBOSE)
|
||||
lastname=None
|
||||
|
||||
matchemail=re.compile(
|
||||
r""".*email:\s*([^\n\r]*)\s*""",
|
||||
re.IGNORECASE | re.DOTALL | re.VERBOSE)
|
||||
email=None
|
||||
|
||||
matchaddress=re.compile(
|
||||
r""".*adresse:\s*([^\n\r]*)\s*""",
|
||||
re.IGNORECASE | re.DOTALL | re.VERBOSE)
|
||||
address=None
|
||||
|
||||
matchcity=re.compile(
|
||||
r""".*ort:\s*([^\n\r]*)\s*""",
|
||||
re.IGNORECASE | re.DOTALL | re.VERBOSE)
|
||||
city=None
|
||||
|
||||
matchcountry=re.compile(
|
||||
r""".*land:\s*([^\n\r]*)""",
|
||||
re.IGNORECASE | re.DOTALL | re.VERBOSE)
|
||||
country=None
|
||||
|
||||
matchphone=re.compile(
|
||||
r""".*telefon:\s*([^\n\r]*)\s*""",
|
||||
re.IGNORECASE | re.DOTALL | re.VERBOSE)
|
||||
phone=None
|
||||
|
||||
for line in sys.stdin.readlines():
|
||||
match=matchfrom.match(line)
|
||||
if (match!=None):
|
||||
email=match.group(1)
|
||||
continue
|
||||
|
||||
match=matchfirstname.match(line)
|
||||
if (match!=None):
|
||||
firstname=match.group(1)
|
||||
continue
|
||||
match=matchlastname.match(line)
|
||||
if (match!=None):
|
||||
lastname=match.group(1)
|
||||
continue
|
||||
match=matchemail.match(line)
|
||||
if (match!=None):
|
||||
email=match.group(1)
|
||||
continue
|
||||
match=matchaddress.match(line)
|
||||
if (match!=None):
|
||||
address=match.group(1)
|
||||
continue
|
||||
match=matchcity.match(line)
|
||||
if (match!=None):
|
||||
city=match.group(1)
|
||||
continue
|
||||
match=matchcountry.match(line)
|
||||
if (match!=None):
|
||||
country=match.group(1)
|
||||
continue
|
||||
match=matchphone.match(line)
|
||||
if (match!=None):
|
||||
phone=match.group(1)
|
||||
continue
|
||||
|
||||
if email==None:
|
||||
error("enno@eressea.upb.de",
|
||||
"Es wurde keine Emailadresse angegeben: "+firstname+" "+lastname)
|
||||
elif (firstname==None):
|
||||
error(email, "Es wurde kein Vorname angegeben")
|
||||
elif (lastname==None):
|
||||
error(email, "Es wurde kein Nachname angegeben")
|
||||
elif (address==None):
|
||||
error(email, "Es wurde keine Adresse angegeben")
|
||||
elif (city==None):
|
||||
error(email, "Es wurde kein Wohnort angegeben")
|
||||
elif (country==None):
|
||||
error(email, "Es wurde kein Land angegeben")
|
||||
else:
|
||||
if (phone==None):
|
||||
phone = "NULL"
|
||||
|
||||
cursor=db.cursor()
|
||||
cursor.execute("INSERT INTO users (firstname, lastname, email, address, city, phone, country, password) "+
|
||||
"VALUES ('"+firstname+"', '"+lastname+"', '"+email+"', '"+address+"', '"+city+"', '"+phone+"', "+country+", '"+genpasswd()+"')")
|
||||
|
||||
cursor.execute("SELECT LAST_INSERT_ID() from dual")
|
||||
userid=str(int(cursor.fetchone()[0]))
|
||||
|
||||
cursor.execute("INSERT INTO subscriptions (user, game, status) "+
|
||||
"VALUES ("+str(userid)+", 3, 'WAITING')")
|
||||
|
||||
errors.close()
|
||||
unlock(sys.argv[1]+".err")
|
|
@ -0,0 +1,52 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
import MySQLdb
|
||||
import re
|
||||
import sys
|
||||
import smtplib
|
||||
|
||||
|
||||
dbname=sys.argv[1]
|
||||
template=sys.argv[2]
|
||||
state=sys.argv[3]
|
||||
tostate=sys.argv[3]
|
||||
|
||||
server=smtplib.SMTP('localhost')
|
||||
db=MySQLdb.connect(db=dbname)
|
||||
From="accounts@vinyambar.de"
|
||||
|
||||
cursor=db.cursor()
|
||||
query=("select users.id, users.email, users.firstname "+
|
||||
"from users, games, subscriptions "+
|
||||
"where users.id=subscriptions.user and subscriptions.game=games.id and "+
|
||||
"users.balance=0 and users.status='"+state+"'")
|
||||
|
||||
users=cursor.execute(query)
|
||||
print "Sending confirmation to "+str(int(users))+" users"
|
||||
while users!=0:
|
||||
users=users-1
|
||||
custid, email, firstname =cursor.fetchone()
|
||||
|
||||
infile=open(template,"r")
|
||||
line = infile.read()
|
||||
|
||||
line = re.sub('<CUSTID>', custid, line)
|
||||
line = re.sub('<FIRSTNAME>', firstname, line)
|
||||
line = re.sub("<GAMENAME>", game, line)
|
||||
|
||||
Msg = ("From: "+From+"\nTo: "+email+"\n"+
|
||||
"Subject: Vinyambar Kontoinformationen.\n\n"+
|
||||
line)
|
||||
|
||||
try:
|
||||
server.sendmail(From, email, Msg)
|
||||
update=db.cursor()
|
||||
update.execute("UPDATE users set status='"+tostate+"' WHERE id="+custid)
|
||||
print "Sent '"+template+"' information to "+email
|
||||
|
||||
except:
|
||||
print "Could not inform "+To
|
||||
print "Reason was: '"+Reason+"'"
|
||||
print "Exception is:", sys.exc_type, ":", sys.exc_value
|
||||
|
||||
infile.close()
|
|
@ -0,0 +1,44 @@
|
|||
#!/bin/sh
|
||||
|
||||
# produces a lot of status information about vinyambar.
|
||||
|
||||
if [ $# -gt 0 ]; then
|
||||
db="$1"
|
||||
else
|
||||
db="vinyambar"
|
||||
fi
|
||||
echo "Vinyambar I"
|
||||
echo
|
||||
mysql --table $db -e "source subscriptions-1.sql"
|
||||
echo
|
||||
echo
|
||||
|
||||
echo "Vinyambar II"
|
||||
echo
|
||||
mysql --table $db -e "source subscriptions-2.sql"
|
||||
echo
|
||||
echo
|
||||
|
||||
echo "Rassenverteilung"
|
||||
echo
|
||||
mysql --table $db -e "source races.sql"
|
||||
echo
|
||||
echo
|
||||
|
||||
echo "Ausgemusterte Parteien"
|
||||
echo
|
||||
mysql --table $db -e "source noowner.sql"
|
||||
echo
|
||||
echo
|
||||
|
||||
echo "Überweisung erforderlich"
|
||||
echo
|
||||
mysql --table $db -e "source unpaid.sql"
|
||||
echo
|
||||
echo
|
||||
|
||||
echo "Parteienverteilung"
|
||||
echo
|
||||
mysql --table $db -e "source summary.sql"
|
||||
echo
|
||||
echo
|
|
@ -0,0 +1,7 @@
|
|||
select users.id, left(concat(firstname,' ',lastname, ' <',email,'>'),43) Name, subscriptions.faction Partei, races.name Rasse
|
||||
from users, games, subscriptions, races
|
||||
where subscriptions.user=users.id
|
||||
and games.id=subscriptions.game
|
||||
and subscriptions.race=races.race
|
||||
and games.id=1 and subscriptions.status='ACTIVE'
|
||||
order by subscriptions.id;
|
|
@ -0,0 +1,7 @@
|
|||
select users.id, left(concat(firstname,' ',lastname, ' <',email,'>'),43) Name, subscriptions.faction Partei, races.name Rasse
|
||||
from users, games, subscriptions, races
|
||||
where subscriptions.user=users.id
|
||||
and games.id=subscriptions.game
|
||||
and subscriptions.race=races.race
|
||||
and games.id=2 and subscriptions.status='ACTIVE'
|
||||
order by subscriptions.id;
|
|
@ -0,0 +1,6 @@
|
|||
select count(users.status) Anzahl, subscriptions.status Status, games.name Spiel
|
||||
from users, games, subscriptions
|
||||
where games.id = subscriptions.game
|
||||
and users.id = subscriptions.user
|
||||
group by games.name, subscriptions.status
|
||||
order by subscriptions.game;
|
|
@ -0,0 +1,14 @@
|
|||
import MySQLdb;
|
||||
db=MySQLdb.connect(db='vinyambar');
|
||||
c=db.cursor()
|
||||
users=c.execute('select id from users')
|
||||
while users>0:
|
||||
users=users-1
|
||||
c2=db.cursor()
|
||||
user=c.fetchone()[0]
|
||||
a=c2.execute('select id from transactions where user='+str(int(user)))
|
||||
if a>0:
|
||||
c2.execute("update users set status='PAYING' where id="+str(int(user)))
|
||||
else:
|
||||
c2.execute("update users set status='CONFIRMED' where id="+str(int(user)))
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
select distinct u.id ID, concat(s.game, '/', s.faction) Partei, left(concat(firstname,' ',lastname, ' <',email,'>'),43) Name, sum(t.balance) Kontostand
|
||||
from users u, transactions t, subscriptions s
|
||||
where u.id=t.user and u.id=s.user
|
||||
and s.status='ACTIVE'
|
||||
GROUP BY s.faction
|
||||
HAVING Kontostand<5;
|
|
@ -0,0 +1,6 @@
|
|||
select users.id, users.email, users.firstname, users.lastname, users.email, games.name, races.name
|
||||
from users, games, subscriptions, races
|
||||
where subscriptions.user=users.id
|
||||
and games.id=subscriptions.game
|
||||
and subscriptions.race=races.race
|
||||
order by games.id;
|
|
@ -0,0 +1,128 @@
|
|||
#!/usr/bin/env python
|
||||
import sys
|
||||
import curses
|
||||
import MySQLdb
|
||||
|
||||
Footer = "Vinyambar Informationssystem"
|
||||
locale = "de"
|
||||
dbname = sys.argv[1]
|
||||
db = MySQLdb.connect(db=dbname)
|
||||
customers = {}
|
||||
custid = 0
|
||||
stdscr = curses.initscr()
|
||||
height, width = stdscr.getmaxyx()
|
||||
custinfo = stdscr.subwin(10, width, 0, 0)
|
||||
custdetail = stdscr.subwin(10, width, 10, 0)
|
||||
|
||||
def refresh_customers():
|
||||
cursor=db.cursor()
|
||||
count=cursor.execute('SELECT id, firstname, lastname FROM users')
|
||||
while count>0:
|
||||
count=count-1
|
||||
cid, firstname, lastname = cursor.fetchone()
|
||||
customers[cid] = (firstname, lastname)
|
||||
|
||||
def show_detail():
|
||||
line = 1
|
||||
custdetail.erase()
|
||||
custdetail.border()
|
||||
custdetail.addstr(0, 2, "[ Kontoinformationen ]", curses.A_BOLD)
|
||||
cursor=db.cursor()
|
||||
count = cursor.execute('SELECT games.name, subscriptions.status, races.name FROM games, subscriptions, races WHERE subscriptions.user='+str(custid)+' and subscriptions.race=races.race and races.locale="'+locale+'" and subscriptions.game=games.id')
|
||||
while count>0:
|
||||
count = count-1
|
||||
game, status, race = cursor.fetchone()
|
||||
custdetail.addstr(line, 2, game+' - '+race+' - '+status)
|
||||
line=line+1
|
||||
count = cursor.execute('SELECT balance, description, date FROM transactions WHERE user='+str(custid))
|
||||
line=line+1
|
||||
while count>0:
|
||||
count = count-1
|
||||
balance, description, date = cursor.fetchone()
|
||||
custdetail.addstr(line, 2, str(date)[0:10]+' - '+description+' - '+str(balance)+' EUR')
|
||||
line=line+1
|
||||
custdetail.refresh()
|
||||
|
||||
def show_customer():
|
||||
cursor=db.cursor()
|
||||
custinfo.erase()
|
||||
custinfo.border()
|
||||
custinfo.addstr(0, 2, "[ Kundendaten ]", curses.A_BOLD)
|
||||
custinfo.addstr(1, 2, 'Kundennummer: '+str(custid))
|
||||
show_detail()
|
||||
count = cursor.execute('SELECT firstname, lastname, email, address, city, countries.name, phone, info, password, status FROM users, countries WHERE countries.id=users.country AND users.id='+str(custid))
|
||||
if (count!=0):
|
||||
firstname, lastname, email, addr, city, ccode, phone, info, passwd, status = cursor.fetchone()
|
||||
custinfo.addstr(2, 2, 'Name: '+firstname+' '+lastname)
|
||||
custinfo.addstr(3, 2, 'Address: '+addr)
|
||||
custinfo.addstr(4, 2, ' '+city+', '+ccode)
|
||||
custinfo.addstr(5, 2, 'Phone: '+phone)
|
||||
custinfo.addstr(6, 2, 'Password: '+passwd)
|
||||
if info!=None: custinfo.addstr(8, 2, str(info))
|
||||
custinfo.refresh()
|
||||
|
||||
def search():
|
||||
global Footer, custid
|
||||
stdscr.addstr(height-1, 0, '/')
|
||||
stdscr.clrtoeol()
|
||||
curses.echo()
|
||||
s = stdscr.getstr()
|
||||
curses.noecho()
|
||||
refresh_customers()
|
||||
try:
|
||||
custid = int(s)
|
||||
except:
|
||||
curses.beep()
|
||||
Footer='Customer #'+s+' was not found'
|
||||
|
||||
if customers.has_key(custid):
|
||||
show_customer()
|
||||
else:
|
||||
curses.beep()
|
||||
Footer='Customer #'+s+' was not found'
|
||||
|
||||
|
||||
def next_customer():
|
||||
global custid
|
||||
custid=custid+1
|
||||
show_customer()
|
||||
|
||||
def prev_customer():
|
||||
global custid
|
||||
if custid>0:
|
||||
custid=custid-1
|
||||
show_customer()
|
||||
|
||||
def main():
|
||||
global Footer
|
||||
branch = { 'q' : None, '/' : search, '+' : next_customer, '-' : prev_customer }
|
||||
while 1:
|
||||
stdscr.addstr(height-1, 0, Footer)
|
||||
stdscr.clrtoeol()
|
||||
stdscr.refresh()
|
||||
key=stdscr.getch()
|
||||
Footer=':'
|
||||
if (key<256) & (key>=0):
|
||||
c = chr(key)
|
||||
if branch.has_key(c):
|
||||
fun=branch[c]
|
||||
if (fun==None):
|
||||
break
|
||||
else:
|
||||
fun()
|
||||
else:
|
||||
Footer='Unknown keycode '+curses.keyname(key)
|
||||
curses.beep()
|
||||
|
||||
stdscr.keypad(1)
|
||||
curses.noecho()
|
||||
curses.cbreak()
|
||||
|
||||
try:
|
||||
show_customer()
|
||||
main()
|
||||
finally:
|
||||
stdscr.keypad(0)
|
||||
curses.echo()
|
||||
curses.nocbreak()
|
||||
curses.endwin()
|
|
@ -0,0 +1,663 @@
|
|||
# MySQL dump 8.13
|
||||
#
|
||||
# Host: localhost Database: vinyambar
|
||||
#--------------------------------------------------------
|
||||
# Server version 3.23.36-log
|
||||
|
||||
#
|
||||
# Table structure for table 'countries'
|
||||
#
|
||||
|
||||
CREATE TABLE countries (
|
||||
id int(11) NOT NULL default '0',
|
||||
name varchar(32) default NULL,
|
||||
PRIMARY KEY (id)
|
||||
) TYPE=MyISAM;
|
||||
|
||||
#
|
||||
# Dumping data for table 'countries'
|
||||
#
|
||||
|
||||
INSERT INTO countries VALUES (1,'United States');
|
||||
INSERT INTO countries VALUES (10,'Anguilla');
|
||||
INSERT INTO countries VALUES (100,'Israel');
|
||||
INSERT INTO countries VALUES (101,'Italy');
|
||||
INSERT INTO countries VALUES (102,'Jamaica');
|
||||
INSERT INTO countries VALUES (103,'Jan Mayen');
|
||||
INSERT INTO countries VALUES (104,'Japan');
|
||||
INSERT INTO countries VALUES (105,'Jersey');
|
||||
INSERT INTO countries VALUES (106,'Jordan');
|
||||
INSERT INTO countries VALUES (107,'Kazakhstan');
|
||||
INSERT INTO countries VALUES (108,'Kenya Coast Republic');
|
||||
INSERT INTO countries VALUES (109,'Kiribati');
|
||||
INSERT INTO countries VALUES (11,'Antigua and Barbuda');
|
||||
INSERT INTO countries VALUES (111,'Korea, South');
|
||||
INSERT INTO countries VALUES (112,'Kuwait');
|
||||
INSERT INTO countries VALUES (113,'Kyrgyzstan');
|
||||
INSERT INTO countries VALUES (114,'Laos');
|
||||
INSERT INTO countries VALUES (115,'Latvia');
|
||||
INSERT INTO countries VALUES (116,'Lebanon');
|
||||
INSERT INTO countries VALUES (117,'Lesotho');
|
||||
INSERT INTO countries VALUES (118,'Liberia');
|
||||
INSERT INTO countries VALUES (12,'Argentina');
|
||||
INSERT INTO countries VALUES (120,'Liechtenstein');
|
||||
INSERT INTO countries VALUES (121,'Lithuania');
|
||||
INSERT INTO countries VALUES (122,'Luxembourg');
|
||||
INSERT INTO countries VALUES (123,'Macau');
|
||||
INSERT INTO countries VALUES (124,'Macedonia');
|
||||
INSERT INTO countries VALUES (125,'Madagascar');
|
||||
INSERT INTO countries VALUES (126,'Malawi');
|
||||
INSERT INTO countries VALUES (127,'Malaysia');
|
||||
INSERT INTO countries VALUES (128,'Maldives');
|
||||
INSERT INTO countries VALUES (129,'Mali');
|
||||
INSERT INTO countries VALUES (13,'Armenia');
|
||||
INSERT INTO countries VALUES (130,'Malta');
|
||||
INSERT INTO countries VALUES (131,'Marshall Islands');
|
||||
INSERT INTO countries VALUES (132,'Martinique');
|
||||
INSERT INTO countries VALUES (133,'Mauritania');
|
||||
INSERT INTO countries VALUES (134,'Mauritius');
|
||||
INSERT INTO countries VALUES (135,'Mayotte');
|
||||
INSERT INTO countries VALUES (136,'Mexico');
|
||||
INSERT INTO countries VALUES (137,'Moldova');
|
||||
INSERT INTO countries VALUES (138,'Monaco');
|
||||
INSERT INTO countries VALUES (139,'Mongolia');
|
||||
INSERT INTO countries VALUES (14,'Aruba');
|
||||
INSERT INTO countries VALUES (140,'Montserrat');
|
||||
INSERT INTO countries VALUES (141,'Morocco');
|
||||
INSERT INTO countries VALUES (142,'Mozambique');
|
||||
INSERT INTO countries VALUES (143,'Namibia');
|
||||
INSERT INTO countries VALUES (144,'Nauru');
|
||||
INSERT INTO countries VALUES (145,'Nepal');
|
||||
INSERT INTO countries VALUES (146,'Netherlands');
|
||||
INSERT INTO countries VALUES (147,'Netherlands Antilles');
|
||||
INSERT INTO countries VALUES (148,'New Caledonia');
|
||||
INSERT INTO countries VALUES (149,'New Zealand');
|
||||
INSERT INTO countries VALUES (15,'Australia');
|
||||
INSERT INTO countries VALUES (150,'Nicaragua');
|
||||
INSERT INTO countries VALUES (151,'Niger');
|
||||
INSERT INTO countries VALUES (152,'Nigeria');
|
||||
INSERT INTO countries VALUES (153,'Niue');
|
||||
INSERT INTO countries VALUES (154,'Norway');
|
||||
INSERT INTO countries VALUES (155,'Oman');
|
||||
INSERT INTO countries VALUES (156,'Pakistan');
|
||||
INSERT INTO countries VALUES (157,'Palau');
|
||||
INSERT INTO countries VALUES (158,'Panama');
|
||||
INSERT INTO countries VALUES (159,'Papua New Guinea');
|
||||
INSERT INTO countries VALUES (16,'Austria');
|
||||
INSERT INTO countries VALUES (160,'Paraguay');
|
||||
INSERT INTO countries VALUES (161,'Peru');
|
||||
INSERT INTO countries VALUES (162,'Philippines');
|
||||
INSERT INTO countries VALUES (163,'Poland');
|
||||
INSERT INTO countries VALUES (164,'Portugal');
|
||||
INSERT INTO countries VALUES (165,'Puerto Rico');
|
||||
INSERT INTO countries VALUES (166,'Qatar');
|
||||
INSERT INTO countries VALUES (167,'Romania');
|
||||
INSERT INTO countries VALUES (168,'Russian Federation');
|
||||
INSERT INTO countries VALUES (169,'Rwanda');
|
||||
INSERT INTO countries VALUES (17,'Azerbaijan Republic');
|
||||
INSERT INTO countries VALUES (170,'Saint Helena');
|
||||
INSERT INTO countries VALUES (171,'Saint Kitts-Nevis');
|
||||
INSERT INTO countries VALUES (172,'Saint Lucia');
|
||||
INSERT INTO countries VALUES (173,'Saint Pierre and Miquelon');
|
||||
INSERT INTO countries VALUES (174,'Saint Vincent and the Grenadines');
|
||||
INSERT INTO countries VALUES (175,'San Marino');
|
||||
INSERT INTO countries VALUES (176,'Saudi Arabia');
|
||||
INSERT INTO countries VALUES (177,'Senegal');
|
||||
INSERT INTO countries VALUES (178,'Seychelles');
|
||||
INSERT INTO countries VALUES (179,'Sierra Leone');
|
||||
INSERT INTO countries VALUES (18,'Bahamas');
|
||||
INSERT INTO countries VALUES (180,'Singapore');
|
||||
INSERT INTO countries VALUES (181,'Slovakia');
|
||||
INSERT INTO countries VALUES (182,'Slovenia');
|
||||
INSERT INTO countries VALUES (183,'Solomon Islands');
|
||||
INSERT INTO countries VALUES (184,'Somalia');
|
||||
INSERT INTO countries VALUES (185,'South Africa');
|
||||
INSERT INTO countries VALUES (186,'Spain');
|
||||
INSERT INTO countries VALUES (187,'Sri Lanka');
|
||||
INSERT INTO countries VALUES (188,'Sudan');
|
||||
INSERT INTO countries VALUES (189,'Suriname');
|
||||
INSERT INTO countries VALUES (19,'Bahrain');
|
||||
INSERT INTO countries VALUES (190,'Svalbard');
|
||||
INSERT INTO countries VALUES (191,'Swaziland');
|
||||
INSERT INTO countries VALUES (192,'Sweden');
|
||||
INSERT INTO countries VALUES (193,'Switzerland');
|
||||
INSERT INTO countries VALUES (194,'Syria');
|
||||
INSERT INTO countries VALUES (195,'Tahiti');
|
||||
INSERT INTO countries VALUES (196,'Taiwan');
|
||||
INSERT INTO countries VALUES (197,'Tajikistan');
|
||||
INSERT INTO countries VALUES (198,'Tanzania');
|
||||
INSERT INTO countries VALUES (199,'Thailand');
|
||||
INSERT INTO countries VALUES (2,'Canada');
|
||||
INSERT INTO countries VALUES (20,'Bangladesh');
|
||||
INSERT INTO countries VALUES (200,'Togo');
|
||||
INSERT INTO countries VALUES (201,'Tonga');
|
||||
INSERT INTO countries VALUES (202,'Trinidad and Tobago');
|
||||
INSERT INTO countries VALUES (203,'Tunisia');
|
||||
INSERT INTO countries VALUES (204,'Turkey');
|
||||
INSERT INTO countries VALUES (205,'Turkmenistan');
|
||||
INSERT INTO countries VALUES (206,'Turks and Caicos Islands');
|
||||
INSERT INTO countries VALUES (207,'Tuvalu');
|
||||
INSERT INTO countries VALUES (208,'Uganda');
|
||||
INSERT INTO countries VALUES (209,'Ukraine');
|
||||
INSERT INTO countries VALUES (21,'Barbados');
|
||||
INSERT INTO countries VALUES (210,'United Arab Emirates');
|
||||
INSERT INTO countries VALUES (211,'Uruguay');
|
||||
INSERT INTO countries VALUES (212,'Uzbekistan');
|
||||
INSERT INTO countries VALUES (213,'Vanuatu');
|
||||
INSERT INTO countries VALUES (214,'Vatican City State');
|
||||
INSERT INTO countries VALUES (215,'Venezuela');
|
||||
INSERT INTO countries VALUES (216,'Vietnam');
|
||||
INSERT INTO countries VALUES (217,'Virgin Islands (U.S.)');
|
||||
INSERT INTO countries VALUES (218,'Wallis and Futuna');
|
||||
INSERT INTO countries VALUES (219,'Western Sahara');
|
||||
INSERT INTO countries VALUES (22,'Belarus');
|
||||
INSERT INTO countries VALUES (220,'Western Samoa');
|
||||
INSERT INTO countries VALUES (221,'Yemen');
|
||||
INSERT INTO countries VALUES (222,'Yugoslavia');
|
||||
INSERT INTO countries VALUES (223,'Zambia');
|
||||
INSERT INTO countries VALUES (224,'Zimbabwe</SELECT>');
|
||||
INSERT INTO countries VALUES (225,'APO/FPO');
|
||||
INSERT INTO countries VALUES (226,'Micronesia');
|
||||
INSERT INTO countries VALUES (23,'Belgium');
|
||||
INSERT INTO countries VALUES (24,'Belize');
|
||||
INSERT INTO countries VALUES (25,'Benin');
|
||||
INSERT INTO countries VALUES (26,'Bermuda');
|
||||
INSERT INTO countries VALUES (27,'Bhutan');
|
||||
INSERT INTO countries VALUES (28,'Bolivia');
|
||||
INSERT INTO countries VALUES (29,'Bosnia and Herzegovina');
|
||||
INSERT INTO countries VALUES (3,'United Kingdom');
|
||||
INSERT INTO countries VALUES (30,'Botswana');
|
||||
INSERT INTO countries VALUES (31,'Brazil');
|
||||
INSERT INTO countries VALUES (32,'British Virgin Islands');
|
||||
INSERT INTO countries VALUES (33,'Brunei Darussalam');
|
||||
INSERT INTO countries VALUES (34,'Bulgaria');
|
||||
INSERT INTO countries VALUES (35,'Burkina Faso');
|
||||
INSERT INTO countries VALUES (36,'Burma');
|
||||
INSERT INTO countries VALUES (37,'Burundi');
|
||||
INSERT INTO countries VALUES (38,'Cambodia');
|
||||
INSERT INTO countries VALUES (39,'Cameroon');
|
||||
INSERT INTO countries VALUES (4,'Afghanistan');
|
||||
INSERT INTO countries VALUES (40,'Cape Verde Islands');
|
||||
INSERT INTO countries VALUES (41,'Cayman Islands');
|
||||
INSERT INTO countries VALUES (42,'Central African Republic');
|
||||
INSERT INTO countries VALUES (43,'Chad');
|
||||
INSERT INTO countries VALUES (44,'Chile');
|
||||
INSERT INTO countries VALUES (45,'China');
|
||||
INSERT INTO countries VALUES (46,'Colombia');
|
||||
INSERT INTO countries VALUES (47,'Comoros');
|
||||
INSERT INTO countries VALUES (48,'Congo, Democratic Republic of th');
|
||||
INSERT INTO countries VALUES (49,'Congo, Republic of the');
|
||||
INSERT INTO countries VALUES (5,'Albania');
|
||||
INSERT INTO countries VALUES (50,'Cook Islands');
|
||||
INSERT INTO countries VALUES (51,'Costa Rica');
|
||||
INSERT INTO countries VALUES (52,'Cote d Ivoire (Ivory Coast)');
|
||||
INSERT INTO countries VALUES (53,'Croatia, Republic of');
|
||||
INSERT INTO countries VALUES (55,'Cyprus');
|
||||
INSERT INTO countries VALUES (56,'Czech Republic');
|
||||
INSERT INTO countries VALUES (57,'Denmark');
|
||||
INSERT INTO countries VALUES (58,'Djibouti');
|
||||
INSERT INTO countries VALUES (59,'Dominica');
|
||||
INSERT INTO countries VALUES (6,'Algeria');
|
||||
INSERT INTO countries VALUES (60,'Dominican Republic');
|
||||
INSERT INTO countries VALUES (61,'Ecuador');
|
||||
INSERT INTO countries VALUES (62,'Egypt');
|
||||
INSERT INTO countries VALUES (63,'El Salvador');
|
||||
INSERT INTO countries VALUES (64,'Equatorial Guinea');
|
||||
INSERT INTO countries VALUES (65,'Eritrea');
|
||||
INSERT INTO countries VALUES (66,'Estonia');
|
||||
INSERT INTO countries VALUES (67,'Ethiopia');
|
||||
INSERT INTO countries VALUES (68,'Falkland Islands (Islas Malvinas');
|
||||
INSERT INTO countries VALUES (69,'Fiji');
|
||||
INSERT INTO countries VALUES (7,'American Samoa');
|
||||
INSERT INTO countries VALUES (70,'Finland');
|
||||
INSERT INTO countries VALUES (71,'France');
|
||||
INSERT INTO countries VALUES (72,'French Guiana');
|
||||
INSERT INTO countries VALUES (73,'French Polynesia');
|
||||
INSERT INTO countries VALUES (74,'Gabon Republic');
|
||||
INSERT INTO countries VALUES (75,'Gambia');
|
||||
INSERT INTO countries VALUES (76,'Georgia');
|
||||
INSERT INTO countries VALUES (77,'Germany');
|
||||
INSERT INTO countries VALUES (78,'Ghana');
|
||||
INSERT INTO countries VALUES (79,'Gibraltar');
|
||||
INSERT INTO countries VALUES (8,'Andorra');
|
||||
INSERT INTO countries VALUES (80,'Greece');
|
||||
INSERT INTO countries VALUES (81,'Greenland');
|
||||
INSERT INTO countries VALUES (82,'Grenada');
|
||||
INSERT INTO countries VALUES (83,'Guadeloupe');
|
||||
INSERT INTO countries VALUES (84,'Guam');
|
||||
INSERT INTO countries VALUES (85,'Guatemala');
|
||||
INSERT INTO countries VALUES (86,'Guernsey');
|
||||
INSERT INTO countries VALUES (87,'Guinea');
|
||||
INSERT INTO countries VALUES (88,'Guinea-Bissau');
|
||||
INSERT INTO countries VALUES (89,'Guyana');
|
||||
INSERT INTO countries VALUES (9,'Angola');
|
||||
INSERT INTO countries VALUES (90,'Haiti');
|
||||
INSERT INTO countries VALUES (91,'Honduras');
|
||||
INSERT INTO countries VALUES (92,'Hong Kong');
|
||||
INSERT INTO countries VALUES (93,'Hungary');
|
||||
INSERT INTO countries VALUES (94,'Iceland');
|
||||
INSERT INTO countries VALUES (95,'India');
|
||||
INSERT INTO countries VALUES (96,'Indonesia');
|
||||
INSERT INTO countries VALUES (99,'Ireland');
|
||||
|
||||
#
|
||||
# Table structure for table 'dual'
|
||||
#
|
||||
|
||||
CREATE TABLE dual (
|
||||
dual char(1) default NULL
|
||||
) TYPE=MyISAM;
|
||||
|
||||
#
|
||||
# Dumping data for table 'dual'
|
||||
#
|
||||
|
||||
INSERT INTO dual VALUES ('0');
|
||||
|
||||
#
|
||||
# Table structure for table 'factions'
|
||||
#
|
||||
|
||||
CREATE TABLE factions (
|
||||
id varchar(6) NOT NULL default '',
|
||||
game int(11) NOT NULL default '0',
|
||||
email varchar(64) default NULL,
|
||||
banner text,
|
||||
vacation varchar(64) default NULL,
|
||||
password varchar(64) default NULL,
|
||||
name varchar(64) default NULL,
|
||||
user int(11) NOT NULL default '0',
|
||||
vacation_start date default NULL,
|
||||
race varchar(16) default NULL,
|
||||
locale varchar(10) default NULL,
|
||||
lastorders int(11) default NULL,
|
||||
PRIMARY KEY (id,game)
|
||||
) TYPE=MyISAM;
|
||||
|
||||
#
|
||||
# Dumping data for table 'factions'
|
||||
#
|
||||
|
||||
|
||||
#
|
||||
# Table structure for table 'games'
|
||||
#
|
||||
|
||||
CREATE TABLE games (
|
||||
id int(11) NOT NULL auto_increment,
|
||||
name varchar(32) NOT NULL default '',
|
||||
info text,
|
||||
PRIMARY KEY (id)
|
||||
) TYPE=MyISAM;
|
||||
|
||||
#
|
||||
# Dumping data for table 'games'
|
||||
#
|
||||
|
||||
INSERT INTO games VALUES (1,'Vinyambar I','Vinyambar nach alten Regeln');
|
||||
INSERT INTO games VALUES (2,'Vinyambar II','Vinyambar nach neuen Regeln');
|
||||
INSERT INTO games VALUES (3,'Warteliste','Interessenten für neue Regeln');
|
||||
|
||||
#
|
||||
# Table structure for table 'races'
|
||||
#
|
||||
|
||||
CREATE TABLE races (
|
||||
locale varchar(10) NOT NULL default '',
|
||||
race varchar(10) NOT NULL default '',
|
||||
name varchar(20) default NULL
|
||||
) TYPE=MyISAM;
|
||||
|
||||
#
|
||||
# Dumping data for table 'races'
|
||||
#
|
||||
|
||||
INSERT INTO races VALUES ('de','GOBLIN','Goblins');
|
||||
INSERT INTO races VALUES ('de','DWARF','Zwerge');
|
||||
INSERT INTO races VALUES ('de','ELF','Elfen');
|
||||
INSERT INTO races VALUES ('de','HALFLING','Halblinge');
|
||||
INSERT INTO races VALUES ('de','INSECT','Insekten');
|
||||
INSERT INTO races VALUES ('de','AQUARIAN','Meermenschen');
|
||||
INSERT INTO races VALUES ('de','HUMAN','Menschen');
|
||||
INSERT INTO races VALUES ('de','CAT','Katzen');
|
||||
INSERT INTO races VALUES ('de','TROLL','Trolle');
|
||||
INSERT INTO races VALUES ('de','ORC','Orks');
|
||||
INSERT INTO races VALUES ('de','DEMON','Dämonen');
|
||||
|
||||
#
|
||||
# Table structure for table 'subscriptions'
|
||||
#
|
||||
|
||||
CREATE TABLE subscriptions (
|
||||
game int(11) NOT NULL default '0',
|
||||
user int(11) NOT NULL default '0',
|
||||
race varchar(10) default NULL,
|
||||
id int(10) NOT NULL auto_increment,
|
||||
status varchar(10) NOT NULL default 'NEW',
|
||||
updated timestamp(14) NOT NULL,
|
||||
credits int(11) NOT NULL default '0',
|
||||
PRIMARY KEY (id)
|
||||
) TYPE=MyISAM;
|
||||
|
||||
#
|
||||
# Dumping data for table 'subscriptions'
|
||||
#
|
||||
|
||||
INSERT INTO subscriptions VALUES (1,4,'ELF',4,'CONFIRMED',20011106230004,0);
|
||||
INSERT INTO subscriptions VALUES (1,2,'HUMAN',2,'CONFIRMED',20011106224055,0);
|
||||
INSERT INTO subscriptions VALUES (1,3,'DWARF',3,'CONFIRMED',20011106224055,0);
|
||||
INSERT INTO subscriptions VALUES (1,5,'HALFLING',5,'CONFIRMED',20011106230004,0);
|
||||
INSERT INTO subscriptions VALUES (1,6,'DWARF',6,'CONFIRMED',20011106231004,0);
|
||||
INSERT INTO subscriptions VALUES (1,7,'ELF',7,'CONFIRMED',20011106231504,0);
|
||||
INSERT INTO subscriptions VALUES (1,8,'TROLL',8,'CONFIRMED',20011106232003,0);
|
||||
INSERT INTO subscriptions VALUES (1,9,'DWARF',9,'CONFIRMED',20011106233004,0);
|
||||
INSERT INTO subscriptions VALUES (1,10,'ELF',10,'CONFIRMED',20011106233005,0);
|
||||
INSERT INTO subscriptions VALUES (1,11,'DWARF',11,'CONFIRMED',20011106233005,0);
|
||||
INSERT INTO subscriptions VALUES (2,12,'GOBLIN',12,'CONFIRMED',20011106233505,0);
|
||||
INSERT INTO subscriptions VALUES (1,68,'DWARF',78,'CONFIRMED',20011108215504,0);
|
||||
INSERT INTO subscriptions VALUES (2,67,'TROLL',77,'CONFIRMED',20011108201004,0);
|
||||
INSERT INTO subscriptions VALUES (1,14,'CAT',15,'CONFIRMED',20011107000503,0);
|
||||
INSERT INTO subscriptions VALUES (1,15,'ELF',16,'CONFIRMED',20011107002509,0);
|
||||
INSERT INTO subscriptions VALUES (2,15,'HALFLING',17,'CONFIRMED',20011107013618,0);
|
||||
INSERT INTO subscriptions VALUES (2,18,'AQUARIAN',18,'CONFIRMED',20011107085504,0);
|
||||
INSERT INTO subscriptions VALUES (1,19,'DEMON',19,'CONFIRMED',20011107085504,0);
|
||||
INSERT INTO subscriptions VALUES (2,19,'AQUARIAN',20,'CONFIRMED',20011107085504,0);
|
||||
INSERT INTO subscriptions VALUES (2,20,'ELF',21,'CONFIRMED',20011107085504,0);
|
||||
INSERT INTO subscriptions VALUES (2,21,'CAT',22,'CONFIRMED',20011111220350,0);
|
||||
INSERT INTO subscriptions VALUES (1,22,'HALFLING',23,'CONFIRMED',20011107095504,0);
|
||||
INSERT INTO subscriptions VALUES (2,23,'DEMON',24,'CONFIRMED',20011107105009,0);
|
||||
INSERT INTO subscriptions VALUES (2,24,'AQUARIAN',25,'CONFIRMED',20011107105504,0);
|
||||
INSERT INTO subscriptions VALUES (2,25,'DWARF',26,'CONFIRMED',20011107110503,0);
|
||||
INSERT INTO subscriptions VALUES (2,26,'AQUARIAN',27,'CONFIRMED',20011107114004,0);
|
||||
INSERT INTO subscriptions VALUES (1,27,'ELF',28,'CONFIRMED',20011107120503,0);
|
||||
INSERT INTO subscriptions VALUES (2,27,'CAT',29,'CONFIRMED',20011107120503,0);
|
||||
INSERT INTO subscriptions VALUES (1,28,'HUMAN',30,'CONFIRMED',20011107121506,0);
|
||||
INSERT INTO subscriptions VALUES (1,29,'AQUARIAN',31,'CONFIRMED',20011107122004,0);
|
||||
INSERT INTO subscriptions VALUES (2,29,'AQUARIAN',32,'CONFIRMED',20011107122004,0);
|
||||
INSERT INTO subscriptions VALUES (2,30,'HALFLING',33,'CONFIRMED',20011107123504,0);
|
||||
INSERT INTO subscriptions VALUES (1,31,'TROLL',34,'CONFIRMED',20011107135004,0);
|
||||
INSERT INTO subscriptions VALUES (2,32,'TROLL',35,'CONFIRMED',20011107143508,0);
|
||||
INSERT INTO subscriptions VALUES (2,33,'DEMON',36,'CONFIRMED',20011107152006,0);
|
||||
INSERT INTO subscriptions VALUES (2,34,'ELF',37,'CONFIRMED',20011107154504,0);
|
||||
INSERT INTO subscriptions VALUES (2,35,'DWARF',38,'CONFIRMED',20011107154504,0);
|
||||
INSERT INTO subscriptions VALUES (2,36,'AQUARIAN',39,'CONFIRMED',20011107160504,0);
|
||||
INSERT INTO subscriptions VALUES (2,37,'GOBLIN',40,'CONFIRMED',20011107161008,0);
|
||||
INSERT INTO subscriptions VALUES (2,38,'CAT',41,'CONFIRMED',20011107163023,0);
|
||||
INSERT INTO subscriptions VALUES (2,39,'HUMAN',42,'CONFIRMED',20011107164505,0);
|
||||
INSERT INTO subscriptions VALUES (2,40,'ORC',43,'CONFIRMED',20011107171004,0);
|
||||
INSERT INTO subscriptions VALUES (2,41,'DWARF',44,'CONFIRMED',20011107173004,0);
|
||||
INSERT INTO subscriptions VALUES (2,42,'DEMON',45,'CONFIRMED',20011107184004,0);
|
||||
INSERT INTO subscriptions VALUES (2,43,'INSECT',46,'CONFIRMED',20011107190504,0);
|
||||
INSERT INTO subscriptions VALUES (2,44,'AQUARIAN',47,'CONFIRMED',20011107200004,0);
|
||||
INSERT INTO subscriptions VALUES (1,45,'DWARF',48,'CONFIRMED',20011107201504,0);
|
||||
INSERT INTO subscriptions VALUES (2,45,'AQUARIAN',49,'CONFIRMED',20011107201504,0);
|
||||
INSERT INTO subscriptions VALUES (2,46,'INSECT',50,'CONFIRMED',20011107202504,0);
|
||||
INSERT INTO subscriptions VALUES (2,47,'CAT',51,'CONFIRMED',20011107203004,0);
|
||||
INSERT INTO subscriptions VALUES (1,48,'TROLL',52,'CONFIRMED',20011107203508,0);
|
||||
INSERT INTO subscriptions VALUES (2,48,'DWARF',53,'CONFIRMED',20011107203509,0);
|
||||
INSERT INTO subscriptions VALUES (1,49,'ELF',54,'CONFIRMED',20011107213503,0);
|
||||
INSERT INTO subscriptions VALUES (2,50,'HUMAN',55,'CONFIRMED',20011107222003,0);
|
||||
INSERT INTO subscriptions VALUES (2,51,'AQUARIAN',56,'CONFIRMED',20011107223504,0);
|
||||
INSERT INTO subscriptions VALUES (1,52,'TROLL',57,'CONFIRMED',20011107223504,0);
|
||||
INSERT INTO subscriptions VALUES (2,52,'HUMAN',58,'CONFIRMED',20011107223504,0);
|
||||
INSERT INTO subscriptions VALUES (1,53,'HUMAN',59,'CONFIRMED',20011107223504,0);
|
||||
INSERT INTO subscriptions VALUES (2,53,'HUMAN',60,'CONFIRMED',20011107223505,0);
|
||||
INSERT INTO subscriptions VALUES (1,54,'DWARF',61,'CONFIRMED',20011107234505,0);
|
||||
INSERT INTO subscriptions VALUES (1,55,'HUMAN',62,'CONFIRMED',20011108001003,0);
|
||||
INSERT INTO subscriptions VALUES (2,56,'TROLL',63,'CONFIRMED',20011108023507,0);
|
||||
INSERT INTO subscriptions VALUES (1,57,'AQUARIAN',64,'CONFIRMED',20011108095504,0);
|
||||
INSERT INTO subscriptions VALUES (2,58,'HUMAN',65,'CONFIRMED',20011108124503,0);
|
||||
INSERT INTO subscriptions VALUES (2,59,'DWARF',66,'CONFIRMED',20011108153006,0);
|
||||
INSERT INTO subscriptions VALUES (2,60,'DWARF',67,'CONFIRMED',20011108154504,0);
|
||||
INSERT INTO subscriptions VALUES (2,61,'INSECT',68,'CONFIRMED',20011108165505,0);
|
||||
INSERT INTO subscriptions VALUES (1,62,'HALFLING',69,'CONFIRMED',20011108183504,0);
|
||||
INSERT INTO subscriptions VALUES (2,62,'ELF',70,'CONFIRMED',20011108183504,0);
|
||||
INSERT INTO subscriptions VALUES (1,63,'DEMON',71,'CONFIRMED',20011108183504,0);
|
||||
INSERT INTO subscriptions VALUES (2,63,'ELF',72,'CONFIRMED',20011108183504,0);
|
||||
INSERT INTO subscriptions VALUES (1,64,'INSECT',73,'CONFIRMED',20011108185004,0);
|
||||
INSERT INTO subscriptions VALUES (2,65,'DWARF',74,'CONFIRMED',20011108192503,0);
|
||||
INSERT INTO subscriptions VALUES (1,66,'DWARF',75,'CONFIRMED',20011108195504,0);
|
||||
INSERT INTO subscriptions VALUES (2,66,'ELF',76,'CONFIRMED',20011108195505,0);
|
||||
INSERT INTO subscriptions VALUES (2,69,'INSECT',79,'CONFIRMED',20011108220003,0);
|
||||
INSERT INTO subscriptions VALUES (2,70,'HALFLING',80,'CONFIRMED',20011108222503,0);
|
||||
INSERT INTO subscriptions VALUES (1,71,'DWARF',81,'CONFIRMED',20011108224013,0);
|
||||
INSERT INTO subscriptions VALUES (1,72,'GOBLIN',82,'CONFIRMED',20011108224503,0);
|
||||
INSERT INTO subscriptions VALUES (2,72,'DWARF',83,'CONFIRMED',20011108224503,0);
|
||||
INSERT INTO subscriptions VALUES (1,73,'TROLL',84,'CONFIRMED',20011108225004,0);
|
||||
INSERT INTO subscriptions VALUES (1,74,'HUMAN',85,'CONFIRMED',20011109070003,0);
|
||||
INSERT INTO subscriptions VALUES (2,74,'HUMAN',86,'CONFIRMED',20011109070004,0);
|
||||
INSERT INTO subscriptions VALUES (2,75,'DWARF',87,'CONFIRMED',20011109094004,0);
|
||||
INSERT INTO subscriptions VALUES (2,76,'ELF',88,'CONFIRMED',20011109094504,0);
|
||||
INSERT INTO subscriptions VALUES (1,77,'ELF',89,'CONFIRMED',20011109094504,0);
|
||||
INSERT INTO subscriptions VALUES (2,78,'DWARF',90,'CONFIRMED',20011109103504,0);
|
||||
INSERT INTO subscriptions VALUES (2,79,'ORC',91,'CONFIRMED',20011109105004,0);
|
||||
INSERT INTO subscriptions VALUES (2,80,'DEMON',92,'CONFIRMED',20011109121504,0);
|
||||
INSERT INTO subscriptions VALUES (2,81,'INSECT',93,'CONFIRMED',20011109131003,0);
|
||||
INSERT INTO subscriptions VALUES (2,82,'DEMON',94,'CONFIRMED',20011109144004,0);
|
||||
INSERT INTO subscriptions VALUES (2,83,'CAT',95,'CONFIRMED',20011109145004,0);
|
||||
INSERT INTO subscriptions VALUES (2,84,'AQUARIAN',96,'CONFIRMED',20011109190003,0);
|
||||
INSERT INTO subscriptions VALUES (2,85,'GOBLIN',97,'CONFIRMED',20011109210506,0);
|
||||
INSERT INTO subscriptions VALUES (1,86,'GOBLIN',98,'CONFIRMED',20011109215004,0);
|
||||
INSERT INTO subscriptions VALUES (2,87,'ELF',99,'CONFIRMED',20011110115504,0);
|
||||
INSERT INTO subscriptions VALUES (2,88,'AQUARIAN',100,'CONFIRMED',20011110121004,0);
|
||||
INSERT INTO subscriptions VALUES (2,89,'TROLL',101,'CONFIRMED',20011110130504,0);
|
||||
INSERT INTO subscriptions VALUES (1,90,'DWARF',102,'CONFIRMED',20011110142021,0);
|
||||
INSERT INTO subscriptions VALUES (2,90,'DWARF',103,'CONFIRMED',20011110142021,0);
|
||||
INSERT INTO subscriptions VALUES (2,91,'AQUARIAN',104,'CONFIRMED',20011110142504,0);
|
||||
INSERT INTO subscriptions VALUES (1,93,'GOBLIN',106,'CONFIRMED',20011110152005,0);
|
||||
INSERT INTO subscriptions VALUES (1,94,'HALFLING',107,'CONFIRMED',20011110152005,0);
|
||||
INSERT INTO subscriptions VALUES (2,95,'HALFLING',108,'CONFIRMED',20011110155005,0);
|
||||
INSERT INTO subscriptions VALUES (2,96,'ELF',109,'CONFIRMED',20011110160003,0);
|
||||
INSERT INTO subscriptions VALUES (1,97,'DEMON',110,'CONFIRMED',20011110180504,0);
|
||||
INSERT INTO subscriptions VALUES (2,97,'HALFLING',111,'CONFIRMED',20011110180504,0);
|
||||
INSERT INTO subscriptions VALUES (1,98,'ORC',112,'CONFIRMED',20011110190508,0);
|
||||
INSERT INTO subscriptions VALUES (2,99,'AQUARIAN',113,'CONFIRMED',20011110201003,0);
|
||||
INSERT INTO subscriptions VALUES (1,100,'ELF',114,'CONFIRMED',20011110202005,0);
|
||||
INSERT INTO subscriptions VALUES (2,101,'HUMAN',115,'CONFIRMED',20011110204505,0);
|
||||
INSERT INTO subscriptions VALUES (2,102,'DEMON',116,'CONFIRMED',20011111111504,0);
|
||||
INSERT INTO subscriptions VALUES (2,103,'DWARF',117,'CONFIRMED',20011111113004,0);
|
||||
INSERT INTO subscriptions VALUES (1,104,'ELF',118,'CONFIRMED',20011111140003,0);
|
||||
INSERT INTO subscriptions VALUES (1,105,'TROLL',119,'CONFIRMED',20011111141504,0);
|
||||
INSERT INTO subscriptions VALUES (2,106,'DEMON',120,'CONFIRMED',20011111144505,0);
|
||||
INSERT INTO subscriptions VALUES (2,107,'ELF',121,'CONFIRMED',20011111161507,0);
|
||||
INSERT INTO subscriptions VALUES (2,108,'AQUARIAN',122,'CONFIRMED',20011111162004,0);
|
||||
INSERT INTO subscriptions VALUES (2,109,'INSECT',123,'CONFIRMED',20011111163004,0);
|
||||
INSERT INTO subscriptions VALUES (1,110,'INSECT',124,'CONFIRMED',20011111164510,0);
|
||||
INSERT INTO subscriptions VALUES (1,111,'HALFLING',125,'CONFIRMED',20011111185004,0);
|
||||
INSERT INTO subscriptions VALUES (2,111,'DEMON',126,'CONFIRMED',20011111185005,0);
|
||||
INSERT INTO subscriptions VALUES (2,112,'AQUARIAN',127,'CONFIRMED',20011111195004,0);
|
||||
INSERT INTO subscriptions VALUES (1,114,'ELF',129,'CONFIRMED',20011111202506,0);
|
||||
INSERT INTO subscriptions VALUES (2,115,'DWARF',130,'CONFIRMED',20011111214505,0);
|
||||
INSERT INTO subscriptions VALUES (1,116,'TROLL',131,'CONFIRMED',20011111225505,0);
|
||||
INSERT INTO subscriptions VALUES (2,116,'HALFLING',132,'CONFIRMED',20011111225506,0);
|
||||
INSERT INTO subscriptions VALUES (2,117,'DEMON',133,'CONFIRMED',20011112063020,0);
|
||||
INSERT INTO subscriptions VALUES (2,118,'TROLL',134,'CONFIRMED',20011112082005,0);
|
||||
INSERT INTO subscriptions VALUES (2,119,'HUMAN',135,'CONFIRMED',20011112101504,0);
|
||||
INSERT INTO subscriptions VALUES (2,120,'HUMAN',136,'CONFIRMED',20011112103004,0);
|
||||
INSERT INTO subscriptions VALUES (1,121,'AQUARIAN',137,'CONFIRMED',20011112103004,0);
|
||||
INSERT INTO subscriptions VALUES (2,121,'GOBLIN',138,'CONFIRMED',20011114122718,0);
|
||||
INSERT INTO subscriptions VALUES (2,122,'DWARF',139,'CONFIRMED',20011112103004,0);
|
||||
INSERT INTO subscriptions VALUES (1,123,'DEMON',140,'CONFIRMED',20011112121504,0);
|
||||
INSERT INTO subscriptions VALUES (2,124,'AQUARIAN',141,'CONFIRMED',20011112141504,0);
|
||||
INSERT INTO subscriptions VALUES (2,125,'INSECT',142,'CONFIRMED',20011112143003,0);
|
||||
INSERT INTO subscriptions VALUES (1,126,'INSECT',143,'CONFIRMED',20011112155004,0);
|
||||
INSERT INTO subscriptions VALUES (1,127,'HUMAN',144,'CONFIRMED',20011112170004,0);
|
||||
INSERT INTO subscriptions VALUES (2,128,'GOBLIN',145,'CONFIRMED',20011112172503,0);
|
||||
INSERT INTO subscriptions VALUES (2,129,'INSECT',146,'CONFIRMED',20011112184504,0);
|
||||
INSERT INTO subscriptions VALUES (1,130,'HALFLING',147,'CONFIRMED',20011112204505,0);
|
||||
INSERT INTO subscriptions VALUES (2,130,'ELF',148,'CONFIRMED',20011112204505,0);
|
||||
INSERT INTO subscriptions VALUES (2,131,'TROLL',149,'CONFIRMED',20011112225503,0);
|
||||
INSERT INTO subscriptions VALUES (1,132,'ELF',150,'CONFIRMED',20011113010003,0);
|
||||
INSERT INTO subscriptions VALUES (1,133,'ELF',151,'CONFIRMED',20011113013503,0);
|
||||
INSERT INTO subscriptions VALUES (2,134,'CAT',152,'CONFIRMED',20011113085504,0);
|
||||
INSERT INTO subscriptions VALUES (2,135,'ELF',153,'CONFIRMED',20011113145505,0);
|
||||
INSERT INTO subscriptions VALUES (1,136,'ELF',154,'CONFIRMED',20011113151504,0);
|
||||
INSERT INTO subscriptions VALUES (2,137,'GOBLIN',155,'CONFIRMED',20011113230507,0);
|
||||
INSERT INTO subscriptions VALUES (2,138,'DWARF',156,'CONFIRMED',20011114002504,0);
|
||||
INSERT INTO subscriptions VALUES (2,139,'GOBLIN',157,'CONFIRMED',20011114110503,0);
|
||||
INSERT INTO subscriptions VALUES (2,140,'DEMON',158,'CONFIRMED',20011114112004,0);
|
||||
INSERT INTO subscriptions VALUES (3,141,'DWARF',159,'WAITING',20011114162334,0);
|
||||
INSERT INTO subscriptions VALUES (1,142,'INSECT',160,'CONFIRMED',20011116222017,0);
|
||||
INSERT INTO subscriptions VALUES (3,143,'HALFLING',161,'WAITING',20011118204013,0);
|
||||
|
||||
#
|
||||
# Table structure for table 'users'
|
||||
#
|
||||
|
||||
CREATE TABLE users (
|
||||
id int(11) NOT NULL auto_increment,
|
||||
email varchar(64) default NULL,
|
||||
info text,
|
||||
address varchar(28) default NULL,
|
||||
city varchar(28) default NULL,
|
||||
country int(11) NOT NULL default '0',
|
||||
phone varchar(32) default NULL,
|
||||
firstname varchar(32) default NULL,
|
||||
lastname varchar(32) default NULL,
|
||||
password varchar(16) NOT NULL default '',
|
||||
updated timestamp(14) NOT NULL,
|
||||
PRIMARY KEY (id)
|
||||
) TYPE=MyISAM;
|
||||
|
||||
#
|
||||
# Dumping data for table 'users'
|
||||
#
|
||||
|
||||
INSERT INTO users VALUES (4,'stemu@netcologne.de',NULL,'Mendener Str. 9','51105 Kvln',77,'','Stephan','M|ller','MsR675tf',20011106225756);
|
||||
INSERT INTO users VALUES (2,'christianemmler@t-online.de',NULL,'Delmestrasse 55','27777 Ganderkesee',77,'04222-7951073','Christian','Emmler','awfUaLOw',20011106223256);
|
||||
INSERT INTO users VALUES (3,'R.Pusbatzkies@gmx.de',NULL,'Heideweg 6','03119 Welzow',77,'035751 12823','Rene','Pusbatzkies','4X2eRrsb',20011106224026);
|
||||
INSERT INTO users VALUES (5,'meirose@studst.fh-muenster.de',NULL,'Lange Strasse 11','27777 Ganderkesee',77,'','Nils','Meirose','gPG1Simr',20011106233417);
|
||||
INSERT INTO users VALUES (6,'alkas@t-online.de',NULL,'Emil-Barth-Str.99','Düsseldorf',77,'','Thomas','Volkmann','cwD7oD6H',20011106230847);
|
||||
INSERT INTO users VALUES (7,'rosenhaeger@planet-interkom.de',NULL,'Mühlenbrink 18','Detmold',77,'05231-628338','Dirk','Rosenhäger','OwSKnl97',20011106231428);
|
||||
INSERT INTO users VALUES (8,'sibbi@freenet.de',NULL,'Jägersberg 12','24103 Kiel',77,'0431552372','Christopher','Sievers','SachwIuS',20011106231808);
|
||||
INSERT INTO users VALUES (9,'michael-steil@t-online.de',NULL,'Im Langgarten 14 A','66687 Wadern',77,'06874/182022','Michael','Steil','r3OHgxAp',20011106232959);
|
||||
INSERT INTO users VALUES (10,'DMuenstermann@t-online.de',NULL,'Lärchenstr. 4','45892 Gelsenkirchen',77,'0209 799440','Denise','Münstermann','zcMn5FvU',20011106233000);
|
||||
INSERT INTO users VALUES (11,'dvaergynlaender@gmx.de',NULL,'Lärchenstr. 4','45892 Gelsenkirchen',77,'0209 799440','Dirk','Marquardt','ylW7nwOm',20011106233000);
|
||||
INSERT INTO users VALUES (12,'D.Axmacher@t-online.de',NULL,'Streuffstr. 46','Emmerich',77,'02828/92003','Daniel','Axmacher','wqpuZzMx',20011106233008);
|
||||
INSERT INTO users VALUES (67,'bigkas@newsfactory.net',NULL,'Lechfeldstr. 23b','86316 Friedberg',77,'0821 229 29 12 (ges)','Klaus','Borchert','li1v7r2m',20011108200859);
|
||||
INSERT INTO users VALUES (14,'cennaire@gmx.de',NULL,'Im Langgarten 14 A','66687 wadern',77,'','Sabine','Steil','MF6mH6ni',20011107000431);
|
||||
INSERT INTO users VALUES (15,'Aerisprojekt@web.de',NULL,'Sundgauer Str. 105R','Berlin',77,'','Immanuel','Völker','ugTXl7Pn',20011107002356);
|
||||
INSERT INTO users VALUES (20,'Schrat@t-online.de',NULL,'Wolfinstr. 10','77830 Bühlertal',77,'07223/991569','Jens','Schrader','o7uFqyKF',20011107085420);
|
||||
INSERT INTO users VALUES (19,'saressa@celtic-visions.net',NULL,'Geismar Landstr. 9','Göttingen',77,'0551 / 49569266','Thomas','Schmeja','SiocxqZh',20011107085410);
|
||||
INSERT INTO users VALUES (18,'Muescha@epost.de',NULL,'Saßnitzer Str. 4','Dresden',77,'','Michael','Sommer','0378RCOT',20011107085255);
|
||||
INSERT INTO users VALUES (21,'red@gmx.de',NULL,'Selchower Strasse 28','12049 Berlin',77,'','Mareike','Paluk','IcC3kQ7P',20011107093654);
|
||||
INSERT INTO users VALUES (22,'mirco-jabs@gmx.de',NULL,'Am Bollheister 54','47055 Duisburg',77,'','Mirco','Jabs','yREUOJd6',20011107095421);
|
||||
INSERT INTO users VALUES (23,'egonaut@web.de',NULL,'Cammannstraße 4','38118 Braunschweig',77,'','Karsten','Schulz','ZSLPdqYW',20011107104844);
|
||||
INSERT INTO users VALUES (24,'Santa_Cruz_@web.de',NULL,'Willy-Andreas-Allee 7','76131 Karlsruhe',77,'0178 - 4577630','Andreas','Kreuzer','xaC1vz69',20011107105426);
|
||||
INSERT INTO users VALUES (25,'vic@tzi.de',NULL,'Hahnenstr. 21','28309 Bremen',77,'','Victor','Wundersee','Mv7l3PAz',20011107110426);
|
||||
INSERT INTO users VALUES (26,'marcelkessels@web.de',NULL,'Bismarckstr. 51','41747 Viersen',77,'02162-574670','Marcel','Kessels','9XRr1bVY',20011107113517);
|
||||
INSERT INTO users VALUES (27,'elfpunkt@yahoo.de',NULL,'Kirchheimer Str. 18','69214 Eppelheim',77,'','Dietmar','Fischer','ifEeJPKV',20011107120408);
|
||||
INSERT INTO users VALUES (28,'ChiefMUC@gmx.net',NULL,'Josef-Frankl-Strasse 11B','80995 München',77,'','Oliver','Pappalardo','sQNeuVmz',20011107121008);
|
||||
INSERT INTO users VALUES (29,'rolf.schmidt@nefkom.net',NULL,'Krugstr 22','90419 Nürnberg',77,'0049 172 8249600','Rolf','Schmidt','pYhJ45ya',20011107121817);
|
||||
INSERT INTO users VALUES (30,'Gron-T.kar@gmx.de',NULL,'Hultroper Dorfstraße 19','59510 Lippetal-Hultrop',77,'02527/8362','Dominik','Gösken','6yMUcZE1',20011107123201);
|
||||
INSERT INTO users VALUES (31,'roland.engels@web.de',NULL,'17 Lutton Place','Edinburgh EH8 9PD',3,'0044-131-6681134','Roland','Engels','bJLkxYpZ',20011107134618);
|
||||
INSERT INTO users VALUES (32,'sahne@tzi.de',NULL,'Hinter dem Gartel 47','OHZ',77,'04791/899006','Daniel','Kühn','JVDBiaGt',20011107143430);
|
||||
INSERT INTO users VALUES (33,'michael@kamenz.de',NULL,'Kirchweg 4','01920 Wendischbaselitz',77,'+49 3578 305068','Michael','Möller','jIqBsV1p',20011107151554);
|
||||
INSERT INTO users VALUES (34,'wuestenkrieg@gmx.de',NULL,'Hauptstraße 9','02627 Breitendorf',77,'','Falk','Schneider','WJa1IAPy',20011107154137);
|
||||
INSERT INTO users VALUES (35,'Sven.Pietschmann@t-online.de',NULL,'Löbauer Str. 64','Beiersdorf',77,'','Sven','Pietschmann','YnryGAD7',20011107154155);
|
||||
INSERT INTO users VALUES (36,'520097125011-0001@t-online.de',NULL,'Nollinger Str. 42','79618 Rheinfelden',77,'0173/5215656','Uwe','Müller','AFPd86ap',20011107160339);
|
||||
INSERT INTO users VALUES (37,'Schifferb@web.de',NULL,'Pappelstr. 71b','28199 Bremen',77,'0173-5779873','Bernd','Schiffer','uTkG6ild',20011107160859);
|
||||
INSERT INTO users VALUES (38,'marten.kollakowski@t-online.de',NULL,'Carl-von-Ossietzky-Str. 3','29126 oldenburg',77,'0441/7779763','Marten','Kollakowski','ZYR9jY5e',20011107162558);
|
||||
INSERT INTO users VALUES (39,'Markus.Klawitter@web.de',NULL,'Hoeltyweg 15','49082 Osnabrueck',77,'','Markus','Klawitter','YlB8yB6R',20011107164020);
|
||||
INSERT INTO users VALUES (40,'cordesmartin@gmx.de',NULL,'Feldstrasse 79 a','Bremen',77,'0421 77412','Martin','Cordes','6tV8oqQf',20011107170659);
|
||||
INSERT INTO users VALUES (41,'marco.vitali@gmx.ch',NULL,'Buechstrasse 18','5445 Eggenwil',193,'++41-(0)56-6316989','Marco','Vitali','T8HSsnWd',20011107172612);
|
||||
INSERT INTO users VALUES (42,'moritzsalinger@web.de',NULL,'Obentrautstraße 64','10963 Berlin',77,'0173 97 95 701','Moritz','Salinger','GrfL4jon',20011107183554);
|
||||
INSERT INTO users VALUES (43,'christian@decomain.de',NULL,'Spiegelsbergenweg 104A','Halberstadt',77,'+49 179 2155992','Christian','Decomain','s1Fx40y3',20011107190221);
|
||||
INSERT INTO users VALUES (44,'ramona@schrepler.de',NULL,'Fritz-Frey-Str. 11','69121 Heidelberg',77,'06221-418010','Ramona','Schrepler','Lacn2Pyv',20011107195559);
|
||||
INSERT INTO users VALUES (45,'ARose@nwn.de',NULL,'Walsroder Str.4','28215 Bremen',77,'','Arne','Rose','PrIw8UyY',20011107201347);
|
||||
INSERT INTO users VALUES (46,'hbruhns@ix.urz.uni-heidelberg.de',NULL,'Fritz-Frey-Str. 11','69121 Heidelberg',77,'06221 418012','Hjalmar','Bruhns','zwpY7peL',20011107202024);
|
||||
INSERT INTO users VALUES (47,'osprung@gmx.de',NULL,'Meißener Str.9','44139 Dortmund',77,'','Oliver','Sprung','xiXDEu9Y',20011107202741);
|
||||
INSERT INTO users VALUES (48,'Fam.Spengler@t-online.de',NULL,'Irlenbornerstr. 14','53783 Eitorf',77,'02243 82178','Stephan','Spengler','okdq89vi',20011107203029);
|
||||
INSERT INTO users VALUES (49,'gerhard.hecht@deutschlandweb.de',NULL,'Lerchenweg 16','86492 Egling a.d.Paar',77,'08206 / 903178','Gerhard','Hecht','s4ilkbQb',20011107213252);
|
||||
INSERT INTO users VALUES (50,'Ralf.Hachmeister@t-online.de',NULL,'Georg-Viktor-Strasse 32','31812 Bad Pyrmont',77,'05281 960074','Ralf','Hachmeister','Rv5dJqqz',20011107221535);
|
||||
INSERT INTO users VALUES (51,'gwaylare@gmx.net',NULL,'Leinestr. 2','Göttingen',77,'','Christoph','Albrecht','4Gp89cDU',20011107223151);
|
||||
INSERT INTO users VALUES (52,'chennings@talknet.de',NULL,'Kämmerei 40','27749 Delmenhorst',77,'04221121222','Carsten','Hennings','HrPcHFQF',20011107223240);
|
||||
INSERT INTO users VALUES (53,'thorsten.bahr@onlinehome.de',NULL,'Harthauser Straße 76','83043 Bad Aibling',77,'','Thorsten','Bahr','NYD9v561',20011107223249);
|
||||
INSERT INTO users VALUES (54,'daniel@boiger.com',NULL,'Rechbergstraße 1','73240 Wendlingen',77,'','Daniel','Boiger','sj3ZmEZ6',20011107234225);
|
||||
INSERT INTO users VALUES (55,'alerich2@gmx.net',NULL,'Geschwister-Scholl 6','91058 Erlangen',77,'09131/129670','Ulrich','Hofrichter','xntFLV17',20011108000555);
|
||||
INSERT INTO users VALUES (56,'Seppel@prof-seppel.de',NULL,'Bayernallee 7','52066 Aachen',77,'','Sebastian','Oliva','fTDKrAhA',20011108023008);
|
||||
INSERT INTO users VALUES (57,'helge.hennings@klinik.uni-regensburg.de',NULL,'Placidusstr. 8','93053 Regensburg',77,'0941/7081875','Helge','Hennings','0saimmtE',20011108095242);
|
||||
INSERT INTO users VALUES (58,'andre.lerch@gmx.net',NULL,'Salgaer Str. 4','02694 Malschwitz',77,'','Andre','Lerch','npfnFzsF',20011108124045);
|
||||
INSERT INTO users VALUES (59,'Volk-von-Condor@web.de',NULL,'Nadistr. 20','80809 München',77,'08151/4442450 oder 089/3573261','Ralf','Jung','o7tYHQtu',20011114122937);
|
||||
INSERT INTO users VALUES (60,'raffa@tzi.de',NULL,'Bachstr. 81','28199 Bremen',77,'0421/393981','Raphael','Sturm','WfzzoBNb',20011108154052);
|
||||
INSERT INTO users VALUES (61,'moekon@snafu.de',NULL,'JansaStr. 9','12045 Berlin',77,'030 / 62 72 76 84','Thomas','Konnerth','ufKYGIAu',20011108165022);
|
||||
INSERT INTO users VALUES (62,'Morgon@Morgon.de',NULL,'Riegelstr. 58','63762 Großostheim',77,'06026/995153','Sebastian','Weigt','ehzZi6iz',20011108183027);
|
||||
INSERT INTO users VALUES (63,'Rupalairpel@gmx.de',NULL,'Thüringer Straße 12','63811 Stockstadt',77,'','Andreas','Müller','rS9gevGv',20011108183035);
|
||||
INSERT INTO users VALUES (64,'Oglbi@gmx.de',NULL,'Moritzstr.45','55130 Mainz',77,'','Alexander','Schoehl','6kv1s57y',20011108184527);
|
||||
INSERT INTO users VALUES (65,'Xolgrim@gmx.de',NULL,'Hugo-Haelschner-Str.2','53129 Bonn',77,'0228/234588','Thomas','Straßberger','r1qBy4Ot',20011108192159);
|
||||
INSERT INTO users VALUES (66,'paladin@bluemail.ch',NULL,'Alpenblickweg 17','3034 Uettligen',193,'','Matthias','Regli','KEbsf2EZ',20011108195229);
|
||||
INSERT INTO users VALUES (68,'gzech@t-online.de',NULL,'brendelweg 42','27755 Delmenhorst',77,'0422124921','Guido','Zech','FchaKiVy',20011108215045);
|
||||
INSERT INTO users VALUES (69,'stephan-heinrich@gmx.net',NULL,'Schnickenfeld 45a','25497 Prisdorf',77,'04101 782875','Stephan','Heinrich','CaYdwCs9',20011108215639);
|
||||
INSERT INTO users VALUES (70,'r.m.glade@talknet.de',NULL,'Finsterwalderstraße 39','01239 Dresden',77,'0172/9147817','Matthias','Glade','a6PSYqFH',20011108222348);
|
||||
INSERT INTO users VALUES (71,'vinyambar@waldgoettin.de',NULL,'Wehrweg 2','Kelkheim',77,'','Silvia','Tobies','VOgKOw9A',20011108223528);
|
||||
INSERT INTO users VALUES (72,'peter.kraus@web.de',NULL,'Heideweg 94','50196 Kerpen',77,'0227369610','Peter','Kraus','nSK0W8q4',20011108224148);
|
||||
INSERT INTO users VALUES (73,'cavendish@planet-interkom.de',NULL,'am gelskamp 16a','32758 detmold',77,'','michael','fisahn','2Z36XPjP',20011108224858);
|
||||
INSERT INTO users VALUES (74,'ralphknoll@web.de',NULL,'Neutann 1','88364 Wolfegg',77,'','Ralph','Knoll','lC1dRs9P',20011109065601);
|
||||
INSERT INTO users VALUES (75,'klaus@lottmann.de',NULL,'Neuenhainerstrasse 10','60326 Frankfurt',77,'01718596589','Klaus','Lottmann','EfW9d4rM',20011109093531);
|
||||
INSERT INTO users VALUES (76,'pampala@gmx.de',NULL,'Grenadierweg 15','26129 Oldenburg',77,'0441/2179804','Pan','Pollack','e9aCJ47w',20011109094120);
|
||||
INSERT INTO users VALUES (77,'p.biebow@web.de',NULL,'Friedrichstr. 72','68519 Viernheim',77,'0160 3241994','Peter','Biebow','6TIhSjM2',20011109094157);
|
||||
INSERT INTO users VALUES (78,'Wilhelm.Dolle@brainmedia.de',NULL,'Cappeler Strasse 21','35039 Marburg',77,'','Wilhelm','Dolle','fufuxstL',20011109103349);
|
||||
INSERT INTO users VALUES (79,'grrummpf@web.de',NULL,'Friedrichstr. 6','53757 Hangelar',77,'','Sebastian','Korte','xhBi2P64',20011109104641);
|
||||
INSERT INTO users VALUES (80,'genua@snafu.de',NULL,'Winsstr. 22','10405 Berlin',77,'+49 172 3219138','Steffen','Schermaul','DxC9C8JW',20011109121424);
|
||||
INSERT INTO users VALUES (81,'vinyambar@zigulle.de',NULL,'Sonnenstr. 232','44137 Dortmund',77,'','Daniel','Frickemeier','3GkZMurN',20011109130637);
|
||||
INSERT INTO users VALUES (82,'alexander.metzner@informatik.uni-oldenburg.de',NULL,'Ahornweg 4','26919 Brake',77,'','Alexander','Metzner','F9GVOC2A',20011109143916);
|
||||
INSERT INTO users VALUES (83,'Christian.Wachtendorf@Informatik.Uni-Oldenburg.DE',NULL,'Heiligengeistwall 10','26122 Oldenburg',77,'','Christian','Wachtendorf','Qs9xbr5P',20011109144906);
|
||||
INSERT INTO users VALUES (84,'mallig@gmx.net',NULL,'Im Laimacker 32','79249 Merzhausen',77,'','Nicolai','Mallig','CFCsxTiL',20011109185952);
|
||||
INSERT INTO users VALUES (85,'Carsten.Kaschube@web.de',NULL,'Sigmaringer Str. 52','72622 Nürtingen',77,'','Carsten','Kaschube','3IOR4tQx',20011109210108);
|
||||
INSERT INTO users VALUES (86,'thomas-peter.klug@debitel.net',NULL,'Alter heerweg 35','53123 Bonn',77,'','Thomas-Peter','Klug','LYSt6qXS',20011109214720);
|
||||
INSERT INTO users VALUES (87,'ahillenb@ix.urz.uni-heidelberg.de',NULL,'Albert-Überle-Str. 10','69120 Heidelberg',77,'06221 408995','Andreas','Hillenbach','LME6LSjq',20011110115209);
|
||||
INSERT INTO users VALUES (88,'Xarkor@gmx.net',NULL,'Howaldtstr. 18','24118 Kiel',77,'0431-6409852','Michael','Jabs','jh5buGu3',20011110120628);
|
||||
INSERT INTO users VALUES (89,'feibisch@estec.net',NULL,'Lutherstr. 84','07743 Jena',77,'03641/470096','Frank','Eibisch','KH1u5FEA',20011110130129);
|
||||
INSERT INTO users VALUES (90,'ottstadt@sevcon.de',NULL,'Hermann-Löns-Weg 11','22848 Norderstedt',77,'040-512086-12','Willy','Ottstadt','NdYUBNQs',20011110141811);
|
||||
INSERT INTO users VALUES (91,'Noilaht@web.de',NULL,'Ifteweg 6','58454 Witten',77,'','Thorsten','Engelbrecht','Hyyycvmt',20011110142138);
|
||||
INSERT INTO users VALUES (93,'arthurrefinius@web.de',NULL,'Stolberger Str. 68','Aachen',77,'','Arthur','Refinius','MX2xIKNZ',20011110151659);
|
||||
INSERT INTO users VALUES (94,'mina_murry@web.de',NULL,'Stolberger Str. 68','Aachen',77,'','Yvonne','Meis','lx5JAobE',20011110151718);
|
||||
INSERT INTO users VALUES (95,'Frank-Michael.Zimmer@T-Online.de',NULL,'Ulmenweg 11','25451 Quickborn',77,'04106 / 66297','Frank-Michael','Zimmer','2RvsbXJB',20011110154508);
|
||||
INSERT INTO users VALUES (96,'Holger.Gentemann@t-online.de',NULL,'Arminiusstr. 12','22525 Hamburg',77,'0408500103','Holger','Gentemann','2cWGhMhC',20011110155953);
|
||||
INSERT INTO users VALUES (97,'enno@eressea.upb.de',NULL,'Huk Aveny 5b','0287 Oslo',154,'','Enno','Rehling','stkxSiHQ',20011110180250);
|
||||
INSERT INTO users VALUES (98,'MJimBeam@aol.com',NULL,'Dresdener Ring 1','Hochheim',77,'','Michael','Simon','UzESKxUm',20011110190227);
|
||||
INSERT INTO users VALUES (99,'centime@in-trier.de',NULL,'Henneystr.11','54293 Trier',77,'','Carsten','Pfennig','yC43Eob3',20011110200752);
|
||||
INSERT INTO users VALUES (100,'stefan@siev.de',NULL,'Emil-von-Behring Str. 21','35041 Marburg',77,'','Stefan','Sievers','gWiiCQCZ',20011110201606);
|
||||
INSERT INTO users VALUES (101,'matthias.frost@cityweb.de',NULL,'Zweibachweg 7','45279 Essen',77,'01605035882','Matthias','Frost','QQ9wHAAu',20011110204447);
|
||||
INSERT INTO users VALUES (102,'gandalf@informatik.uni-bremen.de',NULL,'Dresdener Str. 1a','28844 Weyhe (bei Bremen)',77,'04203/810797','Cedrik','Duval','WDrEQTW2',20011111111333);
|
||||
INSERT INTO users VALUES (103,'aramesvs@t-online.de',NULL,'Hauptstraße 48','Herzberg',77,'05521 2809','Frank','Nolte','4Ydo3fTT',20011111112533);
|
||||
INSERT INTO users VALUES (104,'micha@lst.de',NULL,'Naegelsbacherstr. 49c','91052 Erlangen',77,'+49 9131 7192-325','Micha','Istine','kNgy9al3',20011111135542);
|
||||
INSERT INTO users VALUES (105,'nilshorstmann@web.de',NULL,'Schwalbenstr. 4','28816 Stuhr',77,'','Nils','Horstmann','1ppXJrWV',20011111141125);
|
||||
INSERT INTO users VALUES (106,'Feacor@web.de',NULL,'Nestorstr. 15','10709 Berlin',77,'','Daniel','Kohl','h48VSRLD',20011111144452);
|
||||
INSERT INTO users VALUES (107,'boris_schroeder@web.de',NULL,'Kriegerstr. 42','30161 Hannover',77,'05111693916','Boris','Schröder','d3LORqkj',20011111161143);
|
||||
INSERT INTO users VALUES (108,'ectorhga@linux.zrz.tu-berlin.de',NULL,'Nestorstr. 15','Berlin',77,'','Alexander','Sahm','vjdfhtOQ',20011111161623);
|
||||
INSERT INTO users VALUES (109,'520020001929-0001@T-Online.de',NULL,'Ascher Str. 22','63477 Maintal',77,'','Nick','Sauter','u8rzSQAq',20011111162902);
|
||||
INSERT INTO users VALUES (110,'joha_puck@web.de',NULL,'Kastanienstraße 13','24114 Kiel',77,'0431/6686648','Markus Johannes','Puck','ajWhzD34',20011111164353);
|
||||
INSERT INTO users VALUES (111,'meini@einsteinfreun.de',NULL,'Auf der Schulenburg 22','33378 Rheda',77,'','Sebastian','Meinhardt','NkFXheZM',20011111184904);
|
||||
INSERT INTO users VALUES (112,'Evewan@web.de',NULL,'Belßstraße 81','Berlin',77,'','Thomas','Leue','uxUiWIxE',20011111194928);
|
||||
INSERT INTO users VALUES (114,'paul.fuehring@gmx.net',NULL,'Müllerstr. 30','13353 Berlin',77,'','Paul','Führing','OK2sRkAr',20011111202214);
|
||||
INSERT INTO users VALUES (115,'Dragoon2913@t-online.de',NULL,'Winkelstr. 16','Herzberg',77,'','Mark','Szemeitat','FmYwtR0G',20011111214036);
|
||||
INSERT INTO users VALUES (116,'MMalte@directbox.com',NULL,'Hohenloherstr 39 A','70435 Stuttgart',77,'0173/5938300','Malte','Möller','mKrRMgqo',20011111225156);
|
||||
INSERT INTO users VALUES (117,'andreas.hallmann@gecits-eu.com',NULL,'Gröpelinger Heerstr. 301','28239 Bremen',77,'0421-6166311','Andreas','Hallmann','dPjRKZs2',20011112062521);
|
||||
INSERT INTO users VALUES (118,'vinyambar@zerofoks.net',NULL,'Taubenstraße 18','28203 Bremen',77,'0421 7940905','Ferdinand','Steiger','9zxMjWDp',20011112081725);
|
||||
INSERT INTO users VALUES (119,'gunty@talknet.de',NULL,'Nithackstr. 4','D-10585 Berlin',77,'(030) 347 02 758','Günther','Martinez Dreyer','vLN79XDJ',20011112101441);
|
||||
INSERT INTO users VALUES (120,'Karsten.Meier@stim.de',NULL,'Südekumzeile 7a','13591 Berlin',77,'','Karsten','Meier','tdP0FoVr',20011112102722);
|
||||
INSERT INTO users VALUES (121,'michael.tuscher@web.de',NULL,'Bussmannsfeld 109','44805 Bochum',77,'','Michael','Tuscher','eBJnJmsR',20011112102904);
|
||||
INSERT INTO users VALUES (122,'daniel@boiger.com',NULL,'Rechbergstr. 1','Wendlingen',77,'','Daniel','Boiger','znUOJmZ0',20011112102923);
|
||||
INSERT INTO users VALUES (123,'jb559755@rcs.urz.tu-dresden.de',NULL,'Gubener Str. 36','01237 Dresden',77,'0172/3515486','Jens','Bergmann','zxOoiau9',20011112121046);
|
||||
INSERT INTO users VALUES (124,'phelan@phelan-net.de',NULL,'Klaushager Weg 17','13467 Berlin',77,'','Rainer','Schüler','uDtnGTSE',20011112141432);
|
||||
INSERT INTO users VALUES (125,'Roger.Frehoff@t-online.de',NULL,'Bergheimer Weg 25','Gerlingen',77,'','Roger','Frehoff','FVv0gEJL',20011112142906);
|
||||
INSERT INTO users VALUES (126,'Alexander.Miseler@SilverStyle.de',NULL,'Weidenweg 47','10249 Berlin',77,'','Alexander','Miseler','OC6kYMIS',20011112154757);
|
||||
INSERT INTO users VALUES (127,'falen@freenet.de',NULL,'Hattingerstr.241','44795 Bochum',77,'','Torsten','Felske','CqrtmkIt',20011112165628);
|
||||
INSERT INTO users VALUES (128,'jb559755@rcs.urz.tu-dresden.de',NULL,'Gubener Str. 36','01237 Dresden',77,'0172/3515486','Jens','Bergmann','UINiqkC1',20011112172156);
|
||||
INSERT INTO users VALUES (129,'St.Ziegler@gmx.de',NULL,'Hirschgraben 24','Aachen',77,'','Stefan','Ziegler','nxQSXfF6',20011112184027);
|
||||
INSERT INTO users VALUES (130,'tach.uli@t-online.de',NULL,'Limbeckstr.1b','44894 Bochum',77,'0234/261526','Ulrich','Meise','pPFz3COy',20011112204010);
|
||||
INSERT INTO users VALUES (131,'cyrion_@web.de',NULL,'Bachstr. 81','28199 Bremen',77,'','Christian','Büthe','vwmvxxrH',20011112225303);
|
||||
INSERT INTO users VALUES (132,'torsten@steigner.de',NULL,'Alleestraße 4','66882 Huetschenhausen',77,'','Torsten','Steigner','eZxwKddw',20011113005654);
|
||||
INSERT INTO users VALUES (133,'esclarmunde@gmx.de',NULL,'Kastanienstr.13','24114 Kiel',77,'0431/6794667','Jörn','Gräbert','meXNQnPx',20011113013016);
|
||||
INSERT INTO users VALUES (134,'harryrat@gmx.de',NULL,'Kastanienweg 13','52074 Aachen',77,'0241-81806','Harald','Radke','Pbzjwagv',20011113085313);
|
||||
INSERT INTO users VALUES (135,'stefan@hoeffling.de',NULL,'Franziskanerstr. 1','56154 Boppard',77,'06742/82512','Stefan','Hoeffling','HLtorF5o',20011113145256);
|
||||
INSERT INTO users VALUES (136,'esclarmunde@gmx.de',NULL,'Kastanienstr.13','24114 Kiel',77,'0431/6794667','Jörn','Gräbert','0HmvpMSi',20011113151218);
|
||||
INSERT INTO users VALUES (137,'Frank.Adler@gmx.net',NULL,'Gertrudisweg 5','Euskirchen',77,'','Frank','Adler','6fWjD6Ib',20011113230300);
|
||||
INSERT INTO users VALUES (138,'jens.otte@gmxpro.de',NULL,'Am Suedhang 5','Glinde',77,'+494075665561','Jens','Otte','m7omFMzP',20011114002043);
|
||||
INSERT INTO users VALUES (139,'martin@hershoff.de',NULL,'Abtsbrede 47','33098 Paderborn',77,'','Martin','Hershoff','UTJXiCMw',20011114110237);
|
||||
INSERT INTO users VALUES (140,'n.werhahn@t-online.de',NULL,'kohlenweg 10','Baden Baden',76534,'01796972416','nils','werhahn','ZfBmZlMe',20011114111939);
|
||||
INSERT INTO users VALUES (141,'elvis@eressea-pbem.de',NULL,'Rockaway','Memphis',77,'','Elvis','The King','Z7VXtjiX',20011114162334);
|
||||
INSERT INTO users VALUES (142,'zdomotor@axelero.hu',NULL,'Liszt Ferenc 3','H-2045 Törökbálint',93,'0036 23 336 385','Zoltán','Dömötör','p57pnZGf',20011116221701);
|
||||
INSERT INTO users VALUES (143,'faber@kawo1.rwth-aachen.de',NULL,'Kastanienweg 4 / 2225','52074 Aachen',77,'0241/9810789','Michael','Ziegler','aDP4eoC0',20011118204013);
|
||||
|
|
@ -0,0 +1,86 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
#
|
||||
# reset the waiting list after ZAT.
|
||||
# before running this script, be sure to apply the patchfile generated by the eressea-server to
|
||||
# mark users with new accounts as ACTIVE.
|
||||
# * Will mark WAITING users as EXPIRED, removig them from the waitng list.
|
||||
# * Will mark CONFIRMED users as WAITING, and send them another mail.
|
||||
|
||||
import MySQLdb
|
||||
import string
|
||||
import re
|
||||
import sys
|
||||
import os
|
||||
import smtplib
|
||||
|
||||
dbname=sys.argv[1]
|
||||
date=sys.argv[2]
|
||||
From='accounts@eressea-pbem.de'
|
||||
smtpserver='localhost'
|
||||
server=smtplib.SMTP(smtpserver)
|
||||
patchdir='/home/eressea/eressea-rsync'
|
||||
game_id=0
|
||||
|
||||
db=MySQLdb.connect(db=dbname)
|
||||
cursor=db.cursor()
|
||||
cursor.execute("select name, patch from games where id="+str(game_id))
|
||||
game, patch = cursor.fetchone()
|
||||
|
||||
MailTemplate="templates/register.mail."+string.lower(game)
|
||||
|
||||
def Patch():
|
||||
global patch
|
||||
|
||||
print "Auswertung für " + game + " Patch Level " + str(int(patch))
|
||||
while os.access(patchdir+'/patch-'+str(int(patch+1))+'.sql', os.F_OK):
|
||||
patch=patch+1
|
||||
print " Patching to level "+str(patch)
|
||||
os.system('mysql ' + dbname + ' < ' + patchdir+'/patch-'+str(int(patch))+'.sql')
|
||||
cursor.execute('update games set patch='+str(int(patch))+' where id='+str(game_id))
|
||||
return
|
||||
|
||||
def Send(email, custid, firstname, password, position, locale):
|
||||
TemplateHandle = open(MailTemplate+"."+locale, "r") # open in read only mode
|
||||
# read the entire file as a string
|
||||
TemplateInput = TemplateHandle.read()
|
||||
TemplateHandle.close() # close the file
|
||||
|
||||
SubResult = re.subn("<FIRSTNAME>", firstname, TemplateInput)
|
||||
SubResult = re.subn("<GAME>", game, SubResult[0])
|
||||
SubResult = re.subn("<PASSWORD>", password, SubResult[0])
|
||||
SubResult = re.subn("<POSITION>", str(int(position)), SubResult[0])
|
||||
SubResult = re.subn("<CUSTID>", str(int(custid)), SubResult[0])
|
||||
|
||||
Msg="From: "+From+"\nTo: "+email+"\nSubject: Eressea Anmeldung\n\n"
|
||||
Msg=Msg+SubResult[0]
|
||||
server.sendmail(From, email, Msg)
|
||||
return
|
||||
|
||||
Patch()
|
||||
# remove all illegal and banned users:
|
||||
users = cursor.execute("SELECT s.id from users u, subscriptions s where u.id=s.user and u.status in ('BANNED', 'ILLEGAL')")
|
||||
update=db.cursor()
|
||||
while users:
|
||||
users=users-1
|
||||
sid = cursor.fetchone()[0]
|
||||
update.execute("UPDATE subscriptions set status='EXPIRED' WHERE id="+str(int(sid)))
|
||||
|
||||
# espire all users without confirmation. reset waiting list.
|
||||
cursor.execute("update subscriptions set status='EXPIRED' where TO_DAYS(updated)<TO_DAYS('"+date+"') and status='WAITING'")
|
||||
cursor.execute("update subscriptions set status='WAITING' where TO_DAYS(updated)<TO_DAYS('"+date+"') and status='CONFIRMED'")
|
||||
|
||||
# remind everyone who is left on the waiting list.
|
||||
waiting = cursor.execute("select firstname, locale, email, u.id, s.password, u.password from users u, subscriptions s where u.id=s.user and s.status='WAITING' ORDER BY s.id")
|
||||
position=0
|
||||
while waiting:
|
||||
waiting=waiting-1
|
||||
position=position+1
|
||||
firstname, locale, email, custid, password, altpass = cursor.fetchone()
|
||||
if password==None:
|
||||
password=altpass
|
||||
print "Sending reminder email to "+str(int(custid))+" "+email
|
||||
Send(email, custid, firstname, password, position, locale)
|
||||
|
||||
server.close()
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
select distinct u.email, s.race, u.locale from users u, subscriptions s left
|
||||
join userips i on u.id=i.user left join bannedips b on i.ip=b.ip where
|
||||
s.user=u.id and b.ip is NULL and u.status='CONFIRMED' order by u.id;
|
|
@ -0,0 +1,60 @@
|
|||
#!/usr/bin/env python
|
||||
import MySQLdb
|
||||
import sys
|
||||
import smtplib
|
||||
|
||||
From='accounts@vinyambar.de'
|
||||
dbname=sys.argv[1]
|
||||
dryrun=0
|
||||
if len(sys.argv)>2:
|
||||
dryrun=1
|
||||
price=1.25
|
||||
warnahead=4
|
||||
cancelafter=1
|
||||
db=MySQLdb.connect(db=dbname)
|
||||
cursor=db.cursor()
|
||||
server=smtplib.SMTP('localhost')
|
||||
print "connected to SMTP"
|
||||
users = cursor.execute("select users.email, users.id, count(subscriptions.game) from users, subscriptions, games where users.id=subscriptions.user and subscriptions.game=games.id and users.id!=0 and games.status='RUNNING' GROUP BY users.id")
|
||||
while users > 0:
|
||||
users=users-1
|
||||
email, uid, games = cursor.fetchone()
|
||||
if games==0:
|
||||
continue
|
||||
c2 = db.cursor()
|
||||
t = c2.execute("select sum(balance) from transactions where user="+str(int(uid)))
|
||||
if t==0:
|
||||
balance=0.0
|
||||
else:
|
||||
balance = c2.fetchone()[0]
|
||||
Msg=None
|
||||
if balance <= games*warnahead*price:
|
||||
Msg = ("From: Vinyambar Buchhaltung <"+From+">\nTo: "+email+"\n")
|
||||
if balance < -games*cancelafter*price:
|
||||
Msg=Msg+"Subject: Vinyambar Abmeldung Kunde "+str(int(uid))+".\n\n"
|
||||
Msg = Msg+("Nachdem Dein Konto bei uns im Minus ist, haben wir deine\n"+
|
||||
"Anmeldung bei Vinyambar gekündigt, und die Partei(en) der Parteibörse\n"+
|
||||
"zugeführt.\n")
|
||||
print "CANCEL: "+email+", uid="+str(int(uid))+", balance="+str(balance)+", games="+str(int(games))
|
||||
if dryrun==0:
|
||||
c2.execute("UPDATE subscriptions set status='CANCELLED' where user="+str(int(uid)))
|
||||
else:
|
||||
print "WARNING: "+email+", uid="+str(int(uid))+", balance="+str(balance)+", games="+str(int(games))
|
||||
Msg = Msg+"Subject: WARNUNG - Vinyambar Kontostand Kunde "+str(int(uid))+"\n\n"
|
||||
Msg = Msg+("Dein Vinyambar Kontostand reicht nicht mehr aus, um die kommenden "+str(warnahead)+"\n"+
|
||||
"Wochen zu bezahlen. Bitte mache baldmöglichst eine neue Überweisung\n"
|
||||
"auf das Vinyambar-Konto.\n\n"+
|
||||
"Kundennummer: "+str(uid)+"\n"+
|
||||
"Kontostand: "+str(balance)+" EUR\n"+
|
||||
"\n"+
|
||||
"Unser Konto: Katja Zedel\n"+
|
||||
"Kontonummer 1251 886 106\n"+
|
||||
"BLZ 500 502 01 (Frankfurter Sparkasse)\n")
|
||||
|
||||
if (Msg!=None) and dryrun==0:
|
||||
try:
|
||||
server.sendmail(From, email, Msg)
|
||||
except:
|
||||
print "Could not send confirmation to "+email
|
||||
print "Exception is:", sys.exc_type, ":", sys.exc_value
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
#!/usr/bin/env python
|
||||
import MySQLdb
|
||||
import sys
|
||||
import os
|
||||
|
||||
dbname=sys.argv[1]
|
||||
gid=int(sys.argv[2])
|
||||
date=sys.argv[3]
|
||||
price=1.25
|
||||
db=MySQLdb.connect(db=dbname)
|
||||
patchdir='/home/eressea/vinyambar-rsync/vin'+str(gid)+'/data'
|
||||
|
||||
cursor=db.cursor()
|
||||
|
||||
def SetUser(cursor, num, newuser):
|
||||
update = db.cursor()
|
||||
while num:
|
||||
num = num-1
|
||||
uid, faction = cursor.fetchone()
|
||||
update.execute("insert into transfers (faction, game, src,dst) values ('"+faction+"', "+str(gid)+", "+str(int(uid))+", 0)")
|
||||
update.execute("update subscriptions set user="+str(newuser)+" where game="+str(gid)+" and faction='"+faction+"'")
|
||||
|
||||
|
||||
k = cursor.execute('select name, patch from games where id='+str(gid))
|
||||
if k==0:
|
||||
print "Unbekanntes Spiel"
|
||||
|
||||
name, patch = cursor.fetchone()
|
||||
|
||||
os.system("mysqldump vinyambar > backup-vinyambar-"+str(int(patch))+".sql")
|
||||
|
||||
k = cursor.execute("SELECT max(lastturn) from subscriptions")
|
||||
lastturn = int(cursor.fetchone()[0])
|
||||
|
||||
print "Auswertung für " + name + " Patch Level " + str(int(patch)) + ", Runde "+str(lastturn)
|
||||
while os.access(patchdir+'/patch-'+str(int(patch+1))+'.sql', os.F_OK):
|
||||
patch=patch+1
|
||||
print " Patching to level "+str(patch)
|
||||
os.system('mysql ' + dbname + ' < ' + patchdir+'/patch-'+str(int(patch))+'.sql')
|
||||
cursor.execute('update games set patch='+str(int(patch))+' where id='+str(gid))
|
||||
|
||||
k = cursor.execute("select user, faction from subscriptions where game="+str(gid)+" and status='TRANSFERED' and user!=0 and updated<'"+date+"'")
|
||||
print "Removing "+str(int(k))+" transfered subscriptions."
|
||||
SetUser(cursor, int(k), 0)
|
||||
|
||||
k = cursor.execute("select user, faction from subscriptions where game="+str(gid)+" and status='CANCELLED' and user!=0 and updated<'"+date+"'")
|
||||
print "Removing "+str(int(k))+" cancelled subscriptions."
|
||||
SetUser(cursor, int(k), 0)
|
||||
|
||||
k = cursor.execute("select user, faction from subscriptions where game="+str(gid)+" and user!=0 and status='DEAD'")
|
||||
print "Removing "+str(int(k))+" dead subscriptions."
|
||||
|
||||
k = cursor.execute("UPDATE subscriptions SET status='CANCELLED' where game="+str(gid)+" and status='ACTIVE' and lastturn+3<="+str(lastturn))
|
||||
if k:
|
||||
print "Cancelling subscriptions with 3+ NMRs."
|
||||
|
||||
cursor.execute("SELECT count(*) from transactions where date='"+date+"' and description='ZAT-"+str(gid)+"'")
|
||||
k = cursor.fetchone()[0]
|
||||
if k==0:
|
||||
k = cursor.execute("SELECT users.id FROM users, subscriptions WHERE users.id=subscriptions.user and subscriptions.status='ACTIVE' and subscriptions.game="+str(gid))
|
||||
print "Billing "+str(int(k))+" users."
|
||||
while k!=0:
|
||||
k=k-1
|
||||
user = int(cursor.fetchone()[0])
|
||||
update=db.cursor()
|
||||
update.execute("INSERT INTO transactions (user,date,balance,description) VALUES ("+str(user)+", '"+date+"', -"+str(price)+", 'ZAT-"+str(gid)+"')")
|
||||
else:
|
||||
print "ERROR: ZAT for game "+str(gid)+" has already been done."
|
|
@ -0,0 +1,53 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
<base href="http://www.vinyambar.de">
|
||||
<meta http-equiv="Content-Type"
|
||||
content="text/html; charset=iso-8859-1">
|
||||
<meta name="keywords" content="Eressea,PBeM,Postspiel">
|
||||
<meta name="author" content="Enno Rehling - webmaster@vinyambar.de">
|
||||
<meta name="abstract" content="Eressea">
|
||||
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
|
||||
<title>Eressea PBEM</title>
|
||||
<link rel="stylesheet" type="text/css" href="eressea.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td bgcolor="#404080" align="left" valign="top">
|
||||
<a href="http://www.eressea-pbem.de/"><img border="0" src="images/logo.png" alt="ERESSEA - Weltreiche und Legenden" width="500" height="91"></a>
|
||||
</td>
|
||||
<td bgcolor="#404080" valign="top">
|
||||
<font color="#FFFFFF"><!--#echo var="DATE_LOCAL"--></font>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
<h1 align="center"><!-- INSERT TITLE HERE --></h1>
|
||||
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td width="150" valign="top">
|
||||
<div class="navheader">Eressea</div>
|
||||
<div class="navindex"><a href="http://www.eressea-pbem.de/">Home</a></div>
|
||||
</td>
|
||||
<td valign="top">
|
||||
|
||||
<!-- INSERT CONTENT HERE -->
|
||||
|
||||
</td>
|
||||
<td width="150" valign="top">
|
||||
<div align="center">
|
||||
<a href="https://register.funcom.com/?partner=1000138917"><img src="images/athrox.png" align="top" border="0" alt="Download Anarchy Online"></a>
|
||||
<br clear=all>
|
||||
<a href="http://www.anarchy-online.com/content/downloads/tryout/"></a><br>
|
||||
--AO Partnerprogramm--</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,22 @@
|
|||
Hallo <FIRSTNAME>,
|
||||
|
||||
Du stehst mit deiner Anmeldung bei <GAME> auf der Warteliste für neue Parteien
|
||||
derzeit an Position <POSITION>. Um Deine Anmeldung zu bestätigen, gehe bitte
|
||||
auf die folgende Webseite, und gib dort zur Bestätigung deine Kundennummer
|
||||
und den Bestätigungsschlüssel ein.
|
||||
|
||||
http://eressea-pbem.de/de/confirm.html
|
||||
Kundennummer: <CUSTID>
|
||||
Schlüssel: <PASSWORD>
|
||||
|
||||
Um sicherzustellen, das nur interessierte Spieler in der Warteliste sind,
|
||||
muß diese Prozedur einmal wöchentlich wiederholt werden. Du bekommst daher
|
||||
wöchentlich eine Erinnerungsmail, in der Du auch deine aktuelle Position in
|
||||
der Warteliste sehen kannst.
|
||||
|
||||
Solltest Du den Schlüssel bis Sonntag früh nicht eingegeben haben, wird
|
||||
deine Anmeldung aus der Warteliste entfernt, und Du bekommst keine weiteren
|
||||
Mails von uns.
|
||||
|
||||
|
||||
Das Eressea-Team
|
|
@ -0,0 +1,20 @@
|
|||
Hello <FIRSTNAME>,
|
||||
|
||||
You are now entered into the waiting list of <GAME>, at position <POSITION>.
|
||||
To confirm your subscription, please go to the following URL and enter your
|
||||
Customer-ID and confirmation key.
|
||||
|
||||
http://eressea-pbem.de/en/confirm.html
|
||||
Customer ID: <CUSTID>
|
||||
Key: <PASSWORD>
|
||||
|
||||
To make sure that only those players interested in playing remain on the
|
||||
list, you need to repeat this procedure once every week. We will send you this
|
||||
reminder by mail, in which you'll also see your updated position on the
|
||||
waiting list.
|
||||
|
||||
If you do not enter the key before sunday morning 9:00 CET, your
|
||||
registration will be considered cancelled, and you will receive no further
|
||||
email from us.
|
||||
|
||||
The Eressea Team
|
|
@ -0,0 +1,21 @@
|
|||
Hallo <FIRSTNAME>,
|
||||
|
||||
Als bisher nicht registrierter Eressea-Spieler haben wir Dich zu einer 5
|
||||
Runden dauernden Schnupperpartie eingetragen. Dieses Tutorial gibt Dir die
|
||||
Chance, deine Anfangsstrategie auszuprobieren und festzustellen, ob Du die
|
||||
Regeln auch wirklich verstanden hast.
|
||||
|
||||
Nachdem Du 5 Runden im Tutorial gespielt hast, werden wir deinen Account für
|
||||
das richtige Eressea-Spiel freischalten. Das hat für alle Beteiligten auch
|
||||
den Vorteil, das nur solche Spieler teilnehmen, die über Grundkenntnisse der
|
||||
Regeln verfügen, und wissen, worum es bei Eressea geht.
|
||||
|
||||
Um Deine Anmeldung zu bestätigen, gehe bitte auf die folgende Webseite, und
|
||||
gib dort zur Bestätigung deine Kundennummer und den Bestätigungsschlüssel
|
||||
ein.
|
||||
|
||||
http://eressea-pbem.de/de/confirm.html
|
||||
Kundennummer: <CUSTID>
|
||||
Schlüssel: <PASSWORD>
|
||||
|
||||
Das Eressea-Team
|
|
@ -0,0 +1,19 @@
|
|||
Hello <FIRSTNAME>,
|
||||
|
||||
as a new player, you have been entered into the Eressea tutorial game. By
|
||||
letting you play the tutorial first, we're giving you the chance to test
|
||||
your knowledge of the rules and exxperiment for a few turns befor the actual
|
||||
game starts - consider this a way to test your initial strategy. Better to
|
||||
make mistakes now than later, right?
|
||||
|
||||
Once you finish 5 turns in this game (which will have a turn every 2 days),
|
||||
your Account will be upgraded, allowing you to subscribe to Eressea.
|
||||
|
||||
To confirm this subscription, please go to the following URL and enter your
|
||||
new Customer-ID and confirmation key.
|
||||
|
||||
http://eressea-pbem.de/en/confirm.html
|
||||
Customer ID: <CUSTID>
|
||||
Key: <PASSWORD>
|
||||
|
||||
The Eressea Team
|
|
@ -0,0 +1,22 @@
|
|||
Hallo <FIRSTNAME>,
|
||||
|
||||
Deine Vinyambar-Anmeldung ist beinahe komplett. Um Deine Anmeldung zu bestätigen,
|
||||
gehe bitte auf die folgende Webseite, und gib dort zur Bestätigung deine
|
||||
Kundennummer und das Kundenpasswort ein.
|
||||
|
||||
http://www.vinyambar.de/accounts.shtml
|
||||
Kundennummer: <CUSTID>
|
||||
Kundenpasswort: <PASSWORD>
|
||||
|
||||
Bitte bewahre diese Mail sorgfältig auf, da Du deine Kundennummer und das
|
||||
Passwort für das Spiel benötigst. Solltest Du noch Fragen zu Deiner
|
||||
Anmeldung haben, wende Dich bitte an accounts@vinyambar.de.
|
||||
|
||||
Die Kundennummer gib bitte bei der Überweisung der Spielgebühren an.
|
||||
Unsere Kontoinformationen lauten:
|
||||
|
||||
Katja Zedel
|
||||
Kontonummer 1251 886 106
|
||||
BLZ 500 502 01 (Frankfurter Sparkasse)
|
||||
|
||||
Das Vinyambar-Team
|
|
@ -0,0 +1,22 @@
|
|||
Hallo <FIRSTNAME>,
|
||||
|
||||
Deine Vinyambar-Anmeldung ist beinahe komplett. Um Deine Anmeldung zu bestätigen,
|
||||
gehe bitte auf die folgende Webseite, und gib dort zur Bestätigung deine
|
||||
Kundennummer und das Kundenpasswort ein.
|
||||
|
||||
http://www.vinyambar.de/accounts.shtml
|
||||
Kundennummer: <CUSTID>
|
||||
Kundenpasswort: <PASSWORD>
|
||||
|
||||
Bitte bewahre diese Mail sorgfältig auf, da Du deine Kundennummer und das
|
||||
Passwort für das Spiel benötigst. Solltest Du noch Fragen zu Deiner
|
||||
Anmeldung haben, wende Dich bitte an accounts@vinyambar.de.
|
||||
|
||||
Die Kundennummer gib bitte bei der Überweisung der Spielgebühren an.
|
||||
Unsere Kontoinformationen lauten:
|
||||
|
||||
Katja Zedel
|
||||
Kontonummer 1251 886 106
|
||||
BLZ 500 502 01 (Frankfurter Sparkasse)
|
||||
|
||||
Das Vinyambar-Team
|
|
@ -0,0 +1,65 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
<base href="http://www.vinyambar.de">
|
||||
<base target="_top">
|
||||
<meta http-equiv="Content-Type"
|
||||
content="text/html; charset=iso-8859-1">
|
||||
<meta name="keywords" content="Eressea,PBeM,Postspiel">
|
||||
<meta name="author" content="Enno Rehling - webmaster@vinyambar.de">
|
||||
<meta name="abstract" content="Vinyambar">
|
||||
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
|
||||
<title>Vinyambar PBEM</title>
|
||||
<link rel="stylesheet" type="text/css" href="eressea.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td bgcolor="#404080" align="left" valign="top">
|
||||
<img src="images/logo.png" alt="ERESSEA - Weltreiche und Legenden" width="500" height="91">
|
||||
</td>
|
||||
<td bgcolor="#404080" valign="top">
|
||||
<font color="#FFFFFF"><!--#echo var="DATE_LOCAL"--></font>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
<h1 align="center"><!-- INSERT TITLE HERE --></h1>
|
||||
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td width="150" valign="top">
|
||||
<div class="navheader">Vinyambar</div>
|
||||
<div class="navindex"><a href="http://www.vinyambar.de/">Home</a></div>
|
||||
<div class="navindex"><a href="http://www.vinyambar.de/register.shtml">Anmeldung</a></div>
|
||||
<div class="navindex"><a href="http://www.vinyambar.de/accounts.shtml">Mein Account</a></div>
|
||||
<div class="navindex"><a href="standin.html">Parteibörse</a></div>
|
||||
<div class="navindex"><a href="http://eressea.upb.de/rules/">Regeln</a></div>
|
||||
<div class="navindex"><a href="">Downloads</a></div>
|
||||
<div class="navindex"><a href="http://eressea.upb.de/magellan/"><img src="images/extlink.gif" border="0" alt=""> Magellan GUI</a></div>
|
||||
<div class="navheader">Community</div>
|
||||
<div class="navindex"><a href="http://dmuenstermann.bei.t-online.de/parteiboerse.htm"><img src="images/extlink.gif" border="0" alt=""> Parteibörse</a></div>
|
||||
<div class="navindex"><a href="http://dmuenstermann.bei.t-online.de/parteiboerse.htm"><img src="images/extlink.gif" border="0" alt=""> Featured Site</a></div>
|
||||
<div class="navheader">Eressea</div>
|
||||
<div class="navindex"><a href="http://www.eressea-pbem.de/">Eressea Home</a></div>
|
||||
</td>
|
||||
<td valign="top">
|
||||
|
||||
<!-- INSERT CONTENT HERE -->
|
||||
|
||||
</td>
|
||||
<td width="150" valign="top">
|
||||
<div align="center">
|
||||
<a href="https://register.funcom.com/?partner=1000138917"><img src="images/athrox.png" align="top" border="0" alt="Download Anarchy Online"></a>
|
||||
<br clear=all>
|
||||
<a href="http://www.anarchy-online.com/content/downloads/tryout/"></a><br>
|
||||
--AO Partnerprogramm--</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue