示例#1
0
 def run(self):
     while True:
         try:
             try:
                 cpuload = ServerInfo.getCPUUsage()
             except:
                 self.writeLog("ServerMonitorInfo.cpuload:" + str(sys.exc_info()[0]) + str(sys.exc_info()[1]))
                 cpuload = '999'
             mem = ServerInfo.getPhyMem()
             memload = int(mem[1])
             try:
                 disk = ServerInfo.getDiskWarning()
             except:
                 disk = "GetdiskstatusError."
             try:
                 send = MyUtil.SendMsgToDB()
                 send.send(_3ds.Encrypt('agentHeart;' + computerId))
                 send.sock.recv(sockSize)
                 send.send(_3ds.Encrypt("ServerMonitorInfo;" + str(computerId) + ";" + str(cpuload) + ";" + str(memload) + ";" + str(disk) + ";" + str(CmdServerIP)))
                 send.sock.recv(sockSize)
                 send.send(_3ds.Encrypt('end'))
             except:
                 print "ServerMonitorInfo.run.send.error:" + str(sys.exc_info()[0]) + str(sys.exc_info()[1])
                 writeLog("ServerMonitorInfo.run.send.error:" + str(sys.exc_info()[0]) + str(sys.exc_info()[1]))
             finally:
                 send.closeSock()
                 time.sleep(60)
         except:
             print "ServerMonitorInfo.run error:" + str(sys.exc_info()[0]) + str(sys.exc_info()[1])
             writeLog("ServerMonitorInfo.run error:" + str(sys.exc_info()[0]) + str(sys.exc_info()[1]))
             time.sleep(60)
示例#2
0
    def do_GET(self):
        timestamp = int(round(time.time()))
        server_id = 1  # TODO: get server id
        # get server status
        server_status = ServerInfo.getServerInfo()
        # cgminer call
        api_data = api.call()
        devs = api.getDevsArray(api_data)
        http_code = 200

        # is the api response valid ?
        if not api.isValidReponse(api_data):
            print "Could not get valid api result!"
            res = {CommonKeys.REQUEST_STATUS : ErrorCodes.BAD_CGMINER}
            http_code = 500
        # check if config has the same number of gpu as cginer reports
        elif len(devs) != len(ServerInfo.getGpus()):
            print "Config is not sane !"
            res = {CommonKeys.REQUEST_STATUS : ErrorCodes.CONFIG_ERROR}
            http_code = 500
        else:
            when = api.getServerTime(api_data)
            gpu_statuses = GpuInfo.processDevs(devs, when)
            res = {
                CommonKeys.REQUEST_STATUS : ErrorCodes.OK,
                CommonKeys.TIMESTAMP : timestamp,
                CommonKeys.SERVER_ID : server_id,
                CommonKeys.SERVER_STATUS : server_status,
                CommonKeys.GPUS_STATUS : gpu_statuses
            }
        # send response
        self.send_response(http_code)
        self.send_header("Content-type", "application/json")
        self.end_headers()
        self.wfile.write(json.dumps(res))
示例#3
0
 def __init__(self):
     self.long = 18
     self.sets = ServerConfig.Sets()
     self.name = ServerInfo.Info('name').get_info()
     self.ver = ServerInfo.Info('ver').get_info()
     self.form = ServerInfo.Info('about').get_info()
     self.auth = ServerInfo.Info('by').get_info()
     self.mail = ServerInfo.Info('mail').get_info()
     self.noyes = [ru('No'), ru('Yes')]
     self.version = [ru('Default'), ru('HTTP/1.0'), ru('HTTP/1.1')]
     self.method = [ru('HEAD'),
      ru('GET'),
      ru('POST'),
      ru('DELETE'),
      ru('CONNECT'),
      ru('OPTIONS'),
      ru('TRACE'),
      ru('PUT')]
     self.line = [ru('\\r\\n'), ru('\\n')]
     self.split = [ru('Default'),
      ru('%s' % (self.line[self.sets.ILINE] * self.sets.ILINE)),
      ru('%s' % (self.line[self.sets.ILINE] * self.sets.ILINE)),
      ru('%s' % (self.line[self.sets.ILINE] * self.sets.ILINE)),
      ru('%s' % (self.line[self.sets.ILINE] * self.sets.ILINE)),
      ru('%s' % (self.line[self.sets.ILINE] * self.sets.ILINE))]
示例#4
0
 def run(self):
     while True:
         try:
             try:
                 cpuload = ServerInfo.getCPUUsage()
             except:
                 self.writeLog("ServerMonitorInfo.cpuload:" + str(sys.exc_info()[0]) + str(sys.exc_info()[1]))
                 cpuload = '999'
             mem = ServerInfo.getPhyMem()
             memload = int(mem[1])
             try:
                 disk = ServerInfo.getDiskWarning()
             except:
                 disk = "GetdiskstatusError."
             try:
                 send = MyUtil.SendMsgToDB()
                 send.send(_3ds.Encrypt('agentHeart;' + computerId))
                 send.sock.recv(sockSize)
                 send.send(_3ds.Encrypt("ServerMonitorInfo;" + str(computerId) + ";" + str(cpuload) + ";" + str(memload) + ";" + str(disk) + ";" + str(CmdServerIP)))
                 send.sock.recv(sockSize)
                 send.send(_3ds.Encrypt('end'))
             except:
                 print "ServerMonitorInfo.run.send.error:" + str(sys.exc_info()[0]) + str(sys.exc_info()[1])
                 writeLog("ServerMonitorInfo.run.send.error:" + str(sys.exc_info()[0]) + str(sys.exc_info()[1]))
             finally:
                 send.closeSock()
                 time.sleep(60)
         except:
             print "ServerMonitorInfo.run error:" + str(sys.exc_info()[0]) + str(sys.exc_info()[1])
             writeLog("ServerMonitorInfo.run error:" + str(sys.exc_info()[0]) + str(sys.exc_info()[1]))
             time.sleep(60)
示例#5
0
def IsExec():
    newname = sys.stdout.write("+++ This is %s on %s Version %s +++\r\n\r\n" % (ServerInfo.Info('name').get_info().replace(' ', ''), platform.system(), ServerInfo.Info('ver').get_info()[:4]) )
    toclose = sys.stdout.write("Press Ctrl+C to exit -- rewritten by %s\r\n\r\n" % ServerInfo.Info('mail').get_info())
    stdtime = sys.stdout.write("%s Server started at - %s:%s \r\n\r\n" % (time.asctime(), sets.LHOST, sets.LPORT))
    ihost = sys.stdout.write("Using Injection Host %s \r\n" %sets.IQUERY)
    spacer = sys.stdout.write("\r\n")
    if sets.LOGS == 0:
        LogWindow(flag = False)
        print "Quiet Mode, Logging Disabled\r\n"
    elif sets.LOGS == 1:
        LogWindow(flag = True)
        print "Logging enabled\r\n"
    elif sets.LOGS == 2:
        print "Logging to file: session.log\r\n"
