General Satellite

На главную Отправить письмо Карта сайта
Добро пожаловатьКорпорация Дженерал Сателайт — россий­ская научно-производствен­ная ком­па­ния, пред­став­ляющая на российском и между­народ­ном рын­ке высоко­технологич­ное радио­электронное обо­ру­дование, характеристики кото­рого отве­чают самым высо­ким стандар­там. Надеж­ность и про­фессионализм за многие годы успеш­ной работы позволили компа­нии занять место лидера в теле­коммуникацион­ном бизнес-сообществе Рос­сии.

подробнее

Цифровой спутниковый ресивер GS-8300



 

DCCP - Альтернативный DVB демон

Демон для настройки и контроля карты, а так же патчи к squid для контроля трафика каждого пользователя и отключения его при исчерпании лимита.

Проект Юрия Пережилина. Cайт проекта ss14linux.narod.ru в настоящий момент недоступен. Вероятно НАРОД.РУ перестарался. С разрешения автора мы поместили эту статью, сделанную по материалам его сайта

Слово автору: 
07.03.2001

В связи с тем что пока работу карты SkyStar-1 под Linux'ом нельзя назвать удовлетворительной из-за многих факторов, я решил написать свою программную часть к этой карте. В частности анализируя работы демона DVBD я наткнулся на удивительный факт - этот демон в принципе ничего не делает во время своей работы: он настраивает карту при запуске, а во время только пишет в watchdog и создает лазейку в защите по порту 1060, работая в качестве сервера удаленной настройки карты. Т.к., большинство наших пользователей на имееют watchdog'ов и не пользуются возможностями дистанционной настройки карты, было решено написать демон который будет действительно следить за ее состоянием, проверять прохождение пакетов через DVB карту, в случае выхода через dial-up, после соединения соответствующим образом настраивать ее. Чтобы каждый раз не ковырятся в иcходниках вынести большинство настроек в файл конфигурации и т.п.

Как уже отмечалось выше, сайт проекта прикрыт (вероятно НАРОД.РУ постарался). Вы можете проследить историю развития DCCP в хронологическом порядке. Кроме того отдельной частью вынесены патчи к сквиду.

Хронология DCCP

22.05.2001 В чем отличие драйверов версии 0.9.x. (Из топика на OSKOMe)
  1. Изменены char-major устройств /dev/ost
  2. ioctl ("/dev/video",...,...) приведен к стандарту для bttv, как следствие исчезла необходимость в собственном модуле video.o вырезания поддержки вызовов VIDIOCSFRONT, VIDIOCSBITFILTER и т.п. , как следствие gVideo, dvbd, dccp (без опции -DNEWAPI в Makefile) и т.п. оказались неработоспособны (кстати из 0428 имено и убрали gVideo). Теперь смотреть каналы - используем что-нибудь типа KWinTv + tuxzap для передлючения каналов
  3. Только для ядер 2.4.0+ (хотя проверял компиляцию только на 2.4.3 и 2.4.4)
