Перейти к содержимому
Калькуляторы

msd Lite - тестируем Замена udpxy если у кого оно ещё осталось

Бесплатная версия моей msd для вещания телека, BSD лицензия: http://www.netlab.linkpc.net/wiki/ru:software:msd:lite

И полная версия: https://github.com/rozhuk-im/msd

 

По идее должна 10G+ держать при правильном тюнинге ибо использует sendfile() для отсылки клиентам, что даёт ядру возможность использовать все доступные оффлоадинги а не заниматься копированием.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

На 2-x win и 2-х linux разные версии vlc не захотели подключаться, ругается

[0xb4400fb0] access_http access error: malformed header line: msd_lite/1.01 HTTP stream hub by Rozhuk Ivan

 

после исправления src/stream_sys.c

 

/* Base HTTP headers. */

if (0 != core_info_get_os_ver("/", 1, osver,

(sizeof(osver) - 1), NULL))

memcpy(osver, "Generic OS/1.0", 15);

shbskt->base_http_hdrs_size = snprintf((char*)shbskt->base_http_hdrs,

sizeof(shbskt->base_http_hdrs),

"HTTP/1.1 200 OK\r\n"

"Server: %s\r\n"

"Connection: close",

app_ver);

 

заработало

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Пофиксил, сейчас должен корректно отдавать заголовки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Пофиксил, сейчас должен корректно отдавать заголовки.

 

Будем тестировать.

 

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

 

Хотя-бы по одному каналу. Задержки, дропы, может еще что.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Будем тестировать.

 

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

 

Хотя-бы по одному каналу. Задержки, дропы, может еще что.

 

Astra : https://cesbo.com

 

для анализа потока : astra --analyze udp://адресс:порт

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Будем тестировать.

 

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

 

Хотя-бы по одному каналу. Задержки, дропы, может еще что.

 

Astra : https://cesbo.com

 

для анализа потока : astra --analyze udp://адресс:порт

 

Обертка над ffmpeg ? :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Обертка над ffmpeg ? :)

Потрудитесь заглянуть.

Нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Иван, плз подскажите, msd-lite умеет разобрать mpeg4 во входящем мультикаст потоке ? mpeg2 работает нормально

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Строго говоря, mpeg2 / mpeg4 - играет разницу только для декодера, оба заворачиваются в mpeg2-ts перед передачей в эфир.

Потому мсд без разницы с чем работать, даже если там нет видео и звука совсем.

 

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

Полная версия умеет разбирать mpeg2-ts, чтобы показать пиды, ошибки и прочее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А я забыл, она под фряху только играет?

 

upd. Под линуха собралось нормально и запустилось. Правда потоки не отдает. ЧЯДНТ?

 

[2014-11-19 23:36:07]: /udp/237.5.1.3:1234@eth0.281: Created.
[2014-11-19 23:36:07]: /udp/237.5.1.3:1234@eth0.281 - 34.51.124.9:60265: attached, cli_count = 1
[2014-11-19 23:36:07]: /udp/237.5.1.3:1234@eth0.281 - 34.51.124.9:60266: attached, cli_count = 2
[2014-11-19 23:36:07] str_hub_send_to_clients, line 825: error 104: Connection reset by peer /udp/237.5.1.3:1234@eth0.281 - 34.51.124.9:60265: disconnected.
[2014-11-19 23:36:07]: /udp/237.5.1.3:1234@eth0.281 - 34.51.124.9:60265: deattached, cli_count = 1
[2014-11-19 23:36:07]: /udp/237.5.1.3:1234@eth0.281 - 34.51.124.9:60267: attached, cli_count = 2
[2014-11-19 23:36:08] str_hub_send_to_clients, line 825: error 104: Connection reset by peer /udp/237.5.1.3:1234@eth0.281 - 34.51.124.9:60266: disconnected.
[2014-11-19 23:36:08]: /udp/237.5.1.3:1234@eth0.281 - 34.51.124.9:60266: deattached, cli_count = 1
[2014-11-19 23:36:08] str_hub_send_to_clients, line 825: error 104: Connection reset by peer /udp/237.5.1.3:1234@eth0.281 - 34.51.124.9:60267: disconnected.
[2014-11-19 23:36:08]: /udp/237.5.1.3:1234@eth0.281 - 34.51.124.9:60267: deattached, cli_count = 0
[2014-11-19 23:36:08] str_hubs_bckt_timer_service, line 407: /udp/237.5.1.3:1234@eth0.281: No more clients, selfdestroy.
[2014-11-19 23:36:08]: /udp/237.5.1.3:1234@eth0.281: Destroyed.

 

