~ubuntu-branches/ubuntu/maverick/pdns/maverick-updates

« back to all changes in this revision

Viewing changes to pdns/backends/bind/zoneparser.hh

  • Committer: Bazaar Package Importer
  • Author(s): Matthijs Mohlmann, Matthijs Mohlmann, Christoph Haas
  • Date: 2007-04-15 23:23:39 UTC
  • mfrom: (1.1.4 upstream)
  • Revision ID: james.westby@ubuntu.com-20070415232339-5x3scc8gx04e50um
Tags: 2.9.21-1
[ Matthijs Mohlmann ]
* New upstream release. (Closes: #420294)
* Remove meta pdns package.
* Added new sqlite3 backend package.
* Months and minutes where mixed up. (Closes: #406462)
* Case sensitivity in bind backend caused PowerDNS to not serve a certain
  zone. (Closes: #406461)
* Bind backend forgot about zones on a notify. (Closes: #398213)

[ Christoph Haas ]
* Documented incorporated backend bind. (Closes: #415471)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
    PowerDNS Versatile Database Driven Nameserver
3
 
    Copyright (C) 2002  PowerDNS.COM BV
4
 
 
5
 
    This program is free software; you can redistribute it and/or modify
6
 
    it under the terms of the GNU General Public License as published by
7
 
    the Free Software Foundation; either version 2 of the License, or
8
 
    (at your option) any later version.
9
 
 
10
 
    This program is distributed in the hope that it will be useful,
11
 
    but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 
    GNU General Public License for more details.
14
 
 
15
 
    You should have received a copy of the GNU General Public License
16
 
    along with this program; if not, write to the Free Software
17
 
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18
 
*/
19
 
#ifndef ZONEPARSER_HH
20
 
#define ZONEPARSER_HH
21
 
#include <string>
22
 
#include <map>
23
 
#include <vector>
24
 
#include <time.h>
25
 
 
26
 
using namespace std;
27
 
 
28
 
class ZoneParser
29
 
{
30
 
 public:
31
 
  struct Record
32
 
  {
33
 
    string name;
34
 
    string qtype;
35
 
    string content;
36
 
    int ttl;
37
 
    int prio;
38
 
  };
39
 
  ZoneParser() : d_ttl(3600) {}
40
 
  ~ZoneParser();
41
 
  void parse(const string &fname,const string &origin, unsigned int domain_id);
42
 
  void parse(const string &fname,const string &origin, vector<Record>&records);
43
 
  
44
 
  typedef void callback_t(unsigned int domain_id, const string &domain, const string &qtype, const string &content, int ttl, int prio);
45
 
  void setCallback(callback_t *callback);
46
 
  callback_t *d_callback;
47
 
  bool parseLine(const vector<string>&words, vector<Record> &);
48
 
  bool eatLine(const string& line, vector<Record>&);
49
 
  void setDirectory(const string &dir);
50
 
  static string canonic(const string& dom);
51
 
    
52
 
private:
53
 
  unsigned int zoneNumber(const string &str);
54
 
  string d_filename;
55
 
  string d_dir;
56
 
  unsigned int d_lineno;
57
 
  void soaCanonic(string &content);
58
 
  bool isNumber(const string &);
59
 
  bool isType(const string &);
60
 
  bool isClass(const string &);
61
 
  string d_origin;
62
 
  time_t d_ttl;
63
 
  void cutOff(string &line, const string &delim);
64
 
  void fillRec(const string &qname, const string &qtype, const string &content, int ttl, int prio, vector<Record>&rec);
65
 
  string expandWord(const string &line, int value);
66
 
};
67
 
 
68
 
 
69
 
#endif /* BINDPARSER_HH */