def scenario_spoof_mail():
    # This scenario shows how to send a spoof-mail, i.e. we create and send an email with a forged sender address

    # First, we specify sender the e-mail should show
    from_addr = "*****@*****.**"
    from_name = "Darth Vader"

    # Here we specify the receiver, please change this as you would like to see the outcome
    to_addr = "*****@*****.**"

    # Then we specify our server information
    # With the server info comes the real sender, while the email will look like it is from darth vader,
    # it will actually be from the user specified in ServerInfo class.
    server_info = ServerInfo.ServerInfo()

    # Using the specified server information we create a session
    mailer = Mailer.Mailer(server_info)
    mailer.connect_to_server()
    mailer.login_to_server()

    # We use the mail_creator class to generate Vaders' message
    mail_creator = MailCreator.MailCreator(from_name, from_addr)
    vaders_message = mail_creator.create_mail_darthvader(to_addr)

    # And finally send it. After that we shutdown the mail server again.
    mailer.send_mail(vaders_message)
    mailer.shutdown_server()
def scenario_phishing_simulation():
    # This scenario shows how to run a phishing simulation, like commonly applied in course of security awareness
    # campaigns.

    # It starts again with defining sender and server information. In this scenario actual and apparent sender match.
    server_info = ServerInfo.ServerInfo()
    from_addr = server_info.username
    from_name = "Basil Sattler"

    # Using the specified server information we create a session
    mailer = Mailer.Mailer(server_info)
    mailer.connect_to_server()
    mailer.login_to_server()

    # We load the target adresses from the file stored in the data directory. Please note that the file should have
    # the format it has in the example file
    adress_manager = AddressManager.AdressManager("../data/examples.xls")

    # We instantiate an object of the MailCreator class
    mail_creator = MailCreator.MailCreator(from_name, from_addr)

    # Typically phishing mails point to some external resources where the actual phishing happens. Such a link can be
    # embedded into the mail while creation. This can be used, for example, to track whether the recipient has
    # clicked on the link.
    link = "https://daten-analysieren.de/"

    # We iterate over the adresses the adress_manager provides, create dynamically a e-mail and send it.
    for to_adr in adress_manager.get_adresses():
        bequest_message = mail_creator.create_html_mail_bequest(to_adr, link)
        mailer.send_mail(bequest_message)

    # And finally shut down the server.
    mailer.shutdown_server()
示例#8
0
def setLocalIP():
    #强写本地IP地址到配置文件中去
    cf1 = ConfigParser.ConfigParser()
    cf1.read(MyUtil.cur_file_dir() + "/auto.ini")
    ipMac = ServerInfo.GetinnerIPMac()
    innerIP = str(ipMac[0])
    cf1.set("Configuration", "localIP", innerIP)
    cf1.write(open(MyUtil.cur_file_dir() + "/auto.ini", "w"))
示例#9
0
def getComputerId():
    """获取本机的唯一标识,如果从未安装过,则自动从UUID和MAC计算一个新ID出来
取19位长,并保存在操作系统目录下windows/system32/agentid
    """
    try:
        if os.path.isfile(ServerInfo.sysDir()+"/agentid"):
            f = getProperties(ServerInfo.sysDir()+"/agentid")
            return f['agentid']
        else:
            uid = str(uuid.uuid1())
            mac = str(ServerInfo.GetinnerIPMac()[1])
            tempid = base64.b64encode(uid+'_'+mac)
            tempid = tempid[:18]
            f = open(ServerInfo.sysDir()+"/agentid","w")
            #加上一个回车符,否则会取agentid错误
            f.write('agentid='+tempid+'\n')
            f.close()
            return tempid
    except:
        return "getDiskId_error"
示例#10
0
 def extract(self, filename, path):
     if not filename.endswith('/') or not filename.endswith('\\'):
         f = os.path.join(path, filename)
         dir = os.path.dirname(f)
         if not os.path.exists(dir):
             os.makedirs(dir)
         file(f, 'wb').write(self.zfile.read(filename))
     sys = ServerInfo.getSYSTEM()
     if  sys == "Windows":
         return 'extract file: '+filename+" to "+"\\"+path+"\\ \n"
     else:
         return 'extract file: '+filename+" to "+"/"+path+"/ \n"
示例#11
0
    def do_CONNECT(self):
        if sets.RHTTPS:
            self.get_urlcheck()
            self.get_headercheck()
            self.get_recv_headers()
            self.get_proxy()
            query = QueryHandler(self.command, self.path, self.headers,
                                 self.https, self.phost, self.pport)
            self.path, self.headers, self.uahdr, self.host, self.port, self.advhost = query.get_query(
            )
            self.get_newline()
            self.get_requestline()
            self.get_injectline()
            self.get_send_inject()
            self.get_send_headers()
            soc = self.proxy_sock()
            try:
                if self.connect_to(soc, self.host, self.port, self.advhost):
                    data = '%s 200 Connection Established\r\nProxy-Agent: %s/%s' % (
                        self.request_version,
                        ServerInfo.Info('name').get_info().replace(
                            ' ', ''), ServerInfo.Info('ver').get_info()[:3])
                    self.send_response_data('%s\r\n' % data)
                    self.send_response_data('\r\n')
                    self.get_response_header(data)
                    self.get_response_data(soc)
                    self.send_connection_close(soc)
                    self.del_garbage()
            except socket.error as msg:
                self.send_connection_error(msg)
                self.send_connection_close(soc)
                return
            except:
                return

        else:
            self.send_connection_error((501, 'method not allowed'))
            self.connection.close()
            return
示例#12
0
 def get_response_header(self, data):
     if not self.https:
         index = self.find_double_newline(data)
         if index >= 0:
             data = str(data[:index].split('\r\n\r\n')[0])
             if self.get_data_splitter(data):
                 self.send_connection_logger(Y+'++++++++++++ RESPONSE ++++++++++++\r\n' % data)
                 self.send_connection_logger('\r\n')
     elif self.get_data_splitter(data):
                 self.send_connection_logger(Y+'++++++++++++ RESPONSE ++++++++++++\r\n')
                 self.send_connection_logger(B+'[+] %s\r\n' % data)
                 self.send_connection_logger(G+'Client Connected! : %s/%s\r\n' % (ServerInfo.Info('name').get_info(), ServerInfo.Info('ver').get_info()[:3]))
                 self.send_connection_logger('\r\n')
示例#13
0
 def reload(self):
     """
     重新加载已经部署服务
     """
     for namespace in os.listdir(self.server_root):
         for application in os.listdir(
                 os.path.join(self.server_root, namespace)):
             for service in os.listdir(
                     os.path.join(self.server_root, namespace,
                                  application)):
                 server_info = ServerInfo.ServerInfo(namespace, \
                                                     application, \
                                                     service)
                 self.deploy(server_info)
                 self.cmpAndChange(server_info, self.STAT_DEPLOY,
                                   self.STAT_STOP)
