Skip to content

Commit 36b706c

Browse files
committed
f-string-ify
Mostly-ish automated with https://github.com/ikamensh/flynt
1 parent b0140e9 commit 36b706c

File tree

6 files changed

+68
-68
lines changed

6 files changed

+68
-68
lines changed

vpn_slice/__main__.py

Lines changed: 48 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ def get_default_providers():
6868
)
6969
else:
7070
return dict(
71-
platform = OSError('Your platform, {}, is unsupported'.format(platform))
71+
platform = OSError(f'Your platform, {platform}, is unsupported')
7272
)
7373

7474

@@ -118,19 +118,19 @@ def do_disconnect(env, args):
118118
try:
119119
pid = int(open(pidfile).read())
120120
except (OSError, ValueError):
121-
print("WARNING: could not read pid from %s" % pidfile, file=stderr)
121+
print(f"WARNING: could not read pid from {pidfile}", file=stderr)
122122
else:
123123
try: providers.process.kill(pid)
124124
except OSError as e:
125-
print("WARNING: could not kill pid %d from %s: %s" % (pid, pidfile, str(e)), file=stderr)
125+
print(f"WARNING: could not kill pid {pid} from {pidfile}: {str(e)}", file=stderr)
126126
else:
127127
if args.verbose:
128-
print("Killed pid %d from %s" % (pid, pidfile), file=stderr)
128+
print(f"Killed pid {pid} from {pidfile}", file=stderr)
129129

130130
if 'hosts' in providers:
131131
removed = providers.hosts.write_hosts({}, args.name)
132132
if args.verbose:
133-
print("Removed %d hosts from /etc/hosts" % removed, file=stderr)
133+
print(f"Removed {removed} hosts from /etc/hosts", file=stderr)
134134

135135
# delete all explicitly created routes:
136136
# 1. Explicit route to gateway (won't get deleted automatically because
@@ -144,7 +144,7 @@ def do_disconnect(env, args):
144144
try:
145145
providers.route.remove_route(dest)
146146
except CalledProcessError:
147-
print("WARNING: could not delete %s (%s)" % (desc, dest), file=stderr)
147+
print(f"WARNING: could not delete {desc} ({dest})", file=stderr)
148148
else:
149149
providers.route.flush_cache()
150150

@@ -153,7 +153,7 @@ def do_disconnect(env, args):
153153
try:
154154
providers.firewall.deconfigure_firewall(env.tundev)
155155
except CalledProcessError:
156-
print("WARNING: failed to deconfigure firewall for VPN interface (%s)" % env.tundev, file=stderr)
156+
print(f"WARNING: failed to deconfigure firewall for VPN interface ({env.tundev})", file=stderr)
157157

158158
if args.vpn_domains is not None:
159159
try:
@@ -178,7 +178,7 @@ def do_connect(env, args):
178178
if args.verbose > 1:
179179
print("Set explicit route to VPN gateway %s (%s)" % (env.gateway, ', '.join('%s %s' % kv for kv in gwr.items())), file=stderr)
180180
else:
181-
print("WARNING: no route to VPN gateway found %s; cannot set explicit route to it." % env.gateway)
181+
print(f"WARNING: no route to VPN gateway found {env.gateway}; cannot set explicit route to it.")
182182

183183
# drop incoming traffic from VPN
184184
if not args.incoming:
@@ -205,10 +205,10 @@ def do_connect(env, args):
205205
if dev_mtu:
206206
mtu = int(dev_mtu) - 88
207207
if mtu:
208-
print("WARNING: guessing MTU is %d (the MTU of %s - 88)" % (mtu, dev), file=stderr)
208+
print(f"WARNING: guessing MTU is {mtu} (the MTU of {dev} - 88)", file=stderr)
209209
else:
210210
mtu = 1412
211-
print("WARNING: guessing default MTU of %d (couldn't determine MTU of %s)" % (mtu, dev), file=stderr)
211+
print(f"WARNING: guessing default MTU of {mtu} (couldn't determine MTU of {dev})", file=stderr)
212212
providers.route.set_link_info(env.tundev, state='up', mtu=mtu)
213213

214214
# set IPv4, IPv6 addresses for tunnel device
@@ -224,18 +224,18 @@ def do_connect(env, args):
224224
if r:
225225
exc_subnets.append((dest, r))
226226
else:
227-
print("WARNING: Ignoring unroutable split-exclude %s" % dest, file=stderr)
227+
print(f"WARNING: Ignoring unroutable split-exclude {dest}", file=stderr)
228228

229229
# set up routes to the DNS and Windows name servers, subnets, and local aliases
230230
ns = env.dns + env.dns6 + (env.nbns if args.nbns else [])
231231
for dest, tag in chain(tagged(ns, "nameserver"), tagged(args.subnets, "subnet"), tagged(args.aliases, "alias")):
232232
if args.verbose > 1:
233-
print("Adding route to %s %s through %s." % (tag, dest, env.tundev), file=stderr)
233+
print(f"Adding route to {tag} {dest} through {env.tundev}.", file=stderr)
234234
providers.route.replace_route(dest, dev=env.tundev)
235235
else:
236236
providers.route.flush_cache()
237237
if args.verbose:
238-
print("Added routes for %d nameservers, %d subnets, %d aliases." % (len(ns), len(args.subnets), len(args.aliases)), file=stderr)
238+
print(f"Added routes for {len(ns)} nameservers, {len(args.subnets)} subnets, {len(args.aliases)} aliases.", file=stderr)
239239

240240
# restore routes to excluded subnets
241241
for dest, exc_route in exc_subnets:
@@ -245,7 +245,7 @@ def do_connect(env, args):
245245
else:
246246
providers.route.flush_cache()
247247
if args.verbose:
248-
print("Restored routes for %d excluded subnets." % len(exc_subnets), file=stderr)
248+
print(f"Restored routes for {len(exc_subnets)} excluded subnets.", file=stderr)
249249

250250
# Use vpn dns for provided domains
251251
if args.vpn_domains is not None:
@@ -263,45 +263,45 @@ def do_post_connect(env, args):
263263
host_map = []
264264

265265
if args.ns_hosts:
266-
ns_names = [ (ip, ('dns%d.%s' % (ii, args.name),)) for ii, ip in enumerate(env.dns + env.dns6) ]
266+
ns_names = [ (ip, (f'dns{ii}.{args.name}',)) for ii, ip in enumerate(env.dns + env.dns6) ]
267267
if args.nbns:
268-
ns_names += [ (ip, ('nbns%d.%s' % (ii, args.name),)) for ii, ip in enumerate(env.nbns) ]
268+
ns_names += [ (ip, (f'nbns{ii}.{args.name}',)) for ii, ip in enumerate(env.nbns) ]
269269
host_map += ns_names
270270
if args.verbose:
271-
print("Adding /etc/hosts entries for %d nameservers..." % len(ns_names), file=stderr)
271+
print(f"Adding /etc/hosts entries for {len(ns_names)} nameservers...", file=stderr)
272272
for ip, names in ns_names:
273-
print(" %s = %s" % (ip, ', '.join(map(str, names))), file=stderr)
273+
print(f" {ip} = {', '.join(map(str, names))}", file=stderr)
274274

275275
if args.hosts or args.prevent_idle_timeout or args.kerberos_dc:
276276
providers.dns.configure(dns_servers=(env.dns + env.dns6), search_domains=args.domain, bind_addresses=env.myaddrs)
277277

