version 1.2 | | version 1.3 |
---|
| | |
# | | # |
# The author can be reached via e-mail at jbontje@suespammers.org | | # The author can be reached via e-mail at jbontje@suespammers.org |
# | | # |
| | |
#Updated to use new path functions in CFPython -Todd Mitchell | | #Updated to use new path functions in CFPython -Todd Mitchell |
| | # |
| | # Updated to add new fields and functions (kick, muzzle) |
| | # and rewritten to use plain text file storage (CFDataFile) instead of shelve. |
| | |
import shelve | | |
import os.path | | |
| | |
import CFPython | | import CFPython |
| | |
from time import localtime, strftime, time | | from time import localtime, strftime, time |
| | from CFDataFile import CFDataFile, CFData |
| | |
class CFLog: | | class CFLog: |
| | |
logdb_file = os.path.join(CFPython.GetLocalDirectory(),'crossfirelog') | | |
logdb = {} | | |
| | |
def __init__(self): | | def __init__(self): |
self.logdb = shelve.open(self.logdb_file) | | logheader = ['Born', 'IP', 'Last_Login_Date', 'Login_Count', 'Kick_Count' |
| | , 'Last_Kick_Date', 'Muzzle_Count', 'Last_Muzzle_Date'] |
| | self.log = CFData('Player_log', logheader) |
| | |
def create(self, name): | | def create(self, name): |
date = strftime("%a, %d %b %Y %H:%M:%S CEST", localtime(time())) | | date = strftime("%a, %d %b %Y %H:%M:%S CEST", localtime(time())) |
count=1 | | record={'#': name |
self.logdb[name]=['unknown', date, count] | | ,'Born':date |
| | ,'IP':'unknown' |
| | ,'Last_Login_Date':date |
| | ,'Login_Count':0 |
| | ,'Kick_Count':0 |
| | ,'Last_Kick_Date':'never' |
| | ,'Muzzle_Count':0 |
| | ,'Last_Muzzle_Date':'never'} |
| | self.log.put_record(record) |
| | |
def update(self, name, ip): | | def remove(self, name): |
| | self.log.remove_record(name) |
| | |
| | def login_update(self, name, ip): |
date = strftime("%a, %d %b %Y %H:%M:%S CEST", localtime(time())) | | date = strftime("%a, %d %b %Y %H:%M:%S CEST", localtime(time())) |
count=0 | | record = self.log.get_record(name) |
if self.logdb.has_key(name): | | record['IP']=ip |
oldip, olddate, count=self.logdb[name] | | record['Last_Login_Date']=date |
count+=1 | | record['Login_Count']=int(record['Login_Count'])+1 |
self.logdb[name]=[ip, date, count] | | self.log.put_record(record) |
| | |
def remove(self, name): | | def kick_update(self, name): |
if self.logdb.has_key(name): | | date = strftime("%a, %d %b %Y %H:%M:%S CEST", localtime(time())) |
del self.logdb[name] | | record = self.log.get_record(name) |
| | record['Kick_Count']=int(record['Kick_Count'])+1 |
| | record['Last_Kick_Date']=date |
| | self.log.put_record(record) |
| | |
def exist(self, name): | | def muzzle_update(self, name): |
if self.logdb.has_key(name): | | date = strftime("%a, %d %b %Y %H:%M:%S CEST", localtime(time())) |
return 1 | | record = self.log.get_record(name) |
else: | | record['Muzzle_Count']=int(record['Muzzle_Count'])+1 |
return 0 | | record['Last_Muzzle_Date']=date |
| | self.log.put_record(record) |
| | |
def info(self, name): | | def info(self, name): |
if self.exist(name): | | record = self.log.get_record(name) |
ip, date, count=self.logdb[name] | | if record: |
return ip, date, count | | return record |
| | else: |
| | return 0 |