17.05.2001 Поставил этого монстра - ядро 2.4.4. Первые впечатления - УЖАС !!! Ничего не работает :). Начал детально изучать драйвера версии 0.9-20010407, в результате получился patch-0.9-20010407. Этот патч предназначен для корректного выставления mode=0x1c в DVB.C для SCT фильтра и изменяет логику работыdvb_net. Изначально это работало - автоматически выставлялся фильтр для dvbпри изменение его MAC адреса: фильтр брался из MAC. Я убрал это для корректной работы dccp.
17.05.2001 Написал поддержку /dev/ost/demux для демона dccp. Теперь при компиляции с опцией -DNEWAPI (по умолчанию) для работы не используется /dev/video а используются новые девайсы из /dev/ost/  
Внимание !!! В связи с тем что НТВ выключила свои прокси, я не знаю работает ли фильтрация пакетов и вообще способен ли dccp выставить фильтры правильно! Тем кто работал на EOL с dccp проверьте работоспособность демона с новым API ! Для этого совсем не обязательны драйвера версии 0.9 и ядро2.4.4 достаточно 0.8.2, но в файле dvb.c надо найти строчку mode=4 и изменить на mode=0x1c.
16.05.2001 Дописал демона dccp. Теперь он стал более информативен с консольном режиме. Из нововведений : использует ncurses для рисования всякой информации, может компилироватся для использования с новыми устройствами вместо /dev/video (не используйте этот фьючес: почемуто драйвера начинают часто виснуть) - DNEWAPI, по пожеланиям трудящихся ведестя отдельный log - /var/log/dccp.log,исправлены все ошибки работы с фильтрами - теперь можно пользоватся смело, в результате исправления появилась опция в Makefile -DOLD_MASK, новые возможности: после значения timeout заданого в dccp.conf начинаем посылать icmp(ping'овать)-пакеты на хост pinghost, после значения timewait и если не пришло в ответ ни одного пакета рестартуем фильтры.
16.05.2001 Возникла потребность прикрутить к squid'у учет трафика на каждого пользователя, анализ этой проблемы показал, что ни чего подобного ни кем не было сделано (как я понял) и в срочном порядке пришлось его прикручивать.Подробнее...
22.03.2001 На linuxtv.org появились драйвера версии 0.8.2. В драйверах под нажимом Nokia(для своего linux-терминала), появилась много косметики по работе с изображением. К сожаления проблема с багами по прежнему стоит. В частности все моменты касающиеся работы с фильтрами через /dev/ost/demux не работоспособны ввиду неправильной установки filter_mode (=4). Может существуют SkyStar'ы которые работают с этим или 0x5020 filter_mode, но мой признает значения filter_mode только 0xC-0xF, 1XC-1XF. Драйвера на базе версии 0.8.2 с моими изменениями (другие Makefil'ы) можно взять в DOWNLOAD
22.03.2001 Появилась информация о возникновение Kernel Panic при запуске демона на ядре 2.4.2 и под дровами 0.8.2. Решил проверить : под дровами 0.8.2 на ядре 2.2.18-mdk21 демон живет нормально. Сегодня буду ставить ядро 2.4.2 может в нем дело ? Результаты проверки сообщу в понедельник, т.к. Интернет есть только на работе.
07.03.2001 Обнаружил баги в свеженаписанном демоне DCCP:
Первый касался неправильной работы с маской
Второй был обнаружен благодаря Юрия Пережилина. - не устанавливался MAC для карты в отсутствие динамических фильтров. К сожалению я не имею выделенной линии и сижу на модеме, поэтому на 100% без ошибок демон работает только на dial-up. Если у кого есть время и желание, то буду рад сотрудничеству.
28.02.2001 А это была собственно говоря первая версия демона. Что она могла в отличие отdvbd? :
  1. Многие настройки , в частности касающиеся частоты конвертера и фильтров, ьыли перенесены в dccp.conf. Внимание : проверяйте эти настройки, т.к. я встречался с двумя конвертерами у одного из них LOF=10600000Hz (мой) у другого LOF=10750000Hz (у большинства пользователей NTVI). Перед запуском демона обязательно проверьте эти настройки.
  2. Демон проверяет наличие динамического девайса (в смысле : если выход по ppp0 то он может пропадать и вновь появлятся , но уже с другим адресом) и соответствующим образом настраивает карту.
  3. Следит за прохождением пакетов через dvb0 и переустанавливает фильтры и корректирует частоту, если с момента последнего прихода пакета прощло времени больше timeout (задается в dccp.conf, если поставить 0 то не проверяет).
  4. В большинстве случаев в исходники в принципе лезть не надо.

Патчи к SQUID

16.05.2001 Возникла потребность прикрутить к squid'у учет трафика на каждого пользователя, анализ этой проблемы показал, что ни чего подобного ни кем не было сделано (как я понял) и в срочном порядке пришлось его прикручивать.

Как это работает : 
squid настраивается на proxy_auth 
acl users proxy_auth REQUIRED
http_access allow users
authenticate_program /usr/bin/ncsa_auth /etc/squid/users/passwd

Внимание !!! каталог /etc/squid/users должен быть создан руками (mkdir /etc/squid/users) и принадлежать тому пользователю, под которым запуcкается squid (у меня это squid : chown squid.squid /etc/squid/users).

