Beispiel #1
0
def db_backup(timestamp):
    import shutil
    import M_RC
    shutil.copy2(M_CONF.NomeDB, M_CONF.NomeArchivi + "/" + timestamp + "_" + M_CONF.NomeDB)             #Copio il DB in Archivi
    DB.connetti()
    DB.esegui("""VACUUM""")                                                                             #DOPO che l'ho backuppato, lo comprimo.
    DB.salva()
    DB.disconnetti()
    M_RC.scrivilog("DB backup done.", M_CONF.activity)
Beispiel #2
0
def crashlog(t, v, tra):
    """gestisce i crash del programma, scrivendo l'errore nel file di log"""
    import traceback
    evento = "\r\n REDCAP CRASH:: "
    for stringa in traceback.format_tb(tra):
        evento += str(stringa)
    for stringa in traceback.format_exception_only(sys.last_type, sys.last_value):
        evento += str(stringa)
    M_RC.scrivilog(evento, M_CONF.crashlog)
    sys.exit()
Beispiel #3
0
def db_clean_guid():
    """pulizia periodica DB dai record non piu utilizzati"""
    import M_RC
    DB.connetti()
    res = DB.esegui(DB.query["cleanoldplayers"], (time.time(), float(M_CONF.maxAbsence*86400), time.time())).fetchall()
    for guid in res:
        for tab in tabs:
            DB.esegui(DB.query["delplayer"] % (tab, guid[0]))  #Elimino guid che non frequentano piu' il gameserver da M_CONF.maxAbsence giorni.
    DB.salva()
    DB.disconnetti()
    M_RC.scrivilog("DB old record cleaned.", M_CONF.activity)
Beispiel #4
0
def crashlog(t, v, tra):
    """gestisce i crash del programma, scrivendo l'errore nel file di log"""
    import traceback
    evento = "\r\n REDCAP CRASH:: "
    for stringa in traceback.format_tb(tra):
        evento += str(stringa)
    for stringa in traceback.format_exception_only(sys.last_type,
                                                   sys.last_value):
        evento += str(stringa)
    M_RC.scrivilog(evento, M_CONF.crashlog)
    sys.exit()
Beispiel #5
0
def log_backup(timestamp):
    """Esegue il backup del file di log."""
    import os
    import re
    import M_RC
    logfile = open(M_CONF.NomeFileLog, "r")
    contenuto = logfile.read()          #leggo il log
    logfile.close()
    contenuto=re.sub(r"Item: .* ","",contenuto) #elimino le voci Item
    logfile = open(M_CONF.NomeArchivi + "/" + timestamp + ".log", "w")
    logfile.write(contenuto)              #creo il file di log in Archivi
    logfile.close()
    M_RC.scrivilog("UrT Log backup done.", M_CONF.activity)
    os.remove(M_CONF.NomeFileLog)   #cancello il vecchio file
Beispiel #6
0
def cr_riavvia():
    """restarto RedCap ed eventualmente il server"""
    import os
    import sys
    import M_RC
    if M_CONF.gameserver_autorestart > 0:
        M_RC.scrivilog(" Redcap and UrT Server restarted.", M_CONF.activity)
        os.system("./S_full_restart.sh")
        time.sleep(5)                                                                                   #aspetto che il gameserver riparta
        sys.exit()
    else:
        M_RC.scrivilog("Redcap restarted.", M_CONF.activity)
        M_RC.SCK.cmd("exec " + M_CONF.SV_Baseconf)                                                      #ricarico il config
        time.sleep(5)                                                                                   #aspetto che il gameserver riparta
        sys.exit()
Beispiel #7
0
def db_clean_IP():
    """Elimino gli alias in eccedenza"""
    import M_RC
    j2 = " "
    DB.connetti()
    res = DB.esegui(DB.query["cleanIP"]).fetchall()
    for player in res:
        newIP = ""
        IPs = player[1].split(j2)
        IPs.reverse()
        IPs = IPs[0:15]                                                                                 #Limito a 15 IP memorizzati
        for IP in IPs:
            newIP += (IP + j2)
        newIP = newIP.rstrip()
        DB.esegui(DB.query["cleanedIP"],(newIP, player[0]))
    DB.salva()
    DB.disconnetti()
    M_RC.scrivilog("Old IP cleaned.", M_CONF.activity)
Beispiel #8
0
def init_jobs():
    """attivita' da fare all'avvio di redcap"""
    M_RC.say("^2Starting RedCap...", 2)
    lista = M_RC.ini_clientlist()                                                           #recupero i client gia presenti sul server
    if lista:
        M_RC.ini_clientadd(lista)                                                               #li aggiungo
    M_RC.ini_recordlist()                                                                   #recupero i record dal server
    M_RC.ini_spamlist()                                                                     #carico la spamlist
    if M_CONF.Website_ON:                                                                   #Se esiste un website di appoggio aggiorno la classifica, la trasferisco al server remoto e salvo il risultato dell'operazione nel log
        M_RC.say("^4Webrank updating...", 2)
        res = M_AUX.web_rank()
        if res == False:
            M_RC.scrivilog("WEBRANK TRANSFER FAILED", M_CONF.crashlog)
    M_RC.say("^4Q3ut4 parsing...", 2)
    q3ut4_parse()
    M_RC.say("^2Main routine started. Waiting for players identification...", 2)
    M_RC.ini_addcfg(M_CONF.SV_Basewar)                                                      #scrivo la basewar cfg in q3ut4
    redcap_main()                                                                           #LANCIO LA PROCEDURA PRINCIPALE
