Jump to content

Recommended Posts

Posted
В 09.07.2023 в 22:47, DennoN сказал:

Reeker вообще в главном скрипте add-bird4_routes.sh можно было проверить, что в переменной URLS только коммунити лист, а не основной + коммунтити лист. Должно было помочь.

у меня некоторые сайты открываются через впн, есть другой выход? или все сайты записывать нужно в isp лист чтобы не открывались через впн?

Posted

Всем привет! 
Спасибо автору за отличное решение!
Вчера Стал счастливым  обладателем KN-1811, обновил до 4.04 установил по инструкции на внутреннюю память ультры, вариант BGP, 1vpn wireguar,  поставил графический интерфейс. Все работает, но:

– Нужно добавить adobe.com что бы заходил через vpn
– Megamarket.ru чтобы шел через провайдера. 

В графическом интерфейсе добавил:

adobe.com в /opt/root/Bird4Static/lists/user-vpn.list

Megamarket.ru в /opt/root/Bird4Static/lists/user-isp.list

перезапускал сервис и через графический интерфейс и командами  S70bird stop и S70bird start но ничего не помнялось…

Подскажите, может я некорректно установил bird4? Или помогите как исправить?  

 

Posted
1 час назад, Игорь Жук сказал:

Всем привет! 
Спасибо автору за отличное решение!
Вчера Стал счастливым  обладателем KN-1811, обновил до 4.04 установил по инструкции на внутреннюю память ультры, вариант BGP, 1vpn wireguar,  поставил графический интерфейс. Все работает, но:

– Нужно добавить adobe.com что бы заходил через vpn
– Megamarket.ru чтобы шел через провайдера. 

В графическом интерфейсе добавил:

adobe.com в /opt/root/Bird4Static/lists/user-vpn.list

Megamarket.ru в /opt/root/Bird4Static/lists/user-isp.list

перезапускал сервис и через графический интерфейс и командами  S70bird stop и S70bird start но ничего не помнялось…

Подскажите, может я некорректно установил bird4? Или помогите как исправить?  

 

А такой пробовали ./Bird4Static/scripts/add-bird4_routes.sh ?

  • 3 weeks later...
Posted
В 27.08.2023 в 19:14, Игорь Жук сказал:

перезапускал сервис и через графический интерфейс 

Не помню указал ли, для того чтобы скрипт отрабатывал через вызов со страницы UI нужно дать на него права 777, иначе у пользователя под которым крутится php не будет прав на исполнение и обновление не произойдёт

и да, обновление всегда проходит через запуск ./Bird4Static/scripts/add-bird4_routes.sh

Posted (edited)
В 27.08.2023 в 17:14, Игорь Жук сказал:

Всем привет! 
Спасибо автору за отличное решение!
Вчера Стал счастливым  обладателем KN-1811, обновил до 4.04 установил по инструкции на внутреннюю память ультры, вариант BGP, 1vpn wireguar,  поставил графический интерфейс. Все работает, но:

– Нужно добавить adobe.com что бы заходил через vpn
– Megamarket.ru чтобы шел через провайдера. 

В графическом интерфейсе добавил:

adobe.com в /opt/root/Bird4Static/lists/user-vpn.list

Megamarket.ru в /opt/root/Bird4Static/lists/user-isp.list

перезапускал сервис и через графический интерфейс и командами  S70bird stop и S70bird start но ничего не помнялось…

Подскажите, может я некорректно установил bird4? Или помогите как исправить?  

 

У меня тоже есть проблемка, после добавления хостов в user-isp.list - сайт перестает вовсе открываться.
Заметил это как раз на примере Megamarket.
По умолчанию в данном файле находится keenetic.com, он тоже изначально не открывается.

Использовал варианты скрипта: список/BGP

P.S. Пока писал пост, и этот форум перестал работать :D
Пришлось закомментировать строчку с keenetic.com

Edited by Никита Герасимов
Posted (edited)

Здравствуйте. По какой причине может приостанавливать работу Bird4? Наблюдается после простоя сети ночью. Утром после рестарта скрипта работает нормально.

Edited by eda100
дополнение
Posted (edited)
В 20.10.2022 в 00:11, nnm сказал:

для bird4static добавил управление в ext-ui

