summaryrefslogtreecommitdiff
path: root/src/plugins/relay/relay-config.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/relay/relay-config.c')
-rw-r--r--src/plugins/relay/relay-config.c211
1 files changed, 211 insertions, 0 deletions
diff --git a/src/plugins/relay/relay-config.c b/src/plugins/relay/relay-config.c
new file mode 100644
index 000000000..a8cd965a6
--- /dev/null
+++ b/src/plugins/relay/relay-config.c
@@ -0,0 +1,211 @@
+/*
+ * Copyright (c) 2003-2008 by FlashCode <flashcode@flashtux.org>
+ * See README for License detail, AUTHORS for developers list.
+ *
+ * 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; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+
+/* relay-config.c: relay configuration options */
+
+
+#include <stdlib.h>
+#include <limits.h>
+
+#include "../weechat-plugin.h"
+#include "relay.h"
+#include "relay-config.h"
+#include "relay-client.h"
+#include "relay-buffer.h"
+
+
+struct t_config_file *relay_config_file = NULL;
+
+/* relay config, look section */
+
+struct t_config_option *relay_config_look_auto_open_buffer;
+
+/* relay config, color section */
+
+struct t_config_option *relay_config_color_text;
+struct t_config_option *relay_config_color_text_bg;
+struct t_config_option *relay_config_color_text_selected;
+struct t_config_option *relay_config_color_status[RELAY_NUM_STATUS];
+
+/* relay config, network section */
+
+struct t_config_option *relay_config_network_listen_port_range;
+
+
+/*
+ * relay_config_refresh_cb: callback called when user changes relay option that
+ * needs a refresh of relay list
+ */
+
+void
+relay_config_refresh_cb (void *data, struct t_config_option *option)
+{
+ /* make C compiler happy */
+ (void) data;
+ (void) option;
+
+ if (relay_buffer)
+ relay_buffer_refresh (NULL);
+}
+
+/*
+ * relay_config_reload: reload relay configuration file
+ */
+
+int
+relay_config_reload (void *data, struct t_config_file *config_file)
+{
+ /* make C compiler happy */
+ (void) data;
+
+ return weechat_config_reload (config_file);
+}
+
+/*
+ * relay_config_init: init relay configuration file
+ * return: 1 if ok, 0 if error
+ */
+
+int
+relay_config_init ()
+{
+ struct t_config_section *ptr_section;
+
+ relay_config_file = weechat_config_new (RELAY_CONFIG_NAME,
+ &relay_config_reload, NULL);
+ if (!relay_config_file)
+ return 0;
+
+ ptr_section = weechat_config_new_section (relay_config_file, "look",
+ 0, 0,
+ NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL,
+ NULL, NULL);
+ if (!ptr_section)
+ {
+ weechat_config_free (relay_config_file);
+ return 0;
+ }
+
+ relay_config_look_auto_open_buffer = weechat_config_new_option (
+ relay_config_file, ptr_section,
+ "auto_open_buffer", "boolean",
+ N_("auto open relay buffer when a new client is connecting"),
+ NULL, 0, 0, "on", NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+
+ ptr_section = weechat_config_new_section (relay_config_file, "color",
+ 0, 0,
+ NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL,
+ NULL, NULL);
+ if (!ptr_section)
+ {
+ weechat_config_free (relay_config_file);
+ return 0;
+ }
+
+ relay_config_color_text = weechat_config_new_option (
+ relay_config_file, ptr_section,
+ "text", "color",
+ N_("text color"),
+ NULL, 0, 0, "default", NULL,
+ NULL, NULL, &relay_config_refresh_cb, NULL, NULL, NULL);
+ relay_config_color_text_bg = weechat_config_new_option (
+ relay_config_file, ptr_section,
+ "text_bg", "color",
+ N_("background color"),
+ NULL, 0, 0, "default", NULL,
+ NULL, NULL, &relay_config_refresh_cb, NULL, NULL, NULL);
+ relay_config_color_text_selected = weechat_config_new_option (
+ relay_config_file, ptr_section,
+ "text_selected", "color",
+ N_("text color of selected client line"),
+ NULL, 0, 0, "white", NULL,
+ NULL, NULL, &relay_config_refresh_cb, NULL, NULL, NULL);
+ relay_config_color_status[RELAY_STATUS_CONNECTING] = weechat_config_new_option (
+ relay_config_file, ptr_section,
+ "status_connecting", "color",
+ N_("text color for \"connecting\" status"),
+ NULL, 0, 0, "yellow", NULL,
+ NULL, NULL, &relay_config_refresh_cb, NULL, NULL, NULL);
+ relay_config_color_status[RELAY_STATUS_WAITING_AUTH] = weechat_config_new_option (
+ relay_config_file, ptr_section,
+ "status_waiting_auth", "color",
+ N_("text color for \"waiting authentication\" status"),
+ NULL, 0, 0, "brown", NULL,
+ NULL, NULL, &relay_config_refresh_cb, NULL, NULL, NULL);
+ relay_config_color_status[RELAY_STATUS_CONNECTED] = weechat_config_new_option (
+ relay_config_file, ptr_section,
+ "status_active", "color",
+ N_("text color for \"connected\" status"),
+ NULL, 0, 0, "lightblue", NULL,
+ NULL, NULL, &relay_config_refresh_cb, NULL, NULL, NULL);
+ relay_config_color_status[RELAY_STATUS_AUTH_FAILED] = weechat_config_new_option (
+ relay_config_file, ptr_section,
+ "status_auth_failed", "color",
+ N_("text color for \"authentication failed\" status"),
+ NULL, 0, 0, "lightred", NULL,
+ NULL, NULL, &relay_config_refresh_cb, NULL, NULL, NULL);
+ relay_config_color_status[RELAY_STATUS_DISCONNECTED] = weechat_config_new_option (
+ relay_config_file, ptr_section,
+ "status_disconnected", "color",
+ N_("text color for \"disconnected\" status"),
+ NULL, 0, 0, "lightred", NULL,
+ NULL, NULL, &relay_config_refresh_cb, NULL, NULL, NULL);
+
+ ptr_section = weechat_config_new_section (relay_config_file, "network",
+ 0, 0,
+ NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL,
+ NULL, NULL);
+ if (!ptr_section)
+ {
+ weechat_config_free (relay_config_file);
+ return 0;
+ }
+
+ relay_config_network_listen_port_range = weechat_config_new_option (
+ relay_config_file, ptr_section,
+ "listen_port_range", "string",
+ N_("port number (or range of ports) that relay plugin listens on "
+ "(syntax: a single port, ie. 5000 or a port "
+ "range, ie. 5000-5015)"),
+ NULL, 0, 0, "22373-22400", NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+
+ return 1;
+}
+
+/*
+ * relay_config_read: read relay configuration file
+ */
+
+int
+relay_config_read ()
+{
+ return weechat_config_read (relay_config_file);
+}
+
+/*
+ * relay_config_write: write relay configuration file
+ */
+
+int
+relay_config_write ()
+{
+ return weechat_config_write (relay_config_file);
+}