net: add LTE connection details

This commit is contained in:
Colin 2023-10-28 10:28:47 +00:00
parent 85421f82c1
commit fd00eaede8
3 changed files with 55 additions and 18 deletions

View File

@ -10,16 +10,36 @@ from dataclasses import dataclass
@dataclass
class Connection:
comment: str | None
ssid: str
ssid: str # also used as "id", more generally
passphrase: str | None
# LTE connections:
uuid: str | None
gsm_apn: str | None
gsm_number: str | None
@property
def type_(self) -> str:
if self.gsm_apn is not None or self.gsm_number is not None:
return "gsm"
return "wifi"
def parse_manifest(manifest_path: str) -> list[Connection]:
for entry in json.load(open(manifest_path)):
comment = entry.get("comment")
ssid = entry["ssid"]
passphrase = entry.get("passphrase")
uuid = entry.get("uuid")
gsm_apn = entry.get("gsm_apn")
gsm_number = entry.get("gsm_number")
if ssid != "<EOF>":
yield Connection(comment=comment, ssid=ssid, passphrase=passphrase)
yield Connection(
comment=comment,
ssid=ssid,
passphrase=passphrase,
uuid=uuid,
gsm_apn=gsm_apn,
gsm_number=gsm_number,
)
def write_iwd(fh: "file", con: Connection) -> None:
fh.write("[Security]\n")
@ -29,19 +49,31 @@ def write_iwd(fh: "file", con: Connection) -> None:
def write_nm(fh: "file", con: Connection) -> None:
fh.write("[connection]\n")
fh.write(f"id={con.ssid}\n")
fh.write("type=wifi\n") #< TODO: needed?
if con.uuid is not None:
fh.write(f"uuid={con.uuid}\n")
fh.write(f"type={con.type_}\n")
fh.write("\n")
fh.write("[wifi]\n")
fh.write("mode=infrastructure\n")
fh.write(f"ssid={con.ssid}\n")
if con.type_ == "wifi":
fh.write("\n")
fh.write("[wifi]\n")
fh.write("mode=infrastructure\n")
fh.write(f"ssid={con.ssid}\n")
fh.write("\n")
fh.write("[wifi-security]\n")
fh.write("auth-alg=open\n")
fh.write("key-mgmt=wpa-psk\n")
if con.passphrase is not None:
fh.write(f"psk={con.passphrase}\n")
fh.write("\n")
fh.write("[wifi-security]\n")
fh.write("auth-alg=open\n")
fh.write("key-mgmt=wpa-psk\n")
if con.passphrase is not None:
fh.write(f"psk={con.passphrase}\n")
elif con.type_ == "gsm":
fh.write("\n")
fh.write("[gsm]\n")
if con.gsm_apn is not None:
fh.write(f"apn={con.gsm_apn}\n")
if con.gsm_number is not None:
fh.write(f"number={con.gsm_number}\n")
fh.write("\n")
fh.write("[ppp]\n")
fh.write("\n")
fh.write("[ipv4]\n")
@ -52,6 +84,9 @@ def write_nm(fh: "file", con: Connection) -> None:
fh.write("addr-gen-mode=default\n")
fh.write("method=auto\n")
# fh.write("\n")
# fh.write("[proxy]\n")
def install_all(manifest: list[Connection], destination: str, flavor: str) -> None:
ext, writer = dict(
iwd=("psk", write_iwd),

View File

@ -1,7 +1,9 @@
## to add a new network
- connect to it
- iwd: `iwctl`
- networkmanager:`nmtui`
- networkmanager:
- `nmtui` (WiFi)
- `nm-connection-editor` (for LTE, may need `swaymsg -- output '*' scale 1` for mobile)
- find it under:
- iwd: `/var/lib/iwd`
- networkmanager: `/var/lib/NetworkManager/system-connections`

View File

@ -1,5 +1,5 @@
{
"data": "ENC[AES256_GCM,data:U1sTuZ0Wd96HKuLY8nvNhikENeh4eR05/OilWNzxK0DAgMQnLzgGgAgJm9omRyHWZznsoYpnNIiYhptGSxv+IwDHZGT7siNOPZN/NlegmJSgW44HFOb11nZ4SRRsOoUxfM57Vt+tbO3DM6xz932qqHMjEg07M3xt7UDf+uu1GWRd0KZOYBMZJux3wjZr7YfKON3RK6sLRTmp2wvOe11RlQb7eX/PN/0STcml7HU/UV0kTVhDIbJdAkmGBYZ+IIOprLowbQcLtUzbTYNVv1KLi5ooi7kcUXEPeash3FBe/DAQHeUKr803qsa/NCIJob9FH7xwKmxt+8G9jFVuUrS0BWjn/s71ACfmxOOwhctVGmDN5zCeoSQ+xP6vZF74fwq0i+Uokq0oSewXhL6WKvtdnMVULMgzQWkjqC+PfIE4rQaOQTMOxV1pwwRSYeLvrbJHqFNnGoWxbmCUrF0IdjM+al9XAuYBHiiROnzxpgfRrMwrmRIxhmVot9TAh3pCwbxnlXWD1NvIdDA+7rpiP8/TA3vAeQgILYV0OFy0DuNgSvby4nN3yoqizRvkfqDXRb4GlDkWivYQYN/wqVYzpanwSqts2U/aYBm19UeMCNtHlaWM3/qdm2WsKRoljoxsmpO+HsnuR85eY/YTdrZpXf2E3k7d6F8971s0I/RI532cYd5vU3i0sGzb5boNxk/3VMdwo5o470f/7jVY8KlPSdbo5TsHlAiCyGMiiD5sLtMsGrJg5pJSm8oClM7ujDrfhu6N9Jjggn58CnjUID2um4uMxT3+BUSTrf2uYbjKtJgk++J/4y6rmj3wD4iT5PmB5QTCqvTeVa4ItT/5zmCJQIeJ2wBYDfTxo+wvZ9yZu1egy0huW4zjwvPE9ycslkHzKKVlGNQf6SQa3rmx+ss7iWEAhPS9e0U3Wm00NF+jJhvhS27FkTsD+WQMntPs+GrAPwfUNNksH+tQz+o+xqFoOA/woOgVgROitY+kgBwl7FNJexZvuzydb6Ddr/wHExhyQVg3uda3jQczjZE7DvQO5FqJkhoRETK72qPPxtY6ANapPrl+hbHbBUlmiBpNx7Vit0bqGjDRJAf6koZgCqUm4K7+dK5dw/YAlKq34JdcXjRbIT2YDgJO5tGVgP7Q6r6yW3bkpmIPhkXDnLEu8g024rVv1YGRxmudlkRe9WjlayLuzwL6/W2lFm1/CD4BP9+MQlbEfLucKd4PWxCUXDlWGmz+A2OVb+x3h8q7t0x6L+9CKyRcbh9Bonz4hB3xHGxH9CR+oFwkB1JWHrlKnyVUIdPKQ48iEmH0tO8Cbn9D08twSxqGdmeybbkdLFEHvEQNFAC1dtGGnLoE3FX3GFod+WwtpzoC01tdUJncS5JvsaPiU6BLpVCFwoAPZonUHrRDNjwOeh59Xb2kkKY6bQUK6J3W1meinSRRYCau2qvLMEnvcRu7I3rNEvg10kzFdVjFSfQkSqQsz5o6PU6yi2vlfyG/aH9Nym0zrt2J20P1DEf9zLsiKMpATXQgYJSZiySD85HNTwgVzDASTFVR5Zo9wlFhYuRdOgCSJM+bQ66qgmoYM+Ai2cZ1CI64kY/5Z9pnHu/lbaPNPDOtTNXeXAe7dz1DOtsAEfHsdjshVNZ+Wgz2AteY6MLqhMZ44l230elVnLxaCOJp2Zp148nHNkhu4VPpBC9zs2LMCjbPzI4rWrNrc66ii/3BPh0BtKKIOeZtAGt8yHzXtcx3GgnZzrWJYAivz2sjmff129FVGl2GksKSIrD1UbWXd5Pag7NO5d+IYkSSD6V7zCQ=,iv:vJ2MXlzdrh/8LL4nfUBH9i+zls/Vc0euExLa/Wk97Ks=,tag:fJu//rG9dH5iMj4jOu0DhQ==,type:str]",
"data": "ENC[AES256_GCM,data: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,iv:9WvW3DScrLPI3bEb7neJgWI/MDTvBfajWDtDj3rGxJs=,tag:VTDd0X5Oep/dSlZbjIO6tw==,type:str]",
"sops": {
"kms": null,
"gcp_kms": null,
@ -39,10 +39,10 @@
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBKMXhCRzVmNGFCZVZ4cjZn\ndEdqK1htOWczL3M1bDVrb1hqeE1SNkY2Nm1ZCkdoeThESTZHNUhpZTVwa2kvV3lD\nMnF4T3dDTG03cU1SZ1BuY2pzcng1SncKLS0tIDkyS0NsYm44RkE3NG9MditRKzBD\nL2o1dFBURUI2T3lKckdHVllzb3FWUE0K+qzPZWUIXMeXWuzpAhNES9Hqi98Qj4jT\nU/uff1VLwjE3SDwaFwW7rVur8gews4Bxph1qzJfZVnRFvON6xGqzjQ==\n-----END AGE ENCRYPTED FILE-----\n"
}
],
"lastmodified": "2023-07-15T22:40:02Z",
"mac": "ENC[AES256_GCM,data:1gPIpBZhCvoKIoNswpZTAJO/Fo07d3v8doYdvwYMlQhPkPB8J2gNWrlkboLe0wxOpKV7lwaBrynyUR9wrR9e+5P8avs1ewqqT1uSllBJ+ZKkVweli+vjWlynNSOmCPfb5PY8QJtp8K5s0/Ky/Ef5ZqLJRXmHzfUsULG91Hk5aac=,iv:oSVkYGMZT4hIc1Ft7YBb2m9aj9SY8j7hwTir10b4lhk=,tag:Mt1M/Pvjy7pT5bo6RyWVww==,type:str]",
"lastmodified": "2023-10-28T10:34:31Z",
"mac": "ENC[AES256_GCM,data:GS492dizmvoW6uCO4Wz+YzwFbtM6LfUdEgx7DzSbHG3hM/q3k5LW8E4HzxkBkDUylL5GS3FUWCADcoKe+JWqX3TUqQDqqrYScAVcE5e9TM2mZ12U6xz1SU8Tc5DkqQuUgrv/pvaJBI1UlEEdFkSOSIBzHZ5C7xW0WsNFauC9HFI=,iv:rnDBUWzieefIpES4WjWWEiAY3LtKkfazAgHaSoJ9VEw=,tag:n4b6kctXHHKiQfQAeQeFTw==,type:str]",
"pgp": null,
"unencrypted_suffix": "_unencrypted",
"version": "3.7.3"
"version": "3.8.1"
}
}