Compare commits
	
		
			4 Commits
		
	
	
		
			49811bd321
			...
			be91254190
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | be91254190 | ||
|  | 5839451f20 | ||
|  | f67788f9db | ||
|  | 5cf3a3b20f | 
							
								
								
									
										73
									
								
								samples/parse-records.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								samples/parse-records.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,73 @@ | ||||
| 'use strict'; | ||||
| 
 | ||||
| /* | ||||
|  * parses files in the format "type|domain|value|json\n" | ||||
| */ | ||||
| 
 | ||||
| var filename = process.argv[2]; | ||||
| var fs = require('fs'); | ||||
| 
 | ||||
| var file = fs.readFileSync(filename, 'utf8'); | ||||
| var zone = 'daplie.com'; | ||||
| 
 | ||||
| file.trim().split(/\n/).forEach(function (line) { | ||||
|   var parts = line.split(/\|/); | ||||
|   var type = parts[0]; | ||||
|   var name = parts[1] || zone; | ||||
|   var domain = name.split('.'); | ||||
|   var thing = parts[2]; | ||||
|   var json = JSON.parse(parts[3]); | ||||
| 
 | ||||
|   var address;                // A, AAAA
 | ||||
|   var flag, tag, value;       // CAA
 | ||||
|   var data;                   // CNAME, NS, PTR, ... TXT (as array)
 | ||||
|   var priority;               // MX, SRV
 | ||||
|   var exchange;               // MX
 | ||||
|   var weight, port, target;   // SRV
 | ||||
| 
 | ||||
|   if (/^(A|AAAA)$/.test(type)) { | ||||
|     address = thing; | ||||
|   } | ||||
|   if (/^(CNAME|NS|PTR)$/.test(type)) { | ||||
|     data = thing; | ||||
|   } | ||||
|   if (/^(TXT)$/.test(type)) { | ||||
|     data = [ thing ]; | ||||
|   } | ||||
|   if (/^(MX)$/.test(type)) { | ||||
|     exchange = thing; | ||||
|   } | ||||
|   if (/^(MX|SRV)$/.test(type)) { | ||||
|     priority = json.priority || 10; | ||||
|   } | ||||
| 
 | ||||
|   var obj = { | ||||
|     zone: zone | ||||
| 
 | ||||
|   , name: name | ||||
|   , type: type | ||||
|   , class: 'IN' | ||||
|   , ttl: 5 // 12 hours 43200 // 3 days 259200
 | ||||
| 
 | ||||
|   , tld: domain.pop() | ||||
|   , sld: domain.pop() | ||||
|   , sub: domain.join('.') || undefined | ||||
| 
 | ||||
|   , address: address | ||||
|   , aname: undefined | ||||
|   , flag: flag | ||||
|   , tag: tag | ||||
|   , value: value | ||||
| 
 | ||||
|   , data: data | ||||
| 
 | ||||
|   , exchange: exchange | ||||
| 
 | ||||
|   , priority: priority | ||||
|   , weight: weight | ||||
|   , port: port | ||||
|   , target: target | ||||
|   }; | ||||
| 
 | ||||
|   console.log(",", JSON.stringify(obj)); | ||||
| }); | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user