, DaemonMode(false)
     , Syslog(false)
     , EnableIPv6(false)
+    , LogPasswords(false)
     , Loglevel(0)
     , ConfigPath("/etc/bpdyndnsd")
     , WebcheckInterval(0)
     , DaemonMode(false)
     , Syslog(false)
     , EnableIPv6(false)
+    , LogPasswords(false)
     , Loglevel(0)
     , ConfigPath("/etc/bpdyndnsd")
     , WebcheckInterval(0)
         ("daemon_mode",po::value<bool>()->default_value(false),"Run as system daemon.")
         ("loglevel",po::value<int>()->default_value(0),"Loglevel.")
         ("syslog",po::value<bool>()->default_value(false),"Use syslog facility.")
+        ("log_passwords",po::value<bool>()->default_value(false),"Log passwords in cleartext.")
         ("enable_ipv6",po::value<bool>()->default_value(false),"Try to use IPv6.")
         ("webcheck_enabled",po::value<bool>()->default_value(false),"Use webcheck url to determine actual IP address.")
         ("webcheck_url",po::value<string>()->default_value(""),"Use this URL to determine IP.")
         if ( VariablesMap.count("syslog") )
             Syslog = VariablesMap["syslog"].as<bool>();
 
+        if ( VariablesMap.count("log_passwords") )
+            LogPasswords = VariablesMap["log_passwords"].as<bool>();
+
         if ( VariablesMap.count("enable_ipv6") )
             EnableIPv6 = VariablesMap["enable_ipv6"].as<bool>();
 
             if ( VariablesMap.count("syslog") )
                 Syslog = VariablesMap["syslog"].as<bool>();
 
+            if ( VariablesMap.count("log_passwords") )
+                LogPasswords = VariablesMap["log_passwords"].as<bool>();
+
             if ( VariablesMap.count("enable_ipv6") )
                 EnableIPv6 = VariablesMap["enable_ipv6"].as<bool>();
 
 
 
 /**
+ * Getter for member LogPasswords.
+ * @return True if we want to log passwords in cleartext.
+ */
+bool Config::get_log_passwords() const
+{
+    return LogPasswords;
+}
+
+
+/**
  * Getter for member EnableIPv6
  * @return Wether IPv6 should be used or not.
  */
 
     bool DaemonMode;
     bool Syslog;
     bool EnableIPv6;
+    bool LogPasswords;
     int Loglevel;
     std::string ConfigPath;
     std::string WebcheckIpUrl;
 
     bool get_syslog() const;
 
+    bool get_log_passwords() const;
+
     bool get_enable_ipv6() const;
 
     std::string get_proxy() const;
 
     , Syslog(false)
     , ExternalWarningLevel(0)
     , ExternalLogOnlyOnce(false)
+    , LogPasswords(false)
 {
     set_log_facility(Loglevel,Syslog,ExternalWarningLog,ExternalWarningLevel,ExternalLogOnlyOnce);
 }
 }
 
 
+
+
 /**
  * Decides if a external log message can be send.
  * @param msg The message to log.
 
 
 /**
+ * Setter for member LogPasswords.
+ * @param _log_passwords If we want to log passwords or not.
+ */
+void Logger::set_log_passwords( const bool _log_passwords )
+{
+    LogPasswords = _log_passwords;
+}
+
+
+/**
  * Setter for member Loglevel.
  * @param _loglevel Value to set Loglevel to.
  */
         msg << "\t" << "Protocol:         " << protocol << endl;
         msg << "\t" << "Hostname:         " << hostname << endl;
         msg << "\t" << "Login:            " << login << endl;
-        msg << "\t" << "Password:         " << password << endl;
+
+        if (LogPasswords)
+            msg << "\t" << "Password:         " << password << endl;
+        else
+            msg << "\t" << "Password:         (*hidden*)" << endl;
+
         msg << "\t" << "Update Interval:  " << update_interval << endl;
         msg << "\t" << "Max Updates:      " << max_updates_within_interval << endl;
         msg << "\t" << "Max equal Updates:" << max_equal_updates_in_succession << endl;
     if ( level <= Loglevel )
     {
         ostringstream msg;
-        msg << "Not authorized to perform update operation on service: " << service << " Please check username and password: " << username << ":" << password << endl;
+        msg << "Not authorized to perform update operation on service: " << service << " Please check username and password: " << username << ":";
+
+        if (LogPasswords)
+            msg << password << endl;
+        else
+            msg << "(*hidden*)" << endl;
+
         log_notice(msg.str());
     }
 }
 
     int ExternalWarningLevel;
     std::set<std::string> ExternalSendMessages;
     bool ExternalLogOnlyOnce;
+    bool LogPasswords;
 
 public:
 
 
     void set_external_log_only_once( const bool _external_log_only_once );
 
+    void set_log_passwords( const bool _log_passwords );
+
     void clear_external_send_messages();
 
     std::string escape_shellarg(const std::string &input);
 
 {
     Log->set_log_facility(Conf->get_loglevel(),Conf->get_syslog(),Conf->get_external_warning_log(),Conf->get_external_warning_level(),Conf->get_external_log_only_once());
     Log->print_init_log_facility();
+
+    Log->set_log_passwords(Conf->get_log_passwords());
 }