示例#14
0
 def processDev(self, dev, time):
     dev_json = {}
     dev_json[CommonKeys.GPU_ID] = ServerInfo.getGPUGlobalId(dev[MinerKeys.GPU_ID])
     dev_json[CommonKeys.TEMPERATURE] = dev[MinerKeys.TEMPERATURE]
     dev_json[CommonKeys.GPU_VOLTAGE] = dev[MinerKeys.GPU_VOLTAGE]
     dev_json[CommonKeys.GPU_CLOCK] = dev[MinerKeys.GPU_CLOCK]
     dev_json[CommonKeys.MEM_CLOCK] = dev[MinerKeys.MEM_CLOCK]
     dev_json[CommonKeys.FAN_RPM] = dev[MinerKeys.FAN_RPM]
     dev_json[CommonKeys.HW_ERRORS] = dev[MinerKeys.HW_ERRORS]
     dev_json[CommonKeys.REJECTED] = dev[MinerKeys.REJECTED]
     dev_json[CommonKeys.ACCEPTED] = dev[MinerKeys.ACCEPTED]
     dev_json[CommonKeys.CURRENT_HASH_RATE] = int(dev[MinerKeys.CURRENT_HASH_RATE] * 1000)
     dev_json[CommonKeys.INTENSITY] = int(dev[MinerKeys.INTENSITY])
     dev_json[CommonKeys.TIME_SINCE_LAST_WORK] = time - dev[MinerKeys.LAST_WORK_TIME]
     dev_json[CommonKeys.TIME_SINCE_LAST_VALID_WORK] = time - dev[MinerKeys.LAST_VALID_WORK_TIME]
     return dev_json
示例#15
0
def SecretKey():
    """定义secret_key加密字串
    """
    global secret_key
    sys = ServerInfo.getSYSTEM()
    if  sys == "Windows":
        IFS = "\\"
    else:
        IFS = "/"
    try:
        cf = ConfigParser.ConfigParser()
        cf.read(cur_file_dir()+IFS+"key.ini")
        key = cf.get("main", "key")
        secret_key = binascii.b2a_base64(key)
        #如果读不到KEY,则强制指定一个KEY,但必须所有程序的配置 都一样,否则会出错无法通讯
        if secret_key == None:
            secret_key = 'UHV0WW91cktleUludG9UaGlzU3RyaW5n'
    except:
        secret_key = 'UHV0WW91cktleUludG9UaGlzU3RyaW5n'
示例#16
0
def build_root_servers_info_objects(servers_info_file_path):
    """
    builds ServerInfo objects for each root server
        :param servers_info: {list} the servers data parameters
        :returns: {list} list of server names for each root server
    """
    servers_info = get_master_root_servers()
    root_servers_names = set()
    for server_csv_data in servers_info.values:
        server_data = list()
        for i in range(len(server_csv_data)):
            if i in LIST_TYPE_ARGS:
                server_data.append(list())
                server_data[i].append(server_csv_data[i])
            else:
                server_data.append(server_csv_data[i])
        server_data.append("Root Domain")
        name_to_server_info_dict[server_data[SI.HOST_INDEX]] = SI.ServerInfo(
            server_data)
        root_servers_names.add(server_data[SI.HOST_INDEX])
    return root_servers_names
示例#17
0
def get_NS_for_domain(server, domain_to_check):
    """
    queries this server for NS in the given domain
        :param server: {ServerInfo} server to make dns query from
        :param domain_to_check: {string} the domain to query
        :returns: {list} names of servers known to server
    """
    server_data_dict = dict(
    )  # dictionary in the form of { server's name -> server's data }
    known_servers_names = set()  # a set of server names
    response = None
    resolver = dns.resolver.Resolver()

    # clears the default servers the resolver queries
    # [local COMM/dns and 8.8.8.8 (google)]
    resolver.nameservers.clear()
    server_name = None

    # adds the server's addresses to the servers queried
    # by resolver
    for address in name_to_server_info_dict[server][SI.HOST_ADDRESS]:
        resolver.nameservers.append(address)

    try:
        # queries the name server for the given domain
        query = dns.message.make_query(domain_to_check, dns.rdatatype.NS)
        response = dns.query.udp(query,
                                 str(address),
                                 timeout=UDP_QUERY_TIME_OUT)
    except dns.resolver.NXDOMAIN:
        print("No such Domain" + domain_to_check)
    except dns.resolver.Timeout:
        print(
            str(server) + " was queried for the domain " + domain_to_check +
            " and request timeout")
        return None
    except dns.exception.DNSException:
        print("Unhandled DNS exception")
    except Exception as e:
        print(e.__cause__)

    if response is None:
        return None

    # analyses respone and creates data lists
    if len(response.authority) > 0:
        for rr in response.authority[0].items:
            server_name = str(
                rr.mname) if rr.rdtype == dns.rdatatype.SOA else str(rr.target)
            known_servers_names.add(server_name)
            if server_name not in name_to_server_info_dict:
                server_data_dict[server_name] = create_new_server_data_list(
                    server_name)
                server_data_dict[server_name].append(
                    "Name server for domain " + '"' + str(domain_to_check) +
                    '"')
                server_data_dict[server_name].append(str(domain_to_check))
                add_server_data_from_query_response(
                    server_data_dict[server_name], rr)
            else:
                name_to_server_info_dict[server_name].add_rr_data(rr)

    if len(response.answer) > 0:
        for rr in response.answer[0].items:
            server_name = str(rr.target)
            known_servers_names.add(server_name)
            if server_name not in name_to_server_info_dict:
                server_data_dict[server_name] = create_new_server_data_list(
                    server_name)
                server_data_dict[server_name].append(
                    "Name server for domain " + '"' + str(domain_to_check) +
                    '"')
                server_data_dict[server_name].append(str(domain_to_check))
                add_server_data_from_query_response(
                    server_data_dict[server_name], rr)
            else:
                name_to_server_info_dict[server_name].add_rr_data(rr)

    for rr in response.additional:
        server_name = str(rr.name)
        known_servers_names.add(server_name)
        if server_name not in name_to_server_info_dict:
            server_data_dict[server_name] = create_new_server_data_list(
                server_name)
            server_data_dict[server_name].append("Name server for domain " +
                                                 '"' + str(domain_to_check) +
                                                 '"')
            server_data_dict[server_name].append(str(domain_to_check))
            add_server_data_from_query_response(server_data_dict[server_name],
                                                rr)
        else:
            name_to_server_info_dict[server_name].add_rr_data(rr)

    # builds a ServerInfo object for each server data list
    for server_data in server_data_dict.values():
        name_to_server_info_dict[server_data[SI.HOST_INDEX]] = SI.ServerInfo(
            server_data)
        known_servers_names.add(server_data[SI.HOST_INDEX])

    # builds a ServerInfo object for each server data list
    return known_servers_names
示例#18
0
文件: app.py 项目: snclucas/spaceenv
import ServerInfo as serverInfo
from db import DatabaseManager

import UserDocumentResource as userDoc
import NoEndpointResource as noDoc

from RateLimiter import RateLimiter

# api = falcon.API(middleware=[RateLimiter(limit=2)])
api = falcon.API()

database_manager = DatabaseManager.DatabaseManager()
database = database_manager.get_db()
user_manager = UserManager.UserManager(database)

api.add_route('/', serverInfo.ServerInfoHTML())
api.add_route('/server-info', serverInfo.ServerInfo())

api.add_route('/{endpoint_type}/{table}/docs/delete',
              userDoc.UserDocumentResource(database, user_manager))
api.add_route('/{endpoint_type}/{table}/docs/delete/{doc_id}',
              userDoc.UserDocumentResource(database, user_manager))

api.add_route('/{endpoint_type}/{table}/docs',
              userDoc.UserDocumentResource(database, user_manager))
