⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smbcalls_ldb.c

📁 samba最新软件
💻 C
📖 第 1 页 / 共 2 页
字号:
	if (ret == NULL) {		mpr_Return(eid, mprCreateUndefinedVar());	} else {		mpr_Return(eid, mprString(ret));		talloc_free(ret);	}	return 0;}/*  perform an ldb add   syntax:    ok = ldb.add(ldifstring);*/static int ejs_ldbAdd(MprVarHandle eid, int argc, struct MprVar **argv){	return ejs_ldbAddModify(eid, argc, argv, ldb_add);}/*  perform an ldb modify  syntax:    ok = ldb.modify(ldifstring);*/static int ejs_ldbModify(MprVarHandle eid, int argc, struct MprVar **argv){	return ejs_ldbAddModify(eid, argc, argv, ldb_modify);}/*  connect to a database  usage:   ok = ldb.connect(dbfile);   ok = ldb.connect(dbfile, "modules:modlist");  ldb.credentials or ldb.session_info may be setup first*/static int ejs_ldbConnect(MprVarHandle eid, int argc, char **argv){	struct ldb_context *ldb;	struct auth_session_info *session_info = NULL;	struct cli_credentials *creds = NULL;	struct MprVar *credentials, *session;	struct MprVar *this = mprGetProperty(ejsGetLocalObject(eid), "this", 0);	const char *dbfile;	if (argc < 1) {		ejsSetErrorMsg(eid, "ldb.connect invalid arguments");		return -1;	}	credentials = mprGetProperty(this, "credentials", NULL);	if (credentials) {		creds = talloc_get_type(mprGetPtr(credentials, "creds"), struct cli_credentials);	}	session = mprGetProperty(this, "session_info", NULL);	if (session) {		session_info = talloc_get_type(mprGetPtr(session, "session_info"), struct auth_session_info);	}	dbfile = argv[0];	ldb = ldb_wrap_connect(mprMemCtx(), mprEventCtx(), mprLpCtx(), dbfile, 			       session_info, creds,			       0, (const char **)(argv+1));	if (ldb == NULL) {		ejsSetErrorMsg(eid, "ldb.connect failed to open %s", dbfile);	}	mprSetThisPtr(eid, "db", ldb);	mpr_Return(eid, mprCreateBoolVar(ldb != NULL));	return 0;}/*  close a db connection*/static int ejs_ldbClose(MprVarHandle eid, int argc, struct MprVar **argv){	struct ldb_context *ldb;	if (argc != 0) {		ejsSetErrorMsg(eid, "ldb.close invalid arguments");		return -1;	}	ldb = ejs_get_ldb_context(eid);	if (ldb == NULL) {		return -1;	}	mprSetThisPtr(eid, "db", NULL);	mpr_Return(eid, mprCreateBoolVar(true));	return 0;}/*  start a ldb transaction  usage:   ok = ldb.transaction_start();*/static int ejs_ldbTransactionStart(MprVarHandle eid, int argc, struct MprVar **argv){	struct ldb_context *ldb;	int ret;	if (argc != 0) {		ejsSetErrorMsg(eid, "ldb.transaction_start invalid arguments");		return -1;	}	ldb = ejs_get_ldb_context(eid);	if (ldb == NULL) {		return -1;	}	ret = ldb_transaction_start(ldb);	mpr_Return(eid, mprCreateBoolVar(ret == 0));	return 0;}/*  cancel a ldb transaction  usage:   ok = ldb.transaction_cancel();*/static int ejs_ldbTransactionCancel(MprVarHandle eid, int argc, struct MprVar **argv){	struct ldb_context *ldb;	int ret;	if (argc != 0) {		ejsSetErrorMsg(eid, "ldb.transaction_cancel invalid arguments");		return -1;	}	ldb = ejs_get_ldb_context(eid);	if (ldb == NULL) {		return -1;	}	ret = ldb_transaction_cancel(ldb);	mpr_Return(eid, mprCreateBoolVar(ret == 0));	return 0;}/*  commit a ldb transaction  usage:   ok = ldb.transaction_commit();*/static int ejs_ldbTransactionCommit(MprVarHandle eid, int argc, struct MprVar **argv){	struct ldb_context *ldb;	int ret;	if (argc != 0) {		ejsSetErrorMsg(eid, "ldb.transaction_commit invalid arguments");		return -1;	}	ldb = ejs_get_ldb_context(eid);	if (ldb == NULL) {		return -1;	}	ret = ldb_transaction_commit(ldb);	mpr_Return(eid, mprCreateBoolVar(ret == 0));	return 0;}/*  commit a ldb attach a dsdb_schema from ldif files  usage:   ok = ldb.attach_dsdb_schema_from_ldif("prefixMap ldif content", "definition ldif content")*/static int ejs_ldb_attach_dsdb_schema_from_ldif(MprVarHandle eid, int argc, char **argv){	struct ldb_context *ldb;	WERROR status;	const char *pf;	const char *df;	if (argc != 2) {		ejsSetErrorMsg(eid, "ldb.attach_dsdb_schema_from_ldif invalid arguments");		return -1;	}	ldb = ejs_get_ldb_context(eid);	if (ldb == NULL) {		return -1;	}	pf = argv[0];	df = argv[1];	status = dsdb_attach_schema_from_ldif_file(ldb, pf, df);	mpr_Return(eid, mprWERROR(status));	return 0;}/*  set a particular invocationId against the running LDB  usage:   ok = ldb.set_ntds_invocationId("7729aa4b-f990-41ad-b81a-8b6a14090f41");*/static int ejs_ldb_set_ntds_invocationId(MprVarHandle eid, int argc, char **argv){	struct ldb_context *ldb;	NTSTATUS status;	struct GUID guid;	char *guid_str;	bool ok;	if (argc != 1) {		ejsSetErrorMsg(eid, "ldb.set_ntds_invocationId invalid arguments");		return -1;	}	ldb = ejs_get_ldb_context(eid);	if (ldb == NULL) {		return -1;	}	guid_str = argv[0];	status = GUID_from_string(guid_str, &guid);	if (!NT_STATUS_IS_OK(status)) {		ejsSetErrorMsg(eid, "ldb.set_ntds_invocationId - failed to parse GUID '%s' %s\n",				guid_str, nt_errstr(status));		return -1;	}	ok = samdb_set_ntds_invocation_id(ldb, &guid);	if (!ok) {		ejsSetErrorMsg(eid, "ldb.set_ntds_invocationId - failed to set cached ntds invocationId\n");		return -1;	}	mpr_Return(eid, mprCreateBoolVar(ok));	return 0;}/*  attach a particular ntds objectGUID against the current ldb  usage:   ok = ldb.set_ntds_objectGUID("7729aa4b-f990-41ad-b81a-8b6a14090f41");*/static int ejs_ldb_set_ntds_objectGUID(MprVarHandle eid, int argc, char **argv){	struct ldb_context *ldb;	NTSTATUS status;	struct GUID guid;	char *guid_str;	bool ok;	if (argc != 1) {		ejsSetErrorMsg(eid, "ldb.set_ntds_objectGUID invalid arguments");		return -1;	}	ldb = ejs_get_ldb_context(eid);	if (ldb == NULL) {		return -1;	}	guid_str = argv[0];	status = GUID_from_string(guid_str, &guid);	if (!NT_STATUS_IS_OK(status)) {		ejsSetErrorMsg(eid, "ldb.set_ntds_objectGUID - failed to parse GUID '%s' %s\n",				guid_str, nt_errstr(status));		return -1;	}	ok = samdb_set_ntds_invocation_id(ldb, &guid);	if (!ok) {		ejsSetErrorMsg(eid, "ldb.set_ntds_objectGUID - failed to set cached ntds invocationId\n");		return -1;	}	mpr_Return(eid, mprCreateBoolVar(ok));	return 0;}/*  attach a particular domain SID against the current ldb  usage:   ok = ldb.set_domain_sid("S-S-1-5-21-3065342217-3567412576-2214182334");*/static int ejs_ldb_set_domain_sid(MprVarHandle eid, int argc, char **argv){	struct ldb_context *ldb;	struct dom_sid *dom_sid;	char *dom_sid_str;	bool ok;	if (argc != 1) {		ejsSetErrorMsg(eid, "ldb.set_domain_sid invalid arguments");		return -1;	}	ldb = ejs_get_ldb_context(eid);	if (ldb == NULL) {		return -1;	}	dom_sid_str = argv[0];	dom_sid = dom_sid_parse_talloc(NULL, dom_sid_str);	if (!dom_sid) {		ejsSetErrorMsg(eid, "ldb.set_domain_sid - failed to parse domain sid '%s'\n",				dom_sid_str);		return -1;	}	ok = samdb_set_domain_sid(ldb, dom_sid);	talloc_free(dom_sid);	if (!ok) {		ejsSetErrorMsg(eid, "ldb.set_domain_sid - failed to set cached ntds invocationId\n");		return -1;	}	mpr_Return(eid, mprCreateBoolVar(ok));	return 0;}/*  initialise ldb ejs subsystem*/static int ejs_ldb_init(MprVarHandle eid, int argc, struct MprVar **argv){	struct MprVar *ldb = mprInitObject(eid, "ldb", argc, argv);	mprSetStringCFunction(ldb, "connect", ejs_ldbConnect);	mprSetCFunction(ldb, "search", ejs_ldbSearch);	mprSetCFunction(ldb, "add", ejs_ldbAdd);	mprSetCFunction(ldb, "modify", ejs_ldbModify);	mprSetCFunction(ldb, "del", ejs_ldbDelete);	mprSetCFunction(ldb, "rename", ejs_ldbRename);	mprSetCFunction(ldb, "errstring", ejs_ldbErrstring);	mprSetCFunction(ldb, "encode", ejs_base64encode);	mprSetCFunction(ldb, "decode", ejs_base64decode);	mprSetCFunction(ldb, "dn_escape", ejs_dn_escape);	mprSetCFunction(ldb, "close", ejs_ldbClose);	mprSetCFunction(ldb, "transaction_start", ejs_ldbTransactionStart);	mprSetCFunction(ldb, "transaction_cancel", ejs_ldbTransactionCancel);	mprSetCFunction(ldb, "transaction_commit", ejs_ldbTransactionCommit);	mprSetStringCFunction(ldb, "attach_dsdb_schema_from_ldif",			      ejs_ldb_attach_dsdb_schema_from_ldif);	mprSetStringCFunction(ldb, "set_ntds_invocationId",			      ejs_ldb_set_ntds_invocationId);	mprSetStringCFunction(ldb, "set_ntds_objectGUID",			      ejs_ldb_set_ntds_objectGUID);	mprSetStringCFunction(ldb, "set_domain_sid",			      ejs_ldb_set_domain_sid);	mprSetVar(ldb, "SCOPE_BASE", mprCreateNumberVar(LDB_SCOPE_BASE));	mprSetVar(ldb, "SCOPE_ONE", mprCreateNumberVar(LDB_SCOPE_ONELEVEL));	mprSetVar(ldb, "SCOPE_SUBTREE", mprCreateNumberVar(LDB_SCOPE_SUBTREE));	mprSetVar(ldb, "SCOPE_DEFAULT", mprCreateNumberVar(LDB_SCOPE_DEFAULT));	return 0;}/*  setup C functions that be called from ejs*/NTSTATUS smb_setup_ejs_ldb(void){	ejsDefineCFunction(-1, "ldb_init", ejs_ldb_init, NULL, MPR_VAR_SCRIPT_HANDLE);	return NT_STATUS_OK;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -