add kill cmd

This commit is contained in:
Daylin Morgan 2024-10-12 10:58:46 -05:00
parent 9031999c2f
commit 7a775d5ab9
Signed by: daylin
GPG key ID: 950D13E9719334AD
3 changed files with 28 additions and 13 deletions

View file

@ -2,13 +2,13 @@
"version": 2, "version": 2,
"packages": { "packages": {
"cligen": { "cligen": {
"version": "1.7.3", "version": "1.7.6",
"vcsRevision": "0e7b3b3a1fa77c448d3681c5fdf85197844cb7e4", "vcsRevision": "54f1da5d63cf7e116625e2392e85ae54c2b70719",
"url": "https://github.com/c-blake/cligen.git", "url": "https://github.com/c-blake/cligen.git",
"downloadMethod": "git", "downloadMethod": "git",
"dependencies": [], "dependencies": [],
"checksums": { "checksums": {
"sha1": "5a082835594887c0fdaea17dbfd2d3a2e744a2a9" "sha1": "853785ddace4ee4f3c6c21bdf7f5e9ff0358eb3f"
} }
}, },
"hwylterm": { "hwylterm": {

View file

@ -22,18 +22,28 @@ proc up(port: int, host: seq[string]) =
quit activateTunnel(name, port) quit activateTunnel(name, port)
proc down(host: seq[string]) = proc down(host: seq[string]) =
## disable all tunnels ## disable all tunnels for a host
let name = checkHost host let name = checkHost host
echo "deactivating connection to: ", name echo "deactivating connection to: ", name
quit exitSsh(name) quit exitSsh(name)
proc show() = proc collectControllers(): seq[string] =
## show active connections
let sshDir = (getEnv "HOME") / ".ssh" let sshDir = (getEnv "HOME") / ".ssh"
let controllers =
collect(for _,p in walkDir(sshDir): p) collect(for _,p in walkDir(sshDir): p)
.map(extractFilename) .map(extractFilename)
.filterIt(it.startsWith("control")) .filterIt(it.startsWith("control"))
proc killCmd() =
## kill all open tunnels
let controllers = collectControllers()
if controllers.len == 0: quit 0
for c in controllers:
echo bbfmt"removing file: [b]{c}"
removeFile c
proc show() =
## show active connections
let controllers = collectControllers()
echo bbfmt"[yellow]{controllers.len}[/] active connections" echo bbfmt"[yellow]{controllers.len}[/] active connections"
if controllers.len == 0: quit 0 if controllers.len == 0: quit 0
echo "hosts:" echo "hosts:"
@ -42,7 +52,12 @@ proc show() =
when isMainModule: when isMainModule:
import cligen, hwylterm/cligen import cligen, hwylterm/cligen
hwylCli(clCfg) hwylCli(clCfg)
let let hostUse =
# use= $bb("$command [[[i]flags[/]]\n${doc}[b]Options[/]:\n$options") $bb("$command [green]hostname[/] [[[i]flags[/]]\n${doc}[b]Options[/]:\n$options")
hostUse= $bb("$command [green]hostname[/] [[[i]flags[/]]\n${doc}[b]Options[/]:\n$options") dispatchMulti(
dispatchMulti([up,usage=hostUse], [down, usage=hostUse], [show, usage=clCfg.use]) [up , usage=hostUse ],
[down , usage=hostUse ],
[show , usage=clCfg.use ],
[killCmd, usage=clCfg.use, cmdName = "kill"],
)

View file

@ -10,6 +10,6 @@ bin = @["tunnel"]
# Dependencies # Dependencies
requires "nim >= 2.0.8" requires "nim >= 2.0.8"
requires "cligen" requires "cligen >= 1.7.6"
requires "https://github.com/daylinmorgan/hwylterm#HEAD" requires "https://github.com/daylinmorgan/hwylterm#HEAD"