support windows 2000 and XP

This commit is contained in:
ed 2024-06-17 00:09:52 +02:00
parent 52e06226a2
commit 8c73e0cbc2
5 changed files with 33 additions and 4 deletions

View file

@ -42,6 +42,7 @@ from .util import (
DEF_EXP,
DEF_MTE,
DEF_MTH,
HAVE_IPV6,
IMPLICATIONS,
JINJA_VER,
MIMES,
@ -293,6 +294,9 @@ def get_ah_salt() -> str:
def ensure_locale() -> None:
if ANYWIN and PY2:
return # maybe XP, so busted 65001
safe = "en_US.UTF-8"
for x in [
safe,
@ -1594,6 +1598,9 @@ def main(argv: Optional[list[str]] = None, rsrc: Optional[str] = None) -> None:
if getattr(al, k1):
setattr(al, k2, False)
if not HAVE_IPV6 and al.i == "::":
al.i = "0.0.0.0"
al.i = al.i.split(",")
try:
if "-" in al.p:

View file

@ -15,6 +15,7 @@ from .util import (
E_ADDR_IN_USE,
E_ADDR_NOT_AVAIL,
E_UNREACH,
HAVE_IPV6,
IP6ALL,
Netdev,
min_ex,
@ -111,8 +112,10 @@ class TcpSrv(object):
eps = {
"127.0.0.1": Netdev("127.0.0.1", 0, "", "local only"),
"::1": Netdev("::1", 0, "", "local only"),
}
if HAVE_IPV6:
eps["::1"] = Netdev("::1", 0, "", "local only")
nonlocals = [x for x in self.args.i if x not in [k.split("/")[0] for k in eps]]
if nonlocals:
try:

View file

@ -33,7 +33,7 @@ from partftpy import (
)
from partftpy.TftpShared import TftpException
from .__init__ import EXE, TYPE_CHECKING
from .__init__ import EXE, PY2, TYPE_CHECKING
from .authsrv import VFS
from .bos import bos
from .util import BytesIO, Daemon, ODict, exclude_dotfiles, min_ex, runhook, undot
@ -95,7 +95,7 @@ class Tftpd(object):
TftpServer,
]
cbak = []
if not self.args.tftp_no_fast and not EXE:
if not self.args.tftp_no_fast and not EXE and not PY2:
try:
ptn = re.compile(r"(^\s*)log\.debug\(.*\)$")
for C in Cs:
@ -105,7 +105,7 @@ class Tftpd(object):
cfn = C.__spec__.origin
exec (compile(src2, filename=cfn, mode="exec"), C.__dict__)
except Exception:
t = "failed to optimize tftp code; run with --tftp-noopt if there are issues:\n"
t = "failed to optimize tftp code; run with --tftp-no-fast if there are issues:\n"
self.log("tftp", t + min_ex(), 3)
for n, zd in enumerate(cbak):
Cs[n].__dict__ = zd

View file

@ -158,6 +158,17 @@ else:
from urllib import unquote # type: ignore # pylint: disable=no-name-in-module
try:
socket.inet_pton(socket.AF_INET6, "::1")
HAVE_IPV6 = True
except:
def inet_pton(fam, ip):
return socket.inet_aton(ip)
socket.inet_pton = inet_pton
HAVE_IPV6 = False
try:
struct.unpack(b">i", b"idgi")
spack = struct.pack # type: ignore
@ -2459,6 +2470,9 @@ def build_netmap(csv: str):
csv += ", 127.0.0.0/8, ::1/128" # loopback
srcs = [x.strip() for x in csv.split(",") if x.strip()]
if not HAVE_IPV6:
srcs = [x for x in srcs if ":" not in x]
cidrs = []
for zs in srcs:
if not zs.endswith("."):

View file

@ -490,6 +490,11 @@ while IFS= read -r f; do
tmv "$f"
done
grep -rlE '^class [^(]+:' |
while IFS= read -r f; do
ised 's/(^class [^(:]+):/\1(object):/' "$f"
done
# up2k goes from 28k to 22k laff
awk 'BEGIN{gensub(//,"",1)}' </dev/null 2>/dev/null &&
echo entabbening &&