Перейти к содержанию

Рекомендуемые сообщения

Опубликовано
6 часов назад, DennoN сказал:

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

после точки подставляешь нужную папку

cron.1min/    cron.hourly/   cron.weekly/
cron.5mins/    cron.daily/    cron.monthly/

типа, такая команда?
mv /opt/etc/cron.hourly/add-bird4_routes.sh /opt/etc/cron.5mins/

  • Ответов 627
  • Создана
  • Последний ответ

Топ авторов темы

Опубликовано
В 09.07.2023 в 22:47, DennoN сказал:

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

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

Опубликовано

Всем привет! 
Спасибо автору за отличное решение!
Вчера Стал счастливым  обладателем 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? Или помогите как исправить?  

 

Опубликовано
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 недели спустя...
Опубликовано
В 27.08.2023 в 19:14, Игорь Жук сказал:

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

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

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

Опубликовано (изменено)
В 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

Изменено пользователем Никита Герасимов
Опубликовано
54 минуты назад, DennoN сказал:

@Никита Герасимовпервый пост Возможные проблемы пункт 2

Screenshot_20230918_161409.jpg

Спасибо! Как-то пропустил и правда...
Я пока обошел статическим маршрутом в самом интерфейсе кинетика

Опубликовано (изменено)

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

Изменено пользователем eda100
дополнение
Опубликовано (изменено)
В 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

Изменено пользователем 2028426
Опубликовано (изменено)
23 часа назад, 2028426 сказал:

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

znsf4MRWbl.png

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

orXyItAtIy.png

Изменено пользователем 2028426
  • 3 недели спустя...
Опубликовано (изменено)

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

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

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

Изменено пользователем Mikhail_YAR
Опубликовано (изменено)

Привет! 

 

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

Окт 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:

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

Изменено пользователем abelman
Редактирование текста
Опубликовано
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/

Опубликовано (изменено)
В 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 ничего нет, то оно ничего и не делает, но лог об этом есть

Изменено пользователем DennoN
  • 3 недели спустя...
Опубликовано

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

Опубликовано

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

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

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

 

Опубликовано (изменено)

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

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

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

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

Изменено пользователем bjornfree
Опубликовано
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 адреса, который на момент запуска скрипта отдал днс сервер

Опубликовано (изменено)

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

Изменено пользователем Sr_psycho
Опубликовано
50 минут назад, DennoN сказал:

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

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

Опубликовано
В 11.11.2023 в 13:21, DennoN сказал:

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

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

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

 

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

Опубликовано
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 впна. И из аккуратной схемы это уже превращается в какого-то монстра, которого тяжело поддерживать

Опубликовано (изменено)

Подскажите пожалуйста, что конкретно значит " 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 серый за натом провайдера.

Изменено пользователем Sr_psycho
Опубликовано

@Sr_psycho

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

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

Опубликовано (изменено)

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

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

 

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

Изменено пользователем Sr_psycho
Опубликовано (изменено)
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

Изменено пользователем Kazantsev
Опубликовано (изменено)

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

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/

Изменено пользователем Sr_psycho

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...

Важная информация

На этом сайте используются файлы cookie. Нажимая "Я принимаю" или продолжая просмотр сайта, вы разрешаете их использование: Политика конфиденциальности.