def activate(self):
url = self.dns_input.get()
adapter = self.get_active_adapter()
self.status_label.configure(text="Настройка...", text_color="yellow")
try:
# 1. Получаем IP из хоста
host = url.replace("https://", "").split("/")[0]
ip = socket.gethostbyname(host)
# 2. Формируем правильный DoH шаблон
doh_url = url if "://" in url else f"https://{url}/dns-query"
# 3. Сначала регистрируем этот сервер в системном списке DoH (важный фикс!)
# Это решит ошибку с красным текстом
reg_doh = f'powershell "Add-DnsClientDohServerAddress -ServerAddress {ip} -DohTemplate \'{doh_url}\' -AllowFallbackToUdp $false -ErrorAction SilentlyContinue"'
subprocess.run(reg_doh, shell=True)
# 4. Теперь назначаем этот IP адаптеру
set_dns = f'powershell Set-DnsClientServerAddress -InterfaceAlias \'{adapter}\' -ServerAddresses {ip}'
subprocess.run(set_dns, shell=True)
# 5. И только теперь форсим шифрование
force_doh = f'powershell Set-DnsClient -InterfaceAlias \'{adapter}\' -UseDnsOverHttps Only'
subprocess.run(force_doh, shell=True)
subprocess.run('ipconfig /flushdns', shell=True)
self.status_label.configure(text="Статус: АКТИВНО", text_color="green")
self.save_config("Активно")
except Exception as e:
self.status_label.configure(text=f"Ошибка: {str(e)}", text_color="red")