Beispiel #9
0
def db_clean_alias():
    """Elimino gli alias in eccedenza"""
    import M_RC
    j2 = "  "
    DB.connetti()
    res = DB.esegui(DB.query["cleanalias"]).fetchall()
    for player in res:
        newalias = ""
        aliases = player[1].split(j2)
        aliases.sort()
        aliases.reverse()
        aliases = aliases[0:M_CONF.maxAlias]
        for alias in aliases:
            newalias += (alias + j2)
        newalias = newalias.rstrip()
        DB.esegui(DB.query["cleanedalias"],(newalias, player[0]))
    DB.salva()
    DB.disconnetti()
    M_RC.scrivilog("DB alias cleaned.", M_CONF.activity)
Beispiel #10
0
def init_jobs():
    """attivita' da fare all'avvio di redcap"""
    M_RC.say("^2Starting RedCap...", 2)
    lista = M_RC.ini_clientlist()  #recupero i client gia presenti sul server
    if lista:
        M_RC.ini_clientadd(lista)  #li aggiungo
    M_RC.ini_recordlist()  #recupero i record dal server
    M_RC.ini_spamlist()  #carico la spamlist
    if M_CONF.Website_ON:  #Se esiste un website di appoggio aggiorno la classifica, la trasferisco al server remoto e salvo il risultato dell'operazione nel log
        M_RC.say("^4Webrank updating...", 2)
        res = M_AUX.web_rank()
        if res == False:
            M_RC.scrivilog("WEBRANK TRANSFER FAILED", M_CONF.crashlog)
    M_RC.say("^4Q3ut4 parsing...", 2)
    q3ut4_parse()
    M_RC.say("^2Main routine started. Waiting for players identification...",
             2)
    M_RC.ini_addcfg(M_CONF.SV_Basewar)  #scrivo la basewar cfg in q3ut4
    redcap_main()  #LANCIO LA PROCEDURA PRINCIPALE
Beispiel #11
0
def web_FTPtransfer(filefrom, fileto):
    """trasferisce un file sul webserver ausiliario"""
    esito = True
    import M_RC
    from ftplib import FTP
    htmlfile = open(filefrom, "rb")
    try:
        connessione = FTP(M_CONF.w_url)
        connessione.login(M_CONF.w_login, M_CONF.w_password)   # connect to host, default port
        connessione.cwd(M_CONF.w_ftp_directory)
        connessione.storbinary('STOR ' + fileto, htmlfile)
        connessione.quit()
    except:
        esito = False
    finally:
        htmlfile.close()
        if esito:
            M_RC.scrivilog("File %s transfer OK." %filefrom, M_CONF.activity)
        else:
           M_RC.scrivilog("File %s transfer not achieved." %filefrom, M_CONF.activity)
Beispiel #12
0
def log_chat_backup(timestamp):
    """crea un file di chat"""
    import re
    import M_RC
    logfile = open(M_CONF.NomeFileLog, "r")
    dialoghi = logfile.read()   #Estraggo i dialoghi
    logfile.close()
    dialoghi = dialoghi.replace("<", "&lt;")
    dialoghi = dialoghi.replace(">", "&gt;")
    says=re.findall(r"say: (?P<colore>\d+) (?P<nick>.*): (?P<frase>.*)", dialoghi)
    #creo il file dei dialoghi
    html = "<table class='dialoghi'>" #preparo la tabella e inserisco i dialoghi
    for say in says:
        if say[2].find("!sk") != -1 or say[2].find("!z") != -1 or say[2].find("!al") != -1:
            continue #elimino comandi inutili
        html +="<tr><td>"
        html += "<span style='color:" + colori[say[0]] + "'>" +say[1] + "</span></td><td style='color:#bbbbbb'>" + say[2]
        html +="</td></tr>\n"
    html +="</table>"
    logfile = open(M_CONF.NomeArchivi + "/" + timestamp + "_saylog.log", "w")                           #salvo il tutto in un file
    logfile.write(html)
    logfile.close()
    M_RC.scrivilog("UrT Chatlog backup done.", M_CONF.activity)
Beispiel #13
0
 def __cmd_error(self,cmd):
     """scrive il comando non inviato nel file di log di RedCap"""
     import M_RC
     if M_RC.GSRV.Attivo:
         M_RC.scrivilog("NOT SENT: %s"%cmd, M_CONF.socketlog)