api.add_route('/{endpoint_type}/{table}/docs/{doc_id}',
              userDoc.UserDocumentResource(database, user_manager))
api.add_route('/{endpoint_type}/{table}/docs/count',
              userDoc.UserDocumentResource(database, user_manager))
api.add_route('/{endpoint_type}/{table}/docs/delete_all',
              userDoc.UserDocumentResource(database, user_manager))
示例#19
0
    def run(self):
        '''首次读入定时调度配置,确认当前时间,设定离下一分钟的秒数,分析定时调度'''
        self.writeLog('Agent4Linux start.')
        while True:
            try:
                nowTime = string.split(time.strftime(
                    '%w,%m,%d,%H,%M,%S', time.localtime(time.time())),
                                       sep=',')
                timesWait = 60 - int(nowTime[5])
                #读入定时作业用的配置文件
                listcount = self.readCron(MyUtil.cur_file_dir() +
                                          '/crontab.ini')

                cf = ConfigParser.ConfigParser()
                cf.read(MyUtil.cur_file_dir() + "/agent.ini")
                MonitorProcess = cf.get(
                    "main", "MonitorProcess").encode("utf-8").split(',')

                allProcess = []
                _allPro = []
                _allProcess = []
                _allProcess = ServerInfo.getAllProcessNameId()
                for ProcessList in _allProcess:
                    allProcess.append(ProcessList[0])
                _allPro = ServerInfo.getAllProcessInfo()
                insertTime = time.strftime('%Y-%m-%d %H:%M:%S',
                                           time.localtime(time.time()))
                #循环需要定时守护的进程数
                for i in range(1, int(listcount)):
                    #如果当前进程中不存在守护的进程,调用定时守护启动程序,并发送重启信息给DB
                    if not str(AExe[i]).upper() in allProcess:
                        self.Cronjob(i, nowTime)
                        send = MyUtil.SendMsgToDB()
                        send.send(
                            _3ds.Encrypt('processRestart;' + str(innerIP) +
                                         ";" + str(AExe[i]) + ";" +
                                         str(ACmd[i]) + ";" + str(insertTime)))
                        send.sock.recv(socksize)
                        send.send(_3ds.Encrypt('end'))
                        send.closeSock()
                    else:
                        pass

                #如果当前进程中存在要监控的进程,循环找出该进程的相关信息发送至DB服务器
                for MProcess in MonitorProcess:
                    ProcessStatus = 'NOTRUN'
                    for MPro in _allPro:
                        #如果进程在所有进程中找到一个相同的就发进程状态消息
                        if str(MProcess).upper() == str(MPro[0]).upper():
                            send = MyUtil.SendMsgToDB()
                            #发现psutil取出的进程CPU使用率,需要除CPU个数,否则不准
                            send.send(
                                _3ds.Encrypt('insertProLog;' + innerIP + ";" +
                                             str(MPro[0]) + ";" +
                                             str(MPro[1]) + ";" +
                                             str(MPro[2]) + ";" +
                                             str(MPro[3]) + ";" +
                                             str(int(MPro[4]) / CPUCores) +
                                             ";" + str(insertTime)))
                            send.sock.recv(socksize)
                            send.send(_3ds.Encrypt('end'))
                            send.closeSock()
                            ProcessStatus = 'running'
                            break
                        else:
                            ProcessStatus = 'NOTRUN'
                    #如果全部检查后进程状态为未运行,发送进程未启动信息
                    if ProcessStatus == 'NOTRUN':
                        try:
                            send = MyUtil.SendMsgToDB()
                            send.send(
                                _3ds.Encrypt('NotRUNProess;' + innerIP + ";" +
                                             str(MProcess).upper() + ";" +
                                             str(insertTime)))
                            send.sock.recv(socksize)
                            send.send(_3ds.Encrypt('end'))
                        except:
                            self.writeLog("runCron.send.Error:" +
                                          str(sys.exc_info()[0]) +
                                          str(sys.exc_info()[1]))
                        finally:
                            send.closeSock()

                time.sleep(timesWait)
            except:
                self.writeLog("runCron Error:" + str(sys.exc_info()[0]) +
                              str(sys.exc_info()[1]))
                time.sleep(timesWait)
示例#20
0
import os
import ServerInfo
ru = lambda text: text.decode('utf-8', 'ignore')
ur = lambda text: text.encode('utf-8', 'ignore')
name = '%s.conf' % ServerInfo.Info('name').get_info().replace(' ', '')
path = '/'
conf = '%s%s%s' % (os.getcwd(), path, name)


class Sets:
    def __init__(self):
        self.LHOST = '127.0.0.1'
        self.LPORT = 8080
        self.FQUERY = ''
        self.MQUERY = ''
        self.BQUERY = ''
        self.RQUERY = ''
        self.CQUERY = ''
        self.IQUERY = ''
        self.ADBLOCKER = 0
        self.IMETHOD = 1
        self.ILINE = 0
        self.ISPLIT = 5
        self.RPORT = 0
        self.RPATH = 0
        self.ADMODE = 0
        self.CUSHDR0 = ''
        self.VALHDR0 = ''
        self.CUSHDR1 = ''
        self.VALHDR1 = ''
        self.CUSHDR2 = ''
