mirror of
				https://github.com/bklang/ldap2dns.git
				synced 2025-10-26 22:04:15 -04:00 
			
		
		
		
	Added DNS SRV record support in TinyDNS "unknown record" format
git-svn-id: https://svn.alkaloid.net/gpl/ldap2dns/trunk@8 06cd67b6-e706-0410-b29e-9de616bca6e9
This commit is contained in:
		| @@ -105,6 +105,24 @@ attributetype ( 1.3.6.1.4.1.7222.1.4.23 | ||||
| 	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{2}  | ||||
| 	SINGLE-VALUE ) | ||||
|  | ||||
| attributetype ( 1.3.6.1.4.1.7222.1.4.23 | ||||
|         NAME 'dnssrvpriority' | ||||
|         EQUALITY integerMatch | ||||
|         SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 | ||||
|         SINGLE-VALUE ) | ||||
|  | ||||
| attributetype ( 1.3.6.1.4.1.7222.1.4.24 | ||||
|         NAME 'dnssrvweight' | ||||
|         EQUALITY integerMatch | ||||
|         SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 | ||||
|         SINGLE-VALUE ) | ||||
|  | ||||
| attributetype ( 1.3.6.1.4.1.7222.1.4.25 | ||||
|         NAME 'dnssrvport' | ||||
|         EQUALITY integerMatch | ||||
|         SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 | ||||
|         SINGLE-VALUE ) | ||||
|  | ||||
| objectclass ( 1.3.6.1.4.1.7222.1.4.19 | ||||
| 	NAME 'dnszone'  | ||||
| 	MUST ( objectclass $ cn ) | ||||
| @@ -117,7 +135,8 @@ objectclass ( 1.3.6.1.4.1.7222.1.4.20 | ||||
| 	SUP dnszone | ||||
| 	MUST ( objectclass $ cn ) | ||||
| 	MAY ( dnsdomainname $ dnsrr $ dnsclass $ dnstype $ dnsipaddr $ dnscipaddr  | ||||
| 	    $ dnscname $ dnspreference $ dnsttl $ dnstimestamp $ owner ) ) | ||||
| 	    $ dnscname $ dnspreference $ dnsttl $ dnstimestamp $ owner  | ||||
|             $ dnssrvpriority $ dnssrvweight $ dnssrvport ) ) | ||||
|  | ||||
| objectclass ( 1.3.6.1.4.1.7222.1.4.24 | ||||
| 	NAME 'dnsloccodes' | ||||
|   | ||||
| @@ -108,6 +108,24 @@ attributetype ( 1.3.6.1.4.1.7222.1.4.22 | ||||
|         SUBSTR caseIgnoreSubstringsMatch | ||||
|         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{16} ) | ||||
|  | ||||
| attributetype ( 1.3.6.1.4.1.7222.1.4.23 | ||||
| 	NAME 'dnssrvpriority' | ||||
| 	EQUALITY integerMatch | ||||
| 	SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 | ||||
| 	SINGLE-VALUE ) | ||||
|  | ||||
| attributetype ( 1.3.6.1.4.1.7222.1.4.24 | ||||
| 	NAME 'dnssrvweight' | ||||
| 	EQUALITY integerMatch | ||||
| 	SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 | ||||
| 	SINGLE-VALUE ) | ||||
|  | ||||
| attributetype ( 1.3.6.1.4.1.7222.1.4.25 | ||||
| 	NAME 'dnssrvport' | ||||
| 	EQUALITY integerMatch | ||||
| 	SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 | ||||
| 	SINGLE-VALUE ) | ||||
|  | ||||
| objectclass ( 1.3.6.1.4.1.7222.1.4.19 | ||||
|         NAME 'dnszone' | ||||
|         MUST ( objectclass $ cn ) | ||||
| @@ -120,7 +138,8 @@ objectclass ( 1.3.6.1.4.1.7222.1.4.20 | ||||
|         SUP dnszone | ||||
|         MUST ( objectclass $ cn ) | ||||
|         MAY ( dnsdomainname $ dnsrr $ dnsclass $ dnstype $ dnsipaddr $ dnscipaddr | ||||
|             $ dnscname $ dnspreference $ dnsttl $ dnstimestamp $ owner ) ) | ||||
|             $ dnscname $ dnspreference $ dnsttl $ dnstimestamp $ owner  | ||||
|             $ dnssrvpriority $ dnssrvweight $ dnssrvport ) ) | ||||
|  | ||||
|  | ||||
|  | ||||
|   | ||||
							
								
								
									
										38
									
								
								ldap2dns.c
									
									
									
									
									
								
							
							
						
						
									
										38
									
								
								ldap2dns.c
									
									
									
									
									
								
							| @@ -85,6 +85,9 @@ struct resourcerecord | ||||
