Ticket #10562

システムデータからマスターへの同期不備
Open Date: 2007-06-10 00:25 Last Update: 2007-06-10 23:16

Reporter:
Owner:
Type:
Status:
Closed
Component:
(None)
MileStone:
(None)
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
Fixed
File:
None

Details

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
dn: uid=Xoopsuser,ou=People,ou=Xoops,dc=lism,dc=com
objectClass: Person
uid: Xoopsuser
cn: 関口
mail: syncuser@lism.com
userPassword: password
businessCategory: cn=User,ou=Role,ou=Xoops,dc=lism,dc=com
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
上のデータをシステムデータXoops下に登録後
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
dn: cn=sync,ou=LDAP,dc=lism,dc=com
changetype: modify
replace: description
description: sync
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
#ldapmodify -x -H ldap://localhost:9001 -D
'cn=Manager,dc=lism,dc=com' -w secret -f desc.ldif

と入力したところ次の様なログがでてサーバがおちました。
modifications:
replace: description
one value, length 4
Cannot decode string with wide characters at
/usr/lib/perl5/5.8.8/i386-linux-thread-multi/Encode.pm
line 166, <DATA> line 995.

Ticket History (3/3 Histories)

2007-06-10 02:05 Updated by: k-sekiguchi
  • Owner Update from ks0315 to k-sekiguchi
Comment
Logged In: YES
user_id=20689

LISMの設定ファイル(lism.conf)についても、教えて下さい。
2007-06-10 19:10 Updated by: ks0315
Comment
Logged In: YES
user_id=22777

ちなみにlismの設定ファイルは
<config>
<sync>
<transaction>off</transaction>
<data name="Xoops">
<masterop>add-delete</masterop>
<masterop>modify</masterop>
<object name="User">
<syncdn>ou=People</syncdn>
<masterdn>ou=People</masterdn>
<masterattr>cn</masterattr>
<masterattr>userPassword</masterattr>
<masterattr>mail</masterattr>
</object>
</data>
<data name="CSV">
<syncop>add-delete</syncop>
<syncop>modify</syncop>
<object name="User">
<syncdn>ou=People</syncdn>
<syncattr>cn</syncattr>
<syncattr>sn</syncattr>
<syncattr>uidNumber</syncattr>
<syncattr>gidNumber</syncattr>
<syncattr>userPassword</syncattr>
<syncattr>mail</syncattr>
<syncattr>homeDirectory</syncattr>
</object>
</data>
<master>LDAP</master>
</sync>
<data name="Xoops">
<rewrite context="request" match="createtimestamp:
*([0-9]*Z)" substitution="createtimestamp: %{date2time('%1')}"/>
<rewrite context="searchResult" match="createtimestamp:
*([0-9]*)" substitution="createtimestamp: %{time2date('%1')}"/>
<container>
<oc>organizationalUnit</oc>
<rdn>ou=Xoops</rdn>
<attr name="description">Web Portal</attr>
<attr name="businessCategory">Area</attr>
</container>
<storage name="SQL" hash="MD5:hex">
<dsn>DBI:mysql:xoops:localhost</dsn>
<admin>admin</admin>
<passwd>secret</passwd>
<object name="User">
<container>
<oc>organizationalUnit</oc>
<rdn>ou=People</rdn>
</container>
<table>xoops_users</table>
<id>uid</id>
<oc>Person</oc>
<oc>inetOrgPerson</oc>
<rdn>uid</rdn>
<attr name="uid">
<column>uname</column>
</attr>
<attr name="cn">
<column>name</column>
</attr>
<attr name="sn">
<selexpr>substring(name,position(' ' in
name)+1,char_length(name)-position(' ' in name))</selexpr>
</attr>
<attr name="userpassword">
<column>pass</column>
</attr>
<attr name="mail">
<column>email</column>
</attr>
<attr name="createtimestamp">
<column>user_regdate</column>
</attr>
<strginfo>
<addproc>insert into xoops_groups_users_link(uid,
groupid) values(%o, (select groupid from xoops_groups where
group_type = 'Anonymous'))</addproc>
</strginfo>
</object>
<object name="Group">
<container>
<oc>organizationalUnit</oc>
<rdn>ou=Groups</rdn>
</container>
<table>xoops_groups</table>
<id>groupid</id>
<oc>posixGroup</oc>
<rdn>cn</rdn>
<attr name="cn">
<column>group_type</column>
</attr>
<attr name="memberuid">
<selexpr>uname</selexpr>