示例#21
0
def updateSelf(cmd, cmdStr):
    """2011-01-13 update self
    """
    try:
        #print "updateself step 1"
        path = MyUtil.cur_file_dir()
        cmdStr = "cmd=downloads,file=update.zip,updateself=updateself,path=" + path
        cmd = MyUtil.splitCmd(cmdStr)
        reStr = downloads(cmd, cmdStr)
        if reStr[0] == int('-1'):
            return reStr[1]
        rs = ""
        #print "updateself step 2 ", reStr
        if reStr[0] == int('2'):
            """解压update.zip至当前目录下的update.tmp中"""
            zipout = MyUtil.UnZIP("update.zip", "update.tmp")
            #print "updateself step 3 unzip. zipout = ",zipout[0]
            if zipout[0] == '1':
                rs += zipout[1]
            '''检验update.tmp/config.ini是否存在'''
            if os.path.isfile("update.tmp/config.ini"):
                #print "updateself step 4 check config.ini"
                '''读取config.ini的配置'''
                cf = ConfigParser.ConfigParser()
                cf.read("update.tmp\\config.ini")
                md5Files = cf.get("filemd5", "md5Files")
                uAgent = cf.get("main", "updateAgentService")
                uCMDServer = cf.get("main", "updateCMDServer")
                uRunPro = cf.get("main", "RunPrograms")
                uremove = cf.get("main", "removeFiles")
                '''对需要的文件做MD5验证,通过则下一步'''
                md5FilePath = (MyUtil.cur_file_dir() + "\\update.tmp\\")
                _md5Files = md5Files.split(',')
                MD5Flag = False
                if _md5Files != None and md5FilePath != None and _md5Files != '' and md5FilePath != '':
                    for filemd5 in _md5Files:
                        '''循环比对指定文件的MD5码值'''
                        fileName, rightMD5 = filemd5.split(":")
                        filePath = md5FilePath + fileName
                        ret = string.split(md5sum(filePath))
                        if ret[0] == "-1" or ret[0] == "-2":
                            MD5Flag = False
                        elif ret[1] == rightMD5:
                            MD5Flag = True
                    #print "updateself step 5 check MD5, MD5Flag =",MD5Flag
                    if MD5Flag:
                        '''根据配置运行'''
                        #print "updateself step 6 update AgentService =",uAgent.upper()
                        if uAgent.upper() == "YES":
                            '''如果要更新Agentservices,则先杀掉进程,卸载服务,然后复制文件'''
                            '''再安装服务,运行服务。'''
                            p = os.popen(ServerInfo.sysDir() +
                                         '\\taskkill /IM AgentService.exe /F')
                            str1 = p.readlines()
                            for s in str1:
                                rs += s.decode('gbk').encode("utf-8")
                            p.close()
                            p = os.popen(ServerInfo.sysDir() +
                                         '\\sc delete AgentService 2>&1')
                            str1 = p.readlines()
                            for s in str1:
                                rs += s.decode('gbk').encode("utf-8")
                            p.close()
                            try:
                                shutil.copy2(
                                    md5FilePath + "AgentService.exe",
                                    os.path.join(MyUtil.cur_file_dir() +
                                                 "\\AgentService.exe"))
                            except:
                                #print "AgentService copy Error.",sys.exc_info()[0],sys.exc_info()[1]
                                pass
                            try:
                                shutil.copy2(
                                    md5FilePath + "w9xpopen.exe",
                                    os.path.join(MyUtil.cur_file_dir() +
                                                 "\\w9xpopen.exe"))
                            except:
                                pass
                            try:
                                shutil.copy2(
                                    md5FilePath + "MSVCR71.dll",
                                    os.path.join(MyUtil.cur_file_dir() +
                                                 "\\MSVCR71.dll"))
                            except:
                                pass
                            try:
                                shutil.copy2(
                                    md5FilePath + "setCfg.exe",
                                    os.path.join(MyUtil.cur_file_dir() +
                                                 "\\setCfg.exe"))
                            except:
                                pass

                            p = os.popen("setCfg.exe 2>&1")
                            str1 = p.readlines()
                            for s in str1:
                                rs += s.decode('gbk').encode("utf-8")
                            p.close()
                            p = os.popen(MyUtil.cur_file_dir() +
                                         "\\AgentService.exe -install 2>&1")
                            str1 = p.readlines()
                            for s in str1:
                                rs += s.decode('gbk').encode("utf-8")
                            p.close()
                            p = os.popen(
                                ServerInfo.sysDir() +
                                "\\sc config AgentService start= auto")
                            str1 = p.readlines()
                            for s in str1:
                                rs += s.decode('gbk').encode("utf-8")
                            p.close()
                            p = os.popen(ServerInfo.sysDir() +
                                         "\\sc start AgentService")
                            str1 = p.readlines()
                            for s in str1:
                                rs += s.decode('gbk').encode("utf-8")
                            p.close()

                        #print "updateself step 7, RunProcess= ",uRunPro.upper()
                        if uRunPro.upper() <> "NO":
                            """如果不是NO,则把要运行的程序绝对路径和执行名放在参数中,以逗号隔开
                            """
                            try:
                                Pros = uRunPro.split(",")
                                for Pro in Pros:
                                    p = os.popen(Pro)
                                    str1 = p.readlines()
                                    for s in str1:
                                        rs += s.decode('gbk').encode("utf-8")
                                    p.close()
                            except:
                                pass

                        #print "updateself step 8, RemoveFile= ",uremove.upper()
                        """如果不是NO,则把要删除的文件绝对路径放在参数中,以逗号隔开
                        """
                        if uremove.upper() <> "NO":
                            try:
                                removefiles = uremove.split(",")
                                for rfile in removefiles:
                                    shutil.rmtree(rfile)
                            except:
                                pass

                        #print "updateself step 9, Update CMDServer = ",uCMDServer.upper()
                        if uCMDServer.upper() == "YES":
                            '''如果需要更新CMDServer,则将tmp下的EXE复制到当前目录下加_后缀,'''
                            '''然后调用updateself.exe杀掉自身,让agentservice去定时启动CMDServer'''
                            try:
                                shutil.copy2(
                                    md5FilePath + "CMDServer.exe",
                                    os.path.join(MyUtil.cur_file_dir() +
                                                 "\\CMDServer.exe_"))
                            except:
                                pass
                            try:
                                shutil.copy2(
                                    md5FilePath + "w9xpopen.exe",
                                    os.path.join(MyUtil.cur_file_dir() +
                                                 "\\w9xpopen.exe"))
                            except:
                                pass
                            try:
                                shutil.copy2(
                                    md5FilePath + "MSVCR71.dll",
                                    os.path.join(MyUtil.cur_file_dir() +
                                                 "\\MSVCR71.dll"))
                            except:
                                pass
                            try:
                                shutil.copy2(
                                    md5FilePath + "updateself.exe",
                                    os.path.join(MyUtil.cur_file_dir() +
                                                 "\\updateself.exe"))
                            except:
                                pass
                            updateselflog('CMDServer更新完成.' +
                                          MyUtil.cur_file_dir())

                            #print "updateself step 10, run updateself.exe..."
                            try:
                                time.sleep(3)
                                p = subprocess.Popen('updateself.exe')
                                rs += "updateself.exe run over.\n"
                            except:
                                #print "updateself step X"
                                pass

                        #print "updateself step 11, remove update.tmp."
                        if os.path.isdir(md5FilePath):
                            '''全部运行完毕,删除tmp文件目录'''
                            shutil.rmtree(md5FilePath)

                        #return "1",rs
                        return rs
                    else:
                        #return "-1","MD5 check failed!文件MD5码验证与配置不一致!"
                        return "MD5 check failed!文件MD5码验证与配置不一致!"

                else:
                    #return "-1","config.ini md5Files is null.配置文件中没有需要比对的文件."
                    return "config.ini md5Files is null.配置文件中没有需要比对的文件."

            else:
                #return "-1","config.ini not found.更新配置文件未找到."
                return "config.ini not found.更新配置文件未找到."

        else:
            return reStr
    except:
        updateselflog("Client.updateSelf:" + str(sys.exc_info()[0]) +
                      str(sys.exc_info()[1]))
        #print sys.exc_info()[0],sys.exc_info()[1]
    finally:
        if os.path.isdir(md5FilePath):
            '''删除tmp文件目录'''
            shutil.rmtree(md5FilePath)
