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