Ejemplo n.º 1
0
    async def repost_messages(self):
        self.servers = Servers()
        self.server_list = self.servers.get()
        repost_count = 0
        # remove old discord embed
        channels = [server["channel"] for server in self.server_list]
        channels = list(set(channels))  # remove duplicated channels
        for channel in channels:
            try:
                await client.get_channel(channel).purge(
                    check=lambda m: m.author == client.user)
            except Exception as e:
                self.print_to_console(
                    f'ERROR: Unable to delete bot messages.\n{e}')
            finally:
                await asyncio.sleep(SEND_DELAY)

        # send new discord embed
        for server in self.server_list:
            try:
                message = await client.get_channel(
                    server["channel"]).send(embed=self.get_embed(server))
                server["message_id"] = message.id
                repost_count += 1
            except Exception as e:
                self.message_error_count += 1
                self.print_to_console(
                    f'ERROR: Failed to send message for server: {self.get_server_info(server)}. Missing permissions ?\n{e}'
                )
            finally:
                self.servers.update_server_file(self.server_list)
                await asyncio.sleep(SEND_DELAY)
        self.print_to_console(f'{repost_count} messages reposted.')
Ejemplo n.º 2
0
class DNSProxy(SocketServer.ThreadingMixIn, SocketServer.UDPServer):
    SocketServer.ThreadingMixIn.daemon_threads = True
    allow_reuse_address = True

    def __init__(self, address=("0.0.0.0", 53), VERBOSE=2):
        self.VERBOSE = VERBOSE
        print "listening at:", address
        SELF = self

        class ProxyHandle(SocketServer.BaseRequestHandler):
            # Ctrl-C will cleanly kill all spawned threads
            daemon_threads = True
            # much faster rebinding
            allow_reuse_address = True

            def handle(self):
                data = self.request[0]
                socket = self.request[1]
                addr = self.client_address
                DNSProxy.transfer(SELF, data, addr, socket)

        SocketServer.UDPServer.__init__(self, address, ProxyHandle)

    def loadConfig(self, config):
        self.DNSS = config.DNSS
        self.servers = Servers()
        for s in self.DNSS:
            assert len(s) == 3
            ip, port, type_of_server = s
            self.servers.addDNSServer(DNSServer(ip, port, type_of_server))
        self.WHITE_DNSS = config.WHITE_DNSS
        for ws in self.WHITE_DNSS:
            assert len(ws) == 4
            ip, port, type_of_server, white_list = ws
            self.servers.addWhiteDNSServer(DNSServer(ip, port, type_of_server, white_list))


    def transfer(self, query_data, addr, server):
        if not query_data: return
        domain = bytetodomain(query_data[12:-4])
        qtype = struct.unpack('!h', query_data[-4:-2])[0]
        print 'domain:%s, qtype:%x, thread:%d' % \
              (domain, qtype, threading.activeCount())
        sys.stdout.flush()
        response = None
        for i in range(9):
            response, dnsserv = self.servers.query(query_data)
            if response:
                # udp dns packet no length
                server.sendto(response[2:], addr)
                if int(self.VERBOSE) > 0:
                    dnsserv.showInfo(query_data, 0)
                    dnsserv.showInfo(response[2:], 1)
                break
        if response is None:
            print "[ERROR] Tried 9 times and failed to resolve %s" % domain
        return
Ejemplo n.º 3
0
 def find_status_by_server(self, serial_no=None):
     if serial_no is not None and serial_no != "":
         s = Servers(self._rpcurl)
         server_rec = s.find_by_serial_no(serial_no)
         if server_rec is not None:
             installstate = self._proxy.dc2.deployment.installstate.get(
                 {"server_id": server_rec["_id"]})
             if installstate is not None:
                 return installstate
     return None
Ejemplo n.º 4
0
    def __init__(self, bot):
        print('\n----------------')
        print('Github: \thttps://github.com/DiscordGSM/DiscordGSM')
        print('Discord:\thttps://discord.gg/Cg4Au9T')
        print('----------------\n')

        self.bot = bot
        self.servers = Servers()
        self.server_list = self.servers.get()
        self.messages = []
        self.message_error_count = self.current_display_server = 0
Ejemplo n.º 5
0
 def loadConfig(self, config):
     self.DNSS = config.DNSS
     self.servers = Servers()
     for s in self.DNSS:
         assert len(s) == 3
         ip, port, type_of_server = s
         self.servers.addDNSServer(DNSServer(ip, port, type_of_server, self.VERBOSE))
     self.WHITE_DNSS = config.WHITE_DNSS
     for ws in self.WHITE_DNSS:
         assert len(ws) == 4
         ip, port, type_of_server, white_list = ws
         self.servers.addWhiteDNSServer(DNSServer(ip, port, type_of_server, self.VERBOSE, white_list))
Ejemplo n.º 6
0
class DNSProxy(SocketServer.ThreadingMixIn, SocketServer.UDPServer):
    SocketServer.ThreadingMixIn.daemon_threads = True
    allow_reuse_address = True

    def __init__(self, address=("0.0.0.0", 53), VERBOSE=2):
        self.VERBOSE = VERBOSE
        print "listening at:", address
        SELF = self

        class ProxyHandle(SocketServer.BaseRequestHandler):
            # Ctrl-C will cleanly kill all spawned threads
            daemon_threads = True
            # much faster rebinding
            allow_reuse_address = True

            def handle(self):
                data = self.request[0]
                socket = self.request[1]
                addr = self.client_address
                DNSProxy.transfer(SELF, data, addr, socket)

        SocketServer.UDPServer.__init__(self, address, ProxyHandle)

    def loadConfig(self, config):
        self.DNSS = config.DNSS
        self.servers = Servers()
        for s in self.DNSS:
            assert len(s) == 3
            ip, port, type_of_server = s
            self.servers.addDNSServer(DNSServer(ip, port, type_of_server, self.VERBOSE))
        self.WHITE_DNSS = config.WHITE_DNSS
        for ws in self.WHITE_DNSS:
            assert len(ws) == 4
            ip, port, type_of_server, white_list = ws
            self.servers.addWhiteDNSServer(DNSServer(ip, port, type_of_server, self.VERBOSE, white_list))


    def transfer(self, query_data, addr, server):
        if not query_data: return
        domain = bytetodomain(query_data[12:-4])
        qtype = struct.unpack('!h', query_data[-4:-2])[0]
        #print 'domain:%s, qtype:%x, thread:%d' % (domain, qtype, threading.activeCount())
        sys.stdout.flush()
        response = None
        for i in range(9):
            response = self.servers.query(query_data)
            if response:
                # udp dns packet no length
                server.sendto(response[2:], addr)
                break
        if response is None:
            print "[ERROR] Tried 9 times and failed to resolve %s" % domain
        return