示例#22
0
def updateSelf(cmd,cmdStr):
    """2011-01-13 update self
    """
    try:
        print "updateself step 1"
        path = MyUtil.cur_file_dir()
        cmdStr = "cmd=downloads,file=update4Linux.zip,updateself=updateself,path="+path
        cmd = MyUtil.splitCmd(cmdStr)
        reStr = downloads(cmd, cmdStr)
        if reStr[0] == int('-1'):
            return reStr[1]
        rs =""
        print "updateself step 2 ", reStr
        if reStr[0] == int('2'):
            """解压update.zip至当前目录下的update.tmp中"""
            zipout = MyUtil.UnZIP("update4Linux.zip", "update.tmp")
            print "updateself step 3 unzip. zipout = ",zipout[0]
            if zipout[0] == '1':
                rs += zipout[1]
            '''检验update.tmp/config.ini是否存在'''
            if os.path.isfile("update.tmp/config.ini"):
                print "updateself step 4 check config.ini"
                '''读取config.ini的配置'''
                cf = ConfigParser.ConfigParser()
                cf.read("update.tmp/config.ini")
                md5Files = cf.get("filemd5","md5Files")
                uAgent = cf.get("main", "updateAgentService")
                uCMDServer = cf.get("main", "updateCMDServer")
                uRunPro = cf.get("main", "RunPrograms")
                uremove = cf.get("main", "removeFiles")

                '''对需要的文件做MD5验证,通过则下一步'''
                md5FilePath = (MyUtil.cur_file_dir()+"/update.tmp/")
                _md5Files = md5Files.split(',')
                MD5Flag = False
                if _md5Files != None and md5FilePath != None and _md5Files != '' and md5FilePath != '':
                    for filemd5 in _md5Files:
                        '''循环比对指定文件的MD5码值'''
                        fileName,rightMD5 = filemd5.split(":")
                        filePath = md5FilePath + fileName
                        ret = string.split(md5sum(filePath))
                        if ret[0] == "-1" or ret[0] == "-2":
                            MD5Flag = False
                        elif ret[1] == rightMD5:
                            MD5Flag = True
                    print "updateself step 5 check MD5, MD5Flag =",MD5Flag
                    if MD5Flag:
                        '''根据配置运行'''
                        print "updateself step 6 update Agent4Linux =",uAgent.upper()
                        if uAgent.upper() == "YES":
                            '''如果要更新Agent,则先杀掉进程,调用自更新脚本复制文件和启动服务'''
                            _allpronameid = ServerInfo.getAllProcessNameId()
                            for _name,_id in _allpronameid:
                                if _name.upper() == "Agent4Linux".upper():
                                    p = ServerInfo.Kill_Process_pid(_id)
                                    str1 = "find process "+str(_name)+", pid = "+str(_id)+", kill it!\n"
                                    rs += str1
                            try:
                                os.chmod(MyUtil.cur_file_dir()+"/updateself.sh",0755)
                                p = os.popen(MyUtil.cur_file_dir()+"/updateself.sh")
                                str1 = p.readlines()
                                for s in str1:
                                    rs += s
                                p.close()
                            except:
                                print "updateAgent4LinuxError:"+str(sys.exc_info()[0]) + str(sys.exc_info()[1])
                                pass
                        print "updateself step 7, RunProcess= ",uRunPro.upper()
                        if uRunPro.upper() <> "NO" :
                            """如果不是NO,则把要运行的程序绝对路径和执行名放在参数中,以逗号隔开
                            """
                            try:
                                Pros = uRunPro.split(",")
                                for Pro in Pros:
                                    p = os.popen(Pro)
                                    str1 = p.readlines()
                                    for s in str1:
                                        rs += s
                                    p.close()                                     
                            except:
                                pass
                        
                        print "updateself step 8, RemoveFile= ",uremove.upper()
                        """如果不是NO,则把要删除的文件绝对路径放在参数中,以逗号隔开
                        """
                        if uremove.upper() <> "NO":
                            try:
                                removefiles = uremove.split(",")
                                for rfile in removefiles:
                                    shutil.rmtree(rfile)
                            except:
                                pass
                        
                        print "updateself step 9, Update CMDServer4Linux = ",uCMDServer.upper()
                        if uCMDServer.upper() == "YES":
                            '''如果需要更新CMDServer4Linux,调用updateCMDServer.sh完成更新'''
#                            _allpronameid = getAllProcessNameId()
#                            for _name,_id in _allpronameid:
#                                if _name.upper() == "CMDServer4Linux".upper():
#                                    p = Kill_Process_pid(_id)
#                                    str1 = "find process "+str(_name)+", pid = "+str(_id)+", kill it!\n"
#                                    rs += str1
                            try:
                                os.chmod(MyUtil.cur_file_dir()+"/updateCMDServer.sh",0755)
                                p = os.popen(MyUtil.cur_file_dir()+"/updateCMDServer.sh")
                                str1 = p.readlines()
                                for s in str1:
                                    rs += s
                                p.close()
                            except:
                                print "updateCMDServerError:"+str(sys.exc_info()[0]) + str(sys.exc_info()[1])
                                pass
                                                       
                        print "updateself step 10, remove update.tmp."
                        if os.path.isdir(md5FilePath):
                            '''全部运行完毕,删除tmp文件目录'''
                            shutil.rmtree(md5FilePath)

                        #return "1",rs
                        return rs
                    else:
                        #return "-1","MD5 check failed!文件MD5码验证与配置不一致!"
                        return "MD5 check failed!文件MD5码验证与配置不一致!"
                            
                else:
                    #return "-1","config.ini md5Files is null.配置文件中没有需要比对的文件."
                    return "config.ini md5Files is null.配置文件中没有需要比对的文件."
                
            else:
                #return "-1","config.ini not found.更新配置文件未找到."
                return "config.ini not found.更新配置文件未找到."
            
        else:
            return reStr
    except:
        updateselflog("Client.updateSelf:"+str(sys.exc_info()[0])+str(sys.exc_info()[1]))
        print sys.exc_info()[0],sys.exc_info()[1]
    finally:
        if os.path.isdir(md5FilePath):
            '''删除tmp文件目录'''
            shutil.rmtree(md5FilePath)
示例#23
0
 def run(self):
     '''首次读入定时调度配置,确认当前时间,设定离下一分钟的秒数,分析定时调度'''
     self.writeLog('Agent4Linux start.')
     while True:
         try:
             nowTime=string.split(time.strftime('%w,%m,%d,%H,%M,%S',time.localtime(time.time())), sep=',')
             timesWait=60-int(nowTime[5])
             #读入定时作业用的配置文件
             listcount=self.readCron(MyUtil.cur_file_dir()+'/crontab.ini')
             
             cf = ConfigParser.ConfigParser()
             cf.read(MyUtil.cur_file_dir()+"/agent.ini")
             MonitorProcess = cf.get("main", "MonitorProcess").encode("utf-8").split(',')
             
             allProcess = []
             _allPro = []
             _allProcess = []
             _allProcess = ServerInfo.getAllProcessNameId()
             for ProcessList in _allProcess:
                 allProcess.append(ProcessList[0])
             _allPro = ServerInfo.getAllProcessInfo()
             insertTime = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
             #循环需要定时守护的进程数
             for i in range(1,int(listcount)):
                 #如果当前进程中不存在守护的进程,调用定时守护启动程序,并发送重启信息给DB
                 if not str(AExe[i]).upper() in allProcess:
                     self.Cronjob(i,nowTime)
                     send = MyUtil.SendMsgToDB()
                     send.send(_3ds.Encrypt('processRestart;'+str(innerIP)+";"+str(AExe[i])+";"+str(ACmd[i])+";"+str(insertTime)))
                     send.sock.recv(socksize)
                     send.send(_3ds.Encrypt('end'))
                     send.closeSock()
                 else:
                     pass
             
             #如果当前进程中存在要监控的进程,循环找出该进程的相关信息发送至DB服务器    
             for MProcess in MonitorProcess:
                 ProcessStatus = 'NOTRUN'
                 for MPro in _allPro:
                     #如果进程在所有进程中找到一个相同的就发进程状态消息
                     if str(MProcess).upper() == str(MPro[0]).upper():
                         send = MyUtil.SendMsgToDB()
                         #发现psutil取出的进程CPU使用率,需要除CPU个数,否则不准
                         send.send(_3ds.Encrypt('insertProLog;'+innerIP+";"+str(MPro[0])+";"+str(MPro[1])+";"+str(MPro[2])+";"+str(MPro[3])+";"+str(int(MPro[4])/CPUCores)+";"+str(insertTime)))
                         send.sock.recv(socksize)
                         send.send(_3ds.Encrypt('end'))
                         send.closeSock()
                         ProcessStatus = 'running'
                         break
                     else:
                         ProcessStatus = 'NOTRUN'
                 #如果全部检查后进程状态为未运行,发送进程未启动信息
                 if ProcessStatus == 'NOTRUN':
                     try:
                         send = MyUtil.SendMsgToDB()
                         send.send(_3ds.Encrypt('NotRUNProess;'+innerIP+";"+str(MProcess).upper()+";"+str(insertTime)))
                         send.sock.recv(socksize)
                         send.send(_3ds.Encrypt('end'))
                     except:
                         self.writeLog("runCron.send.Error:"+str(sys.exc_info()[0])+str(sys.exc_info()[1]))
                     finally:
                         send.closeSock()
                         
             time.sleep(timesWait)
         except:
             self.writeLog("runCron Error:"+str(sys.exc_info()[0])+str(sys.exc_info()[1]))
             time.sleep(timesWait)
