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