Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

(RFC and WIP) Send SETNAME to server, when cap setname enabled and realname is changed #1757

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 7 additions & 4 deletions src/eggdrop.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,12 @@
* You should leave this at 32 characters and modify nick-len in the
* configuration file instead.
*/
#define CHANNELLEN 80 /* FIXME see issue #3 and issue #38 and rfc1459 <= 200 */
#define HANDLEN 32 /* valid values 9->NICKMAX */
#define NICKMAX 32 /* valid values HANDLEN->32 */
#define USERLEN 10
#define CHANNELLEN 80 /* FIXME see issue #3 and issue #38 and rfc1459 <= 200 */
#define HANDLEN 32 /* valid values 9->NICKMAX */
#define NICKMAX 32 /* valid values HANDLEN->32 */
#define USERLEN 10
#define REALNAMEMAX 130 /* maxreal Number 130 The maximum length of a real name.
https://docs.inspircd.org/4/configuration/ */


/* Handy string lengths */
Expand Down Expand Up @@ -88,6 +90,7 @@
#define NOTENAMELEN ((HANDLEN * 2) + 1)
#define PASSWORDMAX 30 /* highest value compatible to older eggdrop */
#define PASSWORDLEN PASSWORDMAX + 1
#define REALNAMELEN REALNAMEMAX + 1

#ifdef HAVE_UNISTD_H
# include <unistd.h>
Expand Down
21 changes: 19 additions & 2 deletions src/mod/server.mod/server.c
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ static time_t lastpingcheck; /* set when i unidle myself, cleared when
static time_t server_online; /* server connection time */
static time_t server_cycle_wait; /* seconds to wait before
* re-beginning the server list */
static char botrealname[81]; /* realname of bot */
static char botrealname[REALNAMELEN]; /* realname of bot */
static int server_timeout; /* server timeout for connecting */
static struct server_list *serverlist; /* old-style queue, still used by
* server list */
Expand Down Expand Up @@ -106,6 +106,7 @@ static int monitor005 = 0; /* Monitor */
static int max_monitor = 0; /* Maximum # of monitored nicks, from server */
static int monitor732 = 0; /* Monitor */
static struct monitor_list *monitor = NULL;
static int namelen005 = 0; /* Maximum len of realname */


static p_tcl_bind_list H_wall, H_raw, H_notc, H_msgm, H_msg, H_flud, H_ctcr,
Expand Down Expand Up @@ -1733,10 +1734,20 @@ static char *traced_nicklen(ClientData cdata, Tcl_Interp *irp,
return NULL;
}

static char *traced_realname(ClientData cdata, Tcl_Interp *irp,
EGG_CONST char *name1,
EGG_CONST char *name2, int flags)
{
printf("DEBUG: traced_realname() namelen005 = %i\n", namelen005);
if (namelen005 && ((flags & TCL_TRACE_WRITES) || (flags & TCL_TRACE_UNSETS)))
dprintf(DP_SERVER, "SETNAME %s\n", botrealname);
return NULL;
}

static tcl_strings my_tcl_strings[] = {
{"botnick", NULL, 0, STR_PROTECT},
{"altnick", altnick, NICKMAX, 0},
{"realname", botrealname, 80, 0},
{"realname", botrealname, REALNAMEMAX, 0},
{"init-server", initserver, 120, 0},
{"connect-server", connectserver, 120, 0},
{"stackable-commands", stackablecmds, 510, 0},
Expand Down Expand Up @@ -2301,6 +2312,9 @@ static char *server_close()
Tcl_UntraceVar(interp, "nick-len",
TCL_TRACE_READS | TCL_TRACE_WRITES | TCL_TRACE_UNSETS,
traced_nicklen, NULL);
Tcl_UntraceVar(interp, "realname",
TCL_TRACE_WRITES | TCL_TRACE_UNSETS,
traced_realname, NULL);
tcl_untraceserver("servers", NULL);
empty_msgq();
del_hook(HOOK_SECONDLY, (Function) server_secondly);
Expand Down Expand Up @@ -2487,6 +2501,9 @@ char *server_start(Function *global_funcs)
Tcl_TraceVar(interp, "nick-len",
TCL_TRACE_READS | TCL_TRACE_WRITES | TCL_TRACE_UNSETS,
traced_nicklen, NULL);
Tcl_TraceVar(interp, "realname",
TCL_TRACE_WRITES | TCL_TRACE_UNSETS,
traced_realname, NULL);
H_wall = add_bind_table("wall", HT_STACKABLE, server_2char);
H_raw = add_bind_table("raw", HT_STACKABLE, server_raw);
H_rawt = add_bind_table("rawt", HT_STACKABLE, server_rawt);
Expand Down
3 changes: 2 additions & 1 deletion src/mod/server.mod/servmsg.c
Original file line number Diff line number Diff line change
Expand Up @@ -2134,7 +2134,8 @@ static int server_isupport(char *key, char *isset_str, char *value)
} else if (!strcmp(key, "MONITOR")) {
monitor005 = isset;
isupport_parseint(key, isset ? value : NULL, 1, 500, 1, 0, &max_monitor);
}
} else if (!strcmp(key, "NAMELEN"))
isupport_parseint(key, isset ? value : NULL, 0, REALNAMEMAX, 1, 50, &namelen005);
return 0;
}

Expand Down
Loading