Kaoru Sekiguchi
sekig****@secio*****
2008年 9月 18日 (木) 15:34:33 JST
鈴木さん 関口です。 > > マスタデータに uid=hogehoge_pt_123 という試験用のエントリがあり、 > LISMの同期対象外にしたいと考えています。 > > 以下のように > > <syncfilter>!(|(uid=admin)(uid=anon)(uid=*pt*))</syncfilter> > > と指定しましたが、lismsync read cluster のコマンドで > lismSyncErrMessage: > uid=hogehoge_pt_123,cn=people,ou=aipo4,dc=example,dc=co,dc=jp "The entry > doesn't exist" > のメッセージが出て、同期対象になってしまいます。 > > 以下のようにフル文字で指定するとうまく同期対象外になってくれるようです。 > <syncfilter>!(|(uid=admin)(uid=anon)(uid=hogehoge_pt_123))</syncfilter> > > > 以上を踏まえて、<syncfilter> での部分文字列の指定方法 > ( (uid=*pt*) では駄目?)についてご教授いただければと思います。 > > ※ldapsearchでは(uid=*pt*)で uid=hogehoge_pt_123 が検索可能でした。 > 現状、syncfilter内で部分一致の検索条件は使用できません。 次期バージョン、またはCVSのソースでは部分一致が使えるようになりますが、現バージョンのLISMで使う場合は、以下のパッチをLISMのソースに当ててみてください。 diff -cNr LISM.org/lib/LISM/Storage.pm LISM/lib/LISM/Storage.pm *** LISM.org/lib/LISM/Storage.pm 2008-08-24 20:14:10.000000000 +0900 --- LISM/lib/LISM/Storage.pm 2008-09-18 15:23:41.000000000 +0900 *************** *** 625,631 **** } return $rc; } elsif ($op eq 'substrings') { ! return $entry =~ /^$args->{type}: $args->{substrings}[0]{initial}*$args->{substr ings}[1]{final}$/mi; } elsif ($op eq 'present') { return $entry =~ /^$args: /mi; } --- 625,637 ---- } return $rc; } elsif ($op eq 'substrings') { ! if (defined($args->{substrings}[0]{initial})) { ! return $entry =~ /^$args->{type}: $args->{substrings}[0]{initial}.*$/mi; ! } elsif (defined($args->{substrings}[0]{final})) { ! return $entry =~ /^$args->{type}: .*$args->{substrings}[1]{final}$/mi; ! } else { ! return $entry =~ /^$args->{type}: .*$args->{substrings}[0]{any}.*$/mi; ! } } elsif ($op eq 'present') { return $entry =~ /^$args: /mi; } 以上、よろしくお願いします。 ------------------------- 株式会社セシオス 関口 薫 E-Mail: sekig****@secio***** URL: http://www.secioss.co.jp