prim-ctrl 0.8.3__tar.gz → 0.8.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {prim_ctrl-0.8.3 → prim_ctrl-0.8.4}/PKG-INFO +1 -1
- {prim_ctrl-0.8.3 → prim_ctrl-0.8.4}/prim_ctrl/__main__.py +19 -9
- {prim_ctrl-0.8.3 → prim_ctrl-0.8.4}/pyproject.toml +1 -1
- {prim_ctrl-0.8.3 → prim_ctrl-0.8.4}/LICENSE +0 -0
- {prim_ctrl-0.8.3 → prim_ctrl-0.8.4}/README.md +0 -0
- {prim_ctrl-0.8.3 → prim_ctrl-0.8.4}/prim_ctrl/__init__.py +0 -0
|
@@ -727,8 +727,10 @@ class Funnel(Pingable):
|
|
|
727
727
|
self.external_port = external_port
|
|
728
728
|
self.external_url = f'https://{machine_name}.{tailscale.tailnet}:{external_port}{local_path}'
|
|
729
729
|
self.local_tailscale = local_tailscale
|
|
730
|
+
self.external_public_dns_resolver_address = None
|
|
730
731
|
self.external_public_dns_resolver = None
|
|
731
|
-
self.
|
|
732
|
+
self.external_tailscale_dns_resolver_addresses = None
|
|
733
|
+
self.external_tailscale_dns_resolver = None
|
|
732
734
|
|
|
733
735
|
async def wait_for(self, available: bool, timeout: float):
|
|
734
736
|
self._sleepcounter = 0
|
|
@@ -737,25 +739,33 @@ class Funnel(Pingable):
|
|
|
737
739
|
async def ping(self, availability_hint: bool | None = None):
|
|
738
740
|
logger.debug("Resolving DNS for %s (%s:%s)", LazyStr(self.get_class_name), self.external_name, self.external_port)
|
|
739
741
|
# first try at Tailscale's DNSs, if they don't know, we should not resolve at a public DNS and cache nxdomain for 5 minutes
|
|
740
|
-
if self.
|
|
742
|
+
if self.external_tailscale_dns_resolver_addresses is None:
|
|
741
743
|
resolvers = [await self.local_tailscale.external_tailscale_dns_resolver()]
|
|
742
744
|
resolvers.extend(await self._external_tailscale_dns_resolvers())
|
|
743
|
-
self.
|
|
745
|
+
self.external_tailscale_dns_resolver_addresses = resolvers
|
|
746
|
+
resolver = self.external_tailscale_dns_resolver
|
|
747
|
+
if resolver is None:
|
|
748
|
+
resolver = ExternalDnsResolver(self.external_tailscale_dns_resolver_addresses[0])
|
|
744
749
|
try:
|
|
745
|
-
_answer = await
|
|
750
|
+
_answer = await resolver.resolve(self.external_name, self.external_port)
|
|
746
751
|
except Exception as e:
|
|
747
|
-
logger.debug("Resolving at Tailscale's external DNS %s has failed: %s", self.
|
|
752
|
+
logger.debug("Resolving at Tailscale's external DNS %s has failed: %s", self.external_tailscale_dns_resolver_addresses[0], LazyStr(exception_repr, e))
|
|
748
753
|
# move current resolver to the end of the list
|
|
749
|
-
self.
|
|
754
|
+
self.external_tailscale_dns_resolver_addresses.append(self.external_tailscale_dns_resolver_addresses.pop(0))
|
|
750
755
|
return False
|
|
756
|
+
self.external_tailscale_dns_resolver = resolver
|
|
751
757
|
# then try at a public DNS
|
|
752
|
-
if self.
|
|
753
|
-
self.
|
|
758
|
+
if self.external_public_dns_resolver_address is None:
|
|
759
|
+
self.external_public_dns_resolver_address = await self.local_tailscale.external_public_dns_resolver()
|
|
760
|
+
resolver = self.external_public_dns_resolver
|
|
761
|
+
if resolver is None:
|
|
762
|
+
resolver = ExternalDnsResolver(self.external_public_dns_resolver_address)
|
|
754
763
|
try:
|
|
755
|
-
_answer = await
|
|
764
|
+
_answer = await resolver.resolve(self.external_name, self.external_port)
|
|
756
765
|
except Exception as e:
|
|
757
766
|
logger.debug("Resolving at public external DNS has failed: %s", LazyStr(exception_repr, e))
|
|
758
767
|
return False
|
|
768
|
+
self.external_public_dns_resolver = resolver
|
|
759
769
|
return True
|
|
760
770
|
|
|
761
771
|
async def _sleep_while_wait(self, available: bool):
|
|
@@ -3,7 +3,7 @@ packages = [{include = "prim_ctrl"}]
|
|
|
3
3
|
|
|
4
4
|
[project]
|
|
5
5
|
name = "prim-ctrl"
|
|
6
|
-
version = "0.8.
|
|
6
|
+
version = "0.8.4"
|
|
7
7
|
description = "Primitive Ctrl - Remote control of your phone's Primitive FTPd Android SFTP server and optionally Tailscale VPN."
|
|
8
8
|
license = "Apache-2.0"
|
|
9
9
|
authors = [
|
|
File without changes
|
|
File without changes
|
|
File without changes
|