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