Разработка динамических сайтов
SEO услуги
Управление контекстной рекламой

Вход на хостинг

Имя пользователя:*

Пароль пользователя:*

IT-новости

20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла

Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......

подробнее

30.07.2015 Ищем уникальный контент для сайта

Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......

подробнее

11.05.2015 Распространённые ошибки разработчиков сайтов

Не секрет, что в сети Интернет насчитывается миллионы сайтов, и каждый день появляются тысячси новых......

подробнее

    fi

    usernum=`$bindir/count_$count_prog $action $username`

    $bindir/count_$count_fw $action $usernum $address

    echo "[`date '+%d.%m.%y %H:%M'`] $action $username $address $usernum" >> $logfile

done

Назовем этот скрипт count_gate.

От скрипта, собирающего данные о пользователях, они в цикле передаются read через канал, к которому можно подключить этот скрипт как непосредственно, так и через tcp-клиент. Способ подключения определяет переменная «$connect».

Имя скрипта, ответственного за добавление/удаление правил, определяет переменная «$count_fw», а скрипта, осуществляющего взаимодействие с системой учета трафика переменная «$count_prog». В нашем случае это скрипты count_ipfw и count_ipa. Последний, запущенный с параметрами $action и $username, выдает номер правила, которое затем в качестве одного из параметров передается скрипту count_ipfw.

Переменная $$ содержит номер процесса скрипта. При запуске скрипт записывает ее значение в файл /var/run/count.pid. Встроив проверку на соответствие этого значения реально работающему процессу, можно предотвратить запуск более одного процесса count_user.

Прежде чем передавать данные на обработку скриптам count_ipa и count_ipfw, с помощью grep производится проверка на соответствие определенному шаблону. Получаемым данным не всегда можно доверять, особенно если они передаются по сети с другого сервера. Тем более, что все действия на стороне шлюза во внешнюю сеть производятся под root (необходимо для добавления/удаления правил ipfw).

Собранные данные вместе с датой и временем записываются в лог-файл.

Скрипт count_ipa, получив имя пользователя, должен выдать номер правила ipfw. Задача эта не самая простая, но ее можно сильно облегчить, если наложить на файл конфигурации некоторые ограничения. Во-первых, выделить файл конфигурации пользователей в отдельный файл и подключить его соответствующей директивой:

include {

    file(?) = /usr/local/etc/ipa.users

}

Во-вторых, на каждого пользователя должно приходиться по три строки, а номера правил должны последовательно возрастать на 1 с каждым правилом.

Два последних ограничения довольно необычны, но чтобы их снять, потребовалось бы существенно усложнить скрипт. Соблюдать же их просто: достаточно не редактировать файл вручную, а предоставить это скрипту:

#!/bin/sh

 

ipa_users="/usr/local/etc/ipa.users"

username_prefix="_"

 

action=$1 ; username=$2

 


Предыдущая страницаОглавлениеСледующая страница
 
[001] [002] [003] [004] [005] [006] [007] [008] [009] [010] [011] [012] [013] [014] [015] [016] [017] [018] [019] [020]
[021] [022] [023] [024] [025] [026] [027] [028] [029] [030] [031] [032] [033] [034] [035] [036] [037] [038] [039] [040]
[041] [042] [043] [044] [045] [046] [047] [048] [049] [050] [051] [052] [053] [054] [055] [056] [057] [058] [059] [060]
[061] [062] [063] [064] [065] [066] [067] [068] [069] [070] [071] [072] [073] [074] [075] [076] [077] [078] [079] [080]
[081] [082] [083] [084] [085] [086] [087] [088] [089] [090] [091] [092] [093] [094] [095] [096] [097] [098] [099] [100]
[101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120]
[121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140]
[141] [142] [143] [144] [145] [146] [147] [148]

+7 (831) 413-63-27
ООО Дельта-Технология ©2007 - 2023 год
Нижний Новгород, ул. Дальняя, 17А.
Rambler's Top100