mirror of
				https://github.com/coredns/coredns.git
				synced 2025-11-03 18:53:13 -05:00 
			
		
		
		
	
		
			
	
	
		
			41 lines
		
	
	
		
			846 B
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			41 lines
		
	
	
		
			846 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| 
								 | 
							
								package setup
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import (
							 | 
						||
| 
								 | 
							
									"strconv"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									"github.com/miekg/coredns/middleware"
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func parseRoller(c *Controller) (*middleware.LogRoller, error) {
							 | 
						||
| 
								 | 
							
									var size, age, keep int
							 | 
						||
| 
								 | 
							
									// This is kind of a hack to support nested blocks:
							 | 
						||
| 
								 | 
							
									// As we are already in a block: either log or errors,
							 | 
						||
| 
								 | 
							
									// c.nesting > 0 but, as soon as c meets a }, it thinks
							 | 
						||
| 
								 | 
							
									// the block is over and return false for c.NextBlock.
							 | 
						||
| 
								 | 
							
									for c.NextBlock() {
							 | 
						||
| 
								 | 
							
										what := c.Val()
							 | 
						||
| 
								 | 
							
										if !c.NextArg() {
							 | 
						||
| 
								 | 
							
											return nil, c.ArgErr()
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										value := c.Val()
							 | 
						||
| 
								 | 
							
										var err error
							 | 
						||
| 
								 | 
							
										switch what {
							 | 
						||
| 
								 | 
							
										case "size":
							 | 
						||
| 
								 | 
							
											size, err = strconv.Atoi(value)
							 | 
						||
| 
								 | 
							
										case "age":
							 | 
						||
| 
								 | 
							
											age, err = strconv.Atoi(value)
							 | 
						||
| 
								 | 
							
										case "keep":
							 | 
						||
| 
								 | 
							
											keep, err = strconv.Atoi(value)
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										if err != nil {
							 | 
						||
| 
								 | 
							
											return nil, err
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									return &middleware.LogRoller{
							 | 
						||
| 
								 | 
							
										MaxSize:    size,
							 | 
						||
| 
								 | 
							
										MaxAge:     age,
							 | 
						||
| 
								 | 
							
										MaxBackups: keep,
							 | 
						||
| 
								 | 
							
										LocalTime:  true,
							 | 
						||
| 
								 | 
							
									}, nil
							 | 
						||
| 
								 | 
							
								}
							 |