Ejemplo n.º 7
0
Archivo: hosts.py Proyecto: sadig/DC2
 def find_by_server_serial(self, serial_no=None):
     if serial_no is not None:
         s = Servers(self._rpcurl)
         server_rec = s.find_by_serial_no(serial_no)
         if server_rec is not None:
             host_list = self._proxy.dc2.inventory.hosts.find(
                 {"server_id": server_rec["_id"]})
             if (host_list is not None and
                     len(host_list) > 0 and
                     host_list[0] is not None):
                 return host_list[0]
     return None
Ejemplo n.º 8
0
Archivo: hosts.py Proyecto: sadig/DC2
 def find_by_server_mac(self, mac_addr=None):
     if mac_addr is not None:
         s = Servers(self._rpcurl)
         server_rec = s.find_by_mac(mac_addr)
         if server_rec is not None:
             host_list = self._proxy.dc2.inventory.hosts.find(
                 {"server_id": server_rec["_id"]})
             if (host_list is not None and
                     len(host_list) > 0 and
                     host_list[0] is not None):
                 return host_list[0]
     return None
Ejemplo n.º 9
0
Archivo: bot.py Proyecto: Cant90/TRDC
    async def refresh_discord_embed(self):
        # refresh servers.json cache
        self.servers = Servers()
        self.server_list = self.servers.get()

        # remove old discord embed
        channels = [server['channel'] for server in self.server_list]
        channels = list(set(channels)) # remove duplicated channels
        for channel in channels:
            await bot.get_channel(channel).purge(check=lambda m: m.author==bot.user)
        
        # send new discord embed
        self.messages = [await bot.get_channel(s['channel']).send(content=('frontMessage' in s and s['frontMessage'].strip()) and s['frontMessage'] or None, embed=self.get_embed(s)) for s in self.server_list]
Ejemplo n.º 10
0
def test_sp():
    network_file = "../Networks/isno_30_4"
    #network_file = "../Networks/isno_5_2"
    n = Network(network_file)

    filename_tree = "../DataComposite/linear_structure.txt"
    loops = False
    t = ServicesTree(loops, filename_tree)

    #servers_file = "../DataComposite/test-cost.txt"
    servers_file = "../DataComposite/isno_30_4-t2-costs.txt"
    s = Servers(t, n, servers_file)

    #users_dem_file = "../DataComposite/test-users.txt"
    #users_top_file = "../DataComposite/test-user_topo.txt"
    users_dem_file = "../DataComposite/isno_30_4-t2-users.txt"
    users_top_file = "../DataComposite/isno_30_4-t2-user_topo.txt"
    u = Users(n, users_dem_file, users_top_file)

    cs = CompositeServices(n,
                           t,
                           s,
                           u,
                           opt_cong=True,
                           congestion_cost=True,
                           cong_opt_method="sp",
                           cong_of="fortz")

    print("Starting EA:")
    ea = EACompositeServices(cs, optimize_routing_weights=True)

    ea_par = {"max_evaluations": 50000}
    #bestsol = ea.run_evol_alg(ea_pars = ea_par)

    ea.run_evol_alg(True, max_cpus=4, ea_pars=ea_par)
Ejemplo n.º 11
0
def test_germany():
    network_file = "../Networks/germany50.txt"
    n = Network(network_file, "sndlib")

    filename_tree = "../DataComposite/linear_structure.txt"
    loops = False
    t = ServicesTree(loops, filename_tree)

    servers_file = "../DataComposite/germany50-cost.txt"
    s = Servers(t, n, servers_file)

    users_dem_file = "../DataComposite/germany50-users.txt"
    users_top_file = "../DataComposite/germany50-user_topo.txt"
    u = Users(n, users_dem_file, users_top_file)

    cs = CompositeServices(n, t, s, u, opt_cong=True, congestion_cost=True)

    print("Starting EA:")
    ea = EACompositeServices(cs)

    #bestsol = ea.run_evol_alg()
    bestsol = ea.run_evol_alg(True, max_cpus=50)

    of = cs.of_normalized_penalty(bestsol, True)
    print("Objective function:", of)
Ejemplo n.º 12
0
def test_mo():
    network_file = "../Networks/geant.txt"
    n = Network(network_file, "sndlib")

    filename_tree = "../DataComposite/linear_structure.txt"
    loops = False
    t = ServicesTree(loops, filename_tree)

    servers_file = "../DataComposite/geant-t2-costs.txt"
    s = Servers(t, n, servers_file)

    users_dem_file = "../DataComposite/geant-t2-users.txt"
    users_top_file = "../DataComposite/geant-t2-user_topo.txt"
    u = Users(n, users_dem_file, users_top_file)

    cs = CompositeServices(n,
                           t,
                           s,
                           u,
                           opt_cong=True,
                           congestion_cost=True,
                           cong_of="fortz")

    ea_par = {"max_evaluations": 10000}
    ea = EACompositeServices(cs)
    #ea = EACompositeServices(cs,optimize_routing_weights = True)

    ea.run_mo(ea_pars=ea_par, plot=True)
Ejemplo n.º 13
0
def test_tree():
    network_file = "../Networks/test_tree"
    n = Network(network_file)

    filename_tree = "../DataComposite/tree_structure.txt"
    loops = False
    t = ServicesTree(loops, filename_tree)

    servers_file = "../DataComposite/test_tree-cost.txt"
    s = Servers(t, n, servers_file)

    users_dem_file = "../DataComposite/test_tree-users.txt"
    users_top_file = "../DataComposite/test_tree-user_topo.txt"
    u = Users(n, users_dem_file, users_top_file)

    cs = CompositeServices(n, t, s, u, opt_cong=True, congestion_cost=True)

    print(cs)

    print("Starting EA:")
    ea = EACompositeServices(cs)
    ea_par = {"max_evaluations": 5000}
    bestsol = ea.run_evol_alg(ea_pars=ea_par)
    #bestsol = ea.run_evol_alg(True, max_cpus = 50)

    of = cs.of_normalized_penalty(bestsol, True)
    print("Objective function:", of)
Ejemplo n.º 14
0
 def update_status_by_server(
     self,
     serial_no=None,
     status=None,
         progress=None):
     if serial_no is not None and serial_no != "":
         s = Servers(self._rpcurl)
         server_rec = s.find_by_serial_no(serial_no)
         if server_rec is not None:
             installstate = self._proxy.dc2.deployment.installstate.get(
                 {"server_id": server_rec["_id"]})
             if installstate is not None:
                 result = self._update_status(
                     installstate, status, progress)
                 return result
     return None
