1) База данных
+ 1.1) В таблице proxy поле s_userdomain должно быть s_usedomain
  1.2) В таблице proxy поля s_kbsize и s_mbsize поменять тип на integer
  1.3) В таблице websettings поле s_version должно соответствовать значению VERSION
       всего пакета, иначе никакие операции с БД производится не будут
+ 1.4) В таблице reconfig удалить поле s_number
- 1.5) В таблице squiduser в поля s_size и s_hit добавить атрибут UNSIGNED
+ 1.6) ALTER TABLE proxy  ADD s_autouser    INT           NOT NULL DEFAULT 0,
                          ADD s_autotpl     INT           NULL DEFAULT NULL,
                          ADD s_autogrp     INT           NULL DEFAULT NULL,
  1.7) Индексы в таблицах определены либо избыточно, либо неверно
       [таблица proxy]
       s_proxy_id: UNIQUE(s_proxy_id) - удалить, так как поле s_proxy_id уже является первичным ключем

       [таблица redirect]
       s_redirect_id: UNIQUE(s_redirect_id) - удалить, так как поле s_redirect_id уже является первичным ключем

       [таблица samslog]
       s_log_id: UNIQUE(s_log_id) - удалить, так как поле s_log_id уже является первичным ключем
       idx_samslog: UNIQUE(s_code, s_issuer)

       [таблица sgroup]
       s_group_id: UNIQUE(s_group_id) - удалить, так как поле s_group_id уже является первичным ключем

       [таблица shablon]
       s_shablon_id: UNIQUE(s_shablon_id) - удалить, так как поле s_shablon_id уже является первичным ключем

       [таблица squidcache]
       s_cache_id: UNIQUE(s_cache_id) - удалить, так как поле s_cache_id уже является первичным ключем
       idx_squidcache: UNIQUE(s_user, s_proxy_id)

       [таблица cachesum]
       idx_cachesum: UNIQUE(s_user, s_proxy_id) - переопределить как UNIQUE(s_proxy_id, s_date, s_domain, s_user)

       [таблица squiduser]
       s_user_id: UNIQUE(s_user_id) - удалить, так как поле s_user_id уже является первичным ключем
       idx_squiduser: UNIQUE(s_nick, s_name, s_shablon_id, s_group_id) - переопределить как INDEX(s_nick, s_shablon_id, s_group_id)

       [таблица timerange]
       s_trange_id: UNIQUE(s_trange_id) - удалить, так как поле s_trange_id уже является первичным ключем

       [таблица url]
       s_url_id: UNIQUE(s_url_id) - удалить, так как поле s_url_id уже является первичным ключем

  1.8) Когда очищать таблицу samslog?
- 1.9) Если в таблицу redirect вставить внешний ключ s_trange_id из таблицы timerange,
       то можно значительно расширить функционал. Т.е. появляется возможность независимо от шаблона
       задавать отдельные временные рамки для ресурсов в интернете.
       Применение: 1) запретить качать музыку (видео, ...) в рабочее время
                   2) запретить аську в рабочее время
                   3) Еще чего-нибудь запретить :)
  1.10) Допустимы повторяющиеся значения в таблице auth_param. Необходимо создание индекса
        CREATE UNIQUE INDEX idx_auth_param on auth_param ( s_auth, s_param, s_value );
        После введения этого индекса нужно убрать повторяющуюся запись, вносимую в файле dbclass.php во время создания БД.

2) WEB интерфейс
  2.1) Редактирование списка локальных адресов (доменов): не работает изменение
- 2.2) Нет возможности переименовывать группы пользователей
- 2.3) При изменении данных одного пользователя неверно устанавливаются
       первоначальные (существующие) Группа, Активность, Шаблон.
       Там-же предлагаю строку 'Пользователь активен' переименовать в 'Статус'
       (просто выглядит лаконичней)
- 2.4) При просмотре шаблона там где можно переместить других пользователей в текущий шаблон
       При выборе другого шаблона в выпадающем списке для получения списка пользователей,
       текущее значение выпадающего списка остается неизменным, хотя в списке пользователей появляются
       из выбранного шаблона.
- 2.5) Хотелка: При перемещении пользователя из шаблона в шаблон менять квоту пользователя на квоту нового шаблона,
       но только если текущая квота пользователя совпадает с квотой старого шаблона. Это как при перемещении во
       время просмотра шаблона, так и при редактировании данных одного пользователя.
