From c6247fb7fbf84b40a3f8d95a12d3a25cb43db1bb Mon Sep 17 00:00:00 2001 From: jokob-sk Date: Sun, 5 Jan 2025 13:04:36 +1100 Subject: [PATCH] initial commit --- netalertx/CHANGELOG.md | 3 + netalertx/Dockerfile | 118 ++++++++++++++++++ netalertx/README.md | 57 +++++++++ netalertx/apparmor.txt | 66 ++++++++++ netalertx/build.json | 11 ++ netalertx/config.json | 114 +++++++++++++++++ netalertx/icon.png | Bin 0 -> 6335 bytes netalertx/logo.png | Bin 0 -> 6335 bytes .../dependencies.d/init-netalertx-config | 1 + .../s6-overlay/s6-rc.d/init-alexbelgium/run | 43 +++++++ .../s6-overlay/s6-rc.d/init-alexbelgium/type | 1 + .../s6-overlay/s6-rc.d/init-alexbelgium/up | 1 + netalertx/updater.json | 8 ++ 13 files changed, 423 insertions(+) create mode 100644 netalertx/CHANGELOG.md create mode 100644 netalertx/Dockerfile create mode 100644 netalertx/README.md create mode 100644 netalertx/apparmor.txt create mode 100644 netalertx/build.json create mode 100644 netalertx/config.json create mode 100644 netalertx/icon.png create mode 100644 netalertx/logo.png create mode 100644 netalertx/rootfs/etc/s6-overlay/s6-rc.d/init-alexbelgium/dependencies.d/init-netalertx-config create mode 100644 netalertx/rootfs/etc/s6-overlay/s6-rc.d/init-alexbelgium/run create mode 100644 netalertx/rootfs/etc/s6-overlay/s6-rc.d/init-alexbelgium/type create mode 100644 netalertx/rootfs/etc/s6-overlay/s6-rc.d/init-alexbelgium/up create mode 100644 netalertx/updater.json diff --git a/netalertx/CHANGELOG.md b/netalertx/CHANGELOG.md new file mode 100644 index 000000000..ad3e6bd98 --- /dev/null +++ b/netalertx/CHANGELOG.md @@ -0,0 +1,3 @@ +## 0.0.1 + +- Initial commit diff --git a/netalertx/Dockerfile b/netalertx/Dockerfile new file mode 100644 index 000000000..67cb517a6 --- /dev/null +++ b/netalertx/Dockerfile @@ -0,0 +1,118 @@ +#============================# +# ALEXBELGIUM'S DOCKERFILE # +#============================# +# _.------. +# _.-` ('>.-`"""-. +# '.--'` _'` _ .--.) +# -' '-.-';` ` +# ' - _.' ``'--. +# '---` .-'""` +# /` +#=== Home Assistant Addon ===# + +################# +# 1 Build Image # +################# + +ARG BUILD_FROM +ARG BUILD_VERSION +FROM ${BUILD_FROM} + +################## +# 2 Modify Image # +################## + +# Set S6 wait time +ENV S6_CMD_WAIT_FOR_SERVICES=1 \ + S6_CMD_WAIT_FOR_SERVICES_MAXTIME=0 \ + S6_SERVICES_GRACETIME=0 + +# Global LSIO modifications +ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_lsio.sh" "/ha_lsio.sh" +ARG CONFIGLOCATION="/config/addons_config/netalertx" +RUN chmod 744 /ha_lsio.sh && if grep -qr "lsio" /etc; then /ha_lsio.sh "$CONFIGLOCATION"; fi && rm /ha_lsio.sh + +################## +# 3 Install apps # +################## + +# Add rootfs +COPY rootfs/ / + +# Uses /bin for compatibility purposes +# hadolint ignore=DL4005 +RUN if [ ! -f /bin/sh ] && [ -f /usr/bin/sh ]; then ln -s /usr/bin/sh /bin/sh; fi && \ + if [ ! -f /bin/bash ] && [ -f /usr/bin/bash ]; then ln -s /usr/bin/bash /bin/bash; fi + +# Modules +ARG MODULES="00-banner.sh 01-custom_script.sh 00-local_mounts.sh 00-smb_mounts.sh" + +# Automatic modules download +ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_automodules.sh" "/ha_automodules.sh" +RUN chmod 744 /ha_automodules.sh && /ha_automodules.sh "$MODULES" && rm /ha_automodules.sh + +# Manual apps +ENV PACKAGES="jq \ + curl \ + cifs-utils" + +# Automatic apps & bashio +ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_autoapps.sh" "/ha_autoapps.sh" +RUN chmod 744 /ha_autoapps.sh && /ha_autoapps.sh "$PACKAGES" && rm /ha_autoapps.sh + +################ +# 4 Entrypoint # +################ + +# Add entrypoint +ENV S6_STAGE2_HOOK=/ha_entrypoint.sh +ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_entrypoint.sh" "/ha_entrypoint.sh" + +# Entrypoint modifications +ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_entrypoint_modif.sh" "/ha_entrypoint_modif.sh" +RUN chmod 777 /ha_entrypoint.sh /ha_entrypoint_modif.sh && /ha_entrypoint_modif.sh && rm /ha_entrypoint_modif.sh + +# hadolint ignore=SC2013 +RUN \ + for file in $(grep -Esril "/local/config/addons_config/netalertx" /etc /defaults); do sed -i "s=/local/config/addons_config/netalertx=/local/config=g" "$file"; done + + +# +#WORKDIR / +#ENTRYPOINT [ "/usr/bin/env" ] +#CMD [ "/ha_entrypoint.sh" ] +#SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +############ +# 5 Labels # +############ + +ARG BUILD_ARCH +ARG BUILD_DATE +ARG BUILD_DESCRIPTION +ARG BUILD_NAME +ARG BUILD_REF +ARG BUILD_REPOSITORY +ARG BUILD_VERSION +LABEL \ + io.hass.name="${BUILD_NAME}" \ + io.hass.description="${BUILD_DESCRIPTION}" \ + io.hass.arch="${BUILD_ARCH}" \ + io.hass.type="addon" \ + io.hass.version=${BUILD_VERSION} \ + maintainer="alexbelgium (https://github.com/alexbelgium)" \ + org.opencontainers.image.title="${BUILD_NAME}" \ + org.opencontainers.image.description="${BUILD_DESCRIPTION}" \ + org.opencontainers.image.vendor="Home Assistant Add-ons" \ + org.opencontainers.image.authors="alexbelgium (https://github.com/alexbelgium)" \ + org.opencontainers.image.licenses="MIT" \ + org.opencontainers.image.url="https://github.com/alexbelgium" \ + org.opencontainers.image.source="https://github.com/${BUILD_REPOSITORY}" \ + org.opencontainers.image.documentation="https://github.com/${BUILD_REPOSITORY}/blob/main/README.md" \ + org.opencontainers.image.created=${BUILD_DATE} \ + org.opencontainers.image.revision=${BUILD_REF} \ + org.opencontainers.image.version=${BUILD_VERSION} + +#################### +# 6 HealthcheckNOT # +#################### diff --git a/netalertx/README.md b/netalertx/README.md new file mode 100644 index 000000000..2074516b1 --- /dev/null +++ b/netalertx/README.md @@ -0,0 +1,57 @@ +# Home assistant add-on: NetAlertX + +[![Donate][donation-badge]](https://www.buymeacoffee.com/alexbelgium) +[![Donate][paypal-badge]](https://www.paypal.com/donate/?hosted_button_id=DZFULJZTP3UQA) + +![Version](https://img.shields.io/badge/dynamic/json?label=Version&query=%24.version&url=https%3A%2F%2Fraw.githubusercontent.com%2Falexbelgium%2Fhassio-addons%2Fmaster%2Fnetalertx%2Fconfig.json) +![Ingress](https://img.shields.io/badge/dynamic/json?label=Ingress&query=%24.ingress&url=https%3A%2F%2Fraw.githubusercontent.com%2Falexbelgium%2Fhassio-addons%2Fmaster%2Fnetalertx%2Fconfig.json) +![Arch](https://img.shields.io/badge/dynamic/json?color=success&label=Arch&query=%24.arch&url=https%3A%2F%2Fraw.githubusercontent.com%2Falexbelgium%2Fhassio-addons%2Fmaster%2Fnetalertx%2Fconfig.json) + +[![Codacy Badge](https://app.codacy.com/project/badge/Grade/9c6cf10bdbba45ecb202d7f579b5be0e)](https://www.codacy.com/gh/alexbelgium/hassio-addons/dashboard?utm_source=github.com&utm_medium=referral&utm_content=alexbelgium/hassio-addons&utm_campaign=Badge_Grade) +[![GitHub Super-Linter](https://img.shields.io/github/actions/workflow/status/alexbelgium/hassio-addons/weekly-supelinter.yaml?label=Lint%20code%20base)](https://github.com/alexbelgium/hassio-addons/actions/workflows/weekly-supelinter.yaml) +[![Builder](https://img.shields.io/github/actions/workflow/status/alexbelgium/hassio-addons/onpush_builder.yaml?label=Builder)](https://github.com/alexbelgium/hassio-addons/actions/workflows/onpush_builder.yaml) + +[donation-badge]: https://img.shields.io/badge/Buy%20me%20a%20coffee%20(no%20paypal)-%23d32f2f?logo=buy-me-a-coffee&style=flat&logoColor=white +[paypal-badge]: https://img.shields.io/badge/Buy%20me%20a%20coffee%20with%20Paypal-0070BA?logo=paypal&style=flat&logoColor=white + +_Thanks to everyone having starred my repo! To star it click on the image below, then it will be on top right. Thanks!_ + +[![Stargazers repo roster for @alexbelgium/hassio-addons](https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.github/stars2.svg)](https://github.com/alexbelgium/hassio-addons/stargazers) + +![downloads evolution](https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/netalertx/stats.png) + +## About + +🖧🔍 WIFI / LAN intruder detector. Scans for devices connected to your network and alerts you if new and unknown devices are found. +This addon is based on the [docker image](https://github.com/jokob-sk/NetAlertX/tree/main/dockerfiles) from jokob-sk. + +## Installation + +The installation of this add-on is pretty straightforward and not different in +comparison to installing any other Hass.io add-on. + +1. [Add my Hass.io add-ons repository][repository] to your Hass.io instance. +1. Install this add-on. +1. Click the `Save` button to store your configuration. +1. Start the add-on. +1. Check the logs of the add-on to see if everything went well. +1. Carefully configure the add-on to your preferences, see the official documentation for for that. + +## Configuration + +1. If unavailable, the app generates a default app.conf and app.db file on the first run. +1. The preferred way is to manage the configuration via the Settings section in the UI, if UI is inaccessible you can modify app.conf in the /app/config/ folder directly +1. You have to specify which network(s) should be scanned. This is done by entering subnets that are accessible from the host. If you use the default ARPSCAN plugin, you have to specify at least one valid subnet and interface in the SCAN_SUBNETS setting. See the [documentation on How to set up multiple SUBNETS, VLANs and what are limitations](https://github.com/jokob-sk/NetAlertX/blob/main/docs/SUBNETS.md) for troubleshooting and more advanced scenarios. + +Webui can be found at . + +```yaml +PGID: user +GPID: user +localdisks: sda1 #put the hardware name of your drive to mount separated by commas, or its label. ex. sda1, sdb1, MYNAS... +networkdisks: "" # list of smbv2/3 servers to mount (optional) +cifsusername: "username" # smb username (optional) +cifspassword: "password" # smb password (optional) +``` + +[repository]: https://github.com/alexbelgium/hassio-addons diff --git a/netalertx/apparmor.txt b/netalertx/apparmor.txt new file mode 100644 index 000000000..f6d83b215 --- /dev/null +++ b/netalertx/apparmor.txt @@ -0,0 +1,66 @@ +#include + +profile netalertx_addon flags=(attach_disconnected,mediate_deleted) { + #include + + capability, + file, + signal, + mount, + umount, + remount, + network udp, + network tcp, + network dgram, + network stream, + network inet, + network inet6, + network netlink raw, + network unix dgram, + + capability setgid, + capability setuid, + capability sys_admin, + capability dac_read_search, + # capability dac_override, + # capability sys_rawio, + +# S6-Overlay + /init ix, + /run/{s6,s6-rc*,service}/** ix, + /package/** ix, + /command/** ix, + /run/{,**} rwk, + /dev/tty rw, + /bin/** ix, + /usr/bin/** ix, + /usr/lib/bashio/** ix, + /etc/s6/** rix, + /run/s6/** rix, + /etc/services.d/** rwix, + /etc/cont-init.d/** rwix, + /etc/cont-finish.d/** rwix, + /init rix, + /var/run/** mrwkl, + /var/run/ mrwkl, + /dev/i2c-1 mrwkl, + # Files required + /dev/fuse mrwkl, + /dev/sda1 mrwkl, + /dev/sdb1 mrwkl, + /dev/nvme0 mrwkl, + /dev/nvme1 mrwkl, + /dev/mmcblk0p1 mrwkl, + /dev/* mrwkl, + /tmp/** mrkwl, + + # Data access + /data/** rw, + + # suppress ptrace denials when using 'docker ps' or using 'ps' inside a container + ptrace (trace,read) peer=docker-default, + + # docker daemon confinement requires explict allow rule for signal + signal (receive) set=(kill,term) peer=/usr/bin/docker, + +} diff --git a/netalertx/build.json b/netalertx/build.json new file mode 100644 index 000000000..7852b6ed5 --- /dev/null +++ b/netalertx/build.json @@ -0,0 +1,11 @@ +{ + "build_from": { + "aarch64": "netalertx:latest", + "amd64": "netalertx:latest", + "armv7": "netalertx:latest", + "armv6": "netalertx:latest" + }, + "codenotary": { + "signer": "alexandrep.github@gmail.com" + } +} diff --git a/netalertx/config.json b/netalertx/config.json new file mode 100644 index 000000000..f755231be --- /dev/null +++ b/netalertx/config.json @@ -0,0 +1,114 @@ +{ + "arch": [ + "aarch64", + "amd64", + "armv7", + "armv6" + ], + "codenotary": "alexandrep.github@gmail.com", + "description": "🖧🔍 WIFI / LAN scanner, intruder, and presence detector", + "devices": [ + "/dev/dri", + "/dev/dri/card0", + "/dev/dri/card1", + "/dev/dri/renderD128", + "/dev/vchiq", + "/dev/video10", + "/dev/video11", + "/dev/video12", + "/dev/video13", + "/dev/video14", + "/dev/video15", + "/dev/video16", + "/dev/ttyUSB0", + "/dev/sda", + "/dev/sdb", + "/dev/sdc", + "/dev/sdd", + "/dev/sde", + "/dev/sdf", + "/dev/sdg", + "/dev/nvme", + "/dev/nvme0n1p1", + "/dev/nvme0n1p2", + "/dev/nvme0n1p3", + "/dev/nvme1n1p1", + "/dev/nvme1n1p2", + "/dev/nvme1n1p3", + "/dev/nvme2n1p1", + "/dev/nvme2n1p2", + "/dev/nvme3n1p3", + "/dev/mmcblk", + "/dev/fuse", + "/dev/sda1", + "/dev/sdb1", + "/dev/sdc1", + "/dev/sdd1", + "/dev/sde1", + "/dev/sdf1", + "/dev/sdg1", + "/dev/sda2", + "/dev/sdb2", + "/dev/sdc2", + "/dev/sdd2", + "/dev/sde2", + "/dev/sdf2", + "/dev/sdg2", + "/dev/sda3", + "/dev/sdb3", + "/dev/sda4", + "/dev/sdb4", + "/dev/sda5", + "/dev/sda6", + "/dev/sda7", + "/dev/sda8", + "/dev/nvme0", + "/dev/nvme1", + "/dev/nvme2" + ], + "environment": { + "PORT": "20211", + "TZ": "Europe/Berlin", + "APP_CONF_OVERRIDE":{"GRAPHQL_PORT":"20212"} + }, + "image": "ghcr.io/alexbelgium/netalertx-{arch}", + "init": false, + "map": [ + "config:rw", + "media:rw", + "share:rw", + "ssl" + ], + "name": "NetAlertX", + "options": { + "PGID": 0, + "PUID": 0 + }, + "ports": { + "20211/tcp": 20211, + "20212/tcp": 20212 + }, + "ports_description": { + "20211/tcp": "WebUI port", + "20212/tcp": "GraphQL port" + }, + "privileged": [ + "SYS_ADMIN", + "DAC_READ_SEARCH" + ], + "schema": { + "PGID": "int", + "PUID": "int", + "TZ": "str?", + "cifsdomain": "str?", + "cifspassword": "str?", + "cifsusername": "str?", + "localdisks": "str?", + "networkdisks": "str?" + }, + "slug": "netalertx", + "udev": true, + "url": "https://github.com/alexbelgium/hassio-addons", + "version": "0.0.1", + "webui": "[PROTO:ssl]://[HOST]:[PORT:20211]" +} diff --git a/netalertx/icon.png b/netalertx/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b9ff169722edf8accf62d7561416d8f7ab6d4e64 GIT binary patch literal 6335 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 B*F*pS literal 0 HcmV?d00001 diff --git a/netalertx/logo.png b/netalertx/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b9ff169722edf8accf62d7561416d8f7ab6d4e64 GIT binary patch literal 6335 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 B*F*pS literal 0 HcmV?d00001 diff --git a/netalertx/rootfs/etc/s6-overlay/s6-rc.d/init-alexbelgium/dependencies.d/init-netalertx-config b/netalertx/rootfs/etc/s6-overlay/s6-rc.d/init-alexbelgium/dependencies.d/init-netalertx-config new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/netalertx/rootfs/etc/s6-overlay/s6-rc.d/init-alexbelgium/dependencies.d/init-netalertx-config @@ -0,0 +1 @@ + diff --git a/netalertx/rootfs/etc/s6-overlay/s6-rc.d/init-alexbelgium/run b/netalertx/rootfs/etc/s6-overlay/s6-rc.d/init-alexbelgium/run new file mode 100644 index 000000000..1302f5c39 --- /dev/null +++ b/netalertx/rootfs/etc/s6-overlay/s6-rc.d/init-alexbelgium/run @@ -0,0 +1,43 @@ +#!/usr/bin/with-contenv bashio +# shellcheck shell=bash +set -e + +################## +# SYMLINK CONFIG # +################## + +#Create folders + +if [ ! -d /share/netalertx ]; then + echo "Creating /share/netalertx" + mkdir -p /share/netalertx + chown -R "$PUID:$PGID" /share/netalertx +else + chown -R "$PUID:$PGID" /share/netalertx +fi + +mkdir -p /config/www/local +if [ ! -d /share/netalertx/config ] && [ -d /config/www/local/config ]; then + echo "moving config folder" + mv /config/www/local/config /share/netalertx + ln -s /share/netalertx/config /config/www/local + echo "links done" +else + if [ -d /config/www/local/config ]; then rm -r /config/www/local/config; fi + ln -s /share/netalertx/config /config/www/local + echo "Using existing config" +fi + +mkdir -p /config/keys +if [ ! -d /share/netalertx/keys ]; then + echo "moving keys folder" + mv /config/keys /share/netalertx + ln -s /share/netalertx/keys /config + echo "links done" +else + rm -r /config/keys + ln -s /share/netalertx/keys /config + echo "Using existing keys folder" +fi + + diff --git a/netalertx/rootfs/etc/s6-overlay/s6-rc.d/init-alexbelgium/type b/netalertx/rootfs/etc/s6-overlay/s6-rc.d/init-alexbelgium/type new file mode 100644 index 000000000..bdd22a185 --- /dev/null +++ b/netalertx/rootfs/etc/s6-overlay/s6-rc.d/init-alexbelgium/type @@ -0,0 +1 @@ +oneshot diff --git a/netalertx/rootfs/etc/s6-overlay/s6-rc.d/init-alexbelgium/up b/netalertx/rootfs/etc/s6-overlay/s6-rc.d/init-alexbelgium/up new file mode 100644 index 000000000..55d7a583f --- /dev/null +++ b/netalertx/rootfs/etc/s6-overlay/s6-rc.d/init-alexbelgium/up @@ -0,0 +1 @@ +/etc/s6-overlay/s6-rc.d/init-alexbelgium/run diff --git a/netalertx/updater.json b/netalertx/updater.json new file mode 100644 index 000000000..460043583 --- /dev/null +++ b/netalertx/updater.json @@ -0,0 +1,8 @@ +{ + "last_update": "23-12-2024", + "repository": "alexbelgium/hassio-addons", + "slug": "netalertx", + "source": "github", + "upstream_repo": "jokob-sk/netalertx", + "upstream_version": "24.12.23" +}