forked from PavelVinogradov/sams2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTODO
187 lines (170 loc) · 18 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
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
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
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
################################################
---------------------------------------