<fromtbls>xoops_users,xoops_groups_users_link</fromtbls>

<joinwhere>xoops_groups.groupid=xoops_groups_users_link.groupid
and xoops_users.uid=xoops_groups_users_link.uid</joinwhere>
<addproc>insert into xoops_groups_users_link(uid,
groupid) values((select id from xoops_users where uname =
'%a', %o)</addproc>
<delproc>delete from xoops_groups_users_link where
uid = (select id from xoops_users where uname = '%a') and
groupid = %o</delproc>
</attr>
</object>
</storage>
</data>
<data name="CSV">
<container>
<rdn>ou=CSV</rdn>
<oc>organizationalUnit</oc>
</container>
<storage name="CSV" hash="CLEARTEXT">
<delim>,</delim>
<object name="User">
<container>
<rdn>ou=People</rdn>
<oc>organizationalUnit</oc>
</container>
<file>/usr/local/lism/var/csv/user.csv</file>
<id>0</id>
<oc>person</oc>
<oc>inetOrgPerson</oc>
<oc>posixAccount</oc>
<rdn>uid</rdn>
<attr name="uid">
<column>0</column>
</attr>
<attr name="cn">
<column>1</column>
</attr>
<attr name="sn">
<column>2</column>
</attr>
<attr name="uidnumber">
<column>3</column>
</attr>
<attr name="gidnumber">
<column>4</column>
</attr>
<attr name="userpassword">
<column>5</column>
</attr>
<attr name="mail">
<column>6</column>
</attr>
<attr name="businesscategory">
<idcolumn>7</idcolumn>
<file>/usr/local/lism/var/csv/group.csv</file>
<id>0</id>
<value>cn=%0,ou=Role,ou=%1,dc=lism,dc=com</value>
</attr>
<attr name="homedirectory">
<column>8</column>
</attr>
</object>
</storage>
</data>
<data name="LDAP">
<container>
<oc>organizationalUnit</oc>
<rdn>ou=LDAP</rdn>
<attr name="description">LISM Master</attr>
<attr name="businessCategory">Area</attr>
</container>
<handler name="Script" type="post">
<execrule dn=".*,ou=People,ou=LDAP,dc=lism,dc=com">
<op name="add">
<script>/usr/local/lism/lib/scripts/mkhomedir.sh
add %r %i</script>
</op>
<op name="delete">
<script>/usr/local/lism/lib/scripts/mkhomedir.sh
del %r &gt;&amp; /tmp/log</script>
</op>
</execrule>
</handler>
<storage name="LDAP" hash="CLEARTEXT">
<uri>ldap://localhost/dc=example,dc=com</uri>
<binddn>cn=Manager,dc=example,dc=com</binddn>
<bindpw>secret</bindpw>
</storage>
</data>
</config>
2007-06-10 23:16 Updated by: k-sekiguchi
  • Ticket Close date is changed to 2007-06-10 23:16
  • Resolution Update from None to Fixed
  • Status Update from Open to Closed
Comment
Logged In: YES
user_id=20689

searchによって、システムデータとマスタデータの差分となるエン
トリを取得して、そのエントリ情報をそのままadd、modify、
deleteといった関数に渡して、他のシステムに対してデータの同期
を行なっています。このとき、add、modify、deleteに渡すエント
リ情報はperlのUTF8フラグが立っていないことを想定しています
が、searchから返って来るエントリの情報はUTF8フラグが立ってい
たため、Encode.pmがエラーを返していました。そこで、差分のエ
ントリ情報をEncode::encodeにより、UTF8フラグを落してから、
add、modify、deleteに渡すように修正しました。

Attachment File List

No attachments

Edit

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Login