add wifi-pass utility
This commit is contained in:
parent
d5e9ff6ad0
commit
d2b803818d
1 changed files with 46 additions and 0 deletions
46
templates/bin/wifi-pass
Executable file
46
templates/bin/wifi-pass
Executable file
|
@ -0,0 +1,46 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
import argparse
|
||||
from io import StringIO
|
||||
import subprocess
|
||||
import urllib.parse
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(
|
||||
description="""
|
||||
Fetch the wifi password and generate a QR code.
|
||||
|
||||
This program assumes that the network PSK is stored
|
||||
in the password-store, and will look for it
|
||||
at the path `wifi/<essid>`.
|
||||
""",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-H",
|
||||
"--hidden",
|
||||
action="store_true",
|
||||
help="Indicate that this network's SSID is hidden.",
|
||||
)
|
||||
parser.add_argument("essid", help="ESSID for this network")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
psk = subprocess.check_output(["pass", f"wifi/{args.essid}"], text=True).strip()
|
||||
|
||||
hidden_data = "H:true;" if args.hidden else ""
|
||||
qr_data = f"WIFI:T:WPA;S:{quote(args.essid)};{hidden_data}P:{quote(psk)};;"
|
||||
|
||||
proc = subprocess.Popen(["qrencode", "-tANSI"], stdin=subprocess.PIPE, text=True)
|
||||
proc.communicate(qr_data)
|
||||
|
||||
|
||||
PRINTABLE = [*range(0x20, 0x3B), *range(0x3C, 0x7F)]
|
||||
|
||||
|
||||
def quote(s: str) -> str:
|
||||
return urllib.parse.quote(s, safe=PRINTABLE)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Loading…
Add table
Reference in a new issue