Ejemplo n.º 15
0
def test_germany():
    network_file = "../Networks/germany50.txt"
    n = Network(network_file, "sndlib")

    filename_tree = "../DataComposite/linear_structure.txt"
    loops = False
    t = ServicesTree(loops, filename_tree)

    servers_file = "../DataComposite/germany50-cost.txt"
    s = Servers(t, n, servers_file)

    users_dem_file = "../DataComposite/germany50-users.txt"
    users_top_file = "../DataComposite/germany50-user_topo.txt"
    u = Users(n, users_dem_file, users_top_file)

    cs = CompositeServices(n, t, s, u, opt_cong=False, congestion_cost=False)

    hcs = CompositeHeuristic(cs)

    order = list(range(len(cs.users)))

    sol = hcs.heuristic(order)
    print(sol)

    of = cs.of_normalized_penalty(sol, True)
    print("Objective function:", of)
Ejemplo n.º 16
0
def test1():
    n = Network("../Networks/isno_5_2")
    filename_tree = "../DataComposite/linear_structure.txt"
    loops = False
    t = ServicesTree(loops, filename_tree)
    s = Servers(t, n, "../DataComposite/isno_5_2-costs.txt")
    u = Users(n, "../DataComposite/isno_5_2-users.txt",
              "../DataComposite/isno_5_2-user_topo.txt")

    cs = CompositeServices(n,
                           t,
                           s,
                           u,
                           opt_cong=False,
                           congestion_cost=True,
                           cong_of="fortz")

    hcs = CompositeHeuristic(cs)

    order = list(range(len(cs.users)))

    sol = hcs.heuristic(order)

    print(sol)

    of = cs.of_normalized_penalty(sol, True)
    print("Objective function:", of)
Ejemplo n.º 17
0
    async def refresh_discord_embed(self):
        # refresh servers.json cache
        self.servers = Servers()
        self.server_list = self.servers.get()

        # remove old discord embed
        channels = [server['channel'] for server in self.server_list]
        channels = list(set(channels))  # remove duplicated channels
        for channel in channels:
            await bot.get_channel(channel).purge(
                check=lambda m: m.author == bot.user)

        # send new discord embed
        self.messages = []
        for server in self.server_list:
            if ('frontMessage' in server and server['frontMessage'] != ''):
                self.messages.append(await bot.get_channel(
                    server['channel']).send(server['frontMessage']))
            self.messages.append(await bot.get_channel(
                server['channel']).send(embed=self.get_embed(server)))
Ejemplo n.º 18
0
def test2():
    n = Network("../Networks/isno_5_2")
    filename_tree = "../DataComposite/linear_structure.txt"
    loops = False
    t = ServicesTree(loops, filename_tree)
    s = Servers(t, n, "../DataComposite/test-cost.txt")
    u = Users(n, "../DataComposite/test-users.txt",
              "../DataComposite/test-user_topo.txt")

    cs = CompositeServices(n, t, s, u, opt_cong=True, congestion_cost=True)
    print(cs)
Ejemplo n.º 19
0
 def loadConfig(self, config):
     self.DNSS = config.DNSS
     self.servers = Servers()
     for s in self.DNSS:
         assert len(s) == 3
         ip, port, type_of_server = s
         self.servers.addDNSServer(DNSServer(ip, port, type_of_server, self.VERBOSE))
     self.WHITE_DNSS = config.WHITE_DNSS
     for ws in self.WHITE_DNSS:
         assert len(ws) == 4
         ip, port, type_of_server, white_list = ws
         self.servers.addWhiteDNSServer(DNSServer(ip, port, type_of_server, self.VERBOSE, white_list))
Ejemplo n.º 20
0
    def __init__(self, apikey=None, timeout=None, verbose=False):
        headers = {}
        if apikey:
            headers['apikey'] = apikey

        _api = API(timeout=timeout, verbose=verbose)

        def api(method, uri, attrs={}):
            return _api.request(method, self.API_URL + uri, attrs, headers)

        self.appliances = Appliances(api)
        self.servers = Servers(api)
        self.backups = Backups(api)
Ejemplo n.º 21
0
    def setup_session(self):
        """Creates instances

        This method is called when the game is first started.
        It will create instances for players, map generators
        and servers.

        15 servers instances will be created
        """
        self.player_1 = Hacker()
        self.player_2 = Hacker()
        self.servers = []
        for srv in range(15):
            self.servers.append(Servers(srv))
        self.wmap = Worldmap(self.servers)
Ejemplo n.º 22
0
def test5():
    filename_tree = "../DataComposite/tree_syn_structure.txt"
    loops = False
    t = ServicesTree(loops, filename_tree)
    n = Network("../Networks/geant.txt", "sndlib")

    s = Servers(t, n, "../DataComposite/geant-tree-syn-costs.txt")
    u = Users(n, "../DataComposite/geant-tree-syn-users.txt",
              "../DataComposite/geant-tree-syn-user_topo.txt")

    cs = CompositeServices(n, t, s, u, opt_cong=False, congestion_cost=False)

    #print(cs)

    print(cs.min_cost())
    print(cs.minimum_first_hop())
Ejemplo n.º 23
0
def test1():
    from composite_heuristic import CompositeHeuristic
    n = Network("../Networks/isno_5_2")
    filename_tree = "../DataComposite/linear_structure.txt"
    loops = False
    t = ServicesTree(loops, filename_tree)
    s = Servers(t, n, "../DataComposite/isno_5_2-costs.txt")
    u = Users(n, "../DataComposite/isno_5_2-users-v2.txt",
              "../DataComposite/isno_5_2-user_topo.txt")

    cs = CompositeServices(n, t, s, u, opt_cong=True, congestion_cost=True)
    #print(cs)

    hcs = CompositeHeuristic(cs)
    order = list(range(len(cs.users)))
    sol = hcs.heuristic(order)
    cs.of_normalized_penalty(sol, printcomps=True)
Ejemplo n.º 24
0
def test_tree_syn_structure():
    filename_tree = "../DataComposite/tree_syn_structure.txt"
    loops = False
    t = ServicesTree(loops, filename_tree)
    n = Network("../Networks/geant.txt", "sndlib")
    u = Users(n)
    u.generate_users(len(t), target_alu=0.25, target_delay=0.8)
    u.write_demands("../DataComposite/geant-treesyn-alu25-del08-users.txt")
    u.write_user_topo(
        "../DataComposite/geant-treesyn-alu25-del08-user_topo.txt")
    s = Servers(t, n)
    s.generate_servers()
    s.write_servers("../DataComposite/geant-treesyn-alu25-del08-costs.txt")
Ejemplo n.º 25
0
def test3():
    filename_tree = "../DataComposite/linear_structure.txt"
    loops = False
    t = ServicesTree(loops, filename_tree)
    #n = Network("../Networks/isno_30_4")
    n = Network("../Networks/isno_5_2")
    u = Users(n)
    u.generate_users(len(t), target_alu=0.25, target_delay=0.8)
    u.write_demands("../DataComposite/isno_5_2-t2-users.txt")
    u.write_user_topo("../DataComposite/isno_5_2-t2-user_topo.txt")
    #u.write_demands("../DataComposite/isno_30_4-t1-users.txt")
    #u.write_user_topo("../DataComposite/isno_30_4-t1-user_topo.txt")
    s = Servers(t, n)
    s.generate_servers()
    s.write_servers("../DataComposite/isno_5_2-t2-costs.txt")
