Jump to content

[Ajuda] Alterar start.py


Luffy
 Share

Recommended Posts

Pessoal, alguém poderia me ajudar editar este start.py para só iniciar o auth, db, canal 1 e canal 99 ao invés de também iniciar o canal 2, 3 e 4?

Spoiler

#!/usr/local/bin/python2.7
#### @martysama0134 start scripts ####
from subprocess import check_output as sp_co, call as sp_call, CalledProcessError as sp_CalledProcessError
from os import getcwd as os_getcwd, chdir as os_chdir

from platform import system as p_system
v_system = p_system()

class M2TYPE:
    SERVER, DB, AUTH, CHANFOLDER, CHANNEL, CORE = xrange(6)
    NOCHAN = 0

def fShell(szCmd, bRet=False):
    try:
        if bRet:
            return sp_co(szCmd, shell=True)[:-1]    # remove final \n
        else:
            return sp_call(szCmd, shell=True)
    except sp_CalledProcessError:
        return -1

def keyCheck(dict, key, elem={}):
    try:
        dict[key]
    except KeyError:
        dict[key]=elem

proclist={}
whichlist={"serv":[], "chan":[]}
def staInit():
    global proclist
    ## base
    from json import load as j_loads
    with open("start.list", "r") as fList:
        mList = j_loads(fList)
    proclist.clear()
    for dic1 in mList:
        keyCheck(proclist, dic1["serv"])
        if dic1["type"]==M2TYPE.DB:
            keyCheck(proclist[dic1["serv"]], "db", [])
            proclist[dic1["serv"]]["db"].append(dic1)
        elif dic1["type"]==M2TYPE.AUTH or dic1["type"]==M2TYPE.CORE:
            keyCheck(proclist[dic1["serv"]], "core", [])
            proclist[dic1["serv"]]["core"].append(dic1)
            if dic1["type"]==M2TYPE.CORE:
                keyCheck(proclist[dic1["serv"]], "chan", set())
                proclist[dic1["serv"]]["chan"].add(dic1["chan"])

def staStart(serv=(), chan={}):
    from time import sleep as t_sleep
    szPWD=os_getcwd()
    global whichlist
    whichlist["serv"]=serv
    whichlist["chan"]=chan
    keyCheck(whichlist["chan"], "all", ())
    def RunInMe(tmpProcList, bSkipCheck=False):
        addFlags = ""
        if dwLogLevel:
            addFlags += " -l %d " % dwLogLevel
        if dwIP:
            addFlags += " -I %s " % dwIP

        for dic1 in tmpProcList:
            # skip not requested servers
            if (whichlist["serv"]) and (dic1["serv"] not in whichlist["serv"]):
                continue
            if not bSkipCheck and dic1["type"]==M2TYPE.CORE:
                # skip not requested channels
                keyCheck(whichlist["chan"], dic1["serv"], ())
                if whichlist["chan"]["all"]:
                    # print "all",whichlist["chan"]["all"]
                    if not dic1["chan"] in whichlist["chan"]["all"]:
                        continue
                if whichlist["chan"][dic1["serv"]]:
                    # print dic1["serv"]
                    if not dic1["chan"] in whichlist["chan"][dic1["serv"]]:
                        continue
            # print dic1

            if v_system in ("FreeBSD", "Linux"):
                if not fShell("""ps afx | fgrep "./%s" | fgrep -v grep | awk '{print $1}'"""%dic1["name"], True):
                    # print dic1["name"], "not found"
                    # goto process file
                    # print("cd %s"%dic1["path"])
                    os_chdir(dic1["path"])
                    # start process
                    # print("./%s &"%dic1["name"])
                    # fShell("./%s &"%dic1["name"])
                    fShell("./%s %s &" % (dic1["name"], addFlags))
                    # goto base again
                    os_chdir(szPWD)
            elif v_system=="Windows":
                # easy workaround for windows (only for debug purposes)
                # fShell("""tasklist /v | findstr "%s" """%dic1["name"])
                os_chdir(dic1["path"])
                fShell("start /b %s %s" % (dic1["name"], addFlags))
                os_chdir(szPWD)
    for k1 in proclist.iterkeys():
        RunInMe(proclist[k1]["db"])
        # RunInMe(proclist[k1]["db"], True)
        t_sleep(3)
        RunInMe(proclist[k1]["core"])

if __name__ == "__main__":
    from getopt import getopt as g_getopt, GetoptError as g_GetoptError
    from sys import exit as s_exit, argv as s_argv
    try:
        bIsAll = True
        bHasPrompt = False
        # baseChan = [1,99] # ch1 and ch99 are required
        baseChan = []
        listWhich = []
        szWhichServ = ""
        szWhichChan = {}
        dwLogLevel = 0
        dwIP = ""
        optlist, args = g_getopt(s_argv[1:],"psl:I:",('prompt','selective','whichserv=','whichchan=','level=','IP='))
        for o, a in optlist:
            if o in ('-s', '--selective'):
                bIsAll=False
            elif o in ('-p', '--prompt'):
                bHasPrompt=True
            elif o in ('-l', '--level'):
                dwLogLevel=int(a)
            elif o in ('-I', '--IP'):
                dwIP=a
            elif o in ('-ws', '--whichserv'):
                szWhichServ=a
                if szWhichServ:
                    bIsAll=False
            elif o in ('-wc', '--whichchan'):
                szWhichChan["all"]=a
                if szWhichChan:
                    bIsAll=False
        staInit()
        if bHasPrompt:
            bIsAll=False
            print "Servers available to run:", " ".join(proclist.iterkeys())
            szTmp1 = raw_input("Enter which servers you want to start: (nothing=all)\ne.g. srv1 srv2 srv3\n>>> ")
            if szTmp1.strip():
                szWhichServ=szTmp1
                for iChan in szTmp1.strip().split():
                    if iChan not in proclist.iterkeys():
                        print "Server not found:", iChan
                        continue
                    print "Channels available to run for %s:"%iChan, " ".join([str(i) for i in proclist[iChan]["chan"]])
                    szTmp2 = raw_input("Enter which additional channels you want to start: (nothing=all)\ne.g. 1 2 99\n>>> ")
                    if szTmp2.strip():
                        # print szTmp1, szTmp2
                        szWhichChan[iChan]=szTmp2
        # print proclist,whichlist
        if bIsAll:
            staStart()
        else:
            tmpWhichServ,tmpWhichChan=[],{}
            # print "---",szWhichServ,"---"
            # print "---",szWhichChan,"---"
            if szWhichServ:
                tmpWhichServ=szWhichServ.split()
            if szWhichChan:
                for iKey in szWhichChan.iterkeys():
                    tmpWhichChan[iKey]=set([int(i) for i in szWhichChan[iKey].split()])
                # tmpWhichChan["all"]=list(set([int(i) for i in szWhichChan["all"].split()] + baseChan))
            # print tmpWhichServ, "\n", tmpWhichChan
            staStart(serv=tmpWhichServ, chan=tmpWhichChan)
    except g_GetoptError, err:
        s_exit(err)
#


 

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...