Ignore:
Timestamp:
05/23/05 21:24:32 (8 years ago)
Author:
Michael Medin <michael@…>
Branches:
master, 0.4.0, 0.4.1, 0.4.2, stable
Children:
6654022
Parents:
af5bc4b
Message:

2005-05-23 MickeM

+ Added obfuscated password support
+ Added some more debug info on commands (returncode, and input args)
+ Added some more comments ot the NSC.ini
+ Added central password "override"
+ Added central "host override"
+ Fixed bug with external commands always getting WARNING state

2005-05-22 MickeM

+ Added debug outout for command
+ Added timestamps for log-to-file (date_mask to configure format)
+ Added support for "no password" with check_nt
+ Added log of bad password on NSClient requests.

  • Some threading issues fixed (I hate threading :)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • modules/NSClientListener/NSClientListener.cpp

    r1e62ed5 r1d9338a  
    3232NSClientListener::~NSClientListener() { 
    3333} 
     34std::string getAllowedHosts() { 
     35  std::string ret = NSCModuleHelper::getSettingsString(NRPE_SECTION_TITLE, MAIN_ALLOWED_HOSTS, ""); 
     36  if (ret.empty()) 
     37    ret = NSCModuleHelper::getSettingsString(MAIN_SECTION_TITLE, MAIN_ALLOWED_HOSTS, MAIN_ALLOWED_HOSTS_DEFAULT); 
     38  return ret; 
     39} 
    3440 
    3541bool NSClientListener::loadModule() { 
    36   allowedHosts.setAllowedHosts(strEx::splitEx(NSCModuleHelper::getSettingsString(NSCLIENT_SECTION_TITLE, NSCLIENT_SETTINGS_ALLOWED, NSCLIENT_SETTINGS_ALLOWED_DEFAULT), ",")); 
     42  allowedHosts.setAllowedHosts(strEx::splitEx(getAllowedHosts(), ",")); 
    3743  try { 
    3844    socket.setHandler(this); 
     
    8591*/ 
    8692 
     93 
     94std::string getPassword() { 
     95  static std::string password = ""; 
     96  if (password.empty()) { 
     97    password = NSCModuleHelper::getSettingsString(NSCLIENT_SECTION_TITLE, MAIN_OBFUSCATED_PASWD, MAIN_OBFUSCATED_PASWD_DEFAULT); 
     98    if (password.empty()) 
     99      password= NSCModuleHelper::getSettingsString(MAIN_SECTION_TITLE, MAIN_OBFUSCATED_PASWD, MAIN_OBFUSCATED_PASWD_DEFAULT); 
     100    if (!password.empty()) { 
     101      password = NSCModuleHelper::Decrypt(password); 
     102    } else { 
     103      password = NSCModuleHelper::getSettingsString(NSCLIENT_SECTION_TITLE, MAIN_SETTINGS_PWD, MAIN_SETTINGS_PWD_DEFAULT); 
     104      if (password.empty()) 
     105        password = NSCModuleHelper::getSettingsString(MAIN_SECTION_TITLE, MAIN_SETTINGS_PWD, MAIN_SETTINGS_PWD_DEFAULT); 
     106    } 
     107  } 
     108  return password; 
     109} 
     110 
    87111std::string NSClientListener::parseRequest(std::string buffer)  { 
    88112  strEx::token pwd = strEx::getToken(buffer, '&'); 
    89   if ( (pwd.first.empty()) || (pwd.first != NSCModuleHelper::getSettingsString(NSCLIENT_SECTION_TITLE, NSCLIENT_SETTINGS_PWD, NSCLIENT_SETTINGS_PWD_DEFAULT)) ) 
    90     return "ERROR: Invalid password."; 
    91   if (pwd.second.empty()) 
     113  std::string rPwd = getPassword(); 
     114  if ((pwd.first != rPwd) && ((pwd.first == "None") && (!rPwd.empty())) ) { 
     115    NSC_LOG_ERROR_STD("Invalid password (" + pwd.first + ")."); 
     116    return "ERROR: Invalid password.";  
     117  } if (pwd.second.empty()) 
    92118    return "ERRRO: No command specified."; 
    93119  strEx::token cmd = strEx::getToken(pwd.second, '&'); 
     
    113139    case REQ_CLIENTVERSION: 
    114140      { 
    115         std::string v = NSCModuleHelper::getSettingsString("nsclient compat", "version", "modern"); 
    116         if (v == "modern") 
     141        std::string v = NSCModuleHelper::getSettingsString(NSCLIENT_SECTION_TITLE, NSCLIENT_SETTINGS_VERSION, NSCLIENT_SETTINGS_VERSION_DEFAULT); 
     142        if (v == "auto") 
    117143          return NSCModuleHelper::getApplicationName() + " " + NSCModuleHelper::getApplicationVersionString(); 
    118         return NSCModuleHelper::getSettingsString("nsclient compat", "version", "modern"); 
     144        return v; 
    119145      } 
    120146    case REQ_SERVICESTATE: 
    121147      cmd.first = "checkServiceState"; 
     148      cmd.second += "&nsclient"; 
    122149      break; 
    123150    case REQ_PROCSTATE: 
    124151      cmd.first = "checkProcState"; 
     152      cmd.second += "&nsclient"; 
    125153      break; 
    126154    case REQ_MEMUSE: 
Note: See TracChangeset for help on using the changeset viewer.