upd2. Помог солюшен из второго поста этой темы. Версия качалась 1.0.5, ошибка была той же самой "access_mms error: malformed header line: msd_lite/1.05 HTTP stream hub by Rozhuk Ivan"

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Под фряху должно проца меньше жрать.

У можете сдампить ответ tcpdump -A ... чтобы посмотреть что отдаёт такого страшного?

У меня под винду 2.1.5 влц не ругается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

На MAG250 работает так же как и udpprxy, тормозит. Начинаю думать, что это приставка голимая какая-то. Но странно, конечно. На пк всё отлично, быстро, не сыпется, но на пк никому не нужно, у нас по крайней мере.

Как-бы разобраться в чем дело, спросить даже не у кого.

 

(не пойму есть звук или нет на видео, в реальности там оно подлагивает мальца, а на первом канале вообще тишина была)

 

VLC под винду был 2.1.4. Сдампить можно, попозже только.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

На MAG250 работает так же как и udpprxy, тормозит.

Тоже было что то, когда плей лист туда выткал без портала, с порталом нормально. Уже не помню деталей.

 

Начинаю думать, что это приставка голимая какая-то.

Попробуйте канал в начале открыть на компе, а потом приставкой открывать, чтобы она получала прекеш.

 

VLC под винду был 2.1.4. Сдампить можно, попозже только.

на 1.0.5 из УРЛ /stat выложите System info, тогда tcpdump не нужен будет чтобы подтвердить догадку.

1.0.7 попробуйте без патчей.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

На MAG250 работает так же как и udpprxy, тормозит. Начинаю думать, что это приставка голимая какая-то. Но странно, конечно. На пк всё отлично, быстро, не сыпется, но на пк никому не нужно, у нас по крайней мере.

Как-бы разобраться в чем дело, спросить даже не у кого.

 

 

если там приставка без портала то это скорее нормально

если с порталом то убедитесь что в плэйлисте указывается соответствующий солюшен

ffrt http://192.168.1.1:8888/127.0.0.1:8899/udp/239.1.1.1:1234

у нас пока не было _ffrt_ тоже были странности на юникасти с МАГ-ом

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

не собирается на 7.2 i386, или нужны какие то доп либы?

[root@gw /usr/local/src/msd_lite-1.07]# ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... ./install-sh -c -d
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking for pthread_create in -lpthread... yes
checking for clock_gettime... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating src/config.h
config.status: executing depfiles commands
[root@office-gw /usr/local/src/msd_lite-1.07]# make
Making all in src
make  all-am
depbase=`echo msd_lite.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`; gcc -DHAVE_CONFIG_H -I.     -I ./include/ -pipe -O2 -DNDEBUG -DHTTP_SRV_XML_CONFIG -fstack-protector -fomit-frame-pointer -fPIE -ffast-math  -MT msd_lite.o -MD -MP -MF $depbase.Tpo -c -o msd_lite.o msd_lite.c && mv -f $depbase.Tpo $depbase.Po
depbase=`echo msd_lite_stat_text.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`; gcc -DHAVE_CONFIG_H -I.     -I ./include/ -pipe -O2 -DNDEBUG -DHTTP_SRV_XML_CONFIG -fstack-protector -fomit-frame-pointer -fPIE -ffast-math  -MT msd_lite_stat_text.o -MD -MP -MF $depbase.Tpo -c -o msd_lite_stat_text.o msd_lite_stat_text.c && mv -f $depbase.Tpo $depbase.Po
msd_lite_stat_text.c: In function 'gen_sock_tcp_stat_text':
msd_lite_stat_text.c:120: error: 'struct tcp_info' has no member named 'tcpi_rto'
msd_lite_stat_text.c:120: error: 'struct tcp_info' has no member named 'tcpi_snd_mss'
msd_lite_stat_text.c:120: error: 'struct tcp_info' has no member named 'tcpi_rcv_mss'
msd_lite_stat_text.c:120: error: 'struct tcp_info' has no member named 'tcpi_last_data_recv'
msd_lite_stat_text.c:120: error: 'struct tcp_info' has no member named 'tcpi_snd_rexmitpack'
msd_lite_stat_text.c:120: error: 'struct tcp_info' has no member named 'tcpi_rcv_ooopack'
msd_lite_stat_text.c:120: error: 'struct tcp_info' has no member named 'tcpi_snd_zerowin'
msd_lite_stat_text.c:120: error: 'struct tcp_info' has no member named 'tcpi_rto'
msd_lite_stat_text.c:120: error: 'struct tcp_info' has no member named 'tcpi_snd_mss'
msd_lite_stat_text.c:120: error: 'struct tcp_info' has no member named 'tcpi_rcv_mss'
msd_lite_stat_text.c:120: error: 'struct tcp_info' has no member named 'tcpi_last_data_recv'
msd_lite_stat_text.c:120: error: 'struct tcp_info' has no member named 'tcpi_snd_rexmitpack'
msd_lite_stat_text.c:120: error: 'struct tcp_info' has no member named 'tcpi_rcv_ooopack'
msd_lite_stat_text.c:120: error: 'struct tcp_info' has no member named 'tcpi_snd_zerowin'
*** Error code 1

