• 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_progress

    restore

    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 MASQUERADE

    local 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.221

    mbpoll phase A

    zei0mucu:~$ mbpoll -a 8 -t 3:float -B -0 -r0 172.16.100.101 -1 -q 
    -- Polling slave 8...
    [0]:    235.587

    modbus_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.7670135498047

    relay

    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 bytes

    off 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 bytes

    status

    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 0x0

    mbpoll

    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