после установки ext-ui добавить файл

/opt/share/www/ext-ui/addons/editlist.php 

со следующим содержимым:

  Показать содержимое

 

<?php

// configuration
$url = 'http://ip.of.your.router:88/ext-ui/addons/editlist.php';
$uservpn = '/opt/root/Bird4Static/lists/user-vpn.list';
$uservpn1 = '/opt/root/Bird4Static/lists/user-vpn1.list';
$uservpn2 = '/opt/root/Bird4Static/lists/user-vpn2.list';
$userisp = '/opt/root/Bird4Static/lists/user-isp.list';

// check if form has been submitted
if (isset($_POST['vpn-text']))
{
    // save the text contents
    file_put_contents($uservpn, $_POST['vpn-text']);

    // redirect to form again
    header(sprintf('Location: %s', $url));
    printf('<a href="%s">Moved</a>.', htmlspecialchars($url));
    exit();
}

if (isset($_POST['vpn-text1']))
{
    // save the text contents
    file_put_contents($uservpn1, $_POST['vpn-text1']);

    // redirect to form again
    header(sprintf('Location: %s', $url));
    printf('<a href="%s">Moved</a>.', htmlspecialchars($url));
    exit();
}

if (isset($_POST['vpn-text2']))
{
    // save the text contents
    file_put_contents($uservpn2, $_POST['vpn-text2']);

    // redirect to form again
    header(sprintf('Location: %s', $url));
    printf('<a href="%s">Moved</a>.', htmlspecialchars($url));
    exit();
}


if (isset($_POST['isp-text']))
{
    // save the text contents
    file_put_contents($userisp, $_POST['isp-text']);

    // redirect to form again
    header(sprintf('Location: %s', $url));
    printf('<a href="%s">Moved</a>.', htmlspecialchars($url));
    exit();
}


// read the textfile
$text = file_get_contents($uservpn);
$text1 = file_get_contents($uservpn1);
$text2 = file_get_contents($uservpn2);
$textisp = file_get_contents($userisp);

?>

<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- HTML form0 -->
<form id="selector" action="" method="post">
<input type="button" id="vpn" name="vpn" onclick="document.getElementById('uservpn').style.display='block'; document.getElementById('uservpn1').style.display='none'; document.getElementById('uservpn2').style.display='none'; document.getElementById('userisp').style.display='none'; return false;" value="user-vpn.list"/>
<input type="button" id="vpn1" name="vpn1" onclick="document.getElementById('uservpn1').style.display='block'; document.getElementById('uservpn').style.display='none'; document.getElementById('uservpn2').style.display='none'; document.getElementById('userisp').style.display='none'; return false;" value="user-vpn1.list"/>
<input type="button" id="vpn2" name="vpn2" onclick="document.getElementById('uservpn2').style.display='block'; document.getElementById('uservpn').style.display='none'; document.getElementById('uservpn1').style.display='none'; document.getElementById('userisp').style.display='none'; return false;" value="user-vpn2.list"/>
<input type="button" id="second" name="second" onclick="document.getElementById('userisp').style.display='block'; document.getElementById('uservpn').style.display='none'; document.getElementById('uservpn1').style.display='none'; document.getElementById('uservpn2').style.display='none'; return false;" value="user-isp.list"/>
</form>

<!-- HTML form1 -->
<div id="uservpn" style="display:none;">
<form id="vpn" action="" method="post" onsubmit="document.getElementById('uservpn').style.display='none'; return true;">
<legend>VPN list</legend>
<textarea name="vpn-text" style="width:100%; height:30%;"><?php echo htmlspecialchars($text); ?></textarea>
<input type="submit" value="Save&close"/>
<input type="reset" value="Reset changes"/>
</form>
</div>
<!-- HTML form1 -->
<div id="uservpn1" style="display:none;">
<form id="vpn1" action="" method="post" onsubmit="document.getElementById('uservpn1').style.display='none'; return true;">
<legend>VPN1 list</legend>
<textarea name="vpn-text1" style="width:100%; height:30%;"><?php echo htmlspecialchars($text1); ?></textarea>
<input type="submit" value="Save&close"/>
<input type="reset" value="Reset changes"/>
</form>
</div>

