1
0
mirror of https://github.com/kellyjonbrazil/jc.git synced 2025-07-07 00:57:22 +02:00

Merge branch 'feature/amixer-new-parser' of github.com:AvocadoStyle/jc into feature/amixer-new-parser

This commit is contained in:
Eden Refael
2024-11-29 12:09:42 +02:00
41 changed files with 3756 additions and 34 deletions

View File

@ -10,6 +10,7 @@ on:
jobs:
old_python:
if: github.event.pull_request.draft == false
runs-on: ${{ matrix.os }}
strategy:
matrix:
@ -37,6 +38,7 @@ jobs:
python -m unittest discover tests
latest_python:
if: github.event.pull_request.draft == false
runs-on: ${{ matrix.os }}
strategy:
matrix:

View File

@ -1,7 +1,9 @@
jc changelog
20241120 v1.25.4
20241125 v1.25.4
- Add `ipconfig` command parser (`ipconfig` for Windows)
- Add `pacman` command parser
- Add `wg show` command parser
- Enhance `ethtool` parser to support `link_partner_advertised_link_modes`
- Enhance `ifconfig` parser to support `utun` interfaces with assigned IPv4 addresses on macOS
- Enhance `nsd-control` parser with additional state fields
@ -9,6 +11,7 @@ jc changelog
- Fix `bluetoothctl` parser when extra attributes like `manufacturer` and `version` exist
- Fix `df` parser to correctly output binary vs. decimal size outputs
- Fix `ip-address` parser for Python 3.13 changes to IPv4 mapped IPv6 addresses
- Fix `iw-scan` parser to output more fields (still beta quality)
- Fix `mount` parser for cases where there are spaces in the filesystem name
- Fix `netstat` parser for cases where there are spaces in the program name
- Fix `pkg-index-deb`, `apt-cache-show`, and `rpm-qi` parsers to correctly convert contiguous packages with the same name
@ -21,6 +24,7 @@ jc changelog
20240609 v1.25.3
- Enhance `bluetoothctl` parser with added `battery_percentage` field
- Enhance `git-log` standard and streaming parsers with added `lines_changed` field under `file_stats`
- Fix `lspci` parser to handle `physlot` fields with a range value
- Fix `pci-ids` parser to correctly handle multiple subdevices
- Fix `pip-show` parser to handle multi-line fields with a beginning blank line
- Fix `ss` parser to correctly handle the `Recv-Q` field being too close to the `Status` field

View File

@ -251,6 +251,7 @@ option.
| `--openvpn` | openvpn-status.log file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/openvpn) |
| `--os-prober` | `os-prober` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/os_prober) |
| `--os-release` | `/etc/os-release` file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/os_release) |
| `--pacman` | `pacman` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/pacman) |
| `--passwd` | `/etc/passwd` file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/passwd) |
| `--path` | POSIX path string parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/path) |
| `--path-list` | POSIX path list string parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/path_list) |
@ -317,6 +318,7 @@ option.
| `--vmstat-s` | `vmstat` command streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/vmstat_s) |
| `--w` | `w` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/w) |
| `--wc` | `wc` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/wc) |
| `--wg-show` | `wg show` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/wg_show) |
| `--who` | `who` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/who) |
| `--x509-cert` | X.509 PEM and DER certificate file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/x509_cert) |
| `--x509-csr` | X.509 PEM and DER certificate request file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/x509_csr) |

View File

@ -3,8 +3,8 @@ _jc()
local cur prev words cword jc_commands jc_parsers jc_options \
jc_about_options jc_about_mod_options jc_help_options jc_special_options
jc_commands=(acpi airport apt-cache apt-get arp blkid bluetoothctl cbt certbot chage cksum crontab curl date debconf-show df dig dmidecode dpkg du efibootmgr env ethtool file findmnt finger free git gpg hciconfig host id ifconfig iostat ip ipconfig iptables iw iwconfig jobs last lastb ls lsattr lsb_release lsblk lsmod lsof lspci lsusb md5 md5sum mdadm mount mpstat needrestart netstat nmcli nsd-control ntpq os-prober pidstat ping ping6 pip pip3 postconf printenv ps route rpm rsync sfdisk sha1sum sha224sum sha256sum sha384sum sha512sum shasum ss ssh sshd stat sum swapon sysctl systemctl systeminfo timedatectl top tracepath tracepath6 traceroute traceroute6 tune2fs udevadm ufw uname update-alternatives upower uptime vdir veracrypt vmstat w wc who xrandr zipinfo zpool)
jc_parsers=(--acpi --airport --airport-s --apt-cache-show --apt-get-sqq --arp --asciitable --asciitable-m --blkid --bluetoothctl --cbt --cef --cef-s --certbot --chage --cksum --clf --clf-s --crontab --crontab-u --csv --csv-s --curl-head --date --datetime-iso --debconf-show --df --dig --dir --dmidecode --dpkg-l --du --efibootmgr --email-address --env --ethtool --file --find --findmnt --finger --free --fstab --git-log --git-log-s --git-ls-remote --gpg --group --gshadow --hash --hashsum --hciconfig --history --host --hosts --http-headers --id --ifconfig --ini --ini-dup --iostat --iostat-s --ip-address --ipconfig --iptables --ip-route --iw-scan --iwconfig --jar-manifest --jobs --jwt --kv --kv-dup --last --ls --ls-s --lsattr --lsb-release --lsblk --lsmod --lsof --lspci --lsusb --m3u --mdadm --mount --mpstat --mpstat-s --needrestart --netstat --nmcli --nsd-control --ntpq --openvpn --os-prober --os-release --passwd --path --path-list --pci-ids --pgpass --pidstat --pidstat-s --ping --ping-s --pip-list --pip-show --pkg-index-apk --pkg-index-deb --plist --postconf --proc --proc-buddyinfo --proc-cmdline --proc-consoles --proc-cpuinfo --proc-crypto --proc-devices --proc-diskstats --proc-filesystems --proc-interrupts --proc-iomem --proc-ioports --proc-loadavg --proc-locks --proc-meminfo --proc-modules --proc-mtrr --proc-pagetypeinfo --proc-partitions --proc-slabinfo --proc-softirqs --proc-stat --proc-swaps --proc-uptime --proc-version --proc-vmallocinfo --proc-vmstat --proc-zoneinfo --proc-driver-rtc --proc-net-arp --proc-net-dev --proc-net-dev-mcast --proc-net-if-inet6 --proc-net-igmp --proc-net-igmp6 --proc-net-ipv6-route --proc-net-netlink --proc-net-netstat --proc-net-packet --proc-net-protocols --proc-net-route --proc-net-tcp --proc-net-unix --proc-pid-fdinfo --proc-pid-io --proc-pid-maps --proc-pid-mountinfo --proc-pid-numa-maps --proc-pid-smaps --proc-pid-stat --proc-pid-statm --proc-pid-status --ps --resolve-conf --route --rpm-qi --rsync --rsync-s --semver --sfdisk --shadow --srt --ss --ssh-conf --sshd-conf --stat --stat-s --swapon --sysctl --syslog --syslog-s --syslog-bsd --syslog-bsd-s --systemctl --systemctl-lj --systemctl-ls --systemctl-luf --systeminfo --time --timedatectl --timestamp --toml --top --top-s --tracepath --traceroute --tune2fs --udevadm --ufw --ufw-appinfo --uname --update-alt-gs --update-alt-q --upower --uptime --url --ver --veracrypt --vmstat --vmstat-s --w --wc --who --x509-cert --x509-csr --xml --xrandr --yaml --zipinfo --zpool-iostat --zpool-status)
jc_commands=(acpi airport apt-cache apt-get arp blkid bluetoothctl cbt certbot chage cksum crontab curl date debconf-show df dig dmidecode dpkg du efibootmgr env ethtool file findmnt finger free git gpg hciconfig host id ifconfig iostat ip ipconfig iptables iw iwconfig jobs last lastb ls lsattr lsb_release lsblk lsmod lsof lspci lsusb md5 md5sum mdadm mount mpstat needrestart netstat nmcli nsd-control ntpq os-prober pacman pidstat ping ping6 pip pip3 postconf printenv ps route rpm rsync sfdisk sha1sum sha224sum sha256sum sha384sum sha512sum shasum ss ssh sshd stat sum swapon sysctl systemctl systeminfo timedatectl top tracepath tracepath6 traceroute traceroute6 tune2fs udevadm ufw uname update-alternatives upower uptime vdir veracrypt vmstat w wc wg who xrandr zipinfo zpool)
jc_parsers=(--acpi --airport --airport-s --apt-cache-show --apt-get-sqq --arp --asciitable --asciitable-m --blkid --bluetoothctl --cbt --cef --cef-s --certbot --chage --cksum --clf --clf-s --crontab --crontab-u --csv --csv-s --curl-head --date --datetime-iso --debconf-show --df --dig --dir --dmidecode --dpkg-l --du --efibootmgr --email-address --env --ethtool --file --find --findmnt --finger --free --fstab --git-log --git-log-s --git-ls-remote --gpg --group --gshadow --hash --hashsum --hciconfig --history --host --hosts --http-headers --id --ifconfig --ini --ini-dup --iostat --iostat-s --ip-address --ipconfig --iptables --ip-route --iw-scan --iwconfig --jar-manifest --jobs --jwt --kv --kv-dup --last --ls --ls-s --lsattr --lsb-release --lsblk --lsmod --lsof --lspci --lsusb --m3u --mdadm --mount --mpstat --mpstat-s --needrestart --netstat --nmcli --nsd-control --ntpq --openvpn --os-prober --os-release --pacman --passwd --path --path-list --pci-ids --pgpass --pidstat --pidstat-s --ping --ping-s --pip-list --pip-show --pkg-index-apk --pkg-index-deb --plist --postconf --proc --proc-buddyinfo --proc-cmdline --proc-consoles --proc-cpuinfo --proc-crypto --proc-devices --proc-diskstats --proc-filesystems --proc-interrupts --proc-iomem --proc-ioports --proc-loadavg --proc-locks --proc-meminfo --proc-modules --proc-mtrr --proc-pagetypeinfo --proc-partitions --proc-slabinfo --proc-softirqs --proc-stat --proc-swaps --proc-uptime --proc-version --proc-vmallocinfo --proc-vmstat --proc-zoneinfo --proc-driver-rtc --proc-net-arp --proc-net-dev --proc-net-dev-mcast --proc-net-if-inet6 --proc-net-igmp --proc-net-igmp6 --proc-net-ipv6-route --proc-net-netlink --proc-net-netstat --proc-net-packet --proc-net-protocols --proc-net-route --proc-net-tcp --proc-net-unix --proc-pid-fdinfo --proc-pid-io --proc-pid-maps --proc-pid-mountinfo --proc-pid-numa-maps --proc-pid-smaps --proc-pid-stat --proc-pid-statm --proc-pid-status --ps --resolve-conf --route --rpm-qi --rsync --rsync-s --semver --sfdisk --shadow --srt --ss --ssh-conf --sshd-conf --stat --stat-s --swapon --sysctl --syslog --syslog-s --syslog-bsd --syslog-bsd-s --systemctl --systemctl-lj --systemctl-ls --systemctl-luf --systeminfo --time --timedatectl --timestamp --toml --top --top-s --tracepath --traceroute --tune2fs --udevadm --ufw --ufw-appinfo --uname --update-alt-gs --update-alt-q --upower --uptime --url --ver --veracrypt --vmstat --vmstat-s --w --wc --wg-show --who --x509-cert --x509-csr --xml --xrandr --yaml --zipinfo --zpool-iostat --zpool-status)
jc_options=(--force-color -C --debug -d --monochrome -m --meta-out -M --pretty -p --quiet -q --raw -r --slurp -s --unbuffer -u --yaml-out -y)
jc_about_options=(--about -a)
jc_about_mod_options=(--pretty -p --yaml-out -y --monochrome -m --force-color -C)

View File

