CHANGES Last Modified: $Date$ 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.53 2002/02/20 14:20:18 fukachan Exp $