Stop in /usr/local/src/msd_lite-1.07/src.
*** Error code 1

Stop in /usr/local/src/msd_lite-1.07/src.
*** Error code 1

Stop in /usr/local/src/msd_lite-1.07.
[root@gw /usr/local/src/msd_lite-1.07]# uname -a
FreeBSD gw.ua 7.2-STABLE FreeBSD 7.2-STABLE #2: Tue Jun 16 11:11:44 UTC 2009     root@mer:/usr/src/sys/i386/compile/A  i386

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

у нас пока не было _ffrt_ тоже были странности на юникасти с МАГ-ом

Точно, оно и у меня было :)

 

не собирается на 7.2 i386, или нужны какие то доп либы?

Не либы, а хотя бы восьмёрка.

Можно руками поправить в файле msd_lite_stat_text.c, функция gen_sock_tcp_stat_text()

самое простое отключить нафик этот блок кода

заменив

#ifdef BSD /* BSD specific code. */

на

#if 0

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

VLC под винду был 2.1.4. Сдампить можно, попозже только.

 

на 1.0.5 из УРЛ /stat выложите System info, тогда tcpdump не нужен будет чтобы подтвердить догадку.

1.0.7 попробуйте без патчей.

 

 

1.0.5 System info

 

System info
OS: Linux 3.2.0-4-amd64
Hostname: iptv-streamer-2.(none)
Version: #1 SMP Debian 3.2.60-1+deb7u3

 

На версии 1.0.7 история повторяется.

access_http error: malformed header line: msd_lite/1.07 HTTP stream hub by Rozhuk Ivan
access_http error: malformed header line: msd_lite/1.07 HTTP stream hub by Rozhuk Ivan
access_mms error: malformed header line: msd_lite/1.07 HTTP stream hub by Rozhuk Ivan

 

Дамп кину личкой, не хочу светить адрес сервера, там пока ничем не прикрытый зад :)

 

если там приставка без портала то это скорее нормально

если с порталом то убедитесь что в плэйлисте указывается соответствующий солюшен

ffrt http://192.168.1.1:8888/127.0.0.1:8899/udp/239.1.1.1:1234

у нас пока не было _ffrt_ тоже были странности на юникасти с МАГ-ом

 

Большое спасибо за подсказку, дам программистам пинка в понедельник за то что читать мануал не умеют. Это всё описано в javascript api, оказывается. Будем проверять.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

На версии 1.0.7 история повторяется.

"посыпал голову пеплом" - теперь не должно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Запустил в тесте. Всё работает нормально, кроме HD-каналов на ipad\iphone (больше пока не на чем проверить, докатились), они через минуты 2 после старта сыпятся и в итоге встают.

 

Еще такой вопрос.

retransmits: 0

total_retrans: 1673

 

В чем разница?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Система тюнингованная?

htcp модуль загружается?

http://www.netlab.linkpc.net/download/software/msd/tunings/linux/

 

В чём разница не скажу.