@ -9,7 +9,7 @@ _jc() {
jc_help_options jc_help_options_describe \
jc_special_options jc_special_options_describe
jc_commands=(acpi airport apt-cache apt-get arp blkid bluetoothctl cbt certbot chage cksum crontab curl date debconf-show df dig dmidecode dpkg du efibootmgr env ethtool file findmnt finger free git gpg hciconfig host id ifconfig iostat ip ipconfig iptables iw iwconfig jobs last lastb ls lsattr lsb_release lsblk lsmod lsof lspci lsusb md5 md5sum mdadm mount mpstat needrestart netstat nmcli nsd-control ntpq os-prober pidstat ping ping6 pip pip3 postconf printenv ps route rpm rsync sfdisk sha1sum sha224sum sha256sum sha384sum sha512sum shasum ss ssh sshd stat sum swapon sysctl systemctl systeminfo timedatectl top tracepath tracepath6 traceroute traceroute6 tune2fs udevadm ufw uname update-alternatives upower uptime vdir veracrypt vmstat w wc who xrandr zipinfo zpool)
jc_commands=(acpi airport apt-cache apt-get arp blkid bluetoothctl cbt certbot chage cksum crontab curl date debconf-show df dig dmidecode dpkg du efibootmgr env ethtool file findmnt finger free git gpg hciconfig host id ifconfig iostat ip ipconfig iptables iw iwconfig jobs last lastb ls lsattr lsb_release lsblk lsmod lsof lspci lsusb md5 md5sum mdadm mount mpstat needrestart netstat nmcli nsd-control ntpq os-prober pacman pidstat ping ping6 pip pip3 postconf printenv ps route rpm rsync sfdisk sha1sum sha224sum sha256sum sha384sum sha512sum shasum ss ssh sshd stat sum swapon sysctl systemctl systeminfo timedatectl top tracepath tracepath6 traceroute traceroute6 tune2fs udevadm ufw uname update-alternatives upower uptime vdir veracrypt vmstat w wc wg who xrandr zipinfo zpool)
jc_commands_describe=(
'acpi:run "acpi" command with magic syntax.'
'airport:run "airport" command with magic syntax.'
@ -72,6 +72,7 @@ _jc() {
'nsd-control:run "nsd-control" command with magic syntax.'
'ntpq:run "ntpq" command with magic syntax.'
'os-prober:run "os-prober" command with magic syntax.'
'pacman:run "pacman" command with magic syntax.'
'pidstat:run "pidstat" command with magic syntax.'
'ping:run "ping" command with magic syntax.'
'ping6:run "ping6" command with magic syntax.'
@ -117,12 +118,13 @@ _jc() {
'vmstat:run "vmstat" command with magic syntax.'
'w:run "w" command with magic syntax.'
'wc:run "wc" command with magic syntax.'
'wg:run "wg" command with magic syntax.'
'who:run "who" command with magic syntax.'
'xrandr:run "xrandr" command with magic syntax.'
'zipinfo:run "zipinfo" command with magic syntax.'
'zpool:run "zpool" command with magic syntax.'
)
jc_parsers=(--acpi --airport --airport-s --apt-cache-show --apt-get-sqq --arp --asciitable --asciitable-m --blkid --bluetoothctl --cbt --cef --cef-s --certbot --chage --cksum --clf --clf-s --crontab --crontab-u --csv --csv-s --curl-head --date --datetime-iso --debconf-show --df --dig --dir --dmidecode --dpkg-l --du --efibootmgr --email-address --env --ethtool --file --find --findmnt --finger --free --fstab --git-log --git-log-s --git-ls-remote --gpg --group --gshadow --hash --hashsum --hciconfig --history --host --hosts --http-headers --id --ifconfig --ini --ini-dup --iostat --iostat-s --ip-address --ipconfig --iptables --ip-route --iw-scan --iwconfig --jar-manifest --jobs --jwt --kv --kv-dup --last --ls --ls-s --lsattr --lsb-release --lsblk --lsmod --lsof --lspci --lsusb --m3u --mdadm --mount --mpstat --mpstat-s --needrestart --netstat --nmcli --nsd-control --ntpq --openvpn --os-prober --os-release --passwd --path --path-list --pci-ids --pgpass --pidstat --pidstat-s --ping --ping-s --pip-list --pip-show --pkg-index-apk --pkg-index-deb --plist --postconf --proc --proc-buddyinfo --proc-cmdline --proc-consoles --proc-cpuinfo --proc-crypto --proc-devices --proc-diskstats --proc-filesystems --proc-interrupts --proc-iomem --proc-ioports --proc-loadavg --proc-locks --proc-meminfo --proc-modules --proc-mtrr --proc-pagetypeinfo --proc-partitions --proc-slabinfo --proc-softirqs --proc-stat --proc-swaps --proc-uptime --proc-version --proc-vmallocinfo --proc-vmstat --proc-zoneinfo --proc-driver-rtc --proc-net-arp --proc-net-dev --proc-net-dev-mcast --proc-net-if-inet6 --proc-net-igmp --proc-net-igmp6 --proc-net-ipv6-route --proc-net-netlink --proc-net-netstat --proc-net-packet --proc-net-protocols --proc-net-route --proc-net-tcp --proc-net-unix --proc-pid-fdinfo --proc-pid-io --proc-pid-maps --proc-pid-mountinfo --proc-pid-numa-maps --proc-pid-smaps --proc-pid-stat --proc-pid-statm --proc-pid-status --ps --resolve-conf --route --rpm-qi --rsync --rsync-s --semver --sfdisk --shadow --srt --ss --ssh-conf --sshd-conf --stat --stat-s --swapon --sysctl --syslog --syslog-s --syslog-bsd --syslog-bsd-s --systemctl --systemctl-lj --systemctl-ls --systemctl-luf --systeminfo --time --timedatectl --timestamp --toml --top --top-s --tracepath --traceroute --tune2fs --udevadm --ufw --ufw-appinfo --uname --update-alt-gs --update-alt-q --upower --uptime --url --ver --veracrypt --vmstat --vmstat-s --w --wc --who --x509-cert --x509-csr --xml --xrandr --yaml --zipinfo --zpool-iostat --zpool-status)
jc_parsers=(--acpi --airport --airport-s --apt-cache-show --apt-get-sqq --arp --asciitable --asciitable-m --blkid --bluetoothctl --cbt --cef --cef-s --certbot --chage --cksum --clf --clf-s --crontab --crontab-u --csv --csv-s --curl-head --date --datetime-iso --debconf-show --df --dig --dir --dmidecode --dpkg-l --du --efibootmgr --email-address --env --ethtool --file --find --findmnt --finger --free --fstab --git-log --git-log-s --git-ls-remote --gpg --group --gshadow --hash --hashsum --hciconfig --history --host --hosts --http-headers --id --ifconfig --ini --ini-dup --iostat --iostat-s --ip-address --ipconfig --iptables --ip-route --iw-scan --iwconfig --jar-manifest --jobs --jwt --kv --kv-dup --last --ls --ls-s --lsattr --lsb-release --lsblk --lsmod --lsof --lspci --lsusb --m3u --mdadm --mount --mpstat --mpstat-s --needrestart --netstat --nmcli --nsd-control --ntpq --openvpn --os-prober --os-release --pacman --passwd --path --path-list --pci-ids --pgpass --pidstat --pidstat-s --ping --ping-s --pip-list --pip-show --pkg-index-apk --pkg-index-deb --plist --postconf --proc --proc-buddyinfo --proc-cmdline --proc-consoles --proc-cpuinfo --proc-crypto --proc-devices --proc-diskstats --proc-filesystems --proc-interrupts --proc-iomem --proc-ioports --proc-loadavg --proc-locks --proc-meminfo --proc-modules --proc-mtrr --proc-pagetypeinfo --proc-partitions --proc-slabinfo --proc-softirqs --proc-stat --proc-swaps --proc-uptime --proc-version --proc-vmallocinfo --proc-vmstat --proc-zoneinfo --proc-driver-rtc --proc-net-arp --proc-net-dev --proc-net-dev-mcast --proc-net-if-inet6 --proc-net-igmp --proc-net-igmp6 --proc-net-ipv6-route --proc-net-netlink --proc-net-netstat --proc-net-packet --proc-net-protocols --proc-net-route --proc-net-tcp --proc-net-unix --proc-pid-fdinfo --proc-pid-io --proc-pid-maps --proc-pid-mountinfo --proc-pid-numa-maps --proc-pid-smaps --proc-pid-stat --proc-pid-statm --proc-pid-status --ps --resolve-conf --route --rpm-qi --rsync --rsync-s --semver --sfdisk --shadow --srt --ss --ssh-conf --sshd-conf --stat --stat-s --swapon --sysctl --syslog --syslog-s --syslog-bsd --syslog-bsd-s --systemctl --systemctl-lj --systemctl-ls --systemctl-luf --systeminfo --time --timedatectl --timestamp --toml --top --top-s --tracepath --traceroute --tune2fs --udevadm --ufw --ufw-appinfo --uname --update-alt-gs --update-alt-q --upower --uptime --url --ver --veracrypt --vmstat --vmstat-s --w --wc --wg-show --who --x509-cert --x509-csr --xml --xrandr --yaml --zipinfo --zpool-iostat --zpool-status)
jc_parsers_describe=(
'--acpi:`acpi` command parser'
'--airport:`airport -I` command parser'
@ -219,6 +221,7 @@ _jc() {
'--openvpn:openvpn-status.log file parser'
'--os-prober:`os-prober` command parser'
'--os-release:`/etc/os-release` file parser'
'--pacman:`pacman` command parser'
'--passwd:`/etc/passwd` file parser'
'--path:POSIX path string parser'
'--path-list:POSIX path list string parser'
@ -336,6 +339,7 @@ _jc() {
'--vmstat-s:`vmstat` command streaming parser'
'--w:`w` command parser'
'--wc:`wc` command parser'
'--wg-show:`wg show` command parser'
'--who:`who` command parser'
'--x509-cert:X.509 PEM and DER certificate file parser'
'--x509-csr:X.509 PEM and DER certificate request file parser'

View File

@ -25,7 +25,7 @@ Schema:
"ip_routing_enabled": boolean,
"wins_proxy_enabled": boolean,
"dns_suffix_search_list": [
string
string
],
"adapters": [
{
@ -56,7 +56,7 @@ Schema:
{
"address": string,
"status": string,
"prefix_length": int,
"prefix_length": integer,
}
],
"ipv4_addresses": [
@ -77,12 +77,16 @@ Schema:
string
],
"primary_wins_server": string,
"lease_expires": string, # [0]
"lease_obtained": string, # [0]
"lease_expires": string,
"lease_expires_epoch": integer, # [0]
"lease_expires_iso": string,
"lease_obtained": string,
"lease_obtained_epoch": integer, # [0]
"lease_obtained_iso": string,
"netbios_over_tcpip": boolean,
"media_state": string,
"extras": [
string: string
<string>: string
]
}
],
@ -90,9 +94,8 @@ Schema:
}
Notes:
[0] - 'lease_expires' and 'lease_obtained' are parsed to ISO8601
format date strings. if the value was unable to be parsed by
datetime, the fields will be in their raw form
[0] - The epoch calculated timestamp field is naive. (i.e. based on
the local time of the system the parser is run on)
[1] - 'autoconfigured' under 'ipv4_address' is only providing
indication if the ipv4 address was labeled as "Autoconfiguration
IPv4 Address" vs "IPv4 Address". It does not infer any

View File

@ -146,4 +146,4 @@ Compatibility: linux
Source: [`jc/parsers/iw_scan.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/iw_scan.py)
Version 0.7 by Kelly Brazil (kellyjonbrazil@gmail.com)
Version 0.75 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@ -380,4 +380,4 @@ Compatibility: linux, darwin, freebsd, win32
Source: [`jc/parsers/netstat.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/netstat.py)
Version 1.15 by Kelly Brazil (kellyjonbrazil@gmail.com)
Version 1.16 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@ -22,20 +22,24 @@ Schema:
[
{
"version": string,
"verbosity": integer,
"ratelimit": integer
"version": string,
"verbosity": integer,
"ratelimit": integer
}
]
[
{
"zone": string
"zone": string
"status": {
"state": string,
"served-serial": string,
"commit-serial": string,
"wait": string
"state": string,
"pattern": string, # Additional
"catalog-member-id": string, # Additional
"served-serial": string,
"commit-serial": string,
"notified-serial": string, # Conditional
"wait": string,
"transfer": string # Conditional
}
}
]
@ -89,4 +93,4 @@ Compatibility: linux, darwin, cygwin, win32, aix, freebsd
Source: [`jc/parsers/nsd_control.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/nsd_control.py)
Version 1.1 by Pettai (pettai@sunet.se)
Version 1.2 by Pettai (pettai@sunet.se)

208
docs/parsers/pacman.md Normal file
View File

@ -0,0 +1,208 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.pacman"></a>
# jc.parsers.pacman
jc - JSON Convert `pacman` command output parser
Supports the following `pacman` arguments:
- `-Si`
- `-Sii`
- `-Qi`
- `-Qii`
The `*_epoch` calculated timestamp fields are naive. (i.e. based on the
local time of the system the parser is run on)
Usage (cli):
$ pacman -Si <package> | jc --pacman
or
$ jc pacman -Si <package>
Usage (module):
import jc
result = jc.parse('pacman', pacman_command_output)
Schema:
[
{
"repository": string,
"name": string,
"version": string,
"description": string,
"architecture": string,
"url": string,
"licenses": [
string
],
"groups": [
string
],
"provides": [
string
],
"depends_on": [
string
],
"optional_deps": [
{
"name": string,
"description": string
}
],
"optional_for": [
string
],
"conflicts_with": [
string
],
"replaces": [
string
],
"download_size": string,
"download_size_bytes": integer [0]
"installed_size": string,
"installed_size_bytes": integer, [0]
"packager": string,
"build_date": string,
"build_date_epoch": integer, [0]
"install_date": string,
"install_date_epoch": integer, [0]
"validated_by": [
string
],
"backup_files": [
string
]
}
]
[0] Field exists if conversion successful
Examples:
$ pacman -qii zstd | jc --pacman -p
[
{
"name": "zstd",
"version": "1.5.6-1",
"description": "Zstandard - Fast real-time compression algorithm",
"architecture": "x86_64",
"url": "https://facebook.github.io/zstd/",
"licenses": [
"BSD-3-Clause",
"GPL-2.0-only"
],
"groups": [],
"provides": [
"libzstd.so=1-64"
],
"depends_on": [
"glibc",
"gcc-libs",
"zlib",
"xz",
"lz4"
],
"required_by": [
"android-tools",
"appstream",
...
"tiled",
"vulkan-radeon",
"wireshark-cli"
],
"optional_for": [
"xarchiver"
],
"conflicts_with": [],
"replaces": [],
"installed_size": "1527.00 KiB",
"installed_size_bytes": 1563648,
"packager": "Levente Polyak <anthraxx@archlinux.org>",
"build_date": "Sat 11 May 2024 06:14:19 AM +08",
"build_date_epoch": 1715433259,
"install_date": "Fri 24 May 2024 09:50:31 AM +08",
"install_date_epoch": 1715663342,
"install_reason": "Installed as a dependency for another package",
"install_script": "No",
"validated_by": [
"Signature"
],
"extended_data": "pkgtype=pkg"
}
]
$ pacman -qii zstd | jc --pacman -p -r
[
{
"name": "zstd",
"version": "1.5.6-1",
"description": "Zstandard - Fast real-time compression algorithm",
"architecture": "x86_64",
"url": "https://facebook.github.io/zstd/",
"licenses": "BSD-3-Clause GPL-2.0-only",
"groups": null,
"provides": "libzstd.so=1-64",
"depends_on": "glibc gcc-libs zlib xz lz4",
"required_by": [
"android-tools appstream avr-gcc binutils blender blosc",
"boost-libs btrfs-progs cloudflare-warp-bin comgr curl",
"dolphin-emu file flatpak gcc gdal gnutls karchive",
"karchive5 kmod lib32-zstd libarchive libelf libtiff",
"libva-mesa-driver libxmlb libzip lld llvm-libs mariadb-libs",
"mesa mesa-vdpau minizip-ng mkinitcpio mold netcdf",
"opencl-clover-mesa opencl-rusticl-mesa openucx postgresql",
"postgresql-libs ppsspp qemu-img qemu-system-riscv",
"qemu-system-x86 qgis qt6-base qt6-tools rsync rustup",
"squashfs-tools squashfuse systemd-libs tiled vulkan-radeon",
"wireshark-cli"
],
"optional_for": "xarchiver",
"conflicts_with": null,
"replaces": null,
"installed_size": "1527.00 KiB",
"packager": "Levente Polyak <anthraxx@archlinux.org>",
"build_date": "Sat 11 May 2024 06:14:19 AM +08",
"install_date": "Fri 24 May 2024 09:50:31 AM +08",
"install_reason": "Installed as a dependency for another package",
"install_script": "No",
"validated_by": "Signature",
"extended_data": "pkgtype=pkg"
}
]
<a id="jc.parsers.pacman.parse"></a>
### parse
```python
def parse(data: str,
raw: bool = False,
quiet: bool = False) -> List[Dict[str, Any]]
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
Source: [`jc/parsers/pacman.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/pacman.py)
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@ -210,4 +210,4 @@ Compatibility: linux
Source: [`jc/parsers/rpm_qi.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/rpm_qi.py)
Version 1.8 by Kelly Brazil (kellyjonbrazil@gmail.com)
Version 1.9 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@ -145,4 +145,4 @@ Compatibility: linux, darwin, freebsd
Source: [`jc/parsers/traceroute.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/traceroute.py)
Version 1.7 by Kelly Brazil (kellyjonbrazil@gmail.com)
Version 1.8 by Kelly Brazil (kellyjonbrazil@gmail.com)

172
docs/parsers/wg_show.md Normal file
View File

@ -0,0 +1,172 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.wg_show"></a>
# jc.parsers.wg_show
jc - JSON Convert `wg show` command output parser
Parses the output of the `wg show all dump` command, providing structured JSON output for easy integration and analysis.
Usage (cli):
$ wg show all dump | jc --wg-show
or
$ jc wg show all dump
Usage (module):
import jc
result = jc.parse('wg-show', wg_command_output)
Schema:
[
{
"device": string,
"private_key": string,
"public_key": string,
"listen_port": integer,
"fwmark": integer,
"peers": [
{
"public_key": string,
"preshared_key": string,
"endpoint": string,
"latest_handshake": integer,
"transfer_rx": integer,
"transfer_sx": integer,
"persistent_keepalive": integer,
"allowed_ips": [
string
]
}
]
}
]
Examples:
$ wg show all dump | jc --wg-show -p
[
{
"device": "wg0",
"private_key": "aEbVdvHSEp3oofHDNVCsUoaRSxk1Og8/pTLof5yF+1M=",
"public_key": "OIxbQszw1chdO5uigAxpsl4fc/h04yMYafl72gUbakM=",
"listen_port": 51820,
"fwmark": null,
"peers": [
{
"public_key": "sQFGAhSdx0aC7DmTFojzBOW8Ccjv1XV5+N9FnkZu5zc=",
"preshared_key": null,
"endpoint": "79.134.136.199:40036",
"latest_handshake": 1728809756,
"transfer_rx": 1378724,
"transfer_sx": 406524,
"persistent_keepalive": null,
"allowed_ips": ["10.10.0.2/32"]
},
{
"public_key": "B9csmpvrv4Q7gpjc6zAbNNO8hIOYfpBqxmik2aNpwwE=",
"preshared_key": null,
"endpoint": "79.134.136.199:35946",
"latest_handshake": 1728809756,
"transfer_rx": 4884248,
"transfer_sx": 3544596,
"persistent_keepalive": null,
"allowed_ips": ["10.10.0.3/32"]
},
{
"public_key": "miiSYR5UdevREhlWpmnci+vv/dEGLHbNtKu7u1CuOD4=",
"preshared_key": null,
"allowed_ips": ["10.10.0.4/32"]
},
{
"public_key": "gx9+JHLHJvOfBNjTmZ8KQAnThFFiZMQrX1kRaYcIYzw=",
"preshared_key": null,
"endpoint": "173.244.225.194:45014",
"latest_handshake": 1728809827,
"transfer_rx": 1363652,
"transfer_sx": 458252,
"persistent_keepalive": null,
"allowed_ips": ["10.10.0.5/32"]
}
]
}
]
$ wg show all dump | jc --wg-show -p -r
[
{
"device": "wg0",
"private_key": "aEbVdvHSEp3oofHDNVCsUoaRSxk1Og8/pTLof5yF+1M=",
"public_key": "OIxbQszw1chdO5uigAxpsl4fc/h04yMYafl72gUbakM=",
"listen_port": 51820,
"fwmark": null,
"peers": {
"sQFGAhSdx0aC7DmTFojzBOW8Ccjv1XV5+N9FnkZu5zc=": {
"preshared_key": null,
"endpoint": "79.134.136.199:40036",
"latest_handshake": 1728809756,
"transfer_rx": 1378724,
"transfer_sx": 406524,
"persistent_keepalive": -1,
"allowed_ips": ["10.10.0.2/32"]
},
"B9csmpvrv4Q7gpjc6zAbNNO8hIOYfpBqxmik2aNpwwE=": {
"preshared_key": null,
"endpoint": "79.134.136.199:35946",
"latest_handshake": 1728809756,
"transfer_rx": 4884248,
"transfer_sx": 3544596,
"persistent_keepalive": -1,
"allowed_ips": ["10.10.0.3/32"]
},
"miiSYR5UdevREhlWpmnci+vv/dEGLHbNtKu7u1CuOD4=": {
"preshared_key": null,
"allowed_ips": ["10.10.0.4/32"]
},
"gx9+JHLHJvOfBNjTmZ8KQAnThFFiZMQrX1kRaYcIYzw=": {
"preshared_key": null,
"endpoint": "173.244.225.194:45014",
"latest_handshake": 1728809827,
"transfer_rx": 1363652,
"transfer_sx": 458252,
"persistent_keepalive": -1,
"allowed_ips": ["10.10.0.5/32"]
}
}
}
]
<a id="jc.parsers.wg_show.parse"></a>
### parse
```python
def parse(data: str,
raw: bool = False,
quiet: bool = False) -> List[Dict[str, Any]]
```
Main text parsing function.
Parses the output of the `wg` command, specifically `wg show all dump`, into structured JSON format.
Parameters:
data: (str) Text data to parse, typically the output from `wg show all dump`
raw: (bool) If True, returns unprocessed output
quiet: (bool) Suppress warning messages if True
Returns:
List[Dict]: Parsed data in JSON-friendly format, either raw or processed.
### Parser Information
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
Source: [`jc/parsers/wg_show.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/wg_show.py)
Version 1.0 by Hamza Saht (hamzasaht01@gmail.com)

View File

@ -111,4 +111,4 @@ Compatibility: linux, darwin, cygwin, win32, aix, freebsd
Source: [`jc/parsers/yaml.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/yaml.py)
Version 1.7 by Kelly Brazil (kellyjonbrazil@gmail.com)
Version 1.8 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@ -109,6 +109,7 @@ parsers: List[str] = [
'openvpn',
'os-prober',
'os-release',
'pacman',
'passwd',
'path',
'path-list',
@ -226,6 +227,7 @@ parsers: List[str] = [
'vmstat-s',
'w',
'wc',
'wg-show',
'who',
'x509-cert',
'x509-csr',

View File

@ -122,7 +122,7 @@ import jc.utils
class info():
"""Provides parser metadata (version, author, etc.)"""
version = '0.7'
version = '0.75'
description = '`iw dev [device] scan` command parser'
author = 'Kelly Brazil'
author_email = 'kellyjonbrazil@gmail.com'
@ -298,6 +298,7 @@ def parse(data, raw=False, quiet=False):
raw_output = []
section = {}
header = ''
if jc.utils.has_data(data):
@ -323,7 +324,9 @@ def parse(data, raw=False, quiet=False):
split_line[0] = split_line[0].lower().replace('*', '').replace('(', '')\
.replace(')', '').replace(',', '').replace('-', '_')\
.strip().replace(' ', '_')
section[split_line[0]] = split_line[1].strip()
if split_line[1] == '':
header = split_line[0] + '_'
section[header + split_line[0]] = split_line[1].strip()
continue

348
jc/parsers/pacman.py Normal file
View File

@ -0,0 +1,348 @@
r"""jc - JSON Convert `pacman` command output parser
Supports the following `pacman` arguments:
- `-Si`
- `-Sii`
- `-Qi`
- `-Qii`
The `*_epoch` calculated timestamp fields are naive. (i.e. based on the
local time of the system the parser is run on)
Usage (cli):
$ pacman -Si <package> | jc --pacman
or
$ jc pacman -Si <package>
Usage (module):
import jc
result = jc.parse('pacman', pacman_command_output)
Schema:
[
{
"repository": string,
"name": string,
"version": string,
"description": string,
"architecture": string,
"url": string,
"licenses": [
string
],
"groups": [
string
],
"provides": [
string
],
"depends_on": [
string
],
"optional_deps": [
{
"name": string,
"description": string
}
],
"optional_for": [
string
],
"conflicts_with": [
string
],
"replaces": [
string
],
"download_size": string,
"download_size_bytes": integer [0]
"installed_size": string,
"installed_size_bytes": integer, [0]
"packager": string,
"build_date": string,
"build_date_epoch": integer, [0]
"install_date": string,
"install_date_epoch": integer, [0]
"validated_by": [
string
],
"backup_files": [
string
]
}
]
[0] Field exists if conversion successful
Examples:
$ pacman -qii zstd | jc --pacman -p
[
{
"name": "zstd",
"version": "1.5.6-1",
"description": "Zstandard - Fast real-time compression algorithm",
"architecture": "x86_64",
"url": "https://facebook.github.io/zstd/",
"licenses": [
"BSD-3-Clause",
"GPL-2.0-only"
],
"groups": [],
"provides": [
"libzstd.so=1-64"
],
"depends_on": [
"glibc",
"gcc-libs",
"zlib",
"xz",
"lz4"
],
"required_by": [
"android-tools",
"appstream",
...
"tiled",
"vulkan-radeon",
"wireshark-cli"
],
"optional_for": [
"xarchiver"
],
"conflicts_with": [],
"replaces": [],
"installed_size": "1527.00 KiB",
"installed_size_bytes": 1563648,
"packager": "Levente Polyak <anthraxx@archlinux.org>",
"build_date": "Sat 11 May 2024 06:14:19 AM +08",
"build_date_epoch": 1715433259,
"install_date": "Fri 24 May 2024 09:50:31 AM +08",
"install_date_epoch": 1715663342,
"install_reason": "Installed as a dependency for another package",
"install_script": "No",
"validated_by": [
"Signature"
],
"extended_data": "pkgtype=pkg"
}
]
$ pacman -qii zstd | jc --pacman -p -r
[
{
"name": "zstd",
"version": "1.5.6-1",
"description": "Zstandard - Fast real-time compression algorithm",
"architecture": "x86_64",
"url": "https://facebook.github.io/zstd/",
"licenses": "BSD-3-Clause GPL-2.0-only",
"groups": null,
"provides": "libzstd.so=1-64",
"depends_on": "glibc gcc-libs zlib xz lz4",
"required_by": [
"android-tools appstream avr-gcc binutils blender blosc",
"boost-libs btrfs-progs cloudflare-warp-bin comgr curl",
"dolphin-emu file flatpak gcc gdal gnutls karchive",
"karchive5 kmod lib32-zstd libarchive libelf libtiff",
"libva-mesa-driver libxmlb libzip lld llvm-libs mariadb-libs",
"mesa mesa-vdpau minizip-ng mkinitcpio mold netcdf",
"opencl-clover-mesa opencl-rusticl-mesa openucx postgresql",
"postgresql-libs ppsspp qemu-img qemu-system-riscv",
"qemu-system-x86 qgis qt6-base qt6-tools rsync rustup",
"squashfs-tools squashfuse systemd-libs tiled vulkan-radeon",
"wireshark-cli"
],
"optional_for": "xarchiver",
"conflicts_with": null,
"replaces": null,
"installed_size": "1527.00 KiB",
"packager": "Levente Polyak <anthraxx@archlinux.org>",
"build_date": "Sat 11 May 2024 06:14:19 AM +08",
"install_date": "Fri 24 May 2024 09:50:31 AM +08",
"install_reason": "Installed as a dependency for another package",
"install_script": "No",
"validated_by": "Signature",
"extended_data": "pkgtype=pkg"
}
]
"""
from typing import List, Dict
from jc.jc_types import JSONDictType
import jc.utils
class info():
"""Provides parser metadata (version, author, etc.)"""
version = '1.0'
description = '`pacman` command parser'
author = 'Kelly Brazil'
author_email = 'kellyjonbrazil@gmail.com'
compatible = ['linux', 'darwin', 'cygwin', 'win32', 'aix', 'freebsd']
tags = ['command', 'file']
magic_commands = ['pacman']
__version__ = info.version
def _process(proc_data: List[JSONDictType]) -> List[JSONDictType]:
"""
Final processing to conform to the schema.
Parameters:
proc_data: (List of Dictionaries) raw structured data to process
Returns:
List of Dictionaries. Structured to conform to the schema.
"""
split_fields = {
'licenses', 'groups', 'provides', 'depends_on', 'conflicts_with',
'replaces', 'optional_for'
}
space_split_fields = {
'required_by', 'groups', 'provides', 'depends_on',
'conflicts_with', 'replaces', 'validated_by'
}
two_space_fields = {'licenses', 'validated_by'}
name_description_fields = {'optional_deps'}
size_fields = {'download_size', 'installed_size'}
date_fields = {'build_date', 'install_date'}
# initial split for field lists
for item in proc_data:
for key, val in item.copy().items():
if key in split_fields:
if val is None:
item[key] = []
else:
item[key] = val.split()
# fixup for specific lists
if key in space_split_fields and isinstance(val, List):
val_list = [x.split() for x in val]
item[key] = [x for xs in val_list for x in xs] # flatten the list
if key in two_space_fields and isinstance(val, str):
item[key] = val.split(' ')
if key in name_description_fields and isinstance(val, list):
new_list = []
for name_desc in val:
n, *d = name_desc.split(': ')
if d == []:
d = ''
else:
d = d[0]
new_obj = {'name': n, 'description': d}
new_list.append(new_obj)
item[key] = new_list
if key in size_fields:
bts = jc.utils.convert_size_to_int(val)
if bts:
item[key + '_bytes'] = bts
if key in date_fields:
# need to append '00' to date for conversion
ts = jc.utils.timestamp(val + '00', format_hint=(3100,))
if ts.naive:
item[key + '_epoch'] = ts.naive
else:
# try taking off the text TZ identifier
ts = jc.utils.timestamp(val[:-4], format_hint=(3000,))
if ts.naive:
item[key + '_epoch'] = ts.naive
return proc_data
def parse(
data: str,
raw: bool = False,
quiet: bool = False
) -> List[JSONDictType]:
"""
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
"""
jc.utils.compatibility(__name__, info.compatible, quiet)
jc.utils.input_type_check(data)
raw_output: List[Dict] = []
entry_obj: Dict = {}
multiline_fields = {'required_by', 'optional_deps', 'backup_files'}
multiline_list: List = []
multiline_key = ''
if jc.utils.has_data(data):
for line in filter(None, data.splitlines()):
splitline = line.split(' : ', maxsplit=1)
if len(splitline) == 2:
# this is a key/value pair
key, val = splitline
key = key.strip()
key = jc.utils.normalize_key(key)
val = val.strip()
# new entries can start with "Repository" or "Name"
if (key == 'name' or key == 'repository') and len(entry_obj) > 2:
if multiline_list:
entry_obj[multiline_key] = multiline_list
multiline_list = []
multiline_key = ''
if entry_obj:
raw_output.append(entry_obj)
entry_obj = {}
entry_obj[key] = val
continue
if key in multiline_fields:
if multiline_list:
entry_obj[multiline_key] = multiline_list
multiline_list = []
if val != 'None':
multiline_list.append(val)
multiline_key = key
continue
if key not in multiline_fields:
if multiline_list:
entry_obj[multiline_key] = multiline_list
multiline_list = []
multiline_key = ''
entry_obj[key] = val if val != 'None' else None
continue
# multiline field continuation lines
multiline_list.append(line.strip())
continue
# grab the last entry
if entry_obj:
if multiline_list:
entry_obj[multiline_key] = multiline_list
multiline_list = []
multiline_key = ''
raw_output.append(entry_obj)
return raw_output if raw else _process(raw_output)

273
jc/parsers/wg_show.py Normal file
View File

@ -0,0 +1,273 @@
r"""jc - JSON Convert `wg show` command output parser
Parses the output of the `wg show all dump` command, providing structured JSON output for easy integration and analysis.
Usage (cli):
$ wg show all dump | jc --wg-show
or
$ jc wg show all dump
Usage (module):
import jc
result = jc.parse('wg-show', wg_command_output)
Schema:
[
{
"device": string,
"private_key": string,
"public_key": string,
"listen_port": integer,
"fwmark": integer,
"peers": [
{
"public_key": string,
"preshared_key": string,
"endpoint": string,
"latest_handshake": integer,
"transfer_rx": integer,
"transfer_sx": integer,
"persistent_keepalive": integer,
"allowed_ips": [
string
]
}
]
}
]
Examples:
$ wg show all dump | jc --wg-show -p
[
{
"device": "wg0",
"private_key": "aEbVdvHSEp3oofHDNVCsUoaRSxk1Og8/pTLof5yF+1M=",
"public_key": "OIxbQszw1chdO5uigAxpsl4fc/h04yMYafl72gUbakM=",
"listen_port": 51820,
"fwmark": null,
"peers": [
{
"public_key": "sQFGAhSdx0aC7DmTFojzBOW8Ccjv1XV5+N9FnkZu5zc=",
"preshared_key": null,
"endpoint": "79.134.136.199:40036",
"latest_handshake": 1728809756,
"transfer_rx": 1378724,
"transfer_sx": 406524,
"persistent_keepalive": null,
"allowed_ips": ["10.10.0.2/32"]
},
{
"public_key": "B9csmpvrv4Q7gpjc6zAbNNO8hIOYfpBqxmik2aNpwwE=",
"preshared_key": null,
"endpoint": "79.134.136.199:35946",
"latest_handshake": 1728809756,
"transfer_rx": 4884248,
"transfer_sx": 3544596,
"persistent_keepalive": null,
"allowed_ips": ["10.10.0.3/32"]
},
{
"public_key": "miiSYR5UdevREhlWpmnci+vv/dEGLHbNtKu7u1CuOD4=",
"preshared_key": null,
"allowed_ips": ["10.10.0.4/32"]
},
{
"public_key": "gx9+JHLHJvOfBNjTmZ8KQAnThFFiZMQrX1kRaYcIYzw=",
"preshared_key": null,
"endpoint": "173.244.225.194:45014",
"latest_handshake": 1728809827,
"transfer_rx": 1363652,
"transfer_sx": 458252,
"persistent_keepalive": null,
"allowed_ips": ["10.10.0.5/32"]
}
]
}
]
$ wg show all dump | jc --wg-show -p -r
[
{
"device": "wg0",
"private_key": "aEbVdvHSEp3oofHDNVCsUoaRSxk1Og8/pTLof5yF+1M=",
"public_key": "OIxbQszw1chdO5uigAxpsl4fc/h04yMYafl72gUbakM=",
"listen_port": 51820,
"fwmark": null,
"peers": {
"sQFGAhSdx0aC7DmTFojzBOW8Ccjv1XV5+N9FnkZu5zc=": {
"preshared_key": null,
"endpoint": "79.134.136.199:40036",
"latest_handshake": 1728809756,
"transfer_rx": 1378724,
"transfer_sx": 406524,
"persistent_keepalive": -1,
"allowed_ips": ["10.10.0.2/32"]
},
"B9csmpvrv4Q7gpjc6zAbNNO8hIOYfpBqxmik2aNpwwE=": {
"preshared_key": null,
"endpoint": "79.134.136.199:35946",
"latest_handshake": 1728809756,
"transfer_rx": 4884248,
"transfer_sx": 3544596,
"persistent_keepalive": -1,
"allowed_ips": ["10.10.0.3/32"]
},
"miiSYR5UdevREhlWpmnci+vv/dEGLHbNtKu7u1CuOD4=": {
"preshared_key": null,
"allowed_ips": ["10.10.0.4/32"]
},
"gx9+JHLHJvOfBNjTmZ8KQAnThFFiZMQrX1kRaYcIYzw=": {
"preshared_key": null,
"endpoint": "173.244.225.194:45014",
"latest_handshake": 1728809827,
"transfer_rx": 1363652,
"transfer_sx": 458252,
"persistent_keepalive": -1,
"allowed_ips": ["10.10.0.5/32"]
}
}
}
]
"""
from typing import List, Dict, Optional, Union
from jc.jc_types import JSONDictType
import jc.utils
import re
PeerData = Dict[str, Union[Optional[str], Optional[int], List[str]]]
DeviceData = Dict[str, Union[Optional[str], Optional[int], Dict[str, PeerData]]]
class info:
"""Provides parser metadata (version, author, etc.)"""
version = "1.0"
description = "`wg show` command parser"
author = "Hamza Saht"
author_email = "hamzasaht01@gmail.com"
compatible = ["linux", "darwin", "cygwin", "win32", "aix", "freebsd"]
tags = ["command"]
magic_commands = ["wg show"]
__version__ = info.version
def _process(proc_data: List[DeviceData]) -> List[JSONDictType]:
"""
Final processing to conform to the schema.
Parameters:
proc_data: (List[Dict]) Raw structured data to process
Returns:
List[Dict]: Structured data that conforms to the schema
"""
processed_data: List[JSONDictType] = []
for device in proc_data:
processed_device = {
"device": device["device"],
"private_key": device.get("private_key"),
"public_key": device.get("public_key"),
"listen_port": device.get("listen_port"),
"fwmark": device.get("fwmark"),
"peers": [
{
"public_key": peer_key,
"preshared_key": peer_data.get("preshared_key"),
"endpoint": peer_data.get("endpoint"),
"latest_handshake": peer_data.get("latest_handshake", 0),
"transfer_rx": peer_data.get("transfer_rx", 0),
"transfer_sx": peer_data.get("transfer_sx", 0),
"persistent_keepalive": peer_data.get("persistent_keepalive", -1),
"allowed_ips": peer_data.get("allowed_ips", []),
}
for peer_key, peer_data in device.get("peers", {}).items()
],
}
processed_data.append(processed_device)
return processed_data
def parse(data: str, raw: bool = False, quiet: bool = False) -> List[JSONDictType]:
"""
Main text parsing function.
Parses the output of the `wg` command, specifically `wg show all dump`, into structured JSON format.
Parameters:
data: (str) Text data to parse, typically the output from `wg show all dump`
raw: (bool) If True, returns unprocessed output
quiet: (bool) Suppress warning messages if True
Returns:
List[Dict]: Parsed data in JSON-friendly format, either raw or processed.
"""
jc.utils.compatibility(__name__, info.compatible, quiet)
jc.utils.input_type_check(data)
raw_output: List[DeviceData] = []
current_device: Optional[str] = None
device_data: DeviceData = {}
if jc.utils.has_data(data):
for line in filter(None, data.splitlines()):
fields = re.split(r"\s+", line.strip())
if len(fields) == 5:
device, private_key, public_key, listen_port, fwmark = fields
if current_device:
raw_output.append({"device": current_device, **device_data})
current_device = device
device_data = {
"private_key": private_key if private_key != "(none)" else None,
"public_key": public_key if public_key != "(none)" else None,
"listen_port": int(listen_port) if listen_port != "0" else None,
"fwmark": int(fwmark) if fwmark != "off" else None,
"peers": {},
}
elif len(fields) == 9:
(
interface,
public_key,
preshared_key,
endpoint,
allowed_ips,
latest_handshake,
transfer_rx,
transfer_tx,
persistent_keepalive,
) = fields
peer_data: PeerData = {
"preshared_key": preshared_key
if preshared_key != "(none)"
else None,
"endpoint": endpoint if endpoint != "(none)" else None,
"latest_handshake": int(latest_handshake),
"transfer_rx": int(transfer_rx),
"transfer_sx": int(transfer_tx),
"persistent_keepalive": int(persistent_keepalive)
if persistent_keepalive != "off"
else -1,
"allowed_ips": allowed_ips.split(",")
if allowed_ips != "(none)"
else [],
}
device_data["peers"][public_key] = {
k: v for k, v in peer_data.items() if v is not None
}
if current_device:
raw_output.append({"device": current_device, **device_data})
return raw_output if raw else _process(raw_output)

View File

@ -703,6 +703,7 @@ class timestamp:
{'id': 1800, 'format': '%d/%b/%Y:%H:%M:%S %z', 'locale': None}, # Common Log Format: 10/Oct/2000:13:55:36 -0700
{'id': 2000, 'format': '%a %d %b %Y %I:%M:%S %p %Z', 'locale': None}, # en_US.UTF-8 local format (found in upower cli output): Tue 23 Mar 2021 04:12:11 PM UTC
{'id': 3000, 'format': '%a %d %b %Y %I:%M:%S %p', 'locale': None}, # en_US.UTF-8 local format with non-UTC tz (found in upower cli output): Tue 23 Mar 2021 04:12:11 PM IST
{'id': 3100, 'format': '%a %d %b %Y %I:%M:%S %p %z', 'locale': None}, # pacman format - append 00 to end to make it work: # Sat 11 May 2024 06:14:19 AM +0800
{'id': 3500, 'format': '%a, %d %b %Y %H:%M:%S %Z', 'locale': None}, # HTTP header time format (always GMT so assume UTC): Wed, 31 Jan 2024 00:39:28 GMT
{'id': 4000, 'format': '%A %d %B %Y %I:%M:%S %p %Z', 'locale': None}, # European-style local format (found in upower cli output): Tuesday 01 October 2019 12:50:41 PM UTC
{'id': 5000, 'format': '%A %d %B %Y %I:%M:%S %p', 'locale': None}, # European-style local format with non-UTC tz (found in upower cli output): Tuesday 01 October 2019 12:50:41 PM IST

View File

@ -1,4 +1,4 @@
.TH jc 1 2024-10-18 1.25.4 "JSON Convert"
.TH jc 1 2024-11-25 1.25.4 "JSON Convert"
.SH NAME
\fBjc\fP \- JSON Convert JSONifies the output of many CLI tools, file-types,
and strings
@ -512,6 +512,11 @@ openvpn-status.log file parser
\fB--os-release\fP
`/etc/os-release` file parser
.TP
.B
\fB--pacman\fP
`pacman` command parser
.TP
.B
\fB--passwd\fP
@ -1097,6 +1102,11 @@ Version string parser
\fB--wc\fP
`wc` command parser
.TP
.B
\fB--wg-show\fP
`wg show` command parser
.TP
.B
\fB--who\fP

View File

@ -2,4 +2,4 @@
# system should be in "America/Los_Angeles" timezone for all tests to pass
# ensure no local plugin parsers are installed for all tests to pass
python3 -m unittest -v
TZ=America/Los_Angeles python3 -m unittest -v

View File

@ -1 +1 @@
[{"bssid": "00:19:a9:cd:c6:80", "interface": "wlan0", "freq": 2412, "capability": "ESS ShortPreamble ShortSlotTime (0x0421)", "ssid": "Cisco1240", "supported_rates": [1.0, 2.0, 5.5, 6.0, 9.0, 11.0, 12.0, 18.0], "erp": "<no flags>", "extended_supported_rates": [24.0, 36.0, 48.0, 54.0], "wmm": "Parameter version 1", "be": "CW 15-1023, AIFSN 3", "bk": "CW 15-1023, AIFSN 7", "vi": "CW 7-15, AIFSN 2, TXOP 3008 usec", "vo": "CW 3-7, AIFSN 2, TXOP 1504 usec", "tsf_usec": 2984923701, "beacon_interval_tus": 100, "signal_dbm": -45.0, "last_seen_ms": 429, "selected_rates": [1.0, 2.0, 5.5, 11.0], "ds_parameter_set_channel": 1}, {"bssid": "d0:d0:fd:69:ca:70", "interface": "wlan0", "freq": 2462, "capability": "ESS ShortPreamble ShortSlotTime (0x0421)", "ssid": "Cisco1250", "supported_rates": [1.0, 2.0, 5.5, 6.0, 9.0, 11.0, 12.0, 18.0], "erp": "<no flags>", "extended_supported_rates": [24.0, 36.0, 48.0, 54.0], "wmm": "Parameter version 1", "be": "CW 15-1023, AIFSN 3", "bk": "CW 15-1023, AIFSN 7", "vi": "CW 7-15, AIFSN 2, TXOP 3008 usec", "vo": "acm CW 3-7, AIFSN 2, TXOP 1504 usec", "tsf_usec": 2968648942, "beacon_interval_tus": 102, "signal_dbm": -70.0, "last_seen_ms": 328, "selected_rates": [1.0, 2.0, 5.5, 11.0], "ds_parameter_set_channel": 11}]
[{"bssid":"00:19:a9:cd:c6:80","interface":"wlan0","freq":2412,"capability":"ESS ShortPreamble ShortSlotTime (0x0421)","ssid":"Cisco1240","supported_rates":[1.0,2.0,5.5,6.0,9.0,11.0,12.0,18.0],"erp":"<no flags>","extended_supported_rates":[24.0,36.0,48.0,54.0],"wmm":"Parameter version 1","be":"CW 15-1023, AIFSN 3","bk":"CW 15-1023, AIFSN 7","vi":"CW 7-15, AIFSN 2, TXOP 3008 usec","vo":"CW 3-7, AIFSN 2, TXOP 1504 usec","tsf_usec":2984923701,"beacon_interval_tus":100,"signal_dbm":-45.0,"last_seen_ms":429,"selected_rates":[1.0,2.0,5.5,11.0],"ds_parameter_set_channel":1},{"bssid":"d0:d0:fd:69:ca:70","interface":"wlan0","freq":2462,"capability":"ESS ShortPreamble ShortSlotTime (0x0421)","ssid":"Cisco1250","supported_rates":[1.0,2.0,5.5,6.0,9.0,11.0,12.0,18.0],"erp":"<no flags>","extended_supported_rates":[24.0,36.0,48.0,54.0],"wmm":"Parameter version 1","be":"CW 15-1023, AIFSN 3","bk":"CW 15-1023, AIFSN 7","vi":"CW 7-15, AIFSN 2, TXOP 3008 usec","vo":"acm CW 3-7, AIFSN 2, TXOP 1504 usec","tsf_usec":2968648942,"beacon_interval_tus":102,"signal_dbm":-70.0,"last_seen_ms":328,"selected_rates":[1.0,2.0,5.5,11.0],"ds_parameter_set_channel":11}]

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
[{"bssid":"xx:xx:xx:xx:3e:41","interface":"wlan0-1","freq":2412,"capability":"ESS (0x1431)","information_elements_from_probe_response_frame_ssid":"Troubleshooting","information_elements_from_probe_response_frame_rsn":"Version: 1","information_elements_from_probe_response_frame_group_cipher":"CCMP","information_elements_from_probe_response_frame_pairwise_ciphers":"CCMP","information_elements_from_probe_response_frame_authentication_suites":"PSK","information_elements_from_probe_response_frame_capabilities":"16-PTKSA-RC 1-GTKSA-RC (0x000c)","ht_capabilities_capabilities":"0x1ef","ht_capabilities_max_amsdu_length":"3839 bytes","ht_capabilities_minimum_rx_ampdu_time_spacing":"No restriction (0x00)","ht_capabilities_ht_rx_mcs_rate_indexes_supported":"0-15","ht_operation_primary_channel":1,"ht_operation_secondary_channel_offset":"no secondary","ht_operation_sta_channel_width":"20 MHz","vht_capabilities_0x33800192_max_mpdu_length":11454,"vht_capabilities_0x33800192_supported_channel_width":"neither 160 nor 80 80","vht_rx_mcs_set_1_streams":"MCS 0-9","vht_rx_mcs_set_2_streams":"MCS 0-9","vht_rx_mcs_set_3_streams":"not supported","vht_rx_mcs_set_4_streams":"not supported","vht_rx_mcs_set_5_streams":"not supported","vht_rx_mcs_set_6_streams":"not supported","vht_rx_mcs_set_7_streams":"not supported","vht_rx_mcs_set_8_streams":"not supported","vht_rx_mcs_set_vht_rx_highest_supported":"780 Mbps","vht_tx_mcs_set_1_streams":"MCS 0-9","vht_tx_mcs_set_2_streams":"MCS 0-9","vht_tx_mcs_set_3_streams":"not supported","vht_tx_mcs_set_4_streams":"not supported","vht_tx_mcs_set_5_streams":"not supported","vht_tx_mcs_set_6_streams":"not supported","vht_tx_mcs_set_7_streams":"not supported","vht_tx_mcs_set_8_streams":"not supported","vht_tx_mcs_set_vht_tx_highest_supported":"780 Mbps","vht_tx_mcs_set_vht_extended_nss":"not supported","vht_operation_channel_width":"0 (20 or 40 MHz)","vht_operation_center_freq_segment_1":0,"vht_operation_center_freq_segment_2":0,"vht_operation_vht_basic_mcs_set":"0xfffa","he_mac_capabilities_0x010102000040_minimum_payload_size_of_128_bytes":1,"he_mac_capabilities_0x010102000040_he_phy_capabilities":"(0x06304c090c008008020c00):","he_mac_capabilities_0x010102000040_device_class":1,"he_mac_capabilities_0x010102000040_dcm_max_constellation":1,"he_mac_capabilities_0x010102000040_dcm_max_constellation_rx":1,"he_mac_capabilities_0x010102000040_beamformee_sts_<=_80mhz":3,"he_mac_capabilities_0x010102000040_max_nc":1,"he_mac_capabilities_0x010102000040_1_streams":"MCS 0-11","he_mac_capabilities_0x010102000040_2_streams":"MCS 0-11","he_mac_capabilities_0x010102000040_3_streams":"not supported","he_mac_capabilities_0x010102000040_4_streams":"not supported","he_mac_capabilities_0x010102000040_5_streams":"not supported","he_mac_capabilities_0x010102000040_6_streams":"not supported","he_mac_capabilities_0x010102000040_7_streams":"not supported","he_mac_capabilities_0x010102000040_8_streams":"not supported","tsf_usec":608162896731,"beacon_interval_tus":100,"signal_dbm":-54.0,"last_seen_ms":1410}]

109
tests/fixtures/centos-7.7/iw-scan2.out vendored Normal file
View File

@ -0,0 +1,109 @@
BSS xx:xx:xx:xx:3e:41(on wlan0-1)
last seen: 4206.107s [boottime]
TSF: 608162896731 usec (7d, 00:56:02)
freq: 2412
beacon interval: 100 TUs
capability: ESS (0x1431)
signal: -54.00 dBm
last seen: 1410 ms ago
Information elements from Probe Response frame:
SSID: Troubleshooting
RSN: * Version: 1
* Group cipher: CCMP
* Pairwise ciphers: CCMP
* Authentication suites: PSK
* Capabilities: 16-PTKSA-RC 1-GTKSA-RC (0x000c)
HT capabilities:
Capabilities: 0x1ef
RX LDPC
HT20/HT40
SM Power Save disabled
RX HT20 SGI
RX HT40 SGI
TX STBC
RX STBC 1-stream
Max AMSDU length: 3839 bytes
No DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: No restriction (0x00)
HT RX MCS rate indexes supported: 0-15
HT TX MCS rate indexes are undefined
HT operation:
* primary channel: 1
* secondary channel offset: no secondary
* STA channel width: 20 MHz
VHT capabilities:
VHT Capabilities (0x33800192):
Max MPDU length: 11454
Supported Channel Width: neither 160 nor 80 80
RX LDPC
TX STBC
RX antenna pattern consistency
TX antenna pattern consistency
VHT RX MCS set:
1 streams: MCS 0-9
2 streams: MCS 0-9
3 streams: not supported
4 streams: not supported
5 streams: not supported
6 streams: not supported
7 streams: not supported
8 streams: not supported
VHT RX highest supported: 780 Mbps
VHT TX MCS set:
1 streams: MCS 0-9
2 streams: MCS 0-9
3 streams: not supported
4 streams: not supported
5 streams: not supported
6 streams: not supported
7 streams: not supported
8 streams: not supported
VHT TX highest supported: 780 Mbps
VHT extended NSS: not supported
VHT operation:
* channel width: 0 (20 or 40 MHz)
* center freq segment 1: 0
* center freq segment 2: 0
* VHT basic MCS set: 0xfffa
HE capabilities:
HE MAC Capabilities (0x010102000040):
HTC HE Supported
Minimum Payload size of 128 bytes: 1
OM Control
A-MSDU in A-MPDU
HE PHY Capabilities: (0x06304c090c008008020c00):
HE40/2.4GHz
HE40/HE80/5GHz
Device Class: 1
LDPC Coding in Payload
STBC Tx <= 80MHz
STBC Rx <= 80MHz
Full Bandwidth UL MU-MIMO
DCM Max Constellation: 1
DCM Max Constellation Rx: 1
Beamformee STS <= 80Mhz: 3
PPE Threshold Present
Max NC: 1
20MHz in 40MHz HE PPDU 2.4GHz
TX 1024-QAM
RX 1024-QAM
HE RX MCS and NSS set <= 80 MHz
1 streams: MCS 0-11
2 streams: MCS 0-11
3 streams: not supported
4 streams: not supported
5 streams: not supported
6 streams: not supported
7 streams: not supported
8 streams: not supported
HE TX MCS and NSS set <= 80 MHz
1 streams: MCS 0-11
2 streams: MCS 0-11
3 streams: not supported
4 streams: not supported
5 streams: not supported
6 streams: not supported
7 streams: not supported
8 streams: not supported
PPE Threshold 0x19 0x1c 0xc7 0x71

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,334 @@
Name : zstd
Version : 1.5.6-1
Description : Zstandard - Fast real-time compression algorithm
Architecture : x86_64
URL : https://facebook.github.io/zstd/
Licenses : BSD-3-Clause GPL-2.0-only
Groups : None
Provides : libzstd.so=1-64
Depends On : glibc gcc-libs zlib xz lz4
Optional Deps : None
Required By : android-tools appstream avr-gcc binutils blender blosc
boost-libs btrfs-progs cloudflare-warp-bin comgr curl
dolphin-emu file flatpak gcc gdal gnutls karchive
karchive5 kmod lib32-zstd libarchive libelf libtiff
libva-mesa-driver libxmlb libzip lld llvm-libs mariadb-libs
mesa mesa-vdpau minizip-ng mkinitcpio mold netcdf
opencl-clover-mesa opencl-rusticl-mesa openucx postgresql
postgresql-libs ppsspp qemu-img qemu-system-riscv
qemu-system-x86 qgis qt6-base qt6-tools rsync rustup
squashfs-tools squashfuse systemd-libs tiled vulkan-radeon
wireshark-cli
Optional For : xarchiver
Conflicts With : None
Replaces : None
Installed Size : 1527.00 KiB
Packager : Levente Polyak <anthraxx@archlinux.org>
Build Date : Sat 11 May 2024 06:14:19 AM +08
Install Date : Fri 24 May 2024 09:50:31 AM +08
Install Reason : Installed as a dependency for another package
Install Script : No
Validated By : Signature
Backup Files : None
Extended Data : pkgtype=pkg
Name : apparmor
Version : 3.1.7-4
Description : Mandatory Access Control (MAC) using Linux Security Module (LSM)
Architecture : x86_64
URL : https://gitlab.com/apparmor/apparmor
Licenses : GPL-2.0-only LGPL-2.0-only LGPL-2.1-only
Groups : None
Provides : libapparmor.so=1-64
Depends On : audit bash gcc-libs glibc pam python
Optional Deps : perl: for perl bindings [installed]
python-notify2: for aa-notify
python-psutil: for aa-notify [installed]
ruby: for ruby bindings
Required By : firejail
Optional For : podman
Conflicts With : None
Replaces : None
Installed Size : 4.11 MiB
Packager : Antonio Rojas <arojas@archlinux.org>
Build Date : Sun 01 Sep 2024 07:43:58 PM +08
Install Date : Thu 05 Sep 2024 06:01:08 AM +08
Install Reason : Explicitly installed
Install Script : No
Validated By : Signature
Backup Files : /etc/apparmor/easyprof.conf [unmodified]
/etc/apparmor/logprof.conf [unmodified]
/etc/apparmor/notify.conf [unmodified]
/etc/apparmor/parser.conf [unmodified]
/etc/apparmor/severity.db [unmodified]
/etc/apparmor.d/abi/3.0 [unmodified]
/etc/apparmor.d/abi/kernel-5.4-outoftree-network [unmodified]
/etc/apparmor.d/abi/kernel-5.4-vanilla [unmodified]
/etc/apparmor.d/abstractions/X [unmodified]
/etc/apparmor.d/abstractions/apache2-common [unmodified]
/etc/apparmor.d/abstractions/apparmor_api/change_profile [unmodified]
/etc/apparmor.d/abstractions/apparmor_api/examine [unmodified]
/etc/apparmor.d/abstractions/apparmor_api/find_mountpoint [unmodified]
/etc/apparmor.d/abstractions/apparmor_api/introspect [unmodified]
/etc/apparmor.d/abstractions/apparmor_api/is_enabled [unmodified]
/etc/apparmor.d/abstractions/aspell [unmodified]
/etc/apparmor.d/abstractions/audio [unmodified]
/etc/apparmor.d/abstractions/authentication [unmodified]
/etc/apparmor.d/abstractions/base [unmodified]
/etc/apparmor.d/abstractions/bash [unmodified]
/etc/apparmor.d/abstractions/consoles [unmodified]
/etc/apparmor.d/abstractions/crypto [unmodified]
/etc/apparmor.d/abstractions/cups-client [unmodified]
/etc/apparmor.d/abstractions/dbus [unmodified]
/etc/apparmor.d/abstractions/dbus-accessibility [unmodified]
/etc/apparmor.d/abstractions/dbus-accessibility-strict [unmodified]
/etc/apparmor.d/abstractions/dbus-network-manager-strict [unmodified]
/etc/apparmor.d/abstractions/dbus-session [unmodified]
/etc/apparmor.d/abstractions/dbus-session-strict [unmodified]
/etc/apparmor.d/abstractions/dbus-strict [unmodified]
/etc/apparmor.d/abstractions/dconf [unmodified]
/etc/apparmor.d/abstractions/dovecot-common [unmodified]
/etc/apparmor.d/abstractions/dri-common [unmodified]
/etc/apparmor.d/abstractions/dri-enumerate [unmodified]
/etc/apparmor.d/abstractions/enchant [unmodified]
/etc/apparmor.d/abstractions/exo-open [unmodified]
/etc/apparmor.d/abstractions/fcitx [unmodified]
/etc/apparmor.d/abstractions/fcitx-strict [unmodified]
/etc/apparmor.d/abstractions/fonts [unmodified]
/etc/apparmor.d/abstractions/freedesktop.org [unmodified]
/etc/apparmor.d/abstractions/gio-open [unmodified]
/etc/apparmor.d/abstractions/gnome [unmodified]
/etc/apparmor.d/abstractions/gnupg [unmodified]
/etc/apparmor.d/abstractions/groff [unmodified]
/etc/apparmor.d/abstractions/gtk [unmodified]
/etc/apparmor.d/abstractions/gvfs-open [unmodified]
/etc/apparmor.d/abstractions/hosts_access [unmodified]
/etc/apparmor.d/abstractions/ibus [unmodified]
/etc/apparmor.d/abstractions/kde [unmodified]
/etc/apparmor.d/abstractions/kde-globals-write [unmodified]
/etc/apparmor.d/abstractions/kde-icon-cache-write [unmodified]
/etc/apparmor.d/abstractions/kde-language-write [unmodified]
/etc/apparmor.d/abstractions/kde-open5 [unmodified]
/etc/apparmor.d/abstractions/kerberosclient [unmodified]
/etc/apparmor.d/abstractions/ldapclient [unmodified]
/etc/apparmor.d/abstractions/libpam-systemd [unmodified]
/etc/apparmor.d/abstractions/likewise [unmodified]
/etc/apparmor.d/abstractions/mdns [unmodified]
/etc/apparmor.d/abstractions/mesa [unmodified]
/etc/apparmor.d/abstractions/mir [unmodified]
/etc/apparmor.d/abstractions/mozc [unmodified]
/etc/apparmor.d/abstractions/mysql [unmodified]
/etc/apparmor.d/abstractions/nameservice [unmodified]
/etc/apparmor.d/abstractions/nis [unmodified]
/etc/apparmor.d/abstractions/nss-systemd [unmodified]
/etc/apparmor.d/abstractions/nvidia [unmodified]
/etc/apparmor.d/abstractions/opencl [unmodified]
/etc/apparmor.d/abstractions/opencl-common [unmodified]
/etc/apparmor.d/abstractions/opencl-intel [unmodified]
/etc/apparmor.d/abstractions/opencl-mesa [unmodified]
/etc/apparmor.d/abstractions/opencl-nvidia [unmodified]
/etc/apparmor.d/abstractions/opencl-pocl [unmodified]
/etc/apparmor.d/abstractions/openssl [unmodified]
/etc/apparmor.d/abstractions/orbit2 [unmodified]
/etc/apparmor.d/abstractions/p11-kit [unmodified]
/etc/apparmor.d/abstractions/perl [unmodified]
/etc/apparmor.d/abstractions/php [unmodified]
/etc/apparmor.d/abstractions/php-worker [unmodified]
/etc/apparmor.d/abstractions/php5 [unmodified]
/etc/apparmor.d/abstractions/postfix-common [unmodified]
/etc/apparmor.d/abstractions/private-files [unmodified]
/etc/apparmor.d/abstractions/private-files-strict [unmodified]
/etc/apparmor.d/abstractions/python [unmodified]
/etc/apparmor.d/abstractions/qt5 [unmodified]
/etc/apparmor.d/abstractions/qt5-compose-cache-write [unmodified]
/etc/apparmor.d/abstractions/qt5-settings-write [unmodified]
/etc/apparmor.d/abstractions/recent-documents-write [unmodified]
/etc/apparmor.d/abstractions/ruby [unmodified]
/etc/apparmor.d/abstractions/samba [unmodified]
/etc/apparmor.d/abstractions/samba-rpcd [unmodified]
/etc/apparmor.d/abstractions/smbpass [unmodified]
/etc/apparmor.d/abstractions/snap_browsers [unmodified]
/etc/apparmor.d/abstractions/ssl_certs [unmodified]
/etc/apparmor.d/abstractions/ssl_keys [unmodified]
/etc/apparmor.d/abstractions/svn-repositories [unmodified]
/etc/apparmor.d/abstractions/trash [unmodified]
/etc/apparmor.d/abstractions/ubuntu-bittorrent-clients [unmodified]
/etc/apparmor.d/abstractions/ubuntu-browsers [unmodified]
/etc/apparmor.d/abstractions/ubuntu-browsers.d/chromium-browser [unmodified]
/etc/apparmor.d/abstractions/ubuntu-browsers.d/java [unmodified]
/etc/apparmor.d/abstractions/ubuntu-browsers.d/kde [unmodified]
/etc/apparmor.d/abstractions/ubuntu-browsers.d/mailto [unmodified]
/etc/apparmor.d/abstractions/ubuntu-browsers.d/multimedia [unmodified]
/etc/apparmor.d/abstractions/ubuntu-browsers.d/plugins-common [unmodified]
/etc/apparmor.d/abstractions/ubuntu-browsers.d/productivity [unmodified]
/etc/apparmor.d/abstractions/ubuntu-browsers.d/text-editors [unmodified]
/etc/apparmor.d/abstractions/ubuntu-browsers.d/ubuntu-integration [unmodified]
/etc/apparmor.d/abstractions/ubuntu-browsers.d/ubuntu-integration-xul [unmodified]
/etc/apparmor.d/abstractions/ubuntu-browsers.d/user-files [unmodified]
/etc/apparmor.d/abstractions/ubuntu-console-browsers [unmodified]
/etc/apparmor.d/abstractions/ubuntu-console-email [unmodified]
/etc/apparmor.d/abstractions/ubuntu-email [unmodified]
/etc/apparmor.d/abstractions/ubuntu-feed-readers [unmodified]
/etc/apparmor.d/abstractions/ubuntu-gnome-terminal [unmodified]
/etc/apparmor.d/abstractions/ubuntu-helpers [unmodified]
/etc/apparmor.d/abstractions/ubuntu-konsole [unmodified]
/etc/apparmor.d/abstractions/ubuntu-media-players [unmodified]
/etc/apparmor.d/abstractions/ubuntu-unity7-base [unmodified]
/etc/apparmor.d/abstractions/ubuntu-unity7-launcher [unmodified]
/etc/apparmor.d/abstractions/ubuntu-unity7-messaging [unmodified]
/etc/apparmor.d/abstractions/ubuntu-xterm [unmodified]
/etc/apparmor.d/abstractions/user-download [unmodified]
/etc/apparmor.d/abstractions/user-mail [unmodified]
/etc/apparmor.d/abstractions/user-manpages [unmodified]
/etc/apparmor.d/abstractions/user-tmp [unmodified]
/etc/apparmor.d/abstractions/user-write [unmodified]
/etc/apparmor.d/abstractions/video [unmodified]
/etc/apparmor.d/abstractions/vulkan [unmodified]
/etc/apparmor.d/abstractions/wayland [unmodified]
/etc/apparmor.d/abstractions/web-data [unmodified]
/etc/apparmor.d/abstractions/winbind [unmodified]
/etc/apparmor.d/abstractions/wutmp [unmodified]
/etc/apparmor.d/abstractions/xad [unmodified]
/etc/apparmor.d/abstractions/xdg-desktop [unmodified]
/etc/apparmor.d/abstractions/xdg-open [unmodified]
/etc/apparmor.d/apache2.d/phpsysinfo [unmodified]
/etc/apparmor.d/bin.ping [unmodified]
/etc/apparmor.d/local/README [unmodified]
/etc/apparmor.d/local/bin.ping [unmodified]
/etc/apparmor.d/local/lsb_release [unmodified]
/etc/apparmor.d/local/nvidia_modprobe [unmodified]
/etc/apparmor.d/local/php-fpm [unmodified]
/etc/apparmor.d/local/samba-bgqd [unmodified]
/etc/apparmor.d/local/samba-dcerpcd [unmodified]
/etc/apparmor.d/local/samba-rpcd [unmodified]
/etc/apparmor.d/local/samba-rpcd-classic [unmodified]
/etc/apparmor.d/local/samba-rpcd-spoolss [unmodified]
/etc/apparmor.d/local/sbin.klogd [unmodified]
/etc/apparmor.d/local/sbin.syslog-ng [unmodified]
/etc/apparmor.d/local/sbin.syslogd [unmodified]
/etc/apparmor.d/local/usr.lib.apache2.mpm-prefork.apache2 [unmodified]
/etc/apparmor.d/local/usr.lib.dovecot.anvil [unmodified]
/etc/apparmor.d/local/usr.lib.dovecot.auth [unmodified]
/etc/apparmor.d/local/usr.lib.dovecot.config [unmodified]
/etc/apparmor.d/local/usr.lib.dovecot.deliver [unmodified]
/etc/apparmor.d/local/usr.lib.dovecot.dict [unmodified]
/etc/apparmor.d/local/usr.lib.dovecot.director [unmodified]
/etc/apparmor.d/local/usr.lib.dovecot.doveadm-server [unmodified]
/etc/apparmor.d/local/usr.lib.dovecot.dovecot-auth [unmodified]
/etc/apparmor.d/local/usr.lib.dovecot.dovecot-lda [unmodified]
/etc/apparmor.d/local/usr.lib.dovecot.imap [unmodified]
/etc/apparmor.d/local/usr.lib.dovecot.imap-login [unmodified]
/etc/apparmor.d/local/usr.lib.dovecot.lmtp [unmodified]
/etc/apparmor.d/local/usr.lib.dovecot.log [unmodified]
/etc/apparmor.d/local/usr.lib.dovecot.managesieve [unmodified]
/etc/apparmor.d/local/usr.lib.dovecot.managesieve-login [unmodified]
/etc/apparmor.d/local/usr.lib.dovecot.pop3 [unmodified]
/etc/apparmor.d/local/usr.lib.dovecot.pop3-login [unmodified]
/etc/apparmor.d/local/usr.lib.dovecot.replicator [unmodified]
/etc/apparmor.d/local/usr.lib.dovecot.script-login [unmodified]
/etc/apparmor.d/local/usr.lib.dovecot.ssl-params [unmodified]
/etc/apparmor.d/local/usr.lib.dovecot.stats [unmodified]
/etc/apparmor.d/local/usr.sbin.apache2 [unmodified]
/etc/apparmor.d/local/usr.sbin.avahi-daemon [unmodified]
/etc/apparmor.d/local/usr.sbin.dnsmasq [unmodified]
/etc/apparmor.d/local/usr.sbin.dovecot [unmodified]
/etc/apparmor.d/local/usr.sbin.identd [unmodified]
/etc/apparmor.d/local/usr.sbin.mdnsd [unmodified]
/etc/apparmor.d/local/usr.sbin.nmbd [unmodified]
/etc/apparmor.d/local/usr.sbin.nscd [unmodified]
/etc/apparmor.d/local/usr.sbin.ntpd [unmodified]
/etc/apparmor.d/local/usr.sbin.smbd [unmodified]
/etc/apparmor.d/local/usr.sbin.smbldap-useradd [unmodified]
/etc/apparmor.d/local/usr.sbin.traceroute [unmodified]
/etc/apparmor.d/local/usr.sbin.winbindd [unmodified]
/etc/apparmor.d/local/zgrep [unmodified]
/etc/apparmor.d/lsb_release [unmodified]
/etc/apparmor.d/nvidia_modprobe [unmodified]
/etc/apparmor.d/php-fpm [unmodified]
/etc/apparmor.d/samba-bgqd [unmodified]
/etc/apparmor.d/samba-dcerpcd [unmodified]
/etc/apparmor.d/samba-rpcd [unmodified]
/etc/apparmor.d/samba-rpcd-classic [unmodified]
/etc/apparmor.d/samba-rpcd-spoolss [unmodified]
/etc/apparmor.d/sbin.klogd [unmodified]
/etc/apparmor.d/sbin.syslog-ng [unmodified]
/etc/apparmor.d/sbin.syslogd [unmodified]
/etc/apparmor.d/tunables/alias [unmodified]
/etc/apparmor.d/tunables/apparmorfs [unmodified]
/etc/apparmor.d/tunables/dovecot [unmodified]
/etc/apparmor.d/tunables/etc [unmodified]
/etc/apparmor.d/tunables/global [unmodified]
/etc/apparmor.d/tunables/home [unmodified]
/etc/apparmor.d/tunables/home.d/site.local [unmodified]
/etc/apparmor.d/tunables/kernelvars [unmodified]
/etc/apparmor.d/tunables/multiarch [unmodified]
/etc/apparmor.d/tunables/multiarch.d/site.local [unmodified]
/etc/apparmor.d/tunables/ntpd [unmodified]
/etc/apparmor.d/tunables/proc [unmodified]
/etc/apparmor.d/tunables/run [unmodified]
/etc/apparmor.d/tunables/securityfs [unmodified]
/etc/apparmor.d/tunables/share [unmodified]
/etc/apparmor.d/tunables/sys [unmodified]
/etc/apparmor.d/tunables/xdg-user-dirs [unmodified]
/etc/apparmor.d/tunables/xdg-user-dirs.d/site.local [unmodified]
/etc/apparmor.d/usr.lib.apache2.mpm-prefork.apache2 [unmodified]
/etc/apparmor.d/usr.lib.dovecot.anvil [unmodified]
/etc/apparmor.d/usr.lib.dovecot.auth [unmodified]
/etc/apparmor.d/usr.lib.dovecot.config [unmodified]
/etc/apparmor.d/usr.lib.dovecot.deliver [unmodified]
/etc/apparmor.d/usr.lib.dovecot.dict [unmodified]
/etc/apparmor.d/usr.lib.dovecot.director [unmodified]
/etc/apparmor.d/usr.lib.dovecot.doveadm-server [unmodified]
/etc/apparmor.d/usr.lib.dovecot.dovecot-auth [unmodified]
/etc/apparmor.d/usr.lib.dovecot.dovecot-lda [unmodified]
/etc/apparmor.d/usr.lib.dovecot.imap [unmodified]
/etc/apparmor.d/usr.lib.dovecot.imap-login [unmodified]
/etc/apparmor.d/usr.lib.dovecot.lmtp [unmodified]
/etc/apparmor.d/usr.lib.dovecot.log [unmodified]
/etc/apparmor.d/usr.lib.dovecot.managesieve [unmodified]
/etc/apparmor.d/usr.lib.dovecot.managesieve-login [unmodified]
/etc/apparmor.d/usr.lib.dovecot.pop3 [unmodified]
/etc/apparmor.d/usr.lib.dovecot.pop3-login [unmodified]
/etc/apparmor.d/usr.lib.dovecot.replicator [unmodified]
/etc/apparmor.d/usr.lib.dovecot.script-login [unmodified]
/etc/apparmor.d/usr.lib.dovecot.ssl-params [unmodified]
/etc/apparmor.d/usr.lib.dovecot.stats [unmodified]
/etc/apparmor.d/usr.sbin.apache2 [unmodified]
/etc/apparmor.d/usr.sbin.avahi-daemon [unmodified]
/etc/apparmor.d/usr.sbin.dnsmasq [unmodified]
/etc/apparmor.d/usr.sbin.dovecot [unmodified]
/etc/apparmor.d/usr.sbin.identd [unmodified]
/etc/apparmor.d/usr.sbin.mdnsd [unmodified]
/etc/apparmor.d/usr.sbin.nmbd [unmodified]
/etc/apparmor.d/usr.sbin.nscd [unmodified]
/etc/apparmor.d/usr.sbin.ntpd [unmodified]
/etc/apparmor.d/usr.sbin.smbd [unmodified]
/etc/apparmor.d/usr.sbin.smbldap-useradd [unmodified]
/etc/apparmor.d/usr.sbin.traceroute [unmodified]
/etc/apparmor.d/usr.sbin.winbindd [unmodified]
/etc/apparmor.d/zgrep [unmodified]
Extended Data : pkgtype=pkg
Name : apulse
Version : 0.1.13-1
Description : PulseAudio emulation for ALSA
Architecture : x86_64
URL : https://github.com/i-rinat/apulse
Licenses : custom:MIT
Groups : None
Provides : None
Depends On : alsa-lib glib2
Optional Deps : None
Required By : None
Optional For : None
Conflicts With : None
Replaces : None
Installed Size : 135.71 KiB
Packager : Unknown Packager
Build Date : Fri 05 Aug 2022 04:06:57 AM +08
Install Date : Fri 05 Aug 2022 04:07:04 AM +08
Install Reason : Explicitly installed
Install Script : Yes
Validated By : None
Backup Files : None
Extended Data : None

View File

@ -0,0 +1 @@
[{"repository":"extra","name":"graphicsmagick","version":"1.3.43-1","description":"Image processing system","architecture":"x86_64","url":"http://www.graphicsmagick.org/","licenses":["MIT"],"groups":[],"provides":["Magick.so","libGraphicsMagickWand.so=2-64","libGraphicsMagick.so=3-64","libGraphicsMagick++-Q16.so"],"depends_on":["bzip2","freetype2","lcms2","libltdl","libpng","libsm","libtiff","libwebp","libxext","xz"],"optional_deps":[{"name":"jasper","description":"jp2 module"},{"name":"libwmf","description":"wmf module"},{"name":"libxml2","description":"msl, svg, url modules"},{"name":"ghostscript","description":"pdf, ps modules"},{"name":"libheif","description":"heic module"},{"name":"libjxl","description":"jpeg-xl module"}],"conflicts_with":[],"replaces":[],"download_size":"2.58 MiB","installed_size":"13.97 MiB","packager":"Caleb Maclennan <alerque@archlinux.org>","build_date":"Sat 23 Mar 2024 09:55:47 PM CET","validated_by":["MD5 Sum","SHA-256 Sum","Signature"],"download_size_bytes":2705326,"installed_size_bytes":14648606,"build_date_epoch":1711256147}]

View File

@ -0,0 +1,23 @@
Repository : extra
Name : graphicsmagick
Version : 1.3.43-1
Description : Image processing system
Architecture : x86_64
URL : http://www.graphicsmagick.org/
Licenses : MIT
Groups : None
Provides : Magick.so libGraphicsMagickWand.so=2-64 libGraphicsMagick.so=3-64 libGraphicsMagick++-Q16.so
Depends On : bzip2 freetype2 lcms2 libltdl libpng libsm libtiff libwebp libxext xz
Optional Deps : jasper: jp2 module
libwmf: wmf module
libxml2: msl, svg, url modules
ghostscript: pdf, ps modules
libheif: heic module
libjxl: jpeg-xl module
Conflicts With : None
Replaces : None
Download Size : 2.58 MiB
Installed Size : 13.97 MiB
Packager : Caleb Maclennan <alerque@archlinux.org>
Build Date : Sat 23 Mar 2024 09:55:47 PM CET
Validated By : MD5 Sum SHA-256 Sum Signature

View File

@ -0,0 +1,95 @@
[
{
"device": "wg0",
"private_key": "ZkG2dvJSUq5ohkDFNWBqToaVSyk4Pp8/bULaf6yX+3N=",
"public_key": "PQsbRs4w2fidQ7uhjgCypl5fc/804bHZbfl83gGvakN=",
"listen_port": 51820,
"fwmark": null,
"peers": [
{
"public_key": "rQFRAjRdx1aD8DnTFpkcBOY9Edjt3ZU7+P9HokZv7xe=",
"preshared_key": null,
"endpoint": "82.132.137.204:50024",
"latest_handshake": 1829439251,
"transfer_rx": 1536642,
"transfer_sx": 492320,
"persistent_keepalive": -1,
"allowed_ips": [
"10.10.0.2/32"
]
},
{
"public_key": "A0fsnrwsv7S9hrk8yzCgOON9gKPYfpCrzqil4bPpxAE=",
"preshared_key": null,
"endpoint": "82.132.137.204:49732",
"latest_handshake": 1829439125,
"transfer_rx": 5641359,
"transfer_sx": 4206783,
"persistent_keepalive": -1,
"allowed_ips": [
"10.10.0.3/32"
]
},
{
"public_key": "pkjVZR5VdfnSFhlWsqnkf+wv/eHGLHzOtKu8v2CvOD5=",
"preshared_key": null,
"endpoint": null,
"latest_handshake": 0,
"transfer_rx": 0,
"transfer_sx": 0,
"persistent_keepalive": -1,
"allowed_ips": [
"10.10.0.4/32"
]
},
{
"public_key": "hz0+KJRHJyXfDNjUnZ9LRAnShFFjZNTrW2jRbXjIazx=",
"preshared_key": null,
"endpoint": "180.255.226.203:21678",
"latest_handshake": 1829439243,
"transfer_rx": 1555523,
"transfer_sx": 544780,
"persistent_keepalive": -1,
"allowed_ips": [
"10.10.0.5/32"
]
},
{
"public_key": "kujr4Z8eutQ8ebzFf33DLc3PNKrO3J+ZVy3jkrR1cUZ=",
"preshared_key": null,
"endpoint": "82.132.137.204:67130",
"latest_handshake": 0,
"transfer_rx": 0,
"transfer_sx": 0,
"persistent_keepalive": -1,
"allowed_ips": [
"10.10.0.6/32"
]
},
{
"public_key": "XcgkMRmxhQiIgXowYqsxUt1SlwUydXJd4Zmi8dgGeYe=",
"preshared_key": null,
"endpoint": "180.255.226.203:56092",
"latest_handshake": 1829439121,
"transfer_rx": 1900247,
"transfer_sx": 1352639,
"persistent_keepalive": -1,
"allowed_ips": [
"10.10.0.8/32"
]
},
{
"public_key": "tB9yFqLmyvcDD1rJ1rTgeKtKK98hdUL1jefMRt4XbDh=",
"preshared_key": null,
"endpoint": "82.132.137.204:60184",
"latest_handshake": 1829037182,
"transfer_rx": 75047,
"transfer_sx": 184725,
"persistent_keepalive": -1,
"allowed_ips": [
"10.10.0.7/32"
]
}
]
}
]

View File

@ -0,0 +1,9 @@
wg0 ZkG2dvJSUq5ohkDFNWBqToaVSyk4Pp8/bULaf6yX+3N= PQsbRs4w2fidQ7uhjgCypl5fc/804bHZbfl83gGvakN= 51820 off
wg0 rQFRAjRdx1aD8DnTFpkcBOY9Edjt3ZU7+P9HokZv7xe= (none) 82.132.137.204:50024 10.10.0.2/32 1829439251 1536642 492320 off
wg0 A0fsnrwsv7S9hrk8yzCgOON9gKPYfpCrzqil4bPpxAE= (none) 82.132.137.204:49732 10.10.0.3/32 1829439125 5641359 4206783 off
wg0 pkjVZR5VdfnSFhlWsqnkf+wv/eHGLHzOtKu8v2CvOD5= (none) (none) 10.10.0.4/32 0 0 0 off
wg0 hz0+KJRHJyXfDNjUnZ9LRAnShFFjZNTrW2jRbXjIazx= (none) 180.255.226.203:21678 10.10.0.5/32 1829439243 1555523 544780 off
wg0 kujr4Z8eutQ8ebzFf33DLc3PNKrO3J+ZVy3jkrR1cUZ= (none) 82.132.137.204:67130 10.10.0.6/32 0 0 0 off
wg0 XcgkMRmxhQiIgXowYqsxUt1SlwUydXJd4Zmi8dgGeYe= (none) 180.255.226.203:56092 10.10.0.8/32 1829439121 1900247 1352639 off
wg0 tB9yFqLmyvcDD1rJ1rTgeKtKK98hdUL1jefMRt4XbDh= (none) 82.132.137.204:60184 10.10.0.7/32 1829037182 75047 184725 off

View File

@ -0,0 +1 @@
[{"device":"wg0","private_key":"ZkG2dvJSUq5ohkDFNWBqToaVSyk4Pp8/bULaf6yX+3N=","public_key":"PQsbRs4w2fidQ7uhjgCypl5fc/804bHZbfl83gGvakN=","listen_port":51820,"fwmark":null,"peers":[{"public_key":"rQFRAjRdx1aD8DnTFpkcBOY9Edjt3ZU7+P9HokZv7xe=","preshared_key":null,"endpoint":"82.132.137.204:50024","latest_handshake":1829439251,"transfer_rx":1536642,"transfer_sx":492320,"persistent_keepalive":-1,"allowed_ips":["10.10.0.2/32"]},{"public_key":"A0fsnrwsv7S9hrk8yzCgOON9gKPYfpCrzqil4bPpxAE=","preshared_key":null,"endpoint":"82.132.137.204:49732","latest_handshake":1829439125,"transfer_rx":5641359,"transfer_sx":4206783,"persistent_keepalive":-1,"allowed_ips":["10.10.0.3/32"]},{"public_key":"pkjVZR5VdfnSFhlWsqnkf+wv/eHGLHzOtKu8v2CvOD5=","preshared_key":null,"endpoint":null,"latest_handshake":0,"transfer_rx":0,"transfer_sx":0,"persistent_keepalive":-1,"allowed_ips":["10.10.0.4/32"]},{"public_key":"hz0+KJRHJyXfDNjUnZ9LRAnShFFjZNTrW2jRbXjIazx=","preshared_key":null,"endpoint":"180.255.226.203:21678","latest_handshake":1829439243,"transfer_rx":1555523,"transfer_sx":544780,"persistent_keepalive":-1,"allowed_ips":["10.10.0.5/32"]},{"public_key":"kujr4Z8eutQ8ebzFf33DLc3PNKrO3J+ZVy3jkrR1cUZ=","preshared_key":null,"endpoint":"82.132.137.204:67130","latest_handshake":0,"transfer_rx":0,"transfer_sx":0,"persistent_keepalive":-1,"allowed_ips":["10.10.0.6/32"]},{"public_key":"XcgkMRmxhQiIgXowYqsxUt1SlwUydXJd4Zmi8dgGeYe=","preshared_key":null,"endpoint":"180.255.226.203:56092","latest_handshake":1829439121,"transfer_rx":1900247,"transfer_sx":1352639,"persistent_keepalive":-1,"allowed_ips":["10.10.0.8/32"]},{"public_key":"tB9yFqLmyvcDD1rJ1rTgeKtKK98hdUL1jefMRt4XbDh=","preshared_key":null,"endpoint":"82.132.137.204:60184","latest_handshake":1829037182,"transfer_rx":75047,"transfer_sx":184725,"persistent_keepalive":-1,"allowed_ips":["10.10.0.7/32"]},{"public_key":"JH8Fz8KGH5vDYu3eUuWwRcTUcvRqFHZfMlNtsg2xZwF=","preshared_key":null,"endpoint":"91.142.150.210:51478","latest_handshake":1829037123,"transfer_rx":985632,"transfer_sx":723582,"persistent_keepalive":-1,"allowed_ips":["10.10.0.9/32"]},{"public_key":"Yx6kNq8xhPmKhYq0YqTxVt2ZmxZvdYKg5Ymj9fgHkGh=","preshared_key":null,"endpoint":"92.233.144.193:61112","latest_handshake":1829037212,"transfer_rx":1350235,"transfer_sx":945301,"persistent_keepalive":-1,"allowed_ips":["10.10.0.10/32"]}]},{"device":"wg1","private_key":"JnR8bwIHKq7yqfNDOWBlTohSTxl7Wa9/sTLcf6tQ+4O=","public_key":"MUocVr6x4gjhT9vkkDrzm6hc/906dJHYcgk93iHvbmR=","listen_port":51821,"fwmark":null,"peers":[{"public_key":"yQHRBjVgy2fC9EkUFlhdDPZ0Lekv4YM9+Q0GmnXw9gf=","preshared_key":null,"endpoint":"72.144.138.212:50135","latest_handshake":1929850372,"transfer_rx":1678923,"transfer_sx":513470,"persistent_keepalive":-1,"allowed_ips":["10.10.1.2/32"]},{"public_key":"C1gsotwrx9S9jsq9yzJgPPO0hNRYgrDsblmj6dSrkZE=","preshared_key":null,"endpoint":"59.232.145.213:49364","latest_handshake":1929850156,"transfer_rx":5982563,"transfer_sx":4378204,"persistent_keepalive":-1,"allowed_ips":["10.10.1.3/32"]},{"public_key":"qjkYZR6WfgnTGjnXrqokf+xw/fIFMHyPtLu9w3DwOF6=","preshared_key":null,"endpoint":null,"latest_handshake":0,"transfer_rx":0,"transfer_sx":0,"persistent_keepalive":-1,"allowed_ips":["10.10.1.4/32"]}]},{"device":"wg1","private_key":"JpK6HvHKLp9zmqDFQXBqUmxTSvW6Vp9/zTLbf6pT+7N=","public_key":"LQdcXs5y5dkgU0vmkCszm8hf/907fKHYdhk94jHvbnQ=","listen_port":51821,"fwmark":null,"peers":[{"public_key":"tRFGGjUhy3hD0GmVEljeDQY0Mhlv5YM7+Q2HmnWy9je=","preshared_key":null,"endpoint":"69.157.149.222:51049","latest_handshake":1929851223,"transfer_rx":1680921,"transfer_sx":523451,"persistent_keepalive":-1,"allowed_ips":["10.10.1.5/32"]},{"public_key":"K2hzotyrx8S1jsq0yzHgTQO1kOYVhrDwblmj7eTrkZF=","preshared_key":null,"endpoint":"61.242.155.214:48012","latest_handshake":1929851045,"transfer_rx":6052145,"transfer_sx":4435280,"persistent_keepalive":-1,"allowed_ips":["10.10.1.6/32"]},{"public_key":"VliYZS7WggpUFkWNralkg+wz/eIHMHyStMpu0x4EoEJ=","preshared_key":null,"endpoint":null,"latest_handshake":0,"transfer_rx":0,"transfer_sx":0,"persistent_keepalive":-1,"allowed_ips":["10.10.1.7/32"]},{"public_key":"kB8yFrKmyvaDF1uL2uUgeOsLL99jeUL2kefKRt3ZoFh=","preshared_key":null,"endpoint":"72.132.145.206:62084","latest_handshake":1929137285,"transfer_rx":95023,"transfer_sx":197982,"persistent_keepalive":-1,"allowed_ips":["10.10.1.8/32"]},{"public_key":"Z9fsqvwty8U9jqj1zyKgPRQ1hOXYgrFtcmli8fSprHF=","preshared_key":null,"endpoint":"68.243.154.222:54321","latest_handshake":1929137125,"transfer_rx":1200475,"transfer_sx":890678,"persistent_keepalive":-1,"allowed_ips":["10.10.1.9/32"]},{"public_key":"Lx9lNq9xhPnJhYr1YqYxVt3ZmyawdZLg5Zmj0fhGlJk=","preshared_key":null,"endpoint":"71.233.144.204:59012","latest_handshake":1929137243,"transfer_rx":1450234,"transfer_sx":1006235,"persistent_keepalive":-1,"allowed_ips":["10.10.1.10/32"]}]}]

View File

@ -0,0 +1,22 @@
wg0 ZkG2dvJSUq5ohkDFNWBqToaVSyk4Pp8/bULaf6yX+3N= PQsbRs4w2fidQ7uhjgCypl5fc/804bHZbfl83gGvakN= 51820 off
wg0 rQFRAjRdx1aD8DnTFpkcBOY9Edjt3ZU7+P9HokZv7xe= (none) 82.132.137.204:50024 10.10.0.2/32 1829439251 1536642 492320 off
wg0 A0fsnrwsv7S9hrk8yzCgOON9gKPYfpCrzqil4bPpxAE= (none) 82.132.137.204:49732 10.10.0.3/32 1829439125 5641359 4206783 off
wg0 pkjVZR5VdfnSFhlWsqnkf+wv/eHGLHzOtKu8v2CvOD5= (none) (none) 10.10.0.4/32 0 0 0 off
wg0 hz0+KJRHJyXfDNjUnZ9LRAnShFFjZNTrW2jRbXjIazx= (none) 180.255.226.203:21678 10.10.0.5/32 1829439243 1555523 544780 off
wg0 kujr4Z8eutQ8ebzFf33DLc3PNKrO3J+ZVy3jkrR1cUZ= (none) 82.132.137.204:67130 10.10.0.6/32 0 0 0 off
wg0 XcgkMRmxhQiIgXowYqsxUt1SlwUydXJd4Zmi8dgGeYe= (none) 180.255.226.203:56092 10.10.0.8/32 1829439121 1900247 1352639 off
wg0 tB9yFqLmyvcDD1rJ1rTgeKtKK98hdUL1jefMRt4XbDh= (none) 82.132.137.204:60184 10.10.0.7/32 1829037182 75047 184725 off
wg0 JH8Fz8KGH5vDYu3eUuWwRcTUcvRqFHZfMlNtsg2xZwF= (none) 91.142.150.210:51478 10.10.0.9/32 1829037123 985632 723582 off
wg0 Yx6kNq8xhPmKhYq0YqTxVt2ZmxZvdYKg5Ymj9fgHkGh= (none) 92.233.144.193:61112 10.10.0.10/32 1829037212 1350235 945301 off
wg1 JnR8bwIHKq7yqfNDOWBlTohSTxl7Wa9/sTLcf6tQ+4O= MUocVr6x4gjhT9vkkDrzm6hc/906dJHYcgk93iHvbmR= 51821 off
wg1 yQHRBjVgy2fC9EkUFlhdDPZ0Lekv4YM9+Q0GmnXw9gf= (none) 72.144.138.212:50135 10.10.1.2/32 1929850372 1678923 513470 off
wg1 C1gsotwrx9S9jsq9yzJgPPO0hNRYgrDsblmj6dSrkZE= (none) 59.232.145.213:49364 10.10.1.3/32 1929850156 5982563 4378204 off
wg1 qjkYZR6WfgnTGjnXrqokf+xw/fIFMHyPtLu9w3DwOF6= (none) (none) 10.10.1.4/32 0 0 0 off
wg1 JpK6HvHKLp9zmqDFQXBqUmxTSvW6Vp9/zTLbf6pT+7N= LQdcXs5y5dkgU0vmkCszm8hf/907fKHYdhk94jHvbnQ= 51821 off
wg1 tRFGGjUhy3hD0GmVEljeDQY0Mhlv5YM7+Q2HmnWy9je= (none) 69.157.149.222:51049 10.10.1.5/32 1929851223 1680921 523451 off
wg1 K2hzotyrx8S1jsq0yzHgTQO1kOYVhrDwblmj7eTrkZF= (none) 61.242.155.214:48012 10.10.1.6/32 1929851045 6052145 4435280 off
wg1 VliYZS7WggpUFkWNralkg+wz/eIHMHyStMpu0x4EoEJ= (none) (none) 10.10.1.7/32 0 0 0 off
wg1 kB8yFrKmyvaDF1uL2uUgeOsLL99jeUL2kefKRt3ZoFh= (none) 72.132.145.206:62084 10.10.1.8/32 1929137285 95023 197982 off
wg1 Z9fsqvwty8U9jqj1zyKgPRQ1hOXYgrFtcmli8fSprHF= (none) 68.243.154.222:54321 10.10.1.9/32 1929137125 1200475 890678 off
wg1 Lx9lNq9xhPnJhYr1YqYxVt3ZmyawdZLg5Zmj0fhGlJk= (none) 71.233.144.204:59012 10.10.1.10/32 1929137243 1450234 1006235 off

View File

@ -0,0 +1 @@
[{"device":"wg0","private_key":"Xa4Bq8AUFrjKp+Z283VDzEUVeOOn2wX/uuLTMUkkJens=","public_key":"mL2Co/VecYWtXSY6YUZAI6cAsFZDCEV+9iZKibNcWTu=","listen_port":45321,"fwmark":null,"peers":[{"public_key":"bN9QoMEqlKUpncq0Q8ye9yURczKwmbXzwVsG7A+RV2B=","preshared_key":null,"endpoint":"123.45.67.89:51820","latest_handshake":0,"transfer_rx":0,"transfer_sx":1532,"persistent_keepalive":-1,"allowed_ips":["0.0.0.0/0"]}]},{"device":"wg0","private_key":"yJ3PoNAqlNUpmcq0P7xv8zURdyKwmbZwwUsG9B+SV3C=","public_key":"kP2Lo/WfgVWtYSY7ZUZAJ7cBsEZECFV+8jYKidOcVTv=","listen_port":53211,"fwmark":null,"peers":[{"public_key":"dQ5AoNAqpOUlncq0P9ze8xURayLwmbYwwVsH8C+TV4D=","preshared_key":null,"endpoint":"203.0.113.4:51820","latest_handshake":0,"transfer_rx":0,"transfer_sx":2001,"persistent_keepalive":-1,"allowed_ips":["192.168.1.0/24"]}]},{"device":"wg0","private_key":"pR6DoOBqmNUlncq0P1wq9zUSeyJwmbVxxWsF7D+RU5E=","public_key":"qN2Mo/XghWWtXSY8YVZBK8cDsFZDCFQ+7kZKjbNcWTx=","listen_port":67514,"fwmark":null,"peers":[{"public_key":"tA8AoPCqoPUlncq0P8xe7xUSayKwmbWxxVsG8E+UV6F=","preshared_key":null,"endpoint":"198.51.100.15:51820","latest_handshake":0,"transfer_rx":0,"transfer_sx":1403,"persistent_keepalive":-1,"allowed_ips":["10.0.0.0/8"]}]},{"device":"wg0","private_key":"zU9CoQCqmQUlncq0P4wo6yUTbyJwmbYyyWsF9F+SV7G=","public_key":"vM2Ko/YigXWtYSY9YUZCJ9dCsGZECFV+5lZLjcOcVVy=","listen_port":79812,"fwmark":null,"peers":[{"public_key":"xC7DoRDqnRUlncq0P2wq9yUScyKwmbXzyWsH8F+TU8H=","preshared_key":null,"endpoint":"172.16.0.1:51820","latest_handshake":0,"transfer_rx":0,"transfer_sx":1872,"persistent_keepalive":-1,"allowed_ips":["172.16.0.0/16"]}]},{"device":"wg0","private_key":"rE4AoSCqnSUlncq0P7wv9zURdyLwmbZxzWsG9G+UV9I=","public_key":"fN2Oo/ZjhYUtXSZ0YUZDK8eDsFZDCFQ+4jYKjcNcVVw=","listen_port":91114,"fwmark":null,"peers":[]}]

View File

@ -0,0 +1,9 @@
wg0 Xa4Bq8AUFrjKp+Z283VDzEUVeOOn2wX/uuLTMUkkJens= mL2Co/VecYWtXSY6YUZAI6cAsFZDCEV+9iZKibNcWTu= 45321 off
wg0 bN9QoMEqlKUpncq0Q8ye9yURczKwmbXzwVsG7A+RV2B= (none) 123.45.67.89:51820 0.0.0.0/0 0 0 1532 off
wg0 yJ3PoNAqlNUpmcq0P7xv8zURdyKwmbZwwUsG9B+SV3C= kP2Lo/WfgVWtYSY7ZUZAJ7cBsEZECFV+8jYKidOcVTv= 53211 off
wg0 dQ5AoNAqpOUlncq0P9ze8xURayLwmbYwwVsH8C+TV4D= (none) 203.0.113.4:51820 192.168.1.0/24 0 0 2001 off
wg0 pR6DoOBqmNUlncq0P1wq9zUSeyJwmbVxxWsF7D+RU5E= qN2Mo/XghWWtXSY8YVZBK8cDsFZDCFQ+7kZKjbNcWTx= 67514 off
wg0 tA8AoPCqoPUlncq0P8xe7xUSayKwmbWxxVsG8E+UV6F= (none) 198.51.100.15:51820 10.0.0.0/8 0 0 1403 off
wg0 zU9CoQCqmQUlncq0P4wo6yUTbyJwmbYyyWsF9F+SV7G= vM2Ko/YigXWtYSY9YUZCJ9dCsGZECFV+5lZLjcOcVVy= 79812 off
wg0 xC7DoRDqnRUlncq0P2wq9yUScyKwmbXzyWsH8F+TU8H= (none) 172.16.0.1:51820 172.16.0.0/16 0 0 1872 off
wg0 rE4AoSCqnSUlncq0P7wv9zURdyLwmbZxzWsG9G+UV9I= fN2Oo/ZjhYUtXSZ0YUZDK8eDsFZDCFQ+4jYKjcNcVVw= 91114 off

BIN
tests/templates/.DS_Store vendored Normal file

Binary file not shown.

View File

@ -7,7 +7,6 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__))
class MyTests(unittest.TestCase):
# input
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iw-scan0.out'), 'r', encoding='utf-8') as f:
centos_7_7_iw_scan0 = f.read()
@ -15,6 +14,9 @@ class MyTests(unittest.TestCase):
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iw-scan1.out'), 'r', encoding='utf-8') as f:
centos_7_7_iw_scan1 = f.read()
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iw-scan2.out'), 'r', encoding='utf-8') as f:
centos_7_7_iw_scan2 = f.read()
# output
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iw-scan0.json'), 'r', encoding='utf-8') as f:
centos_7_7_iw_scan0_json = json.loads(f.read())
@ -22,6 +24,9 @@ class MyTests(unittest.TestCase):
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iw-scan1.json'), 'r', encoding='utf-8') as f:
centos_7_7_iw_scan1_json = json.loads(f.read())
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iw-scan2.json'), 'r', encoding='utf-8') as f:
centos_7_7_iw_scan2_json = json.loads(f.read())
def test_iw_scan_nodata(self):
"""
@ -41,6 +46,12 @@ class MyTests(unittest.TestCase):
"""
self.assertEqual(jc.parsers.iw_scan.parse(self.centos_7_7_iw_scan1, quiet=True), self.centos_7_7_iw_scan1_json)
def test_iw_scan2_centos_7_7(self):
"""
Test 'iw_scan' on Centos 7.7
"""
self.assertEqual(jc.parsers.iw_scan.parse(self.centos_7_7_iw_scan2, quiet=True), self.centos_7_7_iw_scan2_json)
if __name__ == '__main__':
unittest.main()

31
tests/test_pacman.py Normal file
View File

@ -0,0 +1,31 @@
import unittest
import os
import sys
sys.path.append(os.getcwd())
from tests import utils_for_test as test_utils
sys.path.pop()
# Execute these steps for standard tests:
# - Save this file as `test_{parser_name}.py` since the helper methods extract parser names from the filename.
# - Organize fixtures in `tests/fixtures` for optimal structure.
# - Format fixtures as follows (using double dashes):
# - `{parser_name}--{some_test_description}.out` for command output.
# - `{parser_name}--{some_test_description}.json` for expected JSON after parsing.
class MyTests(unittest.TestCase):
def test_pacman_nodata(self):
"""
Test 'pacman' with no data
"""
test_utils.run_no_data(self, __file__, [])
def test_pacman_all_fixtures(self):
"""
Test 'pacman' with various fixtures
"""
test_utils.run_all_fixtures(self, __file__)
if __name__ == '__main__':
unittest.main()

26
tests/test_wg_show.py Normal file
View File

@ -0,0 +1,26 @@
import unittest
import os
import sys
sys.path.append(os.getcwd())
from tests import utils_for_test as test_utils
sys.path.pop()
class MyTests(unittest.TestCase):
def test_wg_show_nodata(self):
"""
Test 'wg-show' with no data
"""
test_utils.run_no_data(self, __file__, [])
def test_wg_show_all_fixtures(self):
"""
Test 'wg-show' with various fixtures
"""
test_utils.run_all_fixtures(self, __file__)
if __name__ == "__main__":
unittest.main()