.gitignore, documentation, other improvements
This commit is contained in:
parent
f68c0c978e
commit
ac94bb4759
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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`
|
||||
|
|
@ -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"]
|
||||
|
|
@ -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"
|
||||
```
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -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}
|
||||
|
|
@ -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
|
|
@ -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.
|
||||
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
||||
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
||||
|
|
@ -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) ---"
|
||||
|
|
@ -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
|
||||
```
|
||||
|
|
@ -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;"]
|
||||
|
|
@ -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
|
||||
```
|
||||
|
|
@ -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>
|
||||
|
|
@ -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';
|
||||
}
|
||||
}
|
||||
|
|
@ -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
|
||||
```
|
||||
|
|
@ -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"]
|
||||
|
|
@ -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"}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
chromadb-client
|
||||
ollama
|
||||
fastapi
|
||||
uvicorn
|
||||
|
|
@ -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"]
|
||||
|
|
@ -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()
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
chromadb-client
|
||||
ollama
|
||||
requests
|
||||
|
|
@ -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
|
||||
```
|
||||
|
|
@ -0,0 +1 @@
|
|||
docker exec crowdsec cscli alerts list
|
||||
|
|
@ -0,0 +1 @@
|
|||
docker exec crowdsec cscli decisions list
|
||||
|
|
@ -0,0 +1 @@
|
|||
docker exec crowdsec cscli metrics
|
||||
|
|
@ -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
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/collections/crowdsecurity/base-http-scenarios.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/collections/LePresidente/grafana.yml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/collections/crowdsecurity/home-assistant.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/collections/crowdsecurity/http-cve.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/collections/LePresidente/jellyfin.yml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/collections/crowdsecurity/linux.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/collections/crowdsecurity/nginx.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/collections/crowdsecurity/sshd.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/collections/crowdsecurity/traefik.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/collections/Dominic-Wagner/vaultwarden.yml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/collections/crowdsecurity/whitelist-good-actors.yaml
|
||||
|
|
@ -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
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
share_manual_decisions: false
|
||||
share_custom: true
|
||||
share_tainted: true
|
||||
share_context: false
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/contexts/crowdsecurity/bf_base.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/contexts/crowdsecurity/http_base.yaml
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
# ...
|
||||
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
# ...
|
||||
|
||||
|
|
@ -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
|
||||
# ...
|
||||
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/parsers/s00-raw/crowdsecurity/cri-logs.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/parsers/s00-raw/crowdsecurity/docker-logs.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/parsers/s00-raw/crowdsecurity/syslog-logs.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/parsers/s01-parse/LePresidente/grafana-logs.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/parsers/s01-parse/crowdsecurity/home-assistant-logs.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/parsers/s01-parse/LePresidente/jellyfin-logs.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/parsers/s01-parse/crowdsecurity/nginx-logs.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/parsers/s01-parse/crowdsecurity/sshd-logs.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/parsers/s01-parse/crowdsecurity/sshd-success-logs.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/parsers/s01-parse/crowdsecurity/traefik-logs.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/parsers/s01-parse/Dominic-Wagner/vaultwarden-logs.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/parsers/s02-enrich/crowdsecurity/dateparse-enrich.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/parsers/s02-enrich/crowdsecurity/geoip-enrich.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/parsers/s02-enrich/crowdsecurity/http-logs.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/parsers/s02-enrich/crowdsecurity/jellyfin-whitelist.yaml
|
||||
|
|
@ -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"
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/parsers/s02-enrich/crowdsecurity/public-dns-allowlist.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/postoverflows/s00-enrich/crowdsecurity/rdns.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/postoverflows/s01-whitelist/crowdsecurity/cdn-whitelist.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/postoverflows/s01-whitelist/crowdsecurity/seo-bots-whitelist.yaml
|
||||
|
|
@ -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
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/scenarios/crowdsecurity/CVE-2017-9841.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/scenarios/crowdsecurity/CVE-2019-18935.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/scenarios/crowdsecurity/CVE-2022-26134.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/scenarios/crowdsecurity/CVE-2022-35914.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/scenarios/crowdsecurity/CVE-2022-37042.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/scenarios/crowdsecurity/CVE-2022-40684.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/scenarios/crowdsecurity/CVE-2022-41082.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/scenarios/crowdsecurity/CVE-2022-41697.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/scenarios/crowdsecurity/CVE-2022-42889.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/scenarios/crowdsecurity/CVE-2022-44877.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/scenarios/crowdsecurity/CVE-2022-46169.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/scenarios/crowdsecurity/CVE-2023-22515.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
/etc/crowdsec/hub/scenarios/crowdsecurity/CVE-2023-22518.yaml
|
||||
|
|
@ -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
Loading…
Reference in New Issue