aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.mutt/.muttrc4
-rw-r--r--.mutt/account.gmail7
-rw-r--r--.mutt/account.self5
-rw-r--r--.mutt/account.zoho17
-rw-r--r--.mutt/mail.zoho.pass2
-rw-r--r--.nethackrc39
-rw-r--r--.newsboat/urls2
-rw-r--r--.tmux.conf1
-rw-r--r--.tunneltop.toml65
-rw-r--r--.zshrc56
-rwxr-xr-xbin/postit.sh6
-rwxr-xr-xbin/virttop376
-rw-r--r--db/mongo/build_db.js67
-rw-r--r--docker/bitlbee-purple/docker-compose.yaml15
-rwxr-xr-xdocker/docker_builders.sh2
-rw-r--r--irssi/Dockerfile17
-rw-r--r--postit3
-rwxr-xr-xservices/clipd/run9
-rwxr-xr-xservices/docker/run7
-rw-r--r--stylus/github_wide.css21
-rw-r--r--terminaldweller.com/gitter-irc/Dockerfile7
-rw-r--r--terminaldweller.com/gitter-irc/docker-compose.yaml21
-rwxr-xr-xtmux/date.sh14
-rwxr-xr-xtmux/vcs_info.sh36
24 files changed, 355 insertions, 444 deletions
diff --git a/.mutt/.muttrc b/.mutt/.muttrc
index 8323f65..637d60e 100644
--- a/.mutt/.muttrc
+++ b/.mutt/.muttrc
@@ -28,7 +28,7 @@ set crypt_timestamp=yes
folder-hook 'account.gmail' 'source ~/.mutt/account.gmail'
folder-hook 'account.self' 'source ~/.mutt/account.self'
-folder-hook 'account.zharf' 'source ~/.mutt/account.zharf'
+folder-hook 'account.zoho' 'source ~/.mutt/account.zoho'
# default account
source ~/.mutt/account.self
@@ -36,7 +36,7 @@ source ~/.mutt/account.self
macro index,pager <f2> '<sync-mailbox><refresh><enter-command>source ~/.mutt/account.self<enter><change-folder>!<enter>'
macro index,pager <f3> '<sync-mailbox><refresh><enter-command>source ~/.mutt/account.gmail<enter><change-folder>!<enter>'
-macro index,pager <f4> '<sync-mailbox><refresh><enter-command>source ~/.mutt/account.zharf<enter><change-folder>!<enter>'
+macro index,pager <f4> '<sync-mailbox><refresh><enter-command>source ~/.mutt/account.zoho<enter><change-folder>!<enter>'
# macros
macro index A "T~N<enter>;WNT~O<enter>;WO\CT~T<enter>” “mark all messages read"
diff --git a/.mutt/account.gmail b/.mutt/account.gmail
index dc92edc..03a9af0 100644
--- a/.mutt/account.gmail
+++ b/.mutt/account.gmail
@@ -4,9 +4,14 @@ unmailboxes *
set from = 'thabogre@gmail.com'
set imap_user = 'thabogre@gmail.com'
source "gpg -d ~/scripts/mail.gmail.pass.gpg |"
-set smtp_url = 'smtp://thabogre@smtp.gmail.com:587'
+# set smtp_url = 'smtp://thabogre@smtp.gmail.com:587'
+set smtp_url = 'smtps://thabogre@smtp.gmail.com:465'
set realname = 'farzad sadeghi'
set folder = 'imaps://imap.gmail.com:993'
+# set spoolfile = '+Inbox'
+# set postponed = '+Inbox/Drafts'
+# set record = '+Sent'
+# set trash = ''
set spoolfile = '+INBOX'
set postponed = '+[Gmail]/Drafts'
set record = '+[Gmail]/Sent Mail'
diff --git a/.mutt/account.self b/.mutt/account.self
index 9706023..51e4085 100644
--- a/.mutt/account.self
+++ b/.mutt/account.self
@@ -4,7 +4,8 @@ unmailboxes *
set from = 'devi@terminaldweller.com'
set imap_user = 'devi@terminaldweller.com'
source "gpg -d ~/scripts/mail.self.pass.gpg |"
-set smtp_url = 'smtp://devi@terminaldweller.com@mail.terminaldweller.com:587'
+# set smtp_url = 'smtp://devi@terminaldweller.com@mail.terminaldweller.com:587'
+set smtp_url = 'smtps://devi@terminaldweller.com@mail.terminaldweller.com:465'
set realname = 'farzad sadeghi'
set folder = 'imaps://mail.terminaldweller.com:993'
set spoolfile = '+INBOX'
@@ -15,4 +16,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" "+INBOX/Launchpad" "+INBOX/Opennic" "+INBOX/Trf" "+INBOX/Devto"
+mailboxes "+INBOX" "+INBOX/Github" "+INBOX/Linkedin" "+INBOX/Launchpad" "+INBOX/Opennic" "+INBOX/Trf" "+INBOX/Devto" "+INBOX/Kaggle"
diff --git a/.mutt/account.zoho b/.mutt/account.zoho
new file mode 100644
index 0000000..436c524
--- /dev/null
+++ b/.mutt/account.zoho
@@ -0,0 +1,17 @@
+# vim: filetype=neomuttrc
+
+unmailboxes *
+set from = 'bloodstalker@zoho.com'
+set imap_user = 'bloodstalker@zoho.com'
+source "gpg -d ~/scripts/mail.zoho.pass.gpg |"
+set smtp_url = 'smtps://bloodstalker@smtp.zoho.com:465'
+set realname = 'farzad sadeghi'
+set folder = 'imaps://imap.zoho.com:993'
+set spoolfile = '+Inbox'
+set postponed = '+Drafts'
+set record = '+Sent'
+set trash = '+Trash'
+set header_cache = ~/.mutt/zoho/cache/headers
+set message_cachedir = ~/.mutt/zoho/cache/bodies
+set certificate_file = ~/.mutt/zoho/certificates
+mailboxes "+Inbox" "+Drafts" "+Sent" "+Trash"
diff --git a/.mutt/mail.zoho.pass b/.mutt/mail.zoho.pass
new file mode 100644
index 0000000..6cd4db7
--- /dev/null
+++ b/.mutt/mail.zoho.pass
@@ -0,0 +1,2 @@
+set imap_pass = ""
+set smtp_pass = ""
diff --git a/.nethackrc b/.nethackrc
new file mode 100644
index 0000000..5c99e4a
--- /dev/null
+++ b/.nethackrc
@@ -0,0 +1,39 @@
+# Visual options.
+OPTIONS=color
+
+OPTIONS=symset:DECgraphics
+SYMBOLS=S_ghost:6
+SYMBOLS=S_golem:U
+SYMBOLS=S_mimic:m
+
+OPTIONS=statushilites
+OPTIONS=hitpointbar
+OPTIONS=hilite_status:hitpoints/100%/grey&normal
+OPTIONS=hilite_status:hitpoints/<100%/green&normal
+OPTIONS=hilite_status:hitpoints/<66%/yellow&normal
+OPTIONS=hilite_status:hitpoints/<50%/orange&normal
+OPTIONS=hilite_status:hitpoints/<33%/red&bold
+OPTIONS=hilite_status:hitpoints/<15%/red&inverse
+OPTIONS=hilite_status:power/100%/grey&normal
+OPTIONS=hilite_status:power/<100%/green&normal
+OPTIONS=hilite_status:power/<66%/yellow&normal
+OPTIONS=hilite_status:power/<50%/orange&normal
+OPTIONS=hilite_status:power/<33%/red&bold
+OPTIONS=hilite_status:cap/burdened/yellow/stressed/orange/strained/red&bold/overtaxed/red&inverse/overloaded/red&inverse&blink
+OPTIONS=hilite_status:hunger/satiated/yellow/hungry/orange/weak/red&bold/fainting/red&inverse/fainted/red&inverse&blink
+OPTIONS=hilite_status:condition/hallu/yellow
+OPTIONS=hilite_status:condition/conf/orange
+OPTIONS=hilite_status:condition/stun/red&bold
+OPTIONS=hilite_status:condition/termill/red&inverse
+OPTIONS=hilite_status:condition/foodpois/red&inverse
+OPTIONS=hilite_status:condition/slime/red&inverse
+OPTIONS=hilite_status:characteristics/up/green/down/red
+OPTIONS=hilite_status:gold/up/yellow/down/brown
+
+
+# Blessed, cursed, enchanted
+OPTIONS=menucolors
+MENUCOLOR=" blessed"=cyan
+MENUCOLOR=" \+[1-9]"=lightcyan
+MENUCOLOR=" \-[1-9]"=orange
+MENUCOLOR=" cursed"=red
diff --git a/.newsboat/urls b/.newsboat/urls
index f1bbfa2..fbca30f 100644
--- a/.newsboat/urls
+++ b/.newsboat/urls
@@ -8,6 +8,7 @@ https://microservices.io/feed.xml
https://news.ycombinator.com/rss "~HN"
https://www.ecliptik.com/feed.xml "~Ecliptik"
https://www.privacytools.io/guides/rss.xml "~Privacy_Tools"
+https://voidlinux.org/atom.xml "~VoidLinux"
"exec:gemget gemini://mozz.us/journal/atom.xml --output -" "~MOZZ"GEMINI
"exec:gemget gemini://midnight.pub/feed.xml --output -" "~Midnight_Pub"GEMINI
@@ -120,6 +121,7 @@ https://www.youtube.com/feeds/videos.xml?channel_id=UCVik6mzTCurdJmvdj5dCa7A "~M
https://www.youtube.com/feeds/videos.xml?channel_id=UCdSnjmLUUe_NT4ml9OkUi1A "~NewWorldReview"youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCpFFItkfZz1qz5PpHpqzYBw "~Nexpo"youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC9PIn6-XuRKZ5HmYeu46AIw "~Barely_Sociable"youtube
+https://www.youtube.com/feeds/videos.xml?channel_id=UCZHmQk67mSJgfCCTn7xBfew "~Yannic_Kilcher"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
diff --git a/.tmux.conf b/.tmux.conf
index 887a5ec..2afa58a 100644
--- a/.tmux.conf
+++ b/.tmux.conf
@@ -90,6 +90,7 @@ bind-key ! break-pane -d -n _hidden_pane
bind-key @ join-pane -s $.0
bind-key p popup -w 80% -h 80% -E ksh
+# bind-key p popup -w 80% -h 80% -E xonsh
bind-key S popup -w 90% -h 90% -E env WWW_HOME=searx.terminaldweller.com /home/devi/w3m/w3m -o auto_image=FALSE -graph
# bind-key F popup -d ${pane_current_path} -w 90% -h 90% -E ranger --cmd cd $(tmux show -p '#{pane_current_path}')
bind-key F popup -d ${pane_current_path} -w 90% -h 90% -E ranger
diff --git a/.tunneltop.toml b/.tunneltop.toml
index 487fa26..748e8de 100644
--- a/.tunneltop.toml
+++ b/.tunneltop.toml
@@ -185,11 +185,74 @@ test_command_result = "<a href=\"/graph\">Found</a>."
test_interval = 300
test_timeout = 10
+[tunnel.slackircd]
+address = "127.0.0.1"
+port = 7997
+command = "autossh -M 0 -N -L 0.0.0.0:7997:127.0.0.1:6697 -o ServerAliveInterval=180 -o ServerAliveCountMax=3 -o ExitOnForwardFailure=yes -l rooot -p 1022 192.99.102.52"
+test_command = ""
+test_command_result = ""
+test_interval = 300
+test_timeout = 10
+
+[tunnel.ircgitter]
+address = "127.0.0.1"
+port = 5667
+command = "autossh -M 0 -N -L 0.0.0.0:5667:127.0.0.1:5667 -o ServerAliveInterval=180 -o ServerAliveCountMax=3 -o ExitOnForwardFailure=yes -l ubuntu -p 3333 185.130.47.208"
+test_command = ""
+test_command_result = ""
+test_interval = 300
+test_timeout = 10
+
[tunnel.upnp_2234]
address = "127.0.0.1"
port = 2234
command = "autossh -M 0 -N -L 0.0.0.0:2234:127.0.0.1:2234 -o ServerAliveInterval=180 -o ServerAliveCountMax=3 -o ExitOnForwardFailure=yes -l root -p 2022 185.112.147.110"
test_command = ""
-test_command_result = "<a href=\"/graph\">Found</a>."
+test_command_result = ""
+test_interval = 300
+test_timeout = 10
+
+[tunnel.6socks5_6]
+address = "::1"
+port = 8990
+command = "autossh -M 0 -N -D [::1]:8990 -o ServerAliveInterval=180 -o ServerAliveCountMax=3 -o ExitOnForwardFailure=yes -l ubuntu -p 3333 2a07:e01:3:204::1"
+test_command = 'curl -s -o /dev/null -s -w "%{http_code}" -k -I -6 --socks5 socks5h://[::1]:8990 https://icanhazallips.terminaldweller.com:9380'
+test_command_result = "200"
+test_interval = 300
+test_timeout = 10
+
+[tunnel.6socks5_7]
+address = "::1"
+port = 8997
+command = "autossh -M 0 -N -D [::1]:8997 -o ServerAliveInterval=180 -o ServerAliveCountMax=3 -o ExitOnForwardFailure=yes -l ubuntu -p 3333 2a07:e03:3:26::1"
+test_command = 'curl -s -o /dev/null -s -w "%{http_code}" -k -I -6 --socks5 socks5h://[::1]:8997 https://icanhazallips.terminaldweller.com:9380'
+test_command_result = "200"
+test_interval = 300
+test_timeout = 10
+
+[tunnel.6socks5_8]
+address = "::1"
+port = 8989
+command = "autossh -M 0 -N -D [::1]:8989 -o ServerAliveInterval=180 -o ServerAliveCountMax=3 -o ExitOnForwardFailure=yes -l ubuntu -p 3333 2a07:e03:3:bd::1"
+test_command = 'curl -s -o /dev/null -s -w "%{http_code}" -k -I -6 --socks5 socks5h://[::1]:8989 https://icanhazallips.terminaldweller.com:9380'
+test_command_result = "200"
+test_interval = 300
+test_timeout = 10
+
+[tunnel.6socks5_9]
+address = "::1"
+port = 8988
+command = "autossh -M 0 -N -D 8988 -o ServerAliveInterval=180 -o ServerAliveCountMax=3 -o ExitOnForwardFailure=yes -l ubuntu -p 3333 2a07:e01:3:1c4::1"
+test_command = 'curl -s -o /dev/null -s -w "%{http_code}" -k -I -6 --socks5 socks5h://[::1]:8988 https://icanhazallips.terminaldweller.com:9380'
+test_command_result = "200"
+test_interval = 300
+test_timeout = 10
+
+[tunnel.6socks5_vv]
+address = "::1"
+port = 8987
+command = "autossh -M 0 -N -D 8987 -o ServerAliveInterval=180 -o ServerAliveCountMax=3 -o ExitOnForwardFailure=yes -l ubuntu -p 3333 2a07:e01:3:30c::1"
+test_command = 'curl -s -o /dev/null -s -w "%{http_code}" -k -I -6 --socks5 socks5h://[::1]:8987 https://icanhazallips.terminaldweller.com:9380'
+test_command_result = "200"
test_interval = 300
test_timeout = 10
diff --git a/.zshrc b/.zshrc
index d377c63..a59056c 100644
--- a/.zshrc
+++ b/.zshrc
@@ -21,6 +21,7 @@ eval `dircolors ~/.dir_colors`
# _evalcache dircolors ~/.dir_colors
# enable aliases with sudo in the alias
+alias git="proxychains4 -q -f ~/proxies/ice/proxychains.conf git"
alias sudo="sudo "
alias mpv="proxychains4 -q -f ~/proxies/swe/proxychains.conf mpv --save-position-on-quit --term-osd-bar --msg-module --msg-time --cache=yes --cache-secs=9600 --cache-on-disk --cache-dir=/tmp/ --demuxer-max-bytes=500MiB"
alias w3m='proxychains4 -q -f ~/proxies/ice/proxychains.conf w3m -o auto_image=FALSE -o user_agent="$(get_random_ua.sh)" -graph'
@@ -95,6 +96,7 @@ alias cp="cp -i"
alias nuke="rm -rf .[^.]* *"
alias bruiser="bruiser --history ~/.bruiser/history.lua"
alias digg="dig && clear"
+alias bburrow="burrow && clear"
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 "
@@ -148,7 +150,7 @@ alias jupyterlab="jupyter lab --no-browser --port 9989"
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 COLORTERM=truecolor docker run --runtime=runsc -it -e COLORTERM -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 irssi="TERM=screen-256color COLORTERM=truecolor docker run --runtime=runsc -it -e COLORTERM -e TERM -u $(id -u):$(id -g) --log-driver=none -v $HOME/.irssi:/home/user/.irssi:ro -v /etc/localtime:/etc/localtime:ro irssi:1.2.3"
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 \
@@ -282,7 +284,8 @@ alias mysql='mysql --safe-updates --prompt="\u@\h [\d]>"'
alias socat="socat -d -d"
alias cmusrc="vim ~/scripts/.config/cmus/rc"
alias fixcmusrc="cp ~/scripts/.config/cmus/rc ~/.config/cmus/rc"
-alias cointop="proxychains4 -q -f ~/proxies/ice/proxychains.conf ssh -tt -p 3333 ubuntu@185.130.45.46 TERM=screen-256color /home/ubuntu/cointop/cointop"
+# alias cointop="proxychains4 -q -f ~/proxies/ice/proxychains.conf ssh -tt -p 3333 ubuntu@185.130.45.46 TERM=screen-256color /home/ubuntu/cointop/cointop"
+alias cointop="proxychains4 -q -f ~/proxies/ice/proxychains.conf autossh -M 0 -o ServerAliveInterval=180 -o ServerAliveCountMax=3 -o ExitOnForwardFailure=yes -tt -p 3333 ubuntu@185.130.45.46 TERM=screen-256color /home/ubuntu/cointop/cointop"
alias zshenv="vim ~/scripts/.zshenv"
alias fixzshenv="cp ~/scripts/.zshenv ~/.zshenv"
alias postman="flatpak run com.getpostman.Postman"
@@ -344,6 +347,7 @@ alias ffox_i2p='ssh -C -X -i /home/devi/devi/vagrantboxes.git/main/i2p/.vagrant/
alias sotn="bw_mednafen ~/roms/sotn/Castlevania\ -\ Symphony\ of\ the\ Night.cue"
alias silent_hill="bw_mednafen ~/roms/silent_hill/Silent Hill (v1.1).cue"
alias bombadillo='ssh -tt -i /home/devi/devi/vagrantboxes.git/main/openbsd/.vagrant/machines/default/libvirt/private_key vagrant@bomb-host.vagrant-libvirt proxychains4 -q bombadillo '
+alias safe_w3m='ssh -tt -i /home/devi/devi/vagrantboxes.git/main/openbsd/.vagrant/machines/default/libvirt/private_key vagrant@bomb-host.vagrant-libvirt WWW_HOME=searx.terminaldweller.com proxychains4 -q w3m '
alias mount="grc mount"
alias picocom="picocom --escape b"
# https://wiki.slipfox.xyz/wiki/ANSI_escape_code#OSC_(Operating_System_Command)_sequences)
@@ -565,29 +569,59 @@ export BROWSER=w3m
dig() {
globalholecounter=0
- if test "$("ls" -A "/home/devi/devi/abbatoir")"; then
+ local ABBATOIR_PATH="/home/devi/devi/abbatoir"
+ if test "$("ls" -A ${ABBATOIR_PATH})"; then
while [ 1 ]; do
- if [ -d "/home/devi/devi/abbatoir/hole$globalholecounter" ]; then
+ if [ -d "${ABBATOIR_PATH}/hole$globalholecounter" ]; then
# if its not empty
- if test "$("ls" -A "/home/devi/devi/abbatoir/hole$globalholecounter")"; then
+ if test "$("ls" -A "${ABBATOIR_PATH}/hole$globalholecounter")"; then
:
# if its empty
else
- cd /home/devi/devi/abbatoir/hole$globalholecounter
+ cd ${ABBATOIR_PATH}/hole$globalholecounter
break
fi
else
- mkdir /home/devi/devi/abbatoir/hole$globalholecounter
- cd /home/devi/devi/abbatoir/hole$globalholecounter
+ mkdir ${ABBATOIR_PATH}/hole$globalholecounter
+ cd ${ABBATOIR_PATH}/hole$globalholecounter
echo $globalholecounter
break
fi
((globalholecounter++))
done
else
- mkdir /home/devi/devi/abbatoir
- mkdir /home/devi/devi/abbatoir/hole$globalholecounter
- cd /home/devi/devi/abbatoir/hole$globalholecounter
+ mkdir ${ABBATOIR_PATH}
+ mkdir ${ABBATOIR_PATH}/hole$globalholecounter
+ cd ${ABBATOIR_PATH}/hole$globalholecounter
+ fi
+}
+
+burrow() {
+ globalholecounter=0
+ local FLESH_PIT_PATH="/tmp/fleshpit"
+ if test "$("ls" -A ${FLESH_PIT_PATH})"; then
+ while [ 1 ]; do
+ if [ -d "${FLESH_PIT_PATH}/pit$globalholecounter" ]; then
+ # if its not empty
+ if test "$("ls" -A "${FLESH_PIT_PATH}/pit$globalholecounter")"; then
+ :
+ # if its empty
+ else
+ cd ${FLESH_PIT_PATH}/pit$globalholecounter
+ break
+ fi
+ else
+ mkdir ${FLESH_PIT_PATH}/pit$globalholecounter
+ cd ${FLESH_PIT_PATH}/pit$globalholecounter
+ echo $globalholecounter
+ break
+ fi
+ ((globalholecounter++))
+ done
+ else
+ mkdir ${FLESH_PIT_PATH}
+ mkdir ${FLESH_PIT_PATH}/pit$globalholecounter
+ cd ${FLESH_PIT_PATH}/pit$globalholecounter
fi
}
diff --git a/bin/postit.sh b/bin/postit.sh
index d0271e3..46addd0 100755
--- a/bin/postit.sh
+++ b/bin/postit.sh
@@ -1,4 +1,6 @@
#!/usr/bin/env sh
-POSTIT=$(cat ~/scripts/postit | dmenu -l 20 -p "Select Postit:")
-echo -n "${POSTIT:0:${#POSTIT}}" | xsel -ip
+CLIP_HIST_FILE=/tmp/.clip_history
+# POSTIT=$(cat ${CLIP_HIST_FILE} | dmenu -l 20 -p "Select Postit:")
+sqlite3 $(cat /tmp/lclipd_db_name) 'select content from lclipd;' | dmenu -l 20 | xsel -ib
+# echo -n "${POSTIT:0:${#POSTIT}}" | xsel -ip
diff --git a/bin/virttop b/bin/virttop
deleted file mode 100755
index 4d8943b..0000000
--- a/bin/virttop
+++ /dev/null
@@ -1,376 +0,0 @@
-#!/usr/bin/env python
-"""virt top"""
-
-# ideally we would like to use the monkeypatch but it is untested
-# and experimental
-# import defusedxml # type:ignore
-# defusedxml.defuse_stdlib()
-import argparse
-import csv
-import dataclasses
-import enum
-import os
-import signal
-import sys
-import time
-import typing
-
-# we are only using this for type annotation
-from xml.dom.minidom import Document # nosec
-
-from defusedxml import ElementTree # type:ignore
-from defusedxml import minidom
-import libvirt # type:ignore
-
-
-# pylint: disable=unused-argument
-def sig_handler_sigint(signum, frame):
- """Just to handle C-c gracefully"""
- print()
- sys.exit(0)
-
-
-class Argparser: # pylint: disable=too-few-public-methods
- """Argparser class."""
-
- def __init__(self):
- self.parser = argparse.ArgumentParser()
- self.parser.add_argument(
- "--delay",
- "-d",
- type=float,
- help="The delay between updates",
- default=5,
- )
- self.parser.add_argument(
- "--uri",
- "-u",
- nargs="+",
- type=str,
- help="A list of URIs to connect to seperated by commas",
- default=["qemu:///system"],
- )
- self.args = self.parser.parse_args()
-
-
-# pylint: disable=too-few-public-methods
-class Colors(enum.EnumType):
- """static color definitions"""
-
- purple = "\033[95m"
- blue = "\033[94m"
- green = "\033[92m"
- yellow = "\033[93m"
- red = "\033[91m"
- grey = "\033[1;37m"
- darkgrey = "\033[1;30m"
- cyan = "\033[1;36m"
- ENDC = "\033[0m"
- BOLD = "\033[1m"
- UNDERLINE = "\033[4m"
- blueblue = "\x1b[38;5;24m"
- greenie = "\x1b[38;5;23m"
- goo = "\x1b[38;5;22m"
- screen_clear = "\033c\033[3J"
- hide_cursor = "\033[?25l"
-
-
-@dataclasses.dataclass
-# pylint: disable=too-many-instance-attributes
-class VirtData:
- """Holds the data that we collect to display to the user"""
-
- vm_id: typing.List[str] = dataclasses.field(default_factory=list)
- name: typing.List[str] = dataclasses.field(default_factory=list)
- cpu_times: typing.List[str] = dataclasses.field(default_factory=list)
- mem_actual: typing.List[str] = dataclasses.field(default_factory=list)
- mem_unused: typing.List[str] = dataclasses.field(default_factory=list)
- write_bytes: typing.List[str] = dataclasses.field(default_factory=list)
- read_bytes: typing.List[str] = dataclasses.field(default_factory=list)
- macs: typing.List[str] = dataclasses.field(default_factory=list)
- ips: typing.List[str] = dataclasses.field(default_factory=list)
- disk_reads: typing.List[str] = dataclasses.field(default_factory=list)
- disk_writes: typing.List[str] = dataclasses.field(default_factory=list)
- snapshot_counts: typing.List[str] = dataclasses.field(default_factory=list)
- uri: typing.List[str] = dataclasses.field(default_factory=list)
- memory_pool: typing.List[str] = dataclasses.field(default_factory=list)
-
- pools: typing.List[libvirt.virStoragePool] = dataclasses.field(
- default_factory=list
- )
-
-
-def get_network_info(
- xml_doc: Document,
-) -> typing.Dict[str, str]:
- """returns the network info"""
- result_dict = {}
- interface_types = xml_doc.getElementsByTagName("interface")
- for interface_type in interface_types:
- interface_nodes = interface_type.childNodes
- for interface_node in interface_nodes:
- if interface_node.nodeName[0:1] != "#":
- for attr in interface_node.attributes.keys():
- result_dict[
- interface_node.attributes[attr].name
- ] = interface_node.attributes[attr].value
- return result_dict
-
-
-def get_arp_table() -> typing.Dict[str, str]:
- """Get the ARP table. return a dict with MAC/IP as key/value pair."""
- result: typing.Dict[str, str] = {}
- with open("/proc/net/arp", encoding="utf-8") as arp_table:
- reader = csv.reader(arp_table, skipinitialspace=True, delimiter=" ")
- for arp_entry in reader:
- result[arp_entry[3]] = arp_entry[0]
-
- return result
-
-
-def get_ip_from_arp_table(arp_table: typing.Dict[str, str], mac: str) -> str:
- """get IP from MAC address using the arp table"""
- try:
- return arp_table[mac]
- except KeyError:
- return "N/A"
-
-
-def get_disk_info(
- xml_doc: Document,
-) -> typing.Dict[str, str]:
- """returns the disk info"""
- result_dict: typing.Dict = {}
- disk_types = xml_doc.getElementsByTagName("disk")
- for disk_type in disk_types:
- disk_nodes = disk_type.childNodes
- for disk_node in disk_nodes:
- if disk_node.nodeName[0:1] != "#":
- for attr in disk_node.attributes.keys():
- result_dict[
- disk_node.attributes[attr].name
- ] = disk_node.attributes[attr].value
-
- return result_dict
-
-
-# pylint: disable=too-many-locals
-def ffs(
- offset: int,
- header_list: typing.Optional[typing.List[str]],
- numbered: bool,
- *args,
-) -> typing.List[str]:
- """A simple columnar printer"""
- max_column_width = []
- lines = []
- numbers_f: typing.List[int] = []
- dummy = []
-
- if sys.stdout.isatty():
- greenie = Colors.greenie
- bold = Colors.BOLD
- endc = Colors.ENDC
- goo = Colors.goo
- blueblue = Colors.blueblue
- else:
- greenie = ""
- bold = ""
- endc = ""
- goo = ""
- blueblue = ""
-
- for arg in args:
- max_column_width.append(max(len(repr(argette)) for argette in arg))
-
- if header_list is not None:
- if numbered:
- numbers_f.extend(range(1, len(args[-1]) + 1))
- max_column_width.append(
- max(len(repr(number)) for number in numbers_f)
- )
- header_list.insert(0, "idx")
-
- index = range(0, len(header_list))
- for header, width, i in zip(header_list, max_column_width, index):
- max_column_width[i] = max(len(header), width) + offset
-
- for i in index:
- dummy.append(
- greenie
- + bold
- + header_list[i].ljust(max_column_width[i])
- + endc
- )
- lines.append("".join(dummy))
- dummy.clear()
-
- index2 = range(0, len(args[-1]))
- for i in index2:
- if numbered:
- dummy.append(
- goo + bold + repr(i).ljust(max_column_width[0]) + endc
- )
- for arg, width in zip(args, max_column_width[1:]):
- dummy.append(blueblue + (arg[i]).ljust(width) + endc)
- else:
- for arg, width in zip(args, max_column_width):
- dummy.append(blueblue + (arg[i]).ljust(width) + endc)
- lines.append("".join(dummy))
- dummy.clear()
- return lines
-
-
-def size_abr(num: float, shift_by: float) -> str:
- """Rounds and abbreviates floats."""
- num = num * shift_by
- if num < 1000:
- return repr(num)
- if num < 1_000_000.0:
- return repr(round(num / 1_000, 2)) + " KB"
- if num < 1_000_000_000:
- return repr(round(num / 1_000_000, 2)) + " MB"
- if num < 1_000_000_000_000:
- return repr(round(num / 1_000_000_000, 2)) + " GB"
- return "N/A"
-
-
-# pylint: disable=too-many-locals
-def fill_virt_data_uri(
- conn: libvirt.virConnect,
- active_hosts: typing.List[int],
- virt_data: VirtData,
- arp_table: typing.Dict[str, str],
-) -> None:
- """fill VirtData for one URI."""
- for host_id in active_hosts:
- virt_data.uri.append(conn.getURI())
- dom = conn.lookupByID(host_id)
- virt_data.snapshot_counts.append(repr(dom.snapshotNum()))
- virt_data.cpu_times.append(
- repr(
- int(dom.getCPUStats(total=True)[0]["cpu_time"] / 1_000_000_000)
- )
- + "s"
- )
- xml_doc = minidom.parseString(dom.XMLDesc())
- virt_data.name.append(dom.name())
-
- mem_stats = dom.memoryStats()
- if "actual" in mem_stats:
- virt_data.mem_actual.append(size_abr(mem_stats["actual"], 1000))
- else:
- virt_data.mem_actual.append("n/a")
-
- # BSD guests dont support mem balloons?
- try:
- virt_data.mem_unused.append(size_abr(mem_stats["available"], 1000))
- except KeyError:
- virt_data.mem_unused.append("N/A")
-
- tree = ElementTree.fromstring(dom.XMLDesc())
- iface = tree.find("devices/interface/target").get("dev")
- stats = dom.interfaceStats(iface)
- virt_data.write_bytes.append(size_abr(stats[4], 1))
- virt_data.read_bytes.append(size_abr(stats[0], 1))
-
- found_the_pool: bool = False
- disk = tree.find("devices/disk/source").get("file")
- for pool in virt_data.pools:
- if os.path.basename(disk) in pool.listVolumes():
- virt_data.memory_pool.append(pool.name())
- found_the_pool = True
- # you could delete the pool but keep the volumes inside
- # which results in a functional VM but it wont have a
- # volume inside a pool that we can detect
- if not found_the_pool:
- virt_data.memory_pool.append("N/A")
-
- disk_info = get_disk_info(xml_doc)
- image_name = disk_info["file"]
- _, rd_bytes, _, wr_bytes, _ = dom.blockStats(image_name)
- virt_data.disk_reads.append(size_abr(rd_bytes, 1))
- virt_data.disk_writes.append(size_abr(wr_bytes, 1))
-
- network_info = get_network_info(xml_doc)
- virt_data.macs.append(network_info["address"])
- # virt_data.ips.append(get_ip_by_arp(network_info["address"]))
- # TODO-this is obviously not going to work for remote URIs
- virt_data.ips.append(
- get_ip_from_arp_table(arp_table, network_info["address"])
- )
-
-
-def main() -> None:
- """entrypoint"""
- signal.signal(signal.SIGINT, sig_handler_sigint)
- argparser = Argparser()
- print(Colors.screen_clear, end="")
- while True:
- virt_data = VirtData()
- arp_table = get_arp_table()
- for hv_host in argparser.args.uri:
- conn = libvirt.openReadOnly(hv_host)
- active_hosts = conn.listDomainsID()
- if len(active_hosts) > 0:
- virt_data.pools = conn.listAllStoragePools()
- # for pool in virt_data.pools:
- # print(pool.listVolumes())
- # networks = conn.listAllNetworks()
- # print([pool.name() for pool in conn.listAllStoragePools()])
- # print([net.name() for net in conn.listAllNetworks()])
- virt_data.vm_id = [
- repr(vm_id) for vm_id in conn.listDomainsID()
- ]
- fill_virt_data_uri(conn, active_hosts, virt_data, arp_table)
- # for conn_id in conn.listAllDomains():
- # print(conn_id.name())
- # print(conn_id.state())
- else:
- print("no active VMs found.")
- sys.exit(1)
-
- lines = ffs(
- 2,
- [
- "ID",
- "NAME",
- "CPU",
- "MEM_ACTUAL",
- "MEM_AVAIL",
- "NET_WRITE_B",
- "NET_READ_B",
- "MAC",
- "IP",
- "IO_READ_B",
- "IO_WRITE_B",
- "SNAPSHOTS",
- "URI",
- "STORAGE_POOL",
- ],
- False,
- virt_data.vm_id,
- virt_data.name,
- virt_data.cpu_times,
- virt_data.mem_actual,
- virt_data.mem_unused,
- virt_data.write_bytes,
- virt_data.read_bytes,
- virt_data.macs,
- virt_data.ips,
- virt_data.disk_reads,
- virt_data.disk_writes,
- virt_data.snapshot_counts,
- virt_data.uri,
- virt_data.memory_pool,
- )
- for line in lines:
- print(line)
- time.sleep(argparser.args.delay)
- # clears the screen
- print(Colors.screen_clear, end="")
- print(Colors.hide_cursor, end="")
-
-
-if __name__ == "__main__":
- main()
diff --git a/db/mongo/build_db.js b/db/mongo/build_db.js
index 9273193..fb7a611 100644
--- a/db/mongo/build_db.js
+++ b/db/mongo/build_db.js
@@ -31,7 +31,10 @@ const mangas = {
gigantis: "https://manganato.com/manga-mv989778",
"ningyo no kuni": "https://readmanganato.com/manga-uq971373",
"dead tube": "https://readmanganato.com/manga-pp951398",
+ "at the mountains of madness": "https://manganato.com/manga-ct979576",
"ooki onna": "https://manganato.com/manga-wb953636",
+ "gantz:e": "https://manganato.com/manga-ho984623",
+ leviathan: "https://readmanganato.com/manga-pj966444",
ingoshima: "https://readmanganato.com/manga-ek981919",
"kangoku kaguen": "https://readmanganato.com/manga-nl952268",
tenkaichi: "https://manganato.com/manga-mj990344",
@@ -41,6 +44,8 @@ const mangas = {
"murcielago.": "https://manganato.com/manga-vi953465",
"black joke.": "https://manganato.com/manga-om952769",
"pinsaro sniper": "https://manganato.com/manga-ig986163",
+ jinmen: "https://readmanganato.com/manga-ad978186",
+ "hunter x hunter": "https://readmanganato.com/manga-oc955385",
"baki-dou": "https://readmanganato.com/manga-cc980259",
"everyone's loose screw'": "https://manganato.com/manga-ga983883",
"kumo desu": "https://readmanganato.com/manga-zd976712",
@@ -48,6 +53,13 @@ const mangas = {
gachiakuta: "https://manganato.com/manga-na990935",
"black lagoon": "https://readmanganato.com/manga-",
"chainsaw man": "https://readmanganato.com/manga-dn980422",
+ "at the mountains of madness": "https://manganato.com/manga-ct979576",
+ "resurrection colloseum": "https://manganato.com/manga-qq993573",
+ "pumpkin night": "https://chapmanganato.com/manga-br979252",
+ "maou no hajemekata": "https://chapmanganato.com/manga-ki952417",
+ "savage hero": "https://manganato.com/manga-qb993758",
+ "cave of obscenity": "https://manganato.com/manga-pk993067",
+ "ataerareta skill wo": "https://chapmanganato.com/manga-or991826",
};
db = connect("192.168.1.109:27117/devi");
@@ -57,7 +69,11 @@ const movies_obj = {
};
const stash_obj = {
- momotaro: "https://www.tnaflix.com/amateur-porn/fcdc-056/video6241864",
+ step: "https://spankbang.com/7s3ed/video/sharing+my+curvy+girlfriend+with+my+skinny+stepsis",
+};
+
+const manga_obj = {
+ "hell's tormentor kraken": "https://manganato.com/manga-or992226",
};
function inser_into_db(mongo_collection, object) {
@@ -79,30 +95,29 @@ function inser_into_db(mongo_collection, object) {
inser_into_db(db.stash, stash_obj);
inser_into_db(db.movies, movies_obj);
+inser_into_db(db.mangas, manga_obj);
-var mangas_entry = db.mangas.find({});
-Object.keys(mangas_entry).forEach((prop) => {
- console.log(prop);
-});
-while (mangas_entry.hasNext()) {
- var mangas_id = mangas_entry.next()._id;
- console.log(mangas_id);
-}
-db.mangas.updateOne(
- { _id: mangas_id },
- {
- $set: {
- "at the mountains of madness": "https://manganato.com/manga-ct979576",
- },
- }
-);
+// var mangas_entry = db.mangas.find({});
+// Object.keys(mangas_entry).forEach((prop) => {
+// console.log(prop);
+// });
+// while (mangas_entry.hasNext()) {
+// var mangas_id = mangas_entry.next()._id;
+// console.log(mangas_id);
+// }
+// db.mangas.updateOne(
+// { _id: mangas_id },
+// {
+// $set: {},
+// }
+// );
-var animes_entry = db.animes.find({});
-Object.keys(animes_entry).forEach((prop) => {
- console.log(prop);
-});
-while (animes_entry.hasNext()) {
- var animes_id = animes_entry.next()._id;
- console.log(animes_id);
-}
-db.animes.updateOne({ _id: animes_id }, { $set: {} });
+// var animes_entry = db.animes.find({});
+// Object.keys(animes_entry).forEach((prop) => {
+// console.log(prop);
+// });
+// while (animes_entry.hasNext()) {
+// var animes_id = animes_entry.next()._id;
+// console.log(animes_id);
+// }
+// db.animes.updateOne({ _id: animes_id }, { $set: {} });
diff --git a/docker/bitlbee-purple/docker-compose.yaml b/docker/bitlbee-purple/docker-compose.yaml
index 193a14f..dd582b0 100644
--- a/docker/bitlbee-purple/docker-compose.yaml
+++ b/docker/bitlbee-purple/docker-compose.yaml
@@ -1,22 +1,19 @@
version: "3.7"
services:
bitlbee:
- image: bitlbee_devi
+ image: ezkrg_bitlbee_libpurple
networks:
- bitlbeenet
ports:
- "8667:6667"
+ user: 1000:1000
restart: unless-stopped
- network_mode: bridge
user: "bitlbee:bitlbee"
- command: ["/usr/sbin/bitlbee", "-F","-n","-u","bitlbee","-c","/var/lib/bitlbee/bitlbee.conf", "-d","bitlbee-user-data"]
+ command: ["/usr/sbin/bitlbee", "-F","-n","-u","bitlbee","-c","/var/lib/bitlbee/bitlbee.conf", "-d","/var/lib/bitlbee"]
volumes:
- ./conf/bitlbee.conf:/var/lib/bitlbee/bitlbee.conf
+ - userdata:/var/lib/bitlbee
networks:
bitlbeenet:
- ipam:
- driver: overlay
- config:
- - subnet: 172.18.0.0/16
- - ip_range: 172.18.5.0.24
- - gateway: 172.18.0.1
+volumes:
+ userdata:
diff --git a/docker/docker_builders.sh b/docker/docker_builders.sh
index c524ec4..5dc6e76 100755
--- a/docker/docker_builders.sh
+++ b/docker/docker_builders.sh
@@ -1,6 +1,6 @@
#!/bin/sh
-ALL_PROXY="socks5://127.0.0.1:9995"
+ALL_PROXY="socks5h://127.0.0.1:9995"
SOCKS_4_PROXY="socks5://127.0.0.1:9995"
SOCKS_6_PROXY="socks5://[::1]:9993"
NO_PROXY="127.0.0.0/8,192.168.0.0/16,10.0.0.0/8,172.16.0.0/12"
diff --git a/irssi/Dockerfile b/irssi/Dockerfile
index ed8d271..2a630f4 100644
--- a/irssi/Dockerfile
+++ b/irssi/Dockerfile
@@ -1,6 +1,6 @@
# https://github.com/jessfraz/irssi
# For the time being we have build on alpine:edge since perl::Glib::Object::Introspection is only available on edge/testing
-FROM alpine:edge
+FROM alpine:3.17
# https://georgik.rocks/how-to-start-d-bus-in-docker-container/
# apk add dbus dbus-x11
# dbus-uuidgen > /var/lib/dbus/machine-id
@@ -74,6 +74,18 @@ RUN set -eux; \
; \
ninja -C Build -j "$(nproc)"; \
ninja -C Build install;
+ENV HTTPS_PROXY=socks5://192.168.1.214:9995
+RUN apk add git glib python3-dev && \
+ cd /home/user && \
+ git clone https://github.com/irssi-import/irssi-python && \
+ cd /home/user/irssi-python && \
+ autoreconf -ivf -I. && \
+ ./configure --with-irssi=/usr/src/irssi && \
+ make -C src constants && \
+ make && \
+ mkdir /home/user/.irssi/modules && \
+ cp src/.libs/libpython.so ~/.irssi/modules
+ENV HTTPS_PROXY=
RUN cd /; \
rm -rf /usr/src/irssi; \
\
@@ -85,7 +97,7 @@ RUN cd /; \
)"; \
apk add --virtual .irssi-rundeps $runDeps; \
echo https://dl-cdn.alpinelinux.org/alpine/edge/testing >> /etc/apk/repositories && apk update; \
- apk add --no-cache perl-glib perl-datetime perl-dbi perl-dbd-pg perl-lwp-protocol-https proxychains-ng perl-glib-object-introspection libnotify; \
+ apk add --no-cache perl-glib perl-datetime perl-dbi perl-dbd-pg perl-lwp-protocol-https proxychains-ng perl-glib-object-introspection perl-mojolicious libnotify; \
# apk add dbus; \
# dbus-uuidgen > /var/lib/dbus/machine-id; \
# mkdir -p /var/run/dbus; \
@@ -98,6 +110,7 @@ RUN cd /; \
COPY ./proxychains.conf /etc/proxychains/
WORKDIR $HOME
+RUN cp /home/user/.irssi/modules/libpython.so /usr/local/lib/irssi/modules/libpython_core.so
USER user
CMD ["proxychains4", "-q", "irssi"]
diff --git a/postit b/postit
index 1e92ac6..b5ca68c 100644
--- a/postit
+++ b/postit
@@ -51,3 +51,6 @@ 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
+https://www.kaggle.com/datasets/hassan06/nslkdd
+https://www.kaggle.com/datasets/mrwellsdavid/unsw-nb15
+https://magma.lavafeld.org/guide/osint-sources.html#looking-glasses
diff --git a/services/clipd/run b/services/clipd/run
index 493539d..34c3239 100755
--- a/services/clipd/run
+++ b/services/clipd/run
@@ -1,3 +1,10 @@
#!/bin/sh
exec 2>&1
-DISPLAY=:0.0 exec /home/devi/scripts/bin/clipd -s 200 -f /home/devi/.clip_history
+# DISPLAY=:0.0 exec lua5.3 /home/devi/devi/lclip.git/sqlite3/lclipd.lua -s 200
+exec \
+ env \
+ XDG_RUNTIME_DIR="${XDG_RUNTIME_DIR}" \
+ lua5.3 \
+ /home/devi/devi/lclip.git/sqlite3/lclipd.lua \
+ -s 200 \
+ > /dev/null 2>&1
diff --git a/services/docker/run b/services/docker/run
index 05473df..528089e 100755
--- a/services/docker/run
+++ b/services/docker/run
@@ -6,4 +6,9 @@ mountpoint -q /sys/fs/cgroup/systemd || {
mount -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/systemd;
}
#exec chpst -o 1048576 -p 1048576 dockerd $OPTS 2>&1
-exec env NO_PROXY="localhost,127.0.0.0/8,192.168.0.0/24,10.0.0.0/8,172.16.0.0/12" HTTPS_PROXY="socks5://127.0.0.1:9995" HTTP_PROXY="socks5://127.0.0.1:9995" chpst -o 1048576 -p 1048576 dockerd $OPTS 2>&1
+# exec env NO_PROXY="localhost,127.0.0.0/8,192.168.0.0/24,10.0.0.0/8,172.16.0.0/12" HTTPS_PROXY="socks5://127.0.0.1:9995" HTTP_PROXY="socks5://127.0.0.1:9995" chpst -o 1048576 -p 1048576 dockerd $OPTS 2>&1
+# echo localhost,127.0.0.0/8,192.168.0.0/24,10.0.0.0/8,172.16.0.0/12 > /etc/sv/docker/envs/NO_PROXY
+# echo socks5://127.0.0.1:9995 > /etc/sv/docker/envs/HTTP_PROXY
+# echo socks5://127.0.0.1:9995 > /etc/sv/docker/envs/HTTPS_PROXY
+# echo socks5://127.0.0.1:9995 > /etc/sv/docker/envs/ALL_PROXY
+exec chpst -e /etc/sv/docker/envs -o 1048576 -p 1048576 dockerd $OPTS 2>&1
diff --git a/stylus/github_wide.css b/stylus/github_wide.css
new file mode 100644
index 0000000..8f3cb2d
--- /dev/null
+++ b/stylus/github_wide.css
@@ -0,0 +1,21 @@
+@-moz-document domain("github.com") {
+ div.clearfix:nth-child(4) {
+ max-width: 97%;
+ width: 97%;
+ }
+
+ .markdown-body {
+ max-width: 97%;
+ width: 97%;
+ }
+
+ div.clearfix:nth-child(2) {
+ max-width: 97%;
+ width: 97%;
+ }
+
+ div.container-xl:nth-child(2) {
+ max-width: 97%;
+ width: 97%;
+ }
+}
diff --git a/terminaldweller.com/gitter-irc/Dockerfile b/terminaldweller.com/gitter-irc/Dockerfile
new file mode 100644
index 0000000..174d8de
--- /dev/null
+++ b/terminaldweller.com/gitter-irc/Dockerfile
@@ -0,0 +1,7 @@
+FROM node:lts-alpine3.17
+RUN apk update \
+ && apk add git \
+ && git clone https://gitlab.com/gitterHQ/irc-bridge \
+ && cd irc-bridge \
+ && npm install
+WORKDIR /irc-bridge
diff --git a/terminaldweller.com/gitter-irc/docker-compose.yaml b/terminaldweller.com/gitter-irc/docker-compose.yaml
new file mode 100644
index 0000000..ddc704b
--- /dev/null
+++ b/terminaldweller.com/gitter-irc/docker-compose.yaml
@@ -0,0 +1,21 @@
+version: "3"
+services:
+ irc-gitter:
+ image: irc-gitter
+ build:
+ context: .
+ networks:
+ - ircgitternet
+ ports:
+ - "127.0.0.1:5667:6667"
+ restart: unless-stopped
+ entrypoint: ["npm", "start"]
+ cap_drop:
+ - ALL
+ cap_add:
+ - CHOWN
+ - SETGID
+ - SETUID
+networks:
+ ircgitternet:
+
diff --git a/tmux/date.sh b/tmux/date.sh
index 7a82d91..ce6e0eb 100755
--- a/tmux/date.sh
+++ b/tmux/date.sh
@@ -3,16 +3,18 @@
# source common.sh
SEPARATOR_LEFT_BOLD=""
SEPARATOR_LEFT_THIN=""
-PROXY="proxychains4 -q -f /home/devi/proxies/ice/proxychains.conf"
+# PROXY="proxychains4 -q -f /home/devi/proxies/ice/proxychains.conf"
internet_time_cache() {
INTERNET_TIME_CACHE_AGE=60
INTERNET_TIME_CACHE_OUTPUT=/tmp/tmux_internet_time_cache
# if the cache has not expired yet
- if [ $(( $( stat --format=%Y $INTERNET_TIME_CACHE_OUTPUT ) + INTERNET_TIME_CACHE_AGE )) -gt $( date +%s ) ];then
+ if [ $(( $( stat --format=%Y $INTERNET_TIME_CACHE_OUTPUT ) + INTERNET_TIME_CACHE_AGE )) -gt "$( date +%s )" ];then
:
else
- date -u +"%T" -d @$(curl -s --connect-timeout 10 --socks5-hostname localhost:9054 --user-agent "$(get_random_ua.sh)" http://worldtimeapi.org/api/timezone/Europe/London.json | jq '.unixtime') > ${INTERNET_TIME_CACHE_OUTPUT}
+ if OUTPUT=$(date -u +"%T" -d @$(curl -s --connect-timeout 10 --socks5-hostname localhost:9053 --user-agent "$(get_random_ua.sh)" http://worldtimeapi.org/api/timezone/Europe/London.json | jq '.unixtime')); then
+ echo "${OUTPUT}" > ${INTERNET_TIME_CACHE_OUTPUT}
+ fi
fi
cat ${INTERNET_TIME_CACHE_OUTPUT}
}
@@ -20,10 +22,12 @@ internet_time_cache() {
weather_info_cache() {
WEATHER_INFO_CACHE_AGE=300
WEATHER_INFO_CACHE_OUTPUT=/tmp/tmux_weather_info_cache
- if [ $(( $( stat --format=%Y $WEATHER_INFO_CACHE_OUTPUT ) + INTERNET_TIME_CACHE_AGE )) -gt $( date +%s ) ];then
+ if [ $(( $( stat --format=%Y $WEATHER_INFO_CACHE_OUTPUT ) + WEATHER_INFO_CACHE_AGE )) -gt "$( date +%s )" ];then
:
else
- ${PROXY} curl -s 'wttr.in/tehran?T&format=%f' > ${WEATHER_INFO_CACHE_OUTPUT}
+ if OUTPUT=$(curl -s --connect-timeout 10 --socks5-hostname socks5h://127.0.0.1:9053 'wttr.in/tehran?T&format=%f'); then
+ echo "${OUTPUT}" > ${WEATHER_INFO_CACHE_OUTPUT}
+ fi
fi
cat ${WEATHER_INFO_CACHE_OUTPUT}
}
diff --git a/tmux/vcs_info.sh b/tmux/vcs_info.sh
index ba8b6a8..673c07e 100755
--- a/tmux/vcs_info.sh
+++ b/tmux/vcs_info.sh
@@ -66,10 +66,38 @@ function repo_info {
}
function get_eth_price {
- eth_price=$(proxychains4 -q -f ~/proxies/ice/proxychains.conf curl -s -X GET "https://api.terminaldweller.com/crypto/v1/price?name=ETH&unit=USD" | jq ".price")
- cake_price=$(proxychains4 -q -f ~/proxies/ice/proxychains.conf curl -s -X GET "https://api.terminaldweller.com/crypto/v1/price?name=CAKE&unit=USD" | jq ".price")
- monero_price=$(proxychains4 -q -f ~/proxies/ice/proxychains.conf curl -s -X GET "https://api.terminaldweller.com/crypto/v1/price?name=XMR&unit=USD" | jq ".price")
- echo "${eth_price}/${cake_price}/${monero_price}"
+ PRICE_TIME_CACHE=60
+ PRICE_CACHE_OUTPUT_ETH=/tmp/tmux_PRICE_CACHE_ETH
+ PRICE_CACHE_OUTPUT_XMR=/tmp/tmux_PRICE_CACHE_XMR
+ PRICE_CACHE_OUTPUT_CAKE=/tmp/tmux_PRICE_CACHE_CAKE
+ # eth_price=$(proxychains4 -q -f ~/proxies/ice/proxychains.conf curl -s -X GET "https://api.terminaldweller.com/crypto/v1/price?name=ETH&unit=USD" | jq ".price")
+ # cake_price=$(proxychains4 -q -f ~/proxies/ice/proxychains.conf curl -s -X GET "https://api.terminaldweller.com/crypto/v1/price?name=CAKE&unit=USD" | jq ".price")
+ # monero_price=$(proxychains4 -q -f ~/proxies/ice/proxychains.conf curl -s -X GET "https://api.terminaldweller.com/crypto/v1/price?name=XMR&unit=USD" | jq ".price")
+ if [ $(( $( stat --format=%Y $PRICE_CACHE_OUTPUT_ETH ) + PRICE_TIME_CACHE )) -gt "$( date +%s )" ];then
+ :
+ else
+ if ETH_OUTPUT=$(proxychains4 -q -f ~/proxies/ice/proxychains.conf curl -s -X GET "https://api.terminaldweller.com/crypto/v1/price?name=ETH&unit=USD" | jq ".price"); then
+ echo "${ETH_OUTPUT}" > ${PRICE_CACHE_OUTPUT_ETH}
+ fi
+ fi
+ if [ $(( $( stat --format=%Y $PRICE_CACHE_OUTPUT_CAKE ) + PRICE_TIME_CACHE )) -gt "$( date +%s )" ];then
+ :
+ else
+ if CAKE_OUTPUT=$(proxychains4 -q -f ~/proxies/ice/proxychains.conf curl -s -X GET "https://api.terminaldweller.com/crypto/v1/price?name=CAKE&unit=USD" | jq ".price"); then
+ echo "${CAKE_OUTPUT}" > ${PRICE_CACHE_OUTPUT_CAKE}
+ fi
+ fi
+ if [ $(( $( stat --format=%Y $PRICE_CACHE_OUTPUT_XMR ) + PRICE_TIME_CACHE )) -gt "$( date +%s )" ];then
+ :
+ else
+ if XMR_OUTPUT=$(proxychains4 -q -f ~/proxies/ice/proxychains.conf curl -s -X GET "https://api.terminaldweller.com/crypto/v1/price?name=XMR&unit=USD" | jq ".price"); then
+ echo "${XMR_OUTPUT}" > ${PRICE_CACHE_OUTPUT_XMR}
+ fi
+ fi
+
+
+ result="$(cat ${PRICE_CACHE_OUTPUT_ETH})"/"$(cat ${PRICE_CACHE_OUTPUT_CAKE})"/"$(cat ${PRICE_CACHE_OUTPUT_XMR})"
+ echo "${result}"
}
tmux_session_info=" #S:#I.#P"