src/shepp/DomainFunctions.H

Go to the documentation of this file.
00001 /* ${copyright}$ */
00002 /* $Id: DomainFunctions.H 717 2006-05-04 21:20:51Z 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            "\n    [-auto-renew <on|off>]"
00068 #endif //USE_BR_DOMAINS
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 //USE_BR_DOMAINS
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       // set organization
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       // insert domains
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   } // _debug
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   // domain name MUST be the first attribute
00188   cmd->set_name(words[0]);
00189   words.erase(words.begin());
00190 
00191   while (!words.empty()) {
00192     if (words[0] == "-auth") {
00193       // set authInfo
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       // ticketNumber
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   } // _debug
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   // domain name MUST be the first attribute
00269   cmd->set_name(words[0]);
00270   words.erase(words.begin());
00271 
00272   while (!words.empty()) {
00273     if (words[0] == "-period") {
00274       //registration period
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       //nameserver
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       //registrant
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       //contact
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       //authInfo
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       //organization
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       //releaseProcessFlags
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       //auto-renew
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   } // _debug
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   // domain name MUST be the first attribute
00468   cmd->set_name(words[0]);
00469   words.erase(words.begin());
00470 
00471   while (!words.empty()) {
00472     if (words[0] == "-expdate") {
00473       //-expdate
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   } //_debug
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   // domain name MUST be the first attribute
00541   cmd->set_name(words[0]);
00542   words.erase(words.begin());
00543 
00544   while (!words.empty()) {
00545     if (words[0] == "-add-ns") {
00546       //nameserver to add
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       //nameserver to remove
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       //contact to add
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       //contact to remove
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       //status to add
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       //status to remove
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       //registrant
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       //authInfo
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       // ticketNumber
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       //releaseProcessFlags
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       //auto-renew
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   //if it has brdomain attributes set it MUST have ticketNumber also
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   } // _debug
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     // domain command processing
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__

Generated on Thu Jun 8 17:40:00 2006 for libepp_nicbr by  doxygen 1.4.6