CHANGES Last Modified: $Date$ 2002/07/14 いくつかのコマンドの結果やエラーメールは管理者へも送るようにする 登録/削除についてのログ メンバー以外からの投稿/コマンドメールなど FML::Process::Utils implement which_message_nl() FML::Command FML::Command::UserControl FML::Command::User::confirm FML::Process::Command Distribute.pm Kernel.pm 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.pm 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.pm 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.pm FML::MTAControl::Postfix Qmail.pm 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.pm ConfViewer.pm Configure Distribute.pm DocViewer Error.pm HTMLify.pm Kernel Spool.pm Switch.pm ThreadTrack Utils.pm 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.pm User.pm 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.pm 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.pm 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.pm 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.pm 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.pm 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.88 2002/07/13 14:28:09 fukachan Exp $