278278
kdc_hosts = []
279279
if args.kerberos_dc:
280280
if args.verbose:
281-
print("Looking up Kerberos5 DC hosts for realm %r using VPN DNS servers..." % args.kerberos_dc, file=stderr)
281+
print(f"Looking up Kerberos5 DC hosts for realm {args.kerberos_dc!r} using VPN DNS servers...", file=stderr)
282282
try:
283-
kdc_hosts = providers.dns.lookup_srv('_kerberos._tcp.%s' % args.kerberos_dc)
283+
kdc_hosts = providers.dns.lookup_srv(f'_kerberos._tcp.{args.kerberos_dc}')
284284
except Exception as e:
285-
print("WARNING: Lookup for Kerberos5 DC hosts for realm %r on VPN DNS servers failed:\n\t%s" % (args.kerberos_dc, e), file=stderr)
285+
print(f"WARNING: Lookup for Kerberos5 DC hosts for realm {args.kerberos_dc!r} on VPN DNS servers failed:\n\t{e}", file=stderr)
286286
else:
287287
if args.verbose:
288-
print("Got %d Kerberos5 DC hosts." % len(kdc_hosts), file=stderr)
288+
print(f"Got {len(kdc_hosts)} Kerberos5 DC hosts.", file=stderr)
289289

290290
hosts_to_lookup = list(chain(tagged(args.hosts, 'host'), tagged(kdc_hosts, 'kdc')))
291291
if hosts_to_lookup:
292292
if args.verbose:
293-
print("Looking up %d hosts using VPN DNS servers..." % len(hosts_to_lookup), file=stderr)
293+
print(f"Looking up {len(hosts_to_lookup)} hosts using VPN DNS servers...", file=stderr)
294294
for host, why in hosts_to_lookup:
295295
try:
296296
ips = providers.dns.lookup_host(host)
297297
except Exception as e:
298-
print("WARNING: Lookup for %s on VPN DNS servers failed:\n\t%s" % (host, e), file=stderr)
298+
print(f"WARNING: Lookup for {host} on VPN DNS servers failed:\n\t{e}", file=stderr)
299299
else:
300300
if ips is None:
301-
print("WARNING: Lookup for %s on VPN DNS servers returned nothing." % host, file=stderr)
301+
print(f"WARNING: Lookup for {host} on VPN DNS servers returned nothing.", file=stderr)
302302
else:
303303
if args.verbose:
304-
print(" %s = %s" % (host, ', '.join(map(str, ips))), file=stderr)
304+
print(f" {host} = {', '.join(map(str, ips))}", file=stderr)
305305
ip_routes.update(ips)
306306
if why == 'kdc':
307307
host_map.extend((ip, [host]) for ip in ips)
@@ -315,35 +315,35 @@ def do_post_connect(env, args):
315315
if host_map:
316316
providers.hosts.write_hosts(host_map, args.name)
317317
if args.verbose:
318-
print("Added hostnames and aliases for %d addresses to /etc/hosts." % len(host_map), file=stderr)
318+
print(f"Added hostnames and aliases for {len(host_map)} addresses to /etc/hosts.", file=stderr)
319319

320320
# add routes to hosts
321321
for ip in ip_routes:
322322
if args.verbose > 1:
323-
print("Adding route to %s (for named hosts) through %s." % (ip, env.tundev), file=stderr)
323+
print(f"Adding route to {ip} (for named hosts) through {env.tundev}.", file=stderr)
324324
providers.route.replace_route(ip, dev=env.tundev)
325325
else:
326326
providers.route.flush_cache()
327327
if args.verbose:
328-
print("Added %d routes for named hosts." % len(ip_routes), file=stderr)
328+
print(f"Added {len(ip_routes)} routes for named hosts.", file=stderr)
329329

330330
# run DNS queries in background to prevent idle timeout
331331
if args.prevent_idle_timeout:
332332
dns = env.dns + env.dns6
333333
idle_timeout = env.idle_timeout
334-
setproctitle('vpn-slice --prevent-idle-timeout --name %s' % args.name)
334+
setproctitle(f'vpn-slice --prevent-idle-timeout --name {args.name}')
335335
if args.verbose:
336-
print("Continuing in background as PID %d, attempting to prevent idle timeout every %d seconds." % (providers.process.pid(), idle_timeout))
336+
print(f"Continuing in background as PID {providers.process.pid()}, attempting to prevent idle timeout every {idle_timeout} seconds.")
337337