- 2.6) При добавлении одного пользователя предлагаю либо убрать поле 'Разрешенный трафик', либо предлагать значение
       из выбираемого шаблона.
- 2.7) При просмотре одного пользователя, поле 'Активен' может иметь значения 'Да' и 'Отключен', нужно определится
       либо поле 'Активен' и значения Да/Нет, либо поле 'Статус' и значения Активен/Отключен/Заблокирован
- 2.8) Для выборки интересующей части из даты (времени) в PostgreSQL:
       select extract(hour from s_timestart), extract(minute from s_timeend) from timerange;
       а для выборки в MySQL
       select HOUR(s_timestart), MINUTE(s_timeend) from timerange;
  2.9) Не работает редактирование списка регулярных выражений
       PHP Fatal error:  Call to undefined function contextlisttray() in /usr/local/share/sams2-2.0.0/tray.php on line 118, referer: http://localhost/sams2/
- 2.10) При удалении шаблона не проверяется принадлежит ли он какому-либо пользователю
+ 2.11) При создании нового шаблона нельзя выбрать не IP авторизацию, хоть и можно выбрать при изменении.
  2.12) При редактировании 'WEB interface settings' не заполняются поля Kilobyte size, Megabyte size
  2.13) При редактировании настроек прокси сервера выпадающие меню 'Домен пользователя в access.log записывть буквами'
        и 'Имя пользователя в access.log записывать буквами' становятся недоступными только если ИЗМЕНИТЬ тип авторизации
        на NCSA или IP.
  2.14) При редактировании настроек прокси сервера если поле 'обрабатывать через' запрещено, то оно остается запрещенным
        до тех пор, пока не сохранить изменения и снова зайти в настройки прокси сервера.
+ 2.15) При редактировании настроек прокси сервера не анализируется/сохраняется поле
        'Сохранять данные о трафике в базе за последние N месяцев'
  2.16) При редактировании настроек шаблона 'Период лимита трафика' не заполняется, если установлен нестандартный период.
+ 2.17) В дереве нет списка временных границ, соответственно ни исправить ни удалить нельзя
  2.18) Хотелка: был удивлен случайно обнаружив что на некоторых страницах есть ссылки (переходы) на другие, было бы неплохо
        видеть это наглядно, а не шарить мышкой и ждать когда же курсор изменится
  2.19) При добавлении еще одного прокси сервера он не появляется в списке слева пока не перезагрузишь страницу (F5)
  2.20) Плагин SAMS Administrtion, при нажатии на кнопку редактирования настроек, появляется сообщение "Invalid query: Table 'samsdb.sams' doesn't exist"
  2.21) Удалить устаревшие понятия из web интерфейса
        Настройки Web интерфейса
            Разрешить доступ пользователей к своей статистике
            Размер Мегабайта, учитываемого вашим провайдером (byte)
  2.22) Перевести на русский язык раздел настройки авторизации
+ 2.23) Доделать импорт пользователей из OpenLDAP (список пользователей с указанной вторичной группой)
  2.24) При создании нового списка (redirlisttray.php) автоматически переходить в редактирование этого списка.
+ 2.25) Если статус пользователя "перемещен во временный шаблон", то показывать квоту вторичного шаблона и выделять ее желтым цветом.
  2.26) Добавить в настройки прокси сервера, в список редиректоров, элемент "сторонний редиректор"

3) Демоны
  3.1) Оптимизировать заполнение таблицы cachesum
       За основу взять следующий запрос:
       insert into cachesum (s_proxy_id, s_date, s_user, s_domain, s_size, s_hit) 
           select s_proxy_id, s_date, s_user, s_domain, sum(s_size), sum(s_hit) from squidcache
           group by s_proxy_id, s_date, s_user, s_domain;
+ 3.2) В цикле samsdaemon учитывать время обработки команды
  3.3) Продумать порядок работы с файлами конфигураций squid, rejik, squidGuard
+ 3.4) Переподключаться к БД каждый час
o 3.5) Определять директорию pid файлов на этапе конфигурирования
  3.6) Учитывать ли трафик при отказе в запросе? Если ответ от squid TCP_DENIED или UDP_DENIED,
       то все равно какой-то трафик расходуется, пусть и маленький
