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

📄 minschema.js

📁 samba最新软件
💻 JS
📖 第 1 页 / 共 2 页
字号:
	var res = ldb.search("objectClass=*", dn, ldb.SCOPE_BASE, attrs);	if (res.error != 0) {		dprintf("Unable to fetch allowedAttributes for '%s' - %s\n", 		       dn, res.errstr);		return;	}	var allattrs = res.msgs[0].allowedAttributes;	res = ldb.search("objectClass=*", dn, ldb.SCOPE_BASE, allattrs);	if (res.error != 0) {		dprintf("Unable to fetch all attributes for '%s' - %s\n", 		       dn, res.errstr);		return;	}	var a;	var msg = res.msgs[0];	for (a in msg) {		if (attributes[a] == undefined) {			attributes[a] = obj_attribute(ldb, a);		}	}}/*  walk a naming context, looking for all records*/function walk_naming_context(ldb, namingContext) {	var attrs = new Array("objectClass");	var res = ldb.search("objectClass=*", namingContext, ldb.SCOPE_DEFAULT, attrs);	if (res.error != 0) {		dprintf("Unable to fetch objectClasses for '%s' - %s\n", 		       namingContext, res.errstr);		return;	}	var r;	for (r=0;r<res.msgs.length;r++) {		var msg = res.msgs[r].objectClass;		var c;		for (c=0;c<msg.length;c++) {			var objectClass = msg[c];			if (objectclasses[objectClass] == undefined) {				objectclasses[objectClass] = obj_objectClass(ldb, objectClass);				objectclasses[objectClass].exampleDN = res.msgs[r].dn;			}		}		walk_dn(ldb, res.msgs[r].dn);	}}/*  trim the may attributes for an objectClass*/function trim_objectclass_attributes(ldb, class) {	var i,j,n;	/* trim possibleInferiors,	 * include only the classes we extracted */	var possinf = class["possibleInferiors"];	if (possinf != undefined) {		var newpossinf = new Array();		if (typeof(possinf) == "string") {			possinf = new Array(possinf);		}		n = 0;		for (j = 0;j < possinf.length; j++) {			var x = possinf[j];			if (objectclasses[x] != undefined) {				newpossinf[n] = x;				n++;			}		}		class["possibleInferiors"] = newpossinf;	}	/* trim systemMayContain,	 * remove duplicates */	var sysmay = class["systemMayContain"];	if (sysmay != undefined) {		var newsysmay = new Array();		if (typeof(sysmay) == "string") {			sysmay = new Array(sysmay);		}		for (j = 0;j < sysmay.length; j++) {			var x = sysmay[j];			var dup = false;			if (newsysmay[0] == undefined) {				newsysmay[0] = x;			} else {				for (n = 0; n < newsysmay.length; n++) {					if (newsysmay[n] == x) {						dup = true;					}				}				if (dup == false) {					newsysmay[n] = x;				}			}		}		class["systemMayContain"] = newsysmay;	}	/* trim mayContain,	 * remove duplicates */	var may = class["mayContain"];	if (may != undefined) {		var newmay = new Array();		if (typeof(may) == "string") {			may = new Array(may);		}		for (j = 0;j < may.length; j++) {			var x = may[j];			var dup = false;			if (newmay[0] == undefined) {				newmay[0] = x;			} else {				for (n = 0; n < newmay.length; n++) {					if (newmay[n] == x) {						dup = true;					}				}				if (dup == false) {					newmay[n] = x;				}			}		}		class["mayContain"] = newmay;	}}/*  load the basic attributes of an objectClass*/function build_objectclass(ldb, name) {	var attrs = new Array("name");	var res = ldb.search(		sprintf("(&(objectClass=classSchema)(ldapDisplayName=%s))", name),		rootDse.schemaNamingContext, ldb.SCOPE_SUBTREE, attrs);	if (res.error != 0) {		dprintf("unknown class '%s'\n", name);		return undefined;	}	if (res.msgs.length == 0) {		dprintf("unknown class '%s'\n", name);		return undefined;	}	return obj_objectClass(ldb, name);}/*  append 2 lists*/function list_append(a1, a2) {	var i;	if (a1 == undefined) {		return a2;	}	if (a2 == undefined) {		return a1;	}	for (i=0;i<a2.length;i++) {		a1[a1.length] = a2[i];	}	return a1;}/*  form a coalesced attribute list*/function attribute_list(class, attr1, attr2) {	var a1 = class[attr1];	var a2 = class[attr2];	if (typeof(a1) == "string") {		a1 = new Array(a1);	}	if (typeof(a2) == "string") {		a2 = new Array(a2);	}	return list_append(a1, a2);}/*  write out a list in aggregate form*/function aggregate_list(name, list) {	if (list == undefined) {		return;	}	var i;	printf("%s ( ", name);	for (i=0;i<list.length;i++) {		printf("%s ", list[i]);		if (i < (list.length - 1)) {			printf("$ ");		}	}	printf(") ");}/*  write the aggregate record for an objectclass*/function write_aggregate_objectclass(class) {	printf("objectClasses: ( %s NAME '%s' ", class.governsID, class.name);	if (class['subClassOf'] != undefined) {		printf("SUP %s ", class['subClassOf']);	}	if (class.objectClassCategory == 1) {		printf("STRUCTURAL ");	} else if (class.objectClassCategory == 2) {		printf("ABSTRACT ");	} else if (class.objectClassCategory == 3) {		printf("AUXILIARY ");	}	var list;	list = attribute_list(class, "systemMustContain", "mustContain");	aggregate_list("MUST", list);	list = attribute_list(class, "systemMayContain", "mayContain");	aggregate_list("MAY", list);	printf(")\n");}/*  write the aggregate record for an ditcontentrule*/function write_aggregate_ditcontentrule(class) {	var list = attribute_list(class, "auxiliaryClass", "systemAuxiliaryClass");	var i;	if (list == undefined) {		return;	}	printf("dITContentRules: ( %s NAME '%s' ", class.governsID, class.name);	aggregate_list("AUX", list);	var may_list = undefined;	var must_list = undefined;	for (i=0;i<list.length;i++) {		var c = list[i];		var list2;		list2 = attribute_list(objectclasses[c], 				       "mayContain", "systemMayContain");		may_list = list_append(may_list, list2);		list2 = attribute_list(objectclasses[c], 				       "mustContain", "systemMustContain");		must_list = list_append(must_list, list2);	}	aggregate_list("MUST", must_list);	aggregate_list("MAY", may_list);	printf(")\n");}/*  write the aggregate record for an attribute*/function write_aggregate_attribute(attrib) {	printf("attributeTypes: ( %s NAME '%s' SYNTAX '%s' ", 	       attrib.attributeID, attrib.name, 	       map_attribute_syntax(attrib.attributeSyntax));	if (attrib['isSingleValued'] == "TRUE") {		printf("SINGLE-VALUE ");	}	if (attrib['systemOnly'] == "TRUE") {		printf("NO-USER-MODIFICATION ");	}	printf(")\n");}/*  write the aggregate record*/function write_aggregate() {	printf("dn: CN=Aggregate,${SCHEMADN}\n");	print("objectClass: topobjectClass: subSchema");	if (dump_subschema_auto == undefined) {		return;		}	for (i in objectclasses) {		write_aggregate_objectclass(objectclasses[i]);	}	for (i in attributes) {		write_aggregate_attribute(attributes[i]);	}	for (i in objectclasses) {		write_aggregate_ditcontentrule(objectclasses[i]);	}}/*  load a list from a file*/function load_list(file) {	var sys = sys_init();	var s = sys.file_load(file);	var a = split("\n", s);	return a;}/* get the rootDSE */var res = ldb.search("", "", ldb.SCOPE_BASE);rootDse = res.msgs[0];/* load the list of classes we are interested in */var classes = load_list(classfile);var i;for (i=0;i<classes.length;i++) {	var classname = classes[i];	var class = build_objectclass(ldb, classname);	if (class != undefined) {		objectclasses[classname] = class;	}}/*  expand the objectclass list as needed*/var num_classes = 0;var expanded = 0;/* calculate the actual number of classes */for (i in objectclasses) {	num_classes++;}/* so EJS do not have while nor the break statement   cannot find any other way than doing more loops   than necessary to recursively expand all classes */var inf;for (inf = 0;inf < 500; inf++) {	if (expanded < num_classes) {		for (i in objectclasses) {			var n = objectclasses[i];			if (objectclasses_expanded[i] != "DONE") {				expand_objectclass(ldb, objectclasses[i]);				objectclasses_expanded[i] = "DONE";				expanded++;			}		}		/* recalculate the actual number of classes */		num_classes = 0;		for (i in objectclasses) {			num_classes++;		}	}}/*  find objectclass properties*/for (i in objectclasses) {	find_objectclass_properties(ldb, objectclasses[i]);}/*  form the full list of attributes*/for (i in objectclasses) {	add_objectclass_attributes(ldb, objectclasses[i]);}/* and attribute properties */for (i in attributes) {	find_attribute_properties(ldb, attributes[i]);}/*  trim the 'may' attribute lists to those really needed*/for (i in objectclasses) {	trim_objectclass_attributes(ldb, objectclasses[i]);}/*  dump an ldif form of the attributes and objectclasses*/if (dump_attributes != undefined) {	write_ldif(attributes, attrib_attrs);}if (dump_classes != undefined) {	write_ldif(objectclasses, class_attrs);}if (dump_subschema != undefined) {	write_aggregate();}if (verbose == undefined) {	exit(0);}/*  dump list of objectclasses*/printf("objectClasses:\n")for (i in objectclasses) {	printf("\t%s\n", i);}printf("attributes:\n")for (i in attributes) {	printf("\t%s\n", i);}printf("autocreated attributes:\n");for (i in attributes) {	if (attributes[i].autocreate == true) {		printf("\t%s\n", i);	}}return 0;

⌨️ 快捷键说明

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