CHANGES Last Modified: $Date$ 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.24 2001/10/21 08:02:08 fukachan Exp $