<div id="uservpn2" style="display:none;">
<form id="vpn2" action="" method="post" onsubmit="document.getElementById('uservpn2').style.display='none'; return true;">
<legend>VPN2 list</legend>
<textarea name="vpn-text2" style="width:100%; height:30%;"><?php echo htmlspecialchars($text2); ?></textarea>
<input type="submit" value="Save&close"/>
<input type="reset" value="Reset changes"/>
</form>
</div>

<div id="userisp" style="display:none;">
<form id="isp" action="" method="post" onsubmit="document.getElementById('userisp').style.display='none'; return true;">
<legend>ISP list</legend>
<textarea name="isp-text" style="width:100%; height:30%;"><?php echo htmlspecialchars($textisp); ?></textarea>
<input type="submit" value="Save&close"/>
<input type="reset" value="Reset changes"/>
</form>
</div>

<form action="runbird4static.php">
    <input type="submit" value="Restart service">
</form>

 

 

и этот, для кнопки перезапуска сервиса

/opt/share/www/ext-ui/addons/runbird4static.php

* для работы кнопки перезапуска сервиса нужно выдать права 777 на файл /opt/root/Bird4Static/scripts/add-bird4_routes.sh

  Показать содержимое

 

<?php
shell_exec("/opt/root/Bird4Static/scripts/add-bird4_routes.sh");
header('Location: http://192.168.33.1:88/ext-ui/addons/editlist.php');
?>

файл /opt/share/www/ext-ui/index.html отредактировать, добавив после строки

<meta charset="utf-8" />

свою строку обеспечивающую адаптивное отображение на мобильных устройствах:

<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"/>

 

а перед этой строкой:

<a href="addons/info/index.php" target="myframe" title="System Health and Information"><img src="addons/img/btn/linfo.png"></a>

вставить свою строку с дополнительной кнопкой:

<a href="addons/editlist.php" target="myframe" title="Edit vpn list"><img src="addons/img/btn/vpn.png"></a>

ну или в любое удобное место в том же списке.

кроме этого нужно положить какую-нибудь иконку размером 48х48 по адресу /opt/share/www/ext-ui/addons/img/btn/vpn.png например такую: vpn_PNG48.png.297e126b340ab3cc1678f532d054a7ad.png

на выходе получается такая страница:

image.png.e29449e6c39573813a1879dc13369a76.png

нажатие на кнопку в верхнем ряду открывает соответствующий лист

нажатие на кнопку Save&close сохраняет лист и скрывает его с глаз долой.

Кнопка Restart service перезапускает сервис bird4static

image.png.363536ad315eba3cb6d9c6bed7426370.png

 

p.s. я ненастоящий сварщик, я маску на стройке нашёл, так что замечания или улучшения горячо приветствуются. 

 

Не подскажите в чём может быть проблема, всё сделал по инструкции, файлы открываются для редактирования, но сохраняет с символом ^M в конце каждой строки

znsf4MRWbl.png

Edited by 2028426
Posted (edited)
23 часа назад, 2028426 сказал:

Не подскажите в чём может быть проблема, всё сделал по инструкции, файлы открываются для редактирования, но сохраняет с символом ^M в конце каждой строки

znsf4MRWbl.png

решение пока никто не предложил, выкрутился с помощью dos2unix

orXyItAtIy.png

Edited by 2028426
  • 3 weeks later...
Posted (edited)

Здравствуйте!

Спасибо, скрипты отлично работают. Настроил таким образом, что трафик маршрутизируется на интерфейс Wireguard, затем обфусцируется в shadowsocks и уходит на сервер.

Сейчас хочу исключить из этой цепочки Wireguard, только не совсем понимаю как. На какой интерфейс направлять трафик для VPN, если интерфейса Wireguard не будет? Просто в переменной VPN прописать 127.0.0.1 и порт, на котором висит тоннель?

Edited by Mikhail_YAR
Posted (edited)

Привет! 

 

В последнее время после начал замечать в диагностике такую картину: 

Окт 22 22:05:01
cron[2723]
(root) CMD (/opt/bin/run-parts /opt/etc/cron.5mins^I)
Окт 22 22:05:01
cron[2724]
(root) CMD (/opt/bin/run-parts /opt/etc/cron.1min^I)