Формат файла passwd: 
login:password:expired_date:* 
где:

  • login - login пользователя proxy
  • password - его пароль
  • expired_date - дата окончания срока действия login'а

двоеточия обязательны !!!, владелец файла тот же что и для каталога users, режим доступа 700 (chmod 700 passwd)

создать каталог /etc/squid/users/log, владелец тот же что и для users: здесь хранятся log'и авторизации на сервере.

далее берем в DOWNLOAD редиректор и настраиваем его 
redirect_program /usr/bin/rredir (или куда вы его положили)

зачем это надо: 
ВНИМАНИЕ !!!! Эти утилиты были написаны на скорую руку поэтому вся их конфигурация правится в тексте !!!!
Программа rredir получает URL затребованый пользователем и проверяет наличие файла /etc/squid/users/<login пользователя> на предмет его существования, если его нет то squid'у направляется URL гласящий что доступ запрещен (URL задается в rredir.c #define denied_url <URL> (у меня "ftp://192.168.0.254/etc/denied.htm)), если такойфайл есть то читаем его (там содержится всего одна строка limit  <кол-во байт>) и если <кол-во байт> меньше1024 то отсылаем его на denied_url, если все внорме то идем на затребованый пользователем URL.

И наконец самое сложное - patсh squid 
В файле client_side.c :

void 
 
logTraffic(AccessLogEntry * al)

#define user_dir "/etc/squid/users" 
FILE *fp; static char fname[256]; 
snprintf(fname, 255, user_dir"/%s", al->cache.ident); 
fp = fopen(fname, "r"); 
if (fp != NULL) 

    int limit; 
    char lbuf[256]; 
    char *com, *lim; 

    limit = 0; 
    while (fgets(lbuf, 256, fp) != NULL) 
    { 
       if ((lbuf[0] =='#') || (lbuf[0] == ' ') || (lbuf[0] == '\t') || (lbuf[0] == '\n')) continue; 
       com = strtok(lbuf," ") ; 
       lim = strtok(NULL,"\n"); 
       limit = atoi(lim); 
   } 
   fclose(fp); 
   limit -= al->cache.size; 
   fp = fopen(fname, "w"); 
   fprintf(fp, "limit %d", limit); 
   fclose(fp); 
}
return;
}

Далее ищем функцию httpRequestFree и в ней accessLogLog(&http->al) 
и после этого вызова добавляем logTraffic(&http->al), компилируем squid и теперь отлаживаем т.к. все сырое , но у меня работает. 

Внимание !!! Владельцем пользовательскиз файлов тоже должен быть squid !!! Формат пользовательских файлов я приводил выше, режим доступа к файлам 775.

Теперь после запуска squid пользователя просят ввести login и password после этого проверятся его account и еслиlimit удовлетворительный передается его URL, после загрузки URL, limit уменьшается на кол-во полученых байт.

Download

dccp2.tar.gz Новый демон для карты SkyStar-1
patch-0.9-20010407 Патч для драйверов 0.9-20010407 для корректной работы демона dccp.
squid-add.tar.gz Набор для squid'а
dccp.tar.gz Старый демон для карты SkyStar-1
driver-0.8.1.tar.gz Драйвера для карты SkyStar-1 версии 0.8.1 с измененными Майкфайлами, скриптами и файлом програм для gVideo 
driver-0.8.2.tar.gz Драйвера для карты SkyStar-1 версии 0.8.2 с измененными Майкфайлами, скриптами и файлом програм для gVideo. Что бы установить залогиньтесь как root, распакуйте, сохраните копию файла /etc/rc.d/rc.modules, войдите в распакованый каталог и сделайте make. Отредактируйте файл /etc/dccp.conf и запустите daemon : /etc/rc.d/init.d/dccp start. После указанных операций все должно работать.
Комментарии? Поправки? Дополнения? 
dvbnet@msk.gs.ru
О корпорации|Продукция|Техническая информация|Онлайн поддержка|Новости|Статьи|Сервисное обслуживание|Международное сотрудничество
Copyright © 2004 «General Satellite».
All rights reserved.


Rambler's Top100 Яндекс цитирования