CHANGES Last Modified: $Date$ *** 2003 年末 〜 2004 年初め オーバホールキャンペーン終了 *** 2004/02/27 コマンドの返事を返す際に、より正しい言語選択を行なう 必要なら(というより判断がつかないなら)、複数の言語で返す。 FML::Process::Kernel fix comments on reply_message() around. reply_message() handles request when the current process runs under MTA. fix regexp optimization. define __convert_message_nl() and use it. allow loader program uses reply_message() method. select proper language for reply message based on Accept-Language, Content-Type and language preference order. use plural languages if needed. FML::Process::Utils define lang_to_charset(). fix return value for some methods. use "print if $debug" in some cases. 2004/02/26 variables define $language_preference_order etc/command_line_options new option -o key=value which overrider configurations. you can use duplicated -o options e.g. -o key1=value1 -o key2=value2. remove not used -params options FML::Process::Kernel new option -o key=value which overrider configurations. you can use duplicated -o options e.g. -o key1=value1 -o key2=value2. more proper charset handling based on Content-Type::field. change Mail::Message::Encode to Mail::Message::String in message handling. implement get_preferred_languages() method. FML::Process::Utils get_charset: fix default charset handling implement set_language_hint(), get_language_hint(). get_accept_language_list() returns [] not [*] when no data. FML::Error::Cache firstly, constructor() expires too old cache. Mail::Message enhance trap regexp for charset=... Mail::Message::Charset fix comments Mail::Message::Language handle X-Accept-Language: Tie::JournaledDir new() expires too old cache files. 2004/02/15 FML::Article::Spool check input data more. Mail::Message::String add new methods: +charcode_convert_to_internal_code(). +charcode_convert_to_external_charset(). we need to ignore original charset in some cases. So, if "=?sjis=..." is input, we return it as "=?iso-2022-jp...". more debug codes. FML::Process::Kernel ui_message() prefers $msg_args->{level} if specified. 2004/02/13 FML::Article::Summary ensure initial value of $min and $max 2004/02/06 FML::Header expand special regexp in tag before tag substitution. Mail::Message::Subject update $subject only if subject is rewritten. FML::Article::Summary switch to new Mail::Message::* framework. Mail::Message::Charset implement message_charset_to_language() method. Mail::Message::String use mothod-style more even internally. speculate in and out code::charset as could as possible. implement method::charcode_convert(), get_charcode(). 2004/02/04 FML::Command::User::chaddr vaildate address type variables. Mail::Message::String change in-core internal variables. implement set(), get(), set_mime_charset(), get_mime_charset and unfold(). Mail::Message::Address modify on-memory variable naming. implement as_str(), substr(). Mail::Message::Date new() can handle both unix time and Date::style string. implement set(), unixtime(). speculate_timezone() -> _speculate_timezone(). yet another style methods::as_mail_header_style(), as_YYYYMMDD(), as_YYYYxMMxDD(), as_current_time(), as_precise_current_time(), as_stardate(), and as_unixtime(). FML::Article::Summary FML::Header modified to use new Mail::Message::* framekwork. 2004/02/03 IO::Adapter IO::Adapter::File fix meta escape needed in finding key. 2004/02/01 variables add $log_command_tail_starting_location $article_non_mime_filter_rules = reject_empty_content_type permit FML::Config fix checking code of defined value. FML::Article::Sequence $sequence_file -> $article_sequence_file use //o if could. FML::Command::Admin::log use $log_command_tail_starting_location. fix comments. FML::Command::Admin::{chaddr,changepassword,digest,subscribe} validate input address by FML::Restriction::Base. FML::Command::Filter FML::Filter FML::Filter::Header MimeComponent Size TextPlain new FML::Command::Filter $curproc; fix::update comments::messages. rename method::rules() -> set_rules(). use ::::o if could. fix var name: $article_none_mime_filter_rules -> $article_non_mime_filter_rules. implement reject_empty_content_type rule (non mime filter). 2004/01/31 FML::Error::Cache validate input address. FML::Process::{Addr,Alias,Calendar,Command,ConfViewer,Configure} FML::Process::{Digest,Distribute,DocViewer,Error,Fake,HTMLify} FML::Process::CGI::Kernel not use "$cf_list = $curproc->get_config_files_list();". $curproc->load_config_files($cf_list); -> $curproc->load_config_files(); Calendar::Lite print() -> print_as_html() 2004/01/22 *** オーバホールキャンペーン中 *** FML::Command fix comments. define $default_lock_channel and modified to use it. FML::MTA::Control::Procmail fix $fh->close() usage. fix comments. cosmetics. 2004/01/21 *** オーバホールキャンペーン中 *** FML::Restriction::Base define $number_regexp , $address_regexp. modified to use it. FML::Process::CGI::Kernel more todo comments. remove 'use FML::Log' which is not used. FML::Filter::Size TextPlain check input data type. more todo comments. white space cometics. FML::Header cosmetics: spaces, unroll one line to plural ones. FML::Command::HTMLify fix comments. add missing loop label. FML::Filter::Header fix comments. check input data type. cosmetics. FNF. FML::Filter::MimeComponent define $recursive_max_level in file scope. fix comments. cosmtics: sort initialization order, location. =~ "" -> =~ // FML::User::DB fix comments. close output channel before exits from within loop. 2004/01/18 *** オーバホールキャンペーン中 *** FML::Confirm update comments. clean up. if (defined $db) { ...->open::close ... } FML::Config fix comments. change variable name::$mode -> $op in some cases. change argument order of __update_config(). 2004/01/14 FML::Process::Calendar bug fix handling of $args within $curproc for further reference. Calendar::Lite clean up. show summary next 3 days above calender this month. FML::Process::Kernel load_config_files() not need the argument. load_config_files() do sanity checks for mta and cgi processes. 2004/01/01-2004/01/04 *** 2003 年末 〜 2004 年初め オーバホールキャンペーン中 *** clean up $curproc とペアになっている $args をほとんどのクラスでは削除した。 $args へのアクセスは FML::Process::Utils のアクセスメソッド経由 のみとする。 FML::Process::Utils +set_config_files_list() +append_to_config_files_list() +get_config_files_list() FML::Digest fix lock algorithm. clean up. fix comments. 2003/12/31 2003 年末 〜 2004 年初め オーバホールキャンペーン 変数 FML::ML::Control *_private_dirs -> *_private_directories FML::Command::Admin::newdomain newml rmdomain rmml FML::Process::Addr Alias FML::ML::Control HomePrefix FML::MTA::Control FML::MTA::Control::Postfix Procmail Qmail Sendmail Utils clean up class hierarchy. o FML::HomeDir::Prefix -> FML::ML::HomePrefix; o FML::MTAControl -> FML::MTA::Control o move main codes in newml and rmml to FML::ML::Control class. FML::Process::Switch bug fix initialization. update comments. clarify function role by renaming::ProcessSwitch() -> load_module() Process::Switch sort. FML::Process::Kernel save incoming_message cache file path on memory for later use. import $default_ml_home_prefix from main.cf name space. FML::Process::Utils implement {get,set}_incoming_message_cache_file_path(). bug fix get_incoming_message_cache_file_path() FML::Process::Fake experimental implementation done. Mail::Delivery::Queue define *_file_path() methods. bug fix use of *_{dir,file}_path() functions. validate $value (ARRAY_REF). update comments. Mail::Delivery::Net::INET6 fix label name File::CacheDir implement cache_file_path() FML::Cache::Journal import $directory_private_mode if could FML::Error update comments. clean up. use methods not direct editing of $self as could as possible. use $curproc->{ credential } reset address comparison level after main routine. FML::Header::MessageID get() return null string if the value is undefined FML::Command::Auth validate $address input as data. $cred = $curproc->{ credential }; update comments. FML::Command::Admin::addadmin update comments. define and use $maplist. FML::Command::Admin::addmoderator update comments. define and use $maplist. FML::Command::Admin::check update comments. implement check_ml_home_dir() and modify rules. FML::Command::Admin::edit update comments. use $curproc->ml_*() methods if could. reset $ENV{'PATH'} while running editor. FML::Command::Admin::mailq update comments. more readable method and variable names. FML::Command::Admin::rmml update comments. use $curproc->ml_*() methods if could. modify local variable names to be more readble. FML::Command::Admin::list update comments. clean up. modify routine names to be more readable. remove not used variables. bug fix cgi_menu() initialization phase. FML::Command::User::chaddr confirm digest off on unsubscribe update comments on $primary_*_map use. use $curproc->{ credential } not call "use FML::Credential ...". FML::Command::User::digest update comments::messages. use $curproc->{ credential } FML::Command::User::chaddr subscribe update comments. use $curproc->{ credential } reset address comparison level after main routine runs. 2003/12/25 FML::Process::Utils bugfix default $use_address_mask and $address_mask_type in thread_db_args() Mail::Message::ToHTML add from-address for not use address_mask in _print_li_filename() FML::Process::Distribute add log at htmlify article end 2003/12/24 etc/{command_line_options,install.cf.in,modules} FML::Process::Fake add and enable libexec::faker FML::Process::Utils implement is_need_ml_name() FML::Process::CGI::Kernel use is_need_ml_name() not $args->{ ... } FML::Process::{Addr,Alias,Calendar,ConfViewer,Digest, Distribute,DocViewer,Kernel} remove the direct use of $args instead, use utility methods via $curproc 2003/12/22 Mail::Delivery::Queue define the following methods and modified to use it: new_dirpath deferred_dirpath active_dirpath info_dirpath sender_dir_path recipients_dir_path *_dirpath() -> *_dir_path(). 2003/12/21 variables + $list_command_default_maps + $newml_command_ml_admin_default_address etc/install.cf.in FML::Install remove hard-coded language dependent information by moving it to $nl_template_files in install.cf.in. 2003/12/20 FML::Command::Admin::list use $list_command_default_maps not hard-coded value. change default map to $recipient_maps not $member_maps. FML::Command::Admin::newml use $newml_command_ml_admin_default_address as $ml-admin value. if unspecified, use the default fml owner value. FML::Command define get_mode() and set_mode() and modified to use it. 2003/12/10 Mail::Message::DB quick hack for trouble making html indexs and working distribute. 2003/11/30 variables FML::Credential FML::Command::Auth FML::Process::{Command,Distribute} FML::Restriction::Post rename: $system_accounts -> $system_special_accounts. 2003/11/29 機械処理(および、その出力形式をカスタマイズ)しやすいログを出力する オプションを作りこむ。 --log-computer-output コマンドラインオプション $use_log_computer_output と $log_computer_output_engine を定義する。 フォーマットは $log_computer_output_engine で指定するモジュールで変 えてくださいな。 etc/command_line_options FML::Process::Kernel support --log-computer-output option FML::Process::{Command,Configure,Distribute,Error,Kernel} FML::Log::Print::Simple define $use_log_computer_output. modify FML::Process::* to use it. FML::Process::Kernel supports customization by $log_computer_output_engine definition. $curproc->log_message_init() is called within prepare() method of each program. FML::Process::Debug implement config() method. FML::User::DB use $curproc->config() to get config object. variables FML::Header x_ml_name -> outgoing_mail_header_x_ml_name 2003/11/27 FML::User::Control check if $buf retruned from IO::Adapter is defined. IO::Adapter::File bug fix get_key_values_as_array_ref() 2003/11/26 list コマンドの拡張、あらゆる map を表示可能にした。 FML::Command::Admin::list try to list up arbitorary map if could. FML::User::Control::{userlist -> print_userlist} IO::Adapter::{Array,DBI,File} implement get_key_values_as_array_ref() to return key and all values as ARRAY_REF. FML::User::Control rename method::userlist -> print_userlist cal get_key_values_as_array_ref() of IO::Adapter to get key and all values. So, print_userlist() print out "key values ...". アドレスを比較する関数で大文字小文字を区別する/しないという機能を実装 また、互換性のため、デフォルトを case insensitive (区別しない)に変更。 variabes address_compare -> address_compare_function FML::Credential bug fix variable overload 2003/11/25 FML::User::Control remove debug condition FML::Credential variables implement switch to toggle case sensitive check of mail address. +use_address_compare = yes +address_compare_type = user_part_case_insensitive 2003/11/24 FML::Process::Switch ensure valid exit code 2003/11/23 FML::Confirm FML::Command::User::{chaddr,confirm,off,on,subscribe,unsubscribe} FML::Cache::Journal FML::Data::Deadline separete database part in FML::Confirm to FML::Cache::Journal which can be shared between other modules. change FML::Confirm::new() to take $curproc. FML::Command::Admin::{addadmin,addmoderator,chaddr,deladmin, delmoderator,digest,list,off,on, subscribe,unsubscribe} FML::Process::Utils create FML::User::* class to manipulate user database. 1. move FML::Command::UserControl to FML::User::Control class. 2. implement FML::User::DB (committed later). variables define the folloging variables: + $primary_user_db_gecos_map + $primary_user_db_subscribe_date_map + $user_db_gecos_maps + $user_db_subscribe_date_maps Mail::Message::ToHTML try to mask raw addresses in signature. rename::_who_of_address() -> _address_to_gecos() FML::User::DB avoid duplication. FML::User::Control FML::User::Info run FML::User::Infoal->import_from_mail_header() to save user info included in the header for further use. 2003/11/18 FML::Confirm FML::Command::User::confirm fix argument FML::Confirm::is_expired($id) from time to id. FML::Credential implement is_user_part_case_sensitive() and modified to use it. we should attach $self internal directly even if within the same module. 2003/11/16 ドメインの扱い(デフォルトおよびバーチャルドメイン)の拡張(その1終了) FML::Command::Admin::newdomain rmdomain FML::Process::Utils FML::HomeDir::Prefix switched to new ml_home_prefix framework, which is enhanced virtual domain operation. See fml-devel in 2003::10. FML::Command::Admin::newdomain rmdomain FML::Process::Configure fixed argument handling to support: o makefml method domain o fml domain method FML::Process::Debug we use this module as simplified FML::Process::Kernel for debug. define simplified version of some following methods: +mkdir +log +logwarn +logerror +ml_home_prefix 2003/11/11 FML::Header::MessageID change message-id format to match RFC2822 2003/11/08 Mail::Message::Encode disable Encode use even on >= 5.008 since we are not ready. perl 5.8 では Encode をつかうべきなんだろうけど、今は Jcode を 使うコードしかないので、「if 5.8 …」の部分を一旦、使わないこ とにする。 FML::Command::UserControl call croak() if address to remove not found 2003/11/07 Mail::Message::ToHTML Mail::Message::ToHTML の拡張 add $versionid add new comment tag at html_begin() for file magic change @header_field remove same information (X-xxx) and add Message-Id 2003/11/05 ドメインの扱い(デフォルトおよびバーチャルドメイン)の拡張のはじまり FML::Process::Kernel etc/main.cf.in define $primary_ml_home_prefix_map in main.cf. FML::Process::Kernel imports it. 2003/11/02 FML::Process::Utils FML::Process::CGI::Kernel move safe_cgi_action_name from FML::Process::Utils to FML::Process::CGI::Utils. FML::Process::Kernel Utils debug_level() -> get_debug_level(). sort definitions::{set,get}_print_style(). 2003/11/01 変数体系のクリーニング: 階層構造、命名規則 よりシステマティックな変数命名ルールを考えていくと、ここでも、 基底クラスと継承という考えを(ある程度)導入する方がよいと思う ようになりました。 が、ものすごく厳密にやると逆にわけ分からないので程ほどに。 例: mail_何とか mail_default_何とか use_incoming_mail_何とか incoming_mail_何とか use_outgoing_mail_何とか outgoing_mail_何とか use_report_mail_何とか report_mail_何とか この例でも、厳密には outgoing_report_mail とかするべきなんでしょ うけど、そこまではやらないのがほどほどってところでしょうね。 2003/10/30 variables FML::Process::Kernel header_loop_check_rules -> incoming_mail_header_loop_check_rules use_header_loop_check -> use_incoming_mail_header_loop_check body_loop_check_rules -> incoming_mail_body_loop_check_rules use_body_loop_check -> use_incoming_mail_body_loop_check body_cksum_cache_dir -> incoming_mail_body_cksum_cache_dir variables has_* -> system_has_* 2003/10/29 import im-146. 2003/10/26 FML::Install etc/install.cf.in To remove hard-coded file list to install as sample, define $sample_cf_files in install.cf and use it. FML::Process::Kernel Switch etc/main.cf.in define $site_default_config_cf to remove hard-coded site_default_config.cf. sort entries in main.cf. 2003/10/22 variables FML::CGI::User change address list shown on the cgi menu from member to recipient. 2003/10/17 変数名の変更 command_prompt -> command_mail_reply_prompt cgi_menu_map_list -> cgi_menu_address_map_list cgi_menu_default_map -> cgi_menu_default_address_map command_prompt -> command_mail_reply_prompt summary_file -> article_summary_file summary_format_style -> article_summary_file_format_style summary_format_address_length -> article_summary_file_format_address_length default_file_mode -> file_default_mode default_directory_mode -> directory_default_mode move *_mode definitions from basic.cf to file.cf. remove duplicated $default_directory_mode. FML::Process::CGI::Kernel Mail::Message::Charset Mail::Message::Charset has tables on code, charset and languge. FML::Process::CGI::Kernel is modified to use it. FML::Command::Admin::log define log_file_*_charset and modify log module to use it. 2003/10/16 charset の取り扱いを拡張した。 resutructure/enhance charset definitions: ${category}_default_charset and ${category}_charset_{ja,en,...} FML::Process::CGI::Utils cgi_var_language() returns '' not 'japanese' if language info not found. FML::Process::CGI::Kernel bug fix _cgi_resolve_ml_specific_variables() for correct ml_* handling. follow HTTP_ACCEPT_LANGUAGE information. fix log_file when admin::*.cgi runs. add $domain_local_log_file add $domain_local_log_file FML::Process::CGI::Kernel FML::CGI::ThreadTrack Calendar Menu FML::Command::Admin::log language_of_cgi_message() -> get_charset("cgi") FML::Process::Kernel Mail::Message Mail::Message::Language consider Accept-Language::(but not used yet now ;-). FML::Process::CGI::Utils FNF::add comments FML::Process::CGI::Kernel bug fix charset handling. FML::Command::SendFile FML::Digest messager::rfc822 part not need charset ;) FML::Process::Utils bug fix masking variable definition remove language_of_cgi_message() implement set_accept_language_list() and get_accept_language_list(). remove obsolete language_of_reply_message(). get_charset() can handle accpet-language::and charset requested by other module via PCB. 2003/10/15 FML::Digest FML::Command::SendFile FML::Process::Kernel Utils implement get_charset() and set_charset(). modified to use it to treat current charset changed dynamically on the fly. FML::Process::CGI::Kernel enable languge change function variables define $default_cgi_language, $cgi_language_list 2003/10/14 fml/share/message/ is translated to English. euc-jp/* is translated to corresponding us-ascii/*. FML::Process::Kernel if (defined $pcb) { ...} FML::Process::CGI::Kernel Utils define cgi_var_language() and use it Mail::Message::DB oops, remove debug message output FML::Filter::MimeComponent recursive multipart checks FML::Process::CGI::Kernel FML::CGI::List ML Menu User implement cgi_hidden_info_language() and modified to use it. It holds language info within CGI operations. 2003/10/07 FML::Command::Admin::log fix html style:
str1<::pre>str2<::pre> ... ->str1\nstr2 ... <::pre> 2003/10/06 FML::Process::Distribute Mail::Message::DB ToHTML handle article subject specilly where the key in db is "article_subject". FML::Command::Admin::log fix printing_style value::cgi -> html 2003/09/30 Mail::Message::DB create article_$header db too. FML::Restriction::Base define language regexp 2003/09/29 FML::Process::Distribute disable _old_thread_check() 2003/09/27 natural language extension in cgi menu. FML::CGI::Admin::{List,ML,User} -> FML::CGI::{List,ML,User} FML::Process::CGI::Utils FML::CGI::List ML User define new methods::cgi_var_address_map() cgi_var_address_map_list() cgi_var_action() cgi_var_frame_target() switched to use cgi_var_*(). sort::cleanup initialization parts in each cgi_menu(). FML::CGI::ML cgi_var_ml_name_list($ml_domain) -> cgi_var_ml_name_list() FML::CGI::User fix selected_key name FML::CGI::List add reset button FML::Config bug fix expand_variable_in_buffer() to match as many as could. FML::Process::Kernel make message_nl() handle enable language translation FML::Process::CGI::Utils define methods::cgi_var_navigator_title(), cgi_var_fml_project_url(). 2003/09/26 ml-admin/*/*.cgi を利用可能にする variables define $commands_for_ml_admin_cgi FML::Process::CGI::Kernel FML::CGI::Admin::Menu FML::Command::Admin::newml FML::CGI::Menu FML::CGI::MLAdmin::Menu FML::Process::CGI::Utils change *::CGI:::class architecture. FML::CGI::*Admin::Menu inherits FML::CGI::Menu. methods in FML::Process::CGI::* returns the value by checking the current cgi mode (admin or ml-admin). FML::CGI::Admin::ML FML::CGI::Admin::User FML::Command::Admin::list FML::Process::Utils change arguments of get_ml_list() to remove $args. FML::Process::CGI::Kernel use cgi.*.top for top level help 2003/09/20 FML::Process::Switch define _find_longest_matched_entry() function and use it to find more specific entry for getopt parameters and module definitons. 2003/09/19 FML::Process::Switch implement _filespec_splitdir() which split filename to @filepath but it uses File::Spec only in > perl 5.6.1. more specific match for $0 to resolve module we should use. FML::Process::Utils fixed to avoid uninitialized ... etc/command_line_options define --log-dup anyway FML::Header FML::Header::MessageID FML::Process::Kernel new Header->add_message_id() change Header::MessageID->gen_id() Args change in Process::Kernel->_add_info_on_header() add add_message_id() 2003/09/16 update CPAN updated to File-Spec-0.85_03. Jcode updated to 0.83 2003/09/14 FML::MTAControl::Procmail typo FML::Process::{Flow,Kernel,Switch} Process::Flow and Process::Switch classes need to know $curproc pointer each other. fix log message duplication mechanism. define global_tmp_dir_path(), be_quiet() in FML::Process::Kernel. 2003/09/13 etc/modules FML::Process::Switch extension: compare $0 against entry etc::modules by considering subdir. FML::Process::Switch fix $0 handling for *.cgi: program_fullname => $ENV{ 'SCRIPT_FILENAME' } || $0 FML::Process::CGI::Kernel use $curproc->config_cf_filepath(). FML::Process::Kernel implement ui_message(). change label of log() from ok to info. FML::MTAControl FML::Command::Admin::{edit mailq newml rmml} FML::MTAControl::{Postfix,Procmail,Qmail,Sendmail} use $curproc->ui_message() instead of "print STDERR ...". FML::Filter::MimeComponent3 Mail::Message fix variable initialization to avoid undefined reference warning. FML::Process::Configure remove close_stderr_channel_if_quiet_option_specified(). FML::Process::Utils implement is_cgi_process(), is_under_mta_process(). 2003/09/11 FML::Command::Admin::newml clarify error messages more. FML::MTAControl::Postfix handle default::virtual domain properly. 2003/09/08 Mail::Message Mail::Message::{ToHTML,Encode} =?shift_jis? ... メールの取り扱いを修正 各オブジェクトにおける charset と encoding の扱いを修正 2003/09/06 MLの消去方法の拡張 MLを消した際、ディレクトリを日付名つきのものにする。 これで、何度、消しても大丈夫#って、そんなに何度も消すかな? /var/spool/ml/elena -> /var/spool/ml/@elena.20030906 FML::Command::Admin::rmml FML::Process::Utils use removed_ml_home_dir_path() method to determine the dir path used as the removed $ml_home_dir. 2003/09/05 FML::Process::Utils escape $curproc in eval FML::Process::Kernel bug fix::we should not use $main_cf in this module. clean up. more comments. 2003/09/04 FML::Command::Admin::get newml rmml use $curproc->config() 2003/09/02 FML::Process::Calendar bug fix wrong lvalue 2003/08/30 use $curproc->config(), pcb() not { config }, { pcb } respectively. FML::Process::Kernel add simple log message queue logic as a prototype. 2003/08/24 Mail::Message::ToHTML print STDERR ... if $debug. FML::Config print STDERR ... -> carp(...) File::Rotate IO::Adapter::DBI File remove debug::print STDERR .. FML::Process::CGI::Param remove debug FML::Process::ConfViewer save $@ via logwarn() not print STDERR .. 2003/08/23 use log*() methods define $curproc->log, logwarn, logerror and log_message() methods. modified to use $curproc->log*() interface. Mail::Message::Checksum use croak() not FML::Log() FML::Process::Kernel sort function definitions. FML::Process::QueueManager FML::Mailer new FML::Mailer $curproc; FML::{Article,Digest,Error,Filter,Header,Mailer} FML::Article::{Sequence,Summary,Thread} FML::Error::Cache FML::Filter::MimeComponent3 FML::Process::Utils FML::Restriction::Post modified to use $curproc->log*() methods. 2003/08/20 FML::Process::Utils Mail::Message::ToHTML define the detail of address masking against spammers. $use_html_archive_address_mask = yes $html_archive_address_mask_type = all new variables use_html_archive_address_mask = yes phtml_archive_address_mask_type = all 2003/08/18 --quiet オプション創設 (fml と makefml コマンドだけ) FML::Process::Configure Kernel support --quiet options for makefml and fml. It closes STDERR before the main routine begins. define close_stderr_channel_if_quiet_option_specified(). etc/command_line_options --quite option for fml and makefml. clean up. 2003/08/16 FML::Process::Kernel check whether $ml_home_dir not exists in _init_lock(). Mail::Message modify logic to find the start point of multipart. correct handling of the first dash-boundary. XXX this logic is effective but wrong. 2003/08/15 FML::Process::Utils Mail::Message::ToHTML test html_archive_address_mask mask or nomask address_mask use To and Cc 2003/08/06 Mail::Bounce::Freeserve Mail::Bounce::Language::Japanese moved Japanese contnet to Mail::Bounce::Language::Japanese. bugfix regexp Mail::Bounce enable freeserve.en.jp FML::Process::Distribute clarify old::new thread engine routines. rename htmlify() to _htmlify() to clarify it is private. 2003/08/05 Mail::Bounce::Freeserve 2003/08/03 FML::Process::Distribute fix arguments used in the case of key "error.reject_notice_preamble" (PR by fml-devel:503). 2003/08/02 Document translation to English completed up to 70 % ? Mail::Message::ToHTML reduce warning if missing from or subject at sub _print_li_filename() 2003/08/01 FML::Restriction::Post deny_reason not over write 2003/07/24 Document translation to English completed up to 40 % ? etc/default_config.cf and etc/config.cf are translated. 2003/07/23 Document translation to English starts 2003/07/22 Mail::Message::Language::Japanese::Subject nuke todo::method-ify done. Mail::Message::Date implement speculate_timezone() to remove hard-coded timezone +0900 :-). FML::Process::Kernel use our own Date::field when we use Mail::Message::Compose (MIME::Lite). Mail::Message::Encode detect_code() should not call croak() but return 'unknown'. we can handle Japanes and English, so fixed comments. 2003/07/21 import Time-modules-2003.0211 to use Time::Timezone. clean up ... Tie::JournaledDir JournaledFile clean up. change the match conditoin parameter name to "match_condition". You should specify "first" or "last" as match_condition in Tie::JournaledFile::new() method. Tie::JournaledFile::change default match condition to "last match". Mail::ThreadTrack::Analyze FML::Article::Summary Mail::Message::Date method-ify date_to_unixtime() of Mail::Message::Date. Mail::Message::Checksum Utils import search_program() into Mail::Message::Utils module. modified Checksum to use it. FML::Header::Subject Mail::Message::Language::Japanese::Subject method-ify cut_off_reply_tag() 2003/07/20 Mail::Message::DB comment on analyze() restrict demand copying only for the previous messages before the current one. Mail::Message::ToHTML Mail::Message::Thread moved analyzer dispatcher to ::Thread module to use analyzer independetly. Mail::Message::Thread analyze() accpets $id if specified. FML::Process::{Distribute,Utils} separete thread_db_args() routine prepares thread information. pass $aritcle_id to analyze(). 2003/07/19 Mail::Message merge udb branch to switch to the new thread engine fixed to co-work with udb well. variables defined $udb_base_dir 2003/07/03 Mail::Message::ToHTML change regexp $url$trailor 2003/06/29 FML::Command FML::Command::SendFile FML::Command::User::get check the number of request in get commands. update messages 2003/06/26 FML::Header Filter add $debug for debug message to Log at only debug-mode 2003/06/24 Mail::Message[udb]::ToHTML pass $old_db_base_dir to DB module Mail::Message[udb]::DB save all values of fields. for filtering system, save other header fields::return_path posted x_posted sender x_sender received x_received. demand copying from old db to udb if needed(demaned) when _ db_get() called. bug fix negative cache handling et.al. 2003/06/23 variables remove $system_message_charset and $system_message_subject, which are not used. Mail::Message::ToHTML bugfix at debug 2003/06/21 Mail::Message bug fixed::message_text() should be able to handle differenct type $data. 2003/06/15 variables add check_date to $article_header_filter_rules (PR by fml-devel:478). 2003/06/14 Mail::Message::DB [udb] implement separete method _save_header_info() to handle header info. implement get_as_array_ref() and get_table_as_hash_ref(). fixed to cooperate with ToHTML module. add more print debug codes. thread_summary() return more info::id, html_* move thread_summary generator wrapper from ToHTML to DB Mail::Message::ToHTML [udb] modified to use Mail::Message::Encode::decode_mime_string(). rewritten based on new DB module. remove ndb_key(), which is not used. fix filename to use db value. fix filepath of thread links. add a lot of printf debug. move thread_summary generator wrapper from ToHTML to DB. remove __str2array(). $self->{ _thread_list }->{ $id } (STR) changed to $self->{ _hint_ref_key_list }->{ $id } (ARRAY_REF). Mail::Message::{DB,ToHTML,Utils} [udb] implement Mail::Message::Utils::from_to_name() and modified modules to use it. Mail::Message::Utils [udb] fixed to use Mail::Message::Encode 2003/06/11 FML::Filter::Header add check_date() for missing date field 2003/06/06 Mail::Message::MH against longloop for underrun and overrun 2003/06/04 import im-145 2003/06/03 Mail::Message[udb]::DB monthly_to_key_list -> month_to_key_list Mail::Message[udb]::ToHTML remove _address_clean_up(), which is not used. 2003/06/02 Mail::Message::IMPLEMENTATION [udb branch] update idea::sync with current implementation Mail::Message::ToHTML [udb branch] modified to use DB::thread_summary($id). rename method to be more easy for eyes. remove not used variables. FNF a little. 2003/06/01 スレッドデータベースの再設計 別ブランチでやってるので source-changes ML にしか動きが見えな いとは思う。 Mail::Message::ToHTML [udb branch] Mail::Message::DB [udb branch] move main db manipulation code from ToHTML to DB. XXX caution::but the index generator not works now. Mail::Message::DB [udb branch] implement thread_summary(). 2003/05/28 variables error_analyzer_function::error_continuity -> histgram define $error_analyzer_function_list FML::Error FML::Error::{Analyze,Cache} FML::Error::Analyze::{histgram,simple_count} restructuring under FML::Error class to be more extensible. move main part of print() to FML::Error::Analyzer::* modules. So, print() format depends on FML::Error::Analyzer::* class. FML::Command::Admin::error list up summary for each algorithm defined in $error_analyzer_function_list. 2003/05/27 Mail::Message::ToHTML print text in "unknown MIME encoding" case. try to validate key and value in hash operation but ... (?) 2003/05/26 IO::Adapter::{Array,DBI,File} remove not used method: - get_value_as_str() - get_value_as_array_ref() 2003/05/20 FML::Command::Admin::error disable lock since FML::Error locks itself if needed. FML::Command::Admin::error FML::Error move the status dump code from FML::Command::Admin:error to FML::Error. 2003/05/16 Mail::Message::ToHTML bug fix masking of raw From::address 2003/05/14 FML::Filter FML::Process::Command FML::Filter::Size implement size limit filter for both article and command mail. 入力に対するサイズ制限フィルタを実装しました。 2003/05/13 FML::Filter FML::Process::Distribute use $_arg_address not $_arg_sender use "reject_notice_preamble" in filter rejection notice. it describes: o the reason why we do not use mime::multipart. o this message is not from you but somebody forged. フィルタが弾いた時に注意書きをつける。 FML::MTAControl::Postfix Sendmail check the existence of path_* programs 2003/05/12 FML::Command::Auth FML::Command::Admin::chaddr changepassword deladmin delmoderator digest off on unsubscribe we should operate only $primary_*_map not $*_maps in deleting the user address. メールアドレスを削除するコードの修正 常に primary_*_map にのみ追加/削除を行なう。 2003/05/08 FML::Filter add $msg_args at article_filter_reject_notice() Mail::Message whole_message_as_str(): o indent is null by default. o fix the trailing indent replace. 2003/05/05 variables and configure search spamassassin, spamd and spamc, and set path_${it} for further extension. 2003/05/04 Mail::Bounce::SimpleMatch E500 SMTP Mail Service ? 2003/05/03 FML::Process::Error fix comments (FNF). FML::Header style, aligned with FNF. 2003/05/01 variables define article_filter_reject_notice_data_type FML::Process::Utils fix typo::maitainer->maintainer FML::Filter forward the rejected message by string or multipart? It is determined by $article_filter_reject_notice_data_type. Mail::Message implement whole_message_header_as_str() remove whole_message_as_string_ref(). implement whole_message_as_str() to extract the first part of this message as a string. 2003/04/29 FML::Restriction::Base permit user+ext@domain libexec/error がエラーメッセージを再転送可能にした。 転送先は $maintainer_recipient_maps に従う。デフォルトは未定義 variables define $maintainer_recipient_maps FML::Process::Error define sender as $maintainer as a dummy sender to avoid unexpected error. if $maintainer_recipient_maps defined, forward error message to it. FML::Process::Kernel permit use of reply_message() for libexec::error FML::Command::Admin::mailq modify format to be more similar to usual mailq output. 2003/04/21 FML::Header obsolete mime_boundary() (same Mail::Message _header_mime_boundary()) 2003/04/20 FML::Article not *path() method but spool_in() creates subdir if needed. 2003/04/19 etc/default_config.cf.ja.in etc/src/config.cf.ja/acl.cf FML::Error we should handle addresses used by fml such as elena@fml.org, elena-ctl@fml.org et.al. exceptionally in handling errors. MLが使うアドレス( elena とか elena-ctl )は無視しないとね Mail::Bounce enhance smtp32 rules FML::Command::Admin::newml FML::Config::Convert etc/aliases etc/postfix_virtual fix virtual domain handling (fml-devel:417) バーチャルドメインのテンプレートが間違ってたので修正。 今まで作っていた postfix の virtual テンプレートと うまくいくようにした。 2003/04/18 etc/command_line_options define menu.cgi FML::Command::Admin::newml mkdir $ml_home_prefix if not found Mail::Message _header_mime_boundary() boundary detect no quote string case 2003/04/16 article_filter_reject_notice_recipients change attribute names of recipient used in filter rejection notice: admin -> maintainer FML::Header rewrite_received() outside loop $header->delete($org) for bad count 2003/04/15 Mail::Delivery::Queue reset alarm after flock() FML::Header mime_boundary() boundary detect change short match and add no quote string 2003/04/09 FML::Header add rewrite_received() for replace Received::to X-Received: 2003/04/07 Mail::Bounce::SimpleMatch add analize ybb.ne.jp and Webshield 2003/04/04 フィルタが弾いた時のメッセージの返り先が微妙に間違ってるのを修正 FML::Process::Kernel reply_message_add_header_info() should pass $msg_args to reply_message(). 2003/03/28 rename method: article_id_max() -> article_max_id() 2003/03/24 img/ is updated to im-144. 2003/03/18 【重要】 giant lock をなくす。粒度の細かいロックへ移行した。 FML::Command::Admin::edit get mailq FML::Command::User::deny guide help objective not need lock FML::Process::Kernel more logs around locks. add deadlock warning. reuse lock object if could. FML::Command::UserControl modify chaddr algorithm::"del() and add()" -> "add() and del()". 2003/03/17 特定のデータ構造を操作する関数をできるだけ集約するべく改造する →ロックの粒度を細かくするため FML::Process::Kernel Mail::Delivery::Queue fix that setrunnable() of Mail::Deliver::Queue returns the correct value and FML::Process::Kernel logs the value. FML::Process::Distribute use new lock channel article_spool_modify to exclusive lock for both sequence updating and spool writing. In addition, locks at channel article_sequence and article_spool are also done in each critical section. FML::Command::Admin::chaddr move the main code to FML::Command::UserControl. modified to use FML::Command::UserControl. FML::Command::Admin::changepassword move the main code to FML::Command::Auth. FML::Command::Auth implement change_password(). FML::Process::Utils get_address_list() uses get_user_list() in FML::Command::UserControl. FML::Command::UserControl implement user_chaddr() and get_user_list(). 2003/03/16 removed "fmlthread". instead of these, use the following commands: makefml thread $ml [options] FML::Article FML::Article::Sequence define new lock channel::article_spool move id related functions to FML::Article::Sequence FML::Article::Thread fixe to meethod style. FNF::fix comments. FML::Command::SendFile use $curproc->article_id_max() to get the last article id. FML::Command::Admin::spool need no giant lock. FML::Spool -> FML::Article::Spool fix argument handling. FML::Digest define lock channel for digest_sequence_*. use $curproc->article_id_max() if could. clean up handling of digest_sequenc_file. FML::Error FML::Process::Error clean up lock on error cache. move lock mechanism into only FML::Error module. XXX lock channel name is changed but hard-coded yet now. FML::Error fix lock channel name FML::Process::Utils article_id_max() is just a wrapper for FML::Article::id(). 2003/03/15 removed "fmlspool". instead of these, use the following commands: makefml spool $ml File::Sequence return 0 if sequence file not found FML::Process::Command specify the definition on $command_args HASH STRUCTURE. 2003/03/14 removed "fmlerror", "fmlsummary" and "fmlsuper". instead of these, use the following commands: makefml error $ml makefml summary $ml makefml mailq $ml FML::Process::Utils imlement debug_level() FML::Process::{Flow,Kernel} define finalize() at the last of flow. finalize() is only used for debug now. FML::Header::Subject Mail::Message::Date validate input FML::Article::Summary validate input. implement dump() method to show the whole summary_file. 2003/03/11 FML::Sys::Alias basic functions to deal with aliases file FML::Process::Switch FML::Config::Tiny main.cf のデフォルト(バージョン依存)と /etc/fml/main.cf を マージして評価する。そうしないと新変数が未定義になるなど 不都合がいろいろ出てくる。 we use FML::Config::Tiny, which just reads and parses the file. It is a tiny version of FML::Config module. /etc/fml/ install main.cf at $default_config_dir/ 2003/03/09 Mail::ThreadTrack::Print::HTML $action = $curproc->safe_cgi_action_name() 2003/03/06 variables $use_article_filter_reject_notice $article_filter_reject_notice_recipients etc/main.cf, etc/install.cf define $default_module_config define $default_command_line_option_config FML::Process::Distribute FML::Process::Distribute enable switch by $use_article_filter_reject_notice FNF: use get_as_array_ref() FML::Process::Addr switched to use FML::Sys::User FML::Restriction::Command nuke is_valid_mail_address() which is not used. FML::Process::Kernel validate From::syntax in credential updating. FNF: use get_as_array_ref() FML::Process::Kernel FML::Restriction::Post moved main codes of _check_restrions() to methods defined in new FML::Restriction::Post module. switched to use FML::Restriction::Post. FML::Process::Scheduler remove dummy modules::queue_in() and exits() FML::Error::Cache modified not to use _new(). removed _new(). FML::MTAControl::Procmail clarify *virtual* functoins are dummy. These module do not need to handle virtual issue since ml_name@ml_domain is explicitly written in procmailrc. FML::Process::Switch remove hard-coded module specific configuraitons. resolve module name and the options based on etc::modules. use $default_config_dir/modules to resolv map between prorame name and class (+ options). use etc::command_line_options to resolve getopts() parameters. default_module_maps -> default_module_config. FML::Filter FML::Process::Utils implment new method convert_to_mail_address() and use it to expand {admin, sender, ...} to the corresponding mail address. 2003/03/05 FML::Header do not show List-Help::unless $use_command_mail_program specified. implement rewrite_errors_to() FML::Process::Command Distribute return header for debug in error FML::Process::Kernel implement reply_message_add_header_info(). disable reply_message() in _check_restrictions(). add "$curproc->caller_info($msg, caller) if $debug;" at a few places. implement caller_info(). FML::Filter 「フィルタに弾かれたぞ」とメッセージを返す (プロトタイプ) messages 「メンバーじゃない」時のメッセージを改良 ウィルスかもよ?などとヒントも解説する。 2003/03/03 FML::Article bug fix::try to mkdir $dir ($subdir) when $use_subdir enabled. Mail::Message::Spool bug fix::check value not by defined() 2003/02/18 FML::Error FML::Process::Error use FML::Error->db_open() not FML::Error::Cache for cache db open. FML::Filter fix typo 2003/02/16 clean up campaign of codes variables +summary_format_address_length +cgi_menu_map_list +cgi_menu_default_map FML::Config check the existence in load_file() nuke ^\s* and \s*$ in array expantion. yes() and no() compares the value case insensitively bug fixed to work both FIRSTKEY() and NEXTKEY(). add debug code. FML::CGI::Calendar ThreadTrack FML::CGI::Admin::Menu FML::Command::HTMLify FML::Command::Admin::log FML::Process::Distribute use language_*() method to determine $charset FML::Article::Summary modified to use $summary_format_address_length. it determines address length in summary file. FML::Command::User::get update comments and nuke todo. FML::Process::CGI::Kernel use language_*() to determine $charset. remove hard-coded. we ensure cgi_try_*() returns safe value. FML::CGI::Admin::List nuke hard-coded and use config basd value. add more syntax checks before main work. FML::Process::Utils implemente the following methods: is_safe_syntax() language_default() language_of_cgi_message() language_of_reply_message() language_of_html_file() 2003/02/15 FML::Command::UserControl use FML::Restriction::Base FML::Process::Utils implement safe_cgi_action_name() FML::CGI::ThreadTrack FML::CGI::Admin::List ML Menu User FML::Process::CGI::Kernel switched to use safe_cgi_action_name() 2003/02/14 FML::MTAControl::Procmail fix code to find ml_name in procmailrc 2003/02/13 Mail::Message use module global print_mode parameter not private one within object. FML::Command::Admin::off fixed to use $config->get_as_array_ref(). FML::Command::UserControl FML::Command::Admin::{digest,off,on,subscribe,unsubscribe} user{add,del}() checks input $address. nuke the corresponding TODO. FML::Command::Admin::check validate $ml_name existence firstly. 2003/02/11 switch INSTALL.sh to install.pl インストーラを shell script から perl script へ変更しました! FML::Install define default value (null) for md5 checksum result FML::MTAControl FML::MTAControl::{Postfix,Procmail} Mail::ThreadTrack::Print::{HTML,Text} Mail::Delivery::Queue Mail::ThreadTrack::Print::Message Mail::Message::ToHTML FNF: not use $_ 2003/02/10 solaris 9 でもうごいたよ (^^) 2003/02/08 variables $command_run_*_hook added etc/dot-qmail* change args::ml_home_dir -> ml_name@ml_domain 2003/02/07 Mail::Message::ToHTML quick hack at sub sub _print_inline_object_link() URL Link 2003/02/05 FML::Process::Command add $command_run_{start,end}_hook 2003/02/03 FML::Process::Command FML::Process::Error stop_this_process() メソッドが意味をなすように修正 おもに hook のため 2003/02/01 返事の返し方を変更 (お試し) 宛先の組ではなく、宛先ベースでメッセージをまとめる FML::Process::Utils implement unique() FML::Process::Kernel unique recipient array before queuing. implement another strategy of recipient based ququeing (for test). FML::Command::UserControl FML::Command::Admin::chaddr FML::Command::User::{chaddr,subscribe,unsubscribe} try exact matching just before changing user. IO::Adapter IO::Adapter::{Array,DBI,MySQL} remove get_next_value() method. add todo for get_value_as_* if needed. update document. IO::Adapter get_next_value() メソッドを削除 FML::Command::Admin::chaddr remove address matched by FML::Credential in the case of $old_address FML::Config FNF bug fix wrong argument for chomp(). FML::Credential implement matched_address() method FML::Command::UserControl try to remove address matched by $cred->has_address_in_map(), not address specified by the function argument. FML::Command::Auth use FML::Crypt not Crypt::UnixCrypt directly. variables enable changepassword, chpass, initpass and passwd as admin command. 2003/01/31 fix typo: rename Calender to Calendar ;) 2003/01/29 FNF-ify (update/clean up documents, coding style ...) FML::Install File::CacheDir Utils.pm IO::Adapter::AtomicFile FML::Command::Admin::newml FML::MTAControl::Utils in newml, we should check if $ml_name already exists as a user name or not. FML::MTAControl add FML::MTAControl::Utils into @ISA FML::Process::Calender prepare() loads default configuration to use $path_* info. w3m -> $path_w3m cat -> $curproc->cat() method (XXX temporary use). FML::Process::Utils implement cat() method for convenience FML::Command::Admin::unsubscribe use $config->get_as_array_ref() method. install.pl.in FML::Install implement is_run_as_root(). we verify install.pl runs as root. 2003/01/28 FML::Config expand ${variable} FML::Header::Subject decode() returns tag info, too FML::Install At the first time, do not ask if upgrade or not loader. bug fix checks in copy_dir(). copy_dir() install files by preserving [am]time. installer perl version fml/etc/install.cf.in install.pl.in 2003/01/27 FML::Command::Admin::{deladmin,byeadmin} mv real codes from byeadmin to deladmin module. now, byeadmin is a forwarder to deladmin. FML::Command::Admin::delmoderator sync with deladmin codes 2003/01/26 FNF-ify (update/clean up documents, coding style ...) FML::Command::DirUtils use FML::Restriction::Base::regexp_match() to check command line options. FNF: remove $_ FML::Restriction::Base define 'command_line_options' regexp. FML::Command::Admin::byeadmin bug fix target maps to handle. 2003/01/25 FNF-ify (update/clean up documents, coding style ...) FML::Command::Utils removed since it is not used. FML::Process::Utils get_ml_list() checks arguments matched with regxp provided by FML::Restriction::Base. FML::Error FML::Command::DirUtils FileUtils.pm FML::Command::Admin::dir file.pm FML::Process::Kernel FML::Restriction::Base implement FML::Restriction::Base::regexp_match() and switched to use it. Calender::Lite FML::Restriction::Base implement FML::Restriction::Base::regexp_match() can handle special class "fullpath" not based on regexp. switch Calender::Lite to use this method for checking of fully path-ed directory. 2003/01/10 mime component filter に次の機能を仕込みました。 1) multipart のメッセージの中身がないなら、 そのパートは切り捨てる 2) もし、すべてのパートが無効なら、reject する 例: こういうメールの場合を想定したものです。 text/plain (空) application/ms-word (virus つき) application/ms-word は content filter のルールで削除され、 無意味な text/plain は今回の機能で削除され、 結局有効なパートがないので reject する(配送しない)。 とりあえず、この機能はデフォルトで on です。 Mail::Message fix next/prev link of object chain implemenet is_multipart() method FML::Filter::MimeComponent3 when $opt_cut_off_empty_part is non zero, we cut off empty part. Also, reject this message if no effective part in multipart. XXX $opt_cut_off_empty_part = 1; by default now. 2003/01/09 FML::Filter::MimeComponent3 fix wrong logic of handling determined $action vs default_action. corerct messages. 2003/01/08 FML::Filter::MimeComponent3 sync default rule w/ etc/mime_component_filter 2003/01/07 variables postfix_verp_delimiters = += qmail_verp_delimiters = -= FML::Command::UserControl shorten log messages FML::Process::Spool change argument style 2003/01/05 add new utility fmlerror fml variables $fmlerror_*hook added FML::Process::Switch add fmlerror, fix fmlsuper getopt FML::Error FML::Error::Analyze implement get_data_detail() 2003/01/04 FML::MTAControl add && enable FML::MTAControl::Sendmail. implement _remove_postfix_style_virtual(), which moved from FML::MTAControl::Postfix. FML::MTAControl::Postfix postfix_find_key_in_alias_maps()::find system aliases and fml defined aliases irrespective of the result by postconf. This search uses newly implemented _find_key_in_file() but it is a bug since it handles file search only. modified to use _remove_postfix_style_virtual(). FML::Error::Analyze add analize day limit change day checkpoint at simple_count add simple_count2() error_continuity2() for error type 4xx bugfix missing my at day check values 2003/01/03 variables add admin_member_maps into member_maps FML::Command define $debug. more error messages. FML::Restriction::Base implement regexp() method. FNF-ify. FML::Error modified use FML::Restriction::Base->regexp(). FML::Command::{DirUtils,FileUtils} FML::Command::Admin::{dir,file} modified to use FML::Restriction::Base->regexp(). modify messages. FML::Command::Admin::{newml,rmml} get_as_array_ref() to get $newml_command_mta_config_list values. FML::Process::Command FML::Command::Auth modify log messages. hide messages for debug mode. FML::Process::{Addr,Alias} fix help message. nuke not used variables. 2003/01/02 fmlsuper コマンドを追加する。 キュー管理のための、ちょっとしたコマンドにするつもり。 update configure add fmlsuper variables add $fmlsuper_*hook FML::Process::Switch enable fmlsuper using FML::Process::Super FML::Process::Spool fix description 2002/12 オーバーホール・キャンペーンでした。 2002/12/31 Mail::Bounce::SimpleMatch bug fix trap pattern for more accuracy. variables +path_sum = @SUM@ +path_gzcat = @GZCAT@ +path_makemap = @MAKEMAP@ define $newml_command_mta_config_list define $rmml_command_mta_config_list define $sendmail_virtual_map_file change $domain_sendmail_config_dir $domain_mail_config_dir -> $domain_config_base_dir::sendmail FML::MTAControl::Postfix remove duplicated call "postmap virtual" update configure search sum, digest, gzcat and makemap, too. 2002/12/30 Mail::Delivery::SMTP Mail::Message enhance Mail::Message::set_log_function() to override the global log function within Mail::Message name space. Thie enables all objects within the current Mail::Message space uses the same log function. We need this function to enforce all objects in a chain to use the same log output channel. So, Mail::Delivery enhanced to use this function to fix the lack of log messages for multipart messages. 2002/12/26 FML::Article bug fix: defined check for $sfh FML::Mailer not set smtp_log_handle to avoid duplication FML::Log create log file with mode 0600 if could. it seems o.k. by "Principle of Least Surprise". 2002/12/25 FML::Process::Distribute not use smtp_log_handle to avoid duplication in var/mail/outgoing/ (PR fml-devel:345). FML::Process::Command fix comments. rename::_allow_command() -> _config_allow_command() 2002/12/24 *オーバホール・キャンペーン実施中 FML::Process::Command rename: o _is_valid_command() -> _config_permit_command() o _is_valid_syntax() -> _is_safe_syntax() o _auth_admin() -> _try_admin_auth() fix changes. more log of level exceptions. 2002/12/23 *オーバホール・キャンペーン実施中 File::CacheDir fix comments. check defined() more. chop -> chomp. File::Sequence fix comments. clean up the return value by removing \s*.. FML::Command::HTMLify fix comments. aggrege duplicated code. FML::Command::SendFile fix comments. rename: _is_valid_argument() -> _get_valid_article_list(). sort. FML::Command::User::digest fix comments. clean up (sort) codes. FML::Process::Kernel clean up. fix comments. fix label name. check address pattern by FML::Restriction. //o if could. IO::Adapter::AtomicFile bug fix: $fh->close() -> $fh->SUPER::close(). 2002/12/22 FML::MTAControl::Postfix PR (fml-devel:343) check the existence of virtual file. *オーバホール・キャンペーン実施中 IO::Adapter::AtomicFile cometics. fix comments. defined() check before $fh->close(). Mail::ThreadTrack::Print::Text fix comments. add loop label. Mail::ThreadTrack::Print::Message fix comments. //o modify variable to be more readable::$h -> header Mail::ThreadTrack::Analyze fix comments. //o defined() check more. Tie::JournaledDir JournaledFile.pm fix comments. clean up variable names. inform error by croak() more. FML::Config Confirm.pm fix comments. add todo(s) as comments. //o 2002/12/19 *オーバホール・キャンペーン実施中 clean up. + define label or rename label to more appropriate one for loop. + use return(). + use qw() if could. use ::::o if could. fix comments. FML::Header s/rerply-to/Reply-To/ more defiend() check. FML::Command::Admin::log fix comments. fix typo. bug fix the usage of _show_log() method. FML::Filter::TextPlain fix comments. add todo(s). rename $m -> $first_msg to clarify variable function. remove not used declaration. 2002/12/18 *オーバホール・キャンペーン実施中 FML::Header clean up comments. require() -> use() FML::Log clean up commnets. croak() if loading Mail::Message::Date fails. FML::MTAControl::Procmail fix comments and documents. use $fh->close() not close($fh). FML::MTAControl::Postfix Qmail.pm fix comments FML::MTAControl clean up comments. define is_valid_mta-type() and modified to use it. FML::Header::MessageID define dummy db_close() FML::Process::Addr clean up comments. $fh->close() FML::Command::DirUtils clean up comments. modified to define $variable to describe arguments to execute and run system($exec). 2002/12/15 *オーバホール・キャンペーン実施中 FML::Article id() returns data on memory or in sequence_file if not found on memory. clean up comments. use $curproc->config(), $curproc->pcb(). FML::Article::Summary redireced to STDOUT if output channel cannot be opened. add todo(s) as comments. ErrorStatus clean up comments. defined() check. forward method::errstr() -> error(). FML::Command::Admin::edit print informational mesage FML::Command::Admin::dir fix comments. not pass $du_args->{options} to FML::Command::DirUtils module. FML::Command::Admin::byeadmin care for primary_admin_recipient_map XXX we should handle *_maps not primary_*_map. FML::Restriction::CGI Command.pm clean up comments FML::Restriction::Base clean up comments. define ${file,dir,command}_regexp. modified to use these regexp(s). enhance $command_regexp to include [0-9]. 2002/12/13 File::SimpleLock need write permission for flock on solaris (PR fml-devel:331,332) 2002/12/12 Calender::Lite cosmetic changes. fix comments. fix tag (FILE -> LINE). FML::Error::Analyze defined() 2002/12/10 updated IM modules to im-142 Thank Tatsuya Kinoshita. 2002/12/09 update CPAN modules import File-MMagic 1.16 import MIME-Types 1.004 update MailTools 1.15 -> 1.52 2002/12/01 FML::Article::Summary FML::Process::Distribute bug fix article object handling: we should not initialize article object under libexec::distribute runs. pass $article object to $summary object by append($article, $id). FML::Article::Summary summary date should be sync-ed with article date 2002/11/26 implement fmlsummary program new variables define $fmlsummary*hook define $summary_file, $summary_format_type FML::Article::Summary FNF-ify. clean up. nuke debug. implement rebuild() to enable "fmlsummary rebuild $ml_name". make jcode of summary file "jis-jp". implement append($id). FML::Process::Summary newly added as a main module to run fmlsummary program. implement rebuild() to enable "fmlsummary rebuild $ml_name". fix help and conditions to show help FML::Process::Distribute update summary file by calling $summary->append($id) FML::Process::Kernel enable fmlsummary $command $ml_name ... more defined() check FML::Header::Subject define clean_up(), decode(), delete_subject_tag() to separete functions. 2002/11/24 variables $commands_for_privileged_user += digest define $commands_for_admin = $commands_for_privileged_user for conveninence. XXX remove either in the future. FML::Command::Admin::digest clean up FML::Command::Admin::{dir,file} basic_variables() -> basic_variable() for FML::Restriction::Base FML::Process::Utils enable to handle digest_recipient in which_map_nl(). 2002/11/20 FML::Error::Cache mkdir $error_analyzer_cache_dir if not exists variables mkdir $error_analyzer_cache_dir in initialization phase 2002/11/19 FML::Command::Admin::digest init digest on off for admin FML::Process::Kernel bug fix queue identifier generation Mail::Delivery::Queue input of recipients can be duplicated Mail::Message::ToHTML bug fix function call::f() => $obj->f() 2002/11/18 FML::Process::Digest correct start id calculation enable queue flush to send digest. FML::Digest FML::Process::Kernel digest routine can customizes header. XXX preliminary support. needs overhaul? 2002/11/17 new variables define $digest_*hook $primary_digest_member_map = $primary_member_map $digest_member_maps = $primary_member_maps $primary_digest_recipient_map = file:$ml_home_dir::recipients-digest $digest_recipient_maps = $primary_recipient_map $article_sequence_file (= $sequence_file) for symmetry $use_digest_program $digest_sequence_file $article_sequence_file FML::Process::Switch enable libexec/digest File::Sequence fix get_id(); not use chomp() but use s::[\s\r\n]*$::::. define set_id($id) to update value in the sequence file. FML::Process::Digest newly created for digest delivery program. implement _digest(), which is the real function to process digest message creation. XXX mail queue operation is not yet implemented. FML::Digest FML::Process::Digest Kernel.pm Mail::Delivery::Queue enabled passing of recipient_maps (ARRAY_REF) into mail queue. By this, we can now pass $digest_recipient_maps as digest recipients to mail queue system. 2002/11/09 I-D を消去し、www.fml.org I-D コレクションを見るようにした。 2002/11/07 FML::MTAControl::Postfix postconf -d -> postconf (postfix version dependent ?) FML::Process::Switch FML::Process::Addr INSTALL.sh configure configure.in fml/bin/fmladdr.in implement fmladdr command, which shows all users and aliases. 2002/10/31 add configura option: --with/without-mime-component-filter configure.in fml/etc/site_default_config.cf.in configure --with/without-mime-component-filter 2002/10/29 FML::Process::Utils fix escape of Log(...) in eval q{} FML::Command::Admin::newml prinf "a b c" -> a, b, c Mail::Message::ToHTML umask escaping like splx(): mask = umask(); umask( ...) ; # set up umask here do something ... uamsk($mask); FML::Process::Utils ensure umask escape in _mkpath_*() FML::Command::Admin::newml handle both public and private directories in initialization phase. create variables: $newml_command_init_public_dirs $newml_command_init_private_dirs changed newml codes to use them. 2002/10/28 FML::Header::Subject you can use \U$ml_name\$ in subject tag configuration:) FML::Process::ThreadTrack fix db_update cannot get last_id from _speculate_last_id() use seqfile File::Sequence use chomp at get_id()'s return value 2002/10/27 FML::Filter::MimeComponent3 bug fix interface between FML::Filter and MimeComponent3 2002/10/26 FML::Filter::MimeComponent3 fix initianlization bug FML::Filter use MimeComponent3 as a test 2002/10/23 Mail::ThreadTrack::DB typofix filepath value at sub db_mkdb() 2002/10/22 FML::Process::Kernel handle fmlthread $argv same as makefml one 2002/10/21 MIME component フィルタの描き直し FML::Filter re-enable mime component filter based on Filter::MimeComponent2 FML::Filter::MimeComponent2 fix rule appling algorithm: for rule (rules) { for mp (message) { check mp by $rule } } enable to read filter rules from the specified file (-c file). show more debug info. clean up debug info. debug info changes with debug level implement "cutoff" action clarify reason in log message enhance filter rule to use the reverse condition. e.g. (whole_type, !type, action). 2002/10/12 Mail::Message::ToHTML rename index.html to index_all.html add sub create_top_index() 2002/10/06 Mail::Message::ToHTML add index reverse code at _update_id_monthly_index() 2002/10/04 variables define $html_archive_index_order_type FML::Command::HTMLify FML::Process::Distribute Mail::Message::ToHTML enabled to handle order in index.html by $html_archive_index_order_type. Mail::Message::ToHTML o htmlify_{file,dir}() is changted to normal methods for passing arguments. FML::Filter add prototype for $use_article_non_mime_filter FML::Header::Subject workaround to re-encode subject after subject tag handling 2002/09/30 フィルタリングの再構成 FNF-ify rename: _load_function() -> _apply_function() module name renamed: o ContentCheck -> MimeComponent o HeaderCheck -> Header o BodyCheck -> TextPlain 2002/09/29 フィルタリングの再構成 変数 reconstruct filter system. create a new file "article.cf", and gather article_*_filter definitions in it. FML::Process::Distribute sync w:::FML::Filter reconstruction. rename function name FML::Filter following new variable $article_filter_functions, call the following function sequentially. o article_header_filter o article_non_mime_filter o article_mime_component_filter o article_text_plain_filter 2002/09/29 FML::Process::ConfViewer "fmlconf $ml $varname" shows "$varname = $value". unless $varname specified, dump all variables. FML::Config::Convert hold file mode. set $dst mode same as $src mode FML::Confirm FML::Header::MessageID File::CacheDir Mail::ThreadTrack Mail::Delivery::Queue Mail::Message::ToHTML Mail::ThreadTrack::DB we should not use hard-coded file::dir mode FML::Article care subdir case more 2002/09/28 variables enable off/on for user use 2002/09/24 variables $article_body_filter_rules add permit as the last resort $article_header_filter_rules append permit rule FML::Filter::BodyCheck FML::Filter::HeaderCheck define permit rule 2002/09/23 FML::Filter::BodyCheck should not import STR2EUC from Mail::Message::Encode bug fixed to use Mail::Message::Encode->convert() 2002/09/14 FML::Filter::BodyCheck add use Mail::Message::Encode at reject_japanese_command_syntax() because rejected by filter due to Undefined subroutine &FML::Filter::BodyCheck::STR2EUC called variables define $default_umask and $timezone 2002/09/11 FML::Log not use /dev/stderr 2002/09/09 INSTALL.sh not use "id -p" (PR by fml-devel:241) 2002/08/29 INSTALL.sh add a cheap diag: check the existence of $owner and $group FML::Command::Admin::newml validate $ml_home_prefix before main 2002/08/28 FML/Process/Kernel proper handling of "$program /var/spool/ml/elena" case 2002/08/26 IO::Adapter::File ensure rollback in calling get_value_*() FML::Error::Analyze error_continuity::in summation, bad if $v >= 2 FML::Credential is_same_address() validate input data more FML::Process::Kernel bug fix my ml_name (+ ml_domain) detection code: [back ground detail] "fmlconf -n elena@fml.org" works but "fmlconf -n elena" not works since we ignore the latter case. Regaredless of poorman's strategy but we pick up the first non /^-/ string as a $ml_name and set $ml_domain to the default domain. 2002/08/21 IO::Adapter enhance add() to add($address, [$argv]) IO::Adapter::File enhance add() implement get_next_value() define get_value_as_str($key), get_value_as_array_ref($key) IO::Adapter::AtomicFile more unique temp filename 2002/08/20 FML::Process::Distribute modify error message FML::Command::SendFile message key change command.get.invalid.args -> command.get_invalid_args IO::Adapter::File remove fml 4 specific ignore rules such as m=.. option delete(KEY) not (REGEXP) 2002/08/19 FML::Process::Error rename::$use_error_analyzer -> $use_error_analyzer_program use default $log_format_type now FML::Process::Command enable process if $use_command_mail_program is defined. FML::Process::Distribute enable process if $use_distribute_program is defined. variables define $use_command_mail_program ("yes" by default). rename $use_error_analyzer to $use_error_analyzer_program message key reconstructuring 2002/08/18 FML::Command::SendFile more debug info. send_user_xxx_message() set $command_args->{ _filename_to_send } before calling send_file(). FML::Command::User::confirm send back welcome file in subscribe case 2002/08/16 FML::Error::Analyze error_continuity::sum up time sequence with not point but mountain with some width. rename::simple_count_by_day -> error_continuity Mail::Message::Encode add is_iso2022jp_string() FML::Command::Admin::log FML::Filter::BodyCheck FML::Process::Kernel switch FML::Language to Mail::Message::Encode FML::Language::ISO2022JP FML::Language::Japanese::{String,Utils} Removed 2002/08/15 new variables $error_analyzer_function $error_analyzer_simple_count_limit FML::Error count up address with status=5* move analyzer function() to FML::Error::Analyze rename: *_timeout -> *_event_timeout FML::Process::Kernel check if $maintainer differs $ml_address rename: *_timeout -> *_event_timeout 2002/08/14 FML::Process::Kernel use $config->get_as_array_ref( 'header_loop_check_rules' ) to get list. rename: refuse_further_processing() -> stop_this_process() define do_nothing($reason), same as stop_this_process() FML::Process::Alias Command ConfViewer Configure Distribute DocViewer Error HTMLify Kernel Spool ThreadTrack FML::Process::CGI::Kernel apply fix_perl_include_path(); after load_config_files() runs to add ml local library path to @INC. This is used for ml specific extention e.g. command extension. FML::Process::Kernel enable ml local message template handling variables define $ml_local_* for ml specific customize + ml_local_dir = $ml_home_dir::local + ml_local_lib_dir = $ml_local_dir::lib + ml_local_share_dir = $ml_local_dir::share + ml_local_message_template_dir = $ml_local_share_dir::message change definition for $message_template_dir: $fml_share_dir::message::$template_file_charset -> $fml_share_dir::message 2002/08/13 fml.org を 4.0 から fml-devel ベースへ移行開始 etc/include* __ml_home_prefix__::__ml_name__ -> __ml_name__@__ml_domain__ etc/config.cf* comment out $ml_name, $ml_domain FML::MTAControl::Postfix bug fix $fh-close() under defined($fh) is confirmed use "postconf -d" to expand variables Mail::Message::Encode remove FML::Encode and Mail::Message::Decode merge FML::Encode Mail::Message::Decode into Mail::Message::Encode FML::Header::Subject switched to use of Mail::Message::Encode 2002/08/11 FML::Encode プロトタイプを作ってみる。 XXX このモジュールは fml 4.0 でも使う 2002/08/09 libexec/error エラーアドレスの自動削除機能一通り完成 FML::Process::Error change lock granuality FML::Error validate syntax for target address to remove check if the target address is a ML member before deluser() runs 2002/08/08 FML::Error enable real deluser() FML::Credential FML::Command::{Auth,UserControl} FML::Command::Admin::chaddr FML::Command::User::{chaddr,off,on,subscribe,unsubscribe} FML::Process::{Command,Error,Kernel} change arguments of credential functions to clarify the target address: e.g. is_member($curproc, $args) -> is_member(addr) modified functions: o is_member() o is_privileged_member() o is_recipient() o match_system_accounts() 2002/08/07 libexec/error エラーアドレスの自動削除機能を実装 FML::Error::Cache FML::Process::Error FML::Error enable automatic user removing (prototype) FML::Process::{Kernel,Utils} define $curproc->{ scheduler } not _scheduler define access method scheduler(). please use it e.g. $curproc->scheduler(). FML::Process::Kernel lock() and unlock() accepts channel as the argument if needed. implemented o is_timeout( $channel ) o get_timeout( $channel ) o set_timeout( $channel, $time ) FML::Process::Error FML::ErrorAnalyze (removed) create FML::Error:::with separate clesses for cache manipulation and analyzer. modified to FML::Error::Cache for cache writing. FML::Process::Scheduler $scheduler_queue_dir -> $event_queue_dir Tie::JournaledFile check the file existence Tie::JournaledDir bug fix the default day type handling 2002/08/03 変数 define $scheduler_queue_dir FML::Process::Kernel Command Distribute Error FML::Process::Scheduler scheduler_init() Tie::JournaledFile enhance find: find(key, [mode]) where mode = scalar, array, array_ref implement get_all_values_as_hash_ref() bug fix FIRSTKEY() and NEXTKEY(), modified to use hash on memory Tie::JournaledDir bug fix keys() and each(), modified to use hash on memory. implement EXISTS(), DELETE(), CLEAR() implement get_all_values_as_hash_ref() FML::Header::MessageID modified to sync w:::Tie::JournaledDir usage FML::Article FML::Header FML::Process::Distribute Kernel use LogError() if appropriate 2002/07/31 ログファイル ログファイルフォーマットのデフォルトを変更 FML::Header FML::Header::MessageID disable some debug codes. switch DB from File::CacheDir to Tie::JournaledDir FML::Log use File::Basename; FML::Article s/Article/article/ Mail::Delivery::SMTP recipients::total=\d+ FML::Process::Distribute Mail::ThreadTrack::Analyze disable some debug messages 2002/07/30 変数 +error_analyzer_cache_type = File::CacheDir +error_analyzer_cache_mode = temporal +error_analyzer_cache_size = 14 libexec/error を書き上げよう! FML::Process::Error FML::ErrorAnalyze move error analyzer core functions to FML::ErrorAnalyze FML::Process::Kernel libexec::error not need reply_message() 2002/07/29 変数 nuke database_* sql_* FML::Process::Error bug fix::resolve_ml_specific_variables() and load_config_files() add a few function prototypes 2002/07/28 変数 $newml_command_init_dirs rename::init_config_dir_list -> newml_command_init_dirs added $shared_db_dir $var_dir $db_dir $lock_dir $tmp_dir $spool_dir member_maps = $primary_member_map (nuke members-admin) 2002/07/26 モデレータモードの予備作業 moderator の maps を定義する。 members-moderator recipients-moderator {add,del}moderator コマンドを作成 FML::Command::Admin::{add,del}admin members-admin recipients-admin の両方をアップデートする(けど、recipients の方は使わない)。 2002/07/25 FML::Config File::Sequence Utils IO::Adapter::File IO::Adapter::AtomicFile IO::File::Atomic rename::IO::File::Atomic -> IO::Adapter::AtomicFile IO::Adapter の改良継続中 FML::Process::Command improve error messages FML::Process::Kernel improve log messages IO::Adapter::File bug fix so that getline() returns undef if not opened 2002/07/24 IO::Adapter clean up remove AUTOLOAD() removed replace() IO::Adapter::DBI add missing open(), close() removed replace() implement getline() IO::Adapter::File removed replace() clean up comments IO::Adapter::SQL::toymodel removed since we discard sql model based framework FML::Credential FML::Command::UserControl FML::Command::Admin::chaddr change argv of FML::Credential::has_address_in_map(): ($map, $address) -> ($map, $config, $address) 2002/07/23 IO::Adapter の SQL コードを大改定 FML::Mailer FML::Command::Auth UserControl FML::Command::Admin::chaddr FML::Process::Distribute Utils Mail::Delivery::SMTP reconstruct SQL functions in IO::Adapter new IO::Adapter $map, $config; IO::Adapter IO::Adapter::DBI MySQL reconstruct MySQL functions o get_next_key() works now. o disable some functions once. FML::Config .ini sytle extension. for example [mysql:id] key = value So, we have the 2nd level hash value such as $config->{ key1 }->{ key2 } = $value and read::write it. bug fix {+,-}= operation in the second level. 2002/07/22 変数 READ_ONLY($admin_member_maps) mysql 設定の例を追加 FML::Config expand READ_ONLY($array) -> an array of READ_ONLY($array[$i]) IO::Adapter accept READ_ONLY($map) prohibit add/delete/replace call for read only maps. FML::Credential add is_recipient() for sender is an ML recipient or not. off/on command prototype FML::Command::User::confirm FML::Command::Admin::on FML::Command::Admin::off FML::Command::User::on FML::Command::User::off prototype on and off mode for recipient map 2002/07/20 FML::Command::Admin::unsubscribe member_map use config primary_member_map to member_maps recipient_map use config primary_recipient_map to recipient_maps 2002/07/19 FML::Process::Kernel repyl_message() handles makefml and *.cgi as special cases. FML::Process::CGI::Kernel cgi_execute_command() checks the command is allowed in commands_for_admin_cgi. XXX "commands_for_admin_cgi" is hard-coded. XXX we should enhance this for ml-admin::*.cgi et.al. FML::Restriction::Command enhance command syntax regexp FML::Command::Auth check user matching FML::Restriction::Command bug fix wrong command regexp FML::Process::Command remove not used variable check whether this command is allowed in this $level 2002/07/17 Mail::Message::MH add debug define new() bug fix first:\d+ handle a,b,c pattern FML::Command::SendFile use Mail::Message::MH FML::Command::UserControl FML::Command::Admin::log FML::Process::Kernel Utils FML::Process::CGI::Kernel define printing style format such as 'text', 'html', ... you can control it by the following access methods, get_print_style() and set_print_style(mode) FML::Command::Admin::dir file use FML::Restriction:: FML::MTAControl::Procmail remove garbage definitions FML::MTAControl::Postfix search only hash:, dbm::types in postfix alias_maps FML::Credential optionally, we accept case insensitive comparison of user part of the mail address. 2002/07/15 FML::Process::Utils define the following access methods: config() pcb() incoming_message_header() incoming_message_body() incoming_message() article_header() article_body() article_message() FML::Command::DataCheck FML::Filter::BodyCheck FML::Process::Command Distribute Error Kernel Utils modified to use access methods above. FML::Command use "$myname eq" not "$0 =~" FML::Config nuke debug::... if $0 =~ ::loader:: 2002/07/14 いくつかのコマンドの結果やエラーメールは管理者へも送るようにする 登録/削除についてのログ メンバー以外からの投稿/コマンドメールなど FML::Process::Utils implement which_message_nl() FML::Command FML::Command::UserControl FML::Command::User::confirm FML::Process::Command Distribute Kernel copy message and send it to $maintainer too use reply_message*() with $msg_args to copy the message if needed where $msg_args = { always_cc => $maintainer } or $msg_args = { recipient => $maintinaer } pertinently. FML::Command::UserControl use message_nl( {add,del}_{ok,fail} ... ) as a reply FML::Process::Kernel disabled makefml NOT TO USE reply_message() now 2002/07/13 コマンドシンタックスの見直し CGI もこれに合わせて修正 admin adduser admin useradd admin addadmin admin adminadd admin deluser admin userdel admin deladmin admin admindel FML::MTAControl FML::MTAControl::Procmail FML::Command::Admin::newml rmml newml 時に procmail の設定のテンプレートを作る。 rmml 時には消す。 FML::Process::Kernel check defined($ml_name) in ml_* variable handlings 2002/07/12 procmailrc のサンプルもつくってみやう newml/rmml コマンドが procmailrc のテンプレートを生成/削除する ようにする 2002/07/11 FML::MTAControl::Qmail remove ~fml::.qmail-* when the ML is removed. 2002/07/10 CPAN modules import Unicode::Japanese 0.09 CPAN documents catch up (2002::07::10) 2002/06/30-2002/07/30 ドキュメントクリーニング きゃんぺーん 2002/06/30 FML::Command::HTMLify more check of input FML::Process::ThreadTrack fix ISA for ->speculate_max_id() FML::Process::ConfViewer Spool fix the condition to show help FML::Process::Error $self -> $curproc 2002/06/28 FML::CGI::Admin::Menu FML::Process::CGI::Kernel separate execution of the command and the menu pop up. Firstly execute run_cgi_main() and show tables after that. CGI の情報更新をきちんとするために、CGI の関数呼びだしの基本構 造を修正 2002/06/27 バーチャルドメインサポートの修正、全面的オーバホール FML::MTAControl FML::Command::Admin::newml rmml FML::MTAControl::Postfix Qmail major overhaul o reconstruct architecture o bug fix virtual domain support o sync w:::FML::Process overhaul to bug fix virtual domain support FML::Process::Alias Command ConfViewer Configure Distribute DocViewer Error HTMLify Kernel Spool Switch ThreadTrack Utils FML::Process::CGI::Kernel major overhaul::delayed loading of *.cf files. The loading is done within prepare() method now to handle virtual domains properly. FML::Command::HTMLify not need to validate ml existence 2002/06/25 clean up CGI ... FML::CGI::Admin::List scroll size is set by the length of maps FML::Command::Admin::rmml fix virtual domain handling. sync w:::newml logic clean up (white spaces) clean up. nuke _get_domain_info (not used) 2002/06/24 CGI の見栄えを大改良中 FML::Process::Utils get_ml_list()::check $ml_home_prefix, bug fix default domain handling bug fix ml_home_prefix() args, more defined() checks FML::Config FML::Process::Kernel FML::Process::CGI::Kernel more defined() checks and sanity check if could FML::CGI::Admin::ML Menu User FML::Process::CGI::Kernel clean up menu, bug fix run_cgi_menu() args 2002/06/23 バーチャルドメインのサポート bug fix postfix および qmail は makefml newml を実行するだけで バーチャルドメインの設定まで全自動 # 最初の一回はちょっとだけ MTA の設定が必要だけどね FML::Command::Admin::newml insert "$ml_domain $ml_domain" to the file "virtual" at the first time since $ml_domain is one of $mydestination. install a template for qmail::control::virtualdomains 2002/06/22 bug fix domain/virtual domain handling (specially in CGI) FML::Process::CGI::Kernel use $curproc->ml_XXX() as could as possible in new() clean up table configuration: define tables for function and attributes FML::Log eval Log(warn ...) || print stderr it FML::Restriction::Base define navi_command as the same as command FML::Config defined() check more FML::Command::Admin::newml fix args of ml_home_xxx() FML::CGI::Admin::ML change get_ml_list() args FML::CGI::Admin::Menu classify the command in the navigation and main FML::Process::Utils define ml_name() method ml_domain() returns the current process's domain not default one. ml_home_prefix() and get_ml_list() behave more properly to reflect the current situation. fix ml_domain handling of rewrite_config_if_needed(). 2002/06/21 CGI bug fixes FML::Process::Utils FML::Process::CGI::Kernel move get_ml_list() and get_recipient_list() from Process::CGI::Kernel to Process::Utils. FML::CGI::Admin::Menu FML::Command::Admin::newml set up $ml_name dynamically FML::Command::UserControl ignore non-existed files, not croak() IO::Adapter::File close write handle and read handle after the write one. FML::Command::UserControl use IO::Adapter->get_next_key() not getline() for member list up 2002/06/01 major variable naming overhaul relocating variable definitions in etc/src/ align convention: for example, use_XXX XXX_rules XXX_dir XXX_cache_dir rename: $recipient_limit -> $smtp_recipient_limit $incoming_mail_dir -> $incoming_mail_cache_dir $outgoing_mail_dir -> $outgoing_mail_cache_dir $qmail_control_virtualdomains_file -> $qmail_virtualdomains_file s/header_filter/article_header_filter/ s/header_rewrite/article_header_rewrite/ s/body_filter/article_body_filter/ s/subject_tag/article_subject_tag/ verify_XXX_* -> check_XXX newly defined: $use_digest_header_rewrite removed: $smtp_log_dir $smtp_log_file overhaul variable naming convention defined check FNF-ify fix argument declarations FML::Command::Auth permit_admin_member_maps() return 0 if not match FML::Process::Kernel temp_file_path() ensures temp file name uniqueness by counting the number of times this function is called. 2002/05/31 FML::Header add rewrite_date() for header rewrite Date::to X-Date: 2002/05/29 FML::Command::Admin::chaddr bug fix::error_set() -> croak() FML::Process::Switch try to save the critical error message at $ml_home_prefix/ if could 2002/05/28 rename/reconstruct variables clarify prefixes in caution. define or rename sysconf_dir et.al. to $domain_XXX_config_dir define $path_postmap FML::Command::Admin::newml mkdir @$init_config_dir_list run "postmap virtual" mainconf_dir -> domain_mail_config_dir FML::Credential $config->get_as_array_ref FML::Command::Auth implement permit_admin_member_maps() 2002/05/27 new variable naming convention add caution define terms on "mail" and "message" change::_message_ -> _mail_ define $postfix_virtual_map_file add $admin_member_maps to $member_maps change attribute names: o permit_members_only -> permit_member_maps o check_command -> check_admin_member_password FML::Mailer FML::Process::Distribute Mail::Delivery::{SMTP,Utils} pass smtp log file handle to Mail::Delivery FML::Process::Distribute permit_members_only -> permit_member_maps FML::Command::Admin::newml FML::MTAControl FML::MTAControl::{Postfix,Qmail} set up virtual map if needed FML::Process::Kernel only user "fml" should read lock files. define terms on "mail" and "message"::_message_ -> _mail_ permit_members_only -> permit_member_maps FML::Process::Command FML::Command::Auth rearrange admin command authentication to sync w/ new variable names FML::Process::Utils implement is_default_domain() 2002/05/25 FML::Command::Admin::newml fix $templ_files be ARRAY_REF FML::MTAControl::Qmail install .qmail-do:ma:-$ml for .qmail-do.ma.in-$ml FML::Command::Admin::newml FML::Process::Configure Utils at the first stage of makefml, care $config and rewrite it, if needed, when we handle virtual domain. implement $curproc->rewrite_config_if_needed() for it. 2002/05/24 variables reconstruct $newml_command_*_template_files FML::Config::Convert implement convert_file(srcfile, dstfile, params) FML::Log print STDERR $msg if Log() fails FML::MTAControl FML::Command::Admin::newml use FML::MTAControl ACAP 2002/05/23 FML::Header::Subject add mime decode for subject Mail::Message::Decode Encode FNF-ify, fix documents and @EXPORTS 2002/05/22 FML::Mailer save smtp log at var/mail/outgoing/ 2002/05/21 variables define $error_cache_dir define $newml_command_postfix_template_files define $newml_command_qmail_template_files define $incoming_message_dir define $outgoing_message_dir var/mail/{incoming,outgoing,queue}/ define $use_outgoing_message_cache = yes define $outgoing_message_cache_size = 128 etc/aliases enable auto error analyzer by default FML::Process::Kernel implement $curproc->open_outgoing_message_channel() $mincoming_dir -> $incoming_message_dir FML::Process::Distribute use $curproc->open_outgoing_message_channel() not _smtplog to save SMTP transaction logs. FML::Command::Admin::newml $newml_command_template_files -> $newml_command_postfix_template_files Mail::Bounce::Postfix19991231 validate input data FML::Process::Error implement a prototype to cache error data 2002/05/19 add/enable a prototype of libexe::fml::error (mead) variables define $use_error_analyzer define $subscribe_command_auth_type define $listinfo_base_dir $command_prompot -> $command_prompt $command_chaddr_type -> $chaddr_command_auth_type $command_unsubscribe_type -> $unsubscribe_command_auth_type FML::Process::Error work if $use_error_analyzer is 'yes' add hooks finish() checks if this error message is effective or not. fix typo and missing definition FML::Process::Command fix building logic of $command_args and $options to make admin command work again. fix $admin_prefix trap rearrange structure FNF-ify clarify the current context is under confirmation or not. ignorance of commands are dependent on this context. nuke mode=special which is not used. send back statistics and original message FML::Command::DataCheck fix parse_command_arguments() arguments Mail::Message::MH fix wrong last:\d+ counting logic 2002/05/18 FML::Process::Command reconstruct command check logic (1) Mail::Message implement message_text_as_array_ref() updated IM to im-141 + local patch (tats20020413.diff) FML::Filter::BodyCheck add reject_uuencode() 2002/05/17 FML::Process::Kernel check whether $use_incoming_message_cache is yes use $mincoming_cache_size as cache modulus save incoming message at $ml_home_dir/var/mincoming/ File::CacheDir update document on new() arguments bug fix eval{} should do eval { use()&&new() } new variables: (etc/) use_incoming_message_cache = yes incoming_message_cache_size = 128 2002/05/16 FML::Process::CGI::Kernel pick up address_selected not address Mail::Message::ToHTML not reset @AnyDBM_File::ISA. It is better for us to use the default @ISA 2002/05/13 FML::Process::Utils implement config_cf_filepath($ml, $domain) is_config_cf_exist($ml, $domain) FML::Command::HTMLify validate if config.cf exists 2002/05/11 FML::Filter::ContentCheck add Log deteled mimetype at only_plaintext() and typo fix fix wrong log message (but is it correct fix ?). FNF-ify FML::Language::Japanese::Utils _look_not_iso2022jp_string::add trivial check Mail::Message fix::parser() should handle header only message. no no no, not reset $data_ptr unless body nuke \s*$ 2002/05/10 FML::Filter::ContentCheck add function permit_mimetype() and reject_mimetype() add function permit_rules() and reject_rules() 2002/04/30 FML::Command::Admin::check add prototype for diagnostics 2002/04/28 FML::Process::Kernel check $curproc->is_refused() more before action at each step Mail::Message fix comment. add loop label. FNF. more checks by defined() and whether the content is not empty. new() not need $InComingMessage here remove module global variable $InComingMessage check invalid multipart format 2002/04/27 FML::Process::Kernel kern.not_member -> error.not_member FML::Process::Kernel disable debug message Mail::Message check more data by defined() FML::Process::Kernel modified to not using FileHandle::pipe() add methods to prepare and clean up temporary files implement parse_exception() implement message_nl() to separete message converter into natural language and message handling parts FML::Process::CGI::Kernel Param convert exception syntax into the new style. See FNF convert message to natual language if could 2002/04/26 FML::Process::Flow run clean_up_tmpfiles() finally FML::Process::Kernel fix typo define "permit_commands_for_stranger" (only define not implemented :) FML::Process::Command FML::Command::DataCheck permit_commands_for_stranger works variables add rule permit_commands_for_stranger for $command_restrictions 2002/04/25 variables rename variable::available_commands_for_xxx -> commands_for_xxx FML::Command::Admin::htmlify check $use_html_archive value before action FML::MTAControl implement get_aliases_as_hash_ref() new() accepts { mta_type => ... } argument FML::Process::Switch FML::Process::Alias new utility::fmlalias e.g. shows not only fml but all alias entries Mail::Message check defined($InComingMessage) before $body_size estimation 2002/04/24 FML::Header::Subject replace subject to Subject define $path_postconf File::Utils define append() FML::Command::Admin::{newml, rmml} use File::Utils and FML::MTAControl to share codes. FML::Command::Admin::newml check $ml_name duplication over all $alias_maps (postfix case) FML::Filter::ContentCheck bugfix object argument 2002/04/23 FML::Process::Distribute Kernel fix errro message and enable the rejected message forwarding FML::Command::Admin::newml check alias duplication enable cgi FML::Restriction::Base define $ml_name_specified FML::CGI::Admin::Menu FML::Process::CGI::Kernel FML::CGI::Admin::ML define cgi_try_get_ml_name() enabled newml and rmml on CGI. 2002/04/22 FML::Process::CGI::Kernel sort ml list FML::Command::HTMLify bug fix subdirs sorting algorithm Mail::Message::Spool check value of $args->{ use_subdir } FML::Article error if the article already exists 2002/04/21 FML::Command::Admin::newml install .htaccess only for the first time Mail::Message::ToHTML you can specify $ENV{MAX} Mail::Message::ToHTML for () { fork() && call htmlify_file() } Mail::Message::ToHTML htmlify_dir() accepts options::$has_fork and $max (for debug) Mail::Message::ToHTML sort years in monthly.index bug fix the scan range for each subdir FML::Command::HTMLify sort -n subdirs list 2002/04/20 FML::Filter::BodyCheck comment out "local($*) = 0;" FML::Filter::TrafficMonitor disable almost all codes imported from fml 4.0 once anyway configure add --with-warning FML::Command::HTMLify FML::Process::HTMLify bug fix subdir checking use FML::Command::HTMLify to share htmlify code between fmlhtmlify and "makefml htmlify". FML::Command::Admin::htmlify remove $options FML::Process::Configure log raw error message 2002/04/19 FML::Process::Spool check argument and show help if invalid FML::Process::Switch stop $ml_home_dir search when we can get it. Mail::Message::ToHTML bug fix::check the source file existence more severely 2002/04/18 Mail::Message::ToHTML check $args->{ file } more severely in _update_relation() FML::Process::Distribute eval htmlify_file() to avoid unknown error ;) FML::Process::Distribute eval filtering 2002/04/16 FML::Process::Switch fmlspool --srcdir not --dstdir FML::Process::Spool fix conversion algorithm 2002/04/15 FML::Process::Switch fmlspool --srcdir not --dstdir FML::Process::Spool fix conversion algorithm add a new utility "fmlspool" add a new utility::fmlspool to handle spool directory FML::Process::Utils implement ml_home_dir() FML::Process::Switch enable fmlspool FML::Article implement subdirpath(). check $curproc->{'incoming_message'}->{ message } in new() data input. FML::Process::Kernel implement set_umask_as_public(), reset_umask() for umask control. FML::Process::Distribute umask and permission control for html archives Mail::Message::ToHTML BEGIN { @AnyDBM_File::ISA = qw(DB_File GDBM_File NDBM_File); } FML::Process::HTMLify consider spool:::may has subdir(s) 2002/04/14 Mail::Message::ToHTML fix $subdir handling on month boundary validate $curid ($self->{ _current_id}) validate or warn input into Jcode set $code for Jcode if needed CPAN modules updated Jcode to 0.79 2002/04/13 FML::Command::User::unsubscribe use FML::Confirm not via eval{ use ..} FML::Process::Command select the error message by the $xxx_restrictions error reason Mail::Message implement whole_message_as_string_ref() FML::Process::Command reply_message( OBJ(Mail::Message) ) when the message is rejected by $command_restrictions. FML::Process::Kernel o reply_message() can handle OBJ(Mail::Message). o save error reason at pcb area when the message is rejected by xxx_restrictions. 2002/04/12 FML::Process::Distribute send back mesg "we deny requests from system accounts" FML::Process::Command check by permit_command() before command execution ;) send back mesg "we deny requests from system accounts" FML::CGI::Calender switched to the current style 2002/04/11 FML::Config has_attribute() should look up %_fml_config_result FML::Process::Command accept commands, e.g. subscribe, allowed for not members 2002/04/10 2002/03 分クリーンアップおわり FML::Filter クラスによるフィンルタリングを有効にする FML::Filter:: のバグ修正 FML::Process::Distribute Kernel enable filtering. implement access methods to control filtering. o $curproc->refuse_further_processing() o $curproc->is_refused() 2002/04/07 variables define $primary_admin_member_password_map rename $admin_member_passwd_maps -> $admin_member_password_maps FML::Command::Admin::chaddr chaddr over all maps FML::Command::Admin::get clean up variable names to be easy for your eyes FML::Command::Admin::htmlify doc::remove makefml description add --dstdir=DIR FNF-ify FML::Command::Admin::list show all maps in $xxx_maps FML::Command::Admin::log fix::add comments use HTML::FromText class to espace metchars FML::Process::Calender clean up documents, comments use $curproc not $self if appropriate FML::Process::DocViewer remove AUTOLOAD() clean up 2002/04/06 remove "recipients" file from default $recipient_maps Mail::Message::Spool define dirpath() FML::Article mkdir subdir if needed 2002/04/05 spool (記事のスプール)の階層化構造をオプションにする 変数 $use_spool_subdir を創設する 2002/04/03 clean up, audit campaign 春だからお掃除しましょう(意味不明) 2002/04/01 実際に構築しつつテストしてみる。 configure はもっといろいろチェックするべし 不便なものを実装する。e.g. makefml list more check and expansion by configure we should use values speculated by configure if could. default_ml_home_prefix = @mlspooldir@ FML::Command::Admin::newml not install CVS expand default_domain by config.status FML::Command::UserControl FML::Command::Admin::list enable "admin list" command admin list $ml {members,actives,recipients} FML::Process::Switch warn() if $ml_name not specified 2002/03/31 "makefml newml" set up ~fml/fml/listinfo/$domain/$ml/ MLの作成時に WWW ページを用意する( listinfo を作る)。 FML::Command::Admin::newml variables + remove $message_message_dir + change $message_template_dir + change $html_archive_dir + add $listinfo_dir 階層化構造を取れるようにする HTML 化記事を置くディレクトリ スプールディレクトリ FML::Process::Kernel $message_message_dir -> $message_template_dir FML::Command::Admin::htmlify FML::Process::{Distribute,HTMLify} Mail::Message::ToHTML Mail::HTML::Lite rename class::Mail::HTML::Lite -> Mail::Message::ToHTML change .ht* database names FML::Article Mail::Message::Spool Mail::ThreadTrack Mail::ThreadTrack::DB Print.pm Mail::ThreadTrack::Print::HTML Text.pm use Mail::Message::Spool::filepath() for the article file path. use $self->filepath() which is based on Mail::Message::Spool Mail::Message::Spool::spool arg changes::$spool_dir -> $base_dir Mail::HTML::Lite rename message_file*() -> html_file*() html file path is YYYYMM/msg$id.html by default 2002/03/30 FML::Article FML::Command::SendFile FML::Process::Distribute FML::Article::filepath() determines the article file path. admin {delete,unlink} -> admin file $subcommand コマンド名が衝突する可能性があるため admin コマンドのシンタックスの拡張をはじめる。 2002/03/25 enable admin {delete,unlink} FML::Restriction::Base define file FML::Command::DirUtils fix to use FML::Restriction::Base not CGI 2002/03/24 FML::Restriction::Base define directory regexp as [-a-zA-Z0-9]+ permit . in "user" part in e.g. "address" variables define $path_ls for admin {dir,ls} enhance dommands enable admin {ls,dir,delete,unlink} 2002/03/23 FML::Command::Auth admin コマンドのパスワード認証を有効にする FML::Command implement rewrite_prompt(). It is used to hide password et. al. FML::Process::Command clean up use rewrite_prompt() by FML::Command to hide admin password. variables define $admin_member_passwd_maps. admin password admin pass new modules from CPAN import Crypt-UnixCrypt-1.0, perl-only implementation of the crypt(3). 2002/03/21 コマンドの認証について改良 FML::Credential reconstruct is*member() functions implement primitive is_privileged_member() FML::Process::Command clean up :::clarify the logic: o valid command syntax o command mode for a user, admin and stranger o add prototype of admin command auth variable: define $admin_command_restrictions FML::Command::Auth add prototype of admin command auth 2002/03/20 CGI の再構成: clean up's loader prepare a hook to inform some hints via $main_cf FML::Process::Utils implement hints() FML::Command::Admin::newml setup admin::{thread,config,menu}.cgi based on libexec::loader and hints FML::Config::Convert replace __hints_for_fml_process__ FML::Process::Switch enable config.cgi , remove makefml.cgi FML::CGI::ThreadTrack vertical align of menus FML::Process::CGI::Kernel change layout in table a little. define run_cgi_title() and run_cgi_help() add options bar to switch the language (dummy yet :-) FML::CGI::Admin::Menu remove run_cgi_help() once 2002/03/19 CGI の再構成: FML::CGI と FML::Command 間のトランポリン機構 コマンド依存の機能を FML::Command クラスへ委任する FML::Process::CGI::Param accpet empty value even if it not matches filter:) FML::Command::Admin::subscribe unsubscribe.pm implement cgi_menu() to show command specific menu in CGI screen FML::CGI::Admin::Menu FML::Process::CGI::Kernel o prepend cgi_ or run_cgi to function name. o implement trampoline mechanism using FML::Command::class. o change::pop_menu -> scrolling_list FML::Command::UserControl define FML::Command::UserControl class to share user control codes. modified Admin::{subscribe,unsubscribe} commands to use it. new commands これらの admin コマンドが新たに使えるようになりました。 admin addadmin admin addpriv admin byeadmin admin byepriv admin log new variables $primary_admin_member_map $admin_member_maps 2002/03/18 CGI の再構成をはじめる FML::CGI::* FML::Process::CGI::* reconstruct CGI around structure phase 1: o table not frame based menu support (similar style to www.netbsd.org) o prepare method for each location in the screen. for example, + run_cgi_main() to show main menu at the center in the screen. + run_cgi_navigator() to show navigation bar at the left. o longjmp() by eval::croak when we encounter insecure conditions. FML::CGI::Admin::Menu FML::Process::CGI::Kernel cosmetics FNF define cgi_execute_command() and try_get_address() into FML::Process::CGI::Kernel and remove them from FML::CGI::Admin::Menu FML::Process::Utils define ml_domain() but same as default_domain() yet new variables (for CGI) $cgi_main_menu_color $cgi_navigation_bar_color 2002/03/17 chaddr コマンドが動くようになった! chaddr admin chaddr makefml chaddr この3つ全部です。 FML::Command::User::chaddr works again! if either old or new addresses in chaddr arguments is an ML member, try to confirm this request irrespective of "From:" address. FML::Command::Admin::subscribe unsubscribe.pm FML::Command::User::chaddr confirm.pm change $command_args argument: $command_args->{ adddress } => $command_args->{ command_data } FML::Process::Kernel reply_message::append \n to message if \n$ is missing reconstruct message queue subsystem internal. we can handle output styles for message queue input properly. メッセージキューイングシステム再構築 受信者ベースでのまとめあげ処理などを正しく処理する XXX これで chaddr コマンドが書けます。 2002/03/16 FML::Process::Kernel new message queue handling. sync with reply-message branch clean up logic to handle messages queue. for $recipient ( queue ) { apply the following rules for messages returned to specified $recipient. 1. pick up text messages and put them into the first part. 2. append non text messages } 2002/03/06 variables define directory for cgi and HTML article archive define $newml_command_template_files define $available_commands_for_admin_cgi FML::Config implement get_as_array_ref() FML::Process::Switch makefml --force $command $ml ... 2002/02/24 update /etc: define the following variables $fml_owner $fml_group $syscon_dir $mailconf_dir $mail_aliases_file FML::Process::Utils define fml_owner(), fml_group() and mail_aliases(). FML::Config::Convert replace $fml_owner and $ml_home_dir. FML::Config set(key, value) and update() informs FML::Config to expand variables. FML::Command::Admin::newml install aliases when makefml newml runs. 2002/02/23 FML::Command::SendFile FML::Command::Admin::get fix filename in mime header FML::Process::Command and etc/ validate if the requested admin command is permited or not. define $available_commands_for_privileged_user rename $available_commands -> $available_commands_for_user 2002/02/20 File::Sequence add function _search_max_id_from_top() clean up commands 多くのコマンドを動くようにした(微修正だが:-)。 update $available_commands_for_stranger and $available_commands fix path::$message_template_dir -> $ml_home_dir o $guide_file o $help_file o $objective_file o $summary_file FML::Process::Kernel add Reply-To::into our reply message 2002/02/19 FML::Command remove require_lock() due to obsolete 2002/02/18 clean up FML::Command::{User,Admin}::* remove FML::Command::Utils and ErroStatus we should not inherit anything as could as possible. enhance xxx_restrictions: enable "permit_anyone" can be used in {post,command}_restrictions. 2002/02/17 FML::Config implement hook extension. For example, $config->is_hook_defined( 'START_HOOK' ); $config->get_hook( 'START_HOOK' ); FML::Process::Command ConfViewer Configure Distribute DocViewer HTMLify ThreadTrack implement several hooks import HTML-Template-2.5 from CPAN change variables $confirm_keyword -> $confirm_command_prefix add $admin_command_prefix FML::Command::Admin::htmlify makefml htmlify elena --srcdir=.. --outdir=... Mail::Delivery::ESMTP fix argument admin コマンドを動くようにする まだ認証してないけど :) FML::Command::User::confirm remove ErrorStatus, FML::Command::Utils; define new() call User::Command::XXX without lock since already locked now. FML::Config fix return value by FETCH() to be without \s*$ FML::Command change use() and new(). not use ErrorStatus. check $command_args->{ override_need_no_lock } to control lock. FML::Process::Distribute bug fix definitions on hooks FML::Process::Kernel fix file name in searching message template 2002/02/13 define access method need_lock(). each command module determins whether it needs lock or not. FML::Command と FML::Command::* 以下の変更いろいろ 各コマンドは各自 need_lock() というアクセスメソッドで ロックが必要かどうかを FML::Command に教えるべし XXX 拡張を考慮の上、こうしてみた FML::Command::SendFile remove import of ErrorStatus rename module::TinyScheduler -> Calender::Lite FML::Process::Switch FML::CGI::Scheduler -> FML::CGI::Calender FML::Process::Scheduler -> FML::Process::Calender 2002/02/11 create FML::Restriction::Command class FML::Command::SendFile FML::Command::User::{guide,help,deny,objective} send back file file in $ml_home_dir if found. return the default message if not found. "guide", "help", "objective" commands use this logic. ユーザ用のコマンドの送り返し方を変更 1. (4.0 風にいえば) $DIR の help ファイルを送り返す 2. help ファイルがないなら、デフォルトのメッセージを使う 1. は 4.0 との互換性のためで、 fml-devel では 2. がデフォルト( help ファイルは作らない ) 2002/02/04 FML::Process::ThreadTrack determine the max sequence id by considering last mofieid time among the sequence file and thread databases. Mail::ThreadTrack::DB implement db_last_modified() It return the last modified time of "date" DB in dateabase as unix time. 2002/02/03 main.cf.in $ml_home_prefix -> $default_ml_home_prefix FML::Command::Admin::newml FML::Process::Utils ml_home_prefix() can recognize virtual domain. modified to use it. we should not use $curproc->{ main_cf } directrly in modules out of FML::Process:: we implement the following methods in FML::Process::Utils and use them. o $curproc->executable_prefix() o $curproc->template_files_dir_for_newml() 2002/02/02 FML::Process::Utils define access methods::default_domain(), ml_home_prefix() (prototype) FML::Process::Switch FML::Process::CGI::Kernel use FML::Process::Utils::__ml_home_prefix_from_main_cf() to get $ml_home_prefix. TinyScheduler Mail::ThreadTrack::DB use File::Spec 2002/02/01 remove $ENV{debug} based toggle flag 2002/01/27 FML::Command::Admin::newml "makefml newml" virtual domain support. For exmaple, % makefml newml elena@nuinui.net The ml_home_dir is speculated from $virtual_maps in main.cf. IO::Adapter clean up campaign ?:) Mail::Delivery::SMTP IO::Adapter IO::Adapter::{Array,DBI,File,MySQL} clarify IO::Adapter definition and clean up get_XXX() functions. remove get_member(), get_active() and get_recipient() define get_next_key() and get_next_value() and clarify thier definitions. add IMPLEMENTATION.jp FML::Credential IO::Adapter IO::Adapter::DBI clarify IO::Adapter::find() usage. find() returns "key value" by default and "key" if requested. add want option e.g. find(key, { want => $what } ). File::Sequence search_max_id() searches all keys if full_search option specified FML::Command::SendFile clarify function acl, arguments more FML::Command::User::get clarify function arguments more 2002/01/20 /etc/fml/main.cf define $virtual_maps FML::Process::Utils implement get_virtual_maps() FML::Process::Kernel fix module loading of Mail::Delivery::Queue FML::Command FML::Command::SendFile fixed to call up error to FML::Process::Command layer FML::Process::Command more comments, log. fix message handling to use object to get command string returned by find_first_plaintext_message(). 2002/01/16 change Mail::Message naming convention. FML::Article Parse FML::Filter::BodyCheck HeaderCheck TrafficMonitor FML::Process::Command Distribute Kernel Mail::Bounce Message Mail::Bounce::DSN Exim GOO Postfix19991231 SimpleMatch Mail::Delivery::SMTP Mail::HTML::Lite Mail::ThreadTrack::Analyze HeaderRewrite public -> private: o head_message o last_message o next_message o prev_message prefix change: o rfc822_message_ -> whole_message_ o get_first_plaintext_message() -> find_first_plaintext_message() o get_encoding_mechanism() -> encoding_mechanism() o get_data_type() -> data_type() o get_data_type_list() -> data_type_list() renamed: o get_offset() - >offset_pair() o header_in_body_part() -> message_fields() o data_in_body_part() -> message_text() where we use RFC822 flabour naming convention. rfc822 says "message = fields + text" and rfc2047 says "message" as defined in RFC 822, with all header fields optional. 2002/01/14 Mail::HTML::Lite define default value. delayed loading by eval q{ use .. }. validate defined( $db->{ _thread_list }->{ $id } ). _head_thread()::fix head_thread search algorithm. rename __search_default_next_thread_id() to __search_default_next_id_in_thread(). __sort_yyyymm()::validate value is not null. 2002/01/13, 01/12, ... final clean up campaign in 2001 クリーニングキャンペーン 2001 final はいまだに続いているぞ;-) Mail::Message FML::parse rfc822_message_FUNCTION() メッセージ全体( Mail::Message の chain 全体)に対する メソッドには rfc822_message_ を頭につけるように名前をあわせる File::SimpleLock Mail::Delivery::Queue use Fcntl qw(:DEFAULT :flock), remove LOCK_XX() definitions. 2001/12/25 Mail::HTML::Lite bug fix::_print_li_filename() check is too restricted 2001/12/22,23,24,25 final clean up campaign in 2001 クリーニングキャンペーン 2001 ファイナル:) FNF-ify コメントおよびドキュメントの更新 空白の削除 \s*$ 使っていないので削除したモジュール FML::Messages FML::MIME FML::Language::Japanese::Subject FML::MIME は Mail::Message::Decode および Mail::Message::Encode の2つにわかれたよ renamed FML::Checksum -> Mail::Message::Checksum 2001/12/22 FML::Process::Kernel remove FML::Messages TinyScheduler define get_mode() for symmetric definition. 2001/12/18 記事の HTML 化を可能にする(デフォルトで ON) use_html_archive = yes (デフォルト) ~fml/public_html/mlarchive/ML名/ FML::Process::Kernel define $fml_owner_home_dir by process $uid FML::Process::Distribute htlmify article 2001/12/16 FML::Messages IO::Adapter::LDAP Mail::Message::Date Mail::Message::Language::Japanese::Subject nuke "require Exporter, which is not needed INSTALL.sh warn you should update loader if needed loader.in use $fmlconfdir not $sysconfdir use IO::File not FileHandle 2001/12/11 FML::Command::Admin::newml ensure installed file mode to be 0644 TinyScheduler speculate $user by $$ unless defined $user ./configure の拡張 メッセージをいろいろつけたす --with-fml-group=$GROUP --with-fmlconfdir=$prefix/etc/fml 2001/12/09 インストーラのバグをとる makefml の引数チェックのバグを修正 fml/etc/ 以下の構成を変更する makefml newml は config.cf 生成時にML名の変更をする 2001/12/08 TinyScheduler more proper error messages FML::Process::Configure fix error handling, define finish() to avoid loading error FML::Process::DocViewer add path for perl executatbles e.g. ::usr::local::bin 2001/11/27 FML::Log Tie::JournaledDir FML::Date -> Mail::Message::Date Mail::Message::Date remove MTI.. message update comments clean up FNF-ify Mail::ThreadTrack::Analyze run prepare_history_info($msg) if $self->{ _is_rewrite_header } configure @sysconfdir@ -> @sysconfdir@/fml modify message FML::Process::Switch modified not to use Standalone loader has Standalone by itself now. config.sh.in etc/main.cf.in @sysconfdir@ -> @sysconfdir@::fml FML::Process::Switch libexec/loader.in modified not to use Standalone loader has Standalone by itself now. 2001/11/26 FML::Process::Kernel bug fix missing mkdir() argument FML::Process::Distribute Mail::ThreadTrack Mail::ThreadTrack::Analyze toggle header rewriting (subject) to add thread id. off by default config.cf define $use_thread_subject_tag to toggle header rewrite 2001/11/25 more tainted safe (but needs more consideration, may be use of FML::Restriction class) TinyScheduler FML::Process::ConfViewer, FML::Process::Scheduler FML::Filter::BodyCheck validate get_first_plaintext_message() return value libexec/loader.in we should not use @INC derived from $0 reset PATH in the early stage FML::Process::* implement help() method enable --help for all command line programs verify_request() checks @ARGV and show help() if needed FML::Process::Switch enable distribute and command check whether getopt() options are given or not. enable --help for all command line programs xxx.cgi SHOULD NOT ACCPET the same options as command line program xxx does. FML::Process::Kernel trap --help in new() to show and exit asap FML::Process::ConfViewer fmlconf and makefml are separete now FML::Process::CGI::Kernel change defualt target to _top FML::Process::CGI::Param FML::Restriction reconstructured safe parameter definitions 2001/11/21 FML::Process::Switch fmlsch -h to show help FML::Process::Scheduler TinyScheduler clean up fmlsch FNF-ify handle options by getopt() in Process::Scheduler not TinySchedule make "fmlsch help" work fix entry duplication bug in parser print_specific_month() can handle (month, year) pair define set_mode() use env var BROWSER ("w3m" by default) 2001/11/20 File::Sequence implement search_max_id() in hash key more debug Mail::ThreadTrack::DB db_hash( $type ) to return hash reference for $type Mail::ThreadTrack::HeaderRewrite validate variables FML::Process::ThreadTrack update database for latest not-yet-analyzed articles. 2001/11/19 Mail::ThreadTrack implement set_fd(), get_fd() implemente set_order() FML::Process::ThreadTrack Mail::ThreadTrack::Print split functions for list and summary. "list" shows thread summary but "summary" shows thread summary + article summary. enhance fmlthread to provide CUI, oh this is useful ! Mail::ThreadTrack::Print enable --reverse for summary, list command check reverse_order value ;-) Mail::ThreadTrack::Print::Message check value of header fields, which is undefined in some cases Mail::ThreadTrack::Print::Text implement show_articles_in_thread() FML::CGI::ThreadTrack summary listing on CGI is normal order by default 2001/11/18 FML::Article implement speculate_max_id() FML::Process::ThreadTrack change max_id speculation strategy: 1. check the max_id is given or not, use it if given 2. try max_id() of FML::Article; 3. speculate_max_id($spool_dir) in FML::Article fml/etc/paths.cf ./configure が paths.cf を作る。 2001/11/17 FML::Process::HTMLify Mail::HTML::Lite disable debug code, enable it when $ENV{debug} is defined FML::CGI::Configure ThreadTrack.pm FML::Process::Switch Mail::ThreadTrack Mail::ThreadTrack::Print::HTML change default target to _top use $msg_base_url to show link to article 2001/11/16 Mail::ThreadTrack new()::save $args as _saved_args in $self Mail::ThreadTrack::DB fix _status but in unpolite way. XXX fix it ! 2001/11/13 CGI 新スタイルへ変更他、 Problem 追跡システム、スケジューラ、makefml CGI 版 (プロトタイプ) すべて動くようにした FML::Process::CGI::Kernel some cgi may need no ml_name FML::Process::CGI::Param fix address regexp, define $command, modify error return way FML::Process::CGI::Kernel move get_ml_list() to FML::Process::CGI::Kernel from FML::CGI::ThreadTrack 2001/11/12 use autoconf いろいろ改造する。そういうわけで # useradd fml # ./configure; make install というインストール方式になりました。 loader loader generated from loader.in (autoconf) Standalone expand ${variable} FML::CGI::ThreadTrack fix typo, $myname resolved by $curproc->myname() FML::Process::Switch fix to introduce $config_dir (etc::fml) from main.cf default_config -> default_config_cf FML::CGI::ThreadTrack FML::Process::CGI::Kernel Param.pm move "function to get paramlist" to FML::Process::CGI::Param module implement safe_pramlist\d+_\S+() via AUTOLOAD() 2001/11/11 Mail::ThreadTrack::Print::Sort change cost evaluation logic (numeric now) Mail::ThreadTrack::Print Mail::ThreadTrack::Print::HTML Message.pm clean up summary() mode for both text and html modes. print() method knows what should it do for text::html mode. Mail::ThreadTrack::HeaderRewrite defined $rh->{ _articles }->{ $thread_id } Mail::ThreadTrack::Print Mail::ThreadTrack::Print::HTML Text.pm dynamic binding accoding to mode::text or html Mail::ThreadTrack change article_summary_lines to 5 by default FML::Process::CGI::Param define article_id, method -> action FML::Process::CGI::Kernel header( -charset => $charset) FML::CGI::ThreadTrack modified to fit FML::Process::CGI structure. enable 'close' operation reset button FML::Process::CGI::Kernel workaround::header( -target => "ResultsWindow" ) anyway FML::Process::CGI::Param allow action =~ ::^[-a-z_]+$:: FML::CGI::ThreadTrack Mail::ThreadTrack Mail::ThreadTrack::Print Mail::ThreadTrack::Print::HTML enable "show" and "change_status" to work FML::CGI::ThreadTrack FML::Process::{Distribute,Switch,ThreadTrack} Mail::ThreadTrack Mail::ThreadTrack::Print::HTML ThreadTrack switches acconding to myname ($0). threadview is view only and cannot change status. 2001/11/10 loader FML::Process::Switch bug fix::format $reason FML::Process::CGI::Kernel remove makefml issue. modify run() which now executes: $curproc->html_start($args); $curproc->run_cgi($args); $curproc->html_end($args); 2001/11/08 Mail::Message::Language::Japanese::Subject nuke new(), not used Mail::ThreadTrack restructure hierarchy clean up inheritence for further refactoring modify method names clean up nuke some "*cost*" indicator codes closed -> close for some cases Mail::ThreadTrack::Analyze avoid duplicated commit to articles DB { thread_id => [ id1 id2 ... ] } Mail::ThreadTrack::Print::Message ignore ^= line in message summary Mail::Message::Date validate $in $shift_m Mail::ThreadTrack list_up_thread_id()::remove db_*() operation Mail::ThreadTrack::Analyze speculate date from header's Date: loader least error infomation by default OR raw $@ if debug FML::Process::Switch least error infomation by default OR raw $@ if debug Mail::ThreadTrack::Print bug fix trap pattern of _valid_buf() and _delete_subject_tag_like_string() FML::Process::CGI use FML::Process::CGI::{Kernel,Param} FML::Command defined() check for $command_args FML::Process::Switch modify error message 2001/11/07 FML::Process::Switch ThreadTrack.pm Mail::ThreadTrack Mail::ThreadTrack::Print enable fmlthread options: --article_id_max=\d+ to override ::var::spool::ml::$ml::seq --reverse to reverse time order in showing "review" Mail::ThreadTrack::DB remove not used variables FML::Process::Switch ThreadTrack.pm Mail::ThreadTrack::Analyze fmlthread -f filterlist ... Mail::ThreadTrack::DB show ... when processing Mail::ThreadTrack::Print check -f article_file FML::Process::Utils command_line_argv_find() FML::Process::ThreadTrack fmlthread review ML RANGE srcdir=::some::where XXX srcdir=\S+ overwrites config->{ spool_dir } variable Mail::ThreadTrack define add_filter() method FML::Process::Switch ThreadTrack.pm we should use long line options since we support it :) o define --spool_dir for fmlthread. for example: % fmlthread db_clear fml-help % fmlthread --spool_dir=::some::where -f ::tmp::filter db_rebuild fml-help % fmlthread --spool_dir=::some::where review fml-help last:100 2001/11/06 スレッド review と再生成をリモートでできるようにするとちょっと便利 fmlthread db_clear fml-help fmlthread --spool_dir=/some/where -f /tmp/filter db_rebuild fml-help fmlthread --spool_dir=/some/where review fml-help last:100 2001/11/05 fmlthread review review() mode to show summary for articles in each thread FML::Process::Utils implement command_line_options() fmlhtmlify [-I dir] src_dir dst_dir new utility for convenience Affected Files: INSTALL.sh fml/bin/fmlhtmlify FML::Process::Switch FML::Process::HTMLify 2001/11/04 プログラム全域で ticket -> thread FML::Process::Switch eval FML::Process::Flow::ProcessStart($obj, $args); and trap error. If error traped and $obj has help() method, run $obj->help(). also upcall the $@ by croak($@) FML::Process:: save $args at $curproc->{ __parent_args } $curproc provides convenient functions FML::Process::Utils has. fml_version() myname() command_line_raw_argv() command_line_argv() article_id_max() my $myname = $curproc->myname(); my $argv = $curproc->command_line_argv(); FML::Process::ThreadTrack enable db_clear, db_mkdb, summary, help Mail::ThreadTrack implement exist() and close() implemente db_clear(), db_mkdb() 2001/11/03 remove fmlticket, create fmlthread FML::Process:: を Mail::ThreadTrack ベースに切替える FML::Process::TicketSystem は削除し、 FML::Process::ThreadTrack が作られた。 Mail::ThreadTrack を CVS へ入れる。 これはスレッドを追跡するためのツールであり、 call tracking system の概念のごく一部をなしているといってよい Mail::ThreadTrack change new() parameters nuke pcb $config->{ db_type } = 'AnyDBM_File'; by default $self->{ _index_db } = $db_base_dir::"index" moved set_status() into this module Mail::ThreadTrack::Analyze nuke pcb bug fix $article_id handling Log() to $self->log() assign()::clean up function names and arguments define {get,set}_thread_id() and modified to use them add commentes for FNF style clarify assign() and rewrite_header() roles define {set,get}_thread_status() and modified to use them message-id is (RFC822), we use this format also in DB. correct handling of $config->{ thread_subject_tag_location } remove _address_clean_up(), which is not used now. remove set_status() Mail::ThreadTrack::HeaderRewrite prepare_history_info() Mail::ThreadTrack::DB make index database in db_base_dir not db_dir Mail::ThreadTrack::Print build-in decode_mime_string() tune up alignment in printing EUC-ify output define STR2EUC() for convenience 2001/10/29 Mail::Message _get_mime_header() checks offset boundary return default pair if overrun. Mail::HTML::Lite nuke $ENV{DEBUG}, check input data more rename key: prev_thread -> prev_thread_id next_thread -> next_thread_id count up $self->{ _num_attachment } for child process attachment file name $id.$count.html parent passes the id to child (processing attachment) ignore type if type is ::^multipart:: check $idp pattern 2001/10/28 Mail::HTML::Lite change method to speculate thread link rename functions implement _create_temporary_filename() reorder $type check consider case of text::* with encoded content save content to file once and rewrite it by _rewrite_html_file() consider encoding style of quoted-printable, 7bit also _format_safe_header() and print it in raw mode to enable tag use. define _sprintf_safe_str() and __sprintf_safe_str() for convenience define _separete_url() to help incomplete regexp of HTML::FromText::text2html() 2001/10/27 Mail::HTML::Lite use _PRINT_DEBUG(), define _print_safe_{str,buf}() to be easy for eyes _print() -> _print_raw_str() Mail::Message oops, should be s::::::mi to trap encodinge FML::Filter::BodyCheck Mail::Message Mail::Bounce::DSN Mail::HTML::Lite change method: data() -> data_in_body_part() 2001/10/22 FML::Ticket::System (clean up campaign) remove obsolete functions:_quote_space(), _dequote_space(), AUTOLOAD() remove not used _pcb_[sg]et_id() $self->_pcb_set_id($curproc, $id) -> $pcb->set('article', 'id', $id) Mail::HTML::Lite add (X-ML-Name X-Mail-Count X-Sequence) into @header_field (default header to show) defined() check before calling Jcode::XXX() FML::Command::Admin::htmlify accept command line option::srcdir=$srcdir 2001/10/21 makefml htmlify $ml_name outdir=$out_dir スプールを HTML 化するコマンド もちろん Mail::HTML::Lite を利用する。 # fml 4 の spool2html に対応するものといえよう Mail::HTML::Lite 月ごとの ID インデックスも作る (TABLE)。 make monthly index always monthly_index.html month.YYYYMM.html prepare top level entrance functions: htmlify_file() for file htmlify_dir() for directory clean up codes, documents implement _print_index_{begin,end}() and modified to use them sort location of function definition rename functin name: _print_attachment -> _print_inline_object _raw_text_print -> _text_print_by_raw_mode oops, fix untie() operation to be ensured check target html is already processed or not bug fix _address_clean_up() syntax check check already processed or not you can know it by $self->is_ignore($id) method. move a lot of debug code to "if $debug > 3" in cache_message_info() 2001/10/20 Mail::HTML::Lite メールを HTML 化するモジュール mhonarc のように凝ってはいないが必要十分な最低限の機能は持つ (だから Lite なんだよん) cache information in .ht_hml_* in html article directory rewrite links using these data among articles needed to rewrite. links contains prev::next by ID (article ID) and prev::next by Thread. bug fix target lists to update, modified to use the result by evaluation_relation() clean up debug code more debug information show and information in if could new() takes charset as argument change _decode_mime_string() to method modify ifdef in_chaset_to_code() to be more suitable we can make index.html and thread.html Mail::HTML::Lite::new() accepts { db_type => "DB_TYPE", attachment => 0::1 } change html_begin argument::($wh, { message => $msg }); we can specify title in several minior changes bug fix::_address_clean_up() should check return value, which is address or not more rigolously. bug fix::check parent::child (attachment) process or not more and more debug info Mail::Message bug fix::$InComingMessage should not local scope. modify it to SCALAR REF bug fix::data_in_body_part() returns whole data not the first 512 bytes. if $size is specified as argument, return the first $size bytes. feature::get_data_type_list() returns ARRAY of xxx::yyy by default for other method use. If under $debug mdoe, it shows verbose output. 2001/10/19 import HTML::FromText 1.005 Mail::Bounce Mail::Message::get_data_type_list() is changed. To sync with it, use $msg->get_data_type_list( { debug => 1 } ) for debug. 2001/10/18 Tie::JournaledDir change default unit to "day" not number (unix time). 2001/10/17 variables add $confirm_keyword to $available_commands_for_stranger add $available_commands_for_stranger to $available_commands FML::Command modified FML::Command uses get_attribute() in FML::Command::Attribute FML::Command::Attribute renamed FML::Command::ACL -> FML::Command::Attribute.pm FML::Command::SendFile support MH style arg::first, last, cur, first:\d+ and last:\d+ FML::Command::User::bye fix typo File::Sequence implemente get_id() method to return the latest article id update document 2001/10/15 フィルタリングを有効にする FML::Filter::BodyCheck FML::Filter::HeaderCheck.pm define @default_rules and use it if rules not specified rules() method to overwrite filtering rules variables define the following variables for filtering (FML::Filter) body_cksum_cache_dir body_filter_rules body_loop_check_rules header_filter_rules use_body_filter use_body_loop_check use_header_filter 2001/10/14 FML::Process::Kernel bug fix::we should pay attention to implisit $_ use FML::Process::Configure sync style w:::Process::Command FML::Process::Command make argument vector from $command relocate _parse_command_options() implemt _get_command_name() clean up fix typo FML::Command::Admin::get prototype to use FML::Command::SendFile FML::Command FML::Command::* FML::Process::Configure FML::Process::Command $optargs -> $command_args 2001/10/13 FML::Process::Command pass $comname in $optargs FML::Command::SendFile fix duplicatoin for $charset FML::Config avoid infinite loop FML::Command::SendFile is added This module provides basic file sending functions implement command: get help summary guide FML::Command::SendFile based command 2001/10/12 FML::Command remove error_nl() FML::Command::Admin::resign ->SUPER::process() FML::Command::Admin::subscribe clean up log message, LogError() -> croak() FML::Command::User::subscribe use reply_message_nl() FML::Command::User::unsubscribe confirm version FML::Config expand_variable_in_buffer can take optional $args FML::Credential bug fix variable name FML::Process::Kernel implement search template mechanism in reply_message_nl() $config->expand_variable_in_buffer() takes optional $args FML::Process::Command use reply_message_nl() remove exception mechanism by $obj->error_nl(); etc/ define $message_message_dir add chaddr to $available_commands メッセージ テンプレートは euc-jp を使う FML::Config expand_variable_in_buffer() expand $varname to $config->{ varname } FML::Process::Command add _pre_scan() even not member need to use $confirm_keyword. for example, 'guide', 'subscribe', 'confirm' add _can_accpet_command() 1. simple command syntax check 2. use of this command is allowed in FML::Config or not ? 3. Even new comer need to use commands [ guide, subscirbe, confirm ]. enable confirmation FML::Confirm module を利用します 変数 $available_commands_for_stranger を定義する。 FML::Confirm provides basic functions needed for confirmation + FML::Command::User::subscribe + FML::Command::User::confirm + FML::Confirm FML::Command::Admin::subscribe check address is specified or not FML::Command::User::help clean up expand_variables_in_file() -> prepare_file_to_return() FML::Process::Kernel define prepare_file_to_return(): expand $xxx variables in template (e.g. $help_file). 1. in Japanese case, convert kanji code::iso-2022-jp -> euc 2. expand variables::$ml_name -> elena 3. back kanji code::euc -> iso-2022-jp 4. return the new created template 2001/10/11 FML::Filter::Utils it provides utility functions is_secure_command_string() is_valid_mail_address() FML::Process::Command it checks input by FML::Filter::Utils::is_secure_command_string() 2001/10/10 コマンド get mget help などが動くようになった。 FML::Config check defined() more FML::Credential implement is_same_address() completely. is_member() accpepts $args->{ address } define set_compare_level(), get_compare_level() add variables command_prompot = >>> help_file = $message_template_dir/help message_template_dir = $fml_share_dir/template/$template_file_charset template_file_charset = $default_charset Mail::Delivery::SMTP old IO::Socket has no connected() method. modified to use our own socket_is_connected() method or remove connected() check. Mail::Delivery::SMTP + bug fix: ensure we handle IPv6 case more restrictly Mail::Delivery::Net::INET6 + bug fix: clear error counter + check more defined($socket) or not, socket is connected + more debug log FML::Process::Kernel define prototype for reply_message_nl() for natural language check more defined() or not more debug info define expand_variables_in_file() + expand $xxx variables in template (e.g. $help_file). FML::Process::Command bug fix: $obj->$command where $command is a command name not line. modified to use reply_meessage_nl() FML::Command define error_nl(), but a dummy yet now + get natural language information 2001/10/09 libexec/Standalone.pm check $config->{ $x } is defined() or not Ticket System consider $ticket_subject_tag_location in regexp change ticket_id_syntax to "$ml_name/%d" by default define ticket_subject_tag_location as "appended" change default ticket syntax etc/default_config.cf.ja etc/defaults/tickets.cf.ja FML::Header::Subject change regexp_compile(). quotemeta() firstly, and hack a few FML::Process::Command catch up the modification in FML::Process::Distribute. make command function work with replying request mail. disable lock()/unlock() since each command module lock/unlock by itself. FML::Process::Distribute modified finish() to use queue_flush() 2001/10/08 メールでのコマンドの応答を可能にした(プロトタイプ) add a lot of debug messages * Affcted modules: FML::Command FML::Process::Command FML::Process::Distribute FML::Process::Kernel FML::Process::Switch * newly added: FML::Command::User::help * test tools: regress/simulation/test-ctl.sh regress/testmails/text=plain.command FML::Command FML::Process::Kernel more debug info FML::Process::Distribute log ACL error FML::Process::Switch enable "loader --ctladdr" behaves as libexec/command more debug messages modify style e.g. eval q## -> eval q{} et. al. regress/simulation/test-ctl.sh added simple command mode emulator regress/simulation/perlcheck add -I ../../fml/libexec libexec/loader die() -> croak() define missing default value in initialization remove obsolete variable: $libexec_dir eval()-fiy more fix error message show $@ in error fix typo fix: more severe initialization check FML::Credential 2001/09/23 Mail::Message implement get_encoding_mechanism() in Mail::Message. implement get_offset(): return offset information in the data. return value is ARRAY. return encoding type for specified Mail::Message not whole mail. The return value is one of base64, quoted-printable or undef. Modified Files: fml/lib/Mail/Message.pm fml/doc/ja/tutorial/module/Mail::Message.sgml regress/message/dump.pl チュートリアル module に関する新パートの創設 module/ ディレクトリを創設 Mail::Message IO::Adapter のプロトタイプを用意する。 このディレクトリでは各モジュールの詳細な使い方について 記述するもの。 FML::Filter fml 4.0.x 相当の機能をきちんと実装する。 # ただし、ウィルスチェックは除く XXX これで、おおむね、いつでも入れ換え可能か? Utils を削除し、関数は適当なモジュールへ移動 move clean_up_buffer() and compare_euc_string() to FML::Filter::BodyCheck and FML::Language::Japanese::Utils respectively to remove FML::Filter::Utils. MS GUID を判別するルーチンも実装した 2001/09/22 FML/Config.pm if ($ENV{'debug'}) { ... debug ...;} TinyScheduler.pm FML/Command/Admin/edit.pm modified to use File::Spec 2001/09/18 errormail collection add netscape messaging server 3.54 sample thanks PR for Toshimi Aoki 2001/09/17 IO::Adapter * IO::Adapter::{DBI,MySQL,RDBMS}.pm rename: $self->{ _driver } -> $self->{ _model_specific_driver } dynamically load DBD:mysql move replace(), getline() and get_nextvalue() to DBI.pm since these functions are MI (Map Independent). implement setpos(), getpos() and eof() in MySQL.pm since these functions is dependent on map type (MD). RDBMS.pm is not used now, so removed. * IO/Adapter.pm change replace() o fix typo: s/regexp/replace/ o fix case insensitive search when $show_all is on o call md_find (md == map dependent, function) if defined o enabled to call md_XXX() define AUTOLOAD() to hook up md_XXX() functions XXX For example, md_XXX() should be implemented at XXX IO::Adapter::SQL::toymodel.pm * IO/Adapter/SQL/toymodel.pm rename: fetch_and_cache_address_list -> fetch_all implement md_find() 2001/09/13 FML::Process::QueueManager send() can take queue id as the argument FML::Process::Kernel more friendly error message implement queue_flush($queue): This flush C<$queue>, that is, send mail specified by C<$queue>. It uses FML::Process::QueueManager module. FML::Config.pm define FIRSTKEY and NEXTKEY for complete hash emulation FML::Command::Admin ユーザ用コマンド群 commit prototype makefml uses this class 2001/08/26 FML::Credential implement has_address_in_map() method and is_member() uses this. has_address_in_map() searches the address in the specified map. IO::Adapter クラス touch() メソッドを追加 XXX file タイプ以外では無意味。ダミー FML::Command:: クラスの再構成 FML::Command.pm FML::Command クラス以下への入口 FML::Command::ACL ACL FML::Command::Utils よもやまの定義 FML::Command::User ユーザ用コマンド群 FML::Command::Admin ユーザ用コマンド群 newml edit などは Admin のみ 2001/08/24 regress/ add&enable FML::Config {+,-}= overload test tools 2001/08/23 FML::Config の拡張 postfix style のさらなる拡張 変数名 += 値 変数名 -= 値 で、特定の値の足し引きができます。 例: x = a b c d x -= b は x = a c d x = a b c d x += e は x = a b c d e などとなる。 2001/08/22 clean up File::Spec を使うように変更 2001/08/21 Tie::JournaledDir クラスの創設 Tie::JournaledFile の clean up Tie::JournaledDir クラスはキャッシュとしてあるディレクトリを使い、 その中の複数個のファイルを順番に使います。 それぞれのファイルは Tie::JournaledFile を使ってアクセスします。 これにより auto expiration をする Journaled 型キャッシュを実現 します。 add Tie::JournaledDir which wraps Tie::JournaledFile and uses some directory as cache area. add/update test tools for Tie::Journaled{File,Dir} modules. clean up Tie::JournaledFile o remove header in the cache file o $self->{ 'key' } o $debug is on if $ENV{'debug'} is defined. o more carefull check of whether the value is defined or not. o quotemeta() for pre search key in find() o rename grep() to find() 2001/08/19 フィルタコードの改良 一行メールか否か?の判定コードをきれいにする そのために signature や引用か?を判定するコード他を書く Utils.pm もきれいにし、いらないコードを消した。 2001/08/06 フィルタ clean up fml/lib/ fml/etc/ 変数名の変更をする。s/header_check/header_loop_check/ ループチェックの設定であることを変数名自体ではっきりさせる IO::Adapter IO::Adapter set @ISA = qw(IO::Adapter::ErrorStatus) to call error_set() check $@ before call configure() add more debug codes IO::Adapter::MySQL メインの部分を IO::Adapter::SQL:: 以下へ移す IO::Adapter::MySQL は単なるフロントエンドにする 2001/08/02 Mail::Message bug fix wrong handling of "\n" at the last of part 2001/07/31 rename FML::NL to FML::Language Mail::Bounce class 以下のパターンを解析できるようになったはずです。 Lotus Notes pakeo.ne.jp jp-r.ne.jp (ほんとか?) Mail::Bounce::Language::Japanese 日本語依存パーサを作成する Mail::Bounce::DSN call again $self->address_clean_up($addr, $addr) gives $addr itself as a hint of fixing broken address domain part of $addr may match someting e.g. nifty.ne.jp, webtv.ne.jp. Mail::Bounce.pm Mail::Bounce::FixBrokenAddress.pm use Mail::Bounce::FixBrokenAddress to clean up address Mail::Bounce::FixBrokenAddress class provides irrgular address handlings, so handles domain/MTA specific addresses. For example, nifty.ne.jp, webtv.ne.jp, ... 2001/07/30 Mail::Bounce class pick up Reporting-MTA and Received-From-MTA in DSN clean up documentation add error examples modify Mail::Bounce::$module return "hints" to caller (Mail::Bounce class). 2001/07/19 add errormail samples freeserve.ne.jp webtv.ne.jp 2001/07/15 設定変数 pid を _pid へ変更 FML::Config enable read and write configuration file コメントを保存しつつ postfix スタイルの設定ファイルの 読み書きを可能にするように 2001/07/15 このファイルを創設する:) $FML: CHANGES.txt,v 1.180 2004/02/15 04:40:29 fukachan Exp $