forked from loweel/zabov
				
			- added new setting: default/global timetable ( config->zabov->timetable )
This table will be used for any client that is not already included in an IP groupremotes/1680050961956510080/tmp_refs/heads/master
							parent
							
								
									85ff0dac52
								
							
						
					
					
						commit
						d2f8601185
					
				| 
						 | 
					@ -216,6 +216,15 @@ func init() {
 | 
				
			||||||
		ZabovIPGroups = append(ZabovIPGroups, groupStruct)
 | 
							ZabovIPGroups = append(ZabovIPGroups, groupStruct)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if zabov["timetable"] != nil {
 | 
				
			||||||
 | 
							ZabovDefaultTimetable = zabov["timetable"].(string)
 | 
				
			||||||
 | 
							_, ok := ZabovTimetables[ZabovDefaultTimetable]
 | 
				
			||||||
 | 
							if !ok {
 | 
				
			||||||
 | 
								log.Println("inexistent timetable:", ZabovDefaultTimetable)
 | 
				
			||||||
 | 
								os.Exit(1)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	localresponder := MyConf["localresponder"].(map[string]interface{})
 | 
						localresponder := MyConf["localresponder"].(map[string]interface{})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if localresponder != nil {
 | 
						if localresponder != nil {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										13
									
								
								README.md
								
								
								
								
							
							
						
						
									
										13
									
								
								README.md
								
								
								
								
							| 
						 | 
					@ -94,7 +94,9 @@ Advanced configuration includes support for multiple configurations based on IP
 | 
				
			||||||
        "proto":"udp", 
 | 
					        "proto":"udp", 
 | 
				
			||||||
        "ipaddr":"0.0.0.0",
 | 
					        "ipaddr":"0.0.0.0",
 | 
				
			||||||
        "cachettl": 1,
 | 
					        "cachettl": 1,
 | 
				
			||||||
        "killfilettl": 12
 | 
					        "killfilettl": 12,
 | 
				
			||||||
 | 
					        "debug":"false",
 | 
				
			||||||
 | 
					        "timetable":"tt_default"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "localresponder":{
 | 
					    "localresponder":{
 | 
				
			||||||
        "responder":"192.168.178.1:53",
 | 
					        "responder":"192.168.178.1:53",
 | 
				
			||||||
| 
						 | 
					@ -117,6 +119,11 @@ Advanced configuration includes support for multiple configurations based on IP
 | 
				
			||||||
            "cfgin":"children_restricted",
 | 
					            "cfgin":"children_restricted",
 | 
				
			||||||
            "cfgout":"default"
 | 
					            "cfgout":"default"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        "tt_default":{
 | 
				
			||||||
 | 
					            "tables":[{"times":"8:30-22:30", "days":"Su"}],
 | 
				
			||||||
 | 
					            "cfgin":"children",
 | 
				
			||||||
 | 
					            "cfgout":"default"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "configs":{
 | 
					    "configs":{
 | 
				
			||||||
        "default":{
 | 
					        "default":{
 | 
				
			||||||
| 
						 | 
					@ -144,6 +151,10 @@ Advanced configuration includes support for multiple configurations based on IP
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
</pre>
 | 
					</pre>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Global zabov settings:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- timetable: sets the global/default timetable. This table will be used for any client that is not already included in an IP group
 | 
				
			||||||
 | 
					
 | 
				
			||||||
localresponder:
 | 
					localresponder:
 | 
				
			||||||
  - allows to set a local DNS to respond for "local" domains. A domain name is handled as "local" if dosen't contains "." (dots) or if it ends with a well known prefix, such as ".local".
 | 
					  - allows to set a local DNS to respond for "local" domains. A domain name is handled as "local" if dosen't contains "." (dots) or if it ends with a well known prefix, such as ".local".
 | 
				
			||||||
  Note: the cache is not used for local responder.
 | 
					  Note: the cache is not used for local responder.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -178,7 +178,6 @@ func confFromTimeTable(timetable string) string {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func confFromIP(clientIP net.IP) (string, string) {
 | 
					func confFromIP(clientIP net.IP) (string, string) {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	for _, ipgroup := range ZabovIPGroups {
 | 
						for _, ipgroup := range ZabovIPGroups {
 | 
				
			||||||
		for _, ip := range ipgroup.ips {
 | 
							for _, ip := range ipgroup.ips {
 | 
				
			||||||
			if clientIP.Equal(ip) {
 | 
								if clientIP.Equal(ip) {
 | 
				
			||||||
| 
						 | 
					@ -186,12 +185,16 @@ func confFromIP(clientIP net.IP) (string, string) {
 | 
				
			||||||
					return confFromTimeTable(ipgroup.timetable), ipgroup.timetable
 | 
										return confFromTimeTable(ipgroup.timetable), ipgroup.timetable
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				if ZabovDebug {
 | 
									if ZabovDebug {
 | 
				
			||||||
					log.Println("confFromIP: ipgroup.cfg")
 | 
										log.Println("confFromIP: ipgroup.cfg", ipgroup.cfg)
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				return ipgroup.cfg, ""
 | 
									return ipgroup.cfg, ""
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						if len(ZabovDefaultTimetable) > 0 {
 | 
				
			||||||
 | 
							return confFromTimeTable(ZabovDefaultTimetable), ZabovDefaultTimetable
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ZabovDebug {
 | 
						if ZabovDebug {
 | 
				
			||||||
		log.Println("confFromIP: return default")
 | 
							log.Println("confFromIP: return default")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										3
									
								
								main.go
								
								
								
								
							
							
						
						
									
										3
									
								
								main.go
								
								
								
								
							| 
						 | 
					@ -22,6 +22,9 @@ var ZabovLocalResponder string
 | 
				
			||||||
//ZabovLocalDomain is the default local domain (global)
 | 
					//ZabovLocalDomain is the default local domain (global)
 | 
				
			||||||
var ZabovLocalDomain string
 | 
					var ZabovLocalDomain string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//ZabovDefaultTimetable is the default timetable, applied to any client that is not already in any IP Group (global)
 | 
				
			||||||
 | 
					var ZabovDefaultTimetable string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//ZabovDebug activate more logging if set to true (global)
 | 
					//ZabovDebug activate more logging if set to true (global)
 | 
				
			||||||
var ZabovDebug bool
 | 
					var ZabovDebug bool
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue