.gitignore, documentation, other improvements

This commit is contained in:
blasebast 2026-04-04 21:45:48 +02:00
parent f68c0c978e
commit ac94bb4759
875 changed files with 434563 additions and 116 deletions

148
.gitignore vendored
View File

@ -1,10 +1,32 @@
# Environment and secrets
.env
.env.*
.env.local
.bitwarden_env
*.secret
secrets.yaml
secrets.yml
# SSH Keys and credentials
*.key
*.pem
*.p12
*.pfx
id_rsa
id_ed25519
id_ecdsa
.ssh/
# CrowdSec API credentials (auto-generated, contain passwords)
crowdsec/conf/local_api_credentials.yaml
crowdsec/conf/online_api_credentials.yaml
# IDE / tools
.claude/
.cursor/
.vscode/
.idea/
# Home Assistant sensitive files and directories
homeassistant/config/google-service-account.json
homeassistant/config/google-service-account*.json
@ -38,9 +60,24 @@ homeassistant/resolv.conf
*.wav
*.flac
*.webp
# ML model binaries
*.onnx
*.tflite
*.pt
*.pth
*.safetensors
# Piper TTS voice models
piper/*.onnx
piper/*.onnx.json
# Prometheus storage (time-series data blocks)
prometheus/storage/
# Database files
*.db
*.db-shm
*.db-wal
*.sqlite
*.sqlite3
*.sql
@ -91,28 +128,71 @@ out/
frigate/clips/
frigate/recordings/
frigate/cache/
frigate/model_cache/
# Frigate secrets and runtime state
frigate/.htpasswd
frigate/.jwt_secret
frigate/.exports
frigate/.timeline
frigate/.vacuum
# Immich
immich/data/
immich/cache/
immich/postgres/
immich/model-cache/
# Mosquitto (password files)
mosquitto/config/mosquitto.passwd
mosquitto/config/passwords.mqtt
# Media server data
jellyfin/data/
jellyfin/cache/
jellyfin/plugins/
jellyfin/config/data/
jellyfin/config/log/
jellyfin/config/plugins/
jellyfin/config/plugins_old/
jellyfin/config/root/
jellyfin/config/config/
jellyfin/config/.jellyfin-data
jellyfin/Downloads/
# Duplicati runtime/config data
duplicati/config/.bash_history
duplicati/config/.dotnet/
duplicati/config/control_dir_v2/
# Glance secrets
glance/.htpasswd
# Unifi
unifi/data/
unifi-db/
unifi-config/data/
unifi-config/log/
# Radarr - additional data dirs (config subdir pattern)
radarr/config/Backups/
radarr/config/Sentry/
radarr/config/*.pid
# Redis
redis/data/
# PostgreSQL
postgres/data/
postgres/
postgres18/data/
# Vault
# Vaultwarden / Bitwarden
vaultwarden/data/
bitwarden/attachments/
bitwarden/sends/
bitwarden/icon_cache/
bitwarden/data.db
bitwarden/data.db-shm
bitwarden/data.db-wal
# Traefik
traefik/letsencrypt/
@ -120,9 +200,71 @@ traefik/letsencrypt/
# Loki
loki/chunks/
loki/indexes/
loki/wal/
loki/data/
# Victoriametrics
# VictoriaMetrics
victoriametrics/
vm_data/
# CrowdSec - auto-managed content (downloaded by cscli, not manually edited)
crowdsec/data/
crowdsec/conf/hub/
crowdsec/conf/patterns/
# Ollama models (gigabytes of binary model files)
ollama_data/
# Open WebUI runtime data
open-webui_data/
# ChromaDB vector store (root-owned)
chromadb/data/
# Gotify data (root-owned)
gotify_data/
# Whisper models (root-owned, large binaries)
whisper/
# Perkeep data storage
perkeep/
# Portainer data
portainer/
# Embedded git repositories (managed independently)
ha-tahoma/
torrent-box-with-vpn/
wyoming-openwakeword/
# Sonarr/Radarr/Prowlarr - runtime data (databases, crash reports, media covers)
sonarr/Sentry/
sonarr/logs/
sonarr/Backups/
sonarr/MediaCover/
sonarr/*.pid
radarr/Sentry/
radarr/logs/
radarr/Backups/
radarr/MediaCover/
radarr/*.pid
prowlarr/Backups/
prowlarr/logs/
prowlarr/*.pid
# qBittorrent runtime data
qbit-vpn/config/.bash_history
qbit-vpn/config/.wget-hsts
qbit-vpn/config/data/qBittorrent/logs/
qbit-vpn/config/qBittorrent/logs/
# Transmission runtime data + VPN credentials (root-owned)
transmission-vpn/transmission-home/
# Side agent
side-agent/manifest/
# Claude Code session data and instructions
.claude/
CLAUDE.md

99
CLAUDE.md Normal file
View File

@ -0,0 +1,99 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Project Overview
This is a Docker-based home infrastructure stack running 40+ self-hosted services. The primary orchestration file is `docker-compose.yaml` (2000+ lines). All services are configured via environment variables in `.env`.
Domain: `sebson.space` — Traefik handles reverse proxy and Let's Encrypt TLS for all subdomains.
## Common Commands
All commands must be run from `/home/seba/mydocker`.
```bash
# Service management
docker compose up -d # Start all services
docker compose down # Stop all services
docker compose ps # List running containers
docker compose logs -f <service> # Follow logs for a service
docker compose restart <service> # Restart a service
# Upgrade a specific service (pull + recreate)
./upgrade-container-by-name.sh <service> # Upgrade service
./upgrade-container-by-name.sh <service> prune # Upgrade + prune old images
# Database backup (dumps all PostgreSQL DBs → Google Drive via rclone)
./backup_db.sh
# Truncate container logs
./truncate_logs.sh <container_name>
```
### torrent-box-with-vpn subproject
```bash
cd torrent-box-with-vpn
make start / stop / restart
make update_containers # pull + restart all
make generate_certificate
make backup
```
## Architecture
### Reverse Proxy
Traefik (`traefik:v3.6.8`) is the single entry point for all HTTPS traffic. Services opt-in via Docker labels (`traefik.enable=true`). Let's Encrypt certs stored in `./traefik/letsencrypt/`. Dashboard at `traefik.sebson.space`.
### Networking
- **Host network**: `homeassistant`, `esphome`, `mosquitto`, `unifi`, `unifi-db`, `node-exporter` — these need direct host network access for device discovery/mDNS/hardware metrics.
- **VPN namespace**: `qbittorrent`, `radarr`, `prowlarr` route all traffic through `gluetun` (NordVPN, Germany). These services connect via `network_mode: "service:gluetun"`.
- Everything else uses the default bridge network.
### Storage Layout
| Mount | Purpose |
|-------|---------|
| `/media/seagata16t/` | 16TB — photos, Hikvision recordings, backups |
| `/media/evo2t/` | Fast SSD — Frigate clips, caches |
| `/media/asustor/` | NAS — qBit downloads, movies |
| `/media/wd1t/` | Secondary storage |
### Key Service Groups
**Home Automation**: Home Assistant (stable) → Mosquitto (MQTT) → ESPHome (ESP devices) + Frigate (cameras with AMD GPU `radeonsi`).
**Media**: Jellyfin + Immich (PostgreSQL 14 with vectorchord, ML via CLIP/buffalo_l, Redis cache).
**Monitoring stack**: Prometheus → Grafana + Victoria Metrics (long-term). Logs: Promtail → Loki. Node Exporter, cAdvisor, Ping Exporter, Pushgateway, SmartCTL Exporter.
**Databases**: `postgres18` (PostgreSQL 18) serves homeassistant, bitwarden/vaultwarden, and immich. MongoDB 4.4 serves UniFi controller.
**Security**: Crowdsec (analyzes Traefik + auth logs), Bitwarden/Vaultwarden (YubiKey 2FA).
### Custom Python Services (`side-agent/`)
A custom container runs three daemons:
- `snapit.py` — Monitors Frigate clips, detects objects, pushes metrics to Pushgateway
- `container_manager.py` — Tracks container versions in `side-agent/manifest/container_versions.yaml`, automates updates
- `backup_scheduler.py` — Schedules backup operations
Dependencies: `requests`, `docker`, `PyYAML`, `python-dateutil`, `schedule`.
### Brana Frontend
Custom nginx-based dashboard built from a local `Dockerfile` in `./brana/`. Static site served at `brana.sebson.space`.
## Key Configuration Files
- **`docker-compose.yaml`** — Single source of truth for all services
- **`.env`** — All secrets and environment variables (DB passwords, VPN credentials, API keys, static IPs `HOST_IP_HA`, `HOST_IP_ADGUARD`)
- **`prometheus/prometheus.yml`** — Scrape targets
- **`loki/loki-config.yaml`** / **`promtail/promtail-config.yaml`** — Log pipeline
- **`side-agent/manifest/container_versions.yaml`** — Tracked container versions for automated updates
- **`frigate/config`** — Camera definitions and AI detection config
## Environment Conventions
- `TZ=Europe/Prague`
- `PUID=1000`, `PGID=1000` — Used by LinuxServer.io images for file permission alignment
- PostgreSQL superuser: `homeassistant` (historical default, used across all DBs)
- Backup logs: `/home/seba/mydocker/backup.log`

27
Dockerfile.openclaw Normal file
View File

@ -0,0 +1,27 @@
FROM node:22-alpine
# Install dependencies
RUN apk add --no-cache \
python3 \
make \
g++ \
curl \
git \
bash
# Install OpenClaw from npm
RUN npm install -g openclaw-cli
# Create config directory
RUN mkdir -p /root/.openclaw
# Expose ports
EXPOSE 3000 3001
# Health check
HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \
CMD curl -f http://localhost:3000/health 2>/dev/null || exit 1
# Start OpenClaw with CLI command
ENTRYPOINT ["openclaw-cli"]
CMD ["start"]

282
OPENCLAW_SETUP.md Normal file
View File

@ -0,0 +1,282 @@
# OpenClaw Setup Guide
**OpenClaw**: Personal AI Assistant that executes actions (emails, calendar, shell commands, API integrations)
## Quick Setup
### 1. Configure Secrets
Edit `~/.openclaw_secrets` with your API keys:
```bash
nano ~/.openclaw_secrets
```
Fill in:
- `ANTHROPIC_API_KEY` - Claude API from Anthropic
- `OPENAI_API_KEY` - GPT-4 / Codex from OpenAI
- `GITHUB_TOKEN` - GitHub Copilot API access
- `TWILIO_*` - WhatsApp integration (optional)
- `TELEGRAM_*` - Telegram bot integration (optional)
### 2. Load Secrets
```bash
source ~/.openclaw_secrets
```
Or they auto-load when you open a new shell (bashrc sources them).
### 3. Start Service
```bash
cd ~/mydocker
docker-compose up -d openclaw
```
## Access OpenClaw
### Web UI
- **URL**: https://openclaw.sebson.space (via Traefik)
- **Port**: 3000
- Interface for managing tasks, memory, integrations
### CLI
```bash
# Helper function (auto-loaded)
openclaw-cli "do something"
# Or directly
docker-compose exec openclaw openclaw "command"
```
### WhatsApp
Send message to configured Twilio number → OpenClaw responds and executes
### Telegram
Send message to bot (if `TELEGRAM_BOT_TOKEN` configured)
### API
- **Endpoint**: http://localhost:3001
- **Usage**:
```bash
curl -X POST http://localhost:3001/api/execute \
-H "Content-Type: application/json" \
-d '{"action":"email","to":"user@example.com","subject":"test"}'
```
## Bash Helpers
Auto-added to `~/.bashrc`:
```bash
# Check which integrations are configured
openclaw-secrets
# Start the service
openclaw-start
# View logs
openclaw-logs
# Execute command via CLI
openclaw-cli "send email to john@example.com saying hello"
```
## Configuration
**File**: `/home/seba/mydocker/openclaw-config.json`
Key settings:
- `ai.provider` - Default AI model (claude, gpt, copilot)
- `integrations` - Enable/disable services (WhatsApp, Telegram, Gmail, GitHub, etc.)
- `system.sandbox` - Run in sandbox mode (safe)
- `system.shellAccess` - Allow shell command execution
- `webUI.port` - Web interface port (3000)
- `api.port` - REST API port (3001)
## AI Models Priority
OpenClaw tries in order:
1. **Claude** (Anthropic) - Recommended, most capable
2. **GPT-4** (OpenAI) - Alternative
3. **Copilot** (GitHub) - Code-focused
Configure via `OPENCLAW_MODEL` env var or config file.
## Persistent Memory
- **Location**: `/data/memory` (Docker volume)
- **Survives restarts**: Yes
- **Clearable**: `docker-compose down` won't delete it
Memory stores:
- Your preferences
- Past conversations
- Learned patterns
- Custom skills
## Security & Sandbox
**⚠️ Important**:
- OpenClaw runs with shell access (configurable via `system.shellAccess`)
- Docker container is sandboxed from host
- API keys stored in environment (not in code)
- Config file mounted read-only
**To disable shell access** (safer):
Edit `openclaw-config.json`:
```json
"system": {
"shellAccess": false
}
```
Then restart:
```bash
docker-compose restart openclaw
```
## Skills & Plugins
OpenClaw can:
- Read/write files
- Execute shell commands (if enabled)
- Call APIs (50+ integrations)
- Send emails, messages
- Manage calendars
- **Write its own plugins** (with safe limits)
## Troubleshooting
### Check Secrets Are Loaded
```bash
openclaw-secrets
```
### View Logs
```bash
openclaw-logs
```
### Rebuild Image
```bash
docker-compose build --no-cache openclaw
```
### Full Reset (deletes memory)
```bash
docker-compose down openclaw
docker volume rm mydocker_openclaw_memory
docker-compose up -d openclaw
```
## Integration Examples
### Send Email (via Gmail)
```bash
openclaw-cli "send email to boss@company.com subject 'report' body 'attached is...'"
```
### Check Calendar
```bash
openclaw-cli "what's on my calendar tomorrow"
```
### Execute Command
```bash
openclaw-cli "run git status in /home/seba/project"
```
### GitHub Action
```bash
openclaw-cli "create pull request to close issue #123"
```
## Environment Variables
All OpenClaw settings via `.env`:
```bash
ANTHROPIC_API_KEY=sk-ant-...
OPENAI_API_KEY=sk-...
GITHUB_TOKEN=ghp_...
TWILIO_ACCOUNT_SID=AC...
TWILIO_AUTH_TOKEN=...
TELEGRAM_BOT_TOKEN=...
```
## Docker Commands
```bash
# Start
docker-compose up -d openclaw
# Stop
docker-compose stop openclaw
# Restart
docker-compose restart openclaw
# View logs
docker-compose logs -f openclaw
# Shell access
docker-compose exec openclaw /bin/bash
# Delete service (keeps memory/config)
docker-compose down openclaw
# Rebuild
docker-compose build --no-cache openclaw && docker-compose up -d openclaw
```
## Next Steps
1. ✅ Add your API keys to `~/.openclaw_secrets`
2. ✅ Run `source ~/.openclaw_secrets`
3. ✅ Start service: `openclaw-start`
4. ✅ Access Web UI: https://openclaw.sebson.space
5. ✅ Try CLI: `openclaw-cli "hello"`
6. ✅ Set up WhatsApp/Telegram (optional)
## Useful Resources
- **GitHub**: https://github.com/openclaw/openclaw
- **Docs**: https://openclaw.ai/docs
- **API Docs**: https://openclaw.ai/api
## Domeny
### Web UI
- Domain: `openclaw.sebson.space` (dodane do DNS)
- Internal: `http://localhost:3000`
- Via Traefik: `https://openclaw.sebson.space`
### API
- Internal: `http://localhost:3007` (changed from 3001 to avoid Grafana conflict)
- Via Traefik: `https://api.openclaw.sebson.space` (optional - requires DNS record)
## Port Mapping
```
Host → Container
3000 → 3000 (Web UI)
3007 → 3001 (API)
```
## Komunikacja
### Telegram ✅ (primary)
- Enabled
- Wymaga: `TELEGRAM_BOT_TOKEN`, `TELEGRAM_CHAT_ID`
- Bot will respond to messages and execute actions
### WhatsApp (placeholder)
- Disabled (ale możesz włączyć)
- Wymaga: Twilio account + `TWILIO_*` variables
- Jeśli będziesz chcieć - wystarczy zmienić `"enabled": false` na `true` w config
### CLI ✅ (always available)
```bash
openclaw-cli "send message to telegram: hello"
```

View File

@ -0,0 +1,182 @@
http:
pprof:
port: 6060
enabled: false
address: 0.0.0.0:80
session_ttl: 720h
users:
- name: admin
password: $2a$10$xM/dIkbsAhZk7N.AM0VcaOULmzA3CadsMaINUjt3wg.aFMx0YsFx2
auth_attempts: 5
block_auth_min: 15
http_proxy: ""
language: ""
theme: auto
dns:
bind_hosts:
- 0.0.0.0
port: 53
anonymize_client_ip: false
ratelimit: 20
ratelimit_subnet_len_ipv4: 24
ratelimit_subnet_len_ipv6: 56
ratelimit_whitelist: []
refuse_any: true
upstream_dns:
- https://dns10.quad9.net/dns-query
upstream_dns_file: ""
bootstrap_dns:
- 9.9.9.10
- 149.112.112.10
- 2620:fe::10
- 2620:fe::fe:10
fallback_dns: []
upstream_mode: load_balance
fastest_timeout: 1s
allowed_clients: []
disallowed_clients: []
blocked_hosts:
- version.bind
- id.server
- hostname.bind
trusted_proxies:
- 127.0.0.0/8
- ::1/128
cache_size: 4194304
cache_ttl_min: 0
cache_ttl_max: 0
cache_optimistic: false
bogus_nxdomain: []
aaaa_disabled: false
enable_dnssec: false
edns_client_subnet:
custom_ip: ""
enabled: false
use_custom: false
max_goroutines: 300
handle_ddr: true
ipset: []
ipset_file: ""
bootstrap_prefer_ipv6: false
upstream_timeout: 10s
private_networks: []
use_private_ptr_resolvers: false
local_ptr_upstreams: []
use_dns64: false
dns64_prefixes: []
serve_http3: false
use_http3_upstreams: false
serve_plain_dns: true
hostsfile_enabled: true
pending_requests:
enabled: true
tls:
enabled: false
server_name: ""
force_https: false
port_https: 443
port_dns_over_tls: 853
port_dns_over_quic: 853
port_dnscrypt: 0
dnscrypt_config_file: ""
allow_unencrypted_doh: false
certificate_chain: ""
private_key: ""
certificate_path: ""
private_key_path: ""
strict_sni_check: false
querylog:
dir_path: ""
ignored: []
interval: 2160h
size_memory: 1000
enabled: true
file_enabled: true
statistics:
dir_path: ""
ignored: []
interval: 24h
enabled: true
filters:
- enabled: true
url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_1.txt
name: AdGuard DNS filter
id: 1
- enabled: false
url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_2.txt
name: AdAway Default Blocklist
id: 2
whitelist_filters: []
user_rules: []
dhcp:
enabled: false
interface_name: ""
local_domain_name: lan
dhcpv4:
gateway_ip: ""
subnet_mask: ""
range_start: ""
range_end: ""
lease_duration: 86400
icmp_timeout_msec: 1000
options: []
dhcpv6:
range_start: ""
lease_duration: 86400
ra_slaac_only: false
ra_allow_slaac: false
filtering:
blocking_ipv4: ""
blocking_ipv6: ""
blocked_services:
schedule:
time_zone: Europe/Prague
ids: []
protection_disabled_until: null
safe_search:
enabled: false
bing: true
duckduckgo: true
ecosia: true
google: true
pixabay: true
yandex: true
youtube: true
blocking_mode: default
parental_block_host: family-block.dns.adguard.com
safebrowsing_block_host: standard-block.dns.adguard.com
rewrites: []
safe_fs_patterns:
- /opt/adguardhome/work/userfilters/*
safebrowsing_cache_size: 1048576
safesearch_cache_size: 1048576
parental_cache_size: 1048576
cache_time: 30
filters_update_interval: 24
blocked_response_ttl: 10
filtering_enabled: true
parental_enabled: false
safebrowsing_enabled: false
protection_enabled: true
clients:
runtime_sources:
whois: true
arp: true
rdns: true
dhcp: true
hosts: true
persistent: []
log:
enabled: true
file: ""
max_backups: 0
max_size: 100
max_age: 3
compress: false
local_time: false
verbose: false
os:
group: ""
user: ""
rlimit_nofile: 0
schema_version: 29

View File

@ -0,0 +1,187 @@
bind_host: 0.0.0.0
bind_port: 3000
users:
- name: seba
password: $2y$05$1VfPT5J0MaEADNU5wOCiTuzpfJ6b3P86CEduu3uDxZQnyDPCvwc5C
http_proxy: ""
language: en
rlimit_nofile: 0
debug_pprof: false
web_session_ttl: 720
dns:
bind_host: 0.0.0.0
port: 53
statistics_interval: 90
querylog_enabled: true
querylog_file_enabled: true
querylog_interval: 90
querylog_size_memory: 1000
anonymize_client_ip: false
protection_enabled: true
blocking_mode: null_ip
blocking_ipv4: ""
blocking_ipv6: ""
blocked_response_ttl: 10
parental_block_host: family-block.dns.adguard.com
safebrowsing_block_host: standard-block.dns.adguard.com
ratelimit: 20
ratelimit_whitelist: []
refuse_any: true
upstream_dns:
- https://dns.quad9.net/dns-query
- '[/local/lan/168.192.in-addr.arpa/]192.168.1.1'
upstream_dns_file: ""
bootstrap_dns:
- 192.168.1.1
- 9.9.9.9
- 8.8.8.8
- 1.0.0.1
all_servers: false
fastest_addr: true
allowed_clients:
- 192.168.1.0/24
disallowed_clients:
- 192.168.1.24
- 192.168.1.24
- 192.168.1.24
- 192.168.1.24
blocked_hosts:
- onet.pl
cache_size: 4194304
cache_ttl_min: 0
cache_ttl_max: 0
bogus_nxdomain: []
aaaa_disabled: false
enable_dnssec: false
edns_client_subnet: false
max_goroutines: 300
ipset: []
filtering_enabled: true
filters_update_interval: 24
parental_enabled: false
safesearch_enabled: false
safebrowsing_enabled: false
safebrowsing_cache_size: 1048576
safesearch_cache_size: 1048576
parental_cache_size: 1048576
cache_time: 30
rewrites:
- domain: pornhub.com
answer: google.com
blocked_services:
- epic_games
- reddit
- mail_ru
tls:
enabled: false
server_name: ""
force_https: false
port_https: 443
port_dns_over_tls: 853
port_dns_over_quic: 784
allow_unencrypted_doh: false
strict_sni_check: false
certificate_chain: ""
private_key: ""
certificate_path: ""
private_key_path: ""
filters:
- enabled: true
url: https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt
name: AdGuard Simplified Domain Names filter
id: 1
- enabled: true
url: https://adaway.org/hosts.txt
name: AdAway
id: 2
- enabled: true
url: https://hosts-file.net/ad_servers.txt
name: hpHosts - Ad and Tracking servers only
id: 3
- enabled: true
url: https://www.malwaredomainlist.com/hostslist/hosts.txt
name: MalwareDomainList.com Hosts List
id: 4
- enabled: true
url: https://someonewhocares.org/hosts/zero/hosts
name: Dan Pollock's List
id: 1607944271
- enabled: true
url: https://raw.githubusercontent.com/DandelionSprout/adfilt/master/GameConsoleAdblockList.txt
name: Game Console Adblock List
id: 1607944272
- enabled: true
url: https://raw.githubusercontent.com/Perflyst/PiHoleBlocklist/master/SmartTV-AGH.txt
name: Perflyst and Dandelion Sprout's Smart-TV Blocklist
id: 1607944273
- enabled: true
url: https://pgl.yoyo.org/adservers/serverlist.php?hostformat=adblockplus&showintro=1&mimetype=plaintext
name: Peter Lowe's List
id: 1607944274
- enabled: true
url: https://raw.githubusercontent.com/durablenapkin/scamblocklist/master/adguard.txt
name: Scam Blocklist by DurableNapkin
id: 1607944275
- enabled: true
url: https://raw.githubusercontent.com/Spam404/lists/master/main-blacklist.txt
name: Spam404
id: 1607944276
- enabled: true
url: https://raw.githubusercontent.com/mitchellkrogza/The-Big-List-of-Hacked-Malware-Web-Sites/master/hacked-domains.list
name: The Big List of Hacked Malware Web Sites
id: 1607944277
- enabled: true
url: https://raw.githubusercontent.com/MajkiIT/polish-ads-filter/master/polish-pihole-filters/hostfile.txt
name: 'POL: Polish filters for Pi hole'
id: 1607944278
- enabled: true
url: https://paulgb.github.io/BarbBlock/blacklists/hosts-file.txt
name: BarbBlock
id: 1607944279
- enabled: true
url: https://raw.githubusercontent.com/cchevy/macedonian-pi-hole-blocklist/master/hosts.txt
name: 'MKD: Macedonian Pi-hole Blocklist'
id: 1614119344
- enabled: true
url: https://anti-ad.net/easylist.txt
name: 'CHN: anti-AD'
id: 1614119345
- enabled: true
url: https://raw.githubusercontent.com/DRSDavidSoft/additional-hosts/master/domains/blacklist/unwanted-iranian.txt
name: 'IRN: Unwanted Iranian domains'
id: 1614119346
whitelist_filters: []
user_rules:
- /\S+\.onet\.pl/
- '||staging.mycloud.com^$important'
- '@@||www.reddit.com^$important'
- '@@||styles.redditmedia.com^$important'
- '@@||thepiratebay.rocks^$important'
- '@@||sport.onet.pl^$important'
- '@@||clickserve.dartsearch.net^$important'
- ""
dhcp:
enabled: false
interface_name: ""
dhcpv4:
gateway_ip: ""
subnet_mask: ""
range_start: ""
range_end: ""
lease_duration: 86400
icmp_timeout_msec: 1000
options: []
dhcpv6:
range_start: ""
lease_duration: 86400
ra_slaac_only: false
ra_allow_slaac: false
clients: []
log_compress: false
log_localtime: false
log_max_backups: 0
log_max_size: 100
log_max_age: 3
log_file: ""
verbose: false
schema_version: 7

121280
adguard/work/data/filters/1.txt Executable file

File diff suppressed because it is too large Load Diff

35
adguard/work/data/querylog.json Executable file
View File

@ -0,0 +1,35 @@
{"T":"2025-08-01T20:22:05.714887114+02:00","QH":"incoming.telemetry.mozilla.org","QT":"A","QC":"IN","CP":"","Answer":"8LSBgAABAAEAAAAACGluY29taW5nCXRlbGVtZXRyeQdtb3ppbGxhA29yZwAAAQABwAwAAQABAAAACgAEAAAAAA==","IP":"192.168.1.179","Result":{"Rules":[{"Text":"||incoming.telemetry.mozilla.org^","IP":"","FilterListID":1}],"Reason":3,"IsFiltered":true},"Elapsed":254952}
{"T":"2025-08-01T20:22:06.725926833+02:00","QH":"incoming.telemetry.mozilla.org","QT":"A","QC":"IN","CP":"","Answer":"8LSBgAABAAEAAAAACGluY29taW5nCXRlbGVtZXRyeQdtb3ppbGxhA29yZwAAAQABwAwAAQABAAAACgAEAAAAAA==","IP":"192.168.1.179","Result":{"Rules":[{"Text":"||incoming.telemetry.mozilla.org^","IP":"","FilterListID":1}],"Reason":3,"IsFiltered":true},"Elapsed":65923}
{"T":"2025-08-01T20:22:08.800800264+02:00","QH":"incoming.telemetry.mozilla.org","QT":"A","QC":"IN","CP":"","Answer":"8LSBgAABAAEAAAAACGluY29taW5nCXRlbGVtZXRyeQdtb3ppbGxhA29yZwAAAQABwAwAAQABAAAACgAEAAAAAA==","IP":"192.168.1.179","Result":{"Rules":[{"Text":"||incoming.telemetry.mozilla.org^","IP":"","FilterListID":1}],"Reason":3,"IsFiltered":true},"Elapsed":96983}
{"T":"2025-08-01T20:22:09.842624258+02:00","QH":"incoming.telemetry.mozilla.org","QT":"A","QC":"IN","CP":"","Answer":"8LSBgAABAAEAAAAACGluY29taW5nCXRlbGVtZXRyeQdtb3ppbGxhA29yZwAAAQABwAwAAQABAAAACgAEAAAAAA==","IP":"192.168.1.179","Result":{"Rules":[{"Text":"||incoming.telemetry.mozilla.org^","IP":"","FilterListID":1}],"Reason":3,"IsFiltered":true},"Elapsed":78783}
{"T":"2025-08-01T20:22:11.935586694+02:00","QH":"incoming.telemetry.mozilla.org","QT":"A","QC":"IN","CP":"","Answer":"8LSBgAABAAEAAAAACGluY29taW5nCXRlbGVtZXRyeQdtb3ppbGxhA29yZwAAAQABwAwAAQABAAAACgAEAAAAAA==","IP":"192.168.1.179","Result":{"Rules":[{"Text":"||incoming.telemetry.mozilla.org^","IP":"","FilterListID":1}],"Reason":3,"IsFiltered":true},"Elapsed":174058}
{"T":"2025-08-01T20:22:16.068504208+02:00","QH":"incoming.telemetry.mozilla.org","QT":"A","QC":"IN","CP":"","Answer":"8LSBgAABAAEAAAAACGluY29taW5nCXRlbGVtZXRyeQdtb3ppbGxhA29yZwAAAQABwAwAAQABAAAACgAEAAAAAA==","IP":"192.168.1.179","Result":{"Rules":[{"Text":"||incoming.telemetry.mozilla.org^","IP":"","FilterListID":1}],"Reason":3,"IsFiltered":true},"Elapsed":59961}
{"T":"2025-08-01T20:22:24.15062758+02:00","QH":"incoming.telemetry.mozilla.org","QT":"A","QC":"IN","CP":"","Answer":"8LSBgAABAAEAAAAACGluY29taW5nCXRlbGVtZXRyeQdtb3ppbGxhA29yZwAAAQABwAwAAQABAAAACgAEAAAAAA==","IP":"192.168.1.179","Result":{"Rules":[{"Text":"||incoming.telemetry.mozilla.org^","IP":"","FilterListID":1}],"Reason":3,"IsFiltered":true},"Elapsed":94580}
{"T":"2025-08-01T20:22:40.317795615+02:00","QH":"incoming.telemetry.mozilla.org","QT":"A","QC":"IN","CP":"","Answer":"8LSBgAABAAEAAAAACGluY29taW5nCXRlbGVtZXRyeQdtb3ppbGxhA29yZwAAAQABwAwAAQABAAAACgAEAAAAAA==","IP":"192.168.1.179","Result":{"Rules":[{"Text":"||incoming.telemetry.mozilla.org^","IP":"","FilterListID":1}],"Reason":3,"IsFiltered":true},"Elapsed":236911}
{"T":"2025-08-01T20:23:10.499527932+02:00","QH":"incoming.telemetry.mozilla.org","QT":"A","QC":"IN","CP":"","Answer":"8LSBgAABAAEAAAAACGluY29taW5nCXRlbGVtZXRyeQdtb3ppbGxhA29yZwAAAQABwAwAAQABAAAACgAEAAAAAA==","IP":"192.168.1.179","Result":{"Rules":[{"Text":"||incoming.telemetry.mozilla.org^","IP":"","FilterListID":1}],"Reason":3,"IsFiltered":true},"Elapsed":100085}
{"T":"2025-08-01T20:23:15.388235155+02:00","QH":"app-measurement.com","QT":"A","QC":"IN","CP":"","Answer":"dHaBgAABAAEAAAAAD2FwcC1tZWFzdXJlbWVudANjb20AAAEAAcAMAAEAAQAAAAoABAAAAAA=","IP":"192.168.1.202","Result":{"Rules":[{"Text":"||app-measurement.com^","IP":"","FilterListID":1}],"Reason":3,"IsFiltered":true},"Elapsed":341598}
{"T":"2025-08-01T20:23:16.393925239+02:00","QH":"app-measurement.com","QT":"A","QC":"IN","CP":"","Answer":"dHaBgAABAAEAAAAAD2FwcC1tZWFzdXJlbWVudANjb20AAAEAAcAMAAEAAQAAAAoABAAAAAA=","IP":"192.168.1.202","Result":{"Rules":[{"Text":"||app-measurement.com^","IP":"","FilterListID":1}],"Reason":3,"IsFiltered":true},"Elapsed":61258}
{"T":"2025-08-01T20:23:18.458758694+02:00","QH":"app-measurement.com","QT":"A","QC":"IN","CP":"","Answer":"dHaBgAABAAEAAAAAD2FwcC1tZWFzdXJlbWVudANjb20AAAEAAcAMAAEAAQAAAAoABAAAAAA=","IP":"192.168.1.202","Result":{"Rules":[{"Text":"||app-measurement.com^","IP":"","FilterListID":1}],"Reason":3,"IsFiltered":true},"Elapsed":69887}
{"T":"2025-08-01T20:23:19.492962891+02:00","QH":"app-measurement.com","QT":"A","QC":"IN","CP":"","Answer":"dHaBgAABAAEAAAAAD2FwcC1tZWFzdXJlbWVudANjb20AAAEAAcAMAAEAAQAAAAoABAAAAAA=","IP":"192.168.1.202","Result":{"Rules":[{"Text":"||app-measurement.com^","IP":"","FilterListID":1}],"Reason":3,"IsFiltered":true},"Elapsed":83502}
{"T":"2025-08-01T20:24:44.942514109+02:00","QH":"app-measurement.com","QT":"A","QC":"IN","CP":"","Answer":"uTKBgAABAAEAAAAAD2FwcC1tZWFzdXJlbWVudANjb20AAAEAAcAMAAEAAQAAAAoABAAAAAA=","IP":"192.168.1.202","Result":{"Rules":[{"Text":"||app-measurement.com^","IP":"","FilterListID":1}],"Reason":3,"IsFiltered":true},"Elapsed":98833}
{"T":"2025-08-01T20:24:45.950280192+02:00","QH":"app-measurement.com","QT":"A","QC":"IN","CP":"","Answer":"uTKBgAABAAEAAAAAD2FwcC1tZWFzdXJlbWVudANjb20AAAEAAcAMAAEAAQAAAAoABAAAAAA=","IP":"192.168.1.202","Result":{"Rules":[{"Text":"||app-measurement.com^","IP":"","FilterListID":1}],"Reason":3,"IsFiltered":true},"Elapsed":235279}
{"T":"2025-08-01T20:25:40.95606187+02:00","QH":"app-measurement.com","QT":"A","QC":"IN","CP":"","Answer":"uTKBgAABAAEAAAAAD2FwcC1tZWFzdXJlbWVudANjb20AAAEAAcAMAAEAAQAAAAoABAAAAAA=","IP":"192.168.1.202","Result":{"Rules":[{"Text":"||app-measurement.com^","IP":"","FilterListID":1}],"Reason":3,"IsFiltered":true},"Elapsed":51116}
{"T":"2025-08-01T20:25:44.69119445+02:00","QH":"app-measurement.com","QT":"A","QC":"IN","CP":"","Answer":"rlCBgAABAAEAAAAAD2FwcC1tZWFzdXJlbWVudANjb20AAAEAAcAMAAEAAQAAAAoABAAAAAA=","IP":"192.168.1.202","Result":{"Rules":[{"Text":"||app-measurement.com^","IP":"","FilterListID":1}],"Reason":3,"IsFiltered":true},"Elapsed":105538}
{"T":"2025-08-01T20:30:47.508458205+02:00","QH":"2.pool.ntp.org","QT":"A","QC":"IN","CP":"","Upstream":"https://dns10.quad9.net:443/dns-query","Answer":"GS+BgAABAAQAAAAAATIEcG9vbANudHADb3JnAAABAAHADAABAAEAAABiAASyPzQywAwAAQABAAAAYgAEnrQclsAMAAEAAQAAAGIABLn/eQ/ADAABAAEAAABiAATV7+oc","IP":"192.168.1.105","Result":{},"Elapsed":3429206927}
{"T":"2025-08-01T20:30:47.508535653+02:00","QH":"de.ots.io.mi.com","QT":"A","QC":"IN","CP":"","Upstream":"https://dns10.quad9.net:443/dns-query","Answer":"AACBgAABAAYAAAAAAmRlA290cwJpbwJtaQNjb20AAAEAAcAMAAEAAQAAAIwABBQhJEfADAABAAEAAACMAAQUISRZwAwAAQABAAAAjAAEFCEkXsAMAAEAAQAAAIwABBQhJGHADAABAAEAAACMAAQUISRiwAwAAQABAAAAjAAEFCEB3A==","IP":"192.168.1.224","Result":{},"Elapsed":9127210459}
{"T":"2025-08-01T20:30:47.508547475+02:00","QH":"de.ots.io.mi.com","QT":"A","QC":"IN","CP":"","Upstream":"https://dns10.quad9.net:443/dns-query","Answer":"AACBgAABAAYAAAAAAmRlA290cwJpbwJtaQNjb20AAAEAAcAMAAEAAQAAAIwABBQhJEfADAABAAEAAACMAAQUISRZwAwAAQABAAAAjAAEFCEkXsAMAAEAAQAAAIwABBQhJGHADAABAAEAAACMAAQUISRiwAwAAQABAAAAjAAEFCEB3A==","IP":"192.168.1.224","Result":{},"Elapsed":6130858017}
{"T":"2025-08-01T20:30:47.50856057+02:00","QH":"pool.ntp.org","QT":"A","QC":"IN","CP":"","Upstream":"https://dns10.quad9.net:443/dns-query","Answer":"3ICBgAABAAQAAAAABHBvb2wDbnRwA29yZwAAAQABwAwAAQABAAAACQAEvEQircAMAAEAAQAAAAkABKKfyAHADAABAAEAAAAJAARV112GwAwAAQABAAAACQAETi/5Nw==","IP":"192.168.1.132","Result":{},"Elapsed":6644920430}
{"T":"2025-08-01T20:30:47.508623807+02:00","QH":"2.pool.ntp.org","QT":"A","QC":"IN","CP":"","Upstream":"https://dns10.quad9.net:443/dns-query","Answer":"LkKBgAABAAQAAAAAATIEcG9vbANudHADb3JnAAABAAHADAABAAEAAABiAASyPzQywAwAAQABAAAAYgAEnrQclsAMAAEAAQAAAGIABLn/eQ/ADAABAAEAAABiAATV7+oc","IP":"192.168.1.105","Result":{},"Elapsed":60721171}
{"T":"2025-08-01T20:30:47.508626768+02:00","QH":"nl.pool.ntp.org","QT":"A","QC":"IN","CP":"","Upstream":"https://dns10.quad9.net:443/dns-query","Answer":"EkKBgAABAAQAAAAAAm5sBHBvb2wDbnRwA29yZwAAAQABwAwAAQABAAAACgAEsu8TOcAMAAEAAQAAAAoABKKfyAHADAABAAEAAAAKAASy7xM7wAwAAQABAAAACgAEpFycNw==","IP":"192.168.1.149","Result":{},"Elapsed":13343354294}
{"T":"2025-08-01T20:30:47.50867381+02:00","QH":"nl.pool.ntp.org","QT":"A","QC":"IN","CP":"","Upstream":"https://dns10.quad9.net:443/dns-query","Answer":"EkKBgAABAAQAAAAAAm5sBHBvb2wDbnRwA29yZwAAAQABwAwAAQABAAAACgAEsu8TOcAMAAEAAQAAAAoABKKfyAHADAABAAEAAAAKAASy7xM7wAwAAQABAAAACgAEpFycNw==","IP":"192.168.1.149","Result":{},"Elapsed":11343252232}
{"T":"2025-08-01T20:30:47.508667644+02:00","QH":"2.pool.ntp.org","QT":"A","QC":"IN","CP":"","Upstream":"https://dns10.quad9.net:443/dns-query","Answer":"o0SBgAABAAQAAAAAATIEcG9vbANudHADb3JnAAABAAHADAABAAEAAABiAASyPzQywAwAAQABAAAAYgAEnrQclsAMAAEAAQAAAGIABLn/eQ/ADAABAAEAAABiAATV7+oc","IP":"192.168.1.105","Result":{},"Elapsed":680277208}
{"T":"2025-08-01T20:30:47.508710501+02:00","QH":"nl.pool.ntp.org","QT":"A","QC":"IN","CP":"","Upstream":"https://dns10.quad9.net:443/dns-query","Answer":"EkKBgAABAAQAAAAAAm5sBHBvb2wDbnRwA29yZwAAAQABwAwAAQABAAAACgAEsu8TOcAMAAEAAQAAAAoABKKfyAHADAABAAEAAAAKAASy7xM7wAwAAQABAAAACgAEpFycNw==","IP":"192.168.1.149","Result":{},"Elapsed":14343567336}
{"T":"2025-08-01T20:30:47.508728615+02:00","QH":"pool.ntp.org","QT":"A","QC":"IN","CP":"","Upstream":"https://dns10.quad9.net:443/dns-query","Answer":"3ICBgAABAAQAAAAABHBvb2wDbnRwA29yZwAAAQABwAwAAQABAAAACQAEvEQircAMAAEAAQAAAAkABKKfyAHADAABAAEAAAAJAARV112GwAwAAQABAAAACQAETi/5Nw==","IP":"192.168.1.132","Result":{},"Elapsed":4527889450}
{"T":"2025-08-01T20:30:47.508752807+02:00","QH":"2.pool.ntp.org","QT":"A","QC":"IN","CP":"","Upstream":"https://dns10.quad9.net:443/dns-query","Answer":"YSmBgAABAAQAAAAAATIEcG9vbANudHADb3JnAAABAAHADAABAAEAAABiAASyPzQywAwAAQABAAAAYgAEnrQclsAMAAEAAQAAAGIABLn/eQ/ADAABAAEAAABiAATV7+oc","IP":"192.168.1.105","Result":{},"Elapsed":809220680}
{"T":"2025-08-01T20:30:47.508787585+02:00","QH":"2.pool.ntp.org","QT":"A","QC":"IN","CP":"","Upstream":"https://dns10.quad9.net:443/dns-query","Answer":"MmKBgAABAAQAAAAAATIEcG9vbANudHADb3JnAAABAAHADAABAAEAAABiAASyPzQywAwAAQABAAAAYgAEnrQclsAMAAEAAQAAAGIABLn/eQ/ADAABAAEAAABiAATV7+oc","IP":"192.168.1.105","Result":{},"Elapsed":1439982853}
{"T":"2025-08-01T20:30:47.508817835+02:00","QH":"de.ots.io.mi.com","QT":"A","QC":"IN","CP":"","Upstream":"https://dns10.quad9.net:443/dns-query","Answer":"AACBgAABAAYAAAAAAmRlA290cwJpbwJtaQNjb20AAAEAAcAMAAEAAQAAAIwABBQhJEfADAABAAEAAACMAAQUISRZwAwAAQABAAAAjAAEFCEkXsAMAAEAAQAAAIwABBQhJGHADAABAAEAAACMAAQUISRiwAwAAQABAAAAjAAEFCEB3A==","IP":"192.168.1.224","Result":{},"Elapsed":8129585080}
{"T":"2025-08-01T20:30:47.508928138+02:00","QH":"2.pool.ntp.org","QT":"A","QC":"IN","CP":"","Upstream":"https://dns10.quad9.net:443/dns-query","Answer":"T9+BgAABAAQAAAAAATIEcG9vbANudHADb3JnAAABAAHADAABAAEAAABiAASyPzQywAwAAQABAAAAYgAEnrQclsAMAAEAAQAAAGIABLn/eQ/ADAABAAEAAABiAATV7+oc","IP":"192.168.1.105","Result":{},"Elapsed":3109513574}
{"T":"2025-08-01T20:30:47.509047895+02:00","QH":"2.pool.ntp.org","QT":"A","QC":"IN","CP":"","Upstream":"https://dns10.quad9.net:443/dns-query","Answer":"FcGBgAABAAQAAAAAATIEcG9vbANudHADb3JnAAABAAHADAABAAEAAABiAASyPzQywAwAAQABAAAAYgAEnrQclsAMAAEAAQAAAGIABLn/eQ/ADAABAAEAAABiAATV7+oc","IP":"192.168.1.105","Result":{},"Elapsed":2070343507}
{"T":"2025-08-01T20:30:47.509328312+02:00","QH":"2.pool.ntp.org","QT":"A","QC":"IN","CP":"","Upstream":"https://dns10.quad9.net:443/dns-query","Answer":"hmCBgAABAAQAAAAAATIEcG9vbANudHADb3JnAAABAAHADAABAAEAAABiAASyPzQywAwAAQABAAAAYgAEnrQclsAMAAEAAQAAAGIABLn/eQ/ADAABAAEAAABiAATV7+oc","IP":"192.168.1.105","Result":{},"Elapsed":2700712200}
{"T":"2025-08-01T20:30:47.760982166+02:00","QH":"time.nist.gov","QT":"A","QC":"IN","CP":"","Upstream":"https://dns10.quad9.net:443/dns-query","Answer":"V76BgAABAAIAAAAABHRpbWUEbmlzdANnb3YAAAEAAcAMAAUAAQAAABYACwRudHAxA2dsYsARwCsAAQABAAABQgAEhKNgBA==","IP":"192.168.1.132","Result":{},"Elapsed":6897344282}
{"T":"2025-08-01T20:30:47.761063284+02:00","QH":"time.nist.gov","QT":"A","QC":"IN","CP":"","Upstream":"https://dns10.quad9.net:443/dns-query","Answer":"V76BgAABAAIAAAAABHRpbWUEbmlzdANnb3YAAAEAAcAMAAUAAQAAABYACwRudHAxA2dsYsARwCsAAQABAAABQgAEhKNgBA==","IP":"192.168.1.132","Result":{},"Elapsed":4781188337}

View File

@ -0,0 +1 @@
/\S+\.onet\.pl/

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,75 @@
[Adblock Plus 3.6]
! Title: 🎮 Game Console Adblock List
! Version: 12April2021v1-Alpha
! Expires: 4 days
! Description: Much like there's now lists for AdGuard Home and Pi-hole to block ads on smart-TVs, here's an attempt from me at doing the same for videogame consoles with AdGuard Home. Enjoy.
! Important note: To block ads in the consoles' dedicated internet browsers with AdGuard Home, and not in the system menus, check out https://raw.githubusercontent.com/DandelionSprout/adfilt/master/AdGuard%20Home%20Compilation%20List/AdGuardHomeCompilationList.txt instead.
! Homepage: https://github.com/DandelionSprout/adfilt/blob/master/Wiki/General-info.md#english
! ——— PlayStation 3 ———
! Ads
||nsx-e.np.dl.playstation.net^
! What's New
||mercury.dl.playstation.net^
! PlayStation Store Preview, incl. 'My Channels' logos
||nsx.np.dl.playstation.net^
! Ticker ads in the XMB clockbar
||adproxy.ndmdhs.com^
! ——— Nintendo 3DS ———
! Blocks the "Theme Shop", with the intention of preventing the annoying pink dot in the upper left of the Home Menu from reappearing all the time.
! The entry is known to block Animal Crossing Home Designer's "Special design requests" system, although that system has been inactive since 2017.
! WARNING: The "Theme Shop" should be visited once to remove the pink dot, and only then should this list be subscribed to.
||npdl.cdn.nintendowifi.net^
! ——— Wii U ———
! Believed to reduce the initial loading time of Wii Sports Club by several seconds
! Since no third-party Miiverse clients with console support are believed to be able to exist by now (January 2020), this entry is pretty much here to stay.
||discovery.olv.nintendo.net^
! ——— Xbox One ———
! Removes sponsored info slots in the system menu
! https://new.reddit.com/r/pihole/comments/act023/psa_block_the_sponsored_banner_ad_on_the_xbox_one/
! Note that this also blocks Perks from Xbox Game Pass if you are subscribed to that (https://github.com/DandelionSprout/adfilt/pull/162).
||arc.msn.com^$ctag=~device_pc|~os_windows
! ——— Xbox 360 ———
! Removes paid advertising on the Xbox Live Dashboard
! https://www.ign.com/wikis/xbox-360/Block_Ads_on_Xbox_Live
||rad.msn.com^
! ——— Nintendo Switch ———
! There is a system setting for getting rid of the Nintendo eShop advertisements on the lockscreen, which is hidden in System Settings → System → News Channel Settings → Nintendo News → Unfollow.
! The following entries gives access on demand to the web browser, as per SwitchBru's DNS server trick (https://www.switchbru.com/dns/), while also making it possible to use AdGuard Home for adblocking at the same time. However, since SwitchBru uses a trick to make the Switch think it's partway into logging on to a hotel network, the entries would reject access to all other Switch web activities while the entries are live:
!!! 45.55.142.122 ctest.cdn.nintendo.net
!!! 127.0.0.1 receive-lp1.er.srv.nintendo.net
!!! 127.0.0.1 aauth-lp1.ndas.srv.nintendo.net
! ——— Nintendo DS / Wii ———
! For a largely official list to connect to Wiimmfi (for DS games only) and RiiConnect24, check out https://raw.githubusercontent.com/RiiConnect24/DNS-Server/master/dns_zones-hosts.txt
! ——— PlayStation 5 ———
! I offer a €10 bounty to anyone who know how to either turn off the Explore menu tab, or prevent the Explore tab from loading any content, payable by PayPal.
! ——— PlayStation 4 ———
! There is a system setting for getting rid of homescreen "Buy Now"-type ads, which is hidden in Settings → System → Automatic Downloads → Featured Content → Off.
! ——— PlayStation 2 ———
! I am not personally aware of any Free McBoot homebrew apps that can connect to external domains, let alone unintentionally.
! There were multiple third-party online game servers for the PS2, of which Bobz Entertainment and OpenSpy are the only ones with some functionality still working.
! Any IP redirection entries for those two servers would've excluded one another; plus it appears that griefing was/is a very huge concern among the PS2 modding community, which I can vaguely presume is why they haven't openly revealed their DNS-server-side IP redirections.
! ——— Xbox Series ———
! I offer a €10 bounty to anyone who know how to remove the sponsored ads in the main menu, payable by PayPal.
! ——— Dreamcast ———
! Although I have become aware of the existence of Dreamcast Live, I can't find the IP address redirections used by their DNS server.
! ——— Steam Machines / SteamOS / Steam ———
! To get rid of popup windows that promote new games in desktop mode, go to View → Settings → Interface → "Notify me about additions or changes to my games, new releases, and upcoming releases."
! ——— Epic Games Store ———
! To remove system notifications that promote new games and sales, go to Settings → Desktop notifications, and turn off "Show News and Special Offer Notifications" and optionally "Show Free Game Notifications"
! ——— Other consoles ———
! Entry suggestions on GitHub would be much appreciated. Especially for portable PlayStation consoles and Sega Saturn, as I don't own any of them.

View File

@ -0,0 +1,269 @@
! Title: Smart-TV Blocklist for AdGuard Home (by Dandelion Sprout's)
! Version: 12March2021v3
! Description: This is a blocklist to block smart-TVs sending metadata back home, sometimes with the added benefit of blocking interface ads for apps and movie services.
! Please help to collect domains!
! It could occur that the TV fails to receive new updates, or that other apps or services no longer work. Please report such an incident.
! Multiple brands
||smartclip.com^
||smartclip.net^
! Panasonic Viera & Panny TV
||myhomescreen.tv^
! If domains below are blocked, unable to use smart-TV apps like Netflix, Amazon Video, etc. as TV calls home for connection check
@@||mhc-ajax-eu.myhomescreen.tv^
@@||mhc-ajax-eu-s2.myhomescreen.tv^
@@||mhc-xpana-eu.myhomescreen.tv^
@@||mhc-xpana-eu-s2.myhomescreen.tv^
!vcs.vdspf.com # if blocked, notified of new firmware but unable to download/install
||vindicosuite.com^
! Sony Bravia
! needed for applications
! needed for applications, if blocked gives the error "No internet connection"
!applicast.ga.sony.net
!portal.store.sonyentertainmentnetwork.com
||ssm1.internet.sony.tv^
||ssm2.internet.sony.tv^
||reg.biv.sony.tv^
||service.biv.sony.tv^
||ssm3.internet.sony.tv^
! update.biv.sony.tv^ # required for updates
||api-mf1.meta.ndmdhs.com^
||b02.black.ndmdhs.com^
||bravia.dl.playstation.net^
||call.me.sel.sony.com^
||flingo.tv^
||sonybivstatic-a.akamaihd.net^
||facemap.foldlife.net^
||bdcore-apr-lb.bda.ndmdhs.com^
||tvsideviewandroidv2-cfgdst-ore-pro.bda.ndmdhs.com^
||api.cid.samba.tv^
! platform.cid.samba.tv^ # see Toshiba
||preferences.cid.samba.tv^
! LG
||ad.lgappstv.com^
||ibis.lgappstv.com^
||lgad.cjpowercast.com.edgesuite.net^
! ngfts.lge.com # Blocks thumbnails from loading in the LG Content Store
||lgsmartad.com^
||ibs.lgappstv.com^
||yumenetworks.com^
! ||lgtvsdp.com^ # Prevents LG TV Content Store from working on LG OLED55C7V in the UK; https://github.com/Perflyst/PiHoleBlocklist/issues/53
|lgtvsdp.com^
||smartshare.lgtvsdp.com^
||rdx2.lgtvsdp.com^
! For TVs that try to connect to several garbled letter combinations
/^[a-z]{7,15}$/
! Used in malware exploits
||aic-ngfts.lge.com^
! Philips
!deviceportal.nettvservices.com # needed for apps
!epg.corio.com # needed for apps
||legacyportal.nettvservices.com^
||nettv.corio.com^
!www.ecdinterface.philips.com # Philips Hue Bridge
||ad.nettvservices.com^
! Samsung
||abtauthprd.samsungcloudsolution.com^
||acr0.samsungcloudsolution.com^
||samsungads.com^
||amauthprd.samsungcloudsolution.com^
||api-hub.samsungyosemite.com^
||az43064.vo.msecnd.net^
||cdn.samsungcloudsolution.net^
||configprd.samsungcloudsolution.net^
||Coordinator-Production-28516768.us-east-1.elb.amazonaws.com^
||d179kwmlpc4o47.cloudfront.net^
||d1jwpcr0q4pcq0.cloudfront.net^
||d2tnx644ijgq6i.cloudfront.net^
||d3mjsomixevyw7.cloudfront.net^
||d37ju0xanoz6gh.cloudfront.net^
||dev-multiscreen.samsung.com^
||device-metrics-us.amazon.com^
||fkp.samsungcloudsolution.
||game.internetat.tv^
||gld.samsungosp.com^
||i-stream.pl^
||log.internetat.tv^
||multiscreen.samsung.com^
||musicid.samsungcloudsolution.com^
||notice.samsungcloudsolution.com^
||noticecdn.samsungcloudsolution.com^
||noticefile.samsungcloudsolution.com^
||oempprd.samsungcloudsolution.
||prderrordumphsm.samsungcloudsolution.com^
||openapi.samsung.com^
||pavv.co.kr^
||pipeaota.com^
||premium-videos.telly.com^
||prov.samsungcloudsolution.com^
||rwww.samsungotn.net^
||samsungacr.com^
||samsungadhub.com^
|samsungcloudsolution.com^
|samsungcloudsolution.net^
||samsungqbe.com^
||samsungrm.net^
||sas.samsungcloudsolution.com^
||sca.samsung.com^
||syncplusconfig.s3.amazonaws.com^
||us-api.samsungyosemite.com^
||vd.emp.prd.s3.amazonaws.com^
||vdterms.samsungcloudsolution.com^
||samsungelectronics.com^
||vd.contents.prod.eu.s3.amazonaws.com^
||data.arqiva.tv^
||cloud.arqiva.tv^
||gamespromotion.samsungcloudsolution.com^
! Weather app tracking
||connecttv.pelmorex.com^
! Needed for appstore and login on Samsung UE40F5500
@@||infolink.pavv.co.kr^
! Required for "TV Plus"
@@||osb-ussvc.samsungqbe.com^
!auth.samsungosp.com # If blocked, Samsung accounts will fail to authenticate
!cdn.samsungcloudsolution.com # System update check on Samsung UE40F5500
!||d1oxlq5h9kq8q5.cloudfront.net^ # app icons in samsung app store
!||ns11.whois.co.kr^ # Prevents Series 7 TVs from opening YouTube
!||lcprd1.samsungcloudsolution.net^ # Ping test, no beaconing
!||otnprd10.samsungcloudsolution.net^ # Required for software update
!||otnprd11.samsungcloudsolution.net^ # Required for software update
!||otnprd8.samsungcloudsolution.net^ # Required for software update
!||otnprd9.samsungcloudsolution.net^ # Required for software update
!samsungosp.com
!samsungotn.net # System update check on Samsung UE65RU7455
!||sso.internetat.tv^ # Account login
!time.samsungcloudsolution.com # If blocked, services like Plex, YouTube and Amazon Video not working anymore on some Samsung TV's
!||otn.samsungcloudcdn.com^ # Prevents updates on UE49KS7000 and QE55Q9FNA; https://github.com/Perflyst/PiHoleBlocklist/issues/60
!||www.samsungotn.net^ # Required for software update
! Roku
||logs.roku.com^
||display.ravm.tv^
||ravm.tv^
! Vizio
! Required for Vizio smart tv features
!||api.vizio.com
!||images.vizio.com
!||announcements.vizio.com # No reason to block this
! HBBTV
||hbbtv-1.eurosport.com^
||hbbtv-extern-fe01.sim-technik.de^
||hbbtv-track.redbutton.de^
||hbbtv.*.de^
||hbbtv01p.anixe.net^
||hbbtvapp.sonnenklar.tv^
||p-hbbtv.superrtl.de^
@@||hbbtv.zdf.de^
@@||hbbtv.prosieben.de^
@@||hbbtv.redbutton.de^
! Other useless connections from Smart-TV
||2mdn.net^
||ad.71i.de^
||adv.ettoday.net^
||advertising.com^
||api.nfl.com^
! apicache.vudu.com # Needed for Vudu app; https://github.com/Perflyst/PiHoleBlocklist/issues/22
||cdns-content.dzcdn.net^
||cert-test.sandbox.google.com^
||database01p.anixe.net^
||de.ioam.de^
||drscdn.500px.org^$ctag=device_tv
!|geo.opera.com^| # blocks opera update
||googleads.g.doubleclick.net^
! itv.ard.de # ARD media lib - HBBTV
||nbc-jite.nbcuni.com^
||redbutton-adproxy-lb-prod.redbutton.de^
||redbutton-lb-prod.redbutton.de^
||redbutton.sim-technik.de^
||script.ioam.de^
||start.digitaltext.rtl.de^
||trvdp.com^
||tv-static.scdn.co^
!tv.deezer.com # Breaks Deezer's smart-TV apps.
||xml.opera.com^$ctag=device_tv
! Netflix
! secure., api-global., and appboot. break Netflix
!secure.netflix.com
!api-global.netflix.com
!appboot.netflix.com
||ichnaea.netflix.com^
||customerevents.netflix.com^
!||nrdp.nccp.netflix.com^ # Netflix playback fails on Humax DTR-T2100 (YouView) STB; https://github.com/Perflyst/PiHoleBlocklist/issues/54
||nrdp.prod.ftl.netflix.com^
! Spotify
!||api-tv.spotify.com^ # required for TV and PS4 spotify app
! Hulu
||api.distribution.hulu.com^
! Sharp Smart TV using Opera OS (thanks to sml156)
! time-a.timefreq.bldrdoc.gov # probably not a good idea to block this one
! api.accuweather.com # probably not a good idea to block this one
! Hisense Smart TV
||api-gps-em.hismarttv.com^
||auth-em.hismarttv.com^
||msg-em.hismarttv.com^
||api-launcher-em.hismarttv.com^
||auth-launcher-em.hismarttv.com^
||api-gps-na.hismarttv.com^
||auth-na.hismarttv.com^
||msg-na.hismarttv.com^
||api-launcher-na.hismarttv.com^
||auth-launcher-na.hismarttv.com^
||unified-ter-na.hismarttv.com^
! These may be needed for software/firmware updates, not sure if it's one or both but the first one tries thousands of times a day to connect.
||api.*.hismarttv.com^
! SiliconDust HDHomeRun
!||tuner-api.hdhomerun.com^ # required for firmware update
!||location-api.hdhomerun.com^ # required for firmware update
! Foxtel Australia cable/satellite set-top box
||managed.xmpp.foxtel.com.au^
||foxtel-prod-events.digitalsmiths.net^
||e2.resources.foxtel.com.au^
||a1.resources.foxtel.com.au^
! Yamaha AV receivers
!||avpro.global.yamaha.com^ # Blocks system updates on RX-V685
! Toshiba
||events.cid.samba.tv^
||platform.cid.samba.tv^
||file2fxm.azureedge.net^
||7345023508.fxmconnect.com^
||7345023508.fxm9485766783.com^
! —————————————————————————————————————————————————————————————
! Entries based on https://raw.githubusercontent.com/Perflyst/PiHoleBlocklist/master/AmazonFireTV.txt
! Amazon Fire TV (First-party)
||device-messaging-na.amazon.com^
||devicemessaging.us-east-1.amazon.com^
||fls-*.amazon.com^
||mads-eu.amazon.com^
||mas-sdk.amazon.com^
||mas-ext.amazon.com^
||aax-eu.amazon-adsystem.com^
||msh.amazon.co.uk^
! amazonadsi-a.akamaihd.net^ # FireTV and Tablet app installation / updates
||mobileanalytics.us-east-1.amazonaws.com^
! Amazon Fire TV (Third-party)
||config.ioam.de^
||secure-eu.imrworldwide.com^
||logs1409.xiti.com^
||tracksrv.zdf.de^
||settings.crashlytics.com^

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,558 @@
! Title: Scam Blocklist by DurableNapkin
! Source: https://raw.githubusercontent.com/durablenapkin/scamblocklist/master/adguard.txt
! Home: https://github.com/durablenapkin/scamblocklist
! Contribute: https://github.com/durablenapkin/scamblocklist/issues
! License: MIT (https://mit-license.org/)
||1stireland.com^
||1sttheworld.co^
||1sttheworld.com^
||1sttheworld.online^
||acquatee.com^
||adidasko.com^
||ahenana.com^
||airmaxskobillige.com^
||akarosi.com^
||akatee.com^
||aliripple.com^
||aliseshop.com^
||aliyaoberbrunnergreg21.myshopify.com^
||allergyfl.com^
||allstarshirt.com^
||alltestbanksolutions.com^
||alohazing.com^
||altruetech.com^
||amznshirts.com^
||anclice.com^
||animals-love.us^
||animeshoppers.com^
||annemus.com^
||aoptee.com^
||aozeala.com^
||apvoc-ga.com^
||army-shop.onshopbase.com^
||arnoldgloverruss58.myshopify.com^
||arthoodie.com^
||arvetellefsen.no^
||assassinfitness.com^
||atrendsz.com^
||attenstyle.com^
||aussiesportfashion.com^
||azfancy.com^
||azitecs.com^
||bapzy.com^
||baroconcept.com^
||beartees.pubninja.com^
||beaswan.com^
||beecrave.com^
||benecharm.com^
||beobirds.com^
||berfumetee.com^
||berrycats.com^
||bestamztee.com^
||bestbabyyoda.com^
||bestmoonshop.com^
||billigesalg.com^
||bioty.info^
||bknstore.com^
||blingyy.com^
||bltskins.com^
||boobeeshop.com^
||boododa.com^
||booliving.com^
||bossaving.com^
||bostongrnhsflowers.com^
||boutiqueondemand.com^
||bradcroninnapo82.myshopify.com^
||breakshirts.com^
||breepa.com^
||buckeyesstore.online^
||buddhakind.com^
||burgershirt.com^
||buzzazone.com^
||candlesbymadison.com^
||canjaume.com^
||caperforaciones.com^
||carmenfloral.com^
||cartooy.com^
||carvemyname.com^
||castim.info^
||charmbean.com^
||charmingmonica.com^
||charmsection.com^
||charpente-ramel.com^
||chikepod.com^
||chipcy.com^
||chipteeamz.com^
||cinela.us^
||cipustar.com^
||cition.info^
||classicraftdesign.com^
||clemoa.com^
||cloverszone.com^
||cluckergifts.ecwid.com^
||cnmya.store^
||cocumbertee.com^
||colorandcotton.com^
||cookietee.com^
||coolestpod.com^
||coolztz.com^
||cordou.info^
||corg.co^
||costcotee.com^
||couponxoo.com^
||creizeystore.com^
||csgoproleague.com^
||customizerbox.com^
||customurink.com^
||dailygiftstore.com^
||danylevych.com^
||daradis.com^
||decorwallart.store^
||decoryourhome.store^
||deergift.com^
||defcon7.com.br^
||denningwelldrilling.com^
||devifoodgrains.com^
||deytee.com^
||dezpez.com^
||dixlitle.com^
||dkfodboldstore.com^
||dogparadiseshop.com^
||dogparadisestore.com^
||doint.info^
||dolystore.com^
||donttreadonmeshop.com^
||drakternorge.com^
||drcarolyngroff.com^
||dreamstee.com^
||dreamstees.com^
||duckydecor.store^
||dunjakke-no.com^
||easynatures.com^
||easyshoppingus.com^
||elaka.lk^
||ellezz.com^
||emberio.com^
||enchantestore.myshopify.com^
||engineracing.net^
||envisiongear.com^
||esl-gaming.com^
||eudoraz.com^
||evangeliostore.com^
||eviralstore.com^
||faithmim.online^
||familybestgifts.com^
||familygiftlove.myshopify.com^
||familygiftville.com^
||familylovesgift.com^
||familyshark.com^
||familystore.com^
||famoury.com^
||fancycentral.com^
||fapst.com^
||farmer-love.us^
||fasinal.com^
||feddiy.com^
||fement.info^
||findglocal.com^
||firest.info^
||fishingdaily.shop^
||fishinglovely.com^
||fivent.info^
||flattee.com^
||foryourdears.com^
||fotballsko-salg.com^
||freser.info^
||frest.info^
||friday89.com^
||friday99.com^
||fruitstee.com^
||fulfillgift.com^
||furoshop.com^
||futhem.info^
||fveco.com^
||g1z0.myinstructus.com^
||gameconsoless.com^
||geaapy.com^
||gearanime.com^
||gearathena.com^
||gearclover.com^
||gearhomies.com^
||gearhuman.com^
||gearstastic.com^
||gearstastics.com^
||gearver.com^
||gemlis.com^
||gibbonfamily.store^
||giftyweb.com^
||gizmopage.com^
||gladiadormalas.com.br^
||glendaz.com^
||gload.info^
||glstee.com^
||godeskonettbutikk.com^
||gogiworld.com^
||gossvibe.com^
||gosusport.store^
||gotoperfection.com^
||goyourheart.com^
||graciaszone.com^
||gsport.com^
||guccitees.com^
||gunstee.com^
||guus.store^
||hairyfy.com^
||haowei.me^
||haruko.store^
||hazayla.com^
||hbofunkoshop.com^
||heates.info^
||helgaz.com^
||helpnanacenter.helpscoutdocs.com^
||hermanistore.com^
||hernoclothing.com^
||heyfusio.com^
||highty.co^
||hihigoso.store^
||himete.com^
||hmccommerce.com^
||hollisternorge.com^
||hookahheroes.com^
||hugetrump.com^
||hunden.info^
||hunterbeus.com^
||icelandclothing.myshopify.com^
||ikiha.com^
||ikoee.com^
||ilpollenza-sorso23.it^
||infinityto.com^
||jagkart.com^
||jaimerico.net^
||jakkesalgs.com^
||jakkesnorge.com^
||januashop.com^
||jellystores.com^
||jollyfamilygifts.net^
||joseph-holland.com^
||karukuri.com^
||khoinguyenhanoi.vn^
||kidsmama.online^
||kigurumi-usa.com^
||killtee.com^
||kindapod.com^
||kingteestore.com^
||kisserine.com^
||kitchendecor.shop^
||ksvitmimay.com^
||kuteblanket.store^
||kutehoodie.store^
||kxu.myinstructus.com^
||ladamustore.com^
||lakersfanshoponline.com^
||lamotee.com^
||lemstore.com^
||lericettedifrancy74.com^
||letrantrunghieu.com^
||letteringift.com^
||levastyle.com^
||levath.com^
||levelupstore.xyz^
||lifewonderland.com^
||ligerking.com^
||lillly.shop^
||linkshe.com^
||linostee.com^
||lisabuddy.com^
||litcomplex.com^
||livecato.com^
||lomipod.com^
||look-like-star.myshopify.com^
||lookinmylove.com^
||lootcrate.com^
||loveinbox.co.uk^
||lovelovegifts.com^
||lucatee.com^
||luckyhomie.com^
||lucysstyle.com^
||luvinstars.com^
||luxsgear.com^
||luzyfran.com^
||magnasat.com^
||mangacos.com^
||marleytecnologica.com^
||meaningift.com^
||meladermfacts.com^
||memotero.com^
||meowpinky.com^
||mezlife.com^
||miuprints.com^
||momchip.com^
||monetlee.com^
||monkstars.com^
||moteshoes.com^
||movica.us^
||mualuondi.com^
||muddyking.com^
||muscleforlive.online^
||museuw.com^
||muthaafoundation.org^
||muzesen.info^
||mvptrend.com^
||mycraftypad.com^
||myfunfarm.com^
||myhandshops.myshopify.com^
||mystitich4u.com^
||nabaza.shop^
||namemory.co.uk^
||natilove.com^
||nationaladvancegroup.com^
||natistore.us^
||natistorez.com^
||nearmetshirt.com^
||nedistores.com^
||neozor.com^
||nevaon.com^
||nicetee.net^
||niche3d.us^
||nldstore.com^
||noatopdesign.com^
||nofotballshop.com^
||nofotballstore.com^
||nonofy.com^
||nordartisan.com^
||norfotball.com^
||norge.parkaoutdoor.com^
||norgefotball.com^
||norgejakke.com^
||norgejakkerbutikk.com^
||norgeshoes.com^
||ocelotfamily.com^
||odinpc.com^
||oflike.com^
||ogogear.com^
||oldcube.com^
||orderquilt.com^
||orderstee.com^
||orinblanket.com^
||otakupuzzle.com^
||owlala.com^
||pandzee.com^
||parajumpers-salg.com^
||parajumpersitoutlet.com^
||parajumpersnettbutikk.com^
||parajumpersnorway.com^
||parajumperssalg.com^
||peace-love.us^
||pearstee.com^
||peekpok.com^
||peppatees.com^
||personal84.com^
||pharaohstore.com^
||pickablegift.com^
||pickcheaptee.com^
||pjs.outlet.com^
||plutostars.com^
||popeurope.com^
||poppop.online^
||poravoda.com^
||potterheads.co^
||preciouscutesy.com^
||premiumqualityblanket.com^
||premiumtour-don.com^
||printazest.com^
||printkay.com^
||printteestore.com^
||printzent.com^
||promotebuy.com^
||proudofyournation.com^
||puzzlekd.com^
||quatangidol.com^
||quetzalfamily.store^
||quintrendy.com^
||rabamnetee.com^
||rbkbb.com^
||reanimando.org^
||rebeccatees.com^
||recade.info^
||redchristmaswine.com^
||reforest-iita.org^
||reviewshirts.com^
||rickamortyshop.com^
||rincandy.com^
||ringtoperfection.com^
||rjgriffith.com^
||robinmooreband.com^
||rockchief.com^
||rockinlives.com^
||rosateeshop.com^
||rovedy.com^
||royaldecorhome.store^
||rsaonlinenow.com.au^
||saligoo.com^
||saveeeee.myshopify.com^
||sayhellorugs.com^
||sbeat.info^
||scanoe.info^
||seagulltee.com^
||sedark.com^
||sentees.com^
||shinepuzzle.com^
||shinezily.com^
||shirtforfan.com^
||shirttest.com^
||shirtwide.com^
||shoeaddic.com^
||shop.spreadshirt.com^
||shopafricalimited.com^
||shopusawarehouse.com^
||sieuto.com^
||sigmaoffers.com^
||signpify.com^
||silverlanetrading.com^
||simplewhales.com^
||skincheap.com^
||skins-store.net^
||skinsplanet.net^
||skinszone.net^
||skonmdnorge.com^
||sligen.com^
||smartgadgettrend.com^
||smartpower4all.org^
||smartproduct.site^
||smartpurchase.website^
||snappystoreonline.co.za^
||solepersonal.com^
||somethingapparel.com^
||soonet.info^
||souhoney.com^
||source84.com^
||southernlife.net^
||southpark-fan.com^
||sozonest.com^
||spnation.net^
||sportfamily.us^
||sportfanlab.com^
||sportfanvoice.com^
||sportfirestore.com^
||sportsapparelmarket.com^
||sportswearfanatics.com^
||sportswearforfans.com^
||sportyprinty.com^
||spreadstores.com^
||squest.info^
||startjacket.com^
||startuplatte.com^
||steamgateways.com^
||steamunlock.com^
||steamunlock.gifts^
||stingcool-com.myshopify.com^
||stingcool.com^
||store-aleteia.org^
||store25848025.company.site^
||storeax.com^
||storedarkness.com^
||storeitsafeltd.com^
||storesonlineltd.com^
||storesp.com^
||streamloot.co^
||strogame.com^
||stunningstuffs.com^
||stylegift.co.uk^
||sunleaftravel.com^
||supercutestuff.com^
||superfacehoodie.com^
||superofferte.shop^
||supersloth.club^
||supperbrand.company.site^
||surprisesandgifts.com^
||survivalcatsupply.com^
||tadarick.com^
||tartannewzealand.myshopify.com^
||tartanz.co^
||tedgee.com^
||tee24h.com^
||teearrow.com^
||teeboss.us^
||teechip.online^
||teefoody.com^
||teemarko.com^
||teenimo.com^
||teesunshine.com^
||teezill.com^
||thecabinas.com^
||thechildhooddream.com^
||thecoincollections.store^
||thecustomee.com^
||thegeekgifts.com^
||thehappywood.com^
||thekeilas.com^
||theoceanest.com^
||theonepercentcommunity.com^
||theshiny.store^
||theshirtyouneed.com^
||thevitic.com^
||thevitic.onshopbase.com^
||ti-yo.com^
||tikgeeker.com^
||tiranaaquapark-eg.com^
||tlonsey.com^
||tomadamsenergy.com^
||topsdiy.com^
||trade-skins.net^
||treasurefan.com^
||trendsharks.com^
||trendvibesa.online^
||trendybuddystore.com^
||trendygladys.com^
||treverschmelerkris18.myshopify.com^
||tromselementbygg.no^
||tulumwellnessacademy.com^
||twoter.info^
||tycomex.com^
||u.umax-pro.ru^
||ultimate-tech-products.myshopify.com^
||ultraboxlab.com^
||um-bs.com^
||unifully.com^
||unique3ds.com^
||uniqueetee.com^
||uniqueshirt.shop^
||ureashi.com^
||uredaka.com^
||usasport247.com^
||usefulnpro.com^
||ushiro.org^
||uuc.joyofprogress.com^
||vatini.net^
||vavaname.com^
||vegamartz.com^
||verfun.com^
||vetoro.cc^
||viberman.com^
||vikingstore.co^
||violayvonne.com^
||vipticketgiveaway.com^
||warm-gifts.com^
||wavetshirt.com^
||wdamp.info^
||weheartitstore.com^
||wezpod.com^
||whbinder.com^
||wichky.info^
||wikeb.com^
||windbellstore.com^
||woadoodles.com^
||woochip.com^
||yeahteesmile.com^
||yeswevibe.com^
||yeyvibe.com^
||yeyvibes.com^
||yhdshop.com^
||yomoun.com^
||youchocho.com^
||youngtee.us^
||zedbubble.com^
||zerdaliz.com^
||zerowasteinitiative.com^
||zgalaxytee.com^

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,9 @@
adsports.in
alushtadom.com
avtoresurs.net
pamelasparrowchilds.com
stimmwissenschaften.de
truepublish.de
www.eastsideautosalvage.com
www.gtcartographic.co.uk
www.logopaedie-tisch.homepage.t-online.de

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,576 @@
# BarbBlock
# Version: 1.5
# Last Update: 2019-05-26
# Homepage: https://ssl.bblck.me/
# Canonical URL for this file: https://ssl.bblck.me/blacklists/hosts-file.txt
# ============== Site group 1 ==============
# GitHub Issue: https://github.com/paulgb/BarbBlock/issues/1
# Takedown URL: https://github.com/github/dmca/blob/master/2017/2017-08-02-LevenLabs.md
0.0.0.0 functionalclam.com
# ============== Site group 2 ==============
# GitHub Issue: https://github.com/paulgb/BarbBlock/issues/21
0.0.0.0 119.29.196.104.bc.googleusercontent.com
0.0.0.0 175.220.196.104.bc.googleusercontent.com
0.0.0.0 2znp09oa.com
0.0.0.0 4jnzhl0d0.com
0.0.0.0 6ldu6qa.com
0.0.0.0 82o9v830.com
0.0.0.0 abandonedclover.com
0.0.0.0 abruptroad.com
0.0.0.0 actuallysheep.com
0.0.0.0 agreeableprice.com
0.0.0.0 aheadday.com
0.0.0.0 ambitiousagreement.com
0.0.0.0 anxiousapples.com
0.0.0.0 ar1nvz5.com
0.0.0.0 argyresthia.com
0.0.0.0 attractiveafternoon.com
0.0.0.0 awzbijw.com
0.0.0.0 axiomaticalley.com
0.0.0.0 balancebreath.com
0.0.0.0 balloontexture.com
0.0.0.0 baskettexture.com
0.0.0.0 bawdybeast.com
0.0.0.0 beamincrease.com
0.0.0.0 bhcumsc.com
0.0.0.0 boilingbeetle.com
0.0.0.0 boredcrown.com
0.0.0.0 brassrule.com
0.0.0.0 breezybath.com
0.0.0.0 broadboundary.com
0.0.0.0 broadcastbed.com
0.0.0.0 broaddoor.com
0.0.0.0 btez8.xyz
0.0.0.0 businessbells.com
0.0.0.0 calmfoot.com
0.0.0.0 chairscrack.com
0.0.0.0 cherrythread.com
0.0.0.0 chickensstation.com
0.0.0.0 chiefcurrent.com
0.0.0.0 chinchickens.com
0.0.0.0 chinsnakes.com
0.0.0.0 clearcomb.com
0.0.0.0 comfortablecheese.com
0.0.0.0 commandwalk.com
0.0.0.0 commoncannon.com
0.0.0.0 concernrain.com
0.0.0.0 consciouscabbage.com
0.0.0.0 consciouschairs.com
0.0.0.0 copperchickens.com
0.0.0.0 copyrightaccesscontrols.com
0.0.0.0 crawlclocks.com
0.0.0.0 critictruck.com
0.0.0.0 crownclam.com
0.0.0.0 curtaincows.com
0.0.0.0 cutecushion.com
0.0.0.0 decisivedrawer.com
0.0.0.0 decisiveducks.com
0.0.0.0 delegatediscussion.com
0.0.0.0 detectdiscovery.com
0.0.0.0 dk4ywix.com
0.0.0.0 docksalmon.com
0.0.0.0 doubtfulrainstorm.com
0.0.0.0 dq95d35.com
0.0.0.0 dragzebra.com
0.0.0.0 ejyymghi.com
0.0.0.0 elasticchange.com
0.0.0.0 elephantqueue.com
0.0.0.0 exclusivebrass.com
0.0.0.0 familiarfloor.com
0.0.0.0 fanaticalfly.com
0.0.0.0 faultycanvas.com
0.0.0.0 faultyfowl.com
0.0.0.0 fearfulflag.com
0.0.0.0 feebleshock.com
0.0.0.0 flakyfeast.com
0.0.0.0 flavordecision.com
0.0.0.0 floodprincipal.com
0.0.0.0 frailoffer.com
0.0.0.0 functionalclam.com
0.0.0.0 futuristicfairies.com
0.0.0.0 fuzzyflavor.com
0.0.0.0 ga87z2o.com
0.0.0.0 giddycoat.com
0.0.0.0 gorgeousground.com
0.0.0.0 greetzebra.com
0.0.0.0 greyinstrument.com
0.0.0.0 guardedgovernor.com
0.0.0.0 h78xb.pw
0.0.0.0 hammerhearing.com
0.0.0.0 hardtofindmilk.com
0.0.0.0 hfc195b.com
0.0.0.0 illustriousoatmeal.com
0.0.0.0 impossibleexpansion.com
0.0.0.0 incrediblesugar.com
0.0.0.0 innocentwax.com
0.0.0.0 instrumentsponge.com
0.0.0.0 ivykiosk.com
0.0.0.0 j93557g.com
0.0.0.0 jadeitite.com
0.0.0.0 lettucelimit.com
0.0.0.0 lizardslaugh.com
0.0.0.0 lopsidedspoon.com
0.0.0.0 loudloss.com
0.0.0.0 loudlunch.com
0.0.0.0 lp3tdqle.com
0.0.0.0 messagenovice.com
0.0.0.0 metapelite.com
0.0.0.0 mixedreading.com
0.0.0.0 mowfruit.com
0.0.0.0 nervoussummer.com
0.0.0.0 omniscientspark.com
0.0.0.0 owlsr.us
0.0.0.0 paleleaf.com
0.0.0.0 peacepowder.com
0.0.0.0 perceivequarter.com
0.0.0.0 petiteumbrella.com
0.0.0.0 photographpan.com
0.0.0.0 pietexture.com
0.0.0.0 piquantpigs.com
0.0.0.0 possibleboats.com
0.0.0.0 presetrabbits.com
0.0.0.0 previousplayground.com
0.0.0.0 profitrumour.com
0.0.0.0 provideplant.com
0.0.0.0 puffyloss.com
0.0.0.0 puzzlingfall.com
0.0.0.0 quaintcan.com
0.0.0.0 quietknowledge.com
0.0.0.0 readgoldfish.com
0.0.0.0 receptiveink.com
0.0.0.0 resolutekey.com
0.0.0.0 ringsrecord.com
0.0.0.0 ritzykey.com
0.0.0.0 ritzysponge.com
0.0.0.0 rulerabbit.com
0.0.0.0 saysidewalk.com
0.0.0.0 scarcesign.com
0.0.0.0 scarcestream.com
0.0.0.0 scintillatingspace.com
0.0.0.0 scrubswim.com
0.0.0.0 separatesilver.com
0.0.0.0 shakytaste.com
0.0.0.0 shelterstraw.com
0.0.0.0 shiveringsail.com
0.0.0.0 shockingswing.com
0.0.0.0 simplisticnose.com
0.0.0.0 smilingsock.com
0.0.0.0 sneaklevel.com
0.0.0.0 spectacularsnail.com
0.0.0.0 spillvacation.com
0.0.0.0 spottysense.com
0.0.0.0 squeamishscarecrow.com
0.0.0.0 storesurprise.com
0.0.0.0 stormyachiever.com
0.0.0.0 stormyshock.com
0.0.0.0 stormysponge.com
0.0.0.0 straightnest.com
0.0.0.0 strivesidewalk.com
0.0.0.0 structuresofa.com
0.0.0.0 succeedscene.com
0.0.0.0 sugarcurtain.com
0.0.0.0 tdzvm.pw
0.0.0.0 tedioustooth.com
0.0.0.0 teethfan.com
0.0.0.0 teschenite.com
0.0.0.0 thirdrespect.com
0.0.0.0 throattrees.com
0.0.0.0 tracedesire.com
0.0.0.0 tritetongue.com
0.0.0.0 truckstomatoes.com
0.0.0.0 truthfulturn.com
0.0.0.0 tzwaw.pw
0.0.0.0 ultraoranges.com
0.0.0.0 unknowntray.com
0.0.0.0 voicevegetable.com
0.0.0.0 wateryvan.com
0.0.0.0 wirecomic.com
0.0.0.0 xovq5nemr.com
0.0.0.0 zbwp6ghm.com
0.0.0.0 zlp6s.pw
# ============== Site group 3 ==============
# GitHub Issue: https://github.com/paulgb/BarbBlock/issues/22
0.0.0.0 foamybox.com
# ============== Site group 4 ==============
# GitHub Issue: https://github.com/paulgb/BarbBlock/issues/30
0.0.0.0 texturetrick.com
# ============== Site group 5 ==============
# GitHub Issue: https://github.com/paulgb/BarbBlock/issues/31
0.0.0.0 5mcwl.pw
0.0.0.0 acquireattention.com
0.0.0.0 acridtwist.com
0.0.0.0 afraidlanguage.com
0.0.0.0 ak0gsh40.com
0.0.0.0 aloofmetal.com
0.0.0.0 apathetictheory.com
0.0.0.0 aquaticowl.com
0.0.0.0 aromamirror.com
0.0.0.0 attractivecap.com
0.0.0.0 bawdypets.com
0.0.0.0 beamkite.com
0.0.0.0 bedsbreath.com
0.0.0.0 bewilderedblade.com
0.0.0.0 billowybead.com
0.0.0.0 blushingbeast.com
0.0.0.0 boilingumbrella.com
0.0.0.0 bravebone.com
0.0.0.0 breakfastboat.com
0.0.0.0 bruisebaseball.com
0.0.0.0 bucketbean.com
0.0.0.0 bulbbait.com
0.0.0.0 callousbrake.com
0.0.0.0 cannonjudo.com
0.0.0.0 capablecup.com
0.0.0.0 chemicalcoach.com
0.0.0.0 chesscolor.com
0.0.0.0 cloudsdestruction.com
0.0.0.0 commonswing.com
0.0.0.0 coordinatedcub.com
0.0.0.0 copycarpenter.com
0.0.0.0 correctchaos.com
0.0.0.0 cosmosjackson.com
0.0.0.0 crayoncompetition.com
0.0.0.0 cumbersomecloud.com
0.0.0.0 cuteturkey.com
0.0.0.0 decoroustitle.com
0.0.0.0 decoycreation.com
0.0.0.0 delightfulhour.com
0.0.0.0 differentdesk.com
0.0.0.0 dolphindispute.com
0.0.0.0 drawservant.com
0.0.0.0 earthquakescarf.com
0.0.0.0 earthycopy.com
0.0.0.0 economicpizzas.com
0.0.0.0 elderlyscissors.com
0.0.0.0 eliminateeffect.com
0.0.0.0 encouragingwilderness.com
0.0.0.0 endurableshop.com
0.0.0.0 energeticexample.com
0.0.0.0 errortablet.com
0.0.0.0 evanescentedge.com
0.0.0.0 exuberantsoda.com
0.0.0.0 farethief.com
0.0.0.0 fascinatedfeather.com
0.0.0.0 finalizeforce.com
0.0.0.0 foregoingfowl.com
0.0.0.0 forgetfulflowers.com
0.0.0.0 fretfulfurniture.com
0.0.0.0 funnyairplane.com
0.0.0.0 furryhorses.com
0.0.0.0 futuristicfold.com
0.0.0.0 fuzzyweather.com
0.0.0.0 gondolagnome.com
0.0.0.0 granodiorite.com
0.0.0.0 greasegarden.com
0.0.0.0 guitarbelieve.com
0.0.0.0 headyhook.com
0.0.0.0 highfalutinbox.com
0.0.0.0 hilariouszinc.com
0.0.0.0 hollowshake.com
0.0.0.0 honeybulb.com
0.0.0.0 honorableland.com
0.0.0.0 humdrumhat.com
0.0.0.0 illfatedsnail.com
0.0.0.0 importedincrease.com
0.0.0.0 impulsehands.com
0.0.0.0 inquisitiveinvention.com
0.0.0.0 inviterabbits.com
0.0.0.0 jewelcheese.com
0.0.0.0 knottysticks.com
0.0.0.0 lagoonolivia.com
0.0.0.0 languagelake.com
0.0.0.0 laughablecopper.com
0.0.0.0 leaplunchroom.com
0.0.0.0 lewdwind.com
0.0.0.0 limpingline.com
0.0.0.0 liquidroll.com
0.0.0.0 lumpyleaf.com
0.0.0.0 massivemark.com
0.0.0.0 matchcows.com
0.0.0.0 mellowtin.com
0.0.0.0 meremark.com
0.0.0.0 modifyeyes.com
0.0.0.0 moldyicicle.com
0.0.0.0 mysteriousmonth.com
0.0.0.0 niftyjelly.com
0.0.0.0 nostalgicknot.com
0.0.0.0 nuttyorganization.com
0.0.0.0 optimallimit.com
0.0.0.0 orangeoperation.com
0.0.0.0 ovalpigs.com
0.0.0.0 paddleangle.com
0.0.0.0 parcelcreature.com
0.0.0.0 piquantstove.com
0.0.0.0 practicetoothpaste.com
0.0.0.0 presssensor.com
0.0.0.0 printerplasma.com
0.0.0.0 profusesupport.com
0.0.0.0 puffypurpose.com
0.0.0.0 quicksandear.com
0.0.0.0 railwayrainstorm.com
0.0.0.0 rapidkittens.com
0.0.0.0 raresummer.com
0.0.0.0 readingguilt.com
0.0.0.0 readingopera.com
0.0.0.0 readysnails.com
0.0.0.0 rebelsubway.com
0.0.0.0 receptivereaction.com
0.0.0.0 referdriving.com
0.0.0.0 resonantbrush.com
0.0.0.0 respectrain.com
0.0.0.0 rhymezebra.com
0.0.0.0 rhythmmoney.com
0.0.0.0 riserange.com
0.0.0.0 roastedvoice.com
0.0.0.0 ruthlessrobin.com
0.0.0.0 sablesmile.com
0.0.0.0 scarecrowslip.com
0.0.0.0 scratchsofa.com
0.0.0.0 screechingfurniture.com
0.0.0.0 scrollservice.com
0.0.0.0 scrubsky.com
0.0.0.0 secretspiders.com
0.0.0.0 selectivesummer.com
0.0.0.0 selfishsea.com
0.0.0.0 shakesea.com
0.0.0.0 shallowschool.com
0.0.0.0 sharppatch.com
0.0.0.0 shopbreakfast.com
0.0.0.0 sicksmash.com
0.0.0.0 silkysquirrel.com
0.0.0.0 similarsabine.com
0.0.0.0 slaysweater.com
0.0.0.0 smoggysnakes.com
0.0.0.0 sneakystamp.com
0.0.0.0 spookyslope.com
0.0.0.0 spottednoise.com
0.0.0.0 spurioussteam.com
0.0.0.0 standingnest.com
0.0.0.0 storescissors.com
0.0.0.0 storeslope.com
0.0.0.0 subsequentswim.com
0.0.0.0 substantialcarpenter.com
0.0.0.0 suddensidewalk.com
0.0.0.0 superficialsquare.com
0.0.0.0 swimslope.com
0.0.0.0 swordgoose.com
0.0.0.0 tastefulsongs.com
0.0.0.0 tendertest.com
0.0.0.0 terribleturkey.com
0.0.0.0 thirstytwig.com
0.0.0.0 ticklesign.com
0.0.0.0 tidytrail.com
0.0.0.0 toothbrushnote.com
0.0.0.0 topichawaii.com
0.0.0.0 trappush.com
0.0.0.0 tremendoustreatment.com
0.0.0.0 trickycelery.com
0.0.0.0 truthfulhead.com
0.0.0.0 unbecominghall.com
0.0.0.0 unequalbrake.com
0.0.0.0 unevenstring.com
0.0.0.0 unusualtitle.com
0.0.0.0 unwrittenspot.com
0.0.0.0 vanfireworks.com
0.0.0.0 vq1qi.pw
0.0.0.0 wakefulcook.com
0.0.0.0 wellgroomedbat.com
0.0.0.0 wellmadefrog.com
0.0.0.0 whirlwealth.com
0.0.0.0 whisperingbadge.com
0.0.0.0 wigglygeese.com
0.0.0.0 wildernesscamera.com
0.0.0.0 workableachiever.com
0.0.0.0 worriednumber.com
0.0.0.0 worrybutter.com
0.0.0.0 youngmarble.com
0.0.0.0 zealousfield.com
0.0.0.0 abackchain.com
0.0.0.0 abandonedaction.com
0.0.0.0 abashedangle.com
0.0.0.0 aboardlevel.com
0.0.0.0 absentstream.com
0.0.0.0 absorbingband.com
0.0.0.0 absurdwater.com
0.0.0.0 actuallysnake.com
0.0.0.0 advertisementafterthought.com
0.0.0.0 agreeablestew.com
0.0.0.0 ambiguousquilt.com
0.0.0.0 archswimming.com
0.0.0.0 ariseboundary.com
0.0.0.0 automaticflock.com
0.0.0.0 barbarousnerve.com
0.0.0.0 basketballbelieve.com
0.0.0.0 batbuilding.com
0.0.0.0 bestboundary.com
0.0.0.0 blushingboundary.com
0.0.0.0 boringcoat.com
0.0.0.0 bouncyproperty.com
0.0.0.0 bustlinganimal.com
0.0.0.0 butterburst.com
0.0.0.0 calculatingcircle.com
0.0.0.0 calculatingtoothbrush.com
0.0.0.0 calculatorcamera.com
0.0.0.0 capablecows.com
0.0.0.0 captainbicycle.com
0.0.0.0 carscannon.com
0.0.0.0 cheerfulrange.com
0.0.0.0 chewcoat.com
0.0.0.0 cloisteredhydrant.com
0.0.0.0 completecabbage.com
0.0.0.0 complextoad.com
0.0.0.0 concernedcondition.com
0.0.0.0 crabbychin.com
0.0.0.0 damdoor.com
0.0.0.0 dancemistake.com
0.0.0.0 dashingdirt.com
0.0.0.0 dashingsweater.com
0.0.0.0 deadpantruck.com
0.0.0.0 debonairway.com
0.0.0.0 defectivesun.com
0.0.0.0 delightdriving.com
0.0.0.0 desertedbreath.com
0.0.0.0 desertedrat.com
0.0.0.0 detailedglue.com
0.0.0.0 detailedgovernment.com
0.0.0.0 discreetfield.com
0.0.0.0 dispensablestranger.com
0.0.0.0 dq95d35.com
0.0.0.0 drabsize.com
0.0.0.0 drydrum.com
0.0.0.0 efficaciouscactus.com
0.0.0.0 elderlytown.com
0.0.0.0 enthusiasticdad.com
0.0.0.0 enviousthread.com
0.0.0.0 facilitategrandfather.com
0.0.0.0 fadedprofit.com
0.0.0.0 famousquarter.com
0.0.0.0 farmergoldfish.com
0.0.0.0 flimsycircle.com
0.0.0.0 floweryoperation.com
0.0.0.0 fourarithmetic.com
0.0.0.0 frightenedpotato.com
0.0.0.0 functionalcrown.com
0.0.0.0 futuristicapparatus.com
0.0.0.0 gammamaximum.com
0.0.0.0 glossysense.com
0.0.0.0 gossipmiser.com
0.0.0.0 gracefulsock.com
0.0.0.0 grandioseguide.com
0.0.0.0 guardedschool.com
0.0.0.0 handyfield.com
0.0.0.0 highfalutinroom.com
0.0.0.0 historicalrequest.com
0.0.0.0 honeygoldfish.com
0.0.0.0 hurtteeth.com
0.0.0.0 hystericalhelp.com
0.0.0.0 immensehoney.com
0.0.0.0 inventionpassenger.com
0.0.0.0 invitesugar.com
0.0.0.0 jamexistence.com
0.0.0.0 justicejudo.com
0.0.0.0 karisimbi.net
0.0.0.0 knifeoctopus.com
0.0.0.0 laughcloth.com
0.0.0.0 lightcushion.com
0.0.0.0 longinglettuce.com
0.0.0.0 magnificentmist.com
0.0.0.0 markedcrayon.com
0.0.0.0 markedpail.com
0.0.0.0 memorizeneck.com
0.0.0.0 memorycobweb.com
0.0.0.0 militaryverse.com
0.0.0.0 minormeeting.com
0.0.0.0 neighborlywatch.com
0.0.0.0 noiselessplough.com
0.0.0.0 nondescriptcrowd.com
0.0.0.0 nondescriptsmile.com
0.0.0.0 nondescriptstocking.com
0.0.0.0 obscenesidewalk.com
0.0.0.0 obscenesidewalk.com
0.0.0.0 observantice.com
0.0.0.0 operationkettle.com
0.0.0.0 paradoxfactor.com
0.0.0.0 parchedangle.com
0.0.0.0 parsimoniouspolice.com
0.0.0.0 possessivebucket.com
0.0.0.0 previouspotato.com
0.0.0.0 puffypull.com
0.0.0.0 quacksquirrel.com
0.0.0.0 quarterbean.com
0.0.0.0 quizzicalzephyr.com
0.0.0.0 readymoon.com
0.0.0.0 reflectivereward.com
0.0.0.0 repeatsweater.com
0.0.0.0 richstring.com
0.0.0.0 roughroll.com
0.0.0.0 scatteredheat.com
0.0.0.0 scintillatingscissors.com
0.0.0.0 secretivecub.com
0.0.0.0 selectionsugar.com
0.0.0.0 shakesuggestion.com
0.0.0.0 shallowsmile.com
0.0.0.0 shallowsmile.com
0.0.0.0 sillyscrew.com
0.0.0.0 sincerebuffalo.com
0.0.0.0 sinceresofa.com
0.0.0.0 sinceresofa.com
0.0.0.0 sincerespy.com
0.0.0.0 sixscissors.com
0.0.0.0 sizesidewalk.com
0.0.0.0 sleepcartoon.com
0.0.0.0 slipperysack.com
0.0.0.0 smashsurprise.com
0.0.0.0 smilingwaves.com
0.0.0.0 smilingwaves.com
0.0.0.0 snakesort.com
0.0.0.0 sombersea.com
0.0.0.0 sombersquirrel.com
0.0.0.0 sombersurprise.com
0.0.0.0 spidersboats.com
0.0.0.0 spiffymachine.com
0.0.0.0 spirebaboon.com
0.0.0.0 springaftermath.com
0.0.0.0 squirrelhands.com
0.0.0.0 stakingscrew.com
0.0.0.0 stakingslope.com
0.0.0.0 steadfastsound.com
0.0.0.0 steadfastsystem.com
0.0.0.0 stickssheep.com
0.0.0.0 stoveseashore.com
0.0.0.0 straightschool.com
0.0.0.0 stripedburst.com
0.0.0.0 structurerod.com
0.0.0.0 stupendoussleet.com
0.0.0.0 sulkybutter.com
0.0.0.0 summerobject.com
0.0.0.0 superficialsink.com
0.0.0.0 talentedsteel.com
0.0.0.0 tangibleteam.com
0.0.0.0 tawdryson.com
0.0.0.0 teenyvolcano.com
0.0.0.0 terriblethumb.com
0.0.0.0 thinkablerice.com
0.0.0.0 threechurch.com
0.0.0.0 toecircle.com
0.0.0.0 tranquilside.com
0.0.0.0 tremendoustime.com
0.0.0.0 typicalteeth.com
0.0.0.0 unarmedindustry.com
0.0.0.0 untidyquestion.com
0.0.0.0 uttermosthobbies.com
0.0.0.0 waryfog.com
0.0.0.0 whiskyqueue.com
0.0.0.0 whisperingcrib.com
0.0.0.0 womanear.com
0.0.0.0 wryfinger.com

View File

@ -0,0 +1,187 @@
# Last Update: June 13, 2020 21:23 CET
#
# Blacklist compiled by @cchevymk
#
# You may freely use, copy, and redistribute this blacklist in any manner you like.
#
# Included in the OISD mega list: https://oisd.nl/?p=inc
#
10bet.com
2mdn.net
a.sitel.com.mk
acadv.net
adxbid.info
adxpremium.services
ad.doubleclick.net
ad.httpool.com
ad.mox.tv
adexchange.mk
adocean.pl
ads.1cm.com.mk
ads.360stepeni.mk
ads.365.mk
ads.com.mk
ads.crnobelo.mk
ads.deca.mk
ads.ekipa.mk
ads.emedia.mk
ads.exdynsrv.com
ads.faktor.mk
ads.fakulteti.mk
ads.fashionel.mk
ads.fokus.mk
ads.foxit.mk
ads.grouper.mk
ads.idividi.com.mk
ads.it.mk
ads.kafepauza.mk
ads.kajgana.com
ads.kanal77.mk
ads.lokalno.mk
ads.mkd.mk
ads.nexage.com
ads.novatv.mk
ads.plusinfo.mk
ads.press24.mk
ads.programattik.com
ads.pubmatic.com
ads.skopjeinfo.mk
ads.sport1.mk
ads.sportclub.mk
ads.stankov.me
ads.studenti.mk
ads.tocka.com.mk
ads.trendolend.mk
ads.vionservices.com
ads.vrabotuvanje.com.mk
adsdms.mk
adserver.mk
adserver.neotel.mk
adservice.google.com
adservice.google.mk
advertiseserve.com
amazon-adsystem.com
aplikacii.com
baneri.24fudbal.com.mk
bet365affiliates.com
bttrack.com
c.adskeeper.co.uk
c.mgid.com
cdn.adskeeper.co.uk
cdn.mgid.com
cdn.revcontent.com
certify-js.alexametrics.com
certify.alexametrics.com
clevernt.com
clickattack.mk
cm.adskeeper.co.uk
cm.g.doubleclick.net
cm.marketgid.com
cm.mgid.com
cm.revcontent.com
coinmedia.tk
d.agkn.com
display.nativemedia.rs
doubleclick.net
ds-aksb-a.akamaihd.net
eadsrv.com
easyads.bg
easyplatform.com
gads.pubmatic.com
gamk.hit.gemius.pl
googleads.g.doubleclick.net
googlesyndication.com
hipersushiads.com
httpool.com
httpool.com.mk
ib.adnxs.com
images.taboola.com
img.revcontent.com
ireklama.mk
jsc.adskeeper.co.uk
jsc.mgid.com
keepaneye.mk
keepaneyeadmk.hit.gemius.pl
keepaneyegdemk.hit.gemius.pl
keepaneyemk.adocean.pl
lacmus.mk
live.acads.net
live.acadv.net
load77.exelator.com
loadm.exelator.com
marketgid.com
marketing.centar.com.mk
marketing.utrinskivesnik.mk
mas.nth.ch
match.adsrvr.org
match.taboola.com
mgid.com
midas-network.com
mkkeepaneyegde.adocean.pl
mobi-promo.com
mozzart.ideaplus.mk
n.ads-adnow.com
n.ads1-adnow.com
n.ads2-adnow.com
n.ads3-adnow.com
n.ads4-adnow.com
n.ads5-adnow.com
nativemedia.rs
net-ads.mk
onesignal.com
pagead46.l.doubleclick.net
panel.ads.com.mk
pixel.onaudience.com
pixel.quantserve.com
pubpress.net
r.denar.mk
reklami.daily.mk
reklami.gbccom.com.mk
relay-mk.ads.httpool.com
rev.balkanmediagroup.com
revcontent.com
revive.futura.net.mk
rtb.mfadsrvr.com
s-img.adskeeper.co.uk
s-img.mgid.com
s.pubmine.com
s0.2mdn.net
s1.adform.net
s2blosh.com
sa.daily.mk
script.dotmetrics.net
securepubads.g.doubleclick.net
servicer.adskeeper.co.uk
servicer.mgid.com
serving-sys.com
smartadserver.com
st-n.ads1-adnow.com
st-n.ads2-adnow.com
st-n.ads3-adnow.com
st-n.ads4-adnow.com
st-n.ads5-adnow.com
st-n.gsasd.info
static-doubleclick-net.l.google.com
static.doubleclick.net
stats.g.doubleclick.net
stats.l.doubleclick.net
static.off.mk
storygize.net
taboola.com
tags.bluekai.com
tas-mk.toboads.com
toboads.com
track.adform.net
trc.taboola.com
trends.revcontent.com
tv21macedonia.xyz
vdads2019.com
video-cdn.marketgid.com
vionservices.com
www.ads.it.mk
www.bid.aero
www.marketgid.com
www.midas-network.com
www.storygize.net
www3.smartadserver.com
x.bidswitch.net

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,397 @@
##
## Popup, Banners and other Advertisments Providers
##
alipopup.ir
freepop.ir
hitpop.ir
ipopup.ir
kingpopup.com
poprush.net
popup.smusic.ir
popupads.ir
popupearn.com
popupsky.ir
popuptala.com
starpopup.com
popfa.ir
popupplus.ir
popupaval.com
popupaval.ir
popupme.net
poparya.com
popgozar.com
popuper.com
toppopup.com
irpopup.ir
talapop.ir
kaprila.com
adro.ir
adro.co
static-cdn.adro.co
popkade.ir
xpop.ir
adclicki.ir
admd.ir
advn.ir
yektanet.com
cdn.yektanet.com
yektnet.com
cdn.yektnet.com
sabavision.com
deema.agency
moat.com
anetwork.ir
clickyab.com
adad.ir
adment.me
adment.space
adnegah.ir
adnegah.net
adtube.ir
rtb.adtube.ir
clickaval.com
utop.ir
ad.utop.ir
paypop.org
popbox.skinak.ir
popmaster.ir
popupha.com
zarpop.com
yekpop.com
weclick.ir
e.weclick.ir
fastclick.ir
fastclick.click
fastclick.co
ssads.net
sigmaad.com
mediaad.org
p30rank.ir
congoro.com
widget.congoro.com
netbina.net
netbina.com
irblue.ml
irgreen.ml
irjo.ga
iranjo.cf
cloudir.cf
cloudirs.cf
adziran.gq
redlini.ga
t3l.ir
te1.ir
popina.ir
popgozar.ir
pazelpop.com
maxpopup.ir
ppop.ir
poppop.ir
popup94.ir
popuptools.com
paypopup.ir
clickirani.net
popnama.ir
popland.ir
popland.info
khobads.com
mrwork.ir
homerank.ir
lordpopup.com
as-popup.ir
nextpopup.ir
popupirani.ir
facepop.org
popupseo.ir
tapsell.ir
api.tapsell.ir
click.tapsell.ir
play.tapsell.ir
backtory.tapsell.ir
1000click.ir
1100011.ir
coding.1100011.ir
ad.nowaroos.com
ads.asr24.com
ads.sahandar.com
irandigitalads.com
backority.ir
ads.rzb.ir
banner.dabi.ir
circle.sezarco.ir
core.clix.ir
static.clix.ir
clix.ir
dariconline.ir
iranweb.click
magnetadservices.com
kimexa.com
widgets.takhfifan.com
vatanclick.ir
wideads.com
ad2ad.ir
adcash.com
adpersia.com
adplxmd.com
adpulse.ir
adsgozar.com
adsima.net
adskyo.com
adsready.com
adziran.ml
clickfa.ir
clickfa.com
clickbar.ir
nextads.ir
onclickads.net
iranwebads.com
irbazdid.com
irclick.net
mitrarank.ir
persianrank.ir
parsirank.com
iprank.ir
ipsell.ir
onestarclick.ir
tabligheirani.com
static.farakav.com
#static2.farakav.com # should not be blocked
ads.farakav.com
#cdn.tabnak.ir # should not be blocked
adserver.netshahr.com
tavoos.net
phoenixad.io
hiperad.com
##
## Pop-bux/PTC (i.e. Pay-to-click) Websites
##
clickbux.ir
setarebux.ir
startbux.ir
yekbux.com
21bux.ir
ariyabux.ir
azarbux.com
baharbux.ir
daramadbux.ir
davedbux.ir
betbux.ir
bux1.ir
buxi.ir
buxirani.com
buxstar.ir
farsbux.ir
jetbux.ir
payabux.com
zibux.ir
vbux.ir
tmbux.ir
tidabux.ir
talabux.ir
rtrbux.ir
ptcbux.ir
paradisebux.com
nemobux.ir
mahanbux.ir
herobux.com
greenbux.ir
gobux.ir
futurebux.ir
flashbux.ir
fambux.ir
daybux.ir
click-bux.ir
buxnet.ir
buxiranzamin.com
bux521.ir
bux14.org
bux14.net
bmbux.ir
bizbux.ir
atrinbux.ir
adsptcbux.ir
iranbux.joojerangi.com
richbux.ir
ojbux.ir
advertisebux.ir
didarbux.com
greenbux.org
p30bux.ir
bux.arshaclick.ir
netbux.ir
webbux.ir
nimanavidclix.com
iranclix.ir
fineptc.com
buxbery.com
1200dollarptc.com
partclick.ir
ptcstair.com
iroclick.ir
lifeclick.ir
mihanclick.info
payza.click
ptc.click
ptc.cusimple.com
picoclix.com
paypc.ir
clixsense.ir
bia2click.ir
1tak-click.ir
lightclick.ir
10click.ir
silverclick.org
n1click.ir
aftabclix.com
nbclick.ir
adparsa.com
##
## Scam Websites (e.g. Fake Download Buttons and Other Misleading Content)
##
app2ads.com
ads2i.com
cgnik.com
srvland.ir
ads4c.com
cg.yourcube.ir
landhub.ir
lans.100second.com
features.jametalaie.com
jayezeh.iranviva.com
clan.setare-bash.com
digitalmarketingcampaignlanding.com
landings.goosheh-mob.ir
landings.simayeaval.com
landing.dasyaar.com
landings.namanetapp.com
landings.kavosh-app.com
landing.hesabehamrah.com
landing.homeescreen.com
landings.namaa3.com
landings.shomareshmakoos.com
landing.symaart.com
landings.matbakh-app.com
newlanding.boomrang-app.ir
newlanding.ostaadbozorg.com
rezabook.rozblog.com
ghor-e-keshi.com
gifttori.com
gifttory.com
hediehapp.com
hillaro.com
icnlandings.ir
kashteh.intwo.ir
lan.vitamin-p.ir
lan.tackleapp.ir
lan2.100second.com
landing.popupme.net
landing.rahyabpg.co.ir
landing.raman.tel
landinget.com
landings.resanet.ir
lans.ekarestoon.com
lans.jahan-namaa.ir
lans.setare-bash.com
landings.frekaans.ir
landings.negatiiv.com
landings.rabonaapp.com
landings.ravitel.com
landings.resaanet.com
landings.serviceaval.com
landings.telecup.com
landsys.mydigibazi.com
lan2.danesh-mand.ir
landings.sarnakh-mob.ir
landings.service3.ir
landings.hashiiyeh.com
landing.100.marketing
landing.myserverdev.ir
newlanding.eyemaan.com
story-app.landiiing.ir
clipdooneh.landiiing.ir
landiiing.ir
pay.avastart.ir
payastars.co
payment.kanape.ir
blurbazi.drapp.ir
mcisportland.aparat.com
megalandings.com
hediyehlanding.ir
plus.sabketo.com
onlinepluss.com
landfg.com
mahsaann.com
##
## Analytics/Statistics and other Trackers
##
histats.com
amarfa.ir
webgozar.com
webgozar.ir
r.hitplus.ir
s.hitplus.ir
c3.gostats.ir
gostats.ir
radar.bayan.ir
persianstat.com
persianstat.ir
ammaar.cafebazaar.ir
actionlog.divar.ir
analytics.metrix.ir
trc.metrix.ir
metrix.ir
app.adtrace.io
adtrace.io
cheshmak.me
sdk.cheshmak.me
##
## Dead/Zombie Websites
##
qoo.sh
randewoo.ir
hackerz.ir
nutnet.ir
up.video-learn.net
mesearch.xyz
terraclicks.com
goldads.info
masbian.com
##
## Fringe/Scam Websites
##
jomehjob.com
##
## Personal Blacklist
##
# reason unknown (yet)
#vista.ir
#wikiforosh.ir
#uploado.xyz
# reason: unsafe domain; known to have been compromised in the past
laleh.itrc.ac.ir
# reason: website involved in excessive/scamming ads
yasell.biz
# reason: excessive advertisment; scamming game
# zula.ir
# reason: unwanted iranian advertisement; unwanted redirect
peyvandha.ir

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,6 @@
# MalwareDomainList.com Hosts List #
# http://www.malwaredomainlist.com/hostslist/hosts.txt #
# Last updated: Thu, 12 Nov 20 22:17:56 +0000 #
127.0.0.1 localhost

39
backup_db.sh Executable file
View File

@ -0,0 +1,39 @@
#!/bin/bash
# Logowanie wszystkiego do pliku backup.log
LOG_FILE="/home/seba/mydocker/backup.log"
exec > >(tee -a "$LOG_FILE") 2>&1
DATE=$(date +%Y%m%d_%H%M)
BACKUP_DIR="/media/seagata16t/backups/db_dumps"
# Ustawiamy ścieżkę zgodną z tym, co widzi rclone (sprawdź rclone lsd gdrive:)
REMOTE_PATH="gdrive:backups_n_configs/acemagic/db_dumps"
RCLONE_CONF="/home/seba/.config/rclone/rclone.conf"
echo "--- Backup start: $DATE ---"
# 1. Zrzut bazy z kompresją
echo "Dumping database..."
DBS=$(docker exec postgres18 psql -U homeassistant -tAc "SELECT datname FROM pg_database WHERE datistemplate=false AND datname!='postgres' ORDER BY datname;" | tr '\n' ',')
echo "Databases: ${DBS%,}"
docker exec postgres18 pg_dumpall -U homeassistant | gzip > $BACKUP_DIR/db_dump_$DATE.sql.gz
SIZE=$(du -sh $BACKUP_DIR/db_dump_$DATE.sql.gz | cut -f1)
echo "Dump size: $SIZE"
# 2. Wysyłka do Google Drive
echo "Uploading to Google Drive..."
rclone --config $RCLONE_CONF copy $BACKUP_DIR/db_dump_$DATE.sql.gz $REMOTE_PATH
# 3. Usuwanie starych kopii na GDrive (zostawia 3 najnowsze)
echo "Cleaning old backups on GDrive..."
rclone --config $RCLONE_CONF lsf $REMOTE_PATH --format "tp" --separator ";" --files-only | sort | head -n -3 | while read -r line; do
FILENAME=$(echo $line | cut -d';' -f2)
echo "Deleting old remote file: $FILENAME"
rclone --config $RCLONE_CONF delete "$REMOTE_PATH/$FILENAME"
done
# 4. Usuwanie lokalne
find $BACKUP_DIR -type f -name "*.sql.gz" -mtime +1 -delete
DURATION=$(( $(date +%s) - $(date -d "${DATE:0:8} ${DATE:9:2}:${DATE:11:2}" +%s) ))
echo "Duration: ${DURATION}s"
echo "--- Backup finished: $(date) ---"

52
bitwarden/README.md Normal file
View File

@ -0,0 +1,52 @@
# Bitwarden / Vaultwarden
Menedzer hasel oparty na Vaultwarden (kompatybilny z klientami Bitwarden). Backend PostgreSQL, uwierzytelnianie dwuetapowe przez YubiKey.
## URL / Dostep
- URL: https://bward.sebson.space
- Port wewnetrzny: 9989->80
- Logowanie: email + haslo + YubiKey OTP
## Konfiguracja
- Obraz: `vaultwarden/server`
- Baza danych: PostgreSQL na `postgres18:5432/bitwarden`
- 2FA: YubiKey (YUBICO_CLIENT_ID + YUBICO_SECRET_KEY z `.env`)
- Wlasny serwer weryfikacji Yubico: `bward.sebson.space/wsapi/2.0/verify`
- Konfiguracja przez zmienne srodowiskowe w `.env`
## Storage / Dane
| Sciezka | Zawartosc |
|---------|-----------|
| `./bitwarden/attachments/` | zalaczniki do wpisow |
| `./bitwarden/sends/` | pliki Bitwarden Send |
| `./bitwarden/icon_cache/` | cache ikon stron |
| `./bitwarden/tmp/` | pliki tymczasowe |
| `./bitwarden/rsa_key.pem` | klucz prywatny RSA |
| `./bitwarden/rsa_key.pub.pem` | klucz publiczny RSA |
Dane haseł sa w bazie PostgreSQL (`bitwarden` DB na `postgres18`).
## Powiazania
- **postgres18** - glowna baza danych
- **Traefik** - reverse proxy, TLS
- **YubiKey** - sprzętowy klucz 2FA (serwer weryfikacji hostowany lokalnie)
## Przydatne komendy
```bash
# Logi
docker compose logs -f vaultwarden
# Backup bazy (przez ogolny skrypt)
./backup_db.sh
# Restart
docker compose restart vaultwarden
# Eksport/import przez klientow Bitwarden CLI:
bw export --format json
```

11
brana-frontend/Dockerfile Normal file
View File

@ -0,0 +1,11 @@
FROM nginx:alpine
# Copy the static files
COPY index.html /usr/share/nginx/html/
COPY nginx.conf /etc/nginx/conf.d/default.conf
# Expose port 80
EXPOSE 80
# Start Nginx
CMD ["nginx", "-g", "daemon off;"]

38
brana-frontend/README.md Normal file
View File

@ -0,0 +1,38 @@
# brana-frontend
Customowy panel sterowania brama wjazdowa. Statyczna strona HTML serwowana przez nginx, komunikujaca sie bezposrednio z Home Assistant przez REST API. Zbudowana mobilnie (max-width 420px, dark mode).
## URL / Dostep
- https://brana.sebson.space (port 9080 -> 80)
## Co robi
- Wyswietla aktualny stan bramy (open/closed/unknown) z Home Assistant
- Przyciski: otworz brame, zamknij brame, stop
- Wywoluje serwisy HA przez `https://ha.sebson.space` (Content-Security-Policy zezwala tylko na ten host)
- Modal z polem na token HA (przechowywany w localStorage)
- Statusy: ready (zielony), processing (niebieski, animacja), error (czerwony)
## Konfiguracja nginx
- Naglowki bezpieczenstwa: X-Frame-Options DENY, CSP, X-Content-Type-Options
- Real IP z naglowka X-Real-IP (trust 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 - Traefik)
- Gzip dla assets
- `/health` - health check endpoint
## Przydatne komendy
```bash
# Logi nginx
docker compose logs -f brana-frontend
# Weryfikacja configu nginx
docker exec brana-frontend nginx -t
# Przeladowanie nginx bez restartu
docker exec brana-frontend nginx -s reload
# Rebuild po zmianach w index.html
docker compose build brana-frontend && docker compose up -d brana-frontend
```

754
brana-frontend/index.html Normal file
View File

@ -0,0 +1,754 @@
<!DOCTYPE html>
<html lang="cs">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
<title>Ovládání Brány</title>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
<style>
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
body {
font-family: 'Inter', sans-serif;
background: #0a0f1e;
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
padding: 1.25rem;
color: #ffffff;
}
.card {
background: #131c31;
border-radius: 28px;
padding: 2.25rem 2rem 2rem;
width: 100%;
max-width: 420px;
box-shadow: 0 30px 80px rgba(0, 0, 0, 0.6);
border: 1px solid rgba(255, 255, 255, 0.07);
}
/* Header */
.header {
text-align: center;
margin-bottom: 1.75rem;
}
.header-icon {
font-size: 2.75rem;
margin-bottom: 0.5rem;
display: block;
line-height: 1;
}
.header h1 {
font-size: 1.6rem;
font-weight: 800;
color: #ffffff;
letter-spacing: -0.4px;
}
/* Status banner */
.status-banner {
border-radius: 14px;
padding: 1rem 1.25rem;
margin-bottom: 1.75rem;
display: flex;
align-items: center;
gap: 0.875rem;
transition: background 0.3s, border-color 0.3s;
border: 2px solid transparent;
}
.status-banner.ready {
background: rgba(34, 197, 94, 0.12);
border-color: rgba(34, 197, 94, 0.35);
}
.status-banner.processing {
background: rgba(59, 130, 246, 0.12);
border-color: rgba(59, 130, 246, 0.35);
}
.status-banner.error {
background: rgba(239, 68, 68, 0.15);
border-color: rgba(239, 68, 68, 0.45);
}
.status-dot {
width: 13px;
height: 13px;
border-radius: 50%;
flex-shrink: 0;
transition: background 0.3s, box-shadow 0.3s;
}
.status-banner.ready .status-dot { background: #22c55e; box-shadow: 0 0 10px #22c55e; }
.status-banner.processing .status-dot { background: #3b82f6; box-shadow: 0 0 10px #3b82f6; animation: blink 1.2s infinite; }
.status-banner.error .status-dot { background: #ef4444; box-shadow: 0 0 10px #ef4444; }
.status-text-wrap { display: flex; flex-direction: column; gap: 0.1rem; }
.status-label {
font-size: 0.72rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.08em;
opacity: 0.6;
}
.status-banner.ready .status-label { color: #86efac; }
.status-banner.processing .status-label { color: #93c5fd; }
.status-banner.error .status-label { color: #fca5a5; }
.status-msg {
font-size: 1rem;
font-weight: 600;
line-height: 1.3;
}
.status-banner.ready .status-msg { color: #dcfce7; }
.status-banner.processing .status-msg { color: #dbeafe; }
.status-banner.error .status-msg { color: #fee2e2; }
/* Buttons */
.btn {
width: 100%;
border: none;
border-radius: 18px;
cursor: pointer;
font-family: 'Inter', sans-serif;
font-weight: 700;
padding: 1.1rem 1.35rem;
display: flex;
align-items: center;
gap: 1rem;
transition: transform 0.12s ease, box-shadow 0.15s ease, opacity 0.2s;
margin-bottom: 0.85rem;
text-align: left;
}
.btn:last-child { margin-bottom: 0; }
.btn-icon-wrap {
width: 52px;
height: 52px;
border-radius: 14px;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.6rem;
flex-shrink: 0;
background: rgba(255, 255, 255, 0.15);
}
.btn-text { display: flex; flex-direction: column; gap: 0.15rem; }
.btn-label {
font-size: 1.15rem;
font-weight: 800;
color: #ffffff;
line-height: 1.2;
}
.btn-sub {
font-size: 0.8rem;
font-weight: 500;
color: rgba(255, 255, 255, 0.65);
}
/* Open gate - green */
.btn-open {
background: linear-gradient(135deg, #16a34a 0%, #15803d 100%);
box-shadow: 0 6px 24px rgba(22, 163, 74, 0.4);
}
.btn-open:hover:not(:disabled) {
transform: translateY(-2px);
box-shadow: 0 10px 30px rgba(22, 163, 74, 0.55);
}
/* Close gate - red */
.btn-close {
background: linear-gradient(135deg, #dc2626 0%, #b91c1c 100%);
box-shadow: 0 6px 24px rgba(220, 38, 38, 0.4);
}
.btn-close:hover:not(:disabled) {
transform: translateY(-2px);
box-shadow: 0 10px 30px rgba(220, 38, 38, 0.55);
}
/* Doorbell - amber */
.btn-doorbell {
background: linear-gradient(135deg, #d97706 0%, #b45309 100%);
box-shadow: 0 6px 24px rgba(217, 119, 6, 0.4);
}
.btn-doorbell:hover:not(:disabled) {
transform: translateY(-2px);
box-shadow: 0 10px 30px rgba(217, 119, 6, 0.55);
}
.btn:active:not(:disabled) { transform: translateY(1px) scale(0.985); }
.btn:disabled {
opacity: 0.35;
cursor: not-allowed;
transform: none !important;
box-shadow: none !important;
}
.divider {
height: 1px;
background: rgba(255, 255, 255, 0.07);
margin: 1rem 0;
}
/* Modal overlay */
.modal-overlay {
position: fixed;
inset: 0;
background: rgba(0, 0, 0, 0.88);
display: flex;
align-items: center;
justify-content: center;
z-index: 200;
backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px);
padding: 1.25rem;
}
.modal-box {
background: #1a2540;
border: 2px solid rgba(255, 255, 255, 0.12);
border-radius: 24px;
padding: 2.25rem 2rem;
width: 100%;
max-width: 360px;
box-shadow: 0 40px 100px rgba(0, 0, 0, 0.7);
}
.modal-header {
text-align: center;
margin-bottom: 1.5rem;
}
.modal-icon {
font-size: 3rem;
display: block;
margin-bottom: 0.75rem;
line-height: 1;
}
.modal-title {
font-size: 1.2rem;
font-weight: 800;
color: #ffffff;
line-height: 1.35;
margin-bottom: 0.4rem;
}
.modal-subtitle {
font-size: 0.9rem;
color: #64748b;
line-height: 1.4;
}
.modal-field { margin-bottom: 1.25rem; }
.modal-field-label {
display: block;
font-size: 0.8rem;
font-weight: 700;
color: #94a3b8;
text-transform: uppercase;
letter-spacing: 0.07em;
margin-bottom: 0.5rem;
}
.modal-input {
width: 100%;
padding: 0.95rem 1.1rem;
border-radius: 14px;
border: 2px solid rgba(255, 255, 255, 0.12);
background: rgba(255, 255, 255, 0.06);
color: #ffffff;
font-size: 1.15rem;
font-family: 'Inter', sans-serif;
font-weight: 600;
outline: none;
transition: border-color 0.2s, box-shadow 0.2s;
}
.modal-input:focus {
border-color: #3b82f6;
box-shadow: 0 0 0 4px rgba(59, 130, 246, 0.2);
}
.modal-input::placeholder { color: #334155; }
.modal-actions { display: flex; flex-direction: column; gap: 0.625rem; }
.modal-btn {
width: 100%;
border: none;
border-radius: 14px;
padding: 1rem;
font-family: 'Inter', sans-serif;
font-size: 1.05rem;
font-weight: 700;
cursor: pointer;
transition: all 0.15s;
}
.modal-btn-confirm { background: #2563eb; color: #ffffff; }
.modal-btn-confirm:hover { background: #1d4ed8; }
.modal-btn-warn { background: #dc2626; color: #ffffff; }
.modal-btn-warn:hover { background: #b91c1c; }
.modal-btn-cancel {
background: rgba(255, 255, 255, 0.07);
color: #94a3b8;
}
.modal-btn-cancel:hover { background: rgba(255, 255, 255, 0.12); color: #ffffff; }
@keyframes blink {
0%, 100% { opacity: 0.5; transform: scale(0.9); }
50% { opacity: 1; transform: scale(1.15); }
}
</style>
</head>
<body>
<!-- Modal -->
<div id="modal" class="modal-overlay" style="display:none" onclick="if(event.target===this)modalCancel()">
<div class="modal-box">
<div class="modal-header">
<span class="modal-icon" id="modal-icon"></span>
<div class="modal-title" id="modal-title"></div>
<div class="modal-subtitle" id="modal-subtitle"></div>
</div>
<div class="modal-field" id="modal-field" style="display:none">
<label class="modal-field-label">Heslo</label>
<input type="password" id="modal-input" class="modal-input" placeholder="Zadejte heslo..."
onkeydown="if(event.key==='Enter')modalConfirm();if(event.key==='Escape')modalCancel()">
</div>
<div class="modal-actions">
<button id="modal-confirm-btn" class="modal-btn modal-btn-confirm" onclick="modalConfirm()">Potvrdit</button>
<button class="modal-btn modal-btn-cancel" onclick="modalCancel()">Zrušit</button>
</div>
</div>
</div>
<!-- Main card -->
<div class="card">
<div class="header">
<span class="header-icon" id="headerIcon" onclick="easterEgg()" style="cursor:pointer;user-select:none">🏠</span>
<h1>Ovládání brány</h1>
</div>
<div class="status-banner processing" id="statusBanner">
<div class="status-dot"></div>
<div class="status-text-wrap">
<span class="status-label" id="statusLabel">Stav</span>
<span class="status-msg" id="statusText">Připojování...</span>
</div>
</div>
<button class="btn btn-open" onclick="otevri()" id="btnOpen" disabled>
<div class="btn-icon-wrap">🔓</div>
<div class="btn-text">
<span class="btn-label">Otevřít bránu</span>
<span class="btn-sub">Vjezdová brána</span>
</div>
</button>
<button class="btn btn-close" onclick="zavri()" id="btnClose" disabled>
<div class="btn-icon-wrap">🔒</div>
<div class="btn-text">
<span class="btn-label">Zavřít bránu</span>
<span class="btn-sub">Zkontrolujte průjezd!</span>
</div>
</button>
<div class="divider"></div>
<button class="btn btn-doorbell" onclick="openDoorbell()" id="btnOpenDoorbell">
<div class="btn-icon-wrap">🚪</div>
<div class="btn-text">
<span class="btn-label">Otevřít dveře</span>
<span class="btn-sub">Branka pro pěší</span>
</div>
</button>
</div>
<script>
// =========================
// EASTER EGG (pro Martina)
// =========================
let _eggClicks = 0, _eggTimer = null;
function easterEgg() {
_eggClicks++;
clearTimeout(_eggTimer);
_eggTimer = setTimeout(() => { _eggClicks = 0; }, 1500);
if (_eggClicks >= 5) {
_eggClicks = 0;
showConfirmModal(
'🏆',
'Gratulujeme!',
'Zvládl jsi kliknout 5× na domek. To nezvládne každý.\n\n' +
'Zelené tlačítko = otevřít. Červené = zavřít.\n' +
'Stejný princip jako semafory, jen bez toho oranžového. 🚦',
'Rozumím, díky! 👍',
'modal-btn-confirm'
);
}
}
// =========================
// CONFIGURATION
// =========================
const GEOIP_ENABLED = false;
// Global variables
let connectionStatus = false;
let locationAllowed = false;
let locationChecked = false;
// =========================
// MODAL
// =========================
let _modalResolve = null;
function showPasswordModal(icon, title, subtitle, confirmText, confirmClass = 'modal-btn-confirm') {
return new Promise((resolve) => {
_modalResolve = resolve;
document.getElementById('modal-icon').textContent = icon;
document.getElementById('modal-title').textContent = title;
document.getElementById('modal-subtitle').textContent = subtitle;
document.getElementById('modal-field').style.display = 'block';
const input = document.getElementById('modal-input');
input.value = '';
const btn = document.getElementById('modal-confirm-btn');
btn.textContent = confirmText;
btn.className = 'modal-btn ' + confirmClass;
document.getElementById('modal').style.display = 'flex';
setTimeout(() => input.focus(), 60);
});
}
function showConfirmModal(icon, title, subtitle, confirmText, confirmClass = 'modal-btn-warn') {
return new Promise((resolve) => {
_modalResolve = resolve;
document.getElementById('modal-icon').textContent = icon;
document.getElementById('modal-title').textContent = title;
document.getElementById('modal-subtitle').textContent = subtitle;
document.getElementById('modal-field').style.display = 'none';
const btn = document.getElementById('modal-confirm-btn');
btn.textContent = confirmText;
btn.className = 'modal-btn ' + confirmClass;
document.getElementById('modal').style.display = 'flex';
});
}
function modalConfirm() {
const field = document.getElementById('modal-field');
const val = field.style.display !== 'none'
? document.getElementById('modal-input').value
: true;
document.getElementById('modal').style.display = 'none';
if (_modalResolve) { _modalResolve(val); _modalResolve = null; }
}
function modalCancel() {
document.getElementById('modal').style.display = 'none';
if (_modalResolve) { _modalResolve(null); _modalResolve = null; }
}
// =========================
// STATUS
// =========================
const STATE_LABELS = { ready: 'Připraveno', processing: 'Probíhá', error: 'Chyba' };
function setStatus(text, state = 'ready') {
const banner = document.getElementById('statusBanner');
const label = document.getElementById('statusLabel');
const msg = document.getElementById('statusText');
banner.className = 'status-banner ' + state;
label.textContent = STATE_LABELS[state] || state;
msg.textContent = text;
}
// =========================
// GEOLOCATION
// =========================
function checkGeoLocation() {
return new Promise((resolve) => {
if (!GEOIP_ENABLED) {
locationAllowed = true;
locationChecked = true;
resolve(true);
return;
}
setStatus('Ověřování polohy...', 'processing');
locationAllowed = false;
locationChecked = false;
const geoipServices = [
'https://ipapi.co/json/',
'https://ip-api.com/json/',
'https://ipinfo.io/json'
];
let serviceIndex = 0;
let attempts = 0;
const maxAttempts = 3;
function tryNextService() {
attempts++;
if (serviceIndex >= geoipServices.length || attempts > maxAttempts) {
locationAllowed = false;
locationChecked = true;
setStatus('Nelze ověřit zemi přístupu přístup zamítnut', 'error');
resolve(false);
return;
}
const controller = new AbortController();
const timeoutId = setTimeout(() => controller.abort(), 5000);
fetch(geoipServices[serviceIndex], { method: 'GET', cache: 'no-cache', signal: controller.signal })
.then(r => { clearTimeout(timeoutId); if (!r.ok) throw new Error(); return r.json(); })
.then(data => {
let cc = (data.country_code || data.countryCode || data.country || '').toUpperCase();
locationChecked = true;
if (cc === 'CZ' || cc === 'PL') {
locationAllowed = true;
resolve(true);
} else {
locationAllowed = false;
setStatus(`Přístup povolen pouze z CZ a PL (detekováno: ${cc || '?'})`, 'error');
resolve(false);
}
})
.catch(() => { clearTimeout(timeoutId); serviceIndex++; setTimeout(tryNextService, 100); });
}
tryNextService();
});
}
// =========================
// CONNECTION CHECK
// =========================
function updateOverallStatus() {
const btnOpen = document.getElementById('btnOpen');
const btnClose = document.getElementById('btnClose');
if (!locationChecked) {
setStatus('Ověřování polohy...', 'processing');
btnOpen.disabled = btnClose.disabled = true;
} else if (!locationAllowed) {
btnOpen.disabled = btnClose.disabled = true;
} else if (!connectionStatus) {
btnOpen.disabled = btnClose.disabled = true;
} else {
const cur = document.getElementById('statusText').textContent;
if (!cur.includes('(') || cur.includes('Ověřování')) setStatus('Připraveno', 'ready');
btnOpen.disabled = btnClose.disabled = false;
}
}
async function checkConnection() {
return new Promise((resolve) => {
const timeout = setTimeout(() => {
connectionStatus = false;
setStatus('Časový limit server nedostupný. Zkontrolujte internet.', 'error');
resolve();
}, 3000);
const img = new Image();
img.onload = () => {
clearTimeout(timeout);
connectionStatus = true;
updateOverallStatus();
resolve();
};
img.onerror = () => {
clearTimeout(timeout);
fetch('https://ha.sebson.space', { method: 'HEAD', cache: 'no-cache' })
.then(() => { connectionStatus = true; updateOverallStatus(); })
.catch((e) => {
if (e.name === 'TypeError' && e.message.includes('Failed to fetch')) {
connectionStatus = false;
setStatus('Server nedostupný zkontrolujte připojení k internetu', 'error');
} else {
connectionStatus = true;
updateOverallStatus();
}
})
.finally(() => resolve());
};
img.src = 'https://ha.sebson.space/favicon.ico?' + Date.now();
});
}
// =========================
// INIT
// =========================
async function initialize() {
if (GEOIP_ENABLED) {
await checkGeoLocation();
if (locationAllowed) await checkConnection();
} else {
locationAllowed = true;
locationChecked = true;
setStatus('Připojování...', 'processing');
await checkConnection();
}
}
initialize();
setInterval(() => {
if (locationAllowed && document.visibilityState === 'visible') checkConnection();
}, 30000);
// =========================
// ACTIONS
// =========================
async function otevri() {
if (GEOIP_ENABLED && !locationAllowed) return;
if (!connectionStatus) {
setStatus('Server není dostupný zkontrolujte připojení', 'error');
return;
}
const heslo = await showPasswordModal(
'🔓', 'Otevřít vjezdovou bránu',
'Pro bezpečnost zadejte heslo.',
'Otevřít bránu', 'modal-btn-confirm'
);
if (!heslo) return;
const btnOpen = document.getElementById('btnOpen');
const btnClose = document.getElementById('btnClose');
btnOpen.disabled = btnClose.disabled = true;
try {
setStatus('Otevírám bránu...', 'processing');
const response = await fetch('https://ha.sebson.space/api/webhook/otevri_branu_66665', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ password: heslo })
});
if (response.ok) {
setStatus('Brána se otevírá ✓', 'ready');
setTimeout(() => setStatus('Připraveno', 'ready'), 4000);
} else if (response.status === 401) {
setStatus('Nesprávné heslo zkuste to znovu', 'error');
setTimeout(() => setStatus('Připraveno', 'ready'), 3000);
} else {
setStatus(`Chyba serveru (kód ${response.status}) zkuste to znovu`, 'error');
}
} catch {
setStatus('Chyba připojení zkontrolujte internet a zkuste znovu', 'error');
setTimeout(() => checkConnection(), 1500);
} finally {
btnOpen.disabled = btnClose.disabled = false;
}
}
async function zavri() {
if (GEOIP_ENABLED && !locationAllowed) return;
if (!connectionStatus) {
setStatus('Server není dostupný zkontrolujte připojení', 'error');
return;
}
const ok = await showConfirmModal(
'⚠️', 'Zavřít vjezdovou bránu?',
'Ujistěte se, že v průjezdu nic ani nikdo není.',
'Ano, zavřít bránu', 'modal-btn-warn'
);
if (!ok) return;
const btnOpen = document.getElementById('btnOpen');
const btnClose = document.getElementById('btnClose');
btnOpen.disabled = btnClose.disabled = true;
try {
setStatus('Zavírám bránu...', 'processing');
const response = await fetch('https://ha.sebson.space/api/webhook/zavri_branu_66665', {
method: 'POST'
});
if (response.ok) {
setStatus('Brána se zavírá ✓', 'ready');
setTimeout(() => setStatus('Připraveno', 'ready'), 4000);
} else {
setStatus(`Chyba serveru (kód ${response.status}) zkuste to znovu`, 'error');
}
} catch {
setStatus('Chyba připojení zkontrolujte internet a zkuste znovu', 'error');
setTimeout(() => checkConnection(), 1500);
} finally {
btnOpen.disabled = btnClose.disabled = false;
}
}
async function openDoorbell() {
if (GEOIP_ENABLED && !locationAllowed) return;
if (!connectionStatus) {
setStatus('Server není dostupný zkontrolujte připojení', 'error');
return;
}
const heslo = await showPasswordModal(
'🚪', 'Otevřít branku pro pěší',
'Pro bezpečnost zadejte heslo.',
'Otevřít dveře', 'modal-btn-confirm'
);
if (!heslo) return;
const btn = document.getElementById('btnOpenDoorbell');
btn.disabled = true;
try {
setStatus('Otevírám dveře...', 'processing');
const response = await fetch('https://ha.sebson.space/api/webhook/otevri_brankkku_66665', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ password: heslo })
});
if (response.ok) {
setStatus('Dveře se otevírají ✓', 'ready');
setTimeout(() => setStatus('Připraveno', 'ready'), 4000);
} else if (response.status === 401) {
setStatus('Nesprávné heslo zkuste to znovu', 'error');
setTimeout(() => setStatus('Připraveno', 'ready'), 3000);
} else {
setStatus(`Chyba serveru (kód ${response.status}) zkuste to znovu`, 'error');
}
} catch {
setStatus('Chyba připojení zkontrolujte internet a zkuste znovu', 'error');
setTimeout(() => checkConnection(), 1500);
} finally {
btn.disabled = false;
}
}
</script>
</body>
</html>

64
brana-frontend/nginx.conf Normal file
View File

@ -0,0 +1,64 @@
server {
listen 80;
server_name _;
root /usr/share/nginx/html;
index index.html;
# Real IP configuration - trust only Docker internal networks (Traefik)
real_ip_header X-Real-IP;
real_ip_recursive on;
set_real_ip_from 172.16.0.0/12;
set_real_ip_from 192.168.0.0/16;
set_real_ip_from 10.0.0.0/8;
# Security headers
add_header X-Content-Type-Options nosniff always;
add_header X-Frame-Options "DENY" always;
add_header Referrer-Policy "no-referrer" always;
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' https://cdnjs.cloudflare.com https://fonts.googleapis.com; style-src 'self' 'unsafe-inline' https://cdnjs.cloudflare.com https://fonts.googleapis.com https://fonts.gstatic.com; font-src https://cdnjs.cloudflare.com https://fonts.gstatic.com; connect-src https://ha.sebson.space; img-src 'self' data:;" always;
add_header Permissions-Policy "geolocation=(), camera=(), microphone=()" always;
# Enable gzip
gzip on;
gzip_vary on;
gzip_min_length 10240;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml;
gzip_disable "MSIE [1-6]\.";
# Handle all routes by serving index.html
location / {
try_files $uri $uri/ /index.html;
# Allow CORS preflight requests
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain; charset=utf-8';
add_header 'Content-Length' 0;
return 204;
}
}
# Set proper MIME type for files
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
access_log off;
}
# Disable logging for assets and favicon
location = /favicon.ico {
log_not_found off;
access_log off;
}
# Health check endpoint
location /health {
access_log off;
add_header Content-Type text/plain;
return 200 'OK';
}
}

64
camera-llm/README.md Normal file
View File

@ -0,0 +1,64 @@
# camera-llm
System pamieci kamer oparty na LLM. Dwa komponenty: `camera-memory` co sekunde pobiera klatki z kamer Frigate, opisuje je przez model wizyjny i zapisuje embeddingi do ChromaDB; `camera-api` udostepnia interfejs webowy i API do zadawania pytan o to co dzialo sie na kamerach.
## Architektura
```
[Frigate /api/<camera>/latest.jpg]
|
v
[camera-memory] --> moondream (opis klatki) --> nomic-embed-text (embedding) --> ChromaDB camera_frames
|
v
[camera-api] <-- uzytkownik pyta --> ChromaDB (semantic search) --> mistral (odpowiedz) --> wynik
```
## Komponenty
### camera-memory
- Pobiera co INTERVAL sekund najnowsza klatke z kazdej kamery przez Frigate API
- Wysyla do modelu `moondream` prompt: "Describe briefly: people (gender, clothing, action), vehicles (color, type), animals, packages, unusual activity."
- Tworzy embedding przez `nomic-embed-text` i zapisuje w kolekcji `camera_frames`
- Co 3600 iteracji usuwa wpisy starsze niz RETENTION_HOURS (domyslnie 72h)
### camera-api
- FastAPI + wbudowany HTML frontend (dark mode, PL)
- `GET /` - interfejs webowy do zadawania pytan po polsku
- `GET /ask?q=...` - odpowiedz przez RAG (ChromaDB + mistral), zwraca answer + sources
- `GET /recent?camera=&hours=1` - ostatnie obserwacje
- `GET /stats` - liczba zapisanych klatek
- `GET /health` - health check
## Konfiguracja (zmienne env)
| Zmienna | Domyslnie | Opis |
|---------|-----------|------|
| `FRIGATE_URL` | `http://frigate:5000` | Adres API Frigate |
| `OLLAMA_URL` | `http://ollama:11434` | Adres Ollama |
| `CHROMA_URL` | `http://chromadb:8000` | Adres ChromaDB |
| `CAMERAS` | `front_door` | Lista kamer oddzielona przecinkami |
| `INTERVAL` | `1` | Interwał pobierania klatek (sekundy) |
| `RETENTION_HOURS` | `72` | Czas retencji wpisow w ChromaDB |
## Przydatne komendy
```bash
# Logi
docker compose logs -f camera-memory
docker compose logs -f camera-api
# Ile klatek jest w pamieci
curl http://localhost:<port>/stats
# Pytanie przez API
curl "http://localhost:<port>/ask?q=czy+bylo+dzisiaj+czerwone+auto"
# Ostatnie obserwacje z konkretnej kamery (ostatnia godzina)
curl "http://localhost:<port>/recent?camera=reolink_1&hours=1"
# Rebuild
docker compose build camera-memory camera-api && docker compose up -d camera-memory camera-api
```

View File

@ -0,0 +1,7 @@
FROM python:3.11-slim
WORKDIR /app
COPY app/ .
RUN pip install --no-cache-dir -r requirements.txt
CMD ["uvicorn", "query_api:app", "--host", "0.0.0.0", "--port", "8080"]

View File

@ -0,0 +1,143 @@
import os
from datetime import datetime, timedelta
from fastapi import FastAPI, Query
from fastapi.responses import HTMLResponse
import ollama
import chromadb
OLLAMA_URL = os.getenv("OLLAMA_URL", "http://ollama:11434")
CHROMA_URL = os.getenv("CHROMA_URL", "http://chromadb:8000")
ollama_client = ollama.Client(host=OLLAMA_URL)
chroma_host = CHROMA_URL.replace("http://", "").split(":")[0]
chroma_port = int(CHROMA_URL.split(":")[-1])
chroma = chromadb.HttpClient(host=chroma_host, port=chroma_port)
collection = chroma.get_or_create_collection("camera_frames")
app = FastAPI(title="Camera Memory API")
HTML_PAGE = """
<!DOCTYPE html>
<html>
<head>
<title>Camera Memory</title>
<meta charset="utf-8">
<style>
* { box-sizing: border-box; }
body { font-family: -apple-system, sans-serif; max-width: 800px; margin: 0 auto; padding: 20px; background: #1a1a2e; color: #eee; }
h1 { color: #00d9ff; }
.search-box { display: flex; gap: 10px; margin-bottom: 20px; }
input[type="text"] { flex: 1; padding: 12px; font-size: 16px; border: none; border-radius: 8px; background: #16213e; color: #eee; }
button { padding: 12px 24px; font-size: 16px; background: #00d9ff; color: #1a1a2e; border: none; border-radius: 8px; cursor: pointer; font-weight: bold; }
button:hover { background: #00b4d8; }
button:disabled { background: #555; cursor: wait; }
.answer { background: #16213e; padding: 20px; border-radius: 8px; margin-bottom: 20px; line-height: 1.6; }
.sources { font-size: 14px; color: #888; }
.source { background: #0f1729; padding: 10px; margin: 5px 0; border-radius: 4px; border-left: 3px solid #00d9ff; }
.source-time { color: #00d9ff; font-weight: bold; }
.stats { color: #666; font-size: 14px; margin-bottom: 20px; }
.loading { color: #00d9ff; }
</style>
</head>
<body>
<h1>📷 Camera Memory</h1>
<div class="stats" id="stats">Loading stats...</div>
<div class="search-box">
<input type="text" id="question" placeholder="Zapytaj np. 'kiedy była kobieta?' lub 'czy było czerwone auto?'" onkeypress="if(event.key==='Enter')ask()">
<button onclick="ask()" id="btn">Zapytaj</button>
</div>
<div id="result"></div>
<script>
async function loadStats() {
try {
const r = await fetch('/stats');
const data = await r.json();
document.getElementById('stats').innerHTML = `📊 Zapisanych klatek: <strong>${data.total_frames}</strong>`;
} catch(e) {
document.getElementById('stats').innerHTML = '❌ Błąd połączenia';
}
}
async function ask() {
const q = document.getElementById('question').value.trim();
if (!q) return;
const btn = document.getElementById('btn');
const result = document.getElementById('result');
btn.disabled = true;
btn.textContent = '';
result.innerHTML = '<div class="loading">Szukam w pamięci kamer...</div>';
try {
const r = await fetch('/ask?q=' + encodeURIComponent(q));
const data = await r.json();
let html = '<div class="answer">' + data.answer.replace(/\\n/g, '<br>') + '</div>';
if (data.sources && data.sources.length > 0) {
html += '<div class="sources"><strong>Źródła:</strong>';
for (const s of data.sources) {
html += `<div class="source"><span class="source-time">${s.time}</span> [${s.camera}]<br>${s.description}</div>`;
}
html += '</div>';
}
result.innerHTML = html;
} catch(e) {
result.innerHTML = '<div class="answer">❌ Błąd: ' + e.message + '</div>';
}
btn.disabled = false;
btn.textContent = 'Zapytaj';
}
loadStats();
setInterval(loadStats, 30000);
</script>
</body>
</html>
"""
@app.get("/", response_class=HTMLResponse)
def home():
return HTML_PAGE
@app.get("/ask")
def ask(q: str = Query(..., description="Pytanie")):
q_emb = ollama_client.embeddings(model='nomic-embed-text', prompt=q)
results = collection.query(query_embeddings=[q_emb['embedding']], n_results=20, include=["documents", "metadatas"])
if not results['documents'][0]:
return {"answer": "Brak danych w pamięci kamer.", "sources": []}
context = "\n".join([f"[{m['datetime']} - {m['camera']}]: {doc}" for doc, m in zip(results['documents'][0], results['metadatas'][0])])
res = ollama_client.chat(
model='mistral',
messages=[
{'role': 'system', 'content': 'Odpowiadasz po polsku na podstawie obserwacji z kamer. Podawaj konkretne czasy. Bądź zwięzły.'},
{'role': 'user', 'content': f"Obserwacje z kamer:\n{context}\n\nPytanie: {q}"}
]
)
return {
"answer": res['message']['content'],
"sources": [{"time": m['datetime'], "camera": m['camera'], "description": doc[:100]} for doc, m in zip(results['documents'][0][:5], results['metadatas'][0][:5])]
}
@app.get("/recent")
def recent(camera: str = None, hours: int = 1):
cutoff = (datetime.now() - timedelta(hours=hours)).timestamp()
where = {"timestamp": {"$gt": cutoff}}
if camera:
where = {"$and": [where, {"camera": camera}]}
results = collection.get(where=where, include=["documents", "metadatas"])
return [{"time": m['datetime'], "camera": m['camera'], "description": doc} for doc, m in zip(results['documents'], results['metadatas'])]
@app.get("/stats")
def stats():
return {"total_frames": collection.count()}
@app.get("/health")
def health():
return {"status": "ok"}

View File

@ -0,0 +1,4 @@
chromadb-client
ollama
fastapi
uvicorn

View File

@ -0,0 +1,7 @@
FROM python:3.11-slim
WORKDIR /app
COPY app/ .
RUN pip install --no-cache-dir -r requirements.txt
CMD ["python", "-u", "camera_memory.py"]

View File

@ -0,0 +1,93 @@
import os
import time
import base64
import requests
import ollama
import chromadb
from datetime import datetime
FRIGATE_URL = os.getenv("FRIGATE_URL", "http://frigate:5000")
OLLAMA_URL = os.getenv("OLLAMA_URL", "http://ollama:11434")
CHROMA_URL = os.getenv("CHROMA_URL", "http://chromadb:8000")
CAMERAS = os.getenv("CAMERAS", "front_door").split(",")
INTERVAL = int(os.getenv("INTERVAL", "1"))
RETENTION_HOURS = int(os.getenv("RETENTION_HOURS", "72"))
ollama_client = ollama.Client(host=OLLAMA_URL)
chroma_host = CHROMA_URL.replace("http://", "").split(":")[0]
chroma_port = int(CHROMA_URL.split(":")[-1])
chroma = chromadb.HttpClient(host=chroma_host, port=chroma_port)
collection = chroma.get_or_create_collection(name="camera_frames", metadata={"hnsw:space": "cosine"})
def get_frame(camera):
try:
r = requests.get(f"{FRIGATE_URL}/api/{camera}/latest.jpg", timeout=5)
if r.status_code == 200:
return r.content
except Exception as e:
print(f"[ERROR] Frame grab {camera}: {e}")
return None
def describe(image_bytes):
try:
b64 = base64.b64encode(image_bytes).decode()
res = ollama_client.chat(
model='moondream',
messages=[{
'role': 'user',
'content': 'Describe briefly: people (gender, clothing, action), vehicles (color, type), animals, packages, unusual activity.',
'images': [b64]
}]
)
return res['message']['content']
except Exception as e:
print(f"[ERROR] Vision: {e}")
return ""
def embed(text):
res = ollama_client.embeddings(model='nomic-embed-text', prompt=text)
return res['embedding']
def store(camera, description, timestamp):
if not description.strip():
return
dt = datetime.fromtimestamp(timestamp)
doc_id = f"{camera}_{int(timestamp)}"
collection.add(
ids=[doc_id],
embeddings=[embed(description)],
documents=[description],
metadatas=[{"camera": camera, "timestamp": timestamp, "datetime": dt.isoformat(), "hour": dt.hour}]
)
print(f"[{dt.strftime('%H:%M:%S')}] {camera}: {description[:80]}...")
def cleanup_old():
cutoff = time.time() - (RETENTION_HOURS * 3600)
try:
collection.delete(where={"timestamp": {"$lt": cutoff}})
print(f"[CLEANUP] Removed entries older than {RETENTION_HOURS}h")
except Exception as e:
print(f"[CLEANUP ERROR] {e}")
def main():
print(f"Camera Memory Service")
print(f" Frigate: {FRIGATE_URL}")
print(f" Ollama: {OLLAMA_URL}")
print(f" Chroma: {CHROMA_URL}")
print(f" Cameras: {CAMERAS}")
print(f" Interval: {INTERVAL}s")
time.sleep(10)
iteration = 0
while True:
for camera in CAMERAS:
frame = get_frame(camera)
if frame:
desc = describe(frame)
store(camera, desc, time.time())
iteration += 1
if iteration % 3600 == 0:
cleanup_old()
time.sleep(INTERVAL)
if __name__ == "__main__":
main()

View File

@ -0,0 +1,3 @@
chromadb-client
ollama
requests

107
crowdsec/README.md Normal file
View File

@ -0,0 +1,107 @@
# CrowdSec - dokumentacja
## Jak działa
CrowdSec analizuje logi i blokuje złośliwe IP przez dwa komponenty:
```
Logi → crowdsec (analiza) → decyzja BAN → traefik-bouncer (egzekucja)
→ powiadomienie Telegram
```
**traefik-bouncer** sprawdza każde żądanie przez Traefika pod CrowdSec API (`crowdsec:8080`). Jeśli IP ma aktywny ban - zwraca 403.
## Telegram - jak działa
Powiadomienia idą przez plugin HTTP (`conf/notifications/http.yaml`), który wysyła POST do Telegram Bot API.
**Przepływ:**
1. CrowdSec wykrywa atak (np. brute-force SSH, skanowanie HTTP)
2. Profil w `conf/profiles.yaml` dopasowuje alert → przypisuje powiadomienie `http_default`
3. Plugin HTTP czeka 30s na grupowanie alertów, potem wysyła POST:
```
POST https://api.telegram.org/bot<TOKEN>/sendMessage
{
"chat_id": 5479795256,
"parse_mode": "HTML",
"text": "🚨 CrowdSec Alert\n🔒 Scenariusz: ...\n🌍 IP: ...\n📊 Liczba zdarzeń: ..."
}
```
**Zmienne środowiskowe** (w `.env`):
```
TELEGRAM_BOT_TOKEN=5580892376:AAHjXRq...
TELEGRAM_CHAT_ID=5479795256
```
Bot token i chat ID skonfigurowane w docker-compose.yaml i przekazywane do kontenera. Format wiadomości edytowalny w `conf/notifications/http.yaml`.
## Monitorowane źródła logów (`conf/acquis.yaml`)
| Źródło | Typ | Ścieżka/kontener |
|--------|-----|-----------------|
| SSH | syslog | `/var/log/auth.log` |
| Traefik | traefik | `/var/log/traefik/access.log` |
| Jellyfin | jellyfin | `/var/log/jellyfin/log_*.log` |
| Grafana | docker | kontener `grafana` |
| Bitwarden | Vaultwarden | kontener `bitwarden` |
## Aktywne kolekcje (scenarios + parsery)
- `crowdsecurity/linux` + `sshd` - SSH brute-force
- `crowdsecurity/traefik` + `nginx` - HTTP ataki przez Traefik
- `crowdsecurity/http-cve` - znane CVE (log4j, Spring4Shell, etc.)
- `crowdsecurity/base-http-scenarios` - skanowanie, traversal, bad UA
- `crowdsecurity/home-assistant` - brute-force HA
- `crowdsecurity/whitelist-good-actors` - SEO boty, CDN
- `Dominic-Wagner/vaultwarden` - BF Bitwarden
- `LePresidente/grafana` + `jellyfin` - BF Grafana/Jellyfin
## Whitelista (`conf/parsers/s02-enrich/my-whitelist.yaml`)
Nigdy nie banowane:
- `127.0.0.1`
- `192.168.1.0/24` (LAN)
- `10.13.13.0/24` (VPN WireGuard)
- `81.201.50.209` (domowy publiczny IP)
- `212.222.3.226` (IP z pracy)
## Profile i decyzje (`conf/profiles.yaml`)
Dwa profile:
- `default_ip_remediation` - ban IP na 4h
- `default_range_remediation` - ban całego /24 na 4h
Oba wysyłają powiadomienie `http_default` (Telegram).
## Przydatne komendy
```bash
# Skrypty w crowdsec/bin/
./crowdsec/bin/alerts-list # lista alertów
./crowdsec/bin/decisions # aktywne bany
./crowdsec/bin/metrics # statystyki parsowania
# Bezpośrednio
docker exec crowdsec cscli alerts list
docker exec crowdsec cscli decisions list
docker exec crowdsec cscli decisions delete --ip 1.2.3.4 # odbanuj IP
docker exec crowdsec cscli decisions add --ip 1.2.3.4 --duration 24h # ręczny ban
# Test powiadomienia Telegram
docker exec crowdsec cscli notifications test http_default
```
## Ręczny ban IP
```bash
docker exec crowdsec cscli decisions add --ip 1.2.3.4 --duration 168h --reason "manual"
```
## Logi
```bash
docker logs crowdsec --tail 100 -f
docker logs traefik-bouncer --tail 50
```

1
crowdsec/bin/alerts-list Executable file
View File

@ -0,0 +1 @@
docker exec crowdsec cscli alerts list

1
crowdsec/bin/decisions Executable file
View File

@ -0,0 +1 @@
docker exec crowdsec cscli decisions list

1
crowdsec/bin/metrics Executable file
View File

@ -0,0 +1 @@
docker exec crowdsec cscli metrics

26
crowdsec/conf/acquis.yaml Normal file
View File

@ -0,0 +1,26 @@
filenames:
- /var/log/auth.log
labels:
type: syslog
---
filenames:
- /var/log/traefik/access.log
labels:
type: traefik
---
filenames:
- /var/log/jellyfin/log_*.log
labels:
type: jellyfin
---
source: docker
container_name:
- grafana
labels:
type: grafana
---
source: docker
container_name:
- bitwarden
labels:
type: Vaultwarden

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/collections/crowdsecurity/base-http-scenarios.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/collections/LePresidente/grafana.yml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/collections/crowdsecurity/home-assistant.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/collections/crowdsecurity/http-cve.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/collections/LePresidente/jellyfin.yml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/collections/crowdsecurity/linux.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/collections/crowdsecurity/nginx.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/collections/crowdsecurity/sshd.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/collections/crowdsecurity/traefik.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/collections/Dominic-Wagner/vaultwarden.yml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/collections/crowdsecurity/whitelist-good-actors.yaml

48
crowdsec/conf/config.yaml Normal file
View File

@ -0,0 +1,48 @@
common:
log_media: stdout
log_level: info
log_dir: /var/log/
config_paths:
config_dir: /etc/crowdsec/
data_dir: /var/lib/crowdsec/data/
simulation_path: /etc/crowdsec/simulation.yaml
hub_dir: /etc/crowdsec/hub/
index_path: /etc/crowdsec/hub/.index.json
notification_dir: /etc/crowdsec/notifications/
plugin_dir: /usr/local/lib/crowdsec/plugins/
crowdsec_service:
acquisition_path: /etc/crowdsec/acquis.yaml
acquisition_dir: /etc/crowdsec/acquis.d
parser_routines: 1
plugin_config:
user: nobody
group: nobody
cscli:
output: human
db_config:
log_level: info
type: sqlite
db_path: /var/lib/crowdsec/data/crowdsec.db
flush:
max_items: 5000
max_age: 7d
use_wal: false
api:
client:
insecure_skip_verify: false
credentials_path: /etc/crowdsec/local_api_credentials.yaml
server:
log_level: info
listen_uri: 0.0.0.0:8080
profiles_path: /etc/crowdsec/profiles.yaml
trusted_ips: # IP ranges, or IPs which can have admin API access
- 127.0.0.1
- ::1
online_client: # Central API credentials (to push signals and receive bad IPs)
credentials_path: /etc/crowdsec//online_api_credentials.yaml
enable: true
prometheus:
enabled: true
level: full
listen_addr: 0.0.0.0
listen_port: 6060

View File

@ -0,0 +1,4 @@
share_manual_decisions: false
share_custom: true
share_tainted: true
share_context: false

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/contexts/crowdsecurity/bf_base.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/contexts/crowdsecurity/http_base.yaml

46
crowdsec/conf/dev.yaml Normal file
View File

@ -0,0 +1,46 @@
common:
log_media: stdout
log_level: info
config_paths:
config_dir: "$CONFIG_DIR"
data_dir: "$DATA_DIR"
notification_dir: "$CONFIG_DIR/notifications/"
plugin_dir: "$PLUGINS_DIR"
#simulation_path: /etc/crowdsec/config/simulation.yaml
#hub_dir: /etc/crowdsec/hub/
#index_path: ./config/hub/.index.json
crowdsec_service:
acquisition_path: "$CONFIG_DIR/acquis.yaml"
parser_routines: 1
plugin_config:
user: "$USER" # plugin process would be ran on behalf of this user
group: "$USER" # plugin process would be ran on behalf of this group
cscli:
output: human
db_config:
type: sqlite
db_path: "$DATA_DIR/crowdsec.db"
user: root
password: crowdsec
db_name: crowdsec
host: "172.17.0.2"
port: 3306
flush:
#max_items: 10000
#max_age: 168h
api:
client:
credentials_path: "$CONFIG_DIR/local_api_credentials.yaml"
server:
console_path: "$CONFIG_DIR/console.yaml"
#insecure_skip_verify: true
listen_uri: 127.0.0.1:8081
profiles_path: "$CONFIG_DIR/profiles.yaml"
tls:
#cert_file: ./cert.pem
#key_file: ./key.pem
online_client: # Central API
credentials_path: "$CONFIG_DIR/online_api_credentials.yaml"
prometheus:
enabled: true
level: full

View File

@ -0,0 +1,55 @@
type: email # Don't change
name: email_default # Must match the registered plugin in the profile
# One of "trace", "debug", "info", "warn", "error", "off"
log_level: info
# group_wait: # Time to wait collecting alerts before relaying a message to this plugin, eg "30s"
# group_threshold: # Amount of alerts that triggers a message before <group_wait> has expired, eg "10"
# max_retry: # Number of attempts to relay messages to plugins in case of error
timeout: 20s # Time to wait for response from the plugin before considering the attempt a failure, eg "10s"
#-------------------------
# plugin-specific options
# The following template receives a list of models.Alert objects
# The output goes in the email message body
format: |
<html><body>
{{range . -}}
{{$alert := . -}}
{{range .Decisions -}}
<p><a href="https://www.whois.com/whois/{{.Value}}">{{.Value}}</a> will get <b>{{.Type}}</b> for next <b>{{.Duration}}</b> for triggering <b>{{.Scenario}}</b> on machine <b>{{$alert.MachineID}}</b>.</p> <p><a href="https://app.crowdsec.net/cti/{{.Value}}">CrowdSec CTI</a></p>
{{end -}}
{{end -}}
</body></html>
smtp_host: # example: smtp.gmail.com
smtp_username: # Replace with your actual username
smtp_password: # Replace with your actual password
smtp_port: # Common values are any of [25, 465, 587, 2525]
auth_type: # Valid choices are "none", "crammd5", "login", "plain"
sender_name: "CrowdSec"
sender_email: # example: foo@gmail.com
email_subject: "CrowdSec Notification"
receiver_emails:
# - email1@gmail.com
# - email2@gmail.com
# One of "ssltls", "starttls", "none"
encryption_type: "ssltls"
# If you need to set the HELO hostname:
# helo_host: "localhost"
# If the email server is hitting the default timeouts (10 seconds), you can increase them here
#
# connect_timeout: 10s
# send_timeout: 10s
---
# type: email
# name: email_second_notification
# ...

View File

@ -0,0 +1,23 @@
# Don't change this
type: file
name: file_default # this must match with the registered plugin in the profile
log_level: info # Options include: trace, debug, info, warn, error, off
# This template render all events as ndjson
format: |
{{range . -}}
{ "time": "{{.StopAt}}", "program": "crowdsec", "alert": {{. | toJson }} }
{{ end -}}
# group_wait: # duration to wait collecting alerts before sending to this plugin, eg "30s"
# group_threshold: # if alerts exceed this, then the plugin will be sent the message. eg "10"
#Use full path EG /tmp/crowdsec_alerts.json or %TEMP%\crowdsec_alerts.json
log_path: "/tmp/crowdsec_alerts.json"
rotate:
enabled: true # Change to false if you want to handle log rotate on system basis
max_size: 500 # in MB
max_files: 5
max_age: 5
compress: true

View File

@ -0,0 +1,16 @@
type: http
name: http_default
log_level: info
group_wait: 1m
group_threshold: 5
max_retry: 3
timeout: 10s
format: |
{"chat_id": 5479795256, "parse_mode": "HTML", "disable_web_page_preview": true, "text": "🚨 <b>CrowdSec — {{len .}} ban(y)</b>\n\n{{range .}}🌍 <code>{{.Source.IP}}</code> [<b>{{.Source.Cn}}</b>] {{.Source.AsName}}\n🔒 <code>{{.Scenario}}</code>\n📊 zdarzeń: {{.EventsCount}} ⏱ {{.StartAt}}\n🔗 <a href=\"https://app.crowdsec.net/cti/{{.Source.IP}}\">CTI</a> · <a href=\"https://www.whois.com/whois/{{.Source.IP}}\">whois</a>\n\n{{end}}"}
url: "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage"
method: POST
headers:
Content-Type: application/json

View File

@ -0,0 +1,21 @@
type: sentinel # Don't change
name: sentinel_default # Must match the registered plugin in the profile
# One of "trace", "debug", "info", "warn", "error", "off"
log_level: info
# group_wait: # Time to wait collecting alerts before relaying a message to this plugin, eg "30s"
# group_threshold: # Amount of alerts that triggers a message before <group_wait> has expired, eg "10"
# max_retry: # Number of attempts to relay messages to plugins in case of error
# timeout: # Time to wait for response from the plugin before considering the attempt a failure, eg "10s"
#-------------------------
# plugin-specific options
# The following template receives a list of models.Alert objects
# The output goes in the http request body
format: |
{{.|toJson}}
customer_id: XXX-XXX
shared_key: XXXXXXX
log_type: crowdsec

View File

@ -0,0 +1,42 @@
type: slack # Don't change
name: slack_default # Must match the registered plugin in the profile
# One of "trace", "debug", "info", "warn", "error", "off"
log_level: info
# group_wait: # Time to wait collecting alerts before relaying a message to this plugin, eg "30s"
# group_threshold: # Amount of alerts that triggers a message before <group_wait> has expired, eg "10"
# max_retry: # Number of attempts to relay messages to plugins in case of error
# timeout: # Time to wait for response from the plugin before considering the attempt a failure, eg "10s"
#-------------------------
# plugin-specific options
# The following template receives a list of models.Alert objects
# The output goes in the slack message
format: |
{{range . -}}
{{$alert := . -}}
{{range .Decisions -}}
{{if $alert.Source.Cn -}}
:flag-{{$alert.Source.Cn}}: <https://www.whois.com/whois/{{.Value}}|{{.Value}}> will get {{.Type}} for next {{.Duration}} for triggering {{.Scenario}} on machine '{{$alert.MachineID}}'. <https://app.crowdsec.net/cti/{{.Value}}|CrowdSec CTI>{{end}}
{{if not $alert.Source.Cn -}}
:pirate_flag: <https://www.whois.com/whois/{{.Value}}|{{.Value}}> will get {{.Type}} for next {{.Duration}} for triggering {{.Scenario}} on machine '{{$alert.MachineID}}'. <https://app.crowdsec.net/cti/{{.Value}}|CrowdSec CTI>{{end}}
{{end -}}
{{end -}}
webhook: <WEBHOOK_URL>
# API request data as defined by the Slack webhook API.
#channel: <CHANNEL_NAME>
#username: <USERNAME>
#icon_emoji: <ICON_EMOJI>
#icon_url: <ICON_URL>
---
# type: slack
# name: slack_second_notification
# ...

View File

@ -0,0 +1,28 @@
type: splunk # Don't change
name: splunk_default # Must match the registered plugin in the profile
# One of "trace", "debug", "info", "warn", "error", "off"
log_level: info
# group_wait: # Time to wait collecting alerts before relaying a message to this plugin, eg "30s"
# group_threshold: # Amount of alerts that triggers a message before <group_wait> has expired, eg "10"
# max_retry: # Number of attempts to relay messages to plugins in case of error
# timeout: # Time to wait for response from the plugin before considering the attempt a failure, eg "10s"
#-------------------------
# plugin-specific options
# The following template receives a list of models.Alert objects
# The output goes in the splunk notification
format: |
{{.|toJson}}
url: <SPLUNK_HTTP_URL>
token: <SPLUNK_TOKEN>
---
# type: splunk
# name: splunk_second_notification
# ...

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/parsers/s00-raw/crowdsecurity/cri-logs.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/parsers/s00-raw/crowdsecurity/docker-logs.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/parsers/s00-raw/crowdsecurity/syslog-logs.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/parsers/s01-parse/LePresidente/grafana-logs.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/parsers/s01-parse/crowdsecurity/home-assistant-logs.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/parsers/s01-parse/LePresidente/jellyfin-logs.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/parsers/s01-parse/crowdsecurity/nginx-logs.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/parsers/s01-parse/crowdsecurity/sshd-logs.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/parsers/s01-parse/crowdsecurity/sshd-success-logs.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/parsers/s01-parse/crowdsecurity/traefik-logs.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/parsers/s01-parse/Dominic-Wagner/vaultwarden-logs.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/parsers/s02-enrich/crowdsecurity/dateparse-enrich.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/parsers/s02-enrich/crowdsecurity/geoip-enrich.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/parsers/s02-enrich/crowdsecurity/http-logs.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/parsers/s02-enrich/crowdsecurity/jellyfin-whitelist.yaml

View File

@ -0,0 +1,11 @@
name: crowdsecurity/whitelists
description: "Whitelist my local network and static IP"
whitelist:
reason: "local network and my static public IP"
ip:
- "127.0.0.1"
- "81.201.50.209" # domowy publiczny adres
- "212.222.3.226" # adres z pracy
cidr:
- "192.168.1.0/24"
- "10.13.13.0/24"

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/parsers/s02-enrich/crowdsecurity/public-dns-allowlist.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/postoverflows/s00-enrich/crowdsecurity/rdns.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/postoverflows/s01-whitelist/crowdsecurity/cdn-whitelist.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/postoverflows/s01-whitelist/crowdsecurity/seo-bots-whitelist.yaml

View File

@ -0,0 +1,21 @@
name: default_ip_remediation
#debug: true
filters:
- Alert.Remediation == true && Alert.GetScope() == "Ip"
decisions:
- type: ban
duration: 4h
#duration_expr: Sprintf('%dh', (GetDecisionsCount(Alert.GetValue()) + 1) * 4)
notifications:
- http_default
on_success: break
---
name: default_range_remediation
filters:
- Alert.Remediation == true && Alert.GetScope() == "Range"
decisions:
- type: ban
duration: 4h
notifications:
- http_default
on_success: break

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/scenarios/crowdsecurity/CVE-2017-9841.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/scenarios/crowdsecurity/CVE-2019-18935.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/scenarios/crowdsecurity/CVE-2022-26134.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/scenarios/crowdsecurity/CVE-2022-35914.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/scenarios/crowdsecurity/CVE-2022-37042.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/scenarios/crowdsecurity/CVE-2022-40684.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/scenarios/crowdsecurity/CVE-2022-41082.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/scenarios/crowdsecurity/CVE-2022-41697.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/scenarios/crowdsecurity/CVE-2022-42889.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/scenarios/crowdsecurity/CVE-2022-44877.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/scenarios/crowdsecurity/CVE-2022-46169.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/scenarios/crowdsecurity/CVE-2023-22515.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/scenarios/crowdsecurity/CVE-2023-22518.yaml

View File

@ -0,0 +1 @@
/etc/crowdsec/hub/scenarios/crowdsecurity/CVE-2023-49103.yaml

Some files were not shown because too many files have changed in this diff Show More