Это вывод структуры TCP_INFO, она под фрёй и линухом разная, и как то без документации.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

не собирается на

FreeBSD mcast.-.od.ua 8.3-RELEASE FreeBSD 8.3-RELEASE #2 r236167: Thu Sep 27 15:19:18 EEST 2012 root@mcast.-.od.ua:/usr/src/sys/amd64/compile/GENERIC_MCAST amd64

 

после make

пишет

 

Making all in src
make  all-am
depbase=`echo src/core_helpers.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`; gcc -DHAVE_CONFIG_H -I.     -I ./include/ -pipe -O2 -DNDEBUG -DHTTP_SRV_XML_CONFIG -fstack-protector -fomit-frame-pointer -fPIE -ffast-math  -MT src/core_helpers.o -MD -MP -MF $depbase.Tpo -c -o src/core_helpers.o src/core_helpers.c && mv -f $depbase.Tpo $depbase.Po
src/core_helpers.c: In function 'mmalloc_fd':
src/core_helpers.c:93: error: 'MAP_ALIGNED_SUPER' undeclared (first use in this function)
src/core_helpers.c:93: error: (Each undeclared identifier is reported only once
src/core_helpers.c:93: error: for each function it appears in.)
*** Error code 1

Stop in /root/src/msd_light/msd_lite-1.08/src.
*** Error code 1

Stop in /root/src/msd_light/msd_lite-1.08/src.
*** Error code 1

Stop in /root/src/msd_light/msd_lite-1.08.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

не собирается на 7.2 i386, или нужны какие то доп либы?

Не либы, а хотя бы восьмёрка.

Можно руками поправить в файле msd_lite_stat_text.c, функция gen_sock_tcp_stat_text()

самое простое отключить нафик этот блок кода

заменив

#ifdef BSD /* BSD specific code. */

на

#if 0

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

 

теперь так

Making all in src
make  all-am
depbase=`echo msd_lite.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`; gcc -DHAVE_CONFIG_H -I.     -I ./include/ -pipe -O2 -DNDEBUG -DHTTP_SRV_XML_CONFIG -fstack-protector -fomit-frame-pointer -fPIE -ffast-math  -MT msd_lite.o -MD -MP -MF $depbase.Tpo -c -o msd_lite.o msd_lite.c && mv -f $depbase.Tpo $depbase.Po
depbase=`echo msd_lite_stat_text.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`; gcc -DHAVE_CONFIG_H -I.     -I ./include/ -pipe -O2 -DNDEBUG -DHTTP_SRV_XML_CONFIG -fstack-protector -fomit-frame-pointer -fPIE -ffast-math  -MT msd_lite_stat_text.o -MD -MP -MF $depbase.Tpo -c -o msd_lite_stat_text.o msd_lite_stat_text.c && mv -f $depbase.Tpo $depbase.Po
depbase=`echo stream_sys.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`; gcc -DHAVE_CONFIG_H -I.     -I ./include/ -pipe -O2 -DNDEBUG -DHTTP_SRV_XML_CONFIG -fstack-protector -fomit-frame-pointer -fPIE -ffast-math  -MT stream_sys.o -MD -MP -MF $depbase.Tpo -c -o stream_sys.o stream_sys.c && mv -f $depbase.Tpo $depbase.Po
stream_sys.c: In function 'str_hubs_bckt_timer_service':
stream_sys.c:393: warning: this decimal constant is unsigned only in ISO C90
stream_sys.c:394: warning: this decimal constant is unsigned only in ISO C90
stream_sys.c: In function 'str_hub_send_to_client':
stream_sys.c:778: warning: cast from pointer to integer of different size
stream_sys.c: In function 'str_hub_thrpt_get_by_name':
stream_sys.c:143: warning: passing argument 1 of 'md5_get_digest' discards qualifiers from pointer target type
depbase=`echo src/core_http_srv.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`; gcc -DHAVE_CONFIG_H -I.     -I ./include/ -pipe -O2 -DNDEBUG -DHTTP_SRV_XML_CONFIG -fstack-protector -fomit-frame-pointer -fPIE -ffast-math  -MT src/core_http_srv.o -MD -MP -MF $depbase.Tpo -c -o src/core_http_srv.o src/core_http_srv.c && mv -f $depbase.Tpo $depbase.Po
depbase=`echo src/xml.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`; gcc -DHAVE_CONFIG_H -I.     -I ./include/ -pipe -O2 -DNDEBUG -DHTTP_SRV_XML_CONFIG -fstack-protector -fomit-frame-pointer -fPIE -ffast-math  -MT src/xml.o -MD -MP -MF $depbase.Tpo -c -o src/xml.o src/xml.c && mv -f $depbase.Tpo $depbase.Po
depbase=`echo src/HTTP.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`; gcc -DHAVE_CONFIG_H -I.     -I ./include/ -pipe -O2 -DNDEBUG -DHTTP_SRV_XML_CONFIG -fstack-protector -fomit-frame-pointer -fPIE -ffast-math  -MT src/HTTP.o -MD -MP -MF $depbase.Tpo -c -o src/HTTP.o src/HTTP.c && mv -f $depbase.Tpo $depbase.Po
depbase=`echo src/core_r_buf.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`; gcc -DHAVE_CONFIG_H -I.     -I ./include/ -pipe -O2 -DNDEBUG -DHTTP_SRV_XML_CONFIG -fstack-protector -fomit-frame-pointer -fPIE -ffast-math  -MT src/core_r_buf.o -MD -MP -MF $depbase.Tpo -c -o src/core_r_buf.o src/core_r_buf.c && mv -f $depbase.Tpo $depbase.Po
depbase=`echo src/core_thrp.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`; gcc -DHAVE_CONFIG_H -I.     -I ./include/ -pipe -O2 -DNDEBUG -DHTTP_SRV_XML_CONFIG -fstack-protector -fomit-frame-pointer -fPIE -ffast-math  -MT src/core_thrp.o -MD -MP -MF $depbase.Tpo -c -o src/core_thrp.o src/core_thrp.c && mv -f $depbase.Tpo $depbase.Po
src/core_thrp.c: In function 'thrp_flags_to_kq':
src/core_thrp.c:287: error: 'EV_DISPATCH' undeclared (first use in this function)
src/core_thrp.c:287: error: (Each undeclared identifier is reported only once
src/core_thrp.c:287: error: for each function it appears in.)
src/core_thrp.c: In function 'thrpt_data_event_init':
src/core_thrp.c:301: error: 'EVFILT_USER' undeclared (first use in this function)
src/core_thrp.c:303: error: 'NOTE_FFNOP' undeclared (first use in this function)
src/core_thrp.c: In function 'thrpt_msg_send':
src/core_thrp.c:388: error: 'EVFILT_USER' undeclared (first use in this function)
src/core_thrp.c:390: error: 'NOTE_TRIGGER' undeclared (first use in this function)
src/core_thrp.c: In function 'thrpt_loop':
src/core_thrp.c:523: error: 'EVFILT_USER' undeclared (first use in this function)
*** Error code 1

Stop in /root/src/msd_lite-1.08/src.
*** Error code 1

Stop in /root/src/msd_lite-1.08/src.
*** Error code 1

Stop in /root/src/msd_lite-1.08.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

'MAP_ALIGNED_SUPER'

Можно просто удалить.

 

FreeBSD mcast.-.od.ua 8.3-RELEASE
src/core_thrp.c:301: error: 'EVFILT_USER' undeclared (first use in this function) src/core_thrp.c:303: error: 'NOTE_FFNOP' undeclared (first use in this function) src/core_thrp.c: In function 'thrpt_msg_send': src/core_thrp.c:388: error: 'EVFILT_USER' undeclared (first use in this function) src/core_thrp.c:390: error: 'NOTE_TRIGGER' undeclared (first use in this function) src/core_thrp.c: In function 'thrpt_loop': src/core_thrp.c:523: error: 'EVFILT_USER' undeclared (first use in this function)

Не сочетается малость.

Начиная с 8.1 они уже есть, а в 8.0 их ещё не было.

Может у вас мир не обновлён?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

все логично

в t0ly (26 декабря 2014 - 12:31)

речь шла о 7.2 (не собрал)

а в t0ly (26 декабря 2014 - 12:21)

о 8.3 (собрал следуя советам)

 

я так понима на 7.2 никак не получится собрать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

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

  Разрешено не более 75 смайлов.

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

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

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