src/shepp/DomainFunctions.H

Go to the documentation of this file.
00001 /* ${copyright}$ */
00002 /* $Id: DomainFunctions.H 711 2006-05-03 16:55:52Z koji $ */
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 //USE_BR_DOMAINS
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 //USE_BR_DOMAINS
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 //USE_BR_DOMAINS
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 //USE_BR_DOMAINS
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       // set organization
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       // insert domains
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   } // _debug
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   // domain name MUST be the first attribute
00186   cmd->set_name(words[0]);
00187   words.erase(words.begin());
00188 
00189   while (!words.empty()) {
00190     if (words[0] == "-auth") {
00191       // set authInfo
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       // ticketNumber
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   } // _debug
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   // domain name MUST be the first attribute
00267   cmd->set_name(words[0]);
00268   words.erase(words.begin());
00269 
00270   while (!words.empty()) {
00271     if (words[0] == "-period") {
00272       //registration period
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       //nameserver
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       //registrant
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       //contact
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       //authInfo
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       //organization
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       //releaseProcessFlags
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   } // _debug
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   // domain name MUST be the first attribute
00450   cmd->set_name(words[0]);
00451   words.erase(words.begin());
00452 
00453   while (!words.empty()) {
00454     if (words[0] == "-expdate") {
00455       //-expdate
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   } //_debug
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   // domain name MUST be the first attribute
00523   cmd->set_name(words[0]);
00524   words.erase(words.begin());
00525 
00526   while (!words.empty()) {
00527     if (words[0] == "-add-ns") {
00528       //nameserver to add
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       //nameserver to remove
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       //contact to add
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       //contact to remove
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       //status to add
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       //status to remove
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       //registrant
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       //authInfo
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       // ticketNumber
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       //releaseProcessFlags
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   //if it has brdomain attributes set it MUST have ticketNumber also
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   } // _debug
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     // domain command processing
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__

Generated on Wed May 3 15:32:48 2006 for libepp_nicbr by  doxygen 1.4.6