示例#24
0
    cf1.set("Configuration", "OuterIP", setWAIIP)
    cf1.set("Configuration", "OS", setOS)
    cf1.set("Configuration", "CodeSet", setCodeSet)
    cf1.set("Configuration", "CPUCores", setCPUCores)
    cf1.set("Configuration", "hostname", setHostname)
    cf1.set("Configuration", "Platform", setPlatform)
    cf1.set("Configuration", "CPUInfo", setCPUInfo)
    cf1.set("Configuration", "SystemDirectory", setSysDir)
    cf1.set("Configuration", "Physicalmemory", setPHMEM)
    cf1.write(open(MyUtil.cur_file_dir() + "/auto.ini", "w"))


if __name__ == '__main__':
    try:
        #配置文件获取
        ipMac = ServerInfo.GetinnerIPMac()
        waiIP = ServerInfo.getWaiIP()
        innerIP = str(ipMac[0])
        innerMAC = str(ipMac[1])
        swaiIP = waiIP[0]
        setOS = ServerInfo.getOS()
        CodeSet = ServerInfo.codeset()
        Cores = ServerInfo.getCPUCores()
        sHostname = ServerInfo.hostname()
        sPlatform = ServerInfo.getSYSTEM()
        sCPUInfo = ServerInfo.cpuInfo()
        sSysDir = ServerInfo.sysDir()
        sPHMEM = str(ServerInfo.getPhyMem()[0])
        writeCfgfile(innerIP, innerMAC, swaiIP, setOS, CodeSet, Cores,
                     sHostname, sPlatform, sSysDir, sCPUInfo, sPHMEM)
        print "CheckOK.检查配置文件完成".decode('utf-8')
示例#25
0
from ServerInfo import *

server = ServerInfo('92.119.148.19')
print(server.get_player_info())
#print(server.ping())
示例#26
0
文件: setCfg.py 项目: derekzhan/ioms
    cf1.set("Configuration","OS",setOS)
    cf1.set("Configuration","CodeSet",setCodeSet)
    cf1.set("Configuration","CPUCores",setCPUCores)
    cf1.set("Configuration","hostname",setHostname)
    cf1.set("Configuration","Platform",setPlatform)
    cf1.set("Configuration","CPUInfo",setCPUInfo)
    cf1.set("Configuration","SystemDirectory",setSysDir)
    cf1.set("Configuration","Physicalmemory",setPHMEM)
    cf1.write(open(MyUtil.cur_file_dir()+"/auto.ini", "w"))
 
  
if __name__ == '__main__':
    try:
        #配置文件获取
        ipMac = ServerInfo.GetinnerIPMac()
        waiIP = ServerInfo.getWaiIP()
        innerIP = str(ipMac[0])
        innerMAC = str(ipMac[1])
        swaiIP = waiIP[0]
        setOS = ServerInfo.getOS()
        CodeSet = ServerInfo.codeset()
        Cores = ServerInfo.getCPUCores()
        sHostname = ServerInfo.hostname()
        sPlatform = ServerInfo.getSYSTEM()
        sCPUInfo = ServerInfo.cpuInfo()
        sSysDir = ServerInfo.sysDir()
        sPHMEM = str(ServerInfo.getPhyMem()[0])
        writeCfgfile(innerIP,innerMAC,swaiIP,setOS,CodeSet,Cores,sHostname,sPlatform,sSysDir,sCPUInfo,sPHMEM)
        print "CheckOK.检查配置文件完成".decode('utf-8')
    except:
        print "RunError.运行错误".decode('utf-8')
示例#27
0
    "taunt": "Are you feeling okay, {0.author.mention}?",
    "thank": "Don't flatter yourself, {0.author.mention}",
    "respect":
    "I would, but the chat is too full of your ego for me to send a message right now, {0.author.mention}",
    "forbiddenName": "No"
}

voiceLineCommands = [
    "taunt", "xx3", "x8", "respect", "xx1", "x0", "thank", "x5", "xx6", "c4",
    "cc3", "ccc4"
]

