aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorterminaldweller <thabogre@gmail.com>2023-01-29 16:50:49 +0000
committerterminaldweller <thabogre@gmail.com>2023-01-29 16:50:49 +0000
commit707e4a8b50f567dbbb740a067a0609c12159379f (patch)
treee33dbc72026366994db1dcf56ecef8d3d6fc5f7e
parentupdate (diff)
downloadscripts-707e4a8b50f567dbbb740a067a0609c12159379f.tar.gz
scripts-707e4a8b50f567dbbb740a067a0609c12159379f.zip
bunch of updates
Diffstat (limited to '')
-rw-r--r--.newsboat/urls14
-rw-r--r--.zshrc37
-rwxr-xr-xbin/tunneltop250
-rwxr-xr-xchroot/mount.sh2
-rw-r--r--cv/CV.tex1
-rw-r--r--cv/CV_Abridged.tex31
-rw-r--r--pkg_list1640
-rw-r--r--terminaldweller.com/lounge/docker-compose.yml29
-rw-r--r--terminaldweller.com/main/srv/cv/CV_Abridged.html316
-rw-r--r--terminaldweller.com/main/srv/index.html17
-rw-r--r--terminaldweller.com/traefik/traefik.yml97
-rwxr-xr-xzfs/import.sh3
12 files changed, 2239 insertions, 198 deletions
diff --git a/.newsboat/urls b/.newsboat/urls
index 06eaa57..e40d4dd 100644
--- a/.newsboat/urls
+++ b/.newsboat/urls
@@ -17,6 +17,9 @@ https://rssgen.terminaldweller.com/?action=display&bridge=OpenwrtSecurityBridge&
https://rssgen.terminaldweller.com/?action=display&bridge=MozillaSecurityBridge&format=Atom "~Moz_Sec_Ad"Moz_Sec_Ad
https://rssgen.terminaldweller.com/?action=display&bridge=WikiLeaksBridge&category=-News-&format=Atom "~Wikileaks"Wikileaks
+https://rssgen.terminaldweller.com/?action=display&bridge=RedditBridge&context=single&r=i2p&f=&score=&d=hot&search=&format=Atom "~I2P_Reddit"Reddit
+https://rssgen.terminaldweller.com/?action=display&bridge=RedditBridge&context=single&r=tor&f=&score=&d=hot&search=&format=Atom "~Tor_Reddit"Reddit
+
# (Twitter)
https://rssgen.terminaldweller.com/?action=display&bridge=TwitterBridge&context=By+username&u=_margery28_&norep=on&noretweet=on&nopinned=on&nopic=on&noimg=on&noimgscaling=on&format=Atom "~Marg"Twitter
https://rssgen.terminaldweller.com/?action=display&bridge=TwitterBridge&context=By+username&u=PancakeSwap&norep=on&noretweet=on&nopinned=on&nopic=on&noimg=on&noimgscaling=on&format=Atom "~Pancakeswap"Twitter
@@ -102,6 +105,15 @@ https://www.youtube.com/feeds/videos.xml?channel_id=UCsBjURrPoezykLs9EqgamOA "~F
https://www.youtube.com/feeds/videos.xml?channel_id=UCW6xlqxSY3gGur4PkGPEUeA "~Seytonic"youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCqajGNTzlQLk5uRsD8R5m3Q "~Wolf_Lord_Rho"youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCUdkjbeIFea0qUSgwR1CUOg "~Studying_With_Alex"youtube
+https://www.youtube.com/feeds/videos.xml?channel_id=UCZgt6AzoyjslHTC9dz0UoTw "~ByteByteGo"youtube
+https://www.youtube.com/feeds/videos.xml?channel_id=UCavTvSwEoRABvnPtLg0e6LQ "~Crypto_Tips"youtube
+https://www.youtube.com/feeds/videos.xml?channel_id=UC3ltptWa0xfrDweghW94Acg "~Karl_Jobst"youtube
+https://www.youtube.com/feeds/videos.xml?channel_id=UCUxmjSBn7Blx6eWpeC0I4xQ "~Maryam_Sadeghi"youtube
+https://www.youtube.com/feeds/videos.xml?channel_id=UCaiL2GDNpLYH6Wokkk1VNcg "~mCoding"youtube
+https://www.youtube.com/feeds/videos.xml?channel_id=UCd26IHBHcbtxD7pUdnIgiCw "~Mike_Levin"youtube
+https://www.youtube.com/feeds/videos.xml?channel_id=UCS4FAVeYW_IaZqAbqhlvxlA "~Context_Free"youtube
+https://www.youtube.com/feeds/videos.xml?channel_id=UCYVU6rModlGxvJbszCclGGw "~Rob_Braxman_Tech"youtube
+https://www.youtube.com/feeds/videos.xml?channel_id=UCVik6mzTCurdJmvdj5dCa7A "~My_PlayHouse"youtube
https://www.youtube.com/feeds/videos.xml?user=g297125009 "~Gavin_Freeborn"youtube
https://www.youtube.com/feeds/videos.xml?user=Hak5Darren "~Hak_5"youtube
@@ -109,7 +121,7 @@ https://www.youtube.com/feeds/videos.xml?user=GISIGeometry "~Hussein_Nasser"yout
https://www.youtube.com/feeds/videos.xml?user=geerlingguy "~Jeff_Geerling"youtube
https://www.youtube.com/feeds/videos.xml?user=JtheLinuxguy "~Learn_Linux_TV"youtube
https://www.youtube.com/feeds/videos.xml?user=NetworkChuck "~NetworkChuck"youtube
-# Misc
+
https://www.youtube.com/feeds/videos.xml?channel_id=UC0Whg8Zz7TT1VSpWeCjghKg "~-sokoninaru-そこに鳴る"youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC3M7l8ved_rYQ45AVzS0RGA "~The_Jimmy_Dore_Show"youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC6gD8kk_Z_5bX2PcRk2fwDg "~Pagefire"youtube
diff --git a/.zshrc b/.zshrc
index 6ab0bdc..d25d9a6 100644
--- a/.zshrc
+++ b/.zshrc
@@ -98,19 +98,28 @@ alias ogg="ogg123"
alias mupdf="/home/devi/extra/mupdf/build/release/mupdf-x11 -D red -P black -I"
alias googler="~/extra/googler/googler --colors GKmexy -c us -l en --count 7 --exact "
alias ddgr="ddgr --colorize always -r us-en -n 15"
-alias pirate-get="pirate-get -S ~/magnets/"
-alias vps="proxychains4 -q -f ~/proxies/ice/proxychains.conf ssh 87.236.209.206 -l ubuntu -p 1022"
-alias vpn="proxychains4 -q -f ~/proxies/ice/proxychains.conf ssh 192.99.102.52 -l rooot -p 1022"
-alias vpn2="proxychains4 -q -f ~/proxies/ice/proxychains.conf ssh 145.239.165.137 -l rooot"
+# alias pirate-get="pirate-get -S ~/magnets/"
+alias vps="proxychains4 -q -f ~/proxies/ice/proxychains.conf ssh -tt 87.236.209.206 -l ubuntu -p 1022"
+alias vpn="proxychains4 -q -f ~/proxies/ice/proxychains.conf ssh -tt 192.99.102.52 -l rooot -p 1022"
+alias vpn2="proxychains4 -q -f ~/proxies/ice/proxychains.conf ssh -tt 145.239.165.137 -l rooot"
# alias vpn3="proxychains4 -q -f ~/proxies/ice/proxychains.conf ssh -o StrictHostKeyChecking=yes -o UserKnownHostsFile=/dev/null -o VerifyHostKeyDNS=yes root@jump3.terminaldweller.com -p 2022"
-alias vpn3="proxychains4 -q -f ~/proxies/ice/proxychains.conf ssh -p 2022 root@185.112.147.110"
-alias vpn6="proxychains4 -q -f ~/proxies/ice/proxychains.conf ssh -p 3333 ubuntu@185.130.45.46"
-alias vpn7="proxychains4 -q -f ~/proxies/ice/proxychains.conf ssh -p 3333 ubuntu@185.130.47.81"
-alias vpn8="proxychains4 -q -f ~/proxies/ice/proxychains.conf ssh -p 3333 ubuntu@185.130.47.208"
+alias vpn3="proxychains4 -q -f ~/proxies/ice/proxychains.conf ssh -tt -p 2022 root@185.112.147.110"
+alias vpn6="proxychains4 -q -f ~/proxies/ice/proxychains.conf ssh -tt -p 3333 ubuntu@185.130.45.46"
+alias vpn7="proxychains4 -q -f ~/proxies/ice/proxychains.conf ssh -tt -p 3333 ubuntu@185.130.47.81"
+alias vpn8="proxychains4 -q -f ~/proxies/ice/proxychains.conf ssh -tt -p 3333 ubuntu@185.130.47.208"
alias vpn9="proxychains4 -q -f ~/proxies/ice/proxychains.conf ssh -tt -i ~/.ssh/id_rsa -p 3333 ubuntu@185.130.47.81 ssh -tt -i /home/ubuntu/.ssh/id_rsa_lv2 2a07:e01:3:1c4::1 -p 3333 -l ubuntu"
-alias vms="proxychains4 -q -f ~/proxies/ice/proxychains.conf ssh 185.126.202.69 -l ubuntu -p 1022"
-alias cloud_one="proxychains4 -q -f ~/proxies/ice/proxychains.conf ssh 130.185.121.80 -l ubuntu -p 1022"
-alias pytags="ctags --fields=+l --languages=python --python-kinds=-iv -R ."
+alias vms="proxychains4 -q -f ~/proxies/ice/proxychains.conf ssh -tt 185.126.202.69 -l ubuntu -p 1022"
+alias -g DOCKER_HOST_VPS="ssh://ubuntu@87.236.209.206:1022"
+alias -g DOCKER_HOST_VPN="ssh://rooot@192.99.102.52:1022"
+alias -g DOCKER_HOST_VPN2="ssh://rooot@145.239.165.137:22"
+alias -g DOCKER_HOST_VPN3="ssh://root@185.112.147.110:2022"
+alias -g DOCKER_HOST_VPN6="ssh://ubuntu@185.130.45.46:3333"
+alias -g DOCKER_HOST_VPN7="ssh://ubuntu@185.130.47.81:3333"
+alias -g DOCKER_HOST_VPN8="ssh://ubuntu@185.130.47.208:3333"
+# alias -g DOCKER_HOST_VPN9=""
+alias -g DOCKER_HOST_VMS="ssh://ubuntu@185.126.202.69:1022"
+# alias cloud_one="proxychains4 -q -f ~/proxies/ice/proxychains.conf ssh 130.185.121.80 -l ubuntu -p 1022"
+# alias pytags="ctags --fields=+l --languages=python --python-kinds=-iv -R ."
alias v="vim"
alias kshrc="vim ~/scripts/.kshrc"
alias fixkshrc="cp ~/scripts/.kshrc ~/.kshrc"
@@ -231,9 +240,9 @@ alias zh_router_admin="zssh admin@192.168.90.71"
alias youtube_dl="proxychains4 -f /home/devi/proxies/ice/proxychains.conf youtube-dl"
# alias campv="proxychains4 -f /home/devi/proxies/ca/proxychains.conf mpv --no-video"
alias tormpv="torsocks --port 9054 mpv --no-video"
-alias youtube144="proxychains4 -f /home/devi/proxies/ice/proxychains.conf mpv --ytdl-format=160+249"
-alias youtube360="proxychains4 -f /home/devi/proxies/ice/proxychains.conf mpv --ytdl-format=243+160"
-alias youtube480="proxychains4 -f /home/devi/proxies/ice/proxychains.conf mpv --ytdl-format=244+140"
+alias youtube144="mpv --ytdl-format=160+249"
+alias youtube360="mpv --ytdl-format=243+160"
+alias youtube480="mpv --ytdl-format=244+140"
alias tridactylrc="vim ~/scripts/.tridactylrc"
alias fixtridactylrc="cp ~/scripts/.tridactylrc ~/"
alias man="man -O width=210"
diff --git a/bin/tunneltop b/bin/tunneltop
index 7c32e17..7bf1878 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,52 +134,18 @@ def ffs(
return lines
-def render(
- data_cols: typing.Dict[str, typing.Dict[str, str]],
- tasks: typing.List[asyncio.Task],
- stdscr,
- sel: int,
-):
+def render(lines: typing.List[str], 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)
- if name not in tasks
- else curses.color_pair(5),
+ (2 + i) % (len(lines) + 1), 1, line, curses.color_pair(2)
)
else:
- stdscr.addstr(
- 2 + i,
- 1,
- line,
- curses.color_pair(1)
- if name not in tasks
- else curses.color_pair(4),
- )
+ stdscr.addstr(2 + i, 1, line, curses.color_pair(1))
stdscr.addstr("\n")
stdscr.box()
@@ -198,43 +164,18 @@ 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 TunnelManager:
+class TunnelTop:
"""The tunnel top class"""
def __init__(self):
self.argparser = Argparser()
- self.data_cols: typing.Dict[
- str, typing.Dict[str, str]
- ] = self.read_conf()
+ self.data_cols: typing.Dict[str, typing.Dict[str, str]] = {}
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"""
@@ -259,36 +200,58 @@ class TunnelManager:
}
return data_cols
- 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,
+ 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
)
- return await proc.communicate()
-
- async def run_test_coro(
- self, cmd: str, task_name: str
- ) -> typing.Tuple[bytes, bytes]:
- """Run a test command"""
try:
- 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('"')
+ return await proc.communicate()
+ except asyncio.CancelledError:
+ self.write_log("fucking fuck")
+ return (bytes(), bytes())
- 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"]:
+ def tunnel_test_callback(self, task: asyncio.Task) -> None:
+ """Tunnel test callback function."""
+ 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"]
+ ):
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"
- raise
+ 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
async def tunnel_procs(
self,
@@ -298,7 +261,7 @@ class TunnelManager:
for _, value in self.data_cols.items():
tasks.append(
asyncio.create_task(
- self.run_subprocess(value["command"]), name=value["name"]
+ self.run_subshell(value["command"]), name=value["name"]
),
)
await asyncio.sleep(0)
@@ -311,13 +274,10 @@ class TunnelManager:
if k not in self.data_cols:
self.tunnel_tasks.append(
asyncio.create_task(
- self.run_subprocess(value["command"]), name=k
+ self.run_subshell(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"]
@@ -331,11 +291,9 @@ class TunnelManager:
self.data_cols[k] = copy.deepcopy(data_cols_new[k])
self.tunnel_tasks.append(
asyncio.create_task(
- self.run_subprocess(value["command"]), name=k
+ self.run_subshell(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():
@@ -344,8 +302,6 @@ class TunnelManager:
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."""
@@ -358,7 +314,7 @@ class TunnelManager:
"""A simple logger"""
with open(
"/home/devi/devi/abbatoir/hole15/log",
- "a",
+ "w",
encoding="utf-8",
) as logfile:
logfile.write(log)
@@ -372,15 +328,15 @@ class TunnelManager:
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 and task.cancelled():
- self.tunnel_tasks.append(
- asyncio.create_task(
- self.run_subprocess(value["command"]),
- name=value["name"],
- )
- )
- await asyncio.sleep(0)
+ 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)
async def flip_task(self, line_content: str) -> None:
"""flip a task"""
@@ -401,76 +357,53 @@ class TunnelManager:
if value["name"] == name:
self.tunnel_tasks.append(
asyncio.create_task(
- self.run_subprocess(value["command"]),
+ self.run_subshell(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 tui_loop(self) -> None:
+ async def main(self) -> None:
"""entrypoint"""
sel: int = 0
try:
stdscr = curses_init()
- # 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"
+
+ self.data_cols = self.read_conf()
+
+ loop = asyncio.get_event_loop()
+ loop.add_signal_handler(
+ signal.SIGHUP,
+ lambda: asyncio.create_task(self.sighup_handler()),
)
+ self.tunnel_tasks = await self.tunnel_procs()
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(self.data_cols, self.tunnel_tasks, stdscr, sel)
+ render(lines, stdscr, sel)
char = stdscr.getch()
if char == ord("j") or char == curses.KEY_DOWN:
@@ -482,6 +415,7 @@ class TunnelManager:
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"))
@@ -499,5 +433,5 @@ class TunnelManager:
if __name__ == "__main__":
- tunnel_manager = TunnelManager()
- asyncio.run(tunnel_manager.tui_loop())
+ tunnel_top = TunnelTop()
+ asyncio.run(tunnel_top.main())
diff --git a/chroot/mount.sh b/chroot/mount.sh
index 710eaf7..b2a9c68 100755
--- a/chroot/mount.sh
+++ b/chroot/mount.sh
@@ -10,7 +10,7 @@ sudo mount -t ext4 -U a27a2530-a37e-4bb3-9f4b-4b3975253e43 /home/devi/storage/ss
sudo mount -o bind /home/devi/storage/ssd1/nix/store /nix/store
sudo mkdir -p /tmp/tmpfs4_1
-sudo mount -t tmpfs -o size=4000M tmpfs /tmp/tmpfs4_1
+sudo mount -t tmpfs -o size=4096M tmpfs /tmp/tmpfs4_1
sudo chown devi:devi /tmp/tmpfs4_1
# virsh pool-define-as --name ramdisk --type dir --target /tmp/tmpfs4_1
virsh pool-start ramdisk
diff --git a/cv/CV.tex b/cv/CV.tex
index 6e6a31e..51dc9a4 100644
--- a/cv/CV.tex
+++ b/cv/CV.tex
@@ -170,4 +170,3 @@
\end{longtable}
\end{document}
-
diff --git a/cv/CV_Abridged.tex b/cv/CV_Abridged.tex
index 00c58ad..a0f8323 100644
--- a/cv/CV_Abridged.tex
+++ b/cv/CV_Abridged.tex
@@ -15,18 +15,19 @@
\newcommand\VRule{\color{lightgray}\vrule width 0.5pt}
\title{\bfseries Farzad Sadeghi}
-\date{2022/08/08}
+\date{2023/01/28}
\begin{document}
\begin{multicols}{2}
\maketitle
\begin{center}
- \begin{minipage}[ht]{0.2\textwidth}{\centering}
+ \begin{minipage}[ht]{0.3\textwidth}{\centering}
\vspace*{\fill}
\centering
- thabogre@gmail.com\\
+ {\href {https://terminaldweller.com} {https://terminaldweller.com}}\\
devi@terminaldweller.com\\
+ thabogre@gmail.com\\
Tehran, Iran\\
- +98 0912 5802283
+ +989125802283
\centering
\vspace*{\fill}
\end{minipage}
@@ -56,15 +57,15 @@
\bf Crouse (Tehran, Iran)\\
July 2014--March 2016\\
21 months\\
- \normalfont Embedded software developer, Safety-critical applications: Design, implementation and automation. The Software team’s ISO 26262 representative.\\[5pt]
+ \normalfont Embedded software developer, Safety-critical applications: Design, implementation and automation. The Software team's ISO 26262 representative.\\[5pt]
\bf Safir Language Academy (Tehran, Iran)\\
August 2010--March 2012\\
20 months\\
\normalfont English Teacher - Later on specifically IELTS teacher.\\[5pt]
- \section*{Programming Languages}
- \bf Languages: \normalfont C, Python, C++, Go\\[5pt]
- \bf Other: \normalfont unix-like cli utilities, GNU make, Docker, Vagrant\\[5pt]
+ \section*{Skills}
+ \bf Programming Languages: \normalfont C, Python, C++, Go\\[5pt]
+ \bf Other: \normalfont Linux, docker\\[5pt]
\section*{Hobby}
I maintain my own local kubernetes cluster with k3s on my raspberry pis along with a bunch of VPSs that I run my services on(Docker, not swarm)).\\[5pt]
@@ -75,7 +76,7 @@
\normalfont German: Beginner\\
\section*{Education}
- 2021--Now Master's in Computer Science, Azad University, Science and Research Branch, Tehran, Iran.\\[5pt]
+ 2021--Now Master's in Computer Science, Azad University, Science and Research Branch, Tehran, Iran. Currently working on my thesis\\[5pt]
2007--2013 Bachelor's in Electrical Engineering, Iran University of Science and Technology, Tehran, Iran.\\[5pt]
\bf Thesis: \normalfont Determining the frequency of an audio signal using phase derivation in real time, design and implementation using an FPGA.
@@ -109,15 +110,15 @@
\bf ISO 26262\\ \normalfont Studied the software section of the standard. I was also the software group's representative for the study/review meetings held with the hardware and system teams on ISO 26262.\\[5pt]
\section*{Links}
- {\bf \href{https://www.linkedin.com/in/farzad-sadeghi/}{Linkedin}} My Linkedin page.\\[5pt]
+ {\bf \href{https://terminaldweller.com}{terminaldweller.com}} A list of links.\\[5pt]
{\bf \href{https://github.com/terminaldweller}{Github}} My Github page.\\[5pt]
- {\bf \href{https://github.com/terminaldweller/hived}{hived}} My personal tiny high-performance server written in Go.\\[5pt]
+ {\bf \href{https://github.com/terminaldweller/hived/tree/arbitrage}{hived}} A tiny and fast crypto API server.\\[5pt]
+ {\bf \href{https://github.com/terminaldweller/magni}{magni}} Upscales the images in a webpage and serves them back locally.\\[5pt]
{\bf \href{https://github.com/terminaldweller/cgrep}{cgrep}} Grep for C-family source files.\\[5pt]
- {\bf \href{https://github.com/terminaldweller/delf}{delf}} An ELF dump script in python.\\[5pt]
- {\bf \href{https://github.com/terminaldweller/devourer}{devourer}} A tiny knowledge aggregator still in its infancy.\\[5pt]
- {\bf \href{https://github.com/terminaldweller/simplex}{dsimplex}} Yet another simplex implementation in python.\\[5pt]
- {\bf \href{https://github.com/terminaldweller/mdrtl}{mdrtl}} A very minimal RTL markdown editor.\\[5pt]
+ {\bf \href{https://github.com/terminaldweller/devourer}{devourer}} A little helper API server. Extracts, summarizes and vocalizes articles on the web.\\[5pt]
+ {\bf \href{https://github.com/terminaldweller/mdrtl}{mdrtl}} A minimal RTL markdown editor.\\[5pt]
{\bf \href{https://github.com/terminaldweller/blog}{blog}} Source code for my blog.\\[5pt]
+ {\bf \href{https://www.linkedin.com/in/farzad-sadeghi/}{Linkedin}} My Linkedin page.\\[5pt]
\end{multicols}
\end{document}
diff --git a/pkg_list b/pkg_list
new file mode 100644
index 0000000..d95ea44
--- /dev/null
+++ b/pkg_list
@@ -0,0 +1,1640 @@
+7zip-22.01_2
+AppStream-0.15.6_1
+Bear-3.0.21_1
+Cataclysm-DDA-0.E_4
+Cataclysm-DDA-data-0.E_4
+FreeRADIUS-3.0.23_1
+FreeRADIUS-devel-3.0.23_1
+LuaJIT-2.1.0beta3_2
+MesaLib-devel-22.2.4_2
+NetworkManager-1.40.10_1
+NetworkManager-openvpn-1.8.18_1
+SDL-1.2.15_13
+SDL2-2.26.2_1
+SDL2-devel-2.26.2_1
+SDL2_image-2.6.2_1
+SDL_image-1.2.12_13
+SDL_net-1.2.8_6
+SDL_sound-1.0.3_7
+SDL_ttf-2.0.11_7
+Thunar-4.18.2_1
+VirtualGL-2.6.2_3
+Vulkan-Headers-1.3.231.1_1
+ZMusic-1.1.10_1
+aalib-1.4rc5_2
+abseil-cpp-20220623.1_1
+acl-2.3.1_1
+acl-devel-2.3.1_1
+acl-progs-2.3.1_1
+acpid-2.0.34_1
+adwaita-icon-theme-43_1
+alacritty-0.11.0_1
+alacritty-terminfo-0.11.0_1
+alsa-lib-1.2.8_1
+alsa-lib-devel-1.2.8_1
+alsa-plugins-ffmpeg-1.2.7.1_1
+alsa-plugins-pulseaudio-1.2.7.1_1
+alsa-tools-1.2.5_1
+alsa-utils-1.2.8_1
+apache-maven-3.6.3_3
+appstream-glib-0.8.1_2
+apulse-0.1.13_1
+aria2-1.36.0_1
+asciinema-2.2.0_2
+at-spi2-atk-2.38.0_1
+at-spi2-core-2.44.0_1
+atk-2.36.0_1
+attr-2.5.1_1
+attr-devel-2.5.1_1
+attr-progs-2.5.1_1
+autoconf-2.71_1
+automake-1.16.5_1
+autossh-1.4g_1
+avahi-glib-libs-0.8_5
+avahi-libs-0.8_2
+bandwhich-0.20.0_1
+base-files-0.142_14
+base-system-0.114_1
+base-voidstrap-0.11_1
+bash-5.1.016_2
+bat-0.22.1_2
+bc-1.07.1_5
+bind-9.16.22_1
+bind-libs-9.16.22_1
+bind-utils-9.16.22_1
+binutils-2.39_1
+binutils-doc-2.39_1
+bison-3.7.6_1
+blas-3.11_1
+blas-devel-3.11_1
+blueman-2.3.5_1
+bluez-5.65_1
+bluez-alsa-3.1.0_1
+bmake-20230120_1
+bombadillo-2.4.0_1
+boost-1.81.0_1
+botan-2.19.3_1
+bridge-utils-1.6_2
+broot-1.18.0_2
+brotli-1.0.9_2
+brotli-devel-1.0.9_2
+bsdtar-3.6.2_2
+btrfs-progs-6.1.2_1
+bubblewrap-0.7.0_1
+buku-4.7_2
+busybox-static-1.34.1_3
+bzip2-1.0.8_1
+bzip2-devel-1.0.8_1
+c-ares-1.18.1_1
+ca-certificates-20211016+3.86_1
+cairo-1.16.0_2
+cantarell-fonts-0.303.1_1
+capstone-4.0.2_5
+cblas-3.11_1
+cblas-devel-3.11_1
+cdrtools-3.02a09_3
+celt-0.11.3_3
+checkbashisms-2.22.2_1
+chromaprint-1.5.1_1
+chromium-109.0.5414.74_1
+cifs-utils-6.15_1
+clang-12.0.1_4
+clang-tools-extra-12.0.1_4
+clipnotify-1.0.2_1
+clucene-2.3.3.4_10
+cmake-3.25.1_1
+cmus-2.10.0_1
+cmus-ffmpeg-2.10.0_1
+cmus-flac-2.10.0_1
+cointop-1.6.8_1
+containerd-1.6.10_1
+coreutils-8.32_4
+cpio-2.13_1
+cryptsetup-2.6.0_2
+cryptsetup-devel-2.6.0_2
+cscope-15.9_1
+ctags-5.9.20221002.0_1
+curl-7.87.0_2
+cvs-1.12.13_6
+cyrus-sasl-modules-2.1.27_9
+dash-0.5.12_1
+db-devel-5.3.28_8
+dbus-1.14.4_1
+dbus-devel-1.14.4_1
+dbus-glib-0.112_1
+dbus-libs-1.14.4_1
+dbus-x11-1.14.4_1
+dconf-0.40.0_1
+debootstrap-1.0.128+nmu2_1
+dejavu-fonts-ttf-2.37_2
+desktop-file-utils-0.26_1
+device-mapper-2.02.187_2
+device-mapper-devel-2.02.187_2
+dhclient-4.4.2P1_3
+dhcpcd-9.4.1_2
+dia-0.97.3_4
+diffutils-3.9_1
+dive-0.10.0_1
+dkms-3.0.6_2
+dmidecode-3.4_1
+dmraid-1.0.0.rc16.3_12
+dnsmasq-2.88_1
+dnssec-anchors-20181012_2
+docker-20.10.23_1
+docker-cli-20.10.23_1
+docker-compose-2.15.1_1
+dos2unix-7.4.3_1
+dosbox-0.74pl3_2
+dosfstools-4.2_1
+double-conversion-3.1.5_1
+dqlite-1.13.0_1
+dracut-059_1
+dragon-1.2.0_3
+dtc-1.6.1_1
+dtrx-8.5.0_1
+duktape-2.7.0_1
+dwarffortress-0.47.05_2
+dynamips-0.2.21_1
+e2fsprogs-1.46.5_1
+e2fsprogs-devel-1.46.5_1
+e2fsprogs-libs-1.46.5_1
+editline-1.17.1_2
+efibootmgr-18_1
+efivar-37_2
+electrum-4.2.0_3
+elfutils-devel-0.187_1
+elogind-246.10_2
+enchant2-2.3.3_1
+ethtool-5.19_1
+eudev-3.2.11_1
+eudev-libudev-3.2.11_1
+eudev-libudev-devel-3.2.11_1
+evolution-data-server-3.46.3_1
+exa-0.10.1_2
+exo-4.18.0_1
+expat-2.5.0_1
+expat-devel-2.5.0_1
+f2fs-tools-1.15.0_1
+faac-1.30_1
+faad2-2.10.1_1
+farstream-0.2.9_2
+fdk-aac-2.0.2_2
+ffmpeg-4.4.3_2
+ffmpegthumbnailer-2.2.2_1
+ffplay-4.4.3_2
+fftw-devel-3.3.10_1
+file-5.44_1
+findutils-4.9.0_1
+firefox-esr-102.3.0_1
+firefox-esr-i18n-102.3.0_1
+firefox-esr-i18n-ach-102.3.0_1
+firefox-esr-i18n-af-102.3.0_1
+firefox-esr-i18n-an-102.3.0_1
+firefox-esr-i18n-ar-102.3.0_1
+firefox-esr-i18n-ast-102.3.0_1
+firefox-esr-i18n-az-102.3.0_1
+firefox-esr-i18n-be-102.3.0_1
+firefox-esr-i18n-bg-102.3.0_1
+firefox-esr-i18n-bn-102.3.0_1
+firefox-esr-i18n-br-102.3.0_1
+firefox-esr-i18n-bs-102.3.0_1
+firefox-esr-i18n-ca-102.3.0_1
+firefox-esr-i18n-cak-102.3.0_1
+firefox-esr-i18n-cs-102.3.0_1
+firefox-esr-i18n-cy-102.3.0_1
+firefox-esr-i18n-da-102.3.0_1
+firefox-esr-i18n-de-102.3.0_1
+firefox-esr-i18n-dsb-102.3.0_1
+firefox-esr-i18n-el-102.3.0_1
+firefox-esr-i18n-en-CA-102.3.0_1
+firefox-esr-i18n-en-GB-102.3.0_1
+firefox-esr-i18n-en-US-102.3.0_1
+firefox-esr-i18n-eo-102.3.0_1
+firefox-esr-i18n-es-AR-102.3.0_1
+firefox-esr-i18n-es-CL-102.3.0_1
+firefox-esr-i18n-es-ES-102.3.0_1
+firefox-esr-i18n-es-MX-102.3.0_1
+firefox-esr-i18n-et-102.3.0_1
+firefox-esr-i18n-eu-102.3.0_1
+firefox-esr-i18n-fa-102.3.0_1
+firefox-esr-i18n-ff-102.3.0_1
+firefox-esr-i18n-fi-102.3.0_1
+firefox-esr-i18n-fr-102.3.0_1
+firefox-esr-i18n-fy-NL-102.3.0_1
+firefox-esr-i18n-ga-IE-102.3.0_1
+firefox-esr-i18n-gd-102.3.0_1
+firefox-esr-i18n-gl-102.3.0_1
+firefox-esr-i18n-gn-102.3.0_1
+firefox-esr-i18n-gu-IN-102.3.0_1
+firefox-esr-i18n-he-102.3.0_1
+firefox-esr-i18n-hi-IN-102.3.0_1
+firefox-esr-i18n-hr-102.3.0_1
+firefox-esr-i18n-hsb-102.3.0_1
+firefox-esr-i18n-hu-102.3.0_1
+firefox-esr-i18n-hy-AM-102.3.0_1
+firefox-esr-i18n-ia-102.3.0_1
+firefox-esr-i18n-id-102.3.0_1
+firefox-esr-i18n-is-102.3.0_1
+firefox-esr-i18n-it-102.3.0_1
+firefox-esr-i18n-ja-102.3.0_1
+firefox-esr-i18n-ka-102.3.0_1
+firefox-esr-i18n-kab-102.3.0_1
+firefox-esr-i18n-kk-102.3.0_1
+firefox-esr-i18n-km-102.3.0_1
+firefox-esr-i18n-kn-102.3.0_1
+firefox-esr-i18n-ko-102.3.0_1
+firefox-esr-i18n-lij-102.3.0_1
+firefox-esr-i18n-lt-102.3.0_1
+firefox-esr-i18n-lv-102.3.0_1
+firefox-esr-i18n-mk-102.3.0_1
+firefox-esr-i18n-mr-102.3.0_1
+firefox-esr-i18n-ms-102.3.0_1
+firefox-esr-i18n-my-102.3.0_1
+firefox-esr-i18n-nb-NO-102.3.0_1
+firefox-esr-i18n-ne-NP-102.3.0_1
+firefox-esr-i18n-nl-102.3.0_1
+firefox-esr-i18n-nn-NO-102.3.0_1
+firefox-esr-i18n-oc-102.3.0_1
+firefox-esr-i18n-pa-IN-102.3.0_1
+firefox-esr-i18n-pl-102.3.0_1
+firefox-esr-i18n-pt-BR-102.3.0_1
+firefox-esr-i18n-pt-PT-102.3.0_1
+firefox-esr-i18n-rm-102.3.0_1
+firefox-esr-i18n-ro-102.3.0_1
+firefox-esr-i18n-ru-102.3.0_1
+firefox-esr-i18n-si-102.3.0_1
+firefox-esr-i18n-sk-102.3.0_1
+firefox-esr-i18n-sl-102.3.0_1
+firefox-esr-i18n-son-102.3.0_1
+firefox-esr-i18n-sq-102.3.0_1
+firefox-esr-i18n-sr-102.3.0_1
+firefox-esr-i18n-sv-SE-102.3.0_1
+firefox-esr-i18n-ta-102.3.0_1
+firefox-esr-i18n-te-102.3.0_1
+firefox-esr-i18n-th-102.3.0_1
+firefox-esr-i18n-tr-102.3.0_1
+firefox-esr-i18n-uk-102.3.0_1
+firefox-esr-i18n-ur-102.3.0_1
+firefox-esr-i18n-uz-102.3.0_1
+firefox-esr-i18n-vi-102.3.0_1
+firefox-esr-i18n-xh-102.3.0_1
+firefox-esr-i18n-zh-CN-102.3.0_1
+firefox-esr-i18n-zh-TW-102.3.0_1
+flac-1.3.4_1
+flatpak-1.15.1_2
+flex-2.6.4_3
+flite-2.2_1
+fltk-1.3.8_1
+fmt-9.1.0_1
+font-alias-1.0.4_2
+font-awesome5-5.15.4_2
+font-misc-misc-1.1.2_7
+font-util-1.3.3_1
+fontconfig-2.14.1_1
+fontconfig-devel-2.14.1_1
+fontforge-20230101_1
+freetype-2.12.1_2
+freetype-devel-2.12.1_2
+fribidi-1.0.12_1
+fribidi-devel-1.0.12_1
+fuse-2.9.9_1
+fuse-sshfs-3.7.3_1
+fuse3-3.13.0_1
+fzf-0.37.0_1
+gajim-1.5.3_2
+garcon-4.18.0_1
+gawk-5.1.1_1
+gbinder-python-1.1.1_2
+gc-8.2.2_1
+gc-devel-8.2.2_1
+gcc-12.2.0_1
+gcc-fortran-12.2.0_1
+gcr-3.41.1_1
+gd-2.3.2_1
+gdb-12.1_3
+gdb-common-12.1_3
+gdbm-1.23_1
+gdk-pixbuf-2.42.6_1
+geoclue2-2.6.0_1
+geocode-glib-3.26.4_2
+geocode-glib-common-3.26.4_2
+geocode-glib-libsoup2-3.26.4_1
+gettext-0.21_4
+gettext-devel-tools-0.21_4
+gflags-2.2.2_1
+giflib-5.2.1_1
+gir-freedesktop-1.74.0_3
+girara-0.3.9_1
+git-2.39.1_1
+glib-2.74.0_3
+glib-networking-2.74.0_1
+glibc-2.36_1
+glibc-dbg-2.36_1
+glibc-devel-2.36_1
+glibc-locales-2.36_1
+glslang-11.11.0_1
+glu-9.0.2_2
+glu-devel-9.0.2_2
+glxinfo-8.4.0_3
+gmime-3.2.7_2
+gmime3-3.2.7_2
+gmp-6.2.1_1
+gmp-devel-6.2.1_1
+gnome-icon-theme-3.12.0_3
+gnome-keyring-42.1_1
+gnome-online-accounts-3.46.0_1
+gnome-themes-extra-3.28_3
+gnome-themes-standard-3.28_3
+gns3-gui-2.2.35_1
+gns3-net-converter-1.3.0_7
+gns3-server-2.2.35_1
+gnupg-2.4.0_1
+gnupg2-2.4.0_1
+gnustep-base-1.29.0_1
+gnutls-3.7.8_1
+gnutls-tools-3.7.8_1
+gotty-1.0.1_8
+gpgmepp-1.18.0_2
+gptfdisk-1.0.9_1
+gradle-7.6_1
+graphene-1.10.6_3
+graphite-1.3.14_1
+graphviz-7.0.6_1
+graphviz-libs-7.0.6_1
+grc-1.13_1
+grep-3.8_1
+groff-1.22.4_3
+grpc-1.49.1_1
+grub-2.06_2
+grub-i386-efi-2.06_2
+grub-x86_64-efi-2.06_2
+gsettings-desktop-schemas-43.0_1
+gsound-1.0.3_1
+gspell-1.11.1_1
+gssdp-1.4.0.1_1
+gst-libav-1.20.3_1
+gst-plugins-bad1-1.20.3_2
+gst-plugins-base1-1.20.3_1
+gst-plugins-good1-1.20.3_1
+gst-plugins-ugly1-1.20.3_1
+gstreamer1-1.20.3_1
+gtk+-2.24.33_2
+gtk+3-3.24.34_1
+gtk-update-icon-cache-2.24.33_2
+gtk4-4.8.3_1
+gtksourceview4-4.8.2_2
+gtkspell-2.0.16_5
+gts-0.7.6_1
+gupnp-1.2.4_3
+gupnp-igd-0.2.5_3
+gvfs-1.50.2_1
+gvfs-afc-1.50.2_1
+gvfs-mtp-1.50.2_1
+gvfs-smb-1.50.2_1
+gvim-huge-9.0.0948_1
+gzdoom-4.7.1_2
+gzip-1.12_2
+hdparm-9.65_1
+hicolor-icon-theme-0.17_3
+hidapi-0.11.2_1
+hidapi-devel-0.11.2_1
+htop-3.2.1_1
+hunspell-1.7.2_1
+hwids-0.366_1
+hyphen-2.8.8_3
+i3-4.22_1
+i3-gaps-4.22_1
+i3blocks-1.5_2
+iana-etc-20230104_1
+iceauth-1.0.9_1
+icu-devel-71.1_1
+icu-libs-71.1_1
+iftop-1.0pre4_3
+imlib2-1.9.1_1
+imlib2-devel-1.9.1_1
+inetutils-telnet-2.2_1
+inetutils-tftp-2.2_1
+inih-56_1
+iniparser-4.1_3
+intel-gmmlib-22.2.0_1
+intel-media-driver-22.5.3_1
+iouyap-0.97_2
+iproute2-5.19.0_1
+iptables-1.8.7_1
+iputils-20221126_1
+ipw2100-firmware-1.3_6
+ipw2200-firmware-3.1_6
+irssi-1.4.3_1
+irssi-otr-1.4.3_1
+irssi-perl-1.4.3_1
+iso-codes-4.12.0_1
+iw-5.19_1
+jansson-2.14_1
+jbigkit-libs-2.2_2
+jq-1.6_2
+json-c-0.16_1
+json-c-devel-0.16_1
+json-glib-1.6.6_2
+jsoncpp-1.9.4_2
+k9s-0.26.7_1
+kColorPicker-0.1.6_1
+kImageAnnotator-0.5.3_1
+kbd-2.5.1_1
+keepassxc-2.7.4_1
+kernel-libc-headers-5.10.4_1
+kmod-30_1
+kmonad-0.4.1.20220321_1
+kpartx-0.9.4_1
+ksh-1.0.4_1
+ksnip-1.9.2_1
+kubectl-1.26.0_1
+lame-3.100_1
+lame-devel-3.100_1
+lcms2-2.14_1
+ldacBT-2.0.2.3_1
+ldb-2.3.2_2
+less-608_1
+libICE-1.1.1_1
+libICE-devel-1.1.1_1
+libOSMesa-22.2.4_2
+libSM-1.2.3_1
+libSM-devel-1.2.3_1
+libX11-1.8.2_2
+libX11-devel-1.8.2_2
+libXScrnSaver-1.2.4_1
+libXScrnSaver-devel-1.2.4_1
+libXau-1.0.11_1
+libXau-devel-1.0.11_1
+libXaw-1.0.14_1
+libXaw-devel-1.0.14_1
+libXcomposite-0.4.6_1
+libXcursor-1.2.1_2
+libXcursor-devel-1.2.1_2
+libXdamage-1.1.6_1
+libXdmcp-1.1.4_1
+libXdmcp-devel-1.1.4_1
+libXext-1.3.5_1
+libXext-devel-1.3.5_1
+libXfixes-6.0.0_1
+libXfixes-devel-6.0.0_1
+libXfont-1.5.4_2
+libXfont-devel-1.5.4_2
+libXfont2-2.0.6_1
+libXfont2-devel-2.0.6_1
+libXfontcache-1.0.5_2
+libXft-2.3.7_1
+libXft-devel-2.3.7_1
+libXi-1.8_1
+libXi-devel-1.8_1
+libXinerama-1.1.5_1
+libXinerama-devel-1.1.5_1
+libXmu-1.1.4_1
+libXmu-devel-1.1.4_1
+libXpm-3.5.14_1
+libXpm-devel-3.5.14_1
+libXpresent-1.0.1_1
+libXrandr-1.5.3_1
+libXrandr-devel-1.5.3_1
+libXrender-0.9.11_1
+libXrender-devel-0.9.11_1
+libXres-1.2.1_1
+libXres-devel-1.2.1_1
+libXt-1.2.1_1
+libXt-devel-1.2.1_1
+libXtst-1.2.4_1
+libXtst-devel-1.2.4_1
+libXv-1.0.12_1
+libXv-devel-1.0.12_1
+libXvMC-1.0.13_1
+libXxf86dga-1.1.5_1
+libXxf86dga-devel-1.1.5_1
+libXxf86misc-1.0.4_1
+libXxf86vm-1.1.5_1
+liba52-0.7.4_9
+libaio-0.3.112_1
+libaio-devel-0.3.112_1
+libao-1.2.2_1
+libaom-3.5.0_1
+libapparmor-3.1.2_1
+libappindicator-12.10.0_3
+libarchive-3.6.2_2
+libargon2-20190702_3
+libargon2-devel-20190702_3
+libaria2-1.36.0_1
+libart-2.3.21_7
+libaspell-0.60.8_5
+libass-0.17.0_1
+libassuan-2.5.5_1
+libasyncns-0.8_9
+libasyncns-devel-0.8_9
+libatasmart-0.19_5
+libatomic-12.2.0_1
+libaudit-3.0.3_4
+libaudit-common-3.0.3_4
+libaudit-devel-3.0.3_4
+libavcodec-4.4.3_2
+libavdevice-4.4.3_2
+libavfilter-4.4.3_2
+libavformat-4.4.3_2
+libavresample-4.4.3_2
+libavutil-4.4.3_2
+libbitcoin-secp256k1-0.1.0.13_1
+libblkid-2.38.1_1
+libblkid-devel-2.38.1_1
+libblockdev-2.28_1
+libbluetooth-5.65_1
+libbluray-1.3.4_1
+libboost_atomic-1.81.0_1
+libboost_chrono-1.81.0_1
+libboost_context-1.81.0_1
+libboost_date_time-1.81.0_1
+libboost_filesystem-1.81.0_1
+libboost_iostreams-1.81.0_1
+libboost_locale-1.81.0_1
+libboost_program_options-1.81.0_1
+libboost_serialization-1.81.0_1
+libboost_system-1.81.0_1
+libboost_thread-1.81.0_1
+libbs2b-3.1.0_3
+libbsd-0.11.7_2
+libbsd-devel-0.11.7_2
+libbtrfs-6.1.2_1
+libbtrfs-devel-6.1.2_1
+libbytesize-2.7_1
+libcaca-0.99.beta19_12
+libcacard-2.8.1_1
+libcanberra-0.30_11
+libcanberra-gtk3-0.30_11
+libcap-2.54_1
+libcap-devel-2.54_1
+libcap-ng-0.8.3_2
+libcap-progs-2.54_1
+libcddb-1.3.2_9
+libcdio-2.1.0_1
+libcdio-paranoia-10.2+2.0.1_1
+libcdparanoia-10.2_15
+libcdr-0.1.7_4
+libcgroup-3.0.0_1
+libcgroup-utils-3.0.0_1
+libclang-12.0.1_4
+libclang-cpp-12.0.1_4
+libclc-12.0.0_1
+libcloudproviders-0.3.1_1
+libcolord-1.4.6_2
+libcpuid-0.5.1_1
+libcrypto1.1-1.1.1s_1
+libcrypto1.1-dbg-1.1.1s_1
+libcrypto45-3.0.2_2
+libcrypto46-3.1.5_2
+libcryptsetup-2.6.0_2
+libcups-2.4.2_2
+libcurl-7.87.0_2
+libdatrie-0.2.13_1
+libdav1d4-0.8.1_1
+libdav1d6-1.0.0_1
+libdaxctl-70.1_1
+libdb-5.3.28_8
+libdb-cxx-5.3.28_8
+libdbusmenu-glib-16.04.0_5
+libdbusmenu-gtk3-16.04.0_5
+libdca-0.0.7_2
+libde265-1.0.8_1
+libdebuginfod-0.187_1
+libdecor-0.1.1_1
+libdecor-devel-0.1.1_1
+libdiscid-0.6.2_2
+libdjvulibre-3.5.28_1
+libdmx-1.1.4_1
+libdmx-devel-1.1.4_1
+libdrm-2.4.114_1
+libdrm-devel-2.4.114_1
+libdvdcss-1.4.3_1
+libdvdnav-6.1.1_1
+libdvdread-6.1.3_1
+libedit-20221030.3.1_1
+libedit-dbg-20221030.3.1_1
+libefivar-37_2
+libelf-0.187_1
+libelogind-246.10_2
+libepoxy-1.5.10_1
+libepoxy-devel-1.5.10_1
+liberation-fonts-ttf-2.1.5_1
+libestr-0.1.11_1
+libev-4.33_1
+libevdev-1.13.0_1
+libevent-2.1.12_2
+libexif-0.6.24_1
+libexttextcat-3.4.6_1
+libfastjson-0.99.8_1
+libfbclient3-3.0.6.33328_1
+libfdisk-2.38.1_1
+libffi-3.3_2
+libffi-devel-3.3_2
+libfftw-3.3.10_1
+libfl-devel-2.6.4_3
+libflac-1.3.4_1
+libflac-devel-1.3.4_1
+libfluidsynth-2.3.0_1
+libfontenc-1.1.4_1
+libfontenc-devel-1.1.4_1
+libfreehand-0.1.2_3
+libgbinder-1.1.31_1
+libgbm-22.2.4_2
+libgbm-devel-22.2.4_2
+libgcc-12.2.0_1
+libgcc-devel-12.2.0_1
+libgcrypt-1.10.1_2
+libgcrypt-devel-1.10.1_2
+libgdata-0.18.1_1
+libgfortran-12.2.0_1
+libgfortran-devel-12.2.0_1
+libgirepository-1.74.0_3
+libgit2-1.5.0_1
+libglapi-22.2.4_2
+libglib-devel-2.74.0_3
+libglibutil-1.0.67_1
+libglvnd-1.4.0_1
+libglvnd-devel-1.4.0_1
+libgme-0.6.3_1
+libgnt-2.14.3_1
+libgomp-12.2.0_1
+libgpg-error-1.46_1
+libgpg-error-devel-1.46_1
+libgpgme-1.18.0_2
+libgphoto2-2.5.30_1
+libgphoto2-udev-rules-2.5.30_1
+libgrpc-1.49.1_1
+libgs-9.55.0_1
+libgsf-1.14.50_1
+libgsm-1.0.22_2
+libgssglue-0.4_8
+libgssglue-devel-0.4_8
+libgtop-2.40.0_2
+libgudev-237_1
+libgusb-0.3.10_1
+libgweather-4.2.0_1
+libharfbuzz-5.1.0_2
+libheif-1.12.0_3
+libhistory8-8.1.000_1
+libhugetlbfs-2.23_1
+libhunspell1.7-1.7.2_1
+libical-3.0.16_1
+libid3tag-0.15.1b_8
+libidn-1.41_1
+libidn2-2.3.3_1
+libimagequant-2.17.0_1
+libimobiledevice-1.3.0_4
+libindicator-12.10.1_1
+libinput-1.22.0_1
+libiscsi-1.19.0_1
+libixion-0.17.0_4
+libjack-1.9.21_1
+libjbig2dec-0.19_2
+libjpeg-turbo-2.1.4_1
+libkeyutils-1.6.3_1
+libkmod-30_1
+libksba-1.6.3_1
+liblangtag-0.6.3_3
+libldap-2.4.58_1
+libldap-devel-2.4.58_1
+libldns-1.8.3_1
+libldns-dbg-1.8.3_1
+liblilv-0.24.12_3
+libllvm12-12.0.1_4
+liblrdf-0.6.1_2
+libltdl-2.4.7_3
+libltdl-devel-2.4.7_3
+libluv-1.43.0.0_1
+liblxc-5.0.1_2
+liblz4-1.9.4_1
+liblzma-5.4.1_1
+liblzma-devel-5.4.1_1
+libmad-0.15.1b_10
+libmagic-5.44_1
+libmanette-0.2.6_1
+libmariadbclient-10.5.10_3
+libmaxminddb-1.3.2_1
+libmcpp-2.7.2_8
+libmd-1.0.4_1
+libmd-devel-1.0.4_1
+libmikmod-3.3.11.1_1
+libmm-glib-1.18.12_1
+libmms-0.6.4_2
+libmnl-1.0.5_1
+libmodplug-0.8.9.0_1
+libmount-2.38.1_1
+libmount-devel-2.38.1_1
+libmpeg2-0.5.1_10
+libmpg123-1.31.2_1
+libmspub-0.1.4_9
+libmtp-1.1.20_1
+libmwaw-0.3.21_1
+libndctl-70.1_1
+libndp-1.7_1
+libnetfilter_conntrack-1.0.8_1
+libnfnetlink-1.0.1_4
+libnfs-5.0.2_1
+libnfsidmap-2.6.2_1
+libnftables-1.0.6_1
+libnftnl-1.2.4_1
+libnice-0.1.19_1
+libnl3-3.5.0_1
+libnl3-devel-3.5.0_1
+libnm-1.40.10_1
+libnma-1.10.6_1
+libnotify-0.8.1_1
+libnotmuch-0.35_2
+libnsl-2.0.0_1
+libnsl-devel-2.0.0_1
+libnuma-2.0.14_1
+libnumbertext-1.0.11_1
+libnuspell-5.0.1_3
+libnvidia-container-1.11.0_1
+libnvme-1.1_2
+libobjc-12.2.0_1
+libodfgen-0.1.8_1
+libogg-1.3.5_1
+libogg-devel-1.3.5_1
+libomp-12.0.1_4
+libopenal-1.22.2_1
+libopenaptx-0.2.0_1
+libopenjpeg2-2.5.0_1
+libopenraw-0.1.3_2
+liborcus-0.17.2_4
+libosinfo-1.10.0_2
+libostree-2022.7_2
+libotr-4.1.1_1
+libotr-devel-4.1.1_1
+libpagemaker-0.0.4_2
+libpaper-1.1.28_1
+libparted-3.5_1
+libpcap-1.10.3_1
+libpcap-devel-1.10.3_1
+libpciaccess-0.16_1
+libpciaccess-devel-0.16_1
+libpcre-8.45_3
+libpcre2-10.39_2
+libpcrecpp-8.45_3
+libpcsclite-1.9.9_1
+libpeas-1.34.0_2
+libphonenumber-8.12.39_9
+libpipewire-0.3.63_1
+libplacebo-4.208.0_1
+libplist-2.2.0_3
+libpng-1.6.39_1
+libpng-devel-1.6.39_1
+libpoppler-22.12.0_1
+libpostproc-4.4.3_2
+libprotobuf-21.12_1
+libprotoc-21.12_1
+libproxy-0.4.18_1
+libpsl-0.21.1_4
+libpulseaudio-15.0_3
+libqb-2.0.0_2
+libqrencode-4.1.1_1
+libquadmath-12.2.0_1
+libqxp-0.0.2_7
+libraptor-2.0.15_4
+librasqal-0.9.33_3
+librdf-1.0.17_6
+libreadline8-8.1.000_1
+libreoffice-7.4.3.2_1
+libreoffice-base-7.4.3.2_1
+libreoffice-calc-7.4.3.2_1
+libreoffice-common-7.4.3.2_1
+libreoffice-draw-7.4.3.2_1
+libreoffice-fonts-7.4.3.2_1
+libreoffice-gnome-7.4.3.2_1
+libreoffice-i18n-de-7.4.3.2_1
+libreoffice-i18n-en-US-7.4.3.2_1
+libreoffice-i18n-es-7.4.3.2_1
+libreoffice-i18n-fr-7.4.3.2_1
+libreoffice-i18n-it-7.4.3.2_1
+libreoffice-i18n-pl-7.4.3.2_1
+libreoffice-i18n-pt-7.4.3.2_1
+libreoffice-impress-7.4.3.2_1
+libreoffice-math-7.4.3.2_1
+libreoffice-postgresql-7.4.3.2_1
+libreoffice-writer-7.4.3.2_1
+libreoffice-xtensions-7.4.3.2_1
+librevenge-0.0.4_3
+librist-0.2.7_1
+librsvg-2.52.2_1
+librtmp-2.4.20161210_10
+librubberband-3.1.2_1
+libsamplerate-0.2.2_1
+libsamplerate-devel-0.2.2_1
+libsane-1.1.1_1
+libsasl-2.1.27_2
+libsasl-devel-2.1.27_2
+libscrypt-1.22_2
+libscrypt-devel-1.22_2
+libseccomp-2.5.4_1
+libseccomp-devel-2.5.4_1
+libsecret-0.20.5_2
+libselinux-3.0_2
+libselinux-devel-3.0_2
+libsensors-3.6.0_1
+libsepol-3.0_1
+libserd-0.30.10_1
+libslirp-4.7.0_1
+libsmartcols-2.38.1_1
+libsndfile-1.2.0_1
+libsndfile-devel-1.2.0_1
+libsndio-1.9.0_1
+libsodium-1.0.18_1
+libsord-0.16.6_1
+libsoup-2.74.0_1
+libsoup-gnome-2.74.0_1
+libsoup3-3.2.0_2
+libsoxr-0.1.3_2
+libspdlog-1.11.0_1
+libspectre-0.2.11_1
+libspeex-1.2.1_1
+libspiro-20221101_1
+libsrt-1.5.1_1
+libsrtp-2.3.0_1
+libssh-0.10.4_1
+libssh2-1.10.0_1
+libssl1.1-1.1.1s_1
+libssp-12.2.0_1
+libssp-devel-12.2.0_1
+libstdc++-12.2.0_1
+libstdc++-devel-12.2.0_1
+libsvt-av1-1.4.1_1
+libswresample-4.4.3_2
+libswscale-4.4.3_2
+libswtpm-0.7.3_1
+libsynctex-20210325_4
+libtasn1-4.19.0_1
+libtdb-1.4.7_1
+libtermkey-0.22_1
+libthai-0.1.29_1
+libtheora-1.1.1_8
+libtirpc-1.3.2_1
+libtirpc-devel-1.3.2_1
+libtls-3.6.1_1
+libtommath-1.2.0_1
+libtool-2.4.7_3
+libtpms-0.9.4_1
+libtracker-3.4.2_1
+libunbound-1.17.1_1
+libunistring-1.0_1
+libunwind-1.5.0_3
+libupower-glib3-1.90.0_1
+liburcu-0.12.2_1
+libusb-1.0.26_1
+libusb-compat-0.1.8_1
+libusb-compat-devel-0.1.8_1
+libusb-devel-1.0.26_1
+libusbmuxd-2.0.2_1
+libutempter-1.2.1_2
+libuuid-2.38.1_1
+libuuid-devel-2.38.1_1
+libuv-1.44.2_1
+libva-2.17.0_1
+libva-intel-driver-2.4.1_1
+libvamp-plugin-sdk-2.10.0_1
+libvde2-2.3.2_24
+libvdpau-1.5_1
+libvidstab-1.1.0_2
+libvirt-9.0.0_1
+libvirt-devel-9.0.0_1
+libvirt-python3-9.0.0_1
+libvisio-0.1.7_5
+libvisual-0.4.1_1
+libvoikko-4.3.1_2
+libvorbis-1.3.7_1
+libvorbis-devel-1.3.7_1
+libvpx6-1.9.0_3
+libvpx7-1.11.0_1
+libvterm-0.3_1
+libwacom-1.12_1
+libwavpack-5.4.0_1
+libwebkit2gtk41-2.38.3_1
+libwebkit2gtk50-2.38.3_1
+libwebp-1.2.4_1
+libwireshark-4.0.0_1
+libwnck-43.0_2
+libwoff2common1.0.2-1.0.2_1
+libwoff2dec1.0.2-1.0.2_1
+libwoff2enc1.0.2-1.0.2_1
+libwpd-0.10.3_1
+libwpe-1.12.3_2
+libwpg-0.3.3_1
+libxapian-1.4.21_1
+libxatracker-22.2.4_2
+libxbps-0.59.1_8
+libxcb-1.14_2
+libxcb-devel-1.14_2
+libxcvt-0.1.1_1
+libxcvt-devel-0.1.1_1
+libxfce4panel-4.18.0_1
+libxfce4ui-4.18.1_1
+libxfce4util-4.18.0_1
+libxkbcommon-1.5.0_1
+libxkbcommon-devel-1.5.0_1
+libxkbcommon-x11-1.5.0_1
+libxkbfile-1.1.0_1
+libxkbfile-devel-1.1.0_1
+libxkbregistry-1.5.0_1
+libxkbui-1.0.2_8
+libxkbui-devel-1.0.2_8
+libxklavier-5.4_3
+libxml2-2.9.13_4
+libxml2-devel-2.9.13_4
+libxml2-python3-2.9.13_4
+libxmlb-0.3.8_1
+libxshmfence-1.3_2
+libxshmfence-devel-1.3_2
+libxslt-1.1.37_2
+libxxHash-0.8.1_2
+libyaml-0.2.5_1
+libyaml-devel-0.2.5_1
+libzbar-0.23.1_6
+libzfs-2.1.7_1
+libzstd-1.5.2_1
+libzstd-devel-1.5.2_1
+linux-6.1_1
+linux-base-2021.07.21_1
+linux-firmware-amd-20221109_1
+linux-firmware-broadcom-20221109_1
+linux-firmware-intel-20221109_1
+linux-firmware-network-20221109_1
+linux-firmware-nvidia-20221109_1
+linux-headers-6.1_1
+linux5.13-5.13.19_1
+linux5.15-5.15.85_1
+linux5.15-headers-5.15.85_1
+linux5.18-5.18.19_1
+linux5.18-headers-5.18.19_1
+linux5.19-5.19.17_1
+linux5.19-headers-5.19.17_1
+linux6.0-6.0.19_1
+linux6.0-headers-6.0.19_1
+linux6.1-6.1.7_1
+linux6.1-headers-6.1.7_1
+llvm-12.0.0_1
+llvm12-12.0.1_4
+lm_sensors-3.6.0_1
+lmdb-0.9.29_1
+lowdown-1.0.0_1
+lsof-4.96.3_1
+lua-devel-5.3.6_1
+lua52-5.2.4_12
+lua53-5.3.6_1
+lua53-devel-5.3.6_1
+lua54-5.4.4_1
+luarocks-lua52-3.9.1_1
+luarocks-lua53-3.9.1_1
+lvm2-2.02.187_2
+lxc-5.0.1_2
+lxcfs-5.0.2_1
+lxd-5.9_1
+lxdm-0.5.3_4
+lynx-2.9.0dev.10_1
+lzo-2.10_2
+m4-1.4.19_1
+make-4.3_3
+man-pages-5.13_2
+man-pages-devel-5.13_2
+man-pages-posix-2017a_5
+mariadb-10.5.10_3
+mariadb-client-10.5.10_3
+mbedtls-2.16.12_1
+mcpp-2.7.2_8
+mdadm-4.2_1
+mdcat-1.0.0_1
+mdocml-1.14.6_6
+mednafen-1.29.0_1
+mesa-22.2.4_2
+mesa-dri-22.2.4_2
+mesa-opencl-22.2.4_2
+meson-1.0.0_1
+mime-types-9_5
+miniupnpc-2.2.3_1
+minizip-1.2.12_1
+mit-krb5-devel-1.18.3_2
+mit-krb5-libs-1.18.3_2
+mkfontscale-1.2.2_1
+mobile-broadband-provider-info-20220511_1
+moby-20.10.22_1
+monero-0.18.1.2_2
+monero-gui-0.18.1.2_2
+mosh-1.4.0_2
+mousepad-0.5.10_1
+mozjs78-78.9.0_5
+mpfr-4.1.1_2
+mpg123-devel-1.31.2_1
+mpv-0.35.0_2
+msgpack-4.0.0_1
+mtdev-1.1.6_1
+mythes-1.2.4_5
+ncurses-6.3_3
+ncurses-base-6.3_3
+ncurses-devel-6.3_3
+ncurses-libs-6.3_3
+ncurses-libs-dbg-6.3_3
+ncurses-libtinfo-devel-6.3_3
+ncurses-libtinfo-libs-6.3_3
+neomutt-20220429_3
+neon-0.32.2_1
+neovim-0.8.2_2
+net-tools-2.10_1
+nethogs-0.8.7_1
+nettle-3.8_1
+nettle-devel-3.8_1
+network-manager-applet-1.30.0_1
+newsboat-2.30.1_1
+newt-0.52.21_6
+nfs-utils-2.6.2_1
+nftables-1.0.6_1
+nghttp2-1.51.0_1
+nicotine+-3.2.7_1
+ninja-1.11.1_2
+nix-2.11.0_2
+nmap-7.93_1
+nnn-4.7_1
+notify-send.sh-1.2_1
+noto-fonts-cjk-20220127_1
+noto-fonts-emoji-2.038_1
+noto-fonts-ttf-20220810_1
+noto-fonts-ttf-extra-20220810_1
+npth-1.6_1
+nspr-4.35_1
+nss-3.87_1
+ntfs-3g-2022.10.3_1
+nudoku-2.1.0_1
+nv-codec-headers-11.1.5.1_1
+nvi-1.81.6_19
+nvidia-525.85.05_1
+nvidia-container-toolkit-1.11.0_1
+nvidia-dkms-525.85.05_1
+nvidia-docker-2.11.0_1
+nvidia-firmware-525.85.05_1
+nvidia-gtklibs-525.85.05_1
+nvidia-libs-525.85.05_1
+nvidia-opencl-525.85.05_1
+nvme-cli-2.1.2_1
+nvtop-3.0.1_1
+nyx-2.1.0_6
+ocl-icd-2.3.1_1
+offlineimap-8.0.0_3
+oniguruma-6.9.5.rev1_1
+openblas-0.3.21_1
+openbsd-netcat-1.219_1
+opendoas-6.8.2_1
+openjdk-jre-8u999_1
+openjdk11-11.0.12+7_3
+openjdk11-bin-11+28_1
+openjdk11-jre-11.0.12+7_3
+openjdk11-src-11.0.12+7_3
+openjdk17-17.0.5+7_1
+openjdk17-jre-17.0.5+7_1
+openjdk8-jre-8u322b04_3
+openldap-2.4.58_1
+openldap-tools-2.4.58_1
+openntpd-6.8p1_4
+openrazer-daemon-3.5.1_1
+openrazer-driver-dkms-3.5.1_1
+openrazer-meta-3.5.1_1
+openresolv-3.12.0_1
+openssh-9.1p1_2
+openssh-dbg-9.1p1_2
+openssl-1.1.1s_1
+openssl-devel-1.1.1s_1
+openvpn-2.5.7_1
+opus-1.3.1_1
+opus-devel-1.3.1_1
+opusfile-0.12_2
+orc-0.4.33_1
+os-prober-1.81_1
+osinfo-db-20221130_1
+p11-kit-0.24.1_1
+p7zip-22.01_2
+pahole-1.23_4
+pahole-devel-1.23_4
+pam-1.5.2_2
+pam-base-0.4_2
+pam-devel-1.5.2_2
+pam-libs-1.5.2_2
+pam-libs-dbg-1.5.2_2
+pandoc-2.17.1.1_1
+pango-1.50.12_1
+parole-4.16.0_1
+parted-3.5_1
+patch-2.7.6_4
+patchelf-0.17.2_1
+pciutils-3.9.0_1
+pcre-8.45_3
+pcre-devel-8.45_3
+pcre2-devel-10.39_2
+perl-5.36.0_1
+perl-AnyEvent-7.17_3
+perl-AnyEvent-I3-0.17_3
+perl-Authen-SASL-2.16_5
+perl-B-Hooks-EndOfScope-0.24_2
+perl-Canary-Stability-2013_3
+perl-Class-Data-Inheritable-0.09_1
+perl-Class-Inspector-1.36_2
+perl-Class-Singleton-1.6_1
+perl-Convert-BinHex-1.125_3
+perl-DBD-Pg-3.10.4_4
+perl-DBI-1.643_4
+perl-Data-OptList-0.112_1
+perl-DateTime-1.54_2
+perl-DateTime-Locale-1.33_1
+perl-DateTime-TimeZone-2.51_1
+perl-Devel-StackTrace-2.04_2
+perl-Digest-HMAC-1.04_1
+perl-Dist-CheckConflicts-0.11_3
+perl-Encode-Locale-1.05_3
+perl-Eval-Closure-0.14_3
+perl-Exception-Class-1.45_1
+perl-Exporter-Tiny-1.006000_1
+perl-ExtUtils-Depends-0.8000_2
+perl-ExtUtils-PkgConfig-1.16_3
+perl-File-Listing-6.14_1
+perl-File-ShareDir-1.118_3
+perl-File-ShareDir-Install-0.14_1
+perl-Glib-1.3293_3
+perl-Glib-Object-Introspection-0.049_3
+perl-HTML-Parser-3.76_2
+perl-HTML-Tagset-3.20_8
+perl-HTTP-Cookies-6.10_1
+perl-HTTP-Daemon-6.14_1
+perl-HTTP-Date-6.05_2
+perl-HTTP-Message-6.35_1
+perl-HTTP-Negotiate-6.01_6
+perl-IO-HTML-1.004_1
+perl-IO-Socket-SSL-2.081_1
+perl-IO-Tty-1.16_3
+perl-IO-stringy-2.113_2
+perl-JSON-XS-4.03_4
+perl-LWP-6.67_1
+perl-LWP-MediaTypes-6.04_2
+perl-LWP-Protocol-https-6.10_1
+perl-List-MoreUtils-0.430_3
+perl-MIME-tools-5.510_1
+perl-MRO-Compat-0.15_1
+perl-MailTools-2.21_3
+perl-Module-Implementation-0.09_3
+perl-Module-Runtime-0.016_3
+perl-Mozilla-CA-20221114_1
+perl-Net-DNS-1.27_2
+perl-Net-HTTP-6.21_1
+perl-Net-SMTP-SSL-1.04_3
+perl-Net-SSLeay-1.92_2
+perl-Package-Stash-0.39_1
+perl-Package-Stash-XS-0.29_5
+perl-Params-Util-1.102_2
+perl-Params-ValidationCompiler-0.31_1
+perl-Role-Tiny-2.002004_1
+perl-Specio-0.48_1
+perl-Sub-Exporter-0.988_1
+perl-Sub-Exporter-Progressive-0.001013_3
+perl-Sub-Identify-0.14_8
+perl-Sub-Install-0.928_4
+perl-Sub-Name-0.26_4
+perl-Sub-Quote-2.006006_2
+perl-Test-Fatal-0.017_1
+perl-Test-Requires-0.11_2
+perl-TimeDate-2.33_2
+perl-Try-Tiny-0.31_1
+perl-Types-Serialiser-1.01_1
+perl-URI-5.17_1
+perl-Variable-Magic-0.62_8
+perl-WWW-RobotRules-6.02_6
+perl-XML-Parser-2.46_4
+perl-XML-Twig-3.52_3
+perl-XString-0.005_4
+perl-common-sense-3.75_3
+perl-namespace-autoclean-0.29_2
+perl-namespace-clean-0.27_4
+pick-4.0.0_1
+picocom-3.1_2
+pinentry-1.2.1_1
+pipewire-devel-0.3.63_1
+pixman-0.42.2_1
+pixman-devel-0.42.2_1
+pkcs11-helper-1.25.1_6
+pkg-config-0.29.2_3
+plan9port-20220813_1
+pmbootstrap-1.50.1_1
+polkit-121_1
+poppler-data-0.4.11_1
+poppler-glib-22.12.0_1
+popt-1.18_1
+posh-0.14.1_1
+postgresql-libs-14.5_3
+postgresql14-client-14.5_3
+powertop-2.15_1
+procps-ng-3.3.17_2
+progress-0.16_1
+proot-5.2.0_1
+proxychains-ng-4.16_1
+pulseaudio-15.0_3
+pulseaudio-devel-15.0_3
+pulseaudio-utils-15.0_3
+pulsemixer-1.5.1_2
+python-2.7.18.6_1
+python-six-1.16.0_3
+python3-3.11.1_1
+python3-BeautifulSoup4-4.11.1_2
+python3-Jinja2-3.1.2_1
+python3-MarkupSafe-2.1.2_1
+python3-PyQt5-5.15.7_2
+python3-PyQt5-dbus-5.15.7_2
+python3-PyQt5-opengl-5.15.7_2
+python3-PyQt5-quick-5.15.7_2
+python3-PyQt5-sql-5.15.7_2
+python3-PyQt5-svg-5.15.7_2
+python3-PyQt5-webchannel-5.15.7_2
+python3-PyQt5-webengine-5.15.6_2
+python3-PyQt5-websockets-5.15.7_2
+python3-Pygments-2.14.0_1
+python3-SecretStorage-3.3.1_3
+python3-aiofiles-22.1.0_2
+python3-aiohttp-3.7.4_4
+python3-aiohttp-cors-0.7.0_5
+python3-aiohttp_socks-0.6.0_3
+python3-aiorpcx-0.22.1_2
+python3-alsa-1.1.6_6
+python3-argcomplete-2.0.0_2
+python3-asttokens-2.2.1_1
+python3-async-timeout-3.0.1_5
+python3-attrs-22.1.0_1
+python3-backcall-0.2.0_6
+python3-bcrypt-3.2.2_1
+python3-bitstring-3.1.7_4
+python3-cached-property-1.5.2_2
+python3-cairo-1.20.1_5
+python3-certifi-2022.09.24_2
+python3-cffi-1.15.1_2
+python3-chardet-5.0.0_2
+python3-charset-normalizer-3.0.1_1
+python3-click-8.1.3_2
+python3-configobj-5.0.8_1
+python3-cryptography-39.0.0_1
+python3-css-parser-1.0.8_1
+python3-daemonize-2.5.0_7
+python3-dbus-1.2.18_3
+python3-decorator-5.1.1_2
+python3-devel-3.11.1_1
+python3-distro-1.7.0_2
+python3-dnspython-2.1.0_3
+python3-docker-5.0.2_3
+python3-dockerpty-0.4.1_8
+python3-docopt-0.6.2_9
+python3-dotenv-0.21.0_1
+python3-ecdsa-0.16.1_3
+python3-executing-1.2.0_1
+python3-gobject-3.42.2_2
+python3-gpg-1.10.0_10
+python3-html5lib-1.1_3
+python3-idna-3.4_2
+python3-imaplib2-3.6_2
+python3-importlib_metadata-6.0.0_1
+python3-ipython-8.8.0_1
+python3-ipython_genutils-0.2.0_7
+python3-jaraco.classes-3.2.1_2
+python3-jedi-0.18.2_1
+python3-jeepney-0.8.0_2
+python3-jsonrpclib-0.4.0_6
+python3-jsonschema-4.17.3_1
+python3-keyring-23.13.1_1
+python3-lxml-4.9.2_1
+python3-matplotlib-inline-0.1.6_2
+python3-more-itertools-9.0.0_1
+python3-multidict-5.1.0_4
+python3-nbxmpp-3.2.5_1
+python3-netifaces-0.11.0_4
+python3-numpy-1.24.1_1
+python3-openrazer-3.5.1_1
+python3-openssl-23.0.0_1
+python3-packaging-23.0_1
+python3-paramiko-2.11.0_2
+python3-parsing-2.4.7_4
+python3-parso-0.8.3_2
+python3-pexpect-4.8.0_3
+python3-pickleshare-0.7.5_6
+python3-pillow-simd-7.1.2_5
+python3-pip-22.3.1_1
+python3-pipx-1.1.0_2
+python3-ply-3.11_7
+python3-precis-i18n-1.0.1_5
+python3-prompt_toolkit-3.0.36_1
+python3-protobuf-4.21.12_1
+python3-psutil-5.9.4_1
+python3-ptyprocess-0.7.0_3
+python3-pure_eval-0.2.2_2
+python3-py-cpuinfo-8.0.0_4
+python3-pyaes-1.6.1_7
+python3-pyasn1-0.4.8_5
+python3-pycparser-2.21_1
+python3-pycryptodomex-3.16.0_1
+python3-pynacl-1.5.0_2
+python3-pyrsistent-0.18.1_2
+python3-pysocks-1.7.0_5
+python3-pyudev-0.24.0_1
+python3-qrcode-6.1_6
+python3-requests-2.28.2_1
+python3-rfc6555-0.1.0_2
+python3-setproctitle-1.2.1_3
+python3-setuptools-66.1.1_1
+python3-sip-PyQt5-12.11.0_2
+python3-six-1.16.0_3
+python3-socks-1.2.4_4
+python3-soupsieve-2.3.2_1
+python3-stack_data-0.6.2_1
+python3-stem-1.8.1_2
+python3-texttable-1.6.4_2
+python3-tkinter-3.11.1_1
+python3-traitlets-5.5.0_1
+python3-typing_extensions-4.2.0_2
+python3-urllib3-1.26.12_1
+python3-userpath-1.8.0_2
+python3-wcwidth-0.2.6_1
+python3-webencodings-0.5.1_8
+python3-websocket-client-1.2.1_4
+python3-xlib-0.30_3
+python3-yaml-6.0_2
+python3-yarl-1.8.1_1
+python3-zipp-3.11.0_1
+qemu-7.1.0_1
+qemu-ga-7.1.0_1
+qrencode-4.1.1_1
+qt5-concurrent-5.15.7+20221119_1
+qt5-core-5.15.7+20221119_1
+qt5-dbus-5.15.7+20221119_1
+qt5-declarative-5.15.7+20221119_1
+qt5-graphicaleffects-5.15.7+20221119_1
+qt5-gui-5.15.7+20221119_1
+qt5-location-5.15.7+20221119_1
+qt5-multimedia-5.15.7+20221119_1
+qt5-network-5.15.7+20221119_1
+qt5-opengl-5.15.7+20221119_1
+qt5-plugin-sqlite-5.15.7+20221119_1
+qt5-printsupport-5.15.7+20221119_1
+qt5-quickcontrols-5.15.7+20221119_1
+qt5-quickcontrols2-5.15.7+20221119_1
+qt5-serialport-5.15.7+20221119_1
+qt5-sql-5.15.7+20221119_1
+qt5-styleplugins-5.0.0_20
+qt5-svg-5.15.7+20221119_1
+qt5-test-5.15.7+20221119_1
+qt5-webchannel-5.15.7+20221119_1
+qt5-webengine-5.15.11_1
+qt5-websockets-5.15.7+20221119_1
+qt5-widgets-5.15.7+20221119_1
+qt5-x11extras-5.15.7+20221119_1
+qt5-xml-5.15.7+20221119_1
+qt5-xmlpatterns-5.15.7+20221119_1
+qtchooser-66_2
+qutebrowser-2.5.2_2
+raft-0.16.0_1
+ranger-1.9.3_4
+razergenie-0.9.0_1
+re2-2020.06.01_1
+readline-devel-8.1.000_1
+recordmydesktop-0.3.8.1_4
+removed-packages-0.1.20230120_1
+rest-0.9.1_1
+rest0-0.8.1_1
+rhash-1.4.3_2
+ripgrep-13.0.0_1
+ristretto-0.12.4_1
+rlwrap-0.46.1_1
+rocksdb-7.7.2_1
+rpcbind-1.2.6_1
+rpcsvc-proto-1.4.1_1
+rpi-imager-1.7.3_1
+rsync-3.2.7_1
+rsyslog-8.2212.0_1
+rtkit-0.13_3
+ruby-3.1.3_1
+run-parts-4.11.2_2
+runc-1.1.4_2
+runit-2.1.2_14
+runit-void-20220329_1
+samba-libs-4.14.12_2
+sane-1.1.1_1
+sbc-2.0_1
+scapy-2.4.5_3
+schroot-1.6.10_14
+screen-4.9.0_2
+screenkey-1.5_2
+sdcv-0.5.3_1
+sed-4.9_1
+setxkbmap-1.3.3_1
+shaderc-2022.2_1
+shadow-4.8.1_2
+shadowsocks-libev-3.3.4_1
+shared-mime-info-2.2_1
+shellcheck-0.9.0_1
+shfmt-3.6.0_1
+slang-2.3.2_2
+snappy-1.1.9_1
+sndio-devel-1.9.0_1
+socat-1.7.4.4_1
+soundtouch-2.3.1_1
+sox-14.4.2_5
+spandsp-0.0.6_3
+spdx-licenses-list-3.19_1
+speexdsp-1.2.1_1
+spice-0.15.1_1
+sqlite-3.40.1_1
+sqlite-devel-3.40.1_1
+squashfs-tools-4.5.1_2
+sratom-0.6.8_1
+sslscan-2.0.15_1
+st-terminfo-0.9_1
+startup-notification-0.12_11
+stfl-0.24_4
+strace-6.1_1
+sudo-1.9.12p2_1
+surfraw-2.3.0_2
+swtpm-0.7.3_1
+syslinux-6.03_8
+taglib-1.13_1
+talloc-2.3.4_1
+tar-1.34_2
+tcl-8.6.13_1
+tcpdump-4.99.1_1
+terminus-font-4.49.1_1
+tevent-0.11.0_2
+texinfo-6.8_1
+texlive-latexmk-20210325_4
+tftp-hpa-5.2_6
+thin-provisioning-tools-0.9.0_1
+thunar-volman-4.18.0_1
+tiff-4.4.0_1
+tigervnc-1.12.0_1
+time-1.9_2
+tini-0.19.0_1
+tk-8.6.13_1
+tlp-1.5.0_2
+tmux-3.3a_2
+tokei-12.1.2_3
+tor-0.4.7.13_1
+torbrowser-launcher-0.3.6_1
+torsocks-2.3.0_1
+tpm-tools-1.3.9.1_8
+traceroute-2.1.0_4
+transmission-3.00_5
+tree-2.1.0_1
+tree-sitter-0.20.7_1
+trousers-0.3.15_1
+tslib-1.22_1
+tsocks-1.8beta5_4
+tumbler-4.18.0_1
+twolame-0.4.0_2
+tzdata-2022g_1
+ubridge-0.9.18_1
+uchardet-0.0.7_1
+udisks2-2.9.4_1
+ueberzug-18.1.9_2
+unar-1.10.7_10
+unibilium-2.1.1_1
+unrar-6.2.5_1
+unzip-6.0_15
+upower-1.90.0_1
+usbguard-1.0.0_8
+usbredir-0.10.0_1
+usbutils-015_1
+util-linux-2.38.1_1
+util-linux-common-2.38.1_1
+v4l-utils-1.22.1_1
+valgrind-3.20.0_1
+vim-common-9.0.0948_1
+vim-huge-9.0.0948_1
+virglrenderer-0.9.1_1
+virt-manager-tools-4.1.0_2
+void-artwork-20221013_1
+void-docs-2021.10.06_1
+void-docs-browse-2021.10.06_1
+void-repo-debug-9_6
+void-repo-multilib-6_4
+void-repo-nonfree-9_6
+volume_key-0.3.12_6
+vpcs-0.8_2
+vte3-0.70.1_1
+vulkan-loader-1.3.231.2_1
+w3m-0.5.3+git20220429_1
+waydroid-1.3.4_2
+wayland-1.21.0_1
+wayland-devel-1.21.0_1
+wayland-protocols-1.31_1
+webkit2gtk-2.38.3_1
+webrtc-audio-processing-0.3.1_1
+wget-1.21.3_1
+which-2.21_3
+whois-5.5.15_1
+wifi-firmware-1.3_4
+wireguard-0.0.20191226_1
+wireguard-dkms-1.0.20220627_1
+wireguard-tools-1.0.20210914_2
+wireless_tools-29_10
+wireshark-4.0.0_1
+wireshark-qt-4.0.0_1
+words-de-20161207.7.0_3
+words-en-2020.12.07_2
+words-mnemonic-20150217_4
+words-web2-326913_2
+wpa_supplicant-2.10_1
+wpebackend-fdo-1.12.1_1
+x264-20191217.2245_1
+x265-3.5_1
+xauth-1.1.2_1
+xbps-0.59.1_8
+xbps-triggers-0.124_1
+xcape-1.2_2
+xcb-proto-1.15.2_1
+xcb-util-0.4.1_1
+xcb-util-cursor-0.1.4_1
+xcb-util-devel-0.4.1_1
+xcb-util-image-0.4.1_1
+xcb-util-image-devel-0.4.1_1
+xcb-util-keysyms-0.4.1_1
+xcb-util-keysyms-devel-0.4.1_1
+xcb-util-renderutil-0.3.10_1
+xcb-util-renderutil-devel-0.3.10_1
+xcb-util-wm-0.4.2_1
+xcb-util-wm-devel-0.4.2_1
+xcb-util-xrm-1.3_1
+xclip-0.13_2
+xdg-dbus-proxy-0.1.4_1
+xdg-user-dirs-0.18_1
+xdg-user-dirs-gtk-0.10_4
+xdg-utils-1.1.3_5
+xen-libs-4.14.1_8
+xf86-input-evdev-2.10.6_2
+xf86-input-libinput-1.2.1_1
+xf86-input-synaptics-1.9.1_1
+xf86-input-vmmouse-13.1.0_4
+xf86-input-wacom-1.1.0_1
+xf86-video-amdgpu-22.0.0_1
+xf86-video-ati-19.1.0_4
+xf86-video-dummy-0.4.0_1
+xf86-video-fbdev-0.5.0_2
+xf86-video-intel-2.99.917.20210115_2
+xf86-video-nouveau-1.0.17_2
+xf86-video-vesa-2.5.0_2
+xf86-video-vmware-13.3.0_4
+xfce-polkit-0.3_1
+xfce4-4.18.0_1
+xfce4-alsa-plugin-0.3.0_1
+xfce4-appfinder-4.18.0_1
+xfce4-notifyd-0.6.4_1
+xfce4-panel-4.18.0_1
+xfce4-power-manager-4.18.0_1
+xfce4-screensaver-4.16.0_1
+xfce4-screenshooter-1.10.2_1
+xfce4-session-4.18.0_1
+xfce4-settings-4.18.1_1
+xfce4-taskmanager-1.5.4_2
+xfce4-terminal-1.0.4_1
+xfconf-4.18.0_1
+xfdesktop-4.18.0_1
+xfontsel-1.1.0_1
+xfsprogs-5.19.0_1
+xfwm4-4.18.0_1
+xfwm4-themes-4.10.0_4
+xhost-1.0.9_1
+xinit-1.4.1_3
+xkb-switch-1.6.0_1
+xkbcomp-1.4.6_1
+xkeyboard-config-2.37_1
+xmlsec1-1.2.33_1
+xonsh-0.13.4_1
+xorg-input-drivers-7.6_4
+xorg-minimal-1.2_2
+xorg-server-21.1.6_1
+xorg-server-common-21.1.6_1
+xorg-server-devel-21.1.6_1
+xorg-video-drivers-7.6_22
+xorgproto-2022.2_1
+xrandr-1.5.2_1
+xrdb-1.2.1_1
+xsel-1.2.0_5
+xset-1.2.5_1
+xterm-378_1
+xtools-0.64_2
+xtools-minimal-0.64_2
+xtrans-1.4.0_2
+xvidcore-1.3.7_1
+xxd-9.0.0948_1
+xz-5.4.1_1
+yajl-2.1.0_4
+zathura-0.5.2_1
+zathura-djvu-0.2.9_3
+zathura-pdf-poppler-0.3.1_1
+zd1211-firmware-1.5_3
+zeromq-4.3.4_1
+zfs-2.1.7_1
+zlib-1.2.13_1
+zlib-dbg-1.2.13_1
+zlib-devel-1.2.13_1
+zsh-5.9_2
+zstd-1.5.2_1
+zxing-cpp-1.2.0_1
diff --git a/terminaldweller.com/lounge/docker-compose.yml b/terminaldweller.com/lounge/docker-compose.yml
new file mode 100644
index 0000000..e755935
--- /dev/null
+++ b/terminaldweller.com/lounge/docker-compose.yml
@@ -0,0 +1,29 @@
+version: '3'
+services:
+ app:
+ image: thelounge/thelounge:4.3.1
+ volumes:
+ - thelounge-data:/var/opt/thelounge
+ networks:
+ - traefik-public
+ deploy:
+ placement:
+ constraints:
+ - node.labels.thelounge.thelounge-data == true
+ labels:
+ - traefik.enable=true
+ - traefik.docker.network=traefik-public
+ - traefik.constraint-label=traefik-public
+ - traefik.http.routers.thelounge-http.rule=Host(`lounge.terminaldweller.com`)
+ - traefik.http.routers.thelounge-http.entrypoints=http
+ - traefik.http.routers.thelounge-http.middlewares=https-redirect
+ - traefik.http.routers.thelounge-https.rule=Host(`lounge.terminaldweller.com`)
+ - traefik.http.routers.thelounge-https.entrypoints=https
+ - traefik.http.routers.thelounge-https.tls=true
+ - traefik.http.routers.thelounge-https.tls.certresolver=le
+ - traefik.http.services.thelounge.loadbalancer.server.port=9000
+networks:
+ traefik-public:
+ external: true
+volumes:
+ thelounge-data:
diff --git a/terminaldweller.com/main/srv/cv/CV_Abridged.html b/terminaldweller.com/main/srv/cv/CV_Abridged.html
new file mode 100644
index 0000000..c254de3
--- /dev/null
+++ b/terminaldweller.com/main/srv/cv/CV_Abridged.html
@@ -0,0 +1,316 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
+ <head>
+ <meta charset="utf-8" />
+ <meta name="generator" content="pandoc" />
+ <meta
+ name="viewport"
+ content="width=device-width, initial-scale=1.0, user-scalable=yes"
+ />
+ <title>Farzad Sadeghi</title>
+ <style>
+ code {
+ white-space: pre-wrap;
+ }
+ span.smallcaps {
+ font-variant: small-caps;
+ }
+ span.underline {
+ text-decoration: underline;
+ }
+ div.column {
+ display: inline-block;
+ vertical-align: top;
+ width: 50%;
+ }
+ div.hanging-indent {
+ margin-left: 1.5em;
+ text-indent: -1.5em;
+ }
+ ul.task-list {
+ list-style: none;
+ }
+ </style>
+ </head>
+ <body
+ style="
+ color: #005f87;
+ background: #000000;
+ text-align: left;
+ padding: 0px;
+ border: 0px;
+ margin: 0px;
+ "
+ >
+ <header id="title-block-header">
+ <h1 class="title"><strong>Farzad Sadeghi</strong></h1>
+ <p class="date">2023/01/28</p>
+ </header>
+ <p>
+ <span
+ ><a href="https://terminaldweller.com"
+ >https://terminaldweller.com</a
+ ></span
+ ><br />
+ devi@terminaldweller.com<br />
+ thabogre@gmail.com<br />
+ Tehran, Iran<br />
+ +989125802283
+ </p>
+ <h1 class="unnumbered" id="professional-experience">
+ Professional Experience
+ </h1>
+ <p>
+ <strong
+ >Zharfpouyan Tous (Tehran, Iran)<br />
+ March 2021–June 2022<br />
+ 14 months<br />
+ Developing/Maintaining code for a network device running on a unix-like
+ operating system(openssh,linux-pam,busybox).Mostly C and shell
+ scripts.<br />
+ <br />
+ <strong
+ >Erfan Salamat (Tehran, Iran)<br />
+ Nov. 2020–Feb. 2021<br />
+ 4 months<br />
+ Backened Developer. Developed a GIS and Notification microservice
+ using Golang. Containerized the entire required stack for the said
+ microservices with Docker.<br />
+ <br />
+ <strong
+ >Maharan International (Tehran, Iran)<br />
+ Feb. 2019–Oct. 2020<br />
+ 19 months<br />
+ Requirement manager, designer and developer for ERTMS/ETCS DMI for a
+ safety-ciritcal system written in C.<br />
+ <br />
+ <strong
+ >Truebit (Remote, 3 time-zones)<br />
+ July 2017–Nov. 2017<br />
+ 5 months<br />
+ developed Truebit’s WASM interpreter and smart contracts. Also
+ managed the CI for the repositories.<br />
+ <div></div>
+ <strong
+ >NEAT (Rome, Italy)<br />
+ May 2016–July 2016<br />
+ 3 months<br />
+ Wrote an automatic refactoring tool using Clang(Libtooling) in
+ C++. The tool would be the last piece of an automated
+ model-driven development process for safety-critical systems.<br />
+ <div></div>
+ <strong
+ >Crouse (Tehran, Iran)<br />
+ July 2014–March 2016<br />
+ 21 months<br />
+ Embedded software developer, Safety-critical applications:
+ Design, implementation and automation. The Software team’s ISO
+ 26262 representative.<br />
+ <div></div>
+ <strong
+ >Safir Language Academy (Tehran, Iran)<br />
+ August 2010–March 2012<br />
+ 20 months<br />
+ English Teacher - Later on specifically IELTS teacher.<br /> </strong></strong></strong></strong></strong></strong
+ ></strong>
+ </p>
+ <h1 class="unnumbered" id="skills">Skills</h1>
+ <p>
+ <strong
+ >Programming Languages: C, Python, C++, Go<br />
+ <strong>Other: Linux, docker<br /> </strong
+ ></strong>
+ </p>
+ <h1 class="unnumbered" id="hobby">Hobby</h1>
+ <p>
+ I maintain my own local kubernetes cluster with k3s on my raspberry pis
+ along with a bunch of VPSs that I run my services on(Docker, not
+ swarm)).<br />
+ </p>
+ <h1 class="unnumbered" id="languages">Languages</h1>
+ <p>
+ <strong
+ >Persian: <span>Native</span><br />
+ <strong
+ >English: <span>Native-like</span><br />
+ German: Beginner<br /> </strong
+ ></strong>
+ </p>
+ <h1 class="unnumbered" id="education">Education</h1>
+ <p>
+ 2021–Now Master’s in Computer Science, Azad University, Science and
+ Research Branch, Tehran, Iran. Currently working on my thesis<br />
+ 2007–2013 Bachelor’s in Electrical Engineering, Iran University of Science
+ and Technology, Tehran, Iran.<br />
+ <strong
+ >Thesis: Determining the frequency of an audio signal using phase
+ derivation in real time, design and implementation using an
+ FPGA.</strong
+ >
+ </p>
+ <h1 class="unnumbered" id="role-breakdown">Role Breakdown</h1>
+ <p>
+ <strong
+ >Backend Developer<br />
+ Developed a GIS microservice based on the OSM stack. Containerized an
+ entire geoserver stack (geoserver, tile server, static image server, DB)
+ so that we could rely on our own stack. Developed a notification
+ microservice using golang and Mongodb(with Percona memory engine).<br />
+ <br />
+ <strong
+ >ERTMS / ETCS DMI Development<br />
+ Split the DMI into two subsystems. Designed and implemented the
+ software for the component on the "kernel" side. Wrote a tool that
+ made the requirements’ traceability files by gathering special
+ comments from the C source files. Wrote a tool that determines all the
+ sub-fields of aggregate types used in the function and the functions
+ it calls(required for testing).<br />
+ <br />
+ <strong
+ >Embedded Safety-Critical Development<br />
+ Wrote the SRS and the SDD for the DSP algorithm, then implemented
+ the DSP algorithm for a safety-critical hard real-time embedded
+ system.<br />
+ <br />
+ <strong>Code Generation<br /> </strong></strong></strong
+ ></strong>
+ </p>
+ <ul>
+ <li>
+ <p>Wrote A tool that generates binary file (WASM, ...) parsers in C.</p>
+ </li>
+ <li>
+ <p>
+ Wrote another tool that generates the C code necessary to add a C
+ structure to Lua as a Lua table.
+ </p>
+ </li>
+ </ul>
+ <p>
+ <strong>Automation and Tooling<br /> </strong>
+ </p>
+ <ul>
+ <li>
+ <p>
+ Developed a Misra-C:2004 rule checker(open-source project) using
+ Clang’s Libtooling.
+ </p>
+ </li>
+ <li>
+ <p>
+ Developed a source code obfuscation tool(open-source project) using
+ Clang’s Libtooling.
+ </p>
+ </li>
+ <li>
+ <p>
+ Developed an interactive CLI tool aimed at object code
+ manipulation(open-source project) in C++/C with Lua as it’s scripting
+ language. The tool also has Python embedded in it for rapid
+ prototyping.
+ </p>
+ </li>
+ <li>
+ <p>
+ Automated the traceability matrix generation using libclang’s Python
+ bindings.
+ </p>
+ </li>
+ <li>
+ <p>Automated the regression testing for a project I was involved in.</p>
+ </li>
+ <li>
+ <p>
+ Automated the calculation of the WCET for all implemented functions
+ through the use of of a Python script and an XML description file.
+ </p>
+ </li>
+ </ul>
+ <p>
+ <strong
+ >Automatic Refactoring<br />
+ Wrote an automatic refactoring tool using Clang’s Libtooling for C.<br />
+ <br />
+ <strong
+ >Defensive Programming / Safety-Aware Software Design<br />
+ Studied/Implemented defensive programming practices, coding style and
+ guidelines. Explored the use of FMEA and FTA for the software
+ domain.<br />
+ <br />
+ <strong
+ >AUTOSAR<br />
+ Studied AUTOSAR SWC and RTE.<br />
+ <br />
+ <strong
+ >ISO 26262<br />
+ Studied the software section of the standard. I was also the
+ software group’s representative for the study/review meetings held
+ with the hardware and system teams on ISO 26262.<br /> </strong></strong></strong
+ ></strong>
+ </p>
+ <h1 class="unnumbered" id="links">Links</h1>
+ <p>
+ <span
+ ><strong
+ ><a href="https://terminaldweller.com">terminaldweller.com</a></strong
+ ></span
+ >
+ My personal web page.<br />
+ <span
+ ><strong
+ ><a href="https://github.com/terminaldweller">Github</a></strong
+ ></span
+ >
+ My Github page.<br />
+ <span
+ ><strong
+ ><a href="https://github.com/terminaldweller/hived/tree/arbitrage"
+ >hived</a
+ ></strong
+ ></span
+ >
+ A tiny and fast crypto API server.<br />
+ <span
+ ><strong
+ ><a href="https://github.com/terminaldweller/magni">magni</a></strong
+ ></span
+ >
+ Upscales the images in a webpage and serves them back locally.<br />
+ <span
+ ><strong
+ ><a href="https://github.com/terminaldweller/cgrep">cgrep</a></strong
+ ></span
+ >
+ Grep for C-family source files.<br />
+ <span
+ ><strong
+ ><a href="https://github.com/terminaldweller/devourer"
+ >devourer</a
+ ></strong
+ ></span
+ >
+ A little helper API server. Extracts, summarizes and vocalizes articles on
+ the web.<br />
+ <span
+ ><strong
+ ><a href="https://github.com/terminaldweller/mdrtl">mdrtl</a></strong
+ ></span
+ >
+ A minimal RTL markdown editor.<br />
+ <span
+ ><strong
+ ><a href="https://github.com/terminaldweller/blog">blog</a></strong
+ ></span
+ >
+ Source code for my blog.<br />
+ <span
+ ><strong
+ ><a href="https://www.linkedin.com/in/farzad-sadeghi/"
+ >Linkedin</a
+ ></strong
+ ></span
+ >
+ My Linkedin page.<br />
+ </p>
+ </body>
+</html>
diff --git a/terminaldweller.com/main/srv/index.html b/terminaldweller.com/main/srv/index.html
index 8677d84..9d403dc 100644
--- a/terminaldweller.com/main/srv/index.html
+++ b/terminaldweller.com/main/srv/index.html
@@ -2,8 +2,8 @@
<html>
<head>
<meta charset="utf-8" />
- <meta name="viewport" content="width=device-width" />
- <meta http-equiv="onion-location" content="http://dqunl5rzlv6skqfklqr4dwi4zph2vqoaennc7qoinqs5mlug4docq2yd.onion" />
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
+ <meta http-equiv="onion-location" content="http://dqunl5rzlv6skqfklqr4dwi4zph2vqoaennc7qoinqs5mlug4docq2yd.onion"/>
<title>main</title>
<style>
a:link {
@@ -14,7 +14,7 @@
}
</style>
</head>
- <body style="color:#005f87;background:#000000;text-align:center;">
+ <body style="color:#005f87;background:#000000;text-align:center;padding:0px;border:0px;margin:0px;">
<p style="font-size:20px;font-weight:bold">This is a list of links:</p>
<p>
<div>This page is available on:</div>
@@ -26,7 +26,7 @@
<p>WKD direct and advanced are setup on/for the domain.</p>
<p>
<div><a href="https://keyoxide.org/hkp/9e20464f1ccf3b103249fa93a6a0f5158b3881df">keyoxide</a></div>
- <div>I don't use all the accounts listed on keyoxide regularly. The preferred methods of contacting me are the ones that are listed here, IRC, XMPP and email (The order is not significant).</div>
+ <div>I don't use all the accounts listed on keyoxide regularly. The preferred methods of contacting me are the ones that are listed here, IRC, email and XMPP (The order is not significant).</div>
</p>
<div>
<div>PGP FP: 9E20464F1CCF3B103249FA93A6A0F5158B3881DF - <a href="https://github.com/terminaldweller.gpg">here</a> and <a href="keys/gpg_pubkey">here</a></div>
@@ -45,11 +45,14 @@
<div>XMPP: devi@jabber.terminaldweller.com</div>
</p>
<p>
- <div>The order is significant:</div>
+ <div style="font-weight:bold;">The order is significant:</div>
<div>Email: devi@terminaldweller.com</div>
<div>Email: thabogre@gmail.com</div>
<div>Email: farzadsadeghi@protonmail.ch</div>
- <div>All emails have the ssh and pgp key fingerprints as signature.</div>
+ <div>All emails have the ssh and pgp key fingerprints as signature. You can ask for one.</div>
+ </p>
+ <p>
+ <div>OpenID: <a href="https://launchpad.net/~terminaldweller">https://launchpad.net/~terminaldweller</a></div>
</p>
<p>Github: <a href="https://github.com/terminaldweller">terminaldweller</a></p>
<p>
@@ -60,7 +63,7 @@
<p>Blog: <a href="https://blog.terminaldweller.com">Blog</a> <a href="https://blog.terminaldweller.com/rss/feed">RSS</a></p>
<p><a href="https://www.linkedin.com/in/farzad-sadeghi/">Linkedin</a></p>
<div>
- <p>Services: N/A</p>
+ <div>Services: N/A</div>
</div>
</body>
</html>
diff --git a/terminaldweller.com/traefik/traefik.yml b/terminaldweller.com/traefik/traefik.yml
new file mode 100644
index 0000000..a034111
--- /dev/null
+++ b/terminaldweller.com/traefik/traefik.yml
@@ -0,0 +1,97 @@
+version: '3.7'
+services:
+ traefik:
+ image: traefik:v3.0
+ ports:
+ - target: 80
+ published: 80
+ mode: host
+ - target: 443
+ published: 443
+ mode: host
+ deploy:
+ placement:
+ constraints:
+ # Make the traefik service run only on the node with this label
+ # as the node with it has the volume for the certificates
+ - node.labels.traefik-public.traefik-public-certificates == true
+ labels:
+ # Enable Traefik for this service, to make it available in the public network
+ - traefik.enable=true
+ # Use the traefik-public network (declared below)
+ - traefik.docker.network=traefik-public
+ # Use the custom label "traefik.constraint-label=traefik-public"
+ # This public Traefik will only use services with this label
+ # That way you can add other internal Traefik instances per stack if needed
+ - traefik.constraint-label=traefik-public
+ # admin-auth middleware with HTTP Basic auth
+ # Using the environment variables USERNAME and HASHED_PASSWORD
+ - traefik.http.middlewares.admin-auth.basicauth.users=
+ # https-redirect middleware to redirect HTTP to HTTPS
+ # It can be re-used by other stacks in other Docker Compose files
+ - traefik.http.middlewares.https-redirect.redirectscheme.scheme=https
+ - traefik.http.middlewares.https-redirect.redirectscheme.permanent=true
+ # traefik-http set up only to use the middleware to redirect to https
+ # Uses the environment variable DOMAIN
+ - traefik.http.routers.traefik-public-http.rule=Host(`traefik.terminaldweller.com`)
+ - traefik.http.routers.traefik-public-http.entrypoints=http
+ - traefik.http.routers.traefik-public-http.middlewares=https-redirect
+ # traefik-https the actual router using HTTPS
+ # Uses the environment variable DOMAIN
+ - traefik.http.routers.traefik-public-https.rule=Host(`traefik.terminaldweller.com`)
+ - traefik.http.routers.traefik-public-https.entrypoints=https
+ - traefik.http.routers.traefik-public-https.tls=true
+ # Use the special Traefik service api@internal with the web UI/Dashboard
+ - traefik.http.routers.traefik-public-https.service=api@internal
+ # Use the "le" (Let's Encrypt) resolver created below
+ - traefik.http.routers.traefik-public-https.tls.certresolver=le
+ # Enable HTTP Basic auth, using the middleware created above
+ - traefik.http.routers.traefik-public-https.middlewares=admin-auth
+ # Define the port inside of the Docker service to use
+ - traefik.http.services.traefik-public.loadbalancer.server.port=8080
+ volumes:
+ # Add Docker as a mounted volume, so that Traefik can read the labels of other services
+ - /var/run/docker.sock:/var/run/docker.sock:ro
+ # Mount the volume to store the certificates
+ - traefik-public-certificates:/certificates
+ command:
+ # Enable Docker in Traefik, so that it reads labels from Docker services
+ - --providers.docker
+ # Add a constraint to only use services with the label "traefik.constraint-label=traefik-public"
+ - --providers.docker.constraints=Label(`traefik.constraint-label`, `traefik-public`)
+ # Do not expose all Docker services, only the ones explicitly exposed
+ - --providers.docker.exposedbydefault=false
+ # Enable Docker Swarm mode
+ - --providers.docker.swarmmode
+ # Create an entrypoint "http" listening on port 80
+ - --entrypoints.http.address=:80
+ # Create an entrypoint "https" listening on port 443
+ - --entrypoints.https.address=:443
+ # Create the certificate resolver "le" for Let's Encrypt, uses the environment variable EMAIL
+ - --certificatesresolvers.le.acme.email=devi+trf@terminaldweller.com
+ # Store the Let's Encrypt certificates in the mounted volume
+ - --certificatesresolvers.le.acme.storage=/certificates/acme.json
+ # Use the TLS Challenge for Let's Encrypt
+ - --certificatesresolvers.le.acme.tlschallenge=true
+ # Enable the access log, with HTTP requests
+ - --accesslog
+ # Enable the Traefik log, for configurations and errors
+ - --log
+ # Enable the Dashboard and API
+ - --api
+ networks:
+ # Use the public network created to be shared between Traefik and
+ # any other service that needs to be publicly available with HTTPS
+ - traefik-public
+ env_file:
+ - ./.env
+volumes:
+ # Create a volume to store the certificates, there is a constraint to make sure
+ # Traefik is always deployed to the same Docker node with the same volume containing
+ # the HTTPS certificates
+ traefik-public-certificates:
+networks:
+ # Use the previously created public network "traefik-public", shared with other
+ # services that need to be publicly available via this Traefik
+ traefik-public:
+ external: true
diff --git a/zfs/import.sh b/zfs/import.sh
index 25efb71..3d49e7a 100755
--- a/zfs/import.sh
+++ b/zfs/import.sh
@@ -8,5 +8,6 @@ mount | grep mnt
sudo mount -t proc proc /mnt/proc
sudo mount -t sysfs sys /mnt/sys
sudo mount -B /dev /mnt/dev
-sudo mount -t devpts pts /mnt/dev/pts
+# sudo mount -t devpts pts /mnt/dev/pts
+sudo mount -t devpts none /mnt/dev/pts -o ptmxmode=0666,newinstance
sudo chroot /mnt /bin/bash