~singpolyma/biboumi

84aafab6040f8fd126e6c4941631d44f122c4b9a — Florent Le Coz 7 years ago 6512f83
Provide the “realname_customization” option

ref #3136
3 files changed, 41 insertions(+), 27 deletions(-)

M doc/biboumi.1.md
M src/irc/irc_client.cpp
M src/xmpp/biboumi_adhoc_commands.cpp
M doc/biboumi.1.md => doc/biboumi.1.md +6 -0
@@ 77,6 77,12 @@ The configuration file uses a simple format of the form
  users join their own IRC server using an XMPP client, while forbidding
  access to any other IRC server.

`realname_customization`

 If this option is set to “false” (default is “true”), the users will not be
 able to use the ad-hoc commands that lets them configure their realname and
 username.

`log_file`

  A filename into which logs are written.  If none is provided, the logs are

M src/irc/irc_client.cpp => src/irc/irc_client.cpp +9 -5
@@ 6,6 6,7 @@
#include <irc/irc_user.hpp>

#include <logger/logger.hpp>
#include <config/config.hpp>
#include <utils/tolower.hpp>
#include <utils/split.hpp>



@@ 120,11 121,14 @@ void IrcClient::on_connected()
  this->send_nick_command(this->username);

#ifdef USE_DATABASE
  if (!options.username.value().empty())
    this->username = options.username.value();
  if (!options.realname.value().empty())
    this->realname = options.realname.value();
  this->send_user_command(username, realname);
  if (Config::get("realname_customization", "true") == "true")
    {
      if (!options.username.value().empty())
        this->username = options.username.value();
      if (!options.realname.value().empty())
        this->realname = options.realname.value();
      this->send_user_command(username, realname);
    }
#endif
  this->send_user_command(this->username, this->realname);


M src/xmpp/biboumi_adhoc_commands.cpp => src/xmpp/biboumi_adhoc_commands.cpp +26 -22
@@ 1,6 1,7 @@
#include <xmpp/biboumi_adhoc_commands.hpp>
#include <xmpp/biboumi_component.hpp>
#include <bridge/bridge.hpp>
#include <config/config.hpp>
#include <utils/string.hpp>
#include <utils/split.hpp>
#include <xmpp/jid.hpp>


@@ 191,31 192,34 @@ void ConfigureIrcServerStep1(XmppComponent*, AdhocSession& session, XmlNode& com
  after_cnt_cmd.add_child(required);
  x.add_child(std::move(after_cnt_cmd));

  XmlNode username("field");
  username["var"] = "username";
  username["type"] = "text-single";
  username["label"] = "Username";
  if (!options.username.value().empty())
  if (Config::get("realname_customization", "true") == "true")
    {
      XmlNode username_value("value");
      username_value.set_inner(options.username.value());
      username.add_child(std::move(username_value));
    }
  username.add_child(required);
  x.add_child(std::move(username));
      XmlNode username("field");
      username["var"] = "username";
      username["type"] = "text-single";
      username["label"] = "Username";
      if (!options.username.value().empty())
        {
          XmlNode username_value("value");
          username_value.set_inner(options.username.value());
          username.add_child(std::move(username_value));
        }
      username.add_child(required);
      x.add_child(std::move(username));

  XmlNode realname("field");
  realname["var"] = "realname";
  realname["type"] = "text-single";
  realname["label"] = "Realname";
  if (!options.realname.value().empty())
    {
      XmlNode realname_value("value");
      realname_value.set_inner(options.realname.value());
      realname.add_child(std::move(realname_value));
      XmlNode realname("field");
      realname["var"] = "realname";
      realname["type"] = "text-single";
      realname["label"] = "Realname";
      if (!options.realname.value().empty())
        {
          XmlNode realname_value("value");
          realname_value.set_inner(options.realname.value());
          realname.add_child(std::move(realname_value));
        }
      realname.add_child(required);
      x.add_child(std::move(realname));
    }
  realname.add_child(required);
  x.add_child(std::move(realname));

  command_node.add_child(std::move(x));
}