Automatically exported from code.google.com/p/sams2
PHP C++ JavaScript C Shell CSS HTML
Permalink
Failed to load latest commit information.
contribs Fix freebsd rc.d script Jan 16, 2011
debian Update debian package - remove reference to sams.nixdev.net Jan 6, 2014
doc Remove reference to sams.nixdev.net Jan 6, 2014
etc изменено имя базы данных в sams2.conf на sams2db. Пофиксена проблема,… Oct 10, 2010
m4 Fix makefile generation for Debian Jan 16, 2011
php Добавлеа возмозжность очистки логов и данных о трафике из веб интерфейса Oct 24, 2014
plugins Fix makefile generation for Debian Jan 16, 2011
redhat изменено название samsdaemon на sams2daemon Aug 8, 2010
scripts Mark 2.0.x branche as new trunk Dec 14, 2008
spec Исправлено название samsredir на sams2redir Nov 29, 2013
src Добавление сообщение в логи при открытии на запись файла паролей в nc… Oct 6, 2014
suse изменено название samsdaemon на sams2daemon Aug 8, 2010
AUTHORS Prepare 2.0.0-rc1 version Oct 31, 2010
COPYING Mark 2.0.x branche as new trunk Dec 14, 2008
ChangeLog Remove reference to sams.nixdev.net Jan 6, 2014
INSTALL Mark 2.0.x branche as new trunk Dec 14, 2008
Makefile.am пофиксены ошибки установки в FreBSD Nov 23, 2010
Makefile.cvs Mark 2.0.x branche as new trunk Dec 14, 2008
NEWS Do not store squid log line in DB if size is 0. Correctly create http… Feb 25, 2010
README Исправлено название samsredir на sams2redir Nov 29, 2013
TODO Add delay pools description in documentation. Nov 13, 2009
configure.in пофиксены ошибки установки в FreBSD Nov 23, 2010
upgrade_mysql_db.sh Many bugfixes and improuvments. See NEWS for details. May 4, 2009

README

Если logrotate для файла access.log у squid настроен на маленький размер файла
и стоит дискретная обработка логов через длительный период времени, то возможна ситуация
когда access.log будет ротирован дважды в этот установленный период и часть трафика не будет учтена.

Схожая ситуация
Допустим, файл ротируется каждый час, а обработчик логов запускается каждые 40 минут
тогда имеем примерно следующее:
00:00 запущена вся система с нуля, файл access.log нулевой
      обработчик логов обрабатывает информацию за период до 00:00
00:40 обработчик логов обрабатывает информацию за период 00:00-00:40
01:00 файл access.log ротируется
01:20 запускается обработчик логов и должен обрабатывать информацию
      за период 00:40-01:20, но данные в интервале времени 00:40-01:00
      еще не обработаны, но уже в архиве, и не попадают в статистику

частичное решение проблемы:
в настройках logrotate для файла access.log
вставить строку
   prerotate
       /путь/к/файлу/samsparser
   endscript

при этом остается ситуация, когда, допустим, за секунду до начала ротирования
запустился samsparser и в момент ротирования работает, тогда обработчик, запускаемый
перед ротацией обнаружит уже запущенную программу, закончит работу немедленно и
файл будет ротирован в то время, когда значения считываются из него.

Во избежание этой проблемы можно добавить опцию --wait-myself
при которой обработчик не заканчивает работу если обнаружил уже запущенную копию,
а ждет ее завершения и, дождавшись, выполняет порученное задание.

----------------------------------------------------------------------------------------
для обнаружения утечек памяти можно использовать
valgrind --show-reachable=yes --log-file=samsparser.valgrind --leak-check=full ./samsparser
----------------------------------------------------------------------------------------
Таблица reconfig, возможные значения
proxy/shutdown      - Выполняется команда SHUTDOWNCMD из файла sams2.conf
samsdaemon/shutdown - Завершается работа демона samsdaemon
samsdaemon/reload   - Обновляются настройки и данные из файла sams2.conf и базы данных
squid/reconfig      - Обновляются настройки и данные из файла sams2.conf и базы данных,
                      обновляется конфигурационный файл squid с последующим его перезапуском.
database/export     - Содержимое таблицы squidcache записывается во внешний файл. Используется только для тестов(!)
----------------------------------------------------------------------------------------
Для того чтобы заработали плагины получения системной информации необходимо:
1) make -f Makefile.cvs
2) mkdir test
3) cd test
4) ../configure
5) make
6) su
  тут пароль
7) make install
8) mv /usr/local/lib/sams2/libloadavg.1.0.0 /usr/local/lib/sams2/libloadavg.so
9) /usr/local/bin/samsdaemon
10) exit (выход из рута)
11) mysql -u SAMSпользователь -p SAMSбаза_данных
    тут пароль
CREATE TABLE `sysinfo` (
 `s_proxy_id` INT              NOT NULL ,
 `s_name`     VARCHAR( 50 )    NOT NULL ,
 `s_version`  VARCHAR( 10 )    NOT NULL ,
 `s_author`   VARCHAR( 30 )        NULL DEFAULT 'anonymous',
 `s_info`     VARCHAR( 1024 )  NOT NULL DEFAULT 'not available',
 `s_date`     DATETIME         NOT NULL ,
 `s_status`   INT              NOT NULL 
);
UPDATE websettings SET s_version='2.9.9';
12) Дождаться когда пройдет время анализа access.log, если все прошло без ошибок,
    то в таблице sysinfo должна появится запись о подключенном плагине
    Этот плагин нужно активировать.
    update sysinfo set s_status=1;
