RCS file: /usr/src/CVS/forum/Forum.pm,v Working file: Forum.pm head: 1.23 branch: locks: strict access list: symbolic names: Many_forums_tune: 1.23.0.10 main: 1.23.0.8 CGI_tune: 1.23.0.6 MySQL_tune: 1.23.0.4 Sybase_tune: 1.23.0.2 start: 1.1.1.1 gosha: 1.1.1 keyword substitution: kv total revisions: 99; selected revisions: 28 description: ---------------------------- revision 1.23.8.28 date: 2001/09/27 21:35:46; author: gosha; state: Exp; lines: +18 -22 Проблеммы с перекодировкой при передаче параметров вида %99%ha теперь все передается запакованное unpack'ом Глюк при построениии SQL-запрса в default_menu Удалил за ненадобностью процедуру pack_esc ---------------------------- revision 1.23.8.27 date: 2001/09/26 20:23:30; author: gosha; state: Exp; lines: +54 -48 В group_status была ошибка в SQL запросе. При запвковке данных в pack_esc не перекодировались ланные Перекодировка параметров производится в процедуре init_param При вызове caller'а теперь пишется еще имя файла. Автоматическое определение кодировки запроса включается если включен флаг CFG_AUTO_DETECT или не установлен флаг HTTP запроса HTTP_ACCEPT_CHARSET Добавил флаг CFG_DEBUG - все SQL запросы пишутся в лог. ---------------------------- revision 1.23.8.26 date: 2001/09/24 21:40:27; author: gosha; state: Exp; lines: +3 -3 В init_user делался update таблици FORUM_USERS для READ_ONLY_ID пользователя ---------------------------- revision 1.23.8.25 date: 2001/09/24 17:09:45; author: gosha; state: Exp; lines: +11 -10 Изменения в SQL запросе: при просмотре в режиме 5 и 6 теперь парсится NIKE человека открывшего тему... В read_msg3 парсится AUTHOR - имя пипла начавшего тему. В find_user не правильно отрабатывалось отсутствие параметра find_user В find_group: при каждом обращении с введенным find_group делался SQL запрос на подсчет числа этих групп... ---------------------------- revision 1.23.8.24 date: 2001/09/21 17:15:50; author: gosha; state: Exp; lines: +529 -1161 В sub handler() { ... } убрал скобки [()] Ошибка в init_user : напутано с переменными USER_HASH_PSWD и USER_PSWD Пререписал redirect : теперь не делается Location а все передается локально Заменил генерацию временного пароля. В check_roel добавил проверку на возможность выполнения команды : 16384 Переписал param_check Переписал init_user, init_group,... короче почти все переписал (patch ~ 80kb)... Переписал check_role ---------------------------- revision 1.23.8.23 date: 2001/09/16 21:50:59; author: gosha; state: Exp; lines: +128 -93 Не обрабатываись _RULE_ACCESS'ы... Опять медитировал над расстановкой прав доступа. Добавил ACCESS_TID В GROUPS_FORUM добавил _RULE_ACCESS'ы В check_role добавил флаг : 32768 - режим доступа: read-only/off ---------------------------- revision 1.23.8.22 date: 2001/09/14 20:50:11; author: gosha; state: Exp; lines: +13 -4 Были проблеммы с длинными ENV переменными,добавил процедуру get_crc - возвращает crc ENV переменных (REMOTE_ADDR,etc) ---------------------------- revision 1.23.8.21 date: 2001/09/13 20:38:31; author: gosha; state: Exp; lines: +33 -19 Траблы с локалью: Не устанавливалась локаль, BEGIN {} вызывался раньше setlocale, и umask... при вырезаниии процедур в require, не пользовалось 'use locale' в главном скрипте... --- Траблы с crypt'ом: сделал проверку на '$1$' если ^$1$ то salt = substr($...,0,index($..,'$',3)) иначе salt = substr($...,0,2) --- В groups_info - убрал лишнюю переменную $group В MySQL_tune версии замечена ошибка : вместо html_quote использовалось HTL_RAW... перекодирование ---------------------------- revision 1.23.8.20 date: 2001/09/11 17:10:45; author: gosha; state: Exp; lines: +7 -4 В def_menu не правильно парсился шаблон с JS_TIME: JS_TIME => join(',', map {($_=sprintf '%2.2d',$_)=~s#(.)(.)#$1,$2#;$_} (int($self->{CFG_PSWD_LIVE}/3600)),(int(($self->{CFG_PSWD_LIVE}%3600)/60)),($self->{CFG_PSWD_LIVE}%60))})); --- Прикрутил POSIX::locale --- В user_add : правильнее былоб написАть raw_pswd вместо pswd - ну и написал... ---------------------------- revision 1.23.8.19 date: 2001/09/08 21:49:37; author: gosha; state: Exp; lines: +498 -138 Ошибки, опечатки... --- Прошелся по правам доступа --- Во всех шаблонах вывода сообщений парсится TID --- Добавил проверку на закрытые трэды. 8192 --- Добавил перекодировку документов 'на лету' --- Добавил проверку кодировки бровзера Добавил переменную CFG_SOUREE_CP - кодавая станица данных на сервере CFG_DEST_CP - отдаваемая кодовая страница CFG_CONVERT - процедура перекодировки --- Кодовая страница может определятся по полю 'code_page_checker' --- Доделал skin_add: команда 41 --- Прикрутил анти-мат --- При ответе не проверялись права на группу --- Добавил ANTI_MAT в GROUPS (Парсит anti_mat => ANTI_MAT) --- Добавил TID в MESSAGES (правда пока не пользую) --- Также добавил cfg=8 При просмотре сообщений добавил cfg=7 - вывод дерева начиная с... При администрировании сообщений добавил cfg=7 - вывод дерева начиная с... --- При поиске _НЕЛЬЗЯ_ построить ветку... --- В check_role добавил проверку на spam 4096 Добавил LAST_POST проверку, и переменную в скрипт CFG_POST_TIME_LIMIT интервал в секундах. Добавил 26^ - сообщение - выводится при посылке спама...(частых сообщений) Баги при попытке коннекта к БД Не работал ананимный вход. При просмотре информации о группах/пользователях теперь не парсится дата. Добавил редирект. Те если с первой страници сразу захочется куданить пойти (не на def_menu) то надо это пользовать. Заменил cmd 1111 на 1001 Добавил cmd 1002 - редирект. В question.src,answer.src - добавил парсинг ACCESS_HTML_TAG ---------------------------- revision 1.23.8.18 date: 2001/09/03 18:57:51; author: gosha; state: Exp; lines: +2 -2 Баги при попытке коннекта к БД ---------------------------- revision 1.23.8.17 date: 2001/09/02 13:10:23; author: gosha; state: Exp; lines: +24 -15 В db_connect небыло проверки на существование DBH --- В new добавил проверку на максимум передаваемых данных $CGI::POST_MAX = $self->{CFG_MAX_DATA_SIZE} * 10 --- В init_param все поля проверяются на максимальную длинну $self->{CFG_MAX_DATA_SIZE} --- В upload_file_save не делался unlock закачиваемого файла. --- ---------------------------- revision 1.23.8.16 date: 2001/09/01 22:27:37; author: gosha; state: Exp; lines: +236 -87 В read_msg3 убрал 2 переменные $subj,$date ---- При поиске разделитель списка/интервала должен быть с пробелами с обоих сторон ----- В find_msg.src добавил еще один и reply_to regXX параметр. ----- Добавил в поиск параметр : Ответы на... ----- В check_role при флаге 16 проверяется параметр raw_pswd ----- В default_menu при 1 парсится raw_pswd, при 2 pswd ---- Ввел параметр raw_pswd ----- В new_user_profile.src парсится PSWD в sub new_user_profile_save,edit_cfg_save,group_cfg_save, upload_file_save передаестя 2 пароля хеш - pswd, и некриптованный raw_pswd ----- В main.src добавил секцию для составления списка всех skin'ов: в ней одно вложение DATA в 0 секцию main.src добавил вложение SKIN_ALL - в него пишется строка пропарсинная через 1 секцию (DATA, etc...) Добавил вложение RAW_NIKE - имя пользователя из куки raw_nike или ил параметров raw_nike ----- При редактировании конфига схемы не парсились DENY_USER DENY_GROUP ----- Убрал study из parse_template ----- В new_user_profile убрал description && full_name edit_group_cfg \ } - парсят параметры. edit_cfg / ----- Начал пользовать CGI.pm ----- Параметры между сессиями можно передавать как в cookie так и в hidden_type полях. ----- Поддержка Cookie : ставятся 4 штуки nike, pswd, skin, raw_nike ----- Добавил новую комманду 1111 - вызов def_menu с параметроми nike - id pswd - hash_pswd ----- Написал процедуру pack_esc - для запаковки в ESC последовательность. ----- При редактировании схемы вызывалась проверка группы. ----- В конфиге схемы в секции ACCESS_UPLOAD лежит список файлов разрешенных для загрузки на сервер. ----- Добавил процедуры UPLOADA файлов - они даже работают... ----- ---------------------------- revision 1.23.8.15 date: 2001/08/29 16:40:52; author: gosha; state: Exp; lines: +12 -8 Забыл про один __LINE__ Введенный '&' заменяется на '&' Параметр ACCESS_UPLOAD добавил в конфиг схемы. При парсинге шаблонов включил study ---------------------------- revision 1.23.8.14 date: 2001/08/28 22:33:14; author: gosha; state: Exp; lines: +7 -15 в messages.cfg удалил ^25 26 стал 25 При ошибке открытия файла юзеру выводится одинаковые сообщения.... ---------------------------- revision 1.23.8.13 date: 2001/08/28 21:25:42; author: gosha; state: Exp; lines: +20 -20 Заменил my_undef с одним параметром на undef ---------------------------- revision 1.23.8.12 date: 2001/08/28 20:28:36; author: gosha; state: Exp; lines: +659 -490 в sub question_save убрал s#\x00## убрал переменную $to в sub answer Заменяю выборку из 2 таблиц в read_msg2 на выборку из 1 таблици, поэтому больше не парсится mail_to Добавил возможность конфигурировать группу, права на skin/user удалил $r В edit_cfg если _ВСЕГДА_ после редактирования устанавливался ACCESS_USER Добавил во все SQL таблици по поли DEL_STATUS В FORUM_GROUPS добавил 4 сколонки: ACCESS_SKIN DENY_SKIN ACCESS_USER DENY_USER Отказался от модуля Apache -------------------- Баг : нет пользователя - нет сообщения... --- Уже есть Баг : при использовании mod_perl не через handler ни чего не работает потому что не вызывается handler() : ну и #%@ с ним... ---------------------------- revision 1.23.8.11 date: 2001/08/27 16:08:31; author: gosha; state: Exp; lines: +602 -455 В answer при цитировании не квотилось сообщение, можно было поставить например Ввел эксперементальный параметр [ ACCESS_HTML_TAG ^ img,p,i ] - для разрешения пользования некоторыми html тегами. Если стоит '*' то считается сообщение не квотится. Если пользователь отвечает на свое сообщение то с ним делается update времени и тела сообщения вместо insert'а. В messages.cg - добавил 24^ - проверка на админа схемы 25^ - ошибка при работе с файлом 26^ лимит максимальной подписки. Заменил LOCK_EX на LOCK_SH в файлах открываемых на чтение ---- Добавил переменные в forum.cfg: SKIN_ADMIN : ACCESS_CONFIGURE --- Ошибка в init_param : удалялась ',' --- Добавил переменные в скрипт : HTML_NOT_CLOSE_TEG : MAX_SUBSCRIBE --- Максимальное число сообщений 100 (load_messages) Максимальное число цветов && стилей 50 (load_colors) Максимальное число секций SRC 10 (load_src) --- GROUP_ID, USER_ID,MESSAGE_ID должно быть больше или равно 1 --- init_param: убрал поддержку multi_param (name=1,name=2,...) --- Сделал проверку на максимум подписанных групп Сделал хранение криптованного пароля... Убрал из my_undef self и r ---- check_role ИД Проверка 1 вывеси сообщение об ошибке 2 юзер 4 пароль 8 группа 16 некриптованный пароль 32 админ группы 64 адресат 128 рид онли юзер 256 права на пользователя для схемы 512 права на группу для схемы 1024 проверка на администратора схемы 2048 права на чтение сообщений в заданном формате --- ---------------------------- revision 1.23.8.10 date: 2001/04/05 17:24:07; author: gosha; state: Exp; lines: +69 -43 Переписал test_skin ---------------------------- revision 1.23.8.9 date: 2001/04/05 16:05:24; author: gosha; state: Exp; lines: +61 -39 В default_menu список групп теперь парсится через шаблон. пофиксал вывод html символов в input полях форм ---------------------------- revision 1.23.8.8 date: 2001/04/04 21:47:17; author: gosha; state: Exp; lines: +262 -184 В таблици добавил REPLY_TO_REAL для сохранения целостности дерева. В forum.cfg добавил переменные USER_RULE_ACCESS,GROUP_RULE_ACCESS которые могут принимать или 0 или 1, 0 - всем пользователям кроме ACCESS_USER (или всем из DENY_USER) доступ только ридонли 1 - всем пользователям кроме ACCESS_USER (или всем из DENY_USER) вообще ни какого доступа. В check_role добавил код 256 проверка на разграничение доступа read_only/no access Теперь так выглядят коды проверок check_role: 256 разграничение на использование групп/логинов ...(???) 128 рид онли юзер 1 вывеси сообщение об ошибке 2 юзер 4 пароль 8 группа 16 некриптованный пароль 32 админ группы 64 адресат ДЫРА в безопасности: можно _БЫЛО_ использовать пароль по истечении времени его жизни В SQL таблицу FORUM_MESSAGES добавил CHANGED для фиксирования времени изменения (удаления/восстановления) сообщения В сырки для просмотра сообщений через cfg=5 || cfg=6 добавил темплайт DATE дата последнего сообщения. Теперь read_msg2 тоже строит нити... Изменил имя процедуры create_tree на create_tree_1 ---------------------------- revision 1.23.8.7 date: 2001/04/02 17:59:40; author: gosha; state: Exp; lines: +95 -95 Теперь все ошибки = 0, для их инициализации есть софтина unpack_error_num_counter ---------------------------- revision 1.23.8.6 date: 2001/04/02 17:33:25; author: gosha; state: Exp; lines: +223 -84 Вместо процедур new_pswd и new_pswd_save теперь: new_user_profile и new_user_profile_save соответственно Из сырков удалил new_pswd.src В сырки добавил new_user_profile.src Добавил проверку емаила на rfc822, и на отсутствие коментариев Исправил доку для соответствующих изменений Убрал из new закоментированные переменные В init_param заменил распознавание POST запроса В messages.cfg добавил еще одну строку: 23 - правильнлсть емаила. Начинаю переписывать построение деревьев. ---------------------------- revision 1.23.8.5 date: 2001/03/30 15:51:54; author: gosha; state: Exp; lines: +30 -21 В raed_msg, answer, admin добавил проверку на наличие аргумента group В read_msg,admin при вызове процедуры read_msg2 при формировании не учитывалось наличие параметра 'group' В скины добавил TO_NIKE для вывода пользователя, который послал сообщение Записал все в доку, Начал писать скрипт для инсталяции ---------------------------- revision 1.23.8.4 date: 2001/03/29 14:46:41; author: gosha; state: Exp; lines: +139 -26 Баг при вызове процедуры admin_save не очищался массив SQL_ARGS Заменил замену кавычек на quote При загрузке конфигов,сырков и пр теперь если не найден файл от текущей схемы используется файл от схемы по умолчанию. При просмотре информации о группах добавил поиск html = find_group template = FIND_GROUP Добавил процедуру user_info Изменил SQL таблици: в FORUM_USERS добавил DESCRIPTION для описания пользователя. Пофиксал баг со CFG_DEFAULT_SKIN => SKIN_DEFAULT. ---------------------------- revision 1.23.8.3 date: 2001/03/27 18:11:52; author: gosha; state: Exp; lines: +70 -49 Баг при вызове процедуры admin_save не очищался массив SQL_ARGS Заменил замену кавычек на quote При загрузке конфигов,сырков и пр теперь если не найден файл от текущей схемы используется файл от схемы по умолчанию. ---------------------------- revision 1.23.8.2 date: 2001/03/25 14:03:05; author: gosha; state: Exp; lines: +3 -2 Баг при вызове процедуры admin_save не очищался массив SQL_ARGS ---------------------------- revision 1.23.8.1 date: 2001/03/24 22:45:52; author: gosha; state: Exp; lines: +158 -118 В find_msg вернулась поддержка cfg 5 и 6 Поддержка в конфиге DENY_USER и ACCESS_USER по анологии с группами Пофиксал баг в SQL строке в процедуре find_msg_go Теперь можно регламентировать время хранения кэша для разных секций =============================================================================