From a35e5b4f9d423b93cba976ef5baddca7ea6fd60c Mon Sep 17 00:00:00 2001 From: hawken93 Date: Fri, 3 Oct 2014 23:30:37 +0200 Subject: [PATCH] Change coding style --- TODO | 5 + src/core/network-openssl.c | 2 +- src/core/network-proxy-http.c | 95 ++++++++--------- src/core/network-proxy-http.h | 24 +---- src/core/network-proxy-priv.h | 64 ++++------- src/core/network-proxy-simple.c | 88 ++++++++-------- src/core/network-proxy-simple.h | 28 ++--- src/core/network-proxy-socks5.c | 181 ++++++++++++++++---------------- src/core/network-proxy-socks5.h | 26 +---- src/core/network-proxy.c | 35 +++--- src/core/network-proxy.h | 53 +++------- src/core/network.c | 2 - src/core/network.h | 6 +- src/core/server-connect-rec.h | 2 +- 14 files changed, 257 insertions(+), 354 deletions(-) diff --git a/TODO b/TODO index 7d28a3f0..832c7e05 100644 --- a/TODO +++ b/TODO @@ -1,3 +1,8 @@ + - New proxy code crashes if an invalid proxy_type setting is used + - Remove old socks code + - Lots of warnings at least when using socks5 + - Clean up coding style + 19:36 [IRCNet] [muzzy] more bugs in irssi, apparently the new version: foo splits out, bar joins, bar changes his nick to foo, foo splits again -> Glib warning "is already in split list (how?)" .. :) diff --git a/src/core/network-openssl.c b/src/core/network-openssl.c index 855333cd..177a40db 100644 --- a/src/core/network-openssl.c +++ b/src/core/network-openssl.c @@ -552,7 +552,7 @@ static GIOChannel *irssi_ssl_get_iochannel(GIOChannel *handle, int port, SERVER_ return gchan; } GIOChannel *net_connect_proxy_ssl(struct network_proxy const *proxy, char const *host, int port, - IPADDR *ip, IPADDR *my_ip, SERVER_REC *server) + IPADDR *ip, IPADDR *my_ip, SERVER_REC *server) { GIOChannel *handle, *ssl_handle; diff --git a/src/core/network-proxy-http.c b/src/core/network-proxy-http.c index dfed96d9..450e0784 100644 --- a/src/core/network-proxy-http.c +++ b/src/core/network-proxy-http.c @@ -1,18 +1,20 @@ -/* --*- c -*-- - * Copyright (C) 2008 Enrico Scholz - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 and/or 3 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ +/* + network-proxy-http.c : irssi + + Copyright (C) 2008 Enrico Scholz + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 and/or 3 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ #include "module.h" #include "network-proxy-http.h" @@ -25,10 +27,9 @@ #include "network.h" #include "network-proxy-priv.h" -static void -network_proxy_http_destroy(struct network_proxy *proxy) +static void network_proxy_http_destroy(struct network_proxy *proxy) { - struct _network_proxy_http *self = container_of(proxy, struct _network_proxy_http, proxy); + struct _network_proxy_http *self = container_of(proxy, struct _network_proxy_http, proxy); g_free((void *)self->password); _network_proxy_destroy(proxy); @@ -36,11 +37,10 @@ network_proxy_http_destroy(struct network_proxy *proxy) g_free(self); } -static struct network_proxy * -network_proxy_http_clone(struct network_proxy const *proxy) +static struct network_proxy *network_proxy_http_clone(const struct network_proxy *proxy) { - struct _network_proxy_http *self = container_of(proxy, struct _network_proxy_http, proxy); - struct _network_proxy_http *res; + struct _network_proxy_http *self = container_of(proxy, struct _network_proxy_http, proxy); + struct _network_proxy_http *res; res = g_malloc0(sizeof *res); @@ -49,10 +49,10 @@ network_proxy_http_clone(struct network_proxy const *proxy) return &res->proxy; } -static bool -send_connect(struct _network_proxy_http *proxy, GIOChannel *ch, char const *address, uint16_t port) +static bool send_connect(struct _network_proxy_http *proxy, GIOChannel *ch, + const char *address, uint16_t port) { - char port_str[6]; + char port_str[6]; (void)proxy; sprintf(port_str, "%u", port); @@ -68,16 +68,15 @@ send_connect(struct _network_proxy_http *proxy, GIOChannel *ch, char const *addr return true; } -static int -read_response(struct _network_proxy_http *proxy, GIOChannel *ch) +static int read_response(struct _network_proxy_http *proxy, GIOChannel *ch) { - GIOStatus status; - GString line = { .str = NULL }; - gsize term_pos; - GError *err = NULL; - int state = 0; - int rc = 0; - gchar *resp = NULL; + GIOStatus status; + GString line = { .str = NULL }; + gsize term_pos; + GError *err = NULL; + int state = 0; + int rc = 0; + gchar *resp = NULL; (void)proxy; for (;;) { @@ -125,16 +124,15 @@ err: return -1; } -static GIOChannel * -network_proxy_http_connect(struct network_proxy const *proxy, IPADDR const *hint_ip, - char const *address, int port) +static GIOChannel *network_proxy_http_connect(const struct network_proxy *proxy, const IPADDR *hint_ip, + const char *address, int port) { - struct _network_proxy_http *self = container_of(proxy, struct _network_proxy_http, proxy); - GIOChannel *ch; - GIOFlags old_flags; - GError *err = NULL; - gchar const *line_term; - gint line_term_sz; + struct _network_proxy_http *self = container_of(proxy, struct _network_proxy_http, proxy); + GIOChannel *ch; + GIOFlags old_flags; + GError *err = NULL; + const gchar *line_term; + gint line_term_sz; if (hint_ip) ch = net_connect_ip(hint_ip, self->proxy.port, NULL); @@ -171,23 +169,20 @@ err: net_disconnect(ch); return NULL; - } - -struct network_proxy * -_network_proxy_http_create(void) +struct network_proxy *_network_proxy_http_create(void) { - struct _network_proxy_http *res; + struct _network_proxy_http *res; res = g_malloc0(sizeof *res); _network_proxy_create(&res->proxy); - res->password = g_strdup(settings_get_str("proxy_password")); + res->password = g_strdup(settings_get_str("proxy_password")); res->proxy.destroy = network_proxy_http_destroy; res->proxy.connect = network_proxy_http_connect; - res->proxy.clone = network_proxy_http_clone; + res->proxy.clone = network_proxy_http_clone; return &res->proxy; } diff --git a/src/core/network-proxy-http.h b/src/core/network-proxy-http.h index 92405fa6..04bfdc43 100644 --- a/src/core/network-proxy-http.h +++ b/src/core/network-proxy-http.h @@ -1,29 +1,13 @@ -/* --*- c -*-- - * Copyright (C) 2008 Enrico Scholz - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 and/or 3 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - #ifndef H_IRSSI_SRC_CORE_PROXY_HTTP_H #define H_IRSSI_SRC_CORE_PROXY_HTTP_H #include "network-proxy.h" struct _network_proxy_http { - struct network_proxy proxy; - char const *password; + struct network_proxy proxy; + const char *password; }; -struct network_proxy * _network_proxy_http_create(void); +struct network_proxy *_network_proxy_http_create(void); -#endif /* H_IRSSI_SRC_CORE_PROXY_HTTP_H */ +#endif diff --git a/src/core/network-proxy-priv.h b/src/core/network-proxy-priv.h index 0a8f2449..5f632abb 100644 --- a/src/core/network-proxy-priv.h +++ b/src/core/network-proxy-priv.h @@ -1,19 +1,3 @@ -/* --*- c -*-- - * Copyright (C) 2008 Enrico Scholz - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 and/or 3 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - #ifndef H_IRSSI_SRC_CORE_PROXY_PRIV_H #define H_IRSSI_SRC_CORE_PROXY_PRIV_H @@ -26,38 +10,34 @@ (type *)( (char *)__mptr - offsetof(type,member) );}) -inline static void -_network_proxy_create(struct network_proxy *dst) +inline static void _network_proxy_create(struct network_proxy *dst) { - dst->port = settings_get_int("proxy_port"); - dst->host = g_strdup(settings_get_str("proxy_address")); + dst->port = settings_get_int("proxy_port"); + dst->host = g_strdup(settings_get_str("proxy_address")); } -inline static void -_network_proxy_clone(struct network_proxy *dst, struct network_proxy const *src) +inline static void _network_proxy_clone(struct network_proxy *dst, const struct network_proxy *src) { - dst->host = g_strdup(src->host); - dst->port = src->port; + dst->host = g_strdup(src->host); + dst->port = src->port; dst->destroy = src->destroy; dst->connect = src->connect; - dst->clone = src->clone; + dst->clone = src->clone; } -inline static void -_network_proxy_destroy(struct network_proxy *proxy) +inline static void _network_proxy_destroy(struct network_proxy *proxy) { g_free((void *)proxy->host); } -inline static bool -_network_proxy_send_all(GIOChannel *ch, void const *buf, ssize_t len) +inline static bool _network_proxy_send_all(GIOChannel *ch, const void *buf, ssize_t len) { - GError *err = NULL; - gsize written; - GIOStatus status; + GError *err = NULL; + gsize written; + GIOStatus status; while ((status=g_io_channel_write_chars(ch, buf, len, &written, &err))==G_IO_STATUS_AGAIN) @@ -74,15 +54,14 @@ _network_proxy_send_all(GIOChannel *ch, void const *buf, ssize_t len) return false; } -inline static bool -_network_proxy_recv_all(GIOChannel *ch, void *buf_v, size_t len) +inline static bool _network_proxy_recv_all(GIOChannel *ch, void *buf_v, size_t len) { - GError *err = NULL; - gchar *buf = buf_v; + GError *err = NULL; + gchar *buf = buf_v; while (len>0) { - GIOStatus status; - gsize l; + GIOStatus status; + gsize l; status = g_io_channel_read_chars(ch, buf, len, &l, &err); if (status==G_IO_STATUS_AGAIN) @@ -105,11 +84,10 @@ _network_proxy_recv_all(GIOChannel *ch, void *buf_v, size_t len) return false; } -inline static bool -_network_proxy_flush(GIOChannel *ch) +inline static bool _network_proxy_flush(GIOChannel *ch) { - GError *err = NULL; - GIOStatus status; + GError *err = NULL; + GIOStatus status; while ((status=g_io_channel_flush(ch, &err))==G_IO_STATUS_AGAIN) continue; @@ -125,4 +103,4 @@ _network_proxy_flush(GIOChannel *ch) return false; } -#endif /* H_IRSSI_SRC_CORE_PROXY_PRIV_H */ +#endif diff --git a/src/core/network-proxy-simple.c b/src/core/network-proxy-simple.c index a7ac1fac..e9f9e44c 100644 --- a/src/core/network-proxy-simple.c +++ b/src/core/network-proxy-simple.c @@ -1,18 +1,20 @@ -/* --*- c -*-- - * Copyright (C) 2008 Enrico Scholz - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 and/or 3 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ +/* + network-proxy-simple.c : irssi + + Copyright (C) 2008 Enrico Scholz + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 and/or 3 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ #include "module.h" #include "network-proxy-simple.h" @@ -20,10 +22,9 @@ #include "network-proxy-priv.h" #include "network.h" -static void -network_proxy_simple_destroy(struct network_proxy *proxy) +static void network_proxy_simple_destroy(struct network_proxy *proxy) { - struct _network_proxy_simple *self = container_of(proxy, struct _network_proxy_simple, proxy); + struct _network_proxy_simple *self = container_of(proxy, struct _network_proxy_simple, proxy); g_free((void *)self->password); g_free((void *)self->string_after); @@ -34,27 +35,25 @@ network_proxy_simple_destroy(struct network_proxy *proxy) g_free(self); } -static struct network_proxy * -network_proxy_simple_clone(struct network_proxy const *proxy) +static struct network_proxy *network_proxy_simple_clone(const struct network_proxy *proxy) { - struct _network_proxy_simple *self = container_of(proxy, struct _network_proxy_simple, proxy); - struct _network_proxy_simple *res; + struct _network_proxy_simple *self = container_of(proxy, struct _network_proxy_simple, proxy); + struct _network_proxy_simple *res; res = g_malloc0(sizeof *res); _network_proxy_clone(&res->proxy, &self->proxy); - res->string = g_strdup(self->string); + res->string = g_strdup(self->string); res->string_after = g_strdup(self->string_after); - res->password = g_strdup(self->password); + res->password = g_strdup(self->password); return &res->proxy; } -static GIOChannel * -network_proxy_simple_connect(struct network_proxy const *proxy, IPADDR const *hint_ip, - char const *address, int port) +static GIOChannel *network_proxy_simple_connect(const struct network_proxy *proxy, const IPADDR *hint_ip, + char const *address, int port) { - struct _network_proxy_simple *self = container_of(proxy, struct _network_proxy_simple, proxy); + struct _network_proxy_simple *self = container_of(proxy, struct _network_proxy_simple, proxy); (void)address; (void)port; @@ -64,12 +63,11 @@ network_proxy_simple_connect(struct network_proxy const *proxy, IPADDR const *hi return net_connect(self->proxy.host, self->proxy.port, NULL); } -static void -network_proxy_simple_send_string(struct network_proxy const *proxy, - struct network_proxy_send_string_info const *info) +static void network_proxy_simple_send_string(const struct network_proxy *proxy, + const struct network_proxy_send_string_info *info) { - struct _network_proxy_simple *self = container_of(proxy, struct _network_proxy_simple, proxy); - char *cmd; + struct _network_proxy_simple *self = container_of(proxy, struct _network_proxy_simple, proxy); + char *cmd; if (self->password && self->password[0]) { cmd = g_strdup_printf("PASS %s", self->password); @@ -84,12 +82,11 @@ network_proxy_simple_send_string(struct network_proxy const *proxy, } } -static void -network_proxy_simple_send_string_after(struct network_proxy const *proxy, - struct network_proxy_send_string_info const *info) +static void network_proxy_simple_send_string_after(const struct network_proxy *proxy, + const struct network_proxy_send_string_info *info) { - struct _network_proxy_simple *self = container_of(proxy, struct _network_proxy_simple, proxy); - char *cmd; + struct _network_proxy_simple *self = container_of(proxy, struct _network_proxy_simple, proxy); + char *cmd; if (self->string_after && self->string_after[0]) { cmd = g_strdup_printf(self->string_after, info->host, info->port); @@ -98,23 +95,22 @@ network_proxy_simple_send_string_after(struct network_proxy const *proxy, } } -struct network_proxy * -_network_proxy_simple_create(void) +struct network_proxy *_network_proxy_simple_create(void) { - struct _network_proxy_simple *res; + struct _network_proxy_simple *res; res = g_malloc0(sizeof *res); _network_proxy_create(&res->proxy); - res->string = g_strdup(settings_get_str("proxy_string")); - res->string_after = g_strdup(settings_get_str("proxy_string_after")); - res->password = g_strdup(settings_get_str("proxy_password")); + res->string = g_strdup(settings_get_str("proxy_string")); + res->string_after = g_strdup(settings_get_str("proxy_string_after")); + res->password = g_strdup(settings_get_str("proxy_password")); res->proxy.destroy = network_proxy_simple_destroy; res->proxy.connect = network_proxy_simple_connect; - res->proxy.clone = network_proxy_simple_clone; + res->proxy.clone = network_proxy_simple_clone; - res->proxy.send_string = network_proxy_simple_send_string; + res->proxy.send_string = network_proxy_simple_send_string; res->proxy.send_string_after = network_proxy_simple_send_string_after; return &res->proxy; diff --git a/src/core/network-proxy-simple.h b/src/core/network-proxy-simple.h index b2132cf2..e55c3925 100644 --- a/src/core/network-proxy-simple.h +++ b/src/core/network-proxy-simple.h @@ -1,32 +1,16 @@ -/* --*- c -*-- - * Copyright (C) 2008 Enrico Scholz - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 and/or 3 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - #ifndef H_IRSSI_SRC_CORE_PROXY_SIMPLE_H #define H_IRSSI_SRC_CORE_PROXY_SIMPLE_H #include "network-proxy.h" struct _network_proxy_simple { - struct network_proxy proxy; + struct network_proxy proxy; - char const *string_after; - char const *string; - char const *password; + const char *string_after; + const char *string; + const char *password; }; -struct network_proxy * _network_proxy_simple_create(void); +struct network_proxy *_network_proxy_simple_create(void); -#endif /* H_IRSSI_SRC_CORE_PROXY_SIMPLE_H */ +#endif diff --git a/src/core/network-proxy-socks5.c b/src/core/network-proxy-socks5.c index 64a8f510..8f8fb308 100644 --- a/src/core/network-proxy-socks5.c +++ b/src/core/network-proxy-socks5.c @@ -1,18 +1,20 @@ -/* --*- c -*-- - * Copyright (C) 2008 Enrico Scholz - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 and/or 3 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ +/* + network-proxy-socks5.c : irssi + + Copyright (C) 2008 Enrico Scholz + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 and/or 3 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ #include "module.h" #include "network-proxy-socks5.h" @@ -26,45 +28,44 @@ /* RFC 1928 */ struct client_greeting { - uint8_t ver; - uint8_t nmethods; - uint8_t methods[]; + uint8_t ver; + uint8_t nmethods; + uint8_t methods[]; } __attribute__((__packed__)); struct server_greeting { - uint8_t ver; - uint8_t method; + uint8_t ver; + uint8_t method; } __attribute__((__packed__)); struct server_response_plain { - uint8_t ver; - uint8_t status; + uint8_t ver; + uint8_t status; } __attribute__((__packed__)); struct client_request { - uint8_t ver; - uint8_t cmd; - uint8_t rsv; - uint8_t atyp; - uint8_t dst[]; + uint8_t ver; + uint8_t cmd; + uint8_t rsv; + uint8_t atyp; + uint8_t dst[]; } __attribute__((__packed__)); struct server_response { - uint8_t ver; - uint8_t rep; - uint8_t res; - uint8_t atyp; - uint8_t bnd[]; + uint8_t ver; + uint8_t rep; + uint8_t res; + uint8_t atyp; + uint8_t bnd[]; } __attribute__((__packed__)); -static void -network_proxy_socks5_destroy(struct network_proxy *proxy) +static void network_proxy_socks5_destroy(struct network_proxy *proxy) { - struct _network_proxy_socks5 *self = container_of(proxy, struct _network_proxy_socks5, proxy); + struct _network_proxy_socks5 *self = container_of(proxy, struct _network_proxy_socks5, proxy); g_free((void *)self->password); g_free((void *)self->username); @@ -72,11 +73,10 @@ network_proxy_socks5_destroy(struct network_proxy *proxy) g_free(self); } -static struct network_proxy * -network_proxy_socks5_clone(struct network_proxy const *proxy) +static struct network_proxy *network_proxy_socks5_clone(const struct network_proxy *proxy) { - struct _network_proxy_socks5 *self = container_of(proxy, struct _network_proxy_socks5, proxy); - struct _network_proxy_socks5 *res; + struct _network_proxy_socks5 *self = container_of(proxy, struct _network_proxy_socks5, proxy); + struct _network_proxy_socks5 *res; res = g_malloc0(sizeof *res); @@ -86,8 +86,7 @@ network_proxy_socks5_clone(struct network_proxy const *proxy) return &res->proxy; } -static bool -socks5_connect_unauthorized(GIOChannel *ch) +static bool socks5_connect_unauthorized(GIOChannel *ch) { /* nothing to do here */ (void)ch; @@ -95,13 +94,12 @@ socks5_connect_unauthorized(GIOChannel *ch) } /* TODO: test this method! */ -static bool -socks5_connect_plain(struct _network_proxy_socks5 const *proxy, GIOChannel *ch) +static bool socks5_connect_plain(const struct _network_proxy_socks5 *proxy, GIOChannel *ch) { - uint8_t ver = 0x01; - uint8_t ulen = strlen(proxy->username); - uint8_t plen = proxy->password ? strlen(proxy->password) : 0; - struct server_response_plain resp; + uint8_t ver = 0x01; + uint8_t ulen = strlen(proxy->username); + uint8_t plen = proxy->password ? strlen(proxy->password) : 0; + struct server_response_plain resp; if (ulen==0 || !_network_proxy_send_all(ch, &ver, sizeof ver) || @@ -126,30 +124,29 @@ socks5_connect_plain(struct _network_proxy_socks5 const *proxy, GIOChannel *ch) return true; } -static bool -socks5_connect(struct _network_proxy_socks5 const *proxy, GIOChannel *ch, - char const *address, uint16_t port) +static bool socks5_connect(const struct _network_proxy_socks5 *proxy, GIOChannel *ch, + const char *address, uint16_t port) { - bool rc; + bool rc; - struct server_greeting s_greeting; - struct server_response s_response; + struct server_greeting s_greeting; + struct server_response s_response; /* Phase 1: exchange greeting */ { - struct client_greeting c_greeting = { - .ver = 0x05, + struct client_greeting c_greeting = { + .ver = 0x05, .nmethods = proxy->username && proxy->username[0] ? 2 : 1 }; /* HACK: order is important because it depends upon * c_greeting.nmethods */ - char const methods[] = { - 0x00, /* no authentication */ - 0x02 /* username/password */ + char const methods[] = { + 0x00, /* no authentication */ + 0x02 /* username/password */ }; if (!_network_proxy_send_all(ch, &c_greeting, sizeof c_greeting) || - !_network_proxy_send_all(ch, methods, c_greeting.nmethods) || + !_network_proxy_send_all(ch, methods, c_greeting.nmethods) || !_network_proxy_flush(ch) || !_network_proxy_recv_all(ch, &s_greeting, sizeof s_greeting)) goto err; @@ -177,22 +174,22 @@ socks5_connect(struct _network_proxy_socks5 const *proxy, GIOChannel *ch, /* Phase 3: connection request */ { - struct client_request c_request = { - .ver = 0x05, - .cmd = 0x01, /* CONNECT */ - .atyp = 0x03, /* domain name */ + struct client_request c_request = { + .ver = 0x05, + .cmd = 0x01, /* CONNECT */ + .atyp = 0x03, /* domain name */ }; - uint8_t address_len = strlen(address); - uint16_t dst_port = htons(port); - uint16_t bnd_port; - char bnd_address[257]; + uint8_t address_len = strlen(address); + uint16_t dst_port = htons(port); + uint16_t bnd_port; + char bnd_address[257]; - if (!_network_proxy_send_all(ch, &c_request, sizeof c_request) || + if (!_network_proxy_send_all(ch, &c_request, sizeof c_request) || !_network_proxy_send_all(ch, &address_len, sizeof address_len) || - !_network_proxy_send_all(ch, address, address_len) || - !_network_proxy_send_all(ch, &dst_port, sizeof dst_port) || + !_network_proxy_send_all(ch, address, address_len) || + !_network_proxy_send_all(ch, &dst_port, sizeof dst_port) || !_network_proxy_flush(ch) || - !_network_proxy_recv_all(ch, &s_response, sizeof s_response)) + !_network_proxy_recv_all(ch, &s_response, sizeof s_response)) goto err; if (s_response.ver != 0x05) { @@ -212,7 +209,7 @@ socks5_connect(struct _network_proxy_socks5 const *proxy, GIOChannel *ch, case 0x06: g_warning("SOCKS5: TTL expired"); break; case 0x07: g_warning("SOCKS5: Command not supported"); break; case 0x08: g_warning("SOCKS5: Address type not supported"); break; - default: g_warning("SOCKS5: unknown error %#04x", s_response.rep); break; + default: g_warning("SOCKS5: unknown error %#04x", s_response.rep); break; } if (!rc) @@ -220,8 +217,8 @@ socks5_connect(struct _network_proxy_socks5 const *proxy, GIOChannel *ch, switch(s_response.atyp) { case 0x01: { - struct in_addr ip; - if (!_network_proxy_recv_all(ch, &ip, sizeof ip) || + struct in_addr ip; + if (!_network_proxy_recv_all(ch, &ip, sizeof ip) || !inet_ntop(AF_INET, &ip, bnd_address, sizeof bnd_address)) rc = false; break; @@ -229,14 +226,14 @@ socks5_connect(struct _network_proxy_socks5 const *proxy, GIOChannel *ch, case 0x04: { struct in6_addr ip; - if (!_network_proxy_recv_all(ch, &ip, sizeof ip) || + if (!_network_proxy_recv_all(ch, &ip, sizeof ip) || !inet_ntop(AF_INET6, &ip, bnd_address, sizeof bnd_address)) rc = false; break; } case 0x03: { - uint8_t tmp; + uint8_t tmp; if (!_network_proxy_recv_all(ch, &tmp, sizeof tmp) || tmp==0 || !_network_proxy_recv_all(ch, &bnd_address, tmp)) @@ -267,17 +264,16 @@ err: } -static GIOChannel * -network_proxy_socks5_connect(struct network_proxy const *proxy, IPADDR const *hint_ip, - char const *address, int port) +static GIOChannel *network_proxy_socks5_connect(const struct network_proxy *proxy, const IPADDR *hint_ip, + const char *address, int port) { - struct _network_proxy_socks5 *self = container_of(proxy, struct _network_proxy_socks5, proxy); - GIOChannel *ch; + struct _network_proxy_socks5 *self = container_of(proxy, struct _network_proxy_socks5, proxy); + GIOChannel *ch; - GIOFlags old_flags; - gchar const *old_enc; - gboolean old_buf; - GError *err = NULL; + GIOFlags old_flags; + const gchar *old_enc; + gboolean old_buf; + GError *err = NULL; if (hint_ip) ch = net_connect_ip(hint_ip, self->proxy.port, NULL); @@ -287,9 +283,9 @@ network_proxy_socks5_connect(struct network_proxy const *proxy, IPADDR const *hi if (!ch) return NULL; - old_enc = g_io_channel_get_encoding(ch); + old_enc = g_io_channel_get_encoding(ch); old_flags = g_io_channel_get_flags(ch); - old_buf = g_io_channel_get_buffered(ch); + old_buf = g_io_channel_get_buffered(ch); if (g_io_channel_set_encoding(ch, NULL, &err)!=G_IO_STATUS_NORMAL || g_io_channel_set_flags(ch, old_flags & ~G_IO_FLAG_NONBLOCK, &err)!=G_IO_STATUS_NORMAL) @@ -319,20 +315,19 @@ err: return NULL; } -struct network_proxy * -_network_proxy_socks5_create(void) +struct network_proxy *_network_proxy_socks5_create(void) { - struct _network_proxy_socks5 *res; + struct _network_proxy_socks5 *res; res = g_malloc0(sizeof *res); _network_proxy_create(&res->proxy); - res->username = g_strdup(settings_get_str("proxy_username")); - res->password = g_strdup(settings_get_str("proxy_password")); + res->username = g_strdup(settings_get_str("proxy_username")); + res->password = g_strdup(settings_get_str("proxy_password")); res->proxy.destroy = network_proxy_socks5_destroy; res->proxy.connect = network_proxy_socks5_connect; - res->proxy.clone = network_proxy_socks5_clone; + res->proxy.clone = network_proxy_socks5_clone; return &res->proxy; } diff --git a/src/core/network-proxy-socks5.h b/src/core/network-proxy-socks5.h index 963bad3d..8dff6ed1 100644 --- a/src/core/network-proxy-socks5.h +++ b/src/core/network-proxy-socks5.h @@ -1,31 +1,15 @@ -/* --*- c -*-- - * Copyright (C) 2008 Enrico Scholz - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 and/or 3 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - #ifndef H_IRSSI_SRC_CORE_PROXY_SOCKS5_H #define H_IRSSI_SRC_CORE_PROXY_SOCKS5_H #include "network-proxy.h" struct _network_proxy_socks5 { - struct network_proxy proxy; + struct network_proxy proxy; - char const *username; - char const *password; + const char *username; + const char *password; }; -struct network_proxy * _network_proxy_socks5_create(void); +struct network_proxy *_network_proxy_socks5_create(void); -#endif /* H_IRSSI_SRC_CORE_PROXY_SOCKS5_H */ +#endif diff --git a/src/core/network-proxy.c b/src/core/network-proxy.c index cb5f9417..0deff1ee 100644 --- a/src/core/network-proxy.c +++ b/src/core/network-proxy.c @@ -1,18 +1,20 @@ -/* --*- c -*-- - * Copyright (C) 2008 Enrico Scholz - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 and/or 3 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ +/* + network-proxy.c : irssi + + Copyright (C) 2008 Enrico Scholz + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 and/or 3 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ #include "module.h" @@ -22,8 +24,7 @@ #include "network-proxy-http.h" #include "network-proxy-socks5.h" -struct network_proxy * -network_proxy_create(char const *type) +struct network_proxy *network_proxy_create(const char *type) { if (type==NULL) return NULL; diff --git a/src/core/network-proxy.h b/src/core/network-proxy.h index cdc3d057..38fd1c82 100644 --- a/src/core/network-proxy.h +++ b/src/core/network-proxy.h @@ -1,19 +1,3 @@ -/* --*- c -*-- - * Copyright (C) 2008 Enrico Scholz - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 and/or 3 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - #ifndef H_IRSSI_SRC_CORE_PROXY_H #define H_IRSSI_SRC_CORE_PROXY_H @@ -22,22 +6,21 @@ /* helper structure for the send_string*() functions of the network_proxy * class */ -struct network_proxy_send_string_info -{ - char const *host; /* hostname of the IRC server */ - uint16_t port; /* portnumber of the IRC server */ +struct network_proxy_send_string_info { + const char *host; /* hostname of the IRC server */ + uint16_t port; /* portnumber of the IRC server */ /* function which is used to send string; usually irc_send_cmd_now() */ - void (*func)(void *obj, char const *); + void (*func)(void *obj, const char *); /* object for func */ - void *obj; + void *obj; }; struct network_proxy { /* destroys the network_proxy structure which must not be used anymore * after; this memberfunction is mandatory */ - void (*destroy)(struct network_proxy *); + void (*destroy)(struct network_proxy *); /* connects through the proxy; this memberfunction is mandatory * @@ -46,36 +29,34 @@ struct network_proxy { * \arg address the hostname where proxy shall connect to * \arg port port address where proxy shall connect to */ - GIOChannel * (*connect)(struct network_proxy const *, IPADDR const *hint_ip, - char const *address, int port); + GIOChannel *(*connect)(const struct *network_proxy, const IPADDR *hint_ip, + const char *address, int port); /* clones the given network_proxy object; this memberfunction is * mandatory */ - struct network_proxy * (*clone)(struct network_proxy const *); + struct network_proxy *(*clone)(const struct *network_proxy); /* sends a string after connection has been established but before IRC * authentication begins; this memberfunction is optional */ - void (*send_string)(struct network_proxy const *, - struct network_proxy_send_string_info const *); + void (*send_string)(const struct *network_proxy, + const struct *network_proxy_send_string_info); /* sends a string after connection IRC authentication suceeded; this * memberfunction is optional */ - void (*send_string_after)(struct network_proxy const *, - struct network_proxy_send_string_info const *); - + void (*send_string_after)(const struct *network_proxy, + const struct *network_proxy_send_string_info); /* hostname of proxy host */ - char const *host; + const char *host; /* portnumber of proxy */ - int port; + int port; }; /* factory method to create a proxy object based upon value of 'type' */ -struct network_proxy * network_proxy_create(char const *type); +struct network_proxy *network_proxy_create(const char *type); - -#endif /* H_IRSSI_SRC_CORE_PROXY_H */ +#endif diff --git a/src/core/network.c b/src/core/network.c index eba5a98a..75357f92 100644 --- a/src/core/network.c +++ b/src/core/network.c @@ -231,14 +231,12 @@ GIOChannel *net_connect_ip(IPADDR *ip, int port, IPADDR *my_ip) GIOChannel *net_connect_proxy(struct network_proxy const *proxy, char const *host, int port, IPADDR *ip, IPADDR *my_ip) { - if (proxy) return proxy->connect(proxy, ip, host, port); else return net_connect_ip(ip, port, my_ip); } - /* Connect to named UNIX socket */ GIOChannel *net_connect_unix(const char *path) { diff --git a/src/core/network.h b/src/core/network.h index 3f138b82..b11d1ca2 100644 --- a/src/core/network.h +++ b/src/core/network.h @@ -50,11 +50,13 @@ int net_ip_compare(IPADDR *ip1, IPADDR *ip2); /* Connect to socket */ GIOChannel *net_connect(const char *addr, int port, IPADDR *my_ip); /* Connect to socket with ip address and SSL*/ -GIOChannel *net_connect_proxy_ssl(struct network_proxy const *proxy, char const *host, int port, IPADDR *ip, IPADDR *my_ip, SERVER_REC *server); +GIOChannel *net_connect_proxy_ssl(struct network_proxy const *proxy, char const *host, int port, + IPADDR *ip, IPADDR *my_ip, SERVER_REC *server); int irssi_ssl_handshake(GIOChannel *handle); /* Connect to socket with ip address */ GIOChannel *net_connect_ip(IPADDR *ip, int port, IPADDR *my_ip); -GIOChannel *net_connect_proxy(struct network_proxy const *proxy, char const *host, int port, IPADDR *ip, IPADDR *my_ip); +GIOChannel *net_connect_proxy(struct network_proxy const *proxy, char const *host, int port, + IPADDR *ip, IPADDR *my_ip); /* Connect to named UNIX socket */ GIOChannel *net_connect_unix(const char *path); /* Disconnect socket */ diff --git a/src/core/server-connect-rec.h b/src/core/server-connect-rec.h index ac99df8d..92a57a31 100644 --- a/src/core/server-connect-rec.h +++ b/src/core/server-connect-rec.h @@ -5,7 +5,7 @@ int chat_type; /* chat_protocol_lookup(xx) */ int refcount; -struct network_proxy *proxy; +struct network_proxy *proxy; unsigned short family; /* 0 = don't care, AF_INET or AF_INET6 */ char *tag; /* try to keep this tag when connected to server */