13) Если поле s_date в данной записи меняется, значит плагин загружен и активен.
    Сам плагин тестовый и на самом деле всегда выдает одну и ту-же информацию.
    Его можно деактивировать:
    update sysinfo set s_status=0;
14) Выгрузить плагин пока можно только остановив демон, удалив файл плагина и снова запустив демон.
15) При возникающих проблемах рекомендую устанавливать уровень отладки 5
    /usr/local/bin/samsdaemon -v -d5 -l file:/var/log/samsdaemon --fork
    6й уровень еще выдержать можно, а выше это уже перебор
PS  Если не трогать структуру БД и оставить ее версию 1.9.9, но подключить плагин и включить режим
    verbose, то в сообщениях можно увидеть какой плагин подключен и что он сообщает
----------------------------------------------------------------------------------------
Как работает замена (перенаправление) адресов
1) Для начала необходимо убедится что структура БД позволяет это использовать, для этого
   нужно проверить существование поля s_dest в таблице redirect, и при необходимости добавить:
   ALTER TABLE `redirect` ADD `s_dest` VARCHAR( 128 ) NULL ;
2) Создаем группу перенаправления
   INSERT INTO `redirect` ( `s_redirect_id` , `s_name` , `s_type` , `s_dest`)
   VALUES ( NULL , 'GroupName', 'replace', 'http://www.ru');
3) Заполняем группу шаблонами
   INSERT INTO `url` ( `s_url_id` , `s_redirect_id` , `s_url`)
   VALUES ( NULL , '12', '*.mail.ru\\b'),
          ( NULL , '12', 'http://www.pisem.net/');
   12 - это значение s_redirect_id, полученное в п.2
4) Привязываем группу к шаблону
   INSERT INTO `samsdb`.`sconfig` ( `s_shablon_id` , `s_redirect_id`)
   VALUES ( '1', '12');
   12 - это значение s_redirect_id, полученное в п.2
   1 - идентификатор шаблона
5) Перечитываем конфигурацию в редиректоре
   squid -k reconfig
6) Теперь при попытке набрать адрес http://www.pisem.net/ или mail.ru, www.mail.ru и т.д.
   Редиректор перенаправит на http://www.ru
----------------------------------------------------------------------------------------
Изменение шаблона пользователя при блокировке
1) Проверяем структуру БД и при необходимости подправляем ее
   ALTER TABLE `shablon` ADD `s_shablon_id2` BIGINT( 20 ) UNSIGNED NULL ;
2) В существующем шаблоне в поле s_shablon_id2 прописываем идентификатор СУЩЕСТВУЮЩЕГО шаблона.
3) Пересобираем демонов, останавливаем, обновляем, стартуем.
4) Теперь работать это будет так:
   Если у шаблона, которому принадлежит пользователь, вторичный шаблон прописан (т.е. не NULL и не -1)
   То вместо блокировки у пользователя меняется статус на "Временно в другом шаблоне", и все параметры берутся
   из вторичного шаблона. Если же вдруг пользователь превысил лимиты и вторичного шаблона, то статус становится
   "Неактивный". Для того чтобы в таких случаях корректно работали ограничения по трафику, необходимо чтобы
   у самого пользователя стояло ограничение -1 (означающее что лимиты брать из шаблона). По окончанию периода
   лимита счетчики пользователя очищаются и статус меняется на активный.
5) Какие могут быть проблемы и неувязки:
   Q1) Разный тип авторизации основного и вторичного шаблона.
   A1) Сам дурак, думай что делаешь.
   Q2) Пользователи, временно находящиеся во вторичном шаблоне, так и не вернулись в основной, хотя
       период ограничения основного шаблона закончился.
   A2) Значит во вторичном шаблоне установлен другой период, они вернутся когда закончится период
       вторичного шаблона.
   Q3) Пользователя переместили в другой шаблон, а он игнорирует настройки нового шаблона.
   A3) Видимо, его переместили когда у него был статус "Временно в другом шаблоне",
       и у нового шаблона установлен вторичный. Поменяйте статус пользователя на "Активный".
----------------------------------------------------------------------------------------
В web интерфейсе можно выбрать скрипт, который нужно выполнить при отключении пользователей. Этот скрипт
должен находится вместе с файлами web интерфейса. Однако демоны могут быть установлены на другой машине
и не будут иметь доступа к этому скрипту. В свою очередь, из web интерфейса нет возможности
получить список таких скриптов, если они находятся вместе с файлами демонов. Таким образом, единственный
вариант получить этот список - это составлять его с помощью демона и складывать в БД. К тому-же на каждом
прокси сервере этот список может отличатся.
Следующая дополнительная таблица может решить эту проблему.
CREATE TABLE `udscripts` (
 `s_proxy_id` INT              NOT NULL ,
 `s_name`     VARCHAR( 50 )    NOT NULL ,
);
Заполняется таблица при старте демона и при получении команды на перечитывание настроек
(или реконфигурировании squid). Так-же возможен вариант заполнения (проверки актуальности) таблицы
при парсинге лог файлов squid.
----------------------------------------------------------------------------------------
При выборе отдельной группы пользователей в дереве пользователей, пропадает возможность добавить нового пользователя.
Было бы логичней эту возможность оставить, и по умолчанию предлагать добавить пользователя в эту группу.
То-же самое касается и очистки трафика пользователей.
----------------------------------------------------------------------------------------
Коды в samslog
10 - служебные сообщения от демонов (samsdaemon, samsparser, sams2redir)
04 - сообщения от администраторов (устарело)
03 - сообщения об изменении базы записей squid
02 - сообщения, связанные с изменением групп адресов
01 - сообщения, связанные с изменением состояния пользователей