linux openldap mysql_LDAP Server 前端Openldap + 后端Mysql Cluster

-rw-rw-r-- 1 2000 2000 12189 Mar 28 23:41 tools.cpp

-rw-rw-r-- 1 2000 2000 100 Mar 28 23:41TODO-rw-rw-r-- 1 2000 2000 21638 Mar 28 23:41 search.cpp

-rw-rw-r-- 1 2000 2000 3481 Mar 28 23:41 proto-ndb.h-rw-rw-r-- 1 2000 2000 41251 Mar 28 23:41 ndbio.cpp

-rw-rw-r-- 1 2000 2000 14667 Mar 28 23:41 modrdn.cpp

-rw-rw-r-- 1 2000 2000 17815 Mar 28 23:41 modify.cpp

-rw-rw-r-- 1 2000 2000 1643 Mar 28 23:41 Makefile.in

-rw-rw-r-- 1 2000 2000 11441 Mar 28 23:41 init.cpp

-rw-rw-r-- 1 2000 2000 8370 Mar 28 23:41 delete.cpp

-rw-rw-r-- 1 2000 2000 9865 Mar 28 23:41 config.cpp

-rw-rw-r-- 1 2000 2000 4212 Mar 28 23:41 compare.cpp

-rw-rw-r-- 1 2000 2000 3884 Mar 28 23:41 bind.cpp

-rw-rw-r-- 1 2000 2000 4186 Mar 28 23:41 back-ndb.h-rw-rw-r-- 1 2000 2000 772 Mar 28 23:41attrsets.conf-rw-rw-r-- 1 2000 2000 9191 Mar 28 23:41 add.cpp#cat init.cppstaticintndb_db_open( BackendDB*be, ConfigReply *cr )