recognizedServers = {
    "bigChiv":
    ServerInfo.ServerInfo("query.aspx?id=24",
                          "Moorland Skirmishers | Gracious Welcome",
                          "66.151.138.224:3170", "Chivalry: Medieval Warfare"),
    "smallChiv":
    ServerInfo.ServerInfo("query.aspx?id=25",
                          "Moorland Skirmishers | Map Testing",
                          "66.151.138.224:3175", "Chivalry: Medieval Warfare"),
    "bigMord":
    ServerInfo.ServerInfo("query.aspx?id=28",
                          "Moorland Skirmishers ❊ The Moor Wild West",
                          "66.151.138.224:13301", "Mordhau"),
    "smallMord":
    ServerInfo.ServerInfo("query.aspx?id=33",
                          "Moorland Skirmishers ❊ Gracious Welcome",
                          "66.151.138.224:13306", "Mordhau")
}
示例#28
0
def updateSelf(cmd,cmdStr):
    """2011-01-13 update self
    """
    try:
        #print "updateself step 1"
        path = MyUtil.cur_file_dir()
        cmdStr = "cmd=downloads,file=update.zip,updateself=updateself,path="+path
        cmd = MyUtil.splitCmd(cmdStr)
        reStr = downloads(cmd, cmdStr)
        if reStr[0] == int('-1'):
            return reStr[1]
        rs =""
        #print "updateself step 2 ", reStr
        if reStr[0] == int('2'):
            """解压update.zip至当前目录下的update.tmp中"""
            zipout = MyUtil.UnZIP("update.zip", "update.tmp")
            #print "updateself step 3 unzip. zipout = ",zipout[0]
            if zipout[0] == '1':
                rs += zipout[1]
            '''检验update.tmp/config.ini是否存在'''
            if os.path.isfile("update.tmp/config.ini"):
                #print "updateself step 4 check config.ini"
                '''读取config.ini的配置'''
                cf = ConfigParser.ConfigParser()
                cf.read("update.tmp\\config.ini")
                md5Files = cf.get("filemd5","md5Files")
                uAgent = cf.get("main", "updateAgentService")
                uCMDServer = cf.get("main", "updateCMDServer")
                uRunPro = cf.get("main", "RunPrograms")
                uremove = cf.get("main", "removeFiles")

                '''对需要的文件做MD5验证,通过则下一步'''
                md5FilePath = (MyUtil.cur_file_dir()+"\\update.tmp\\")
                _md5Files = md5Files.split(',')
                MD5Flag = False
                if _md5Files != None and md5FilePath != None and _md5Files != '' and md5FilePath != '':
                    for filemd5 in _md5Files:
                        '''循环比对指定文件的MD5码值'''
                        fileName,rightMD5 = filemd5.split(":")
                        filePath = md5FilePath + fileName
                        ret = string.split(md5sum(filePath))
                        if ret[0] == "-1" or ret[0] == "-2":
                            MD5Flag = False
                        elif ret[1] == rightMD5:
                            MD5Flag = True
                    #print "updateself step 5 check MD5, MD5Flag =",MD5Flag
                    if MD5Flag:
                        '''根据配置运行'''
                        #print "updateself step 6 update AgentService =",uAgent.upper()
                        if uAgent.upper() == "YES":
                            '''如果要更新Agentservices,则先杀掉进程,卸载服务,然后复制文件'''
                            '''再安装服务,运行服务。'''
                            p = os.popen(ServerInfo.sysDir()+'\\taskkill /IM AgentService.exe /F')
                            str1 = p.readlines()
                            for s in str1:
                                rs += s.decode('gbk').encode("utf-8")
                            p.close()                         
                            p = os.popen(ServerInfo.sysDir()+'\\sc delete AgentService 2>&1')
                            str1 = p.readlines()
                            for s in str1:
                                rs += s.decode('gbk').encode("utf-8")
                            p.close()                             
                            try:
                                shutil.copy2(md5FilePath+"AgentService.exe", os.path.join(MyUtil.cur_file_dir()+"\\AgentService.exe"))
                            except:
                                #print "AgentService copy Error.",sys.exc_info()[0],sys.exc_info()[1]
                                pass
                            try:
                                shutil.copy2(md5FilePath+"w9xpopen.exe", os.path.join(MyUtil.cur_file_dir()+"\\w9xpopen.exe"))
                            except:
                                pass
                            try:
                                shutil.copy2(md5FilePath+"MSVCR71.dll", os.path.join(MyUtil.cur_file_dir()+"\\MSVCR71.dll"))
                            except:
                                pass
                            try:
                                shutil.copy2(md5FilePath+"setCfg.exe", os.path.join(MyUtil.cur_file_dir()+"\\setCfg.exe"))
                            except:
                                pass
                            
                            p = os.popen("setCfg.exe 2>&1")
                            str1 = p.readlines()
                            for s in str1:
                                rs += s.decode('gbk').encode("utf-8")
                            p.close()                             
                            p = os.popen(MyUtil.cur_file_dir()+"\\AgentService.exe -install 2>&1")
                            str1 = p.readlines()
                            for s in str1:
                                rs += s.decode('gbk').encode("utf-8")
                            p.close()                             
                            p = os.popen(ServerInfo.sysDir()+"\\sc config AgentService start= auto")
                            str1 = p.readlines()
                            for s in str1:
                                rs += s.decode('gbk').encode("utf-8")
                            p.close()                             
                            p = os.popen(ServerInfo.sysDir()+"\\sc start AgentService")
                            str1 = p.readlines()
                            for s in str1:
                                rs += s.decode('gbk').encode("utf-8")
                            p.close()                             

                        #print "updateself step 7, RunProcess= ",uRunPro.upper()
                        if uRunPro.upper() <> "NO" :
                            """如果不是NO,则把要运行的程序绝对路径和执行名放在参数中,以逗号隔开
                            """
                            try:
                                Pros = uRunPro.split(",")
                                for Pro in Pros:
                                    p = os.popen(Pro)
                                    str1 = p.readlines()
                                    for s in str1:
                                        rs += s.decode('gbk').encode("utf-8")
                                    p.close()                                     
                            except:
                                pass
                        
                        #print "updateself step 8, RemoveFile= ",uremove.upper()
                        """如果不是NO,则把要删除的文件绝对路径放在参数中,以逗号隔开
                        """
                        if uremove.upper() <> "NO":
                            try:
                                removefiles = uremove.split(",")
                                for rfile in removefiles:
                                    shutil.rmtree(rfile)
                            except:
                                pass
                        
                        #print "updateself step 9, Update CMDServer = ",uCMDServer.upper()
                        if uCMDServer.upper() == "YES":
                            '''如果需要更新CMDServer,则将tmp下的EXE复制到当前目录下加_后缀,'''
                            '''然后调用updateself.exe杀掉自身,让agentservice去定时启动CMDServer'''
                            try:
                                shutil.copy2(md5FilePath+"CMDServer.exe", os.path.join(MyUtil.cur_file_dir()+"\\CMDServer.exe_"))  
                            except:
                                pass
                            try:
                                shutil.copy2(md5FilePath+"w9xpopen.exe", os.path.join(MyUtil.cur_file_dir()+"\\w9xpopen.exe"))
                            except:
                                pass
                            try:
                                shutil.copy2(md5FilePath+"MSVCR71.dll", os.path.join(MyUtil.cur_file_dir()+"\\MSVCR71.dll"))
                            except:
                                pass
                            try:
                                shutil.copy2(md5FilePath+"updateself.exe", os.path.join(MyUtil.cur_file_dir()+"\\updateself.exe"))
                            except:
                                pass                            
                            updateselflog('CMDServer更新完成.'+MyUtil.cur_file_dir())
                            
                            #print "updateself step 10, run updateself.exe..."
                            try:
                                time.sleep(3)
                                p = subprocess.Popen('updateself.exe')
                                rs += "updateself.exe run over.\n"                              
                            except:
                                #print "updateself step X"
                                pass
                                                        
                        #print "updateself step 11, remove update.tmp."
                        if os.path.isdir(md5FilePath):
                            '''全部运行完毕,删除tmp文件目录'''
                            shutil.rmtree(md5FilePath)

                        #return "1",rs
                        return rs
                    else:
                        #return "-1","MD5 check failed!文件MD5码验证与配置不一致!"
                        return "MD5 check failed!文件MD5码验证与配置不一致!"
                            
                else:
                    #return "-1","config.ini md5Files is null.配置文件中没有需要比对的文件."
                    return "config.ini md5Files is null.配置文件中没有需要比对的文件."
                
            else:
                #return "-1","config.ini not found.更新配置文件未找到."
                return "config.ini not found.更新配置文件未找到."
            
        else:
            return reStr
    except:
        updateselflog("Client.updateSelf:"+str(sys.exc_info()[0])+str(sys.exc_info()[1]))
        #print sys.exc_info()[0],sys.exc_info()[1]
    finally:
        if os.path.isdir(md5FilePath):
            '''删除tmp文件目录'''
            shutil.rmtree(md5FilePath)