libepp_nicbr
DomainUpdateCmd.H
Go to the documentation of this file.
1 /* ${copyright}$ */
2 /* $Id: DomainUpdateCmd.H 1187 2013-07-30 19:09:21Z rafael $ */
7 #ifndef __DOMAIN_UPDATE_CMD_H__
8 #define __DOMAIN_UPDATE_CMD_H__
9 
10 #include <string>
11 #include <vector>
12 #include <set>
13 #include <map>
14 
15 #include "libepp_nicbr.H"
16 
17 #include "Command.H"
18 #include "CommonData.H" // struct NameServer
19 #include "DSInfo.H"
20 #include "KeyData.H"
21 #include "RGPRestore.H"
22 #include "LaunchUpdateCmd.H"
23 
24 using std::string;
25 using std::set;
26 using std::map;
27 using std::less;
28 
29 LIBEPP_NICBR_NS_BEGIN
30 
32 class DomainUpdateCmd : public Command
33 {
34 public:
35 
36  struct Status {
37  string s;
38  string lang;
39  string msg;
40  bool operator<(const Status &st) const {
41  return s < st.s;
42  }
43  };
44 
46  DomainUpdateCmd(bool reset = true) : Command(false)
47  {
48  if (reset) {
49  this->reset();
50  }
51  }
52 
54 
57  void set_name(const string& name) { _name = name; }
58 
60 
63  string get_name() const { return _name; }
64 
66 
69  void insert_nameserver_add(const struct NameServer &nameserver_add)
70  {
71  _nameserver_add.push_back(nameserver_add);
72  }
73 
75 
78  vector<struct NameServer> get_nameserver_add() const
79  {
80  return _nameserver_add;
81  }
82 
84 
87  void insert_nameserver_rem(const struct NameServer &nameserver_rem)
88  {
89  _nameserver_rem.push_back(nameserver_rem);
90  }
91 
93 
96  vector<struct NameServer> get_nameserver_rem() const
97  {
98  return _nameserver_rem;
99  }
100 
102 
106  void insert_contact_add(const string& type, const string& identification)
107  {
108  _contact_add[type] = identification;
109  }
110 
112 
115  map< string, string, less<string> > get_contact_add() const
116  {
117  return _contact_add;
118  }
119 
121 
125  void insert_contact_rem(const string& type, const string& identification)
126  {
127  _contact_rem[type] = identification;
128  }
129 
131 
134  map< string, string, less<string> > get_contact_rem() const
135  {
136  return _contact_rem;
137  }
138 
140 
143  void insert_status_add(const struct Status &status_add)
144  {
145  _status_add.insert(status_add);
146  }
147 
149 
152  set<struct Status> get_status_add() const { return _status_add; }
153 
155 
158  void insert_status_rem(const struct Status &status_rem)
159  {
160  _status_rem.insert(status_rem);
161  }
162 
164 
167  set<struct Status> get_status_rem() const { return _status_rem; }
168 
170 
173  void set_registrant(const string &registrant)
174  {
175  _registrant = registrant;
176  _registrant_f = true;
177  };
178 
180 
183  string get_registrant() const { return _registrant; };
184 
186 
189  void set_registrant_f(const bool registrant_f)
190  {
191  _registrant_f = registrant_f;
192  };
193 
195 
198  bool get_registrant_f() const
199  {
200  return _registrant_f;
201  };
202 
204 
207  void set_authInfo(const AuthInfo &authInfo)
208  {
209  _authInfo = authInfo;
210  }
211 
213 
216  AuthInfo get_authInfo() const { return _authInfo; }
217 
218  //******************** RFC 4310/5910 BEGIN ********************
220 
223  void set_secDnsVersion(string secDnsVersion)
224  {
225  _secDnsVersion = secDnsVersion;
226  }
227 
229 
232  string get_secDnsVersion() const
233  {
234  return _secDnsVersion;
235  }
236 
238 
241  void set_max_sig_life(const unsigned int max_sig_life)
242  {
243  _max_sig_life = max_sig_life;
244  }
245 
247 
250  unsigned int get_max_sig_life() const
251  {
252  return _max_sig_life;
253  }
254 
256 
259  void insert_dnskey_add(const KeyData &keydata)
260  {
261  _dnskey_list_add.push_back(keydata);
262  }
263 
265 
268  list<KeyData> get_dnskey_add() const
269  {
270  return _dnskey_list_add;
271  }
272 
274 
277  void insert_dnskey_rem(const KeyData &keydata)
278  {
279  _dnskey_list_rem.push_back(keydata);
280  }
281 
283 
286  list<KeyData> get_dnskey_rem() const
287  {
288  return _dnskey_list_rem;
289  }
290 
292 
295  void insert_ds_add(const DSInfo &ds_info)
296  {
297  _ds_list_add.push_back(ds_info);
298  }
299 
301 
304  list<DSInfo> get_ds_add() const
305  {
306  return _ds_list_add;
307  }
308 
310 
313  void insert_ds_rem_1_1(const DSInfo &ds_info)
314  {
315  _ds_list_rem.push_back(ds_info);
316  }
317 
319 
322  void insert_ds_rem(const unsigned int &keyTag)
323  {
324  _ds_list_rem_1_0.push_back(keyTag);
325  }
326 
328 
331  list<DSInfo> get_ds_rem_1_1() const
332  {
333  return _ds_list_rem;
334  }
335 
337 
340  list<unsigned int> get_ds_rem() const
341  {
342  return _ds_list_rem_1_0;
343  }
344 
346 
349  void insert_ds_chg(const DSInfo &ds_info)
350  {
351  _ds_list_chg.push_back(ds_info);
352  }
353 
355 
358  list<DSInfo> get_ds_chg() const
359  {
360  return _ds_list_chg;
361  }
362 
364 
367  void setUrgentFlag(const bool urgentFlag)
368  {
369  _urgentFlag = urgentFlag;
370  }
371 
373 
376  bool isUrgent() const
377  {
378  return _urgentFlag;
379  }
380 
382 
385  void setRemoveAll(const bool removeAll)
386  {
387  _removeAll = removeAll;
388  }
389 
391 
394  bool getRemoveAll() const
395  {
396  return _removeAll;
397  }
398 
399  //******************** RFC 4310/5910 END ********************
400 
401  //******************** RFC 3915 BEGIN ********************
403 
406  void set_rgp_restore(const RGPRestore &rgp_restore)
407  {
408  _rgp_restore = rgp_restore;
409  }
410 
412 
416  {
417  return _rgp_restore;
418  }
419  //******************** RFC 3915 END ********************
420 
422 
425  void set_launch(const LaunchUpdateCmd &launch) { _launch = launch; }
426 
428 
431  LaunchUpdateCmd get_launch() const { return _launch; }
432 
434  bool has_extension() const {
435  return has_secdns_extension() ||
436  _rgp_restore.get_operation() != RGPRestore::Operation::NONE ||
438  };
439 
441  bool has_secdns_extension() const {
442  bool hasSecDns10 = _secDnsVersion == "1.0" &&
443  !(_ds_list_add.empty() && _ds_list_rem_1_0.empty() && _ds_list_chg.empty());
444 
445  bool hasSecDns11 = _secDnsVersion == "1.1" &&
446  (!(_ds_list_add.empty() && _ds_list_rem.empty()) ||
447  !(_dnskey_list_add.empty() && _dnskey_list_rem.empty()) ||
448  _max_sig_life > 0 || _removeAll == true);
449 
450  return (hasSecDns10 || hasSecDns11);
451  }
452 
454  bool has_launch_extension() const {
455  return _launch.get_phase().get_phase() != LaunchPhase::NONE;
456  }
457 
459  void reset()
460  {
461  Command::reset();
462  _name = "";
463  _nameserver_add.clear();
464  _nameserver_rem.clear();
465  _contact_add.clear();
466  _contact_rem.clear();
467  _status_add.clear();
468  _status_rem.clear();
469  _registrant = "";
470  _registrant_f = false;
471 
472  // RFC 4310/5910
473  _secDnsVersion = "1.1";
474  _max_sig_life = 0;
475  _ds_list_add.clear();
476  _ds_list_rem.clear();
477  _ds_list_rem_1_0.clear();
478  _ds_list_chg.clear();
479  _dnskey_list_rem.clear();
480  _dnskey_list_add.clear();
481  _urgentFlag = false;
482  _removeAll = false;
484  _launch.reset();
485 
486  _authInfo.reset();
487  }
488 
489 protected:
491  string _name;
492 
494  vector<struct NameServer> _nameserver_add;
495 
497  vector<struct NameServer> _nameserver_rem;
498 
500  map< string, string, less<string> > _contact_add;
501 
503  map< string, string, less<string> > _contact_rem;
504 
506  set<struct Status> _status_add;
507 
509  set<struct Status> _status_rem;
510 
512  string _registrant;
513 
516 
519 
522 
524  unsigned int _max_sig_life;
525 
527  list<DSInfo> _ds_list_add;
528 
530  list<DSInfo> _ds_list_rem;
531 
534  list<unsigned int> _ds_list_rem_1_0;
535 
537  list<DSInfo> _ds_list_chg;
538 
540  list<KeyData> _dnskey_list_add;
541 
543  list<KeyData> _dnskey_list_rem;
544 
547 
550 
553 
556 };
557 
558 LIBEPP_NICBR_NS_END
559 #endif //__DOMAIN_UPDATE_CMD_H__
list< unsigned int > get_ds_rem() const
Returns the ds removal list (RFC4310 - DEPRECATED!)
Definition: DomainUpdateCmd.H:340
string _name
fully qualified domain name
Definition: DomainUpdateCmd.H:491
vector< struct NameServer > _nameserver_add
name servers to be added to the domain object
Definition: DomainUpdateCmd.H:494
void set_name(const string &name)
Sets domain name.
Definition: DomainUpdateCmd.H:57
void reset()
Reset all object attributes.
Definition: RGPRestore.H:380
void set_registrant_f(const bool registrant_f)
Sets the registrant change flag.
Definition: DomainUpdateCmd.H:189
set< struct Status > _status_rem
set of status to be removed from the domain object
Definition: DomainUpdateCmd.H:509
Operation::Value get_operation() const
Returns the operation.
Definition: RGPRestore.H:356
LaunchUpdateCmd _launch
draft-tan-epp-launchphase-11 - Launch
Definition: DomainUpdateCmd.H:555
void insert_dnskey_rem(const KeyData &keydata)
Inserts one DNSKEY into the DNSKEY removal list.
Definition: DomainUpdateCmd.H:277
map< string, string, less< string > > _contact_add
contacts to be added to the domain object
Definition: DomainUpdateCmd.H:500
bool getRemoveAll() const
Getter for RFC5910 alternative "remove all" attribute for domain:update.
Definition: DomainUpdateCmd.H:394
string get_registrant() const
Returns registrant.
Definition: DomainUpdateCmd.H:183
list< DSInfo > get_ds_chg() const
Returns the ds change list.
Definition: DomainUpdateCmd.H:358
void set_rgp_restore(const RGPRestore &rgp_restore)
Sets RFC3915 RGP restore structure.
Definition: DomainUpdateCmd.H:406
AuthInfo get_authInfo() const
Returns authorization information.
Definition: DomainUpdateCmd.H:216
Project defines.
EPP CommonData Class.
void set_secDnsVersion(string secDnsVersion)
Sets secDNS extension version.
Definition: DomainUpdateCmd.H:223
Definition: CommonData.H:183
list< KeyData > get_dnskey_add() const
Returns the DNSKEY addition list.
Definition: DomainUpdateCmd.H:268
bool has_secdns_extension() const
Check if there is secDNS extension.
Definition: DomainUpdateCmd.H:441
bool has_extension() const
Check if there is any extension.
Definition: DomainUpdateCmd.H:434
EPP LaunchUpdateCmd Class.
bool _registrant_f
registrant change flag
Definition: DomainUpdateCmd.H:515
void insert_dnskey_add(const KeyData &keydata)
Inserts one DNSKEY into the DNSKEY addition list.
Definition: DomainUpdateCmd.H:259
DomainUpdateCmd(bool reset=true)
Default constructor.
Definition: DomainUpdateCmd.H:46
list< DSInfo > get_ds_add() const
Returns the ds addition list.
Definition: DomainUpdateCmd.H:304
void setRemoveAll(const bool removeAll)
Sets RFC5910 alternative "remove all" attribute for domain:update.
Definition: DomainUpdateCmd.H:385
list< DSInfo > _ds_list_add
list of DS RR to be added to the domain object
Definition: DomainUpdateCmd.H:527
set< struct Status > get_status_rem() const
Returns set of domain status_rem.
Definition: DomainUpdateCmd.H:167
void insert_contact_add(const string &type, const string &identification)
Inserts a contact_add in the map of contacts.
Definition: DomainUpdateCmd.H:106
void set_authInfo(const AuthInfo &authInfo)
Sets authorization information.
Definition: DomainUpdateCmd.H:207
vector< struct NameServer > get_nameserver_rem() const
Returns a list of nameserver_rem.
Definition: DomainUpdateCmd.H:96
void insert_ds_rem_1_1(const DSInfo &ds_info)
Inserts one ds into the ds removal list.
Definition: DomainUpdateCmd.H:313
DSInfo Class.
Definition: DSInfo.H:16
string get_secDnsVersion() const
Returns secDNS extension version.
Definition: DomainUpdateCmd.H:232
Definition: DomainUpdateCmd.H:36
bool has_launch_extension() const
Check if there is launch extension.
Definition: DomainUpdateCmd.H:454
string get_name() const
Returns domain name.
Definition: DomainUpdateCmd.H:63
list< KeyData > _dnskey_list_rem
list of DNSKEY RR to be removed from the domain object
Definition: DomainUpdateCmd.H:543
map< string, string, less< string > > get_contact_add() const
Returns map of contacts.
Definition: DomainUpdateCmd.H:115
AuthInfo _authInfo
authorization information
Definition: DomainUpdateCmd.H:518
void insert_nameserver_add(const struct NameServer &nameserver_add)
Inserts a nameserver_add to the list of nameservers.
Definition: DomainUpdateCmd.H:69
void insert_ds_chg(const DSInfo &ds_info)
Inserts one ds into the ds change list.
Definition: DomainUpdateCmd.H:349
list< DSInfo > _ds_list_rem
list of DS RR to be removed from the domain object
Definition: DomainUpdateCmd.H:530
void reset()
Reset object attributes.
Definition: LaunchUpdateCmd.H:57
void reset()
Reset all object attributes.
Definition: CommonData.H:152
Definition: KeyData.H:15
void insert_ds_rem(const unsigned int &keyTag)
Inserts one ds into the ds removal list (RFC4310 - DEPRECATED!)
Definition: DomainUpdateCmd.H:322
void reset()
Reset object attributes.
Definition: DomainUpdateCmd.H:459
LaunchUpdateCmd get_launch() const
Returns the launch.
Definition: DomainUpdateCmd.H:431
RGPRestore _rgp_restore
RFC 3915 - RGP Restore.
Definition: DomainUpdateCmd.H:552
bool get_registrant_f() const
Returns the registrant change flag.
Definition: DomainUpdateCmd.H:198
Value get_phase() const
Returns the launch phase.
Definition: Launch.H:221
void setUrgentFlag(const bool urgentFlag)
Sets RFC4310 optional "urgent" attribute for domain:update.
Definition: DomainUpdateCmd.H:367
set< struct Status > _status_add
set of status to be added to the domain object
Definition: DomainUpdateCmd.H:506
list< unsigned int > _ds_list_rem_1_0
Definition: DomainUpdateCmd.H:534
EPP DomainUpdateCmd Class.
Definition: DomainUpdateCmd.H:32
void insert_nameserver_rem(const struct NameServer &nameserver_rem)
Inserts a nameserver_rem to the list of nameservers.
Definition: DomainUpdateCmd.H:87
list< DSInfo > get_ds_rem_1_1() const
Returns the ds removal list.
Definition: DomainUpdateCmd.H:331
void insert_ds_add(const DSInfo &ds_info)
Inserts one ds into the ds addition list.
Definition: DomainUpdateCmd.H:295
LaunchPhase get_phase() const
Returns the phase of the launch.
Definition: LaunchUpdateCmd.H:38
bool isUrgent() const
Getter for RFC4310 optional "urgent" attribute for domain:update.
Definition: DomainUpdateCmd.H:376
void insert_status_add(const struct Status &status_add)
Changes a status_add.
Definition: DomainUpdateCmd.H:143
bool _urgentFlag
optinal domain:update urgent flag
Definition: DomainUpdateCmd.H:546
void set_max_sig_life(const unsigned int max_sig_life)
Sets the maximum signature life.
Definition: DomainUpdateCmd.H:241
RGPRestore get_rgp_restore() const
Returns RFC3915 RGP restore structure.
Definition: DomainUpdateCmd.H:415
set< struct Status > get_status_add() const
Returns set of domain status_add.
Definition: DomainUpdateCmd.H:152
void reset()
Reset object attributes.
Definition: Command.H:33
unsigned int get_max_sig_life() const
Returns the maximum signature life.
Definition: DomainUpdateCmd.H:250
EPP/RGP Restore information class.
list< DSInfo > _ds_list_chg
list of DS to be changed in the domain object (RFC 4310 only!)
Definition: DomainUpdateCmd.H:537
EPP Command Class.
Definition: Command.H:18
vector< struct NameServer > _nameserver_rem
name servers to be removed from the domain object
Definition: DomainUpdateCmd.H:497
string _registrant
registrant
Definition: DomainUpdateCmd.H:512
void insert_status_rem(const struct Status &status_rem)
Changes a status_rem in _status_rem.
Definition: DomainUpdateCmd.H:158
EPP Command Class.
void set_registrant(const string &registrant)
Sets registrant.
Definition: DomainUpdateCmd.H:173
list< KeyData > _dnskey_list_add
list of DNSKEY RR to be added to the domain object
Definition: DomainUpdateCmd.H:540
EPP/DNSSEC DS information class.
EPP LaunchUpdateCmd Class.
Definition: LaunchUpdateCmd.H:19
EPP RGPRestore Class.
Definition: RGPRestore.H:290
vector< struct NameServer > get_nameserver_add() const
Returns a list of nameserver_add.
Definition: DomainUpdateCmd.H:78
list< KeyData > get_dnskey_rem() const
Returns the DNSKEY removal list.
Definition: DomainUpdateCmd.H:286
void insert_contact_rem(const string &type, const string &identification)
Inserts a contact_rem in the map of contacts.
Definition: DomainUpdateCmd.H:125
map< string, string, less< string > > _contact_rem
contacts to be removed from the domain object
Definition: DomainUpdateCmd.H:503
void set_launch(const LaunchUpdateCmd &launch)
Sets the launch.
Definition: DomainUpdateCmd.H:425
AuthInfo Class.
Definition: CommonData.H:83
unsigned int _max_sig_life
RRSIG max signature life.
Definition: DomainUpdateCmd.H:524
bool _removeAll
alternative secDNS:all for secDNS:rem
Definition: DomainUpdateCmd.H:549
string _secDnsVersion
RFC 4310/5910 secDNS extension version.
Definition: DomainUpdateCmd.H:521
map< string, string, less< string > > get_contact_rem() const
Returns map of contacts.
Definition: DomainUpdateCmd.H:134