Ejemplo n.º 26
0
def test1():
    #etwork_file = "../Networks/isno_30_4"
    network_file = "../Networks/isno_5_2"
    n = Network(network_file)

    filename_tree = "../DataComposite/linear_structure.txt"
    loops = False
    t = ServicesTree(loops, filename_tree)

    #servers_file = "../DataComposite/test-cost.txt"
    #servers_file = "../DataComposite/isno_30_4-t1-costs.txt"
    servers_file = "../DataComposite/isno_5_2-t1-costs.txt"
    s = Servers(t, n, servers_file)

    #users_dem_file = "../DataComposite/test-users.txt"
    #users_top_file = "../DataComposite/test-user_topo.txt"
    #users_dem_file = "../DataComposite/isno_30_4-t1-users.txt"
    #users_top_file = "../DataComposite/isno_30_4-t1-user_topo.txt"
    users_dem_file = "../DataComposite/isno_5_2-t2-users.txt"
    users_top_file = "../DataComposite/isno_5_2-t1-user_topo.txt"

    u = Users(n, users_dem_file, users_top_file)

    cs = CompositeServices(n,
                           t,
                           s,
                           u,
                           opt_cong=False,
                           congestion_cost=True,
                           cong_of="fortz")

    print("Starting EA:")
    ea_par = {"max_evaluations": 500}
    ea = EACompositeServices(cs)

    assig = ea.run_evol_alg(ea_pars=ea_par)
    #assig = ea.run_evol_alg(True, max_cpus = 50)

    print("Best solution:")
    print(assig)
Ejemplo n.º 27
0
def test_geant():
    network_file = "../Networks/geant.txt"
    n = Network(network_file, "sndlib")

    #filename_tree = "../DataComposite/tree_syn_structure.txt"
    filename_tree = "../DataComposite/linear_structure_loops.txt"
    loops = True
    t = ServicesTree(loops, filename_tree)

    #servers_file = "../DataComposite/geant-loops-costs.txt"
    servers_file = "../DataComposite/geant-lin-alu30-del09-costs.txt"

    s = Servers(t, n, servers_file)

    #users_dem_file = "../DataComposite/geant-treeloops-alu25-del07-users.txt"
    users_dem_file = "../DataComposite/geant-lin-alu30-del09-users.txt"
    #users_top_file = "../DataComposite/geant-treeloops-alu25-del07-user_topo.txt"
    users_top_file = "../DataComposite/geant-user_topo.txt"

    u = Users(n, users_dem_file, users_top_file)

    #    cs = CompositeServices(n, t, s, u, opt_cong = True, cong_opt_method = "sp",
    #                           congestion_cost = True, cong_of = "fortz")

    cs = CompositeServices(n,
                           t,
                           s,
                           u,
                           opt_cong=False,
                           congestion_cost=False,
                           cong_of="fortz")

    ea_par = {"max_evaluations": 20000, "pop_size": 100}
    ea = EACompositeServices(cs)
    #ea = EACompositeServices(cs,optimize_routing_weights = True)

    assig = ea.run_evol_alg(ea_pars=ea_par)

    print("Best solution:")
    print(assig)
Ejemplo n.º 28
0
    def run(self):
        """ Begin the simulation and record the system variables during execution. """
        # Initialise the beginning parameters of the simulation
        servers = Servers(self.total_servers)
        self.event_handler = M1M2EventHandler()
        self.event_handler.start()

        # Begin iteration of events, record arrivals for checking
        self.count_arrival = 0
        self.arrival = {"handover": 0, "new": 0}
        while self.count_arrival < self.total_arrival:
            # Collect next event from the event handler
            current_event = self.event_handler.next()
            # Update simulation time
            self.sim_time = current_event.time()

            if current_event.type == "arrival":
                # Arrival event received
                priority = current_event.path
                self.count_arrival += 1
                self.arrival[priority] += 1

                # Create new arrival event
                self.event_handler.add(
                    M1M2Event(priority, "arrival", current_event.time()))

                # Check server available
                if (len(servers) > self.threshold) or \
                        (priority == "handover" and servers.is_free()):
                    # Begin serving the client.
                    current_event.served_by(servers.allocate())

                    # All event handler to manage departure
                    self.event_handler.add(current_event)
                    continue

                # No servers were available therefore the event is blocked
                self.event_handler.block(
                    current_event)  # Arriving client has been blocked

            else:
                # Departure event received
                servers.deallocate(
                    current_event.served_by())  # Free the server
                self.event_handler.depart(
                    current_event)  # Event recorded as departed.
Ejemplo n.º 29
0
def test1():
    #network_file = "../Networks/isno_30_4"
    network_file = "../Networks/geant.txt"
    n = Network(network_file, "sndlib")

    filename_tree = "../DataComposite/linear_structure.txt"
    loops = False
    t = ServicesTree(loops, filename_tree)

    #    servers_file = "../DataComposite/isno_30_4-t1-costs.txt"
    servers_file = "../DataComposite/geant-t3-costs.txt"
    s = Servers(t, n, servers_file)

    users_dem_file = "../DataComposite/geant-t3-users.txt"
    #    users_dem_file = "../DataComposite/isno_30_4-t1-users.txt"
    users_top_file = "../DataComposite/geant-t3-user_topo.txt"
    #    users_top_file = "../DataComposite/isno_30_4-t1-user_topo.txt"
    u = Users(n, users_dem_file, users_top_file)

    cs = CompositeServices(n,
                           t,
                           s,
                           u,
                           opt_cong=True,
                           congestion_cost=True,
                           cong_opt_method="sp",
                           cong_of="fortz")

    print("Starting EA:")
    ea = DeapComposite(cs, optimize_routing_weights=True)

    #ea.run_evol_alg({"num_gens": 100})

    _, _, f = ea.run_mo({"max_evaluations": 10000, "algorithm": "spea"})

    numpy.savetxt("front.csv", f)
Ejemplo n.º 30
0
def test2():
    network_file = "../Networks/isno_30_4"
    #network_file = "../Networks/isno_5_2"
    n = Network(network_file)

    filename_tree = "../DataComposite/linear_structure.txt"
    loops = False
    t = ServicesTree(loops, filename_tree)

    #servers_file = "../DataComposite/test-cost.txt"
    servers_file = "../DataComposite/isno_30_4-t1-costs.txt"
    s = Servers(t, n, servers_file)

    #users_dem_file = "../DataComposite/test-users.txt"
    #sers_top_file = "../DataComposite/test-user_topo.txt"
    users_dem_file = "../DataComposite/isno_30_4-t1-users.txt"
    users_top_file = "../DataComposite/isno_30_4-t1-user_topo.txt"
    u = Users(n, users_dem_file, users_top_file)

    cs = CompositeServices(n,
                           t,
                           s,
                           u,
                           opt_cong=False,
                           congestion_cost=True,
                           cong_of="mlu")

    hcs = CompositeHeuristic(cs)

    order = list(range(len(cs.users)))

    sol = hcs.heuristic(order)
    print(sol)

    of = cs.of_normalized_penalty(sol, True)
    print("Objective function:", of)