После выполнении команды ls -l /opt/etc/crontab BusyBox выдаёт это: 

Цитата

-rw-------    1 root     root           492 Aug 24 14:01 /opt/etc/crontab
~ #  ls -l /opt/etc/cron.*
/opt/etc/cron.1min:

/opt/etc/cron.5mins:

/opt/etc/cron.d:

/opt/etc/cron.daily:

/opt/etc/cron.hourly:
lrwxrwxrwx    1 root     root            49 Oct 22 19:22 add-bird4_routes.sh -> /opt/root/Bird4Static/scripts/add-bird4_routes.sh

/opt/etc/cron.monthly:

/opt/etc/cron.weekly:

По ощущениям, интернет начал проседать из-за постоянного обновления кроны, но как найти в чем проблема я не в силах. Буду рад помощи.

Edited by abelman
Редактирование текста
Posted
2 hours ago, abelman said:

По ощущениям, интернет начал проседать из-за постоянного обновления кроны, но как найти в чем проблема я не в силах. Буду рад помощи.

Попробуй запускать раз в день с помощью следующей команды:

mv /opt/etc/cron.hourly/add-bird4_routes.sh /opt/etc/cron.daily/

или раз в неделю:

mv /opt/etc/cron.hourly/add-bird4_routes.sh /opt/etc/cron.weekly/

Posted (edited)
В 25.09.2023 в 09:27, 2028426 сказал:

Не подскажите в чём может быть проблема, всё сделал по инструкции, файлы открываются для редактирования, но сохраняет с символом ^M в конце каждой строки

znsf4MRWbl.png

оно вообще-то не мешает, если что)

да не особо красиво, но у меня все работало

В 17.10.2023 в 22:23, Mikhail_YAR сказал:

Сейчас хочу исключить из этой цепочки Wireguard, только не совсем понимаю как. На какой интерфейс направлять трафик для VPN, если интерфейса Wireguard не будет? Просто в переменной VPN прописать 127.0.0.1 и порт, на котором висит тоннель?

а вот никак. ss не создает интерфейс, то есть некуда направлять на том сетевом уровне, на котором bird работает. хотя может если ss поковырять, то какие-то его реализации могут создать сетевой интерфейс со шлюзом, в который можно трафик направить

22 часа назад, abelman сказал:

В последнее время после начал замечать в диагностике такую картину: 

опять же. это логи крона о том, что он запускает скрипты. если в /opt/etc/cron.1min ничего нет, то оно ничего и не делает, но лог об этом есть

Edited by DennoN
  • 3 weeks later...
Posted

Планирую подключить еще второго интернет провайдера (резерв), как в таком случае будет работать bird4? Можно как-то указать интерфейс 2х провайдеров?

Posted

@Andreycko работа на 2 isp не планировалась. согласно схеме в первом посте все что указывает пользователь - прилетает с одинаковыми приоритетом (кроме варианта, где нужно открывать ресурсы через любой впн, без разницы какой, там приориет пониже, чем у force записей)

так то код выложен, можно свой вариант создать)

Ну а так по факту, если провайдер, который указывается для направления трафика в него отвалился, то в теории трафик пойдет просто игнорируя записи об этом провайдере, согласно другим марщрутам

 

  • Thanks 1
Posted (edited)

Подскажите, а можно как то добавить все под домены? 

Например *.unity.com

Сейчас я добавляю unity.com

А вот packages.unity.com и download.packages.unity.com уже не открываются

Edited by bjornfree
Posted
1 час назад, bjornfree сказал:

Подскажите, а можно как то добавить все под домены?

не-а. это не реализуемо через bird. он по факту домены в ip превращает и работает с ip адресами только. про домены он ничего не знает, и сами домены превращаются в ip адреса при запуске скрипта обычным запросом типа
"скажи какие ip адреса у unity.com и добавь эти ip адреса в маршрутизацию". А превратить непонятный *.unity.com  в ip адрес оно не может

только если узнать какие ip адреса принадлежат unity и все их добавить. Но кстати у меня packages.unity.com и download.packages.unity.com выдается один и тот же ip для обоих, так что можно попробовать добавить

