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