Ejemplo n.º 31
0
    def run(self):
        """ Begin the simulation of a MMCC system. Process the information until
        termination criteria is meet.
        """

        # Initialise the beginning parameters of the simulation
        servers = Servers(self.total_servers)  # Set up server handler
        self.event_handler = EventHandler()  # Set up the event handler

        start_event = Event("arrival", 0)  # Construct the first event object
        start_event.departure_time -= start_event.arrival_time  # Reset times
        start_event.arrival_time = 0  # Reset times

        self.event_handler.add(start_event)  # Create the first event

        # Begin iteration of events, record arrivals for checking
        self.count_arrival = 0
        while self.count_arrival < self.total_arrival:
            # Collect next event from the event handler
            current_event = self.event_handler.next()
            # Update simulation time
            self.sim_time = current_event.time()

            if current_event.type == "arrival":
                # Create new arrival event
                self.event_handler.add(Event('arrival', current_event.time()))
                # Record number of arrivals
                self.count_arrival += 1

                # Check if any server is available
                if not servers.is_free():
                    self.event_handler.block(current_event)
                    continue

                # Begin serving the client.
                current_event.served_by(servers.allocate())
                # All event handler to manage departure
                self.event_handler.add(current_event)

            else:
                # Departure event received
                servers.deallocate(current_event.served_by())
                self.event_handler.depart(current_event)
Ejemplo n.º 32
0
class asciiMap():

    neutral = "N"
    hostile = "X"
    hacked = "H"

    # Servers
    server0 = Servers(0, 100, 200, "N")
    server1 = Servers(1, 100, 200, "N")
    server2 = Servers(2, 100, 200, "N")
    server3 = Servers(3, 100, 200, "N")
    server4 = Servers(4, 100, 200, "N")
    server5 = Servers(5, 100, 200, "N")
    server6 = Servers(6, 100, 200, "N")
    server7 = Servers(7, 100, 200, "N")
    server8 = Servers(8, 100, 200, "N")
    server9 = Servers(9, 100, 200, "N")
    server10 = Servers(10, 100, 200, "N")
    server11 = Servers(11, 100, 200, "N")
    server12 = Servers(12, 100, 200, "N")
    server13 = Servers(13, 100, 200, "N")
    server14 = Servers(14, 100, 200, "N")
    server15 = Servers(15, 100, 200, "N")

    #area = "...................." + server0 + "......\n..........." + server1 + "...............\n....." + server2 + ".....................\n...........................\n........." + server3 + ".........." + server4 + "......\n..." + server5 + ".........." + server6 + "............\n......" + server7 + "..........." + server8 + "........\n.........................." + server9 + "\n...........................\n...........................\n.." + server10 + "..........." + server11 + server12 + "...........\n............" + server13 + "........" + server14 + "...." + server15 + "\n"

    def __init__(self, server0, server1, server2, server3, server4, server5,
                 server6, server7, server8, server9, server10, server11,
                 server12, server13, server14, server15):
        self.server0 = server0
        self.server1 = server1
        self.server2 = server2
        self.server3 = server3
        self.server4 = server4
        self.server5 = server5
        self.server6 = server6
        self.server7 = server7
        self.server8 = server8
        self.server9 = server9
        self.server10 = server10
        self.server11 = server11
        self.server12 = server12
        self.server13 = server13
        self.server14 = server14
        self.server15 = server15

    #def get_area(self):
    #return self.area

    def get_status(self):
        return self.server0.state

    def get_map_state(self):
        area = "...................." + self.server0.state + "......\n..........." + self.server1.state + "...............\n....." + self.server2.state + ".....................\n...........................\n........." + self.server3.state + ".........." + self.server4.state + "......\n..." + self.server5.state + ".........." + self.server6.sate + "............\n......" + self.server7.state + "..........." + self.server8.state + "........\n.........................." + self.server9.state + "\n...........................\n...........................\n.." + self.server10.state + "..........." + self.server11.state + self.server12.state + "...........\n............" + self.server13.state + "........" + self.server14.state + "...." + self.server15.state + "\n"
        return area
Ejemplo n.º 33
0
from servers import Servers

script = r"""
defs="/etc/login.defs"
min=$(grep "^UID_MIN" $defs)
max=$(grep "^UID_MAX" $defs)
awk -F':' -v "min=${min##UID_MIN}" -v "max=${max##UID_MAX}" '{ if ( $3 >= min && $3 <= max) print $1 }' /etc/passwd
"""

ignoredUsers = ["ubuntu", "test_01", "temp"]

s = Servers()
s.loadHostsFrom("ip.txt")
for host, result in s.ssh(script):
    users = result.stdout.splitlines()
    for u in users:
        if u not in ignoredUsers:
            print(host + "\t" + u)
