##  Website Filtreleme Nasıl Çalışıyor?

**Not:** Kısıtlı kullanıcıların network ayarlarını değiştirebilme yetkisi olmamalı. (*netdev* grubunda olmamalı.)
**Not-2:** TODO: Tarayıcı üzerinden direkt 1.1.1.1 gibi DoH adresi verilmemesi için belirli yaygın dns servisleri iptables ile direkt ip yasaklamalarına tabi tutulabilir.

### Kullanım
1. eta-kisit servisi kullanıcı login olduğunda açılır
2. Servis kullanıcı adına uygun profili devreye sokar.
3. Otomatik alınan DNS sunucusu(MEB'in sunucusu) baz DNS sunucusu olmak üzere kaydedilir.(`ip route | grep default | cut -d " " -f 3` ile elde edilebilir)
4. /etc/resolv.conf içeriği yerel adrese değiştirilir: `nameserver 127.0.0.1`
5. /etc/resolv.conf'un sadece root tarafından değiştirilmesi garantisi için: `sudo chmod o+t /etc/resolv.conf` veya `sudo chattr +i /etc/resolv.conf`, tekrar değiştirilebilir yapmak için `-i`
6.  smartdns servisi whitelist/blacklist'e göre eta-kisit tarafından config edilir(/etc/smartdns/smartdns.conf) ve smartdns servisi çalıştırılır.
7. Bilindik tarayıcılar için policyleri ayarlanır (DoH engelleme ve URL filtreleme için)


### smartdns-rs:
Allow List örnek içeriği, sadece google.com ve yandex.com'a izin ver.
```
# "Allow Only" with subdomains
address /*/# 
address /allowed.com/-
address /*.allowed.com/-
```
Deny List örnek içeriği, google.com ve yandex.com'u yasakla.
```
# "Deny Only" with subdomains
address /denied.com/#
address /*.denied.com/#
```
smartdns.conf dosyasının tam içeriği (*allow veya deny sadece biri olmalı*):

```
# Listen on local port 53
bind [::]:53
bind-tcp [::]:53  

tcp-idle-time 5

# Cache
cache-size 32768

# DNS servers, 1.1.1.3 is basically: "1.1.1.1 + No Malware + No Adult Content"
server 1.1.1.3
server-tls 1.1.1.3

# Configure DoH3
server-h3 1.1.1.1

# Configure DoQ
server-quic unfiltered.adguard-dns.com


# == DOMAIN FILTERING ==

# "Deny Only" with subdomains
address /denied.com/#
address /*.denied.com/#

# "Allow Only" with subdomains
address /*/# 
address /allowed.com/-
address /*.allowed.com/-

```

### Tarayıcı örnek poliçeleri
Chrome tabanlılar:
- Chrome: `/etc/opt/chrome/policies/managed/policies.json`
- Brave: `/etc/brave/policies/managed/policies.json`
- Chromium `/etc/chromium/managed/policies.json`
policies.json içeriği:
```
{
	"URLBlocklist": ["*"],
	"URLAllowlist": ["youtube.com","pardus.org.tr"], # Her şeyi blokla sadece google ve yandex açılsın
	"DnsOverHttpsMode": "off"
}

```
Firefox için `/etc/firefox/policies/policies.json` içeriği:
```
{
  "policies": {
    "WebsiteFilter": {
      "Block": ["<all_urls>"],
      "Exceptions": ["*://*.youtube.com/*", "*://*.pardus.org.tr/*"]
    },
    "DNSOverHTTPS": {
    	"Enabled": false,
    	"Locked": true
    }
  }
}
```

Tüm bu ayarlamaları eta-kisit kendi yapacaktır. 

Tek gereken `/var/lib/eta/eta-kisit/profiles.json` dosyasındaki profilleri ayarlamaktan ibaret.