unity.com и packages.unity.com например. но это не значит, что все что в *.unity.com будет ходить через впн. только те ip адреса, который на момент запуска скрипта отдал днс сервер

Posted (edited)

Товарищи, все настроил но хочу понять. По умолчанию, все маршруты проходят через провайдера если не указано обратного, верно? Просто как-бы, я не настраивал ни инсту, ни rutracker, а они разблокированы и по какому маршруту ходят из 2х - не знаю. При установке выбирал BGP. Как  что прояснитиь?

Edited by Sr_psycho
Posted
50 минут назад, DennoN сказал:

не-а. это не реализуемо через bird. он по факту домены в ip превращает и работает с ip адресами только.

Дело в том что напримере unity.com, адрес днс меняется чуть ли не каждые 5 секунд, во всяком случае когда перезапрашиваю постоянно новые айпишники. cron.1min тоже не поможет в такой ситуации?

Posted
В 11.11.2023 в 13:21, DennoN сказал:

@Andreycko работа на 2 isp не планировалась. согласно схеме в первом посте все что указывает пользователь - прилетает с одинаковыми приоритетом (кроме варианта, где нужно открывать ресурсы через любой впн, без разницы какой, там приориет пониже, чем у force записей)

так то код выложен, можно свой вариант создать)

Ну а так по факту, если провайдер, который указывается для направления трафика в него отвалился, то в теории трафик пойдет просто игнорируя записи об этом провайдере, согласно другим марщрутам

 

Код то есть, но у меня не хватит ума что-то там свое добавить) если вдруг будете искать что добавить в скрипт, буду очень благодарен если его научите включать обход на 2х провайдерах)  (как раз сегодня подключил, на 1 основном работает а на 2м резервном нет).

Posted
28 минут назад, bjornfree сказал:

cron.1min тоже не поможет в такой ситуации?

я бы не сильно надеялся. он меняется может меняться от запроса к запросу, и в bird попадет 1 адрес, а в браузер уже другой. можно просто в днс сервере указать, что вот такой-то ip - это unity.com. как с аватарками на юбтубе делали

46 минут назад, Sr_psycho сказал:

При установке выбирал BGP. Как  что прояснитиь?

если бгп, то значит берутся ip адреса с сервера, который выбрали при установке. их 2. один даунлоад, второй нетворк, у них списки отличаются

и вот эти Ip адреса заворачиваются в туннель. все остальное попадает в провайдера. ну и то что в пользовательских файлах указано Bird4Static/lists/user-(vpn|isp).list в зависимости от того какой файл и чем заполнен, то идет либо в впн либо в провайдера

куда ходят - берем имя сайта и делаем трасерт с компа (гугл в помощь по запросу tracert ) к этому сайту и к сайту который точно идет через провайдера. если видим, что светится Ip туннеля - значит через впн. если провайдера - значит провайдера. можно побаловать сайт например 2iip.ru в файл с впн запустить скрипт и выполнить трасерт, а потом в файл с впн и все так же сделать. так придет понимание чем маршруты отличаются

3 минуты назад, Andreycko сказал:

если вдруг будете искать что добавить в скрипт, буду очень благодарен если его научите включать обход на 2х провайдерах)

пока в планах не было. сам конфиг добавить не сложно, но нужно же автоустановку делать, что бы была возможность выбора и задания нужных шлюзов... А это уже много времени) Там же надо обыгрывать случаи, когда 1 провайдер и 1 или 2 впна (это все реализовано) и так же нужно делать когда 2 провайдера и 1 или 2 впна. И из аккуратной схемы это уже превращается в какого-то монстра, которого тяжело поддерживать

  • Thanks 2
Posted (edited)

Подскажите пожалуйста, что конкретно значит " 3 - antifilter.network with vpn 10.75.66.20 ( you need install vpn first https://antifilter.netw "? 

1. Этот VPN тоннель необходимо предварительно поднять в роутере и указывать как один из интерфейсов vpn1/2 , или скрипт сам через него тащит списки когда обнаруживает сеть с этим адресом?

2. Нужен ли вариант №3 вообще, если  у меня уже есть два соединения WG - WARP и собственный сервер на VPS. Оба они уже указаны как inerface 1/2. 
Вот я и запутался слегка.
PS IP серый за натом провайдера.

