00001
00002
00006 #ifndef __DOMAIN_FUNCTIONS_H__
00007 #define __DOMAIN_FUNCTIONS_H__
00008 #include "SheppCommandFunctions.H"
00009
00010 #if USE_BR_DOMAINS
00011 #include "BrDomainCheck.H"
00012 #include "BrDomainInfo.H"
00013 #include "BrDomainCreate.H"
00014 #include "BrDomainUpdate.H"
00015 #include "BrDomainRenew.H"
00016 #else
00017 #include "DomainCheck.H"
00018 #include "DomainInfo.H"
00019 #include "DomainCreate.H"
00020 #include "DomainUpdate.H"
00021 #include "DomainRenew.H"
00022 #endif //USE_BR_DOMAINS
00023
00024 #include "DomainDelete.H"
00025 #include "RegistrationPeriod.H"
00026
00028
00033 int cmd_domain_help(string error_msg, string specific = "")
00034 {
00035 if (error_msg != "") {
00036 printf("error: %s\n", error_msg.c_str());
00037 }
00038
00039 printf("domain command syntax help:\n");
00040 printf("\n");
00041
00042 if (specific == "" || specific == "check") {
00043 printf(" check <domain1> [domain2 ... domainN]"
00044 #if USE_BR_DOMAINS
00045 " [-o organization]"
00046 #endif
00047 "\n");
00048
00049 printf("\n");
00050 }
00051 if (specific == "" || specific == "info") {
00052 printf(" info <domain> [-auth authInfoPw[:authInfoRoid]]"
00053 #if USE_BR_DOMAINS
00054 " [-t ticketNumber]"
00055 #endif
00056 "\n");
00057 printf("\n");
00058 }
00059 if (specific == "" || specific == "transfer") {
00060 printf(" transfer: not implemented\n");
00061 printf("\n");
00062 }
00063 if (specific == "" || specific == "create") {
00064 printf(" create <domain> [-period time:unit]\n"
00065 " [-ns nameserver[,ipversion:ipaddr][, ...] ...] "
00066 "[-r registrant]"
00067 "\n [-contact type=value ...] [-auth authInfoPw[:authInfoRoid]]"
00068 "\n [-ds <keyTag> <alg> <digestType> <digest> "
00069 "[-maxlife <maxSigLife>]"
00070 "\n [-keyData <flags> <protocol> <alg> <pubKey>] ...] "
00071 #if USE_BR_DOMAINS
00072 "\n <-o organization> [-rpflags flag1:flag2:flag3]"
00073 "\n [-auto-renew <on|off>]"
00074 #endif
00075 "\n");
00076
00077 printf("\n");
00078 }
00079 if (specific == "" || specific == "delete") {
00080 printf(" delete <domain>\n");
00081 printf("\n");
00082 }
00083 if (specific == "" || specific == "renew") {
00084 printf(" renew <domain> <-expdate curExpDate> [-period time:unit]\n");
00085 printf("\n");
00086 }
00087 if (specific == "" || specific == "update") {
00088 printf(" update <domain>\n"
00089 " [-add-ns nameserver[,ipversion:ipaddr][, ...] ...]\n"
00090 " [-add-contact type=value ...]\n"
00091 " [-add-status status:lang:\"description\" ...]\n"
00092 " [-add-ds <keyTag> <alg> <digestType> <digest> "
00093 "[-maxlife <maxSigLife>]\n"
00094 " [-keyData <flags> <protocol> <alg> <pubKey>] ...]\n"
00095 " [-secDNS-urgent]\n"
00096 " [-rem-ns nameserver[,ipversion:ipaddr][, ...] ...]\n"
00097 " [-rem-contact type=value ...]\n"
00098 " [-rem-status status ...]\n"
00099 " [-rem-ds <keyTag>]\n"
00100 " [-chg-ds <keyTag> <alg> <digestType> <digest> "
00101 "[-maxlife <maxSigLife>]\n"
00102 " [-keyData <flags> <protocol> <alg> <pubKey>] ...]\n"
00103
00104 " [-r registrant] [-auth authInfoPw[:authInfoRoid]]"
00105
00106 #if USE_BR_DOMAINS
00107 "\n [-t ticketNumber] [-rpflags flag1:flag2:flag3]"
00108 "\n [-auto-renew <on|off>]"
00109 #endif
00110 "\n");
00111 printf("\n");
00112 }
00113
00114 if (error_msg != "") {
00115 return -1;
00116 }
00117
00118 return 0;
00119 }
00120
00122
00126 int cmd_domain_check(vector<string> &args)
00127 {
00128 #if USE_BR_DOMAINS
00129 BrDomainCheck act;
00130 BrDomainCheckCmd *cmd = act.get_command();
00131 #else
00132 DomainCheck act;
00133 DomainCheckCmd *cmd = act.get_command();
00134 #endif //USE_BR_DOMAINS
00135 string cmd_name = "check";
00136
00137 while (!args.empty()) {
00138 #if USE_BR_DOMAINS
00139 if (args[0] == "-o") {
00140
00141 args.erase(args.begin());
00142 if (args.empty()) {
00143 return cmd_domain_help("organization parameter missing", cmd_name);
00144 }
00145 cmd->set_organization(args[0]);
00146 args.erase(args.begin());
00147 } else {
00148 #endif //USE_BR_DOMAINS
00149
00150 cmd->insert_domain(args[0]);
00151 args.erase(args.begin());
00152 #if USE_BR_DOMAINS
00153 }
00154 #endif //USE_BR_DOMAINS
00155 }
00156
00157 if (cmd->get_domains_list().empty()) {
00158 return cmd_domain_help("no domain names specified", cmd_name);
00159 }
00160
00161 if (_debug) {
00162 set<string> domains = cmd->get_domains_list();
00163 set<string>::const_iterator it;
00164 printf("names to be checked:\n");
00165 for (it = domains.begin(); it != domains.end(); it++) {
00166 printf(" [%s]\n", (*it).c_str());
00167 }
00168
00169 #if USE_BR_DOMAINS
00170 if (cmd->get_organization() != "") {
00171 printf(" organization: [%s]\n", cmd->get_organization().c_str());
00172 }
00173 #endif //USE_BR_DOMAINS
00174 }
00175
00176 if (process_action(act) != 0) {
00177 return -1;
00178 }
00179
00180 return 0;
00181 }
00182
00184
00188 int cmd_domain_info(vector<string> &args)
00189 {
00190 #if USE_BR_DOMAINS
00191 BrDomainInfo act;
00192 BrDomainInfoCmd *cmd = act.get_command();
00193 #else
00194 DomainInfo act;
00195 DomainInfoCmd *cmd = act.get_command();
00196 #endif //USE_BR_DOMAINS
00197 string cmd_name = "info";
00198
00199 if (args.empty()) {
00200 return cmd_domain_help("no domain name specified", cmd_name);
00201 }
00202
00203
00204 cmd->set_name(args[0]);
00205 args.erase(args.begin());
00206
00207 while (!args.empty()) {
00208 if (args[0] == "-auth") {
00209
00210 AuthInfo auth;
00211 if (SheppObjSet::authInfo(auth, args) != 0) {
00212 return cmd_domain_help("invalid auth", cmd_name);
00213 }
00214 cmd->set_authInfo(auth);
00215 #if USE_BR_DOMAINS
00216 } else if (args[0] == "-t") {
00217
00218 args.erase(args.begin());
00219 if (args.empty()) {
00220 return cmd_domain_help("ticket number parameter missing", cmd_name);
00221 }
00222 if (atoi(args[0].c_str()) <= 0) {
00223 return cmd_domain_help("ticket parameter must be a positive integer",
00224 cmd_name);
00225 }
00226 cmd->set_ticketNumber(atoi(args[0].c_str()));
00227 args.erase(args.begin());
00228 #endif //USE_BR_DOMAINS
00229 } else {
00230 return cmd_domain_help("invalid syntax near \"" + args[0] + "\"",
00231 cmd_name);
00232 }
00233 }
00234
00235 if (_debug) {
00236 printf("name to get info: [%s]\n", cmd->get_name().c_str());
00237
00238 #if USE_BR_DOMAINS
00239 if (cmd->get_ticketNumber() != 0) {
00240 printf(" ticketNumber: [%d]\n", cmd->get_ticketNumber());
00241 }
00242 #endif //USE_BR_DOMAINS
00243
00244 SheppPrint::authInfo(cmd->get_authInfo());
00245 }
00246
00247 if (process_action(act) != 0) {
00248 return -1;
00249 }
00250
00251 return 0;
00252 }
00253
00255
00259 int cmd_domain_transfer(vector<string> &args)
00260 {
00261 string cmd_name = "transfer";
00262 return cmd_domain_help("", cmd_name);
00263 }
00264
00266
00270 int cmd_domain_create(vector<string> &args)
00271 {
00272 #if USE_BR_DOMAINS
00273 BrDomainCreate act;
00274 BrDomainCreateCmd *cmd = act.get_command();
00275 #else
00276 DomainCreate act;
00277 DomainCreateCmd *cmd = act.get_command();
00278 #endif //USE_BR_DOMAINS
00279 string cmd_name = "create";
00280
00281 if (args.empty()) {
00282 return cmd_domain_help("domain name missing", cmd_name);
00283 }
00284
00285 cmd->set_name(args[0]);
00286 args.erase(args.begin());
00287
00288 while (!args.empty()) {
00289 if (args[0] == "-period") {
00290
00291 args.erase(args.begin());
00292 if (args.empty()) {
00293 return cmd_domain_help("period parameter missing", cmd_name);
00294 }
00295
00296 string time;
00297 string unit;
00298 if (SheppStrUtil::split(args[0], time, unit, ":", false) != 0) {
00299 return cmd_domain_help("invalid period", cmd_name);
00300 }
00301
00302 cmd->set_period(atoi(time.c_str()), unit);
00303 args.erase(args.begin());
00304 } else if (args[0] == "-ns") {
00305
00306 NameServer ns;
00307 if (SheppObjSet::nameServer(ns, args) != 0) {
00308 return cmd_domain_help("invalid nameserver", cmd_name);
00309 }
00310 cmd->insert_nameserver(ns);
00311 } else if (args[0] == "-r") {
00312
00313 args.erase(args.begin());
00314 if (args.empty()) {
00315 return cmd_domain_help("registrant parameter missing", cmd_name);
00316 }
00317 cmd->set_registrant(args[0]);
00318 args.erase(args.begin());
00319 } else if (args[0] == "-contact") {
00320
00321 args.erase(args.begin());
00322 if (args.empty()) {
00323 return cmd_domain_help("contact parameter missing", cmd_name);
00324 }
00325
00326 string type;
00327 string value;
00328 if (SheppStrUtil::split(args[0], type, value, "=", false) != 0) {
00329 return cmd_domain_help("invalid contact", cmd_name);
00330 }
00331
00332 cmd->insert_contact(type, value);
00333 args.erase(args.begin());
00334
00335 } else if (args[0] == "-auth") {
00336
00337 AuthInfo auth;
00338 if (SheppObjSet::authInfo(auth, args) != 0) {
00339 return cmd_domain_help("invalid auth", cmd_name);
00340 }
00341 cmd->set_authInfo(auth);
00342 } else if (args[0] == "-ds") {
00343
00344 DSInfo ds;
00345 string error_msg;
00346 if (SheppObjSet::dsInfo(ds, args, error_msg) != 0) {
00347 return cmd_domain_help(error_msg, cmd_name);
00348 }
00349 cmd->add_dsInfo(ds);
00350 #if USE_BR_DOMAINS
00351 } else if (args[0] == "-o") {
00352
00353 args.erase(args.begin());
00354 if (args.empty()) {
00355 return cmd_domain_help("organization parameter missing", cmd_name);
00356 }
00357 cmd->set_organization(args[0]);
00358 args.erase(args.begin());
00359 } else if (args[0] == "-rpflags") {
00360
00361 args.erase(args.begin());
00362 if (args.empty()) {
00363 return cmd_domain_help("rpflags parameter missing", cmd_name);
00364 }
00365 ReleaseProcessFlags rpf;
00366 string flag1;
00367 string flag2;
00368 string flag3;
00369
00370 if (SheppStrUtil::split(args[0], flag1, flag2, ":", false) != 0) {
00371 return cmd_domain_help("invalid rpflags", cmd_name);
00372 }
00373
00374 if (SheppStrUtil::split(flag2, flag2, flag3, ":", false) != 0) {
00375 return cmd_domain_help("invalid rpflags", cmd_name);
00376 }
00377
00378 rpf.flag1 = (flag1 == "0") ? 0 : 1;
00379 rpf.flag2 = (flag2 == "0") ? 0 : 1;
00380 rpf.flag3 = (flag3 == "0") ? 0 : 1;
00381
00382 cmd->set_releaseProcessFlags(rpf);
00383 args.erase(args.begin());
00384 } else if (args[0] == "-auto-renew") {
00385
00386 args.erase(args.begin());
00387 if (args.empty()) {
00388 return cmd_domain_help("auto-renew parameter missing", cmd_name);
00389 }
00390 if (args[0] == "on") {
00391 cmd->set_auto_renew(1);
00392 } else if (args[0] == "off") {
00393 cmd->set_auto_renew(0);
00394 } else {
00395 return cmd_domain_help("invalid auto-renew", cmd_name);
00396 }
00397 args.erase(args.begin());
00398 #endif //USE_BR_DOMAINS
00399 } else {
00400 return cmd_domain_help("invalid syntax near \"" + args[0] + "\"",
00401 cmd_name);
00402 }
00403 }
00404 #if USE_BR_DOMAINS
00405 if (cmd->get_organization() == "") {
00406 return cmd_domain_help("organization is mandatory", cmd_name);
00407 }
00408 #endif //USE_BR_DOMAINS
00409
00410 if (_debug) {
00411 printf("creating domain: %s\n", cmd->get_name().c_str());
00412
00413 #if USE_BR_DOMAINS
00414 printf(" organization: %s\n", cmd->get_organization().c_str());
00415 #endif //USE_BR_DOMAINS
00416
00417 if (cmd->get_period().time != 0) {
00418 printf(" period: %d %s\n", cmd->get_period().time,
00419 cmd->get_period().unit.c_str());
00420 }
00421
00422 vector<NameServer> nss = cmd->get_nameservers();
00423 vector<NameServer>::const_iterator nsit;
00424 for (nsit = nss.begin(); nsit != nss.end(); nsit++) {
00425 SheppPrint::nameserver(*nsit);
00426 }
00427
00428 if (cmd->get_registrant() != "") {
00429 printf(" registrant: %s\n", cmd->get_registrant().c_str());
00430 }
00431
00432 map< string, string, less<string> > contacts = cmd->get_contacts();
00433 map< string, string, less<string> >::const_iterator cit;
00434 for (cit = contacts.begin(); cit != contacts.end(); cit++) {
00435 printf(" contact %s: %s\n", (*cit).first.c_str(), (*cit).second.c_str());
00436 }
00437
00438 SheppPrint::authInfo(cmd->get_authInfo());
00439
00440 #if USE_BR_DOMAINS
00441 if (cmd->get_releaseProcessFlags().flag1 == 1 ||
00442 cmd->get_releaseProcessFlags().flag2 == 1 ||
00443 cmd->get_releaseProcessFlags().flag3 == 1) {
00444 printf(" releaseProcessFlags: %d, %d, %d\n",
00445 cmd->get_releaseProcessFlags().flag1,
00446 cmd->get_releaseProcessFlags().flag2,
00447 cmd->get_releaseProcessFlags().flag3);
00448 }
00449
00450 printf(" auto-renew: %d\n", cmd->get_auto_renew());
00451 #endif //USE_BR_DOMAINS
00452 }
00453
00454 if (process_action(act) != 0) {
00455 return -1;
00456 }
00457
00458 return 0;
00459 }
00460
00462
00466 int cmd_domain_delete(vector<string> &args)
00467 {
00468 DomainDelete act;
00469 DomainDeleteCmd *cmd = act.get_command();
00470
00471 string cmd_name = "delete";
00472
00473 if (args.empty()) {
00474 return cmd_domain_help("domain name missing", cmd_name);
00475 }
00476
00477
00478 cmd->set_name(args[0]);
00479 args.erase(args.begin());
00480
00481 if (_debug) {
00482 printf("deleting domain: %s\n", cmd->get_name().c_str());
00483 }
00484
00485 if (process_action(act) != 0) {
00486 return -1;
00487 }
00488
00489 return 0;
00490 }
00491
00493
00497 int cmd_domain_renew(vector<string> &args)
00498 {
00499 #if USE_BR_DOMAINS
00500 BrDomainRenew act;
00501 #else
00502 DomainRenew act;
00503 #endif //USE_BR_DOMAINS
00504 DomainRenewCmd *cmd = act.get_command();
00505 string cmd_name = "renew";
00506
00507 if (args.empty()) {
00508 return cmd_domain_help("domain name missing", cmd_name);
00509 }
00510
00511 cmd->set_name(args[0]);
00512 args.erase(args.begin());
00513
00514 while (!args.empty()) {
00515 if (args[0] == "-expdate") {
00516
00517 args.erase(args.begin());
00518 if (args.empty()) {
00519 return cmd_domain_help("curExpDate missing", cmd_name);
00520 }
00521 cmd->set_curExpDate(args[0]);
00522 args.erase(args.begin());
00523 } else if (args[0] == "-period") {
00524 args.erase(args.begin());
00525 if (args.empty()) {
00526 return cmd_domain_help("period missing", cmd_name);
00527 }
00528 string str_time;
00529 string unit;
00530 if (SheppStrUtil::split(args[0], str_time, unit, ":", false) != 0) {
00531 return cmd_domain_help("error setting period", cmd_name);
00532 }
00533 RegistrationPeriod period;
00534 period.time = atoi(str_time.c_str());
00535 period.unit = unit;
00536 cmd->set_period(period);
00537 args.erase(args.begin());
00538 } else {
00539 return cmd_domain_help("invalid syntax near \"" + args[0] + "\"",
00540 cmd_name);
00541 }
00542 }
00543
00544 if (cmd->get_curExpDate() == "") {
00545 return cmd_domain_help("curExpDate is mandatory", cmd_name);
00546 }
00547
00548 if (_debug) {
00549 printf("domain to renew: [%s]\n", cmd->get_name().c_str());
00550 printf(" curExpDate : [%s]\n", cmd->get_curExpDate().c_str());
00551 if (cmd->get_period().time != 0 || cmd->get_period().unit != "") {
00552 printf(" period : [%d %s]\n", cmd->get_period().time,
00553 cmd->get_period().unit.c_str());
00554 }
00555 }
00556
00557 if (process_action(act) != 0) {
00558 return -1;
00559 }
00560
00561 return 0;
00562 }
00563
00565
00569 int cmd_domain_update(vector<string> &args)
00570 {
00571 #if USE_BR_DOMAINS
00572 BrDomainUpdate act;
00573 BrDomainUpdateCmd *cmd = act.get_command();
00574 #else
00575 DomainUpdate act;
00576 DomainUpdateCmd *cmd = act.get_command();
00577 #endif //USE_BR_DOMAINS
00578 string cmd_name = "update";
00579
00580 if (args.empty()) {
00581 return cmd_domain_help("domain name missing", cmd_name);
00582 }
00583
00584 cmd->set_name(args[0]);
00585 args.erase(args.begin());
00586
00587 while (!args.empty()) {
00588 if (args[0] == "-add-ns") {
00589
00590 NameServer ns;
00591 if (SheppObjSet::nameServer(ns, args) != 0) {
00592 return cmd_domain_help("invalid nameserver to add", cmd_name);
00593 }
00594 cmd->insert_nameserver_add(ns);
00595 } else if (args[0] == "-rem-ns") {
00596
00597 NameServer ns;
00598 if (SheppObjSet::nameServer(ns, args) != 0) {
00599 return cmd_domain_help("invalid nameserver to remove", cmd_name);
00600 }
00601 cmd->insert_nameserver_rem(ns);
00602 } else if (args[0] == "-add-contact") {
00603
00604 args.erase(args.begin());
00605 if (args.empty()) {
00606 return cmd_domain_help("add-contact parameter missing", cmd_name);
00607 }
00608
00609 string type;
00610 string value;
00611 if (SheppStrUtil::split(args[0], type, value, "=", false) != 0) {
00612 return cmd_domain_help("invalid contact to add", cmd_name);
00613 }
00614
00615 cmd->insert_contact_add(type, value);
00616 args.erase(args.begin());
00617
00618 } else if (args[0] == "-rem-contact") {
00619
00620 args.erase(args.begin());
00621 if (args.empty()) {
00622 return cmd_domain_help("rem-contact parameter missing", cmd_name);
00623 }
00624
00625 string type;
00626 string value;
00627 if (SheppStrUtil::split(args[0], type, value, "=", false) != 0) {
00628 return cmd_domain_help("invalid contact to remove", cmd_name);
00629 }
00630
00631 cmd->insert_contact_rem(type, value);
00632 args.erase(args.begin());
00633
00634 } else if (args[0] == "-add-status") {
00635
00636 args.erase(args.begin());
00637 if (args.empty()) {
00638 return cmd_domain_help("add-status parameter missing", cmd_name);
00639 }
00640
00641 DomainUpdateCmd::Status st;
00642 if (SheppObjSet::status(st, args) != 0) {
00643 return cmd_domain_help("invalid status to add", cmd_name);
00644 }
00645 cmd->insert_status_add(st);
00646
00647 } else if (args[0] == "-rem-status") {
00648
00649 args.erase(args.begin());
00650 if (args.empty()) {
00651 return cmd_domain_help("rem-status parameter missing", cmd_name);
00652 }
00653
00654 DomainUpdateCmd::Status st;
00655 st.s = args[0];
00656 args.erase(args.begin());
00657
00658 cmd->insert_status_rem(st);
00659
00660 } else if (args[0] == "-add-ds") {
00661
00662 DSInfo ds;
00663 string error_msg;
00664 if (SheppObjSet::dsInfo(ds, args, error_msg) != 0) {
00665 return cmd_domain_help(error_msg, cmd_name);
00666 }
00667 cmd->insert_ds_add(ds);
00668 } else if (args[0] == "-rem-ds") {
00669
00670 args.erase(args.begin());
00671 if (args.empty()) {
00672 return cmd_domain_help("rem-ds parameter missing", cmd_name);
00673 }
00674 cmd->insert_ds_rem(atoi(args[0].c_str()));
00675 args.erase(args.begin());
00676 } else if (args[0] == "-chg-ds") {
00677
00678 DSInfo ds;
00679 string error_msg;
00680 if (SheppObjSet::dsInfo(ds, args, error_msg) != 0) {
00681 return cmd_domain_help(error_msg, cmd_name);
00682 }
00683 cmd->insert_ds_chg(ds);
00684 } else if (args[0] == "-secDNS-urgent") {
00685 cmd->setUrgentFlag(true);
00686 args.erase(args.begin());
00687 } else if (args[0] == "-r") {
00688
00689 args.erase(args.begin());
00690 if (args.empty()) {
00691 return cmd_domain_help("registrant parameter missing", cmd_name);
00692 }
00693 cmd->set_registrant(args[0]);
00694 args.erase(args.begin());
00695 } else if (args[0] == "-auth") {
00696
00697 AuthInfo auth;
00698 if (SheppObjSet::authInfo(auth, args) != 0) {
00699 return cmd_domain_help("invalid auth", cmd_name);
00700 }
00701 cmd->set_authInfo(auth);
00702 #if USE_BR_DOMAINS
00703 } else if (args[0] == "-t") {
00704
00705 args.erase(args.begin());
00706 if (args.empty()) {
00707 return cmd_domain_help("ticket number parameter missing", cmd_name);
00708 }
00709 if (atoi(args[0].c_str()) <= 0) {
00710 return cmd_domain_help("ticket parameter must be a positive integer",
00711 cmd_name);
00712 }
00713 cmd->set_ticketNumber(atoi(args[0].c_str()));
00714 args.erase(args.begin());
00715 } else if (args[0] == "-rpflags") {
00716
00717 args.erase(args.begin());
00718 if (args.empty()) {
00719 return cmd_domain_help("rpflags parameter missing", cmd_name);
00720 }
00721 ReleaseProcessFlags rpf;
00722 string flag1;
00723 string flag2;
00724 string flag3;
00725
00726 if (SheppStrUtil::split(args[0], flag1, flag2, ":", false) != 0) {
00727 return cmd_domain_help("invalid rpflags", cmd_name);
00728 }
00729
00730 if (SheppStrUtil::split(flag2, flag2, flag3, ":", false) != 0) {
00731 return cmd_domain_help("invalid rpflags", cmd_name);
00732 }
00733
00734 if (flag1 == "0" || flag1 == "1") {
00735 rpf.flag1 = atoi(flag1.c_str());
00736 } else if (flag1 != "-1") {
00737 return cmd_domain_help("rpflags invalid parameter. "
00738 "Expected '-1', '0' or '1'.", cmd_name);
00739 }
00740 if (flag2 == "0" || flag2 == "1") {
00741 rpf.flag2 = atoi(flag2.c_str());
00742 } else if (flag2 != "-1") {
00743 return cmd_domain_help("rpflags invalid parameter. "
00744 "Expected '-1', '0' or '1'.", cmd_name);
00745 }
00746 if (flag3 == "0" || flag3 == "1") {
00747 rpf.flag3 = atoi(flag3.c_str());
00748 } else if (flag3 != "-1") {
00749 return cmd_domain_help("rpflags invalid parameter. "
00750 "Expected '-1', '0' or '1'.", cmd_name);
00751 }
00752
00753 cmd->set_releaseProcessFlags(rpf);
00754 args.erase(args.begin());
00755 } else if (args[0] == "-auto-renew") {
00756
00757 args.erase(args.begin());
00758 if (args.empty()) {
00759 return cmd_domain_help("auto-renew parameter missing", cmd_name);
00760 }
00761 if (args[0] == "on") {
00762 cmd->set_auto_renew(1);
00763 } else if (args[0] == "off") {
00764 cmd->set_auto_renew(0);
00765 } else {
00766 return cmd_domain_help("invalid auto-renew", cmd_name);
00767 }
00768 args.erase(args.begin());
00769 #endif //USE_BR_DOMAINS
00770 } else {
00771 return cmd_domain_help("invalid syntax near \"" + args[0] + "\"",
00772 cmd_name);
00773 }
00774 }
00775
00776 #if USE_BR_DOMAINS
00777 bool brdomain_rpf_update = false;
00778
00779 if (cmd->get_releaseProcessFlags().flag1 != -1 ||
00780 cmd->get_releaseProcessFlags().flag2 != -1 ||
00781 cmd->get_releaseProcessFlags().flag3 != -1) {
00782 brdomain_rpf_update = true;
00783 }
00784
00785 if (brdomain_rpf_update && cmd->get_ticketNumber() == 0) {
00786 return cmd_domain_help("BrDomain extension rpf updates "
00787 "MUST contain ticketNumber", cmd_name);
00788 }
00789 #endif //USE_BR_DOMAINS
00790
00791 if (cmd->get_nameserver_add().empty() &&
00792 cmd->get_nameserver_rem().empty() &&
00793 cmd->get_ds_add().empty() &&
00794 cmd->get_ds_rem().empty() &&
00795 cmd->get_ds_chg().empty() &&
00796 cmd->get_contact_add().empty() &&
00797 cmd->get_contact_rem().empty() &&
00798 cmd->get_status_add().empty() &&
00799 cmd->get_status_rem().empty() &&
00800 cmd->get_registrant() == "" &&
00801 cmd->get_authInfo().get_pw() == ""
00802 #if USE_BR_DOMAINS
00803 && !brdomain_rpf_update && cmd->get_auto_renew() == -1
00804 #endif //USE_BR_DOMAINS
00805 ) {
00806 return cmd_domain_help("you didn't set a thing", cmd_name);
00807 }
00808
00809 if (_debug) {
00810 printf("updating domain: %s\n", cmd->get_name().c_str());
00811
00812 vector<NameServer> nss = cmd->get_nameserver_add();
00813 vector<NameServer>::const_iterator nsit;
00814 if (!nss.empty()) {
00815 printf(" nameservers to add:\n");
00816 }
00817 for (nsit = nss.begin(); nsit != nss.end(); nsit++) {
00818 SheppPrint::nameserver(*nsit);
00819 }
00820
00821 nss = cmd->get_nameserver_rem();
00822 if (!nss.empty()) {
00823 printf(" nameservers to remove:\n");
00824 }
00825 for (nsit = nss.begin(); nsit != nss.end(); nsit++) {
00826 SheppPrint::nameserver(*nsit);
00827 }
00828
00829 if (cmd->get_registrant() != "") {
00830 printf(" registrant: %s\n", cmd->get_registrant().c_str());
00831 }
00832
00833 map< string, string, less<string> > contacts = cmd->get_contact_add();
00834 map< string, string, less<string> >::const_iterator cit;
00835 if (!contacts.empty()) {
00836 printf(" contacts to add:\n");
00837 }
00838 for (cit = contacts.begin(); cit != contacts.end(); cit++) {
00839 printf(" contact %s: %s\n", (*cit).first.c_str(),
00840 (*cit).second.c_str());
00841 }
00842
00843 contacts = cmd->get_contact_rem();
00844 if (!contacts.empty()) {
00845 printf(" contacts to remove:\n");
00846 }
00847 for (cit = contacts.begin(); cit != contacts.end(); cit++) {
00848 printf(" contact %s: %s\n", (*cit).first.c_str(),
00849 (*cit).second.c_str());
00850 }
00851
00852 set<DomainUpdateCmd::Status> statuses = cmd->get_status_add();
00853 set<DomainUpdateCmd::Status>::const_iterator stit;
00854 if (!statuses.empty()) {
00855 printf(" status to add:\n");
00856 }
00857 for (stit = statuses.begin(); stit != statuses.end(); stit++) {
00858 printf(" s : [%s]\n", (*stit).s.c_str());
00859 printf(" lang: [%s]\n", (*stit).lang.c_str());
00860 printf(" msg : [%s]\n", (*stit).msg.c_str());
00861 }
00862 statuses = cmd->get_status_rem();
00863 if (!statuses.empty()) {
00864 printf(" status to remove:\n");
00865 }
00866 for (stit = statuses.begin(); stit != statuses.end(); stit++) {
00867 printf(" s : [%s]\n", (*stit).s.c_str());
00868 printf(" lang: [%s]\n", (*stit).lang.c_str());
00869 printf(" msg : [%s]\n", (*stit).msg.c_str());
00870 }
00871
00872 SheppPrint::authInfo(cmd->get_authInfo());
00873
00874 #if USE_BR_DOMAINS
00875 if (cmd->get_ticketNumber() != 0) {
00876 printf(" ticketNumber: [%d]\n", cmd->get_ticketNumber());
00877 }
00878
00879 if (cmd->get_releaseProcessFlags().flag1 != -1 ||
00880 cmd->get_releaseProcessFlags().flag2 != -1 ||
00881 cmd->get_releaseProcessFlags().flag3 != -1) {
00882 printf(" releaseProcessFlags: %d, %d, %d\n",
00883 cmd->get_releaseProcessFlags().flag1,
00884 cmd->get_releaseProcessFlags().flag2,
00885 cmd->get_releaseProcessFlags().flag3);
00886 }
00887
00888 printf(" auto-renew: %d\n", cmd->get_auto_renew());
00889 #endif //USE_BR_DOMAINS
00890 }
00891
00892 if (process_action(act) != 0) {
00893 return -1;
00894 }
00895
00896 return 0;
00897 }
00898
00900
00904 int cmd_domain(vector<string> &args)
00905 {
00906
00907 if (!args.empty() && !(args[0] == "help")) {
00908 if (args[0] == "check") {
00909 args.erase(args.begin());
00910 return cmd_domain_check(args);
00911 } else if (args[0] == "info") {
00912 args.erase(args.begin());
00913 return cmd_domain_info(args);
00914 } else if (args[0] == "transfer") {
00915 args.erase(args.begin());
00916 return cmd_domain_transfer(args);
00917 } else if (args[0] == "create") {
00918 args.erase(args.begin());
00919 return cmd_domain_create(args);
00920 } else if (args[0] == "delete") {
00921 args.erase(args.begin());
00922 return cmd_domain_delete(args);
00923 } else if (args[0] == "renew") {
00924 args.erase(args.begin());
00925 return cmd_domain_renew(args);
00926 } else if (args[0] == "update") {
00927 args.erase(args.begin());
00928 return cmd_domain_update(args);
00929 } else {
00930 return cmd_domain_help("invalid command: domain " + args[0]);
00931 }
00932 }
00933
00934 return cmd_domain_help("");
00935 }
00936
00937 #endif //__DOMAIN_FUNCTIONS_H__