Provide username and realname IRC server options
Used in the USER command when connecting to the IRC server, instead of the first nick. fix #3028
This commit is contained in:
+16
-1
@@ -43,7 +43,8 @@ endif()
|
|||||||
set(SOFTWARE_VERSION
|
set(SOFTWARE_VERSION
|
||||||
${${PROJECT_NAME}_VERSION_MAJOR}.${${PROJECT_NAME}_VERSION_MINOR}${${PROJECT_NAME}_VERSION_SUFFIX})
|
${${PROJECT_NAME}_VERSION_MAJOR}.${${PROJECT_NAME}_VERSION_MINOR}${${PROJECT_NAME}_VERSION_SUFFIX})
|
||||||
|
|
||||||
# To be able to include the config.h file generated by cmake
|
include(CheckFunctionExists)
|
||||||
|
check_function_exists(ppoll HAVE_PPOLL_FUNCTION)
|
||||||
|
|
||||||
# To be able to include the config.h and other files generated by cmake
|
# To be able to include the config.h and other files generated by cmake
|
||||||
include_directories("${CMAKE_CURRENT_BINARY_DIR}/src/")
|
include_directories("${CMAKE_CURRENT_BINARY_DIR}/src/")
|
||||||
@@ -121,6 +122,7 @@ target_link_libraries(xmpp xmpplib bridge network utils logger)
|
|||||||
if(USE_DATABASE)
|
if(USE_DATABASE)
|
||||||
target_link_libraries(xmpp database)
|
target_link_libraries(xmpp database)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
#
|
#
|
||||||
## bridge
|
## bridge
|
||||||
#
|
#
|
||||||
@@ -181,4 +183,17 @@ add_custom_target(dist
|
|||||||
| xz > ${CMAKE_CURRENT_BINARY_DIR}/${ARCHIVE_NAME}.tar.xz
|
| xz > ${CMAKE_CURRENT_BINARY_DIR}/${ARCHIVE_NAME}.tar.xz
|
||||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
|
||||||
|
|
||||||
|
if(BOTAN_FOUND)
|
||||||
|
set(STR_WITH_BOTAN "Botan: yes")
|
||||||
|
else()
|
||||||
|
set(STR_WITH_BOTAN "Botan: no")
|
||||||
|
endif()
|
||||||
|
if(CARES_FOUND)
|
||||||
|
set(STR_WITH_CARES "c-ares: yes")
|
||||||
|
else()
|
||||||
|
set(STR_WITH_CARES "c-ares: no")
|
||||||
|
endif()
|
||||||
|
add_custom_target(PrintBuildParameters ALL
|
||||||
|
${CMAKE_COMMAND} -E cmake_echo_color --cyan "Compiling ${PROJECT_NAME} with ${STR_WITH_BOTAN}, ${STR_WITH_CARES}")
|
||||||
|
|
||||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/biboumi.h.cmake ${CMAKE_BINARY_DIR}/src/biboumi.h)
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/biboumi.h.cmake ${CMAKE_BINARY_DIR}/src/biboumi.h)
|
||||||
@@ -10,6 +10,8 @@
|
|||||||
<field name="afterConnectionCommand" type="string" length="510" default=""/>
|
<field name="afterConnectionCommand" type="string" length="510" default=""/>
|
||||||
<field name="tlsPorts" type="string" length="4096" default="6697;6670" />
|
<field name="tlsPorts" type="string" length="4096" default="6697;6670" />
|
||||||
<field name="ports" type="string" length="4096" default="6667" />
|
<field name="ports" type="string" length="4096" default="6667" />
|
||||||
|
<field name="username" type="string" length="1024" default=""/>
|
||||||
|
<field name="realname" type="string" length="1024" default=""/>
|
||||||
|
|
||||||
<index unique="true">
|
<index unique="true">
|
||||||
<indexfield name="owner"/>
|
<indexfield name="owner"/>
|
||||||
|
|||||||
@@ -116,7 +116,17 @@ void IrcClient::on_connected()
|
|||||||
this->send_pass_command(options.pass.value());
|
this->send_pass_command(options.pass.value());
|
||||||
#endif
|
#endif
|
||||||
this->send_nick_command(this->username);
|
this->send_nick_command(this->username);
|
||||||
|
#ifdef USE_DATABASE
|
||||||
|
std::string username = this->username;
|
||||||
|
if (!options.username.value().empty())
|
||||||
|
username = options.username.value();
|
||||||
|
std::string realname = this->username;
|
||||||
|
if (!options.realname.value().empty())
|
||||||
|
realname = options.realname.value();
|
||||||
|
this->send_user_command(username, realname);
|
||||||
|
#else
|
||||||
this->send_user_command(this->username, this->username);
|
this->send_user_command(this->username, this->username);
|
||||||
|
#endif // USE_DATABASE
|
||||||
this->send_gateway_message("Connected to IRC server"s + (this->use_tls ? " (encrypted)": "") + ".");
|
this->send_gateway_message("Connected to IRC server"s + (this->use_tls ? " (encrypted)": "") + ".");
|
||||||
this->send_pending_data();
|
this->send_pending_data();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -189,6 +189,32 @@ void ConfigureIrcServerStep1(XmppComponent*, AdhocSession& session, XmlNode& com
|
|||||||
after_cnt_cmd.add_child(required);
|
after_cnt_cmd.add_child(required);
|
||||||
x.add_child(std::move(after_cnt_cmd));
|
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())
|
||||||
|
{
|
||||||
|
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));
|
||||||
|
}
|
||||||
|
realname.add_child(required);
|
||||||
|
x.add_child(std::move(realname));
|
||||||
|
|
||||||
command_node.add_child(std::move(x));
|
command_node.add_child(std::move(x));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -230,6 +256,14 @@ void ConfigureIrcServerStep2(XmppComponent*, AdhocSession& session, XmlNode& com
|
|||||||
else if (field->get_tag("var") == "after_connect_command" &&
|
else if (field->get_tag("var") == "after_connect_command" &&
|
||||||
value && !value->get_inner().empty())
|
value && !value->get_inner().empty())
|
||||||
options.afterConnectionCommand = value->get_inner();
|
options.afterConnectionCommand = value->get_inner();
|
||||||
|
|
||||||
|
else if (field->get_tag("var") == "username" &&
|
||||||
|
value && !value->get_inner().empty())
|
||||||
|
options.username = value->get_inner();
|
||||||
|
|
||||||
|
else if (field->get_tag("var") == "realname" &&
|
||||||
|
value && !value->get_inner().empty())
|
||||||
|
options.realname = value->get_inner();
|
||||||
}
|
}
|
||||||
|
|
||||||
options.update();
|
options.update();
|
||||||
|
|||||||
Reference in New Issue
Block a user