| 54 | } |
| 55 | |
| 56 | func (f *Filter) Check() error { |
| 57 | switch f.PG { |
| 58 | case 0, 12, 18, 21: break |
| 59 | default: return errors.New( "unsupported PG" ) |
| 60 | } |
| 61 | for _, risk := range f.Risk { |
| 62 | switch risk { |
| 63 | case "", "possible", "medium", "high": break |
| 64 | default: return errors.New( "unsupported risk level " + risk ) |
| 65 | } |
| 66 | } |
| 67 | for _, illegal := range f.Illegal { |
| 68 | switch illegal { |
| 69 | case "", "content", "warez", "spyware", "copyright": break |
| 70 | default: return errors.New( "bad illegal category " + illegal ) |
| 71 | } |
| 72 | } |
| 73 | for _, name := range f.Whitelist { if !nameRegexp.MatchString( name ) { return errors.New( "bad DNS name " + name ) } } |
| 74 | for _, name := range f.Blacklist { if !nameRegexp.MatchString( name ) { return errors.New( "bad DNS name " + name ) } } |
| 75 | |
| 76 | return nil |
| 77 | } |