X-Git-Url: https://jfr.im/git/solanum.git/blobdiff_plain/e7010268374db34489ffd8365a55edd732111f95..c790520218b6da02e1c633e1ed57b310efe53ff4:/tests/client_util.c diff --git a/tests/client_util.c b/tests/client_util.c index 04c22e0b..322f3c56 100644 --- a/tests/client_util.c +++ b/tests/client_util.c @@ -27,9 +27,42 @@ #include "hash.h" #include "s_newconf.h" +#include "parse.h" +#include "listener.h" #define MSG "%s:%d (%s)", __FILE__, __LINE__, __FUNCTION__ +static struct Listener fake_listener = { + .name = "fake", + .F = NULL, + .ref_count = 0, + .active = 1, + .ssl = 1, + .defer_accept = 0, + .sctp = false, + .wsock = 0, + .addr = { + { .ss_family = AF_INET6 }, + { .ss_family = AF_INET6 }, + }, + .vhost = { "fake" }, +}; + +struct Client *make_local_unknown(void) +{ + struct Client *client; + + client = make_client(NULL); + rb_dlinkMoveNode(&client->localClient->tnode, &unknown_list, &lclient_list); + client->servptr = &me; + rb_dlinkAdd(client, &client->lnode, &client->servptr->serv->users); + client->localClient->listener = &fake_listener; + client->preClient->auth.accepted = true; + client->localClient->localflags |= LFLAGS_FAKE; + + return client; +} + struct Client *make_local_person(void) { return make_local_person_nick(TEST_NICK); @@ -44,14 +77,11 @@ struct Client *make_local_person_full(const char *nick, const char *username, co { struct Client *client; - client = make_client(NULL); - rb_dlinkMoveNode(&client->localClient->tnode, &unknown_list, &lclient_list); - client->servptr = &me; - rb_dlinkAdd(client, &client->lnode, &client->servptr->serv->users); + client = make_local_unknown(); make_user(client); SetClient(client); - rb_inet_pton_sock(ip, (struct sockaddr *)&client->localClient->ip); + rb_inet_pton_sock(ip, &client->localClient->ip); rb_strlcpy(client->name, nick, sizeof(client->name)); rb_strlcpy(client->username, username, sizeof(client->username)); rb_strlcpy(client->host, hostname, sizeof(client->host)); @@ -68,6 +98,8 @@ void make_local_person_oper(struct Client *client) rb_dlinkAddAlloc(client, &local_oper_list); rb_dlinkAddAlloc(client, &oper_list); SetOper(client); + struct PrivilegeSet *p = privilegeset_set_new("test", "test:test", 0); + client->user->privset = privilegeset_ref(p); } void remove_local_person(struct Client *client) @@ -91,6 +123,7 @@ struct Client *make_remote_server_full(struct Client *uplink, const char *name, client = make_client(NULL); client->servptr = uplink; + client->localClient->localflags |= LFLAGS_FAKE; attach_server_conf(client, find_server_conf(name)); @@ -124,7 +157,7 @@ struct Client *make_remote_person_nick(struct Client *server, const char *nick) struct Client *make_remote_person_full(struct Client *server, const char *nick, const char *username, const char *hostname, const char *ip, const char *realname) { struct Client *client; - struct sockaddr addr; + struct sockaddr_storage addr; client = make_client(server); make_user(client); @@ -137,7 +170,7 @@ struct Client *make_remote_person_full(struct Client *server, const char *nick, rb_strlcpy(client->name, nick, sizeof(client->name)); rb_strlcpy(client->username, username, sizeof(client->username)); rb_strlcpy(client->host, hostname, sizeof(client->host)); - rb_inet_ntop_sock(&addr, client->sockhost, sizeof(client->sockhost)); + rb_inet_ntop_sock((struct sockaddr *)&addr, client->sockhost, sizeof(client->sockhost)); rb_strlcpy(client->info, realname, sizeof(client->info)); add_to_client_hash(nick, client); @@ -187,6 +220,15 @@ char *get_client_sendq(const struct Client *client) return ""; } +void client_util_parse(struct Client *client, const char *message) +{ + char *copy = rb_strdup(message); + + parse(client, copy, copy+strlen(copy)); + + rb_free(copy); +} + void client_util_init(void) { }