-
fail2ban example jail and filter (joplin server)
fail2ban jail and filter example
/etc/fail2ban/jail.d/joplin-403-sessions.conf
[joplin-403-sessions] enabled = true port = http,https filter = joplin-403-sessions action = iptables-multiport[name=joplin-403-sessions, port="http,https", protocol=tcp] sendmail-whois-lines[name=joplin-403-sessions, dest=postmaster@example.com, sender=fail2ban@example.com, logpath=/var/log/nginx/joplin.access.log] logpath = /var/log/nginx/joplin.access.log maxretry = 3 findtime = 1m bantime = 3600 ignoreip = 127.0.0.1/8/etc/fail2ban/filter.d/joplin-403-sessions.conf
[Definition] failregex = ^<HOST> - .* "(GET|POST) /api/sessions.*" 403 ignoreregex = -
PostgreSQL pg_dump pg_restore
dump and restore postgresql database
dump
#!/bin/bash if [ ! "$USER" == "postgres" ] ; then echo "user must be postgres" exit 1 fi PATH=$PATH:/srv/pgsql/bin touch /u04/export/in_progress for db in $(echo "select datname from pg_database where datname <>'template0'" | psql --no-align --quiet --tuples-only ); do mkdir -p "/u04/export/$db" echo "dump database $db..." backup_file="/u04/export/$db/pg_dump__${db}__$(date +%Y-%m-%d__%H-%M-%S)" pg_dump $db -Fd -f $backup_file && pg_dump $db -Fp --schema-only -f $backup_file/schema.sql if [[ $?==0 ]]; then echo "export to $backup_file success" else echo "export failed" fi done rm /u04/export/in_progressrestore
pg_restore -d test4 -Fd /u04/export/test4/pg_dump__test4__2025-08-21__11-43-18/ pg_restore -d test4 -Fd -a /u04/export/test4/pg_dump__test4__2025-08-21__11-43-18/ pg_restore -d test4 -Fd -t dt_fake_data -a /u04/export/test4/pg_dump__test4__2025-08-21__11-43-18/ -
access to hilink web interface from remote host
hilink usb dongle on remote host
remote host
sysctl -w net.ipv4.ip_forward=1 iptables -t nat -A PREROUTING --dst 10.10.10.22 -p tcp --dport 80 -j DNAT --to 192.168.8.1 iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADElocal host
#sysctl -w net.ipv4.ip_forward=1 #sysctl -w net.ipv4.conf.all.route_localnet=1 iptables -t nat -A OUTPUT -d 192.168.8.1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.10.10.22 iptables -t nat -A POSTROUTING -o tap0 -j MASQUERADE -
apache rewrite without 301 redirect
/etc/apache2/conf.d/domaincheck.conf
AddDefaultCharset UTF-8 Alias /domainchecker "/srv/www/htdocs/domainchecker" <Location "/domainchecker"> DirectoryIndex index.php RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^(.+[^/])$ $1/ [L] </Location> <Directory "/srv/www/htdocs/domainchecker"> DirectorySlash Off Options -Indexes +FollowSymLinks Require all granted </Directory> -
modbus cli tcp, mbpoll and moodbus_cli
sinotimer
mbpoll phase A,B,C
zei0mucu:~$ mbpoll -a 8 -t 3:float -B -0 -r0,2,4 172.16.100.101 -1 -q -- Polling slave 8... [0]: 234.282 [2]: 234.666 [4]: 237.221mbpoll phase A
zei0mucu:~$ mbpoll -a 8 -t 3:float -B -0 -r0 172.16.100.101 -1 -q -- Polling slave 8... [0]: 235.587modbus_cli, voltage phase A,B,C
zei0mucu:~$ modbus -S 172.16.100.101 -s 8 i@0/f 236.30426025390625 zei0mucu:~$ modbus -S 172.16.100.101 -s 8 i@2/f 233.90081787109375 zei0mucu:~$ modbus -S 172.16.100.101 -s 8 i@4/f 237.7670135498047relay
modbus_cli
on relay 1
zei0mucu:~$ modbus 127.0.0.1 -s 2 -v c@0=1 Parsed 0 registers definitions from 1 files → < 97 58 00 00 00 06 02 05 00 00 ff 00 > ← < 97 58 00 00 00 06 02 05 00 00 ff 00 > 12 bytesoff relay 2
zei0mucu:~$ modbus 127.0.0.1 -s 2 -v c@1=0 Parsed 0 registers definitions from 1 files → < fa 49 00 00 00 06 02 05 00 00 00 00 > ← < fa 49 00 00 00 06 02 05 00 00 00 00 > 12 bytesstatus
zei0mucu:~$ modbus 127.0.0.1 -s 2 -v c@0/8B Parsed 0 registers definitions from 1 files → < bd 43 00 00 00 06 02 01 00 00 00 08 > ← < bd 43 00 00 00 04 02 01 01 00 > 10 bytes ← [0, 0, 0, 0, 0, 0, 0, 0] 0: 0 0x0mbpoll
relay 1
zei0mucu:~$ mbpoll -a 2 -t 0 -0 -r0 127.0.0.1 -q -- 1 Written 1 references.relay 2
zei0mucu:~$ mbpoll -a 2 -t 0 -0 -r1 127.0.0.1 -q -- 1 Written 1 references.status
zei0mucu:~$ mbpoll -a 2 -t 0 -0 -r0 127.0.0.1 -q -1 -c8 -- Polling slave 2... [0]: 1 [1]: 1 [2]: 0 [3]: 0 [4]: 0 [5]: 0 [6]: 0 [7]: 0