103 lines
3.0 KiB
YAML
103 lines
3.0 KiB
YAML
# =============================================================
|
|
# Parental Controls Package
|
|
# Requires OPNsense firewall alias "parental_blocked" + rule
|
|
# See README.md for full setup instructions
|
|
# =============================================================
|
|
|
|
input_text:
|
|
parental_control_config:
|
|
name: Parental Controls Configuration
|
|
max: 10000
|
|
initial: '{"users":[]}'
|
|
icon: mdi:shield-account
|
|
|
|
# ------------------------------------------------------------------
|
|
# OPNsense DHCP lease sensor
|
|
# Polls every 60s — provides device discovery + MAC→IP for dashboard
|
|
# Requires opnsense_leases_url and opnsense_basic_auth in secrets.yaml
|
|
# ------------------------------------------------------------------
|
|
rest:
|
|
- resource: !secret opnsense_leases_url
|
|
scan_interval: 60
|
|
headers:
|
|
Authorization: !secret opnsense_basic_auth
|
|
verify_ssl: false
|
|
sensor:
|
|
- name: "OPNsense DHCP Leases"
|
|
unique_id: parental_controls_dhcp_leases
|
|
value_template: "{{ value_json.total | default(value_json.rowCount) | default(0) }}"
|
|
icon: mdi:lan
|
|
json_attributes:
|
|
- rows
|
|
|
|
# ------------------------------------------------------------------
|
|
# OPNsense firewall API calls
|
|
# ------------------------------------------------------------------
|
|
rest_command:
|
|
|
|
parental_block_ip:
|
|
url: !secret opnsense_alias_add_url
|
|
method: post
|
|
headers:
|
|
Authorization: !secret opnsense_basic_auth
|
|
payload: "address={{ address }}"
|
|
content_type: "application/x-www-form-urlencoded"
|
|
verify_ssl: false
|
|
|
|
parental_unblock_ip:
|
|
url: !secret opnsense_alias_del_url
|
|
method: post
|
|
headers:
|
|
Authorization: !secret opnsense_basic_auth
|
|
payload: "address={{ address }}"
|
|
content_type: "application/x-www-form-urlencoded"
|
|
verify_ssl: false
|
|
|
|
parental_apply_firewall:
|
|
url: !secret opnsense_apply_url
|
|
method: post
|
|
headers:
|
|
Authorization: !secret opnsense_basic_auth
|
|
payload: "{}"
|
|
content_type: "application/json"
|
|
verify_ssl: false
|
|
|
|
# ------------------------------------------------------------------
|
|
# Scripts
|
|
# ------------------------------------------------------------------
|
|
script:
|
|
|
|
parental_block_ip:
|
|
alias: "Parental Controls — Block IP"
|
|
icon: mdi:block-helper
|
|
fields:
|
|
ip:
|
|
description: "IP address to block"
|
|
required: true
|
|
selector:
|
|
text:
|
|
sequence:
|
|
- service: rest_command.parental_block_ip
|
|
data:
|
|
address: "{{ ip }}"
|
|
|
|
parental_unblock_ip:
|
|
alias: "Parental Controls — Unblock IP"
|
|
icon: mdi:check-circle-outline
|
|
fields:
|
|
ip:
|
|
description: "IP address to unblock"
|
|
required: true
|
|
selector:
|
|
text:
|
|
sequence:
|
|
- service: rest_command.parental_unblock_ip
|
|
data:
|
|
address: "{{ ip }}"
|
|
|
|
parental_apply_firewall:
|
|
alias: "Parental Controls — Apply Firewall"
|
|
icon: mdi:shield-refresh
|
|
sequence:
|
|
- service: rest_command.parental_apply_firewall
|