| 	char aliasedobjectname[256]; | ||||
| 	char macaddress[32]; | ||||
| #endif | ||||
| 	int dnssrvpriority; | ||||
| 	int dnssrvweight; | ||||
| 	int dnssrvport; | ||||
| }; | ||||
|  | ||||
|  | ||||
| @@ -361,6 +364,9 @@ static void write_rr(struct resourcerecord* rr, int ipdx, int znix) | ||||
| { | ||||
| 	char ip[4]; | ||||
| 	char buf[4]; | ||||
| 	char *tmp; | ||||
| 	char *p; | ||||
| 	int i; | ||||
|  | ||||
| 	if (strcasecmp(rr->class, "IN")) | ||||
| 		return; | ||||
| @@ -452,10 +458,21 @@ static void write_rr(struct resourcerecord* rr, int ipdx, int znix) | ||||
| 			fprintf(tinyfile, "'%s:%s:%s:%s:%s\n", rr->dnsdomainname, rr->cname, rr->ttl, rr->timestamp, rr->location); | ||||
| 		if (namedzone) | ||||
| 			fprintf(namedzone, "%s.\tIN TXT\t%s.\n", rr->dnsdomainname, rr->cname); | ||||
| 	} else if (strcasecmp(rr->type, "SRV")==0) { | ||||
| 		if (tinyfile) | ||||
| 			fprintf(tinyfile, ":%s:33:\\%03o\\%03o\\%03o\\%03o\\%03o\\%03o", rr->dnsdomainname, rr->dnssrvpriority >> 8, rr->dnssrvpriority & 0xff, rr->dnssrvweight >> 8, rr->dnssrvweight & 0xff, rr->dnssrvport >> 8, rr->dnssrvport & 0xff); | ||||
| 			tmp = strdup(rr->cname); | ||||
| 			while (p = strchr(tmp, '.')) { | ||||
| 				*p = '\0'; | ||||
| 				p++; | ||||
| 				fprintf(tinyfile, "\\%03o%s", strlen(tmp), tmp); | ||||
| 				tmp = p; | ||||
| 			} | ||||
| 			fprintf(tinyfile, "\\%03o%s", strlen(tmp), tmp); | ||||
| 			fprintf(tinyfile, "\\000:%s:%s:%s\n", rr->ttl, rr->timestamp, rr->location); | ||||
| 	} | ||||
| } | ||||
|  | ||||
|  | ||||
| #if defined DRAFT_RFC | ||||
| static void parse_rr(struct resourcerecord* rr) | ||||
| { | ||||
| @@ -528,6 +545,9 @@ static void read_resourcerecords(char* dn, int znix) | ||||
| 		rr.aliasedobjectname[0] = '\0'; | ||||
| 		rr.rr[0] = '\0'; | ||||
| #endif | ||||
|                 rr.dnssrvpriority = 0; | ||||
|                 rr.dnssrvweight = 0; | ||||
|                 rr.dnssrvport = 0; | ||||
| 		for (attr = ldap_first_attribute(ldap_con, m, &ber); attr; attr = ldap_next_attribute(ldap_con, m, ber)) { | ||||
| 			int len = strlen(attr); | ||||
| 			struct berval** bvals; | ||||
| @@ -613,6 +633,22 @@ static void read_resourcerecords(char* dn, int znix) | ||||
| 					} else if (strcasecmp(attr, "DNSmacaddress")==0) { | ||||
| 					} | ||||
| #endif | ||||
| 					else if (strcasecmp(attr, "DNSsrvpriority")==0) { | ||||
| 						if (!(rr.dnssrvpriority = atoi(bvals[0]->bv_val))) | ||||
|                                                         rr.dnssrvpriority = 0; | ||||
|                                                 else if (options.ldifname[0]) | ||||
|                                                         fprintf(ldifout, "%s: %d\n", attr, rr.dnssrvpriority); | ||||
| 					} else if (strcasecmp(attr, "DNSsrvweight")==0) { | ||||
| 						if (!(rr.dnssrvweight = atoi(bvals[0]->bv_val))) | ||||
|                                                         rr.dnssrvweight = 0; | ||||
|                                                 else if (options.ldifname[0]) | ||||
|                                                         fprintf(ldifout, "%s: %d\n", attr, rr.dnssrvweight); | ||||
|                                         } else if (strcasecmp(attr, "DNSsrvport")==0) { | ||||
| 						if (!(rr.dnssrvport = atoi(bvals[0]->bv_val))) | ||||
|                                                         rr.dnssrvport = 0; | ||||
|                                                 else if (options.ldifname[0]) | ||||
|                                                         fprintf(ldifout, "%s: %d\n", attr, rr.dnssrvport); | ||||
|                                         } | ||||
| 				} | ||||
| 				ldap_value_free_len(bvals); | ||||
| 			} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user