Ejemplo n.º 34
0
def run():
    ## FORMAT: type_optimization network_file services_tree instance_file results_file
    ## type_optimization:
    ##      nc - no congestion
    ##      d - congestion costs; shortest path delays
    ##      sp - congestion costs; EA optimizing weights
    ##      oc - congestion costs; MILP optimizaing congestion
    ## lnc, ld, lsp, loc - the same as before but with loops on the service tree

    ## network file - assuming sndlib format
    ## services tree - file with "tree" of services
    ## instance_file - defines "name" of instance
    ## assuming: instance_file + "-users.txt" - users demands
    ## assuming: instance_file + "-user_topo.txt" - users topologies
    ## assuming: instance_file + "-costs.txt" - server costs
    ## results_file: prefix of the files for results
    ## - files will be results_file + "-stats.txt" and results_file+ "-pop.txt"
    ## Options:
    ## -mo - do multiobjective optimization (NSGA 2)
    ## -p numcpus - activates parallel evaluation of OF with numcpus as maximum
    ## -ev maxevals - maximum number of evaluations (default: 10000)
    ## -mr rate - set mutation rate (per element)
    ## -lr rate - local opt rate (per individual)
    ## -r runs - number of runs (1 if not specified)
    ## -w weights - weights for the OF - fh, e2e, cost, congestion (split by ,)

    network_file = sys.argv[2]
    n = Network(network_file, "sndlib")  #, engine = "igraph")

    filename_tree = sys.argv[3]
    if sys.argv[1][0] == "l":
        loops = True
    else:
        loops = False
    t = ServicesTree(loops, filename_tree)

    servers_file = sys.argv[4] + "-costs.txt"
    s = Servers(t, n, servers_file)

    users_dem_file = sys.argv[4] + "-users.txt"
    users_top_file = sys.argv[4] + "-user_topo.txt"
    u = Users(n, users_dem_file, users_top_file)

    optimize_routing_weig = False
    if sys.argv[1] == "nc" or sys.argv[1] == "lnc":
        cs = CompositeServices(n,
                               t,
                               s,
                               u,
                               opt_cong=False,
                               congestion_cost=False,
                               cong_of="fortz")
    elif sys.argv[1] == "d" or sys.argv[1] == "ld":
        cs = CompositeServices(n,
                               t,
                               s,
                               u,
                               opt_cong=False,
                               congestion_cost=True,
                               cong_of="fortz")
    elif sys.argv[1] == "oc" or sys.argv[1] == "loc":
        cs = CompositeServices(n,
                               t,
                               s,
                               u,
                               opt_cong=True,
                               congestion_cost=True,
                               cong_opt_method="milp",
                               cong_of="fortz")
    elif sys.argv[1] == "sp" or sys.argv[1] == "lsp":
        cs = CompositeServices(n,
                               t,
                               s,
                               u,
                               opt_cong=True,
                               congestion_cost=True,
                               cong_opt_method="sp",
                               cong_of="fortz")
        optimize_routing_weig = True

    ## options
    par = False
    maxcpus = 1
    multiobj = False
    numruns = 1
    eapars = {}
    if len(sys.argv) > 6:
        i = 6
        while i < len(sys.argv):
            if sys.argv[i] == "-p":
                par = True
                maxcpus = int(sys.argv[i + 1])
                i += 2
            elif sys.argv[i] == "-mo":
                multiobj = True
                i += 1
            elif sys.argv[i] == "-ev":
                eapars["max_evaluations"] = int(sys.argv[i + 1])
                i += 2
            elif sys.argv[i] == "-mr":
                eapars["mutation_rate"] = float(sys.argv[i + 1])
                i += 2
            elif sys.argv[i] == "-lr":
                eapars["local_opt_rate"] = float(sys.argv[i + 1])
                i += 2
            elif sys.argv[i] == "-r":
                numruns = int(sys.argv[i + 1])
                i += 2
            elif sys.argv[i] == "-w":
                wstr = sys.argv[i + 1]
                tokens = wstr.split(",")
                w = {}
                w["fh"] = float(tokens[0])
                w["e2e"] = float(tokens[1])
                w["cost"] = float(tokens[2])
                if cs.congestion_cost and len(tokens) > 3:
                    w["congestion"] = float(tokens[3])
                cs.set_weights(w)
                print(cs.weights)
                i += 2
            else:
                print("Invalid option")
                sys.exit(1)

    res = {}

    if multiobj:
        res_keys = [
            "type", "network", "tree", "instance", "popsize", "evals",
            "mutation_rate", "local_rate"
        ]
    else:
        res_keys = [
            "type", "network", "tree", "instance", "popsize", "evals",
            "selected", "elites", "mutation_rate", "local_rate", "of_value",
            "of_cost", "of_e2e", "of_fh", "of_cong"
        ]

    for k in res_keys:
        res[k] = []

    network_name = sys.argv[2].split("/").pop()
    tree_name = sys.argv[3].split("/").pop()
    instance_name = sys.argv[4].split("/").pop()

    for r in range(numruns):

        start = timeit.default_timer()

        ea = EACompositeServices(
            cs, optimize_routing_weights=optimize_routing_weig)

        res["type"].append(sys.argv[1])
        res["network"].append(network_name)
        res["tree"].append(tree_name)
        res["instance"].append(instance_name)

        if multiobj:
            file_run = sys.argv[5] + "-run" + str(r)
            res_ea = ea.run_mo(ea_pars=eapars,
                               display=False,
                               save_file=file_run)

            #res["popsize"].append(res_ea["popsize"])
            #res["evals"].append(res_ea["evals"])
            #res["mutation_rate"].append(res_ea["mutation_rate"])
            #res["local_rate"].append(res_ea["local_rate"])

            #res_pd = pd.DataFrame(data = res)
            #res_pd.to_csv(sys.argv[5] + "-results.csv")
        else:
            if sys.argv[5] == 'None':
                _, res_ea = ea.run_evol_alg(parallel=par,
                                            max_cpus=maxcpus,
                                            ea_pars=eapars)
            else:
                file_run = sys.argv[5] + "-run" + str(r)
                _, res_ea = ea.run_evol_alg(parallel=par,
                                            max_cpus=maxcpus,
                                            ea_pars=eapars,
                                            save_file=file_run)

                res["of_value"].append(res_ea["of_value"])
                res["of_fh"].append(res_ea["of_fh"])
                res["of_e2e"].append(res_ea["of_e2e"])
                res["of_cost"].append(res_ea["of_cost"])
                res["of_cong"].append(res_ea["of_cong"])

                res["popsize"].append(res_ea["popsize"])
                res["evals"].append(res_ea["evals"])
                res["selected"].append(res_ea["selected"])
                res["elites"].append(res_ea["elites"])
                res["mutation_rate"].append(res_ea["mutation_rate"])
                res["local_rate"].append(res_ea["local_rate"])

                res_pd = pd.DataFrame(data=res)
                res_pd.to_csv(sys.argv[5] + "-results.csv")

        stop = timeit.default_timer()
        print('Time EA: ', stop - start)
Ejemplo n.º 35
0
         #'156.154.71.1',
         '208.67.222.222',
         #'208.67.220.220',
         #'198.153.192.1',
         #'198.153.194.1',
         #'74.207.247.4',
         #'209.244.0.3',
         #'8.26.56.26'
         ]
DPORT = 53                # default dns port 53
TIMEOUT = 1               # set timeout 5 second
VERBOSE = 0

from servers import Servers
from dnsserver import DNSServer
ss=Servers()
for host in DHOSTS:
    ss.addDNSServer(DNSServer(host))

#-------------------------------------------------------------
# Hexdump Cool :)
# default width 16
#--------------------------------------------------------------
def hexdump( src, width=16 ):
    FILTER=''.join([(len(repr(chr(x)))==3) and chr(x) or '.' for x in range(256)])
    result=[]
    for i in xrange(0, len(src), width):
        s = src[i:i+width]
        hexa = ' '.join(["%02X"%ord(x) for x in s])
        printable = s.translate(FILTER)
        result.append("%04X   %s   %s\n" % (i, hexa, printable))
Ejemplo n.º 36
0
class DiscordGSM():
    def __init__(self, bot):
        print('\n----------------')
        print('Github: \thttps://github.com/DiscordGSM/DiscordGSM')
        print('Discord:\thttps://discord.gg/Cg4Au9T')
        print('----------------\n')

        self.bot = bot
        self.servers = Servers()
        self.server_list = self.servers.get()
        self.messages = []
        self.message_error_count = self.current_display_server = 0

    def start(self):
        self.print_to_console(f'Starting DiscordGSM v{VERSION}...')
        self.query_servers.start()

    def cancel(self):
        self.query_servers.cancel()
        self.print_servers.cancel()
        self.presense_load.cancel()

    async def on_ready(self):
        # set username and avatar
        icon_file_name = 'images/discordgsm' + ('DGSM_TOKEN' in os.environ
                                                and '-heroku' or '') + '.png'
        with open(icon_file_name, 'rb') as file:
            try:
                await bot.user.edit(username='******', avatar=file.read())
            except:
                pass

        # print info to console
        print('\n----------------')
        print(f'Logged in as:\t{bot.user.name}')
        print(f'Robot ID:\t{bot.user.id}')
        app_info = await bot.application_info()
        print(f'Owner ID:\t{app_info.owner.id} ({app_info.owner.name})')
        print('----------------\n')

        self.print_presense_hint()
        self.presense_load.start()

        await self.set_channels_permissions()
        self.print_to_console(
            f'Query server and send discord embed every {REFRESH_RATE} seconds...'
        )
        await self.refresh_discord_embed()
        self.print_servers.start()

    # query the servers
    @tasks.loop(seconds=REFRESH_RATE)
    async def query_servers(self):
        server_count = self.servers.query()
        self.print_to_console(f'{server_count} servers queried')

    # pre-query servers before ready
    @query_servers.before_loop
    async def before_query_servers(self):
        self.print_to_console('Pre-Query servers...')
        server_count = self.servers.query()
        self.print_to_console(f'{server_count} servers queried')
        await self.bot.wait_until_ready()
        await self.on_ready()

    # send messages to discord
    @tasks.loop(seconds=REFRESH_RATE)
    async def print_servers(self):
        if self.message_error_count < 20:
            updated_count = 0
            for i in range(len(self.server_list)):
                try:
                    await self.messages[i].edit(
                        content=('frontMessage' in self.server_list[i] and
                                 self.server_list[i]['frontMessage'].strip())
                        and self.server_list[i]['frontMessage'] or None,
                        embed=self.get_embed(self.server_list[i]))
                    updated_count += 1
                except:
                    self.message_error_count += 1
                    self.print_to_console(
                        f'ERROR: message {i} fail to edit, message deleted or no permission. Server: {self.server_list[i]["addr"]}:{self.server_list[i]["port"]}'
                    )

            self.print_to_console(f'{updated_count} messages updated')
        else:
            self.message_error_count = 0
            self.print_to_console(f'Message ERROR reached, refreshing...')
            await self.refresh_discord_embed()

    # refresh discord presense
    @tasks.loop(minutes=PRESENCE_RATE)
    async def presense_load(self):
        # 1 = display number of servers, 2 = display total players/total maxplayers, 3 = display each server one by one every 10 minutes
        if len(self.server_list) == 0:
            activity_text = f'Command: {DGSM_PREFIX}dgsm'
        if PRESENCE_TYPE <= 1:
            activity_text = f'{len(self.server_list)} game servers'
        elif PRESENCE_TYPE == 2:
            total_activeplayers = total_maxplayers = 0
            for server in self.server_list:
                server_cache = ServerCache(server['addr'], server['port'])
                data = server_cache.get_data()
                if data and server_cache.get_status() == 'Online':
                    total_activeplayers += int(data['players'])
                    total_maxplayers += int(data['maxplayers'])

            activity_text = f'{total_activeplayers}/{total_maxplayers} active players' if total_maxplayers > 0 else '0 players'
        elif PRESENCE_TYPE >= 3:
            if self.current_display_server >= len(self.server_list):
                self.current_display_server = 0

            server_cache = ServerCache(
                self.server_list[self.current_display_server]['addr'],
                self.server_list[self.current_display_server]['port'])
            data = server_cache.get_data()
            if data and server_cache.get_status() == 'Online':
                activity_text = f'{data["players"]}/{data["maxplayers"]} on {data["name"]}' if int(
                    data["maxplayers"]) > 0 else '0 players'
            else:
                activity_text = None

            self.current_display_server += 1

        if activity_text != None:
            await bot.change_presence(status=discord.Status.online,
                                      activity=discord.Activity(
                                          name=activity_text, type=3))
            self.print_to_console(
                f'Discord presence updated | {activity_text}')

    # set channels permissions before sending new messages
    async def set_channels_permissions(self):
        channels = [server['channel'] for server in self.server_list]
        channels = list(set(channels))  # remove duplicated channels
        for channel in channels:
            try:
                await bot.get_channel(channel).set_permissions(
                    bot.user,
                    read_messages=True,
                    send_messages=True,
                    reason='Display servers embed')
                self.print_to_console(
                    f'Channel: {channel} | Permissions: read_messages, send_messages | Permissions set successfully'
                )
            except:
                self.print_to_console(
                    f'Channel: {channel} | Permissions: read_messages, send_messages | ERROR: Permissions fail to set'
                )

    # remove old discord embed and send new discord embed
    async def refresh_discord_embed(self):
        # refresh servers.json cache
        self.servers = Servers()
        self.server_list = self.servers.get()

        # remove old discord embed
        channels = [server['channel'] for server in self.server_list]
        channels = list(set(channels))  # remove duplicated channels
        for channel in channels:
            await bot.get_channel(channel).purge(
                check=lambda m: m.author == bot.user)

        # send new discord embed
        self.messages = [
            await bot.get_channel(s['channel']).send(
                content=('frontMessage' in s and s['frontMessage'].strip())
                and s['frontMessage'] or None,
                embed=self.get_embed(s)) for s in self.server_list
        ]

    def print_to_console(self, value):
        print(datetime.now().strftime('%Y-%m-%d %H:%M:%S: ') + value)

    # 1 = display number of servers, 2 = display total players/total maxplayers, 3 = display each server one by one every 10 minutes
    def print_presense_hint(self):
        if PRESENCE_TYPE <= 1:
            hints = 'number of servers'
        elif PRESENCE_TYPE == 2:
            hints = 'total players/total maxplayers'
        elif PRESENCE_TYPE >= 3:
            hints = f'each server one by one every {PRESENCE_RATE} minutes'
        self.print_to_console(
            f'Presence update type: {PRESENCE_TYPE} | Display {hints}')

    # get game server discord embed
    def get_embed(self, server):
        # load server cache
        server_cache = ServerCache(server['addr'], server['port'])

        # load server data
        data = server_cache.get_data()

        if data:
            # load server status Online/Offline
            status = server_cache.get_status()

            emoji = (status == 'Online') and ':green_circle:' or ':red_circle:'

            if status == 'Online':
                if int(data['maxplayers']) <= int(data['players']):
                    color = discord.Color.from_rgb(240, 71, 71)  # red
                elif int(data['maxplayers']) <= int(data['players']) * 2:
                    color = discord.Color.from_rgb(250, 166, 26)  # yellew
                else:
                    color = discord.Color.from_rgb(67, 181, 129)  # green
                    try:
                        if 'color' in server:
                            h = server['color'].lstrip('#')
                            rgb = tuple(int(h[i:i + 2], 16) for i in (0, 2, 4))
                            color = discord.Color.from_rgb(
                                rgb[0], rgb[1], rgb[2])
                    except Exception as e:
                        self.print_to_console(e)
            else:
                color = discord.Color.from_rgb(32, 34, 37)  # dark

            title = (data['password'] and ':lock: '
                     or '') + f'`{data["name"]}`'
            custom = ('custom' in server) and server['custom'] or None
            if custom and custom.strip():
                embed = discord.Embed(title=title,
                                      description=custom,
                                      color=color)
            elif server['type'] == 'SourceQuery' and not custom:
                embed = discord.Embed(
                    title=title,
                    description=
                    f'Connect: steam://connect/{data["addr"]}:{server["port"]}',
                    color=color)
            else:
                embed = discord.Embed(title=title, color=color)

            embed.add_field(name=FIELD_STATUS,
                            value=f'{emoji} **{status}**',
                            inline=True)
            embed.add_field(name=f'{FIELD_ADDRESS}:{FIELD_PORT}',
                            value=f'`{data["addr"]}:{data["port"]}`',
                            inline=True)

            flag_emoji = ('country' in server) and (
                ':flag_' + server['country'].lower() +
                f': {server["country"]}') or ':united_nations: Unknown'
            embed.add_field(name=FIELD_COUNTRY, value=flag_emoji, inline=True)

            embed.add_field(name=FIELD_GAME, value=data['game'], inline=True)
            embed.add_field(name=FIELD_CURRENTMAP,
                            value=data['map'],
                            inline=True)

            if status == 'Online':
                value = str(data['players'])  # example: 20/32
                if int(data['bots']) > 0:
                    value += f' ({data["bots"]})'  # example: 20 (2)/32
            else:
                value = '0'  # example: 0/32

            embed.add_field(name=FIELD_PLAYERS,
                            value=f'{value}/{data["maxplayers"]}',
                            inline=True)

            if 'image_url' in server:
                image_url = str(server['image_url'])
            else:
                image_url = (
                    CUSTOM_IMAGE_URL and CUSTOM_IMAGE_URL.strip()
                ) and CUSTOM_IMAGE_URL or f'https://github.com/DiscordGSM/Map-Thumbnails/raw/master/{urllib.parse.quote(data["game"])}'
                image_url += f'/{urllib.parse.quote(data["map"])}.jpg'

            embed.set_thumbnail(url=image_url)
        else:
            # server fail to query
            color = discord.Color.from_rgb(240, 71, 71)  # red
            embed = discord.Embed(
                title='ERROR',
                description=f'{FIELD_STATUS}: :warning: **Fail to query**',
                color=color)
            embed.add_field(name=f'{FIELD_ADDRESS}:{FIELD_PORT}',
                            value=f'{server["addr"]}:{server["port"]}',
                            inline=True)

        embed.set_footer(
            text=
            f'DiscordGSM v{VERSION} | 📺Game Server Monitor | Last update: '
            + datetime.now().strftime('%a, %Y-%m-%d %I:%M:%S%p'),
            icon_url=
            'https://github.com/DiscordGSM/DiscordGSM/raw/master/images/discordgsm.png'
        )

        return embed

    def get_server_list(self):
        return self.server_list