338338
while True:
339339
delay = randint(2 * idle_timeout // 3, 9 * idle_timeout // 10)
340340
if args.verbose > 1:
341-
print("Sleeping %d seconds until we issue a DNS query to prevent idle timeout..." % delay, file=stderr)
341+
print(f"Sleeping {delay} seconds until we issue a DNS query to prevent idle timeout...", file=stderr)
342342
sleep(delay)
343343

344344
# FIXME: netlink(7) may be a much better way to poll here
345345
if not providers.process.is_alive(args.ppid):
346-
print("Caller (PID %d) has terminated; idle preventer exiting." % args.ppid, file=stderr)
346+
print(f"Caller (PID {args.ppid}) has terminated; idle preventer exiting.", file=stderr)
347347
break
348348

349349
# pick random host or IP to look up without leaking any new information
@@ -353,11 +353,11 @@ def do_post_connect(env, args):
353353
dummy = choice(pool)
354354
shuffle(dns)
355355
if args.verbose > 1:
356-
print("Issuing DNS lookup of %s to prevent idle timeout..." % dummy, file=stderr)
356+
print(f"Issuing DNS lookup of {dummy} to prevent idle timeout...", file=stderr)
357357
providers.dns.lookup_host(dummy, keep_going=False)
358358

359359
elif args.verbose:
360-
print("Connection setup done, child process %d exiting." % providers.process.pid())
360+
print(f"Connection setup done, child process {providers.process.pid()} exiting.")
361361

362362
########################################
363363

@@ -397,7 +397,7 @@ def parse_env(environ=os.environ):
397397
if envar in environ:
398398
try: val = maker(environ[envar])
399399
except Exception as e:
400-
print('Exception while setting %s from environment variable %s=%r' % (var, envar, environ[envar]), file=stderr)
400+
print(f'Exception while setting {var} from environment variable {envar}={environ[envar]!r}', file=stderr)
401401
raise
402402
elif default: val, = default
403403
else: val = None
@@ -408,7 +408,7 @@ def parse_env(environ=os.environ):
408408
orig_netaddr = env.network
409409
env.network = IPv4Network(env.network).supernet(new_prefix=env.netmasklen)
410410
if env.network.network_address != orig_netaddr:
411-
print("WARNING: IPv4 network %s/%d has host bits set, replacing with %s" % (orig_netaddr, env.netmasklen, env.network), file=stderr)
411+
print(f"WARNING: IPv4 network {orig_netaddr}/{env.netmasklen} has host bits set, replacing with {env.network}", file=stderr)
412412
assert env.network.netmask == env.netmask, \
413413
"IPv4 network (INTERNAL_IP4_{{NETADDR,NETMASK}}) {ad}/{nm} does not match INTERNAL_IP4_NETMASKLEN={nml} (implies /{nmi})".format(
414414
ad=orig_netaddr, nm=env.netmask, nml=env.netmasklen, nmi=env.network.netmask)
@@ -435,9 +435,9 @@ def parse_env(environ=os.environ):
435435
env.splitexc = []
436436
for pfx, n in chain((('INC', n) for n in range(env.nsplitinc)),
437437
(('EXC', n) for n in range(env.nsplitexc))):
438-
ad = IPv4Address(environ['CISCO_SPLIT_%s_%d_ADDR' % (pfx, n)])
439-
nm = IPv4Address(environ['CISCO_SPLIT_%s_%d_MASK' % (pfx, n)])
440-
nml = int(environ['CISCO_SPLIT_%s_%d_MASKLEN' % (pfx, n)])
438+
ad = IPv4Address(environ[f'CISCO_SPLIT_{pfx}_{n}_ADDR'])
439+
nm = IPv4Address(environ[f'CISCO_SPLIT_{pfx}_{n}_MASK'])
440+
nml = int(environ[f'CISCO_SPLIT_{pfx}_{n}_MASKLEN'])
441441
net = IPv4Network(ad).supernet(new_prefix=nml)
442442
if net.network_address != ad:
443443
print("WARNING: IPv4 split network (CISCO_SPLIT_%s_%d_{ADDR,MASK}) %s/%d has host bits set, replacing with %s" % (pfx, n, ad, nml, net), file=stderr)
@@ -448,8 +448,8 @@ def parse_env(environ=os.environ):
448448

449449
for pfx, n in chain((('INC', n) for n in range(env.nsplitinc6)),
450450
(('EXC', n) for n in range(env.nsplitexc6))):
451-
ad = IPv6Address(environ['CISCO_IPV6_SPLIT_%s_%d_ADDR' % (pfx, n)])
452-
nml = int(environ['CISCO_IPV6_SPLIT_%s_%d_MASKLEN' % (pfx, n)])
451+
ad = IPv6Address(environ[f'CISCO_IPV6_SPLIT_{pfx}_{n}_ADDR'])
452+
nml = int(environ[f'CISCO_IPV6_SPLIT_{pfx}_{n}_MASKLEN'])
453453
net = IPv6Network(ad).supernet(new_prefix=nml)
454454
if net.network_address != ad:
455455
print("WARNING: IPv6 split network (CISCO_IPV6_SPLIT_%s_%d_{ADDR,MASKLEN}) %s/%d has host bits set, replacing with %s" % (pfx, n, ad, nml, net), file=stderr)
@@ -552,7 +552,7 @@ def main(args=None, environ=os.environ):
552552
raise pv
553553
providers[pn] = pv()
554554
except Exception as e:
555-
print("WARNING: Couldn't configure {} provider: {}".format(pn, e), file=stderr)
555+
print(f"WARNING: Couldn't configure {pn} provider: {e}", file=stderr)
556556

557557
# Fail if necessary providers are missing
558558
required = {'route', 'process'}
@@ -572,7 +572,7 @@ def main(args=None, environ=os.environ):
572572
required.add('dns')
573573
missing_required = {p for p in required if p not in providers}
574574
if missing_required:
575-
raise RuntimeError("Aborting because providers for %s are required; use --help for more information" % ' '.join(missing_required))
575+
raise RuntimeError(f"Aborting because providers for {' '.join(missing_required)} are required; use --help for more information")
576576

577577
# Finalize arguments that depend on providers
578578
finalize_args_and_env(args, env)
@@ -592,12 +592,12 @@ def main(args=None, environ=os.environ):
592592
raise SystemExit()
593593

594594
if env.myaddr6 or env.netmask6:
595-
print('WARNING: IPv6 address or netmask set. Support for IPv6 in %s should be considered BETA-QUALITY.' % p.prog, file=stderr)
595+
print(f'WARNING: IPv6 address or netmask set. Support for IPv6 in {p.prog} should be considered BETA-QUALITY.', file=stderr)
596596
if args.dump:
597597
exe = providers.process.pid2exe(args.ppid)
598-
caller = '%s (PID %d)' % (exe, args.ppid) if exe else 'PID %d' % args.ppid
598+
caller = f'{exe} (PID {args.ppid})' if exe else f'PID {args.ppid}'
599599

600-
print('Called by %s with environment variables for vpnc-script:' % caller, file=stderr)
600+
print(f'Called by {caller} with environment variables for vpnc-script:', file=stderr)
601601
width = max((len(envar) for var, envar, *rest in vpncenv if envar in environ), default=0)
602602
for var, envar, *rest in vpncenv:
603603
if envar in environ:
@@ -640,7 +640,7 @@ def main(args=None, environ=os.environ):
640640
# https://github.com/dlenski/vpn-slice/pull/14#issuecomment-488129621
641641

642642
if args.verbose:
643-
print('WARNING: %s ignores reason=%s' % (p.prog, env.reason.name), file=stderr)
643+
print(f'WARNING: {p.prog} ignores reason={env.reason.name}', file=stderr)
644644
elif env.reason == reasons.connect:
645645
do_connect(env, args)
646646

vpn_slice/freebsd.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@
66
class ProcfsProvider(PosixProcessProvider):
77
def pid2exe(self, pid):
88
try:
9-
return os.readlink('/proc/%d/file' % pid)
9+
return os.readlink(f'/proc/{pid}/file')
1010
except OSError:
1111
return None
1212

1313
def ppid_of(self, pid=None):
1414
if pid is None:
1515
return os.getppid()
1616
try:
17-
return int(next(open('/proc/%d/status' % pid)).split()[3])
17+
return int(next(open(f'/proc/{pid}/status')).split()[3])
1818
except (OSError, ValueError):
1919
return None

vpn_slice/linux.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,15 @@
1010
class ProcfsProvider(PosixProcessProvider):
1111
def pid2exe(self, pid):
1212
try:
13-
return os.readlink('/proc/%d/exe' % pid)
13+
return os.readlink(f'/proc/{pid}/exe')
1414
except OSError:
1515
return None
1616

1717
def ppid_of(self, pid=None):
1818
if pid is None:
1919
return os.getppid()
2020
try:
21-
return int(next(open('/proc/%d/stat' % pid)).split()[3])
21+
return int(next(open(f'/proc/{pid}/stat')).split()[3])
2222
except (OSError, ValueError):
2323
return None
2424

vpn_slice/mac.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -119,14 +119,14 @@ def configure_domain_vpn_dns(self, domains, nameservers):
119119
if not os.path.exists('/etc/resolver'):
120120
os.makedirs('/etc/resolver')
121121
for domain in domains:
122-
resolver_file_name = "/etc/resolver/{0}".format(domain)
122+
resolver_file_name = f"/etc/resolver/{domain}"
123123
with open(resolver_file_name, "w") as resolver_file:
124124
for nameserver in nameservers:
125-
resolver_file.write("nameserver {}\n".format(nameserver))
125+
resolver_file.write(f"nameserver {nameserver}\n")
126126

127127
def deconfigure_domain_vpn_dns(self, domains, nameservers):
128128
for domain in domains:
129-
resolver_file_name = "/etc/resolver/{0}".format(domain)
129+
resolver_file_name = f"/etc/resolver/{domain}"
130130
if os.path.exists(resolver_file_name):
131131
os.remove(resolver_file_name)
132132
if not len(os.listdir('/etc/resolver')):
@@ -167,10 +167,10 @@ def configure_firewall(self, device):
167167
if not enable_token:
168168
print("WARNING: failed to get pf enable reference token, packet filter might not shutdown correctly")
169169

170-
anchor = '{}/{}'.format(self._PF_ANCHOR, device)
170+
anchor = f'{self._PF_ANCHOR}/{device}'
171171
# add anchor to generate rules with
172172
with open(self._PF_CONF_FILE, 'a') as file:
173-
file.write('anchor "{}" # vpn-slice-{} AUTOCREATED {}\n'.format(anchor, device, enable_token))
173+
file.write(f'anchor "{anchor}" # vpn-slice-{device} AUTOCREATED {enable_token}\n')
174174

175175
# reload config file
176176
self._reload_conf()
@@ -191,7 +191,7 @@ def configure_firewall(self, device):
191191

192192
def deconfigure_firewall(self, device):
193193
# disable anchor
194-
anchor = '{}/{}'.format(self._PF_ANCHOR, device)
194+
anchor = f'{self._PF_ANCHOR}/{device}'
195195
subprocess.check_call([self.pfctl, '-a', anchor, '-F', 'all'])
196196

197197
with open(self._PF_CONF_FILE, 'r') as file:

0 commit comments

Comments
 (0)