Edited by Sr_psycho
Posted

@Sr_psycho

1) это значит, что перед использованием скрипта на роутере нужно поднять соединение с сервисом, настроить в боте нужные списки и только потом ставить скрипт

2) этот вариант позволяет с серым адресом или динамическим белым выбрать что конкретно будет отдавать сервис. Другие 2 варианта через bgp такой возможности не предоставляют. Ну и если серый ip, то тут как я понимаю только этот вариант. В первых двух нужен белый адрес, для того что бы хоть что-нибудь работало.

  • Thanks 1
Posted (edited)

Подскажите пожалуйста, я выполнил команду 

mv /opt/etc/cron.1min/add-bird4_routes.sh /opt/etc/cron.weekly/

и

./Bird4Static/scripts/add-bird4_routes.sh

Но в логах все равно присутствует обновление раз в минуту нагружая cpu 

Скрытый текст
cron[29111]
(root) CMD (/opt/bin/run-parts /opt/etc/cron.1min^I)
Ноя 17 17:16:15
 
ndhcpc
GigabitEthernet0/Vlan4: received ACK for xxx.xx.xx.xxx from xxx.xx.xx.x lease 300 sec.
Ноя 17 17:17:01

 

Что я так не так сделал? Или что идет не так, а может и так?🤔

Edited by Sr_psycho
Posted (edited)
55 минут назад, Sr_psycho сказал:

Подскажите пожалуйста, я выполнил команду 

mv /opt/etc/cron.1min/add-bird4_routes.sh /opt/etc/cron.weekly/

и

./Bird4Static/scripts/add-bird4_routes.sh

Но в логах все равно присутствует обновление раз в минуту нагружая cpu 

  Показать содержимое
cron[29111]
(root) CMD (/opt/bin/run-parts /opt/etc/cron.1min^I)
Ноя 17 17:16:15
 
ndhcpc
GigabitEthernet0/Vlan4: received ACK for xxx.xx.xx.xxx from xxx.xx.xx.x lease 300 sec.
Ноя 17 17:17:01

 

Что я так не так сделал? Или что идет не так, а может и так?🤔

у меня вообще от команды mv /opt/etc/cron.1min/add-bird4_routes.sh /opt/etc/cron.weekly/ такое

Screenshot_22.jpg

Edited by Kazantsev
Posted (edited)

Консоль сообщает, что в этой папке нет этого самого скрипта 

add-bird4_routes.sh

Его в начале туда нужно положить как я понял, скопировав из папки root\Bird4Static\scripts\, потом привязать командой 

./Bird4Static/scripts/add-bird4_routes.sh

А когда Вы захотите изменить план загрузки, то уже перемещаете его этой командой →

mv /opt/etc/cron.1min/add-bird4_routes.sh /opt/etc/cron.weekly/

из папки в папку в зависимости от желаемого плана загрузок.

1min

5min

hourly

daily

weekly

monthly

Где → mv - это переместить файл скрипта add-bird4_routes.sh из начальной папки /cron.1min/ и положить его в /opt/etc/cron.weekly/

Edited by Sr_psycho
Posted
29 минут назад, Kazantsev сказал:

у меня вообще от команды mv /opt/etc/cron.1min/add-bird4_routes.sh /opt/etc/cron.weekly/ такое

а тебе зачем оно нужно было в 1 минуту-то? по умолчанию ищи это вайл либо в раз в час либо раз в день

1 час назад, Sr_psycho сказал:

Но в логах все равно присутствует обновление раз в минуту нагружая cpu 

я бы роутер перезагрузил. Раз в минуту дергать bird - такое себе. он списки может дольше обновлять. да и сам скрипт не моментально выполяется, и по итогу там возможно что-то накопилось, когда оно выполнялось и пыталось снова выполнится. А так если после ребута роутера нагрузка разв  минуту продолжиться - то этот тут ни при чем. ищи что еще запускается раз в минуту в той же папке или это вообще откуда-то из другого места тянется

Для bird4static лучше не надо ставить чаще чем раз в час

  • Upvote 1

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

This site uses cookies. By clicking "I accept" or continuing to browse the site, you authorize their use in accordance with the Privacy Policy.