Ejemplo n.º 37
0
servers_json = os.getenv('SERVERS_JSON')
if servers_json and servers_json.strip():
    with open('configs/servers.json', 'w') as file:
        file.write(servers_json)

# [HEROKU] Check bot token and servers.json valid before start
if 'DGSM_TOKEN' in os.environ:
    invite_link = subprocess.run(['python3', 'getbotinvitelink.py'],
                                 stdout=subprocess.PIPE,
                                 shell=False).stdout.decode('utf8')
    if 'https://discord.com/api/oauth2/authorize?client_id=' not in invite_link:
        while True:
            time.sleep(1)
    with open('configs/servers.json', 'r') as file:
        try:
            Servers().get()
        except Exception as e:
            print(e)
            while True:
                time.sleep(1)

# env values
VERSION = '1.8.3'
SETTINGS = Settings.get()
DGSM_TOKEN = os.getenv('DGSM_TOKEN', SETTINGS['token'])
DGSM_PREFIX = os.getenv("DGSM_PREFIX", SETTINGS.get('prefix', '!'))
ROLE_ID = os.getenv('ROLE_ID', SETTINGS.get('role_id', '123'))
CUSTOM_IMAGE_URL = os.getenv('CUSTOM_IMAGE_URL', SETTINGS.get('image_url', ''))
REFRESH_RATE = int(os.getenv('REFRESH_RATE', SETTINGS['refreshrate'])) if int(
    os.getenv('REFRESH_RATE', SETTINGS['refreshrate'])) > 5 else 5
PRESENCE_TYPE = int(
Ejemplo n.º 38
0
    headers = {}
    r = requests.head(target_url, 
                      headers=headers, 
                      allow_redirects=True, 
                      timeout=10)         

    return {
        "url": r.url,
        "headers": r.headers
    }

while True:
    unvisited_links = Links.get_unvisited_links(conn)
    
    if len(unvisited_links) == 0:
        print("Nothing to crawl, going to sleep")
        time.sleep(5)
        continue

    for link in unvisited_links:
        print("Going to {}".format(link["url"]))
        try:
            result = head_for_server(link["domain"], link["url"]) 
            print("Got result for {}. It is {}".format(link["url"], result["url"])) 
            Servers.insert_server(conn, link["link_id"], result["url"], result["headers"]["Server"])
        except:
            pass
    
    conn.commit()

Ejemplo n.º 39
0
    @sqlite_cache(timeout_seconds=800000, cache_none=False, ignore_args={"query_data"})
    def _query(self, msg, query_data):
        # print msg
        ret = self.whiteListFirst(query_data)
        if ret:
            return ret
            # random select a server
        key = sample(self.dns_servers, 1)[0]
        # print key
        server = self.dns_servers[key]
        return server.query(query_data)


if __name__ == "__main__":
    ss = Servers()
    s = DNSServer("8.8.8.8")
    ss.addDNSServer(s)

########NEW FILE########
__FILENAME__ = test
#! /usr/bin/python
# -*- coding: utf-8 -*-
__author__ = "linkerlin"
import sys
import struct

try:
    from dns import message as m
except ImportError as ex:
    print "cannot find dnspython"