aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorterminaldweller <thabogre@gmail.com>2023-01-26 19:39:03 +0000
committerterminaldweller <thabogre@gmail.com>2023-01-26 19:39:03 +0000
commit0f0e8c6a5123def82c8e3d26de4fabd3e30d67d8 (patch)
tree02dc48110514c1574b1377f636c34a15a1d12695
parentupdate (diff)
downloadscripts-0f0e8c6a5123def82c8e3d26de4fabd3e30d67d8.tar.gz
scripts-0f0e8c6a5123def82c8e3d26de4fabd3e30d67d8.zip
update
-rw-r--r--.mutt/account.self2
-rw-r--r--.secrets.baseline4
-rw-r--r--.tunneltop.toml18
-rw-r--r--.vimrc5
-rw-r--r--.zshrc19
-rwxr-xr-xbin/tunneltop250
-rw-r--r--etc/docker/daemon.json1
-rw-r--r--irssi/config26
-rw-r--r--irssi/solarized-powerline.theme2
-rw-r--r--postit2
-rwxr-xr-xsshfs/mount.sh16
-rw-r--r--terminaldweller.com/cgit/authorized_keys1
-rw-r--r--terminaldweller.com/cgit/bootstrap/Dockerfile2
-rw-r--r--terminaldweller.com/cgit/cgit/Dockerfile1
-rw-r--r--terminaldweller.com/cgit/cgit/cgitrc5
-rw-r--r--terminaldweller.com/cgit/docker-compose.yaml16
-rw-r--r--terminaldweller.com/ejabberd/docker-compose.yaml2
-rw-r--r--terminaldweller.com/ejabberd/ejabberd.yml8
18 files changed, 260 insertions, 120 deletions
diff --git a/.mutt/account.self b/.mutt/account.self
index 7588110..4c6c0df 100644
--- a/.mutt/account.self
+++ b/.mutt/account.self
@@ -15,4 +15,4 @@ set header_cache = ~/.mutt/self/cache/headers
set message_cachedir = ~/.mutt/self/cache/bodies
set certificate_file = ~/.mutt/self/certificates
# mailboxes "+INBOX" "+Drafts" "+Sent" "+Trash"
-mailboxes "+INBOX" "+INBOX/Github" "+INBOX/Linkedin"
+mailboxes "+INBOX" "+INBOX/Github" "+INBOX/Linkedin" "+INBOX/Launchpad" "+INBOX/Opennic"
diff --git a/.secrets.baseline b/.secrets.baseline
index f87eb56..33b5cc4 100644
--- a/.secrets.baseline
+++ b/.secrets.baseline
@@ -270,7 +270,7 @@
"filename": "irssi/config",
"hashed_secret": "825e522c6f25f4d5e79c97adb96bf4d84f8606c2",
"is_verified": false,
- "line_number": 495
+ "line_number": 501
}
],
"kubernetes/mongodb/add-user.yaml": [
@@ -365,5 +365,5 @@
}
]
},
- "generated_at": "2022-12-31T19:46:58Z"
+ "generated_at": "2023-01-26T19:38:27Z"
}
diff --git a/.tunneltop.toml b/.tunneltop.toml
index f7d5c58..9e62be6 100644
--- a/.tunneltop.toml
+++ b/.tunneltop.toml
@@ -68,6 +68,24 @@ test_command_result = "200"
test_interval = 300
test_timeout = 30
+[i2pmapped6irssilitia]
+address = "127.0.0.1"
+port = 9068
+command = "autossh -M 0 -N -L 0.0.0.0:9068:127.0.0.1:6668 -o ServerAliveInterval=180 -o ServerAliveCountMax=3 -o ExitOnForwardFailure=yes -l ubuntu -p 3333 185.130.45.46"
+test_command = ""
+test_command_result = "200"
+test_interval = 300
+test_timeout = 30
+
+[i2pmapped6irssipostman]
+address = "127.0.0.1"
+port = 9069
+command = "autossh -M 0 -N -L 0.0.0.0:9069:127.0.0.1:6669 -o ServerAliveInterval=180 -o ServerAliveCountMax=3 -o ExitOnForwardFailure=yes -l ubuntu -p 3333 185.130.45.46"
+test_command = ""
+test_command_result = "200"
+test_interval = 300
+test_timeout = 30
+
[i2pmapped8http]
address = "127.0.0.1"
port = 9164
diff --git a/.vimrc b/.vimrc
index ae4b236..2acfaef 100644
--- a/.vimrc
+++ b/.vimrc
@@ -1507,6 +1507,11 @@ augroup ALEDOCKER
autocmd!
autocmd FileType Dockerfile let b:ale_linters = {'Dockerfile': ['hadolint']}
augroup END
+let b:ale_powershell_powershell_executable = "/home/devi/bin/pwsh"
+augroup ALEPWSH
+ autocmd!
+ autocmd FileType ps1 let b:ale_linters = {'ps1': ['powershell']}
+augroup END
" let b:ale_sh_shfmt_options = '-w -p -i=2 -bn -ci -sr -kp'
let b:ale_sh_shfmt_options = "-w -"
let b:ale_sh_shellcheck_options = '-x'
diff --git a/.zshrc b/.zshrc
index 19dc317..6ab0bdc 100644
--- a/.zshrc
+++ b/.zshrc
@@ -138,7 +138,8 @@ alias iredisrc="vim ~/scripts/.iredisrc"
alias fixiredisrc="cp ~/scripts/.iredisrc ~/.iredisrc"
# alias irssi="TERM=screen-256color docker run --runtime=runsc -it -e TERM -u $(id -u):$(id -g) --log-driver=none -e DBUS_SESSION_BUS_ADDRESS="$DBUS_SESSION_BUS_ADDRESS" -v $HOME/.irssi:/home/user/.irssi:ro -v /etc/localtime:/etc/localtime:ro devi_irssi"
alias irssi="TERM=screen-256color docker run --runtime=runsc -it -e TERM -u $(id -u):$(id -g) --log-driver=none -v $HOME/.irssi:/home/user/.irssi:ro -v /etc/localtime:/etc/localtime:ro devi_irssi"
-alias tor_irssi="TERM=screen-256color docker run --runtime=runsc -it -e TERM -u 1001:1001 --log-driver=none -v tor_irssi_mount:/home/user/.irssi tor_irssi"
+alias tor_irssi="TERM=screen-256color docker run --runtime=runsc -it -e TERM -u 1001:1001 --log-driver=none -v tor_irssi_mount:/home/user/.irssi -v ~/devi/abbatoir/hole16:/home/user/.irssi/certs tor_irssi"
+alias i2p_irssi="TERM=screen-256color docker run --runtime=runsc -it -e TERM -u $(id -u):$(id -g) --log-driver=none -v i2p_irssi_mount:/home/user/.irssi irssi:1.2.3"
alias openbb="TERM=screen-256color \
docker \
run \
@@ -176,7 +177,6 @@ alias lsdrc="vim ~/scripts/.config/lsd/config.yaml"
alias fixlsdrc="cp ~/scripts/.config/lsd/config.yaml ~/.config/lsd/config.yaml"
alias cygwin="/mnt/d/home/apps/cygwin/bin/bash.exe -l -i"
alias farmanager="/mnt/c/Program\ Files/Far\ Manager/Far.exe"
-alias pwsh="/mnt/c/Program\ Files/PowerShell/7/pwsh.exe"
alias wincmd="/mnt/c/Windows/System32/runas.exe /profile /user:administrator cmd.exe"
alias xonshrc="vim ~/scripts/.xonshrc"
alias fixxonshrc="cp ~/scripts/.xonshrc ~/.xonshrc"
@@ -222,8 +222,8 @@ alias inputrc="vim ~/scripts/.inputrc"
alias fixinputrc="cp ~/scripts/.inputrc ~/.inputrc"
alias gdbinit="vim ~/scripts/.gdbinit"
alias fixgdbinit="cp ~/scripts/.gdbinit ~/.gdbinit"
-alias d="ALL_PROXY=socks5://127.0.0.1:9995 grc docker"
-alias dc="ALL_PROXY=socks5://127.0.0.1:9995 grc docker-compose"
+alias d="ALL_PROXY=socks5h://127.0.0.1:9995 grc docker"
+alias dc="ALL_PROXY=socks5h://127.0.0.1:9995 grc docker-compose"
alias zh_freebsd="zssh dev@192.168.90.15"
alias zh_linux="zssh dev@192.168.90.17"
alias zh_router_root="zssh root@192.168.90.71"
@@ -338,14 +338,19 @@ alias picocom="picocom --escape b"
alias turn_green='echo -e "\033]10;#005f5f\007" '
alias turn_blue='echo -e "\033]10;#005f87\007" '
alias turn_white='echo -e "\033]10;#c0c0c0\007" '
-alias bandwhich="turn_green && bandwhich"
-alias powertop="turn_green && powertop"
-alias mdcat="turn_green && mdcat --local --fail --paginate"
+alias bandwhich="bandwhich"
+alias powertop="powertop"
+alias mdcat="mdcat --local --fail --paginate"
alias mariadb="mariadb --safe-updates"
alias tunneltoprc="vim ~/scripts/.tunneltop.toml"
alias fixtunneltoprc="cp ~/scripts/.tunneltop.toml ~/.tunneltop.toml"
alias tokei="tokei --hidden --num-format underscores -s lines"
+function ccgrep() {
+ EXTRA_ARG_BEFORE=$(llvm-config --libdir)/clang/$(llvm-config --version)/include
+ cgrep --extra-arg-before="-I${EXTRA_ARG_BEFORE}" "$@"
+}
+
# change the 4th terminal color to #0000ff
# echo -e '\e]P40000ff'
# reset all
diff --git a/bin/tunneltop b/bin/tunneltop
index 7bf1878..7c32e17 100755
--- a/bin/tunneltop
+++ b/bin/tunneltop
@@ -1,6 +1,6 @@
#!/usr/bin/env python
"""A top-like program for monitoring ssh tunnels"""
-
+# TODO- task cancellation is very slow as should be with tasks
import argparse
import asyncio
import copy
@@ -134,18 +134,52 @@ def ffs(
return lines
-def render(lines: typing.List[str], stdscr, sel: int):
+def render(
+ data_cols: typing.Dict[str, typing.Dict[str, str]],
+ tasks: typing.List[asyncio.Task],
+ stdscr,
+ sel: int,
+):
"""Render the text"""
+ lines = ffs(
+ 2,
+ ["NAME", "ADDRESS", "PORT", "STATUS", "STDOUT", "STDERR"],
+ False,
+ True,
+ [v["name"] for _, v in data_cols.items()],
+ [v["address"] for _, v in data_cols.items()],
+ [repr(v["port"]) for _, v in data_cols.items()],
+ [v["status"] for _, v in data_cols.items()],
+ [v["stdout"] for _, v in data_cols.items()],
+ [v["stderr"] for _, v in data_cols.items()],
+ )
iterator = iter(lines)
stdscr.addstr(1, 1, lines[0], curses.color_pair(3))
next(iterator)
for i, line in enumerate(iterator):
+ try:
+ line_content = stdscr.instr(sel + 2, 1).decode("utf-8")
+ name: str = line_content[: line_content.find(" ")]
+ finally:
+ name = ""
if i == sel:
stdscr.addstr(
- (2 + i) % (len(lines) + 1), 1, line, curses.color_pair(2)
+ (2 + i) % (len(lines) + 1),
+ 1,
+ line,
+ curses.color_pair(2)
+ if name not in tasks
+ else curses.color_pair(5),
)
else:
- stdscr.addstr(2 + i, 1, line, curses.color_pair(1))
+ stdscr.addstr(
+ 2 + i,
+ 1,
+ line,
+ curses.color_pair(1)
+ if name not in tasks
+ else curses.color_pair(4),
+ )
stdscr.addstr("\n")
stdscr.box()
@@ -164,18 +198,43 @@ def curses_init():
curses.init_pair(2, curses.COLOR_BLACK, curses.COLOR_GREEN)
curses.init_pair(3, curses.COLOR_BLUE, curses.COLOR_BLACK)
curses.init_pair(4, curses.COLOR_CYAN, curses.COLOR_BLACK)
+ curses.init_pair(5, curses.COLOR_BLACK, curses.COLOR_CYAN)
return stdscr
-class TunnelTop:
+class TunnelManager:
"""The tunnel top class"""
def __init__(self):
self.argparser = Argparser()
- self.data_cols: typing.Dict[str, typing.Dict[str, str]] = {}
+ self.data_cols: typing.Dict[
+ str, typing.Dict[str, str]
+ ] = self.read_conf()
self.tunnel_tasks: typing.List[asyncio.Task] = []
self.tunnel_test_tasks: typing.List[asyncio.Task] = []
+ self.scheduler_task: asyncio.Task
+ self.scheduler_table: typing.Dict[
+ str, int
+ ] = self.init_scheduler_table()
+ # we use this when its time to quit. this will prevent any
+ # new tasks from being scheduled
+ self.are_we_dying: bool = False
+
+ loop = asyncio.get_event_loop()
+ loop.add_signal_handler(
+ signal.SIGHUP,
+ lambda: asyncio.create_task(self.sighup_handler()),
+ )
+
+ def init_scheduler_table(self) -> typing.Dict[str, int]:
+ """initialize the scheduler table"""
+ result: typing.Dict[str, int] = {}
+ for key, value in self.data_cols.items():
+ if "test_interval" in value and value["test_command"] != "":
+ result[key] = 0
+
+ return result
def read_conf(self) -> typing.Dict[str, typing.Dict[str, str]]:
"""Read the config file"""
@@ -200,58 +259,36 @@ class TunnelTop:
}
return data_cols
- async def run_subshell(self, cmd: str) -> typing.Tuple[bytes, bytes]:
- """Run a command in a subshell"""
- proc = await asyncio.create_subprocess_shell(
- cmd, stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE
+ async def run_subprocess(self, cmd: str) -> typing.Tuple[bytes, bytes]:
+ """Run a command"""
+ proc = await asyncio.create_subprocess_exec(
+ *cmd.split(" "),
+ stdout=asyncio.subprocess.PIPE,
+ stderr=asyncio.subprocess.PIPE,
)
- try:
- return await proc.communicate()
- except asyncio.CancelledError:
- self.write_log("fucking fuck")
- return (bytes(), bytes())
+ return await proc.communicate()
- def tunnel_test_callback(self, task: asyncio.Task) -> None:
- """Tunnel test callback function."""
+ async def run_test_coro(
+ self, cmd: str, task_name: str
+ ) -> typing.Tuple[bytes, bytes]:
+ """Run a test command"""
try:
- task_name = task.get_name()
- self.data_cols[task_name]["stdout"] = (
- task.result()[0].decode("utf-8").strip("\n")
- )
- self.data_cols[task_name]["stderr"] = (
- task.result()[1].decode("utf-8").strip("\n")
- )
- if (
- task.result()[0].decode("utf-8").strip("\n")
- == self.data_cols[task_name]["test_command_result"]
- ):
+ stdout, stderr = await self.run_subprocess(cmd)
+ stdout_str: str = stdout.decode("utf-8").strip("\n").strip('"')
+ stderr_str: str = stderr.decode("utf-8").strip("\n").strip('"')
+
+ self.data_cols[task_name]["stdout"] = stdout_str
+ self.data_cols[task_name]["stderr"] = stderr_str
+ if stdout_str == self.data_cols[task_name]["test_command_result"]:
self.data_cols[task_name]["status"] = "UP"
else:
self.data_cols[task_name]["status"] = "DOWN"
+
+ return stdout, stderr
except asyncio.TimeoutError:
self.data_cols[task_name]["status"] = "TMOUT"
- except asyncio.CancelledError:
- self.data_cols[task_name]["status"] = "CANCELLED"
-
- async def tunnel_test_procs(self) -> typing.List[asyncio.Task]:
- """run all the tunnel tests in the background as separate tasks"""
- tasks: typing.List[asyncio.Task] = []
- for _, value in self.data_cols.items():
- if value["test_command"] != "":
- tasks.append(
- asyncio.create_task(
- asyncio.wait_for(
- self.run_subshell(value["test_command"]),
- timeout=float(value["test_timeout"]),
- ),
- name=value["name"],
- )
- )
- tasks[-1].add_done_callback(self.tunnel_test_callback)
- await asyncio.sleep(0)
-
- return tasks
+ raise
async def tunnel_procs(
self,
@@ -261,7 +298,7 @@ class TunnelTop:
for _, value in self.data_cols.items():
tasks.append(
asyncio.create_task(
- self.run_subshell(value["command"]), name=value["name"]
+ self.run_subprocess(value["command"]), name=value["name"]
),
)
await asyncio.sleep(0)
@@ -274,10 +311,13 @@ class TunnelTop:
if k not in self.data_cols:
self.tunnel_tasks.append(
asyncio.create_task(
- self.run_subshell(value["command"]), name=k
+ self.run_subprocess(value["command"]), name=k
)
)
await asyncio.sleep(0)
+ self.data_cols[k] = copy.deepcopy(value)
+ if k in self.scheduler_table:
+ self.scheduler_table[k] = 0
else:
if (
self.data_cols[k]["command"] != data_cols_new[k]["command"]
@@ -291,9 +331,11 @@ class TunnelTop:
self.data_cols[k] = copy.deepcopy(data_cols_new[k])
self.tunnel_tasks.append(
asyncio.create_task(
- self.run_subshell(value["command"]), name=k
+ self.run_subprocess(value["command"]), name=k
)
)
+ if k in self.scheduler_table:
+ self.scheduler_table[k] = 0
await asyncio.sleep(0)
for k, _ in self.data_cols.items():
@@ -302,6 +344,8 @@ class TunnelTop:
if task.get_name() == k:
task.cancel()
del self.data_cols[k]
+ if k in self.scheduler_table:
+ del self.scheduler_table[k]
async def sighup_handler(self) -> None:
"""SIGHUP handler. we want to reload the config."""
@@ -314,7 +358,7 @@ class TunnelTop:
"""A simple logger"""
with open(
"/home/devi/devi/abbatoir/hole15/log",
- "w",
+ "a",
encoding="utf-8",
) as logfile:
logfile.write(log)
@@ -328,15 +372,15 @@ class TunnelTop:
was_cancelled = task.cancel()
self.write_log(f"was_cancelled: {was_cancelled}")
await task
- for _, value in self.data_cols.items():
- if value["name"] == name:
- self.tunnel_tasks.append(
- asyncio.create_task(
- self.run_subshell(value["command"]),
- name=value["name"],
- )
- )
- await asyncio.sleep(0)
+ for _, value in self.data_cols.items():
+ if value["name"] == name and task.cancelled():
+ self.tunnel_tasks.append(
+ asyncio.create_task(
+ self.run_subprocess(value["command"]),
+ name=value["name"],
+ )
+ )
+ await asyncio.sleep(0)
async def flip_task(self, line_content: str) -> None:
"""flip a task"""
@@ -357,53 +401,76 @@ class TunnelTop:
if value["name"] == name:
self.tunnel_tasks.append(
asyncio.create_task(
- self.run_subshell(value["command"]),
+ self.run_subprocess(value["command"]),
name=value["name"],
)
)
await asyncio.sleep(0)
- break
async def quit(self) -> None:
"""Cleanly quit the applicaiton"""
+ # scheduler checks for this so stop making new tasks
+ # when we want to quit
+ self.are_we_dying = True
+ # alternatively we could ask asyncio to cancel all tasks
for tunnel_test_task in self.tunnel_test_tasks:
tunnel_test_task.cancel()
for tunnel_task in self.tunnel_tasks:
tunnel_task.cancel()
+ try:
+ await asyncio.gather(*self.tunnel_test_tasks)
+ await asyncio.gather(*self.tunnel_tasks)
+ except asyncio.TimeoutError:
+ pass
+ finally:
+ sys.exit(0)
+
+ async def scheduler(self) -> None:
+ """schedulaer manages running the tests and reviving dead tunnels"""
+ while True:
+ if self.are_we_dying:
+ return
+ for key, value in self.scheduler_table.items():
+ if value == 0 and key not in self.tunnel_test_tasks:
+ tunnel_entry = self.data_cols[key]
+ test_task = asyncio.create_task(
+ asyncio.wait_for(
+ self.run_test_coro(
+ tunnel_entry["test_command"],
+ tunnel_entry["name"],
+ ),
+ timeout=float(tunnel_entry["test_timeout"]),
+ ),
+ name=key,
+ )
+ # test_task.add_done_callback(self.tunnel_test_callback)
+ self.tunnel_test_tasks.append(test_task)
+ self.scheduler_table[key] = int(
+ tunnel_entry["test_interval"]
+ )
+ await asyncio.sleep(0)
+ else:
+ self.scheduler_table[key] = self.scheduler_table[key] - 1
+
+ # we are using a 1 second ticker. basically the scheduler
+ # runs every second instead of as fast as it can
+ await asyncio.sleep(1)
- async def main(self) -> None:
+ async def tui_loop(self) -> None:
"""entrypoint"""
sel: int = 0
try:
stdscr = curses_init()
-
- self.data_cols = self.read_conf()
-
- loop = asyncio.get_event_loop()
- loop.add_signal_handler(
- signal.SIGHUP,
- lambda: asyncio.create_task(self.sighup_handler()),
- )
+ # we spawn the tunnels and the test scheduler put them
+ # in the background and then run the TUI loop
self.tunnel_tasks = await self.tunnel_procs()
+ self.scheduler_task = asyncio.create_task(
+ self.scheduler(), name="scheduler"
+ )
while True:
- # self.tunnel_test_tasks = await self.tunnel_test_procs()
- lines = ffs(
- 2,
- ["NAME", "ADDRESS", "PORT", "STATUS", "STDOUT", "STDERR"]
- if not self.argparser.args.noheader
- else None,
- False,
- True,
- [v["name"] for _, v in self.data_cols.items()],
- [v["address"] for _, v in self.data_cols.items()],
- [repr(v["port"]) for _, v in self.data_cols.items()],
- [v["status"] for _, v in self.data_cols.items()],
- [v["stdout"] for _, v in self.data_cols.items()],
- [v["stderr"] for _, v in self.data_cols.items()],
- )
stdscr.clear()
- render(lines, stdscr, sel)
+ render(self.data_cols, self.tunnel_tasks, stdscr, sel)
char = stdscr.getch()
if char == ord("j") or char == curses.KEY_DOWN:
@@ -415,7 +482,6 @@ class TunnelTop:
await self.restart_task(line_content.decode("utf-8"))
elif char == ord("q"):
await self.quit()
- # elif char == curses.KEY_ENTER:
elif char == ord("s"):
line_content = stdscr.instr(sel + 2, 1)
await self.flip_task(line_content.decode("utf-8"))
@@ -433,5 +499,5 @@ class TunnelTop:
if __name__ == "__main__":
- tunnel_top = TunnelTop()
- asyncio.run(tunnel_top.main())
+ tunnel_manager = TunnelManager()
+ asyncio.run(tunnel_manager.tui_loop())
diff --git a/etc/docker/daemon.json b/etc/docker/daemon.json
index 7aced8a..96e91c4 100644
--- a/etc/docker/daemon.json
+++ b/etc/docker/daemon.json
@@ -1,5 +1,6 @@
{
"data-root": "/home/devi/storage/ssd1/docker",
+ "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"],
"runtimes": {
"nvidia": {
"args": [],
diff --git a/irssi/config b/irssi/config
index 9b30418..14cf750 100644
--- a/irssi/config
+++ b/irssi/config
@@ -73,7 +73,7 @@ servers = (
address = "185.130.45.46";
chatnet = "Libera-ZNC";
port = "1025";
- password = "terminaldweller/Liberachat:";#pragma: allowlist secret
+ password = "terminaldweller/Liberachat:"; # pragma: allowlist secret
use_tls = "yes";
tls_cert = "~/.irssi/certs/nick.pem";
tls_verify = "no";
@@ -83,7 +83,7 @@ servers = (
address = "185.130.45.46";
chatnet = "OFTC-ZNC";
port = "1025";
- password = "terminaldweller/OFTC:network";#pragma: allowlist secret
+ password = "terminaldweller/OFTC:network"; # pragma: allowlist secret
use_tls = "yes";
tls_cert = "~/.irssi/certs/nick.pem";
tls_verify = "no";
@@ -93,7 +93,7 @@ servers = (
address = "185.130.45.46";
chatnet = "Rizon-ZNC";
port = "1025";
- password = "terminaldweller/Rizon:network";#pragma: allowlist secret
+ password = "terminaldweller/Rizon:network"; # pragma: allowlist secret
use_tls = "yes";
tls_cert = "~/.irssi/certs/nick.pem";
tls_verify = "no";
@@ -103,7 +103,7 @@ servers = (
address = "185.130.45.46";
chatnet = "Undernet-ZNC";
port = "1025";
- password = "terminaldweller/undernet:network";#pragma: allowlist secret
+ password = "terminaldweller/undernet:network"; # pragma: allowlist secret
use_tls = "yes";
tls_cert = "~/.irssi/certs/nick.pem";
tls_verify = "no";
@@ -129,7 +129,7 @@ servers = (
address = "185.130.45.46";
chatnet = "TildeChat_ZNC";
port = "1025";
- password = "terminaldweller/Tilde_Chat:network"; #pragma: allowlist secret
+ password = "terminaldweller/Tilde_Chat:network"; # pragma: allowlist secret
tls_cert = "~/.irssi/certs/nick.pem";
use_tls = "yes";
tls_verify = "no";
@@ -177,12 +177,14 @@ chatnets = {
IRCNet = { type = "IRC"; };
"Undernet-ZNC" = {
type = "IRC";
- autosendcmd = "/^mode terminaldwel +ix;msg *status traffic;wait 3000";
+ nick = "terminaldwel";
+ autosendcmd = "/^mode termi +ix;msg *status traffic;wait 3000";
};
EFnet = { type = "IRC"; };
DALnet = {
type = "IRC";
- autosendcmd = "/^mode terminaldweller +HCi;msg nickserv@services.dal.net identify Xashmith#666;wait 3000";
+ nick = "terminaldweller";
+ autosendcmd = "/^msg nickserv@services.dal.net identify identify;mode terminaldweller HCi;wait 3000";
};
bitlbee_r = { type = "IRC"; };
};
@@ -201,12 +203,14 @@ channels = (
{ name = "#selfhosting"; chatnet = "TildeChat_ZNC"; autojoin = "yes"; },
{ name = "#tor"; chatnet = "OFTC-ZNC"; autojoin = "yes"; },
{ name = "#llvm"; chatnet = "OFTC-ZNC"; autojoin = "yes"; },
+ { name = "##terminaldweller"; chatnet = "OFTC-ZNC"; autojoin = "yes"; },
# { name = "#openssh"; chatnet = "Libera-ZNC"; autojoin = "yes"; },
# { name = "#gdb"; chatnet = "Libera-ZNC"; autojoin = "yes"; },
{ name = "#openbsd"; chatnet = "Libera-ZNC"; autojoin = "yes"; },
{ name = "#gnupg"; chatnet = "Libera-ZNC"; autojoin = "yes"; },
{ name = "#znc"; chatnet = "Libera-ZNC"; autojoin = "yes"; },
{ name = "#go-nuts"; chatnet = "Libera-ZNC"; autojoin = "yes"; },
+ { name = "##terminaldweller"; chatnet = "Libera-ZNC"; autojoin = "yes"; },
{ name = "#voidlinux"; chatnet = "Libera-ZNC"; autojoin = "yes"; },
{ name = "#CataclysmDDA"; chatnet = "Libera-ZNC"; autojoin = "yes"; },
{ name = "#security"; chatnet = "Libera-ZNC"; autojoin = "yes"; },
@@ -224,6 +228,7 @@ channels = (
{ name = "#bookz"; chatnet = "Undernet-ZNC"; autojoin = "yes"; },
{ name = "#postgresql"; chatnet = "Libera-ZNC"; autojoin = "yes"; },
{ name = "#news"; chatnet = "Rizon-ZNC"; autojoin = "yes"; },
+ { name = "##terminaldweller"; chatnet = "Rizon-ZNC"; autojoin = "yes"; },
{ name = "#irc"; chatnet = "IRCNet"; autojoin = "yes"; },
{ name = "#supersonic"; chatnet = "DALNet"; autojoin = "yes"; },
# { name = "#kvm"; chatnet = "Libera-ZNC"; autojoin = "yes"; }
@@ -452,6 +457,7 @@ settings = {
hilight_color = "%Zd75f5f";
emphasis_italics = "yes";
emphasis_replace = "yes";
+ show_names_on_join = "no";
};
"fe-text" = { actlist_sort = "refnum"; };
"perl/core/scripts" = {
@@ -581,10 +587,16 @@ ignores = (
{ level = "JOINS PARTS QUITS NICKS"; channels = ( "#security" ); },
{ level = "JOINS PARTS QUITS NICKS"; channels = ( "#busybox" ); },
{ level = "JOINS PARTS QUITS NICKS"; channels = ( "#bookz" ); },
+ { level = "JOINS PARTS QUITS NICKS"; channels = ( "#qubes" ); },
{ level = "JOINS PARTS QUITS NICKS"; channels = ( "#gnupg" ); },
{ level = "JOINS PARTS QUITS NICKS"; channels = ( "#supersonic" ); },
{ level = "JOINS PARTS QUITS NICKS"; channels = ( "#news" ); },
+ { level = "JOINS PARTS QUITS NICKS"; channels = ( "#mednafen" ); },
+ { level = "JOINS PARTS QUITS NICKS"; channels = ( "#forgefed" ); },
+ { level = "JOINS PARTS QUITS NICKS"; channels = ( "#s6" ); },
{ level = "JOINS PARTS QUITS NICKS"; channels = ( "#postgresql" ); },
+ { level = "JOINS PARTS QUITS NICKS"; channels = ( "#meta" ); },
+ { level = "JOINS PARTS QUITS NICKS"; channels = ( "#gemini" ); },
{ level = "JOINS PARTS QUITS NICKS"; channels = ( "#llvm" ); },
{ level = "JOINS PARTS QUITS NICKS"; channels = ( "#selfhosting" ); },
{ level = "JOINS PARTS QUITS NICKS"; channels = ( "#irc" ); },
diff --git a/irssi/solarized-powerline.theme b/irssi/solarized-powerline.theme
index beb08e0..cc83466 100644
--- a/irssi/solarized-powerline.theme
+++ b/irssi/solarized-powerline.theme
@@ -401,7 +401,7 @@ formats = {
daychange = " %g-----%k-%W-%n Day changed to %%D %W-%k-%g-----%n";
join = "%k%z00af5fJOIN %8 {ichannelhilight $2} %0%Z00d700%0 {inick $0}%0 %N {chanhost_hilight $1}";
line_start_irssi = "%k%z5f5fd7IRSSI%N%Z5f5fd7 %N";
- new_topic = "%k%z00d700TOPIC %8 {ichannelhilight $1} %wby {inick $0}  $2";
+ new_topic = "%k%z00d700TOPIC %8 {ichannelhilight $1} %wby {inick $0}%Z005f87%N  $2";
nick_changed = "%k%z00d700RENAME %Z00d700%0 %k%z005f87{nick $0} %Zff8700 {nick $1}%Z005f87%0%N";
part = "%K%Z00d700%k%z00d700PART %8 {ichannelhilight $2}%N %0%Z005f87 %N{inick $0}%0 %Z005f87%Zeeeeee {reason $3}";
quit = "%0%Z005f00%k%z005f00QUIT %N {inick $0}%0 %Zeeeeee %N%n%k%N {reason $2}";
diff --git a/postit b/postit
index 3ed0539..1e92ac6 100644
--- a/postit
+++ b/postit
@@ -49,3 +49,5 @@ https://wms.cs.kuleuven.be/cs/studeren/master-artificial-intelligence/MAI_SIP/ma
https://www.ssllabs.com/ssltest
ntfs-3g
https://virastaran.net/a/w/11467/
+https://www.dhl.com/nl-en/home/tracking/tracking-parcel.html?submit=1&tracking-id=CY570784975DE
+https://github.com/net4people/bbs
diff --git a/sshfs/mount.sh b/sshfs/mount.sh
new file mode 100755
index 0000000..6d0ef1f
--- /dev/null
+++ b/sshfs/mount.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+sshfs \
+ -o compression=no \
+ -o idmap=user \
+ -o reconnect \
+ ubuntu@10.167.131.24:/home/ubuntu \
+ /home/devi/sshfs/lxc/ubuntu2204_python
+
+
+sshfs \
+ -o compression=no \
+ -o idmap=user \
+ -o reconnect \
+ ubuntu@10.167.131.30:/home/ubuntu \
+ /home/devi/sshfs/lxc/ubuntu2204_js
diff --git a/terminaldweller.com/cgit/authorized_keys b/terminaldweller.com/cgit/authorized_keys
new file mode 100644
index 0000000..8bd899d
--- /dev/null
+++ b/terminaldweller.com/cgit/authorized_keys
@@ -0,0 +1 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCv7DZhAcOd6MELOY/6gDfdm8RxE29m0kygA50CtXc10Viza54UT5zaCmQ4AFPUztC8zZYR/dqVkxPox443qfbC+N+KJ4prlKZOGOlVVJp+b4EgByQ2VDAQqbuE5rLqsETglgH5IfYct5WiO4DpZ3Ta+w+AkTZYgsVHCdN7i3dQBSGMVvdNxSrLgB5Dr1xTp0qQDM5J+4F8yqWohCSsChX+jGrY04bLYXzYvwVg9O4TB685izT/3YpmFAdN3PJsWt1VaSlYbe03Dn5kxOedX4mK51fkwD+qIlQ2EaFPNjpYYb4ecRKYIPx+0PwcPgEbkiuvBGCaAz9sD231IDJZhZWWkyb9PlgCI3FQh05N/ycbb4Uhe1vKq3rISbscfjK2ZBGVsrammbimihD/SzTisKMfiRhNi2vNgOn1p6ss7TAmpOaub8EfUBvpy5zaTn4ImbnD7QWWDeMrxfiV7TWczqmryPn+IMjlVR+PZIUnF3v+ki8BosA2/FpQmH5krAYuP+SbxtQx7i8VUCkTPQkjkj6Ts270Kf04hNi8RCSTQUV4KbXf96Az4Q2Vpjl1sa0wbrWOITt+nYkYQk+kuOxMdnbWScmC8kZShSzGR4bcvmk4P7ALWy2QW9iwGUCCqDzZPScQV0eLlQfyVHQyOebeiHHbQJ/3ln4tJijsBRYY0/6nsw== devi@DeviBox
diff --git a/terminaldweller.com/cgit/bootstrap/Dockerfile b/terminaldweller.com/cgit/bootstrap/Dockerfile
index be4f278..a1c2ea8 100644
--- a/terminaldweller.com/cgit/bootstrap/Dockerfile
+++ b/terminaldweller.com/cgit/bootstrap/Dockerfile
@@ -4,7 +4,7 @@ RUN apk update && apk add --no-cache git apk-cron
# RUN rc-service crond start && rc-update add crond
COPY ./bootstrap.sh /bootstrap.sh
COPY ./docker-entrypoint.sh /docker-entrypoint.sh
-COPY ./cron /etc/periodic/15min/cron
+COPY ./cron /etc/periodic/daily/cron
# COPY ./crontab /etc/crontabs/root
# RUN chmod 0744 /bootstrap.sh
ENTRYPOINT ["/docker-entrypoint.sh"]
diff --git a/terminaldweller.com/cgit/cgit/Dockerfile b/terminaldweller.com/cgit/cgit/Dockerfile
index 7ef7134..be2e5ef 100644
--- a/terminaldweller.com/cgit/cgit/Dockerfile
+++ b/terminaldweller.com/cgit/cgit/Dockerfile
@@ -3,3 +3,4 @@ RUN apk add && apk add --no-cache python3 py3-pip
RUN pip3 install pygments
RUN pip3 install md2html
RUN pip3 install markdown
+RUN mkdir -p /cgit_cache/ && chown git:git /cgit_cache
diff --git a/terminaldweller.com/cgit/cgit/cgitrc b/terminaldweller.com/cgit/cgit/cgitrc
index 90abd90..a4944e9 100644
--- a/terminaldweller.com/cgit/cgit/cgitrc
+++ b/terminaldweller.com/cgit/cgit/cgitrc
@@ -5,6 +5,7 @@
# Enable caching of up to 1000 output entries
# cache-size=100
+cache-root=/cgit_cache
## ttl for root page
cache-root-ttl=5
@@ -62,7 +63,7 @@ max-stats=year
local-time=1
root-title=cGit
-root-desc=Keep ALL the stuff in VERSION CONTROL!!
+root-desc=terminaldweller's personal git
root-readme=/var/www/about.html
# footer=/var/www/footer.html
@@ -84,7 +85,7 @@ about-filter=/usr/lib/cgit/filters/about-formatting.sh
snapshots=tar.gz zip
# Specify some default clone urls using macro expansion
-clone-url=ssh://git@hostname.local:64822~repositories/$CGIT_REPO_URL git@hostname.local:/home/git/repositories/$CGIT_REPO_URL
+clone-url=https://git.terminaldweller.com/$CGIT_REPO_URL ssh://git@git.terminaldweller.com/$CGIT_REPO_URL git@git.terminaldweller.com:$CGIT_REPO_URL
##
## List of common mimetypes
diff --git a/terminaldweller.com/cgit/docker-compose.yaml b/terminaldweller.com/cgit/docker-compose.yaml
index 3fe10ae..f1344f5 100644
--- a/terminaldweller.com/cgit/docker-compose.yaml
+++ b/terminaldweller.com/cgit/docker-compose.yaml
@@ -8,12 +8,13 @@ services:
- cgitnet
ports:
- "127.0.0.1:8041:80"
- - "127.0.0.1:8042:22"
+ - "8042:22"
- "8043:443"
restart: unless-stopped
environment:
- PGID=1000
- PUID=1000
+ - PYGMENTIZE_STYLE=paraiso-dark
volumes:
- ./cgit/cgitrc:/etc/cgitrc:ro
- storage:/home/git/repositories
@@ -23,6 +24,8 @@ services:
# - /etc/localtime:/etc/localtime:ro
- ./cgit.conf:/etc/lighttpd/cgit.conf:ro
- /etc/letsencrypt/archive/git.terminaldweller.com/:/etc/certs/:ro
+ - cache:/cgit_cache
+ - ./authorized_keys:/home/git/.ssh/authorized_keys
bootstrap:
image: bootstrap
build:
@@ -34,14 +37,15 @@ services:
entrypoint: ["/docker-entrypoint.sh"]
# cap_drop:
# - ALL
- healthcheck:
- test: exit 1
- interval: 1d
- timeout: 10s
- retries: 1
+ # healthcheck:
+ # test: exit 1
+ # interval: 1d
+ # timeout: 10s
+ # retries: 1
restart: unless-stopped
networks:
cgitnet:
bootstrapnet:
volumes:
storage:
+ cache:
diff --git a/terminaldweller.com/ejabberd/docker-compose.yaml b/terminaldweller.com/ejabberd/docker-compose.yaml
index f01085d..cbc9377 100644
--- a/terminaldweller.com/ejabberd/docker-compose.yaml
+++ b/terminaldweller.com/ejabberd/docker-compose.yaml
@@ -9,7 +9,7 @@ services:
- "5222:5222"
- "5223:5223"
- "5269:5269"
- - "5280:5280"
+ - "5270:5270"
- "5443:5443"
#- "1883:1883"
#- "127.0.0.1:5080:5080"
diff --git a/terminaldweller.com/ejabberd/ejabberd.yml b/terminaldweller.com/ejabberd/ejabberd.yml
index fb5a6a9..5072841 100644
--- a/terminaldweller.com/ejabberd/ejabberd.yml
+++ b/terminaldweller.com/ejabberd/ejabberd.yml
@@ -66,6 +66,14 @@ listen:
ip: '0.0.0.0'
module: ejabberd_s2s_in
max_stanza_size: 524288
+ - port: 5270
+ ip: '0.0.0.0'
+ module: ejabberd_s2s_in
+ max_stanza_size: 524288
+ protocol_options: 'TLS_OPTIONS'
+ ciphers: 'TLS_CIPHERS'
+ dhfile: 'DH_FILE'
+ tls: true
- port: 5443
ip: '0.0.0.0'
module: ejabberd_http