{

struct ndb_info*ni = (struct ndb_info *) be->be_private;char sqlbuf[BUFSIZ], *ptr;intrc, i;if ( be->be_suffix ==NULL ) {

snprintf( cr->msg, sizeof( cr->msg ),"ndb_db_open: need suffix");

Debug( LDAP_DEBUG_ANY,"%s\n",

cr->msg, 0, 0);

return-1;

}

Debug( LDAP_DEBUG_ARGS,

LDAP_XSTRING(ndb_db_open)": \"%s\"\n",

be->be_suffix[0].bv_val, 0, 0);if ( ni->ni_nconns < 1)

ni->ni_nconns = 1;

ni->ni_cluster = (Ndb_cluster_connection **)ch_calloc( ni->ni_nconns, sizeof( Ndb_cluster_connection *));for ( i=0; ini_nconns; i++) {

ni->ni_cluster[i] = new Ndb_cluster_connection( ni->ni_connectstr );

rc= ni->ni_cluster[i]->connect( 20, 5, 1);if( rc ) {

snprintf( cr->msg, sizeof( cr->msg ),"ndb_db_open: ni_cluster[%d]->connect failed (%d)",

i, rc );

goto fail;

}

}for ( i=0; ini_nconns; i++) {

rc= ni->ni_cluster[i]->wait_until_ready( 30, 30);if( rc ) {

snprintf( cr->msg, sizeof( cr->msg ),"ndb_db_open: ni_cluster[%d]->wait failed (%d)",

i, rc );

goto fail;

}

}

mysql_init(&ni->ni_sql );if ( !mysql_real_connect( &ni->ni_sql, ni->ni_hostname, ni->ni_username, ni->ni_password,"", ni->ni_port, ni->ni_socket, ni->ni_clflag )) {

snprintf( cr->msg, sizeof( cr->msg ),"ndb_db_open: mysql_real_connect failed, %s (%d)",

mysql_error(&ni->ni_sql), mysql_errno(&ni->ni_sql) );

rc= -1;

goto fail;

}

sprintf( sqlbuf,"CREATE DATABASE IF NOT EXISTS %s", ni->ni_dbname );

rc= mysql_query( &ni->ni_sql, sqlbuf );if( rc ) {

snprintf( cr->msg, sizeof( cr->msg ),"ndb_db_open: CREATE DATABASE %s failed, %s (%d)",

ni->ni_dbname, mysql_error(&ni->ni_sql), mysql_errno(&ni->ni_sql) );

goto fail;

}

sprintf( sqlbuf,"USE %s", ni->ni_dbname );

rc= mysql_query( &ni->ni_sql, sqlbuf );if( rc ) {

snprintf( cr->msg, sizeof( cr->msg ),"ndb_db_open: USE DATABASE %s failed, %s (%d)",

ni->ni_dbname, mysql_error(&ni->ni_sql), mysql_errno(&ni->ni_sql) );

goto fail;

}

ptr=sqlbuf;

ptr+= sprintf( ptr, "CREATE TABLE IF NOT EXISTS" DN2ID_TABLE "("

"eid bigint unsigned NOT NULL,"

"object_classes VARCHAR(1024) NOT NULL,"

"a0 VARCHAR(128) NOT NULL DEFAULT '',"

"a1 VARCHAR(128) NOT NULL DEFAULT '',"

"a2 VARCHAR(128) NOT NULL DEFAULT '',"

"a3 VARCHAR(128) NOT NULL DEFAULT '',"

"a4 VARCHAR(128) NOT NULL DEFAULT '',"

"a5 VARCHAR(128) NOT NULL DEFAULT '',"

"a6 VARCHAR(128) NOT NULL DEFAULT '',"

"a7 VARCHAR(128) NOT NULL DEFAULT '',"

"a8 VARCHAR(128) NOT NULL DEFAULT '',"

"a9 VARCHAR(128) NOT NULL DEFAULT '',"

"a10 VARCHAR(128) NOT NULL DEFAULT '',"

"a11 VARCHAR(128) NOT NULL DEFAULT '',"

"a12 VARCHAR(128) NOT NULL DEFAULT '',"

"a13 VARCHAR(128) NOT NULL DEFAULT '',"

"a14 VARCHAR(128) NOT NULL DEFAULT '',"

"a15 VARCHAR(128) NOT NULL DEFAULT '',"

"PRIMARY KEY (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15),"

"UNIQUE KEY eid (eid) USING HASH");/*Create index columns*/

if ( ni->ni_attridxs ) {

ListNode*ln;int newcol = 0;*ptr++ = ',';*ptr++ = ' ';for ( ln = ni->ni_attridxs; ln; ln=ln->ln_next ) {

NdbAttrInfo*ai = (NdbAttrInfo *)ln->ln_data;

ptr+= sprintf( ptr, "`%s` VARCHAR(%d),",

ai->na_name.bv_val, ai->na_len );

}

ptr= lutil_strcopy(ptr, "KEY" INDEX_NAME "(");for ( ln = ni->ni_attridxs; ln; ln=ln->ln_next ) {

NdbAttrInfo*ai = (NdbAttrInfo *)ln->ln_data;if ( newcol ) *ptr++ = ',';*ptr++ = '`';

ptr= lutil_strcopy( ptr, ai->na_name.bv_val );*ptr++ = '`';

ai->na_ixcol = newcol + 18;

newcol++;

}*ptr++ = ')';

}

strcpy( ptr,") ENGINE=ndb");

rc= mysql_query( &ni->ni_sql, sqlbuf );if( rc ) {

snprintf( cr->msg, sizeof( cr->msg ),"ndb_db_open: CREATE TABLE" DN2ID_TABLE "failed, %s (%d)",

mysql_error(&ni->ni_sql), mysql_errno(&ni->ni_sql) );

goto fail;

}

rc= mysql_query( &ni->ni_sql, "CREATE TABLE IF NOT EXISTS" NEXTID_TABLE "("

"a bigint unsigned AUTO_INCREMENT PRIMARY KEY ) ENGINE=ndb");if( rc ) {

snprintf( cr->msg, sizeof( cr->msg ),"ndb_db_open: CREATE TABLE" NEXTID_TABLE "failed, %s (%d)",

mysql_error(&ni->ni_sql), mysql_errno(&ni->ni_sql) );

goto fail;

}

{

NdbOcInfo*oci;

rc= ndb_aset_get( ni, &ndb_optable, ndb_opattrs, &oci );if( rc ) {

snprintf( cr->msg, sizeof( cr->msg ),"ndb_db_open: ndb_aset_get( %s ) failed (%d)",

ndb_optable.bv_val, rc );

goto fail;

}for ( i=0; ndb_oplens[i] >= 0; i++) {if( ndb_oplens[i] )

oci->no_attrs[i]->na_len =ndb_oplens[i];

}

rc=ndb_aset_create( ni, oci );if( rc ) {

snprintf( cr->msg, sizeof( cr->msg ),"ndb_db_open: ndb_aset_create( %s ) failed (%d)",

ndb_optable.bv_val, rc );

goto fail;

}

ni->ni_opattrs =oci;

}/*Create attribute sets*/{

ListNode*ln;for ( ln = ni->ni_attrsets; ln; ln=ln->ln_next ) {

NdbOcInfo*oci = (NdbOcInfo *)ln->ln_data;

rc=ndb_aset_create( ni, oci );if( rc ) {

snprintf( cr->msg, sizeof( cr->msg ),"ndb_db_open: ndb_aset_create( %s ) failed (%d)",

oci->no_name.bv_val, rc );

goto fail;

}

}

}/*Initialize any currently used objectClasses*/{

Ndb*ndb;

const NdbDictionary::Dictionary*myDict;

ndb= new Ndb( ni->ni_cluster[0], ni->ni_dbname );

ndb->init(1024);

myDict= ndb->getDictionary();

ndb_oc_read( ni, myDict );

delete ndb;

}

#ifdef DO_MONITORING/*monitor setup*/rc=ndb_monitor_db_open( be );if ( rc != 0) {

goto fail;

}#endifreturn0;

fail:

Debug( LDAP_DEBUG_ANY,"%s\n",

cr->msg, 0, 0);

ndb_db_close( be, NULL );

return rc;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值