+ 3.7) При нестандартном периоде лимита не обновляется дата следующей очистки счетчиков ни в БД, ни в экземпляре
       класса Template
+ 3.8) При NCSA авторизации не создается файл со списком пользователей для использования в squid.conf
  3.9) Допустимы повторяющиеся значения в таблице squidcache, что может привести к некорректной статистике.
       Предпочтительней перенести этот пункт в раздел БД.
+ 3.10) Использовать pcrecpp вместо pcre, но для этого нужно убедится что повальное большинство дистрибутивов имеет
        в составе pcre-devel эту библиотеку.
+ 3.11) Учитывать proxy.s_usedomain при создании acl.
+ 3.12) Учитывать proxy.s_count_clean при окончании периода у шаблона.
+ 3.13) Период ограничения шаблона 1 день.
+ 3.14) Регистрирование и автоматический деструктор запросов
+ 3.15) Реализация delay_pools. Необходимо предварительно разработать структуру.
+ 3.16) Не учитывается уровень отладки, устанавливаемый через web интерфейс в БД.
  3.17) Запуск реконфигурации Squid только в случае реальных изменениях.
  3.18) Еще раз просмотреть работу со списками (TemplateList, UrlGroupList, ...). Может, имеет смысл создать базовый класс?
+ 3.19) Добавить ограничение по расширениям файлов если не используется встроенный редиректор.
- 3.20) Использовать параметр log_access в squid.conf для описания локальных адресов. (предотвратит попадание в access.log)
- 3.21) Использовать параметр url_rewrite_access в squid.conf для описания локальных адресов. (предотвратит лишнее использование редиректора)
  3.22) При использовании postgresql не обрабатываются строки с русскими символами (ERROR:  invalid byte sequence for encoding "UTF8")
        на версии postgresql-8.2.6-1 ошибка не воспроизводится. Устанавливать кодировку в демонах или на стороне сервера?

4) Документация
  1.1) Найти иконки различных дистрибутивов (плохо разбираюсь во всех линейках, необходимо уточнить):
     + RedHat
       FreeBSD
       Debian
       AltLinux
       SUSE
       Ubuntu
       ...
  1.2) отсутствует importfromsams1.html, authorization.html, syncwithntlm.html, usergroups.html

5) Разное
  4.1) В sams2.conf изменить MYSQLHOSTNAME на DB_SERVER, а DBNAME на DB_ENGINE
       Возможные значения параметра DB_ENGINE: MySQL, PostgreSQL, unixODBC, при этом регистр не должен иметь значения

  4.2) Зачем в sams2.conf параметр ODBC? Как работать с БД прекрасно описывает параметр DB_ENGINE
+ 4.3) После этапа configure выводить информацию о расположении конфигурационного файла, web интерфейса,
       демонов и документации
  4.4) переделать ldap.m4 под стиль pq.m4 (добавит возможность указания расположения файлов и расширит встроенный список директорий для поиска)

Увеличить размер url адреса до 1024 символов
для начала в таблице squidcache
---------------------------------------
решил таки посмотреть что за зверь этот самс, скачал, скомпилил - доку почитал, но так и не понял как мне реализовать свои правила на этой системе. смысл таков, мне надо сделать так, чтобы первые 200kb\s открывались для пользователей на максимальной скорости, потом все это резалось delay_pools до 18kb\s. далее ночью все ограничения снимались - и скачивалось бы на максимальной скрости...и с локальных сайтов круглые сутки качалось без ограничений
вот кусок конфига squid.conf, где все это я реализовывал...
########ogranicheniya skorosti######################
acl InternetUsers src "/usr/local/etc/squid/acl/InternetUsers"
acl schmel src 192.168.2.3
acl light src "/usr/local/etc/squid/acl/light_users"
acl day time 08:00-23:59
###################всем#####################
delay_pools 3
delay_class 1 2
delay_parameters 1 -1/-1 18000/200000
delay_access 1 allow InternetUsers day !schmel
delay_access 1 deny all
##############ночь###########################
delay_class 2 2
delay_parameters 2 -1/-1 -1/-1
delay_access 2 allow InternetUsers !day !schmel
delay_access 2 deny all
##################light########################
delay_class 3 2
delay_parameters 3 -1/-1 -1/-1
delay_access 3 allow light_url light !bad_urlpath !bad_url
delay_access 3 deny all
################################################
---------------------------------------

