Eagle18 Опубликовано 26 января, 2016 · Жалоба ВЫручите, подскажите что не так: Файл конфига #!/usr/bin/astra log.set({ debug = true, stdout = true, filename = "/var/log/astra.log"}) pidfile("/var/run/astra.pid") cam_1 = newcamd({ name = "Reader", host = "х.х.х.х", port = "ххххх", username = "ххххх", password = "ххх", key = "010...21314", }) dvb_1 = { adapter = 0, type = "S2", tp = "12034:h:27500", lnb = "10750:10750:10750" } s1 = make_stream({ name = "Stream 1", dvb = dvb_1 }, { { name = "Channel 1", pnr = 3120, cam = cam_1, addr = "239.255.1.1", analyze = true }, }) При запуске ругается на: PANIC: unprotected error in call to Lua API ([main] ./channel_orig.lua:8: attempt to call global 'newcamd' (a nil value)) Aborted (core dumped) При выполнении ./configure.h следующее: root@ubuntu:/etc/astra# ./configure.sh Cleaning previous build... CLEAN: astra Compiler Flags: TARGET: x86_64-linux-gnu CC: gcc CFLAGS: -O2 -fomit-frame-pointer -I. -Wall -Wextra -Wstrict-prototypes -pedantic -fno-builtin -std=iso9899:1999 -D_GNU_SOURCE -msse -msse2 -march=native -pthread -DWITH_EPOLL=1 -DHAVE_CLOCK_GETTIME=1 -DHAVE_ENDIAN_H=1 -DHAVE_PREAD=1 -DHAVE_STRNDUP=1 -DHAVE_STRNLEN=1 Check modules: OK: ./main.c OK: ./core OK: ./lua OK: ./modules/asi OK: ./modules/astra SKIP: ./modules/biss_encrypt ./modules/biss_encrypt: error: libdvbcsa is not found. use --with-libdvbcsa option OK: ./modules/dvb OK: ./modules/file OK: ./modules/http OK: ./modules/inscript SKIP: ./modules/mixaudio ./modules/mixaudio: error: module is under development OK: ./modules/mpegts SKIP: ./modules/postgres ./modules/postgres: error: PostgreSQL or libpq not found OK: ./modules/softcam OK: ./modules/udp Linker Flags: VERSION: 4.4.184 OUT: astra LDFLAGS: -ldl -lm -lpthread -lrt -lrt -lcrypto Install Path: BINARY: /usr/bin/astra Вроде как модуль собрался без проблем. Запускал ./configure.h принудительно с выбором модуля. такая же ерунда. Если не использовать newcamd то астра нормально стартует показывает открытые каналы. openssl и libssl-dev поставил. без изменений. и кстати файлик newcamd.o почему то не появляется и при сборке астры непонятно почему валиться вот это root@ubuntu:/etc/astra# make CC: main.o CC: core/clock.o CC: core/compat.o CC: core/event.o CC: core/list.o CC: core/log.o CC: core/loopctl.o CC: core/socket.o CC: core/strbuffer.o CC: core/thread.o CC: core/timer.o CC: lua/lapi.o CC: lua/lauxlib.o CC: lua/lcode.o CC: lua/lctype.o CC: lua/ldebug.o CC: lua/ldo.o CC: lua/ldump.o CC: lua/lfunc.o CC: lua/lgc.o CC: lua/llex.o CC: lua/lmem.o CC: lua/loadlib.o lua/loadlib.c: In function ‘ll_sym’: lua/loadlib.c:142:21: warning: ISO C forbids conversion of object pointer to function pointer type [-Wpedantic] lua_CFunction f = (lua_CFunction)dlsym(lib, sym); ^ CC: lua/lobject.o CC: lua/lopcodes.o CC: lua/lparser.o CC: lua/lstate.o CC: lua/lstring.o CC: lua/ltable.o CC: lua/ltm.o CC: lua/lundump.o CC: lua/lvm.o CC: lua/lzio.o CC: lua/lbaselib.o CC: lua/lbitlib.o CC: lua/lcorolib.o CC: lua/ldblib.o CC: lua/linit.o CC: lua/liolib.o CC: lua/lmathlib.o CC: lua/loslib.o CC: lua/lstrlib.o CC: lua/ltablib.o CC: modules/softcam/FFdecsa/FFdecsa.o CC: modules/softcam/cam/cam.o CC: modules/softcam/cam/newcamd.o CC: modules/softcam/cas/bulcrypt.o CC: modules/softcam/cas/conax.o CC: modules/softcam/cas/cryptoworks.o CC: modules/softcam/cas/dgcrypt.o CC: modules/softcam/cas/dre.o CC: modules/softcam/cas/exset.o CC: modules/softcam/cas/griffin.o CC: modules/softcam/cas/irdeto.o CC: modules/softcam/cas/mediaguard.o CC: modules/softcam/cas/nagra.o CC: modules/softcam/cas/viaccess.o CC: modules/softcam/cas/videoguard.o CC: modules/softcam/decrypt.o BUILD: astra modules/softcam/cam/newcamd.o: In function `__module_new': newcamd.c:(.text+0x496): undefined reference to `module_option_string' newcamd.c:(.text+0x4b1): undefined reference to `module_option_string' newcamd.c:(.text+0x4ca): undefined reference to `module_option_number' newcamd.c:(.text+0x4e5): undefined reference to `module_option_string' newcamd.c:(.text+0x50a): undefined reference to `module_option_string' newcamd.c:(.text+0x526): undefined reference to `md5_crypt' newcamd.c:(.text+0x54c): undefined reference to `module_option_string' newcamd.c:(.text+0x56e): undefined reference to `str_to_hex' newcamd.c:(.text+0x57f): undefined reference to `module_option_boolean' newcamd.c:(.text+0x58d): undefined reference to `module_option_number' modules/softcam/cam/newcamd.o: In function `on_newcamd_read_packet': newcamd.c:(.text+0x1089): undefined reference to `hex_to_str' newcamd.c:(.text+0x118d): undefined reference to `hex_to_str' newcamd.c:(.text+0x11a2): undefined reference to `hex_to_str' modules/softcam/decrypt.o: In function `__pmt_check_desc': decrypt.c:(.text+0x45b): undefined reference to `mpegts_psi_init' modules/softcam/decrypt.o: In function `stream_reload': decrypt.c:(.text+0x582): undefined reference to `mpegts_psi_destroy' modules/softcam/decrypt.o: In function `on_pmt': decrypt.c:(.text+0x6a6): undefined reference to `crc32b' decrypt.c:(.text+0x8c8): undefined reference to `crc32b' decrypt.c:(.text+0x955): undefined reference to `__module_stream_send' modules/softcam/decrypt.o: In function `on_cat': decrypt.c:(.text+0xbad): undefined reference to `crc32b' decrypt.c:(.text+0xd4d): undefined reference to `mpegts_psi_init' modules/softcam/decrypt.o: In function `on_pat': decrypt.c:(.text+0xe11): undefined reference to `crc32b' decrypt.c:(.text+0xf37): undefined reference to `mpegts_psi_init' decrypt.c:(.text+0xf83): undefined reference to `mpegts_psi_init' modules/softcam/decrypt.o: In function `__module_delete': decrypt.c:(.text+0x1056): undefined reference to `__module_stream_destroy' decrypt.c:(.text+0x10d5): undefined reference to `mpegts_psi_destroy' decrypt.c:(.text+0x10fa): undefined reference to `mpegts_psi_destroy' modules/softcam/decrypt.o: In function `__module_new': decrypt.c:(.text+0x129d): undefined reference to `__module_stream_init' decrypt.c:(.text+0x12f2): undefined reference to `module_option_string' decrypt.c:(.text+0x1309): undefined reference to `mpegts_psi_init' decrypt.c:(.text+0x131f): undefined reference to `mpegts_psi_init' decrypt.c:(.text+0x1394): undefined reference to `module_option_string' decrypt.c:(.text+0x13ca): undefined reference to `str_to_hex' decrypt.c:(.text+0x147e): undefined reference to `module_option_number' decrypt.c:(.text+0x14ae): undefined reference to `module_option_string' decrypt.c:(.text+0x14ca): undefined reference to `str_to_hex' decrypt.c:(.text+0x14db): undefined reference to `module_option_boolean' decrypt.c:(.text+0x14ec): undefined reference to `module_option_number' decrypt.c:(.text+0x1526): undefined reference to `module_option_number' decrypt.c:(.text+0x15dc): undefined reference to `__module_stream_attach' modules/softcam/decrypt.o: In function `on_ts': decrypt.c:(.text+0x17fa): undefined reference to `mpegts_psi_mux' decrypt.c:(.text+0x19eb): undefined reference to `__module_stream_send' modules/softcam/decrypt.o: In function `on_cam_response': decrypt.c:(.text+0x1c6f): undefined reference to `hex_to_str' decrypt.c:(.text+0x1c83): undefined reference to `hex_to_str' modules/softcam/decrypt.o: In function `on_pmt': decrypt.c:(.text+0x968): undefined reference to `mpegts_psi_demux' modules/softcam/decrypt.o: In function `on_ts': decrypt.c:(.text+0x17e6): undefined reference to `mpegts_psi_mux' decrypt.c:(.text+0x1a5f): undefined reference to `mpegts_psi_mux' decrypt.c:(.text+0x1a6e): undefined reference to `__module_stream_send' collect2: error: ld returned 1 exit status make: *** [astra] Error 1 как вылечить. подскажите. все с правами рута, везде записывать изменять можно Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 26 января, 2016 · Жалоба Удалить папку с астрой и ещё раз распаковать и попробовать собрать. Если не поможет - на форум автора, он там отвечает. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
hRUst Опубликовано 26 января, 2016 · Жалоба Может быть user = "ххххх", pass = "ххх", попробуйте Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Eagle18 Опубликовано 26 января, 2016 (изменено) · Жалоба user = "ххххх", pass = "ххх", Не помогло. На форуме автора отписался, пока молчит Пересобрал астру. все прошло уже бюез проблем но при старте все равно точно такая же шибка вылазит Изменено 26 января, 2016 пользователем Eagle18 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Mistakila Опубликовано 8 марта, 2016 · Жалоба Помогите принять второй тпдер на астре c TBS6905. Ямал 55 11265 V принимается и стримится отлично. Когда хочу добавить второй транс 12732 V каналы сканит и находит, но маленький поток всего несколько кб. Сделать отдельный процесс астры для второго транса? перегружать сервер? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pashafil Опубликовано 9 марта, 2016 (изменено) · Жалоба Ямал 55 11265 V принимается и стримится отлично. Когда хочу добавить второй транс 12732 V............. у 11265 и 12732 разные гетеродины (диапазоны) у первого 22кГц откл., у второго вкл. и принимать одновременно можно только с конвертера с 2-мя и более независимыми выходами по отдельному кабелю Изменено 9 марта, 2016 пользователем pashafil Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Mistakila Опубликовано 24 марта, 2016 · Жалоба голова twin и отдельный кабель до каждого входа TBS. В моем случае перегруз помог. Сейчас работает отлично, thx! Как снимать уровни сигнала по snmp? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
spiudertv Опубликовано 28 марта, 2016 (изменено) · Жалоба добрый вечер. Ребята не подскажите как настроить Астру для EPG на Нтв+ Изменено 28 марта, 2016 пользователем spiudertv Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 28 марта, 2016 · Жалоба Поиск по астровому форуму даст ответ с примерами конфига. С документацией у астры не очень. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Zhenjka Опубликовано 8 августа, 2016 · Жалоба Никто не подскажет как в фоне запускать Астру? Вписал в автозапуск rc.local astra путь к конфигу, при загрузке лог в консоль льет. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 8 августа, 2016 · Жалоба Как обычно: КОМАНДА > /dev/null 2>&1 & Плюс лог можно вырубить в луаскрипте где все настройки приёма прописываете. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Sonne Опубликовано 9 сентября, 2016 · Жалоба Кто нибудь тестирует development версию астры с поддержкой HLS? Какие впечатления? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 10 сентября, 2016 · Жалоба ффмпегом нарежь и нгинх раздай. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Sonne Опубликовано 10 сентября, 2016 · Жалоба Мы поставили TBS MOI Pro принимаем два DVB-S и два DVB-T потока. Железка стоит под крышей, рядом с антеннами в небольшом ящике. Изначально планировали ставить ее только на прием потоков. Дальше уже поставим стримминг сервер. На ресивере курутится dvblast. Кандидаты на стримминг обычные: 1. Nginx 2. Wowza 3. Flussonic И вот, внезапно, увидили что во-первых, Астра хорошо работает и как ресивер на MOI Pro, а так же в новой версии пилят HLS. Почему бы не попробовать этот продукт, учитывая что мы запускаем свою станцию с нуля? Кстати, кто использует бесплатные версии Астры - как она справляется с задачей принять DVB поток и отправить его на стримминг сервер? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 10 сентября, 2016 · Жалоба В целом справляется, хотя мне пришлось написать костыль чтобы он при ошибках астру целиком перезапускал с принудительным закрытием всех адаптеров. Допилить приём DVB в свой msd руки всё никак не дойдут, хотя там по идее сложного ничего нет. Если HLS не нужен можешь msd_lite заюзать для раздачи. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Sonne Опубликовано 11 сентября, 2016 · Жалоба Увы, для раздачи нужен только HLS, там уже коммерческие потоки HLS из интернета, нужно подмешать бесплатные FTA каналы в виде готовых HLS ссылок. С ресивера на стриминг сервер каким протоколом лучше потоки отадвать при условии, что соединение прямым VLAN по Ethernet ? UDP/TCP, RTMP? Мультикаст включить или выключить? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Dimka88 Опубликовано 11 сентября, 2016 · Жалоба Мультикаст включить или выключить? Смысл использовать мультикаст в вашей схеме, я так понимаю основные его преимущества тут не нужны, можете http гонять. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Sonne Опубликовано 11 сентября, 2016 · Жалоба Мультикаст включить или выключить? Смысл использовать мультикаст в вашей схеме, я так понимаю основные его преимущества тут не нужны, можете http гонять. Речь скорее не про преимущества, а про надежность и удобство. Есть ли отличия в качестве приема в случае мультикаст/юникаст и http/udp? Например, dvblast умеет только по мультикасту но позволяет выбрать rtp/udp. Он бесплатный и совершенно не грузит систему. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 11 сентября, 2016 · Жалоба У себя удобнее мультикастом, но там свич нужен приличный, чтобы держал мультикаст групп больше чем у вас потоков и буфера позволяли не дропать при микробёрстах. RTP - по сути просто обёртка, толку с неё нет в таком применении. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Sonne Опубликовано 11 октября, 2016 · Жалоба В силу того что пока не удается добиться приемлемого качества и стабильной работы продолжаем эксперименты. 1. HLS на астре 5.63 работает плохо, изображение дергается, скачет темп и теряется синхронизация. Вобще непригодно. HTTP/Mpeg-http работает ровно 2. Убрали dvblast, поставили астру на ресивер. Визуально без объяснений качество отдельно Астры выглядит лучше, чем Dvblast + Astra. К сожалению, для ресивера MOI не выпущена версия с поддержкой HLS, так что опять гоняем HTTP. 3. Лишний раз убедились, что для радиосети - HTTP категорически не подходит. Нужен только HLS! И одна нерешенная проблема - все потоки хоть в связке Dvblast+Astra, хоть Astra standalone идут упорно в формате 4:3, хотя вес контент естественно 16:9. На VLC отображается все корректно, на наших кривых китайских приставках - сплюстнуто. Кто знает, может быть, возможно ли эту проблему решить на Астре? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 12 октября, 2016 · Жалоба 3. Лишний раз убедились, что для радиосети - HTTP категорически не подходит. Нужен только HLS! Потому что ты в сетях не разбираешься :) Нужно же тюнить систему а не просто так чего то поставил и дальше оно само. Начни хотя бы с замены cubic на htcp или hybla, отключению delayask, включению sack и увеличению буферов сокетов. И одна нерешенная проблема - все потоки хоть в связке Dvblast+Astra, хоть Astra standalone идут упорно в формате 4:3, хотя вес контент естественно 16:9. На VLC отображается все корректно, на наших кривых китайских приставках - сплюстнуто. Кто знает, может быть, возможно ли эту проблему решить на Астре? Астра в поток практически не лезет и помочь не сможет. Соотношение сторон закопано в скорее всего в заголовках mpeg2/mpeg4, хотя может и где то в mpeg2-ts есть, нужно освежить знания. То что приставки это не читают - проблема приставок и их настроек. Посмотри, может там где то 4х3 нужно на авто переключить. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Sonne Опубликовано 15 октября, 2016 · Жалоба 3. Лишний раз убедились, что для радиосети - HTTP категорически не подходит. Нужен только HLS! Потому что ты в сетях не разбираешься :) Нужно же тюнить систему а не просто так чего то поставил и дальше оно само. Начни хотя бы с замены cubic на htcp или hybla, отключению delayask, включению sack и увеличению буферов сокетов. Да вот ладно прямо так сурово. Sack - включен, за подсказку по замене алгоритма tcp - спасибо. После изучения различных алгоритмов решил включить westwood. Буфера и тюнинг OS будем делать под нагрузкой. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Sonne Опубликовано 15 октября, 2016 · Жалоба С ресивера на стриминг сервер каким протоколом лучше потоки отадвать при условии, что соединение прямым VLAN по Ethernet ? UDP/TCP, RTMP? Мультикаст включить или выключить? Я на свой вопрос отвечу. Очень не люблю, когда другие так не поступают. Когда на ресивере с DVB картами Астра раздавала поток udp/мультикаст, нагрузка на процессор была в несколько раз выше по сравнению с http mpeg-ts. Сейчас на дешевенькой MOI Pro c ARM процессором при трафике 30 Мбит, загрузка CPU составляет 10%, из которых 5% на Астру и 5% на систему. Честно говоря порадовался, что на коробочке Гигабитный порт эзернет :) Для раздачи udp/multicast был запущен штатный dvblast. После его замены на астру и переход на http/mpeg-ts качество картинки визуально выросло. На данный момент Астра стоит и делает то, для чего была предназначено изначально - принимает DVB сигналы и раздает их по http mpeg-ts. Вопрос о стримминге HLS пока остается открытым. На тесте три сервера: astra 5.63-test, nimble strimer, ffmpeg + nginx Пока что первые два кандидата просто обосрались перед третьим вариантом :) Если говорить про мультикаст, то для Астры его использовать не нужно. Если мы принимаем 20-30 потоков, то отдать их даже дважды на 2 сервера не составит труда даже для такой слабой железки как MOI PRO. Судя по всему тренд индустрии - полные переход на HTTP. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pppoetest Опубликовано 15 октября, 2016 · Жалоба Кстати, кто использует бесплатные версии Астры - как она справляется с задачей принять DVB поток и отправить его на стримминг сервер? Юзаем 4-ю версию с открытыми исходниками, чуть правленными под себя, проблем нет. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 16 октября, 2016 · Жалоба Да вот ладно прямо так сурово. Не принимай остро на свой счёт, тут большая часть форума в сетях не шибко понимает, только железки настраивать умеют. Sack - включен, за подсказку по замене алгоритма tcp - спасибо. После изучения различных алгоритмов решил включить westwood. Буфера и тюнинг OS будем делать под нагрузкой. Боюсь спрашивать как ты разные алгоритмы изучал и пришёл к такому выводу. ) Надеюсь не после чтения хабра и их тупых тестов? Сделай свои тесты и ты увидишь что вествуд даже не в первой пятёрке для иптв. Буфера крутятся не для того чтобы оно под нагрзкой работало а для того чтобы клиенту хорошо смотрелось, даже если он один с этого сервера смотрит. Для раздачи udp/multicast был запущен штатный dvblast. После его замены на астру и переход на http/mpeg-ts качество картинки визуально выросло. Это из области особенностей психики и восприятия :) Открою секрет: и астра и двбласт и 100500 других программ и железок делают одно и тоже: они настраивают тюнер на нужную частоту с нужными параметрами, после чего они вычитывают поток из него и выплёвывают в сеть, внутри потока они ничего не меняют, кроме служебки при демультиплексировании. Те на мпег2/4 и мпег3/ацц потоки они вообще никак не влияют. Говоря языком сетевиков стриммер это медиаконвертер который из DVB перекладывает в IP. Судя по всему тренд индустрии - полные переход на HTTP. Нет тренда. Производители железа делают что хотят. Большинство не парится и юзает обычный хттп потому что это ацки просто и надёжно в пределах своих сетей. И потому что это часть длна который один хер делать приходится. Яблоко двигает свой херо хлс потому что там крайне легко раздавать: и шифрование всего один раз и ретрансляция любым прокси или хттп сервером ну и потому что они делают железо и могут себе позволить такое. Для клиента это всё выглядит как полная херня уровня костыль на костыле. Собственно многие клиенты и написаны вообще не по спекам, они тупо выкачивают плей лист и потом выкачивают всё что в нём и болт они клали на всякие там тэги и шифрования и тп. Те если бы яблоко не делало свои фуфлоны и планшеты у хлс вообще бы не было шанса. Все остальные в пролёте потому что не могут потянуть сразу целый пласт в виде клиента и сервера своего, притом не технически потянуть а в плане доведения до конечных потребителей. Тут и всякие RTP/rtsp и rtmp которые не оправданно сложные и торрент тв. Только щас понял что не написал про мультикаст. Признаюсь - я не знаю истории возникновения вещания в нём. С точки зрения программиста плеера он даже в чём то легче хтпп. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...