summary refs log tree commit diff stats
path: root/plugins/xdcc
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/xdcc')
-rw-r--r--plugins/xdcc/Makefile.am7
-rw-r--r--plugins/xdcc/makefile.mak18
-rw-r--r--plugins/xdcc/xdcc.c331
3 files changed, 0 insertions, 356 deletions
diff --git a/plugins/xdcc/Makefile.am b/plugins/xdcc/Makefile.am
deleted file mode 100644
index dd858e4d..00000000
--- a/plugins/xdcc/Makefile.am
+++ /dev/null
@@ -1,7 +0,0 @@
-libdir = $(hexchatdir)
-
-lib_LTLIBRARIES = xdcc.la
-xdcc_la_SOURCES = xdcc.c
-xdcc_la_LDFLAGS = -avoid-version -module 
-INCLUDES = $(COMMON_CFLAGS) -I$(srcdir)/..
-
diff --git a/plugins/xdcc/makefile.mak b/plugins/xdcc/makefile.mak
deleted file mode 100644
index 5caeca34..00000000
--- a/plugins/xdcc/makefile.mak
+++ /dev/null
@@ -1,18 +0,0 @@
-include "..\..\src\makeinc.mak"

-

-all: xdcc.obj xdcc.def

-	link $(LDFLAGS) $(LIBS) /dll /out:xcxdcc.dll /def:xdcc.def xdcc.obj

-

-xdcc.def:

-	echo EXPORTS > xdcc.def

-	echo hexchat_plugin_init >> xdcc.def

-	echo hexchat_plugin_deinit >> xdcc.def

-

-xdcc.obj: xdcc.c makefile.mak

-	cl $(CFLAGS) $(GLIB) /I.. xdcc.c

-

-clean:

-	del *.obj

-	del *.dll

-	del *.exp

-	del *.lib

diff --git a/plugins/xdcc/xdcc.c b/plugins/xdcc/xdcc.c
deleted file mode 100644
index 85d27732..00000000
--- a/plugins/xdcc/xdcc.c
+++ /dev/null
@@ -1,331 +0,0 @@
-/* HexChat 2.0 plugin: simple XDCC server example */
-
-#include <glib.h>
-#include <string.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-#ifndef WIN32
-#include <unistd.h>
-#endif
-
-#include "hexchat-plugin.h"
-#include "../../src/common/hexchat.h"
-
-static hexchat_plugin *ph;	/* plugin handle */
-
-static int xdcc_on = 1;
-static int xdcc_slots = 3;
-static GSList *file_list = 0;
-
-typedef struct fileoffer
-{
-	char *file;
-	char *fullpath;
-	char *desc;
-	int downloads;
-} fileoffer;
-
-
-/* find the number of open dccs */
-
-static int num_open_dccs(void)
-{
-	hexchat_list *list;
-	int num = 0;
-
-	list = hexchat_list_get(ph, "dcc");
-	if(!list)
-		return 0;
-
-	while(hexchat_list_next(ph, list))
-	{
-		/* check only ACTIVE dccs */
-		if(hexchat_list_int(ph, list, "status") == 1)
-		{
-			/* check only SEND dccs */
-			if(hexchat_list_int(ph, list, "type") == 0)
-				num++;
-		}
-	}
-
-	hexchat_list_free(ph, list);
-
-	return num;
-}
-
-static void xdcc_get(char *nick, char *host, char *arg)
-{
-	int num;
-	GSList *list;
-	fileoffer *offer;
-
-	if(arg[0] == '#')
-		arg++;
-
-	num = atoi(arg);
-	list = g_slist_nth(file_list, num - 1);
-	if(!list)
-	{
-		hexchat_commandf(ph, "quote NOTICE %s :No such file number #%d!", nick, num);
-		return;
-	}
-
-	if(num_open_dccs() >= xdcc_slots)
-	{
-		hexchat_commandf(ph, "quote NOTICE %s :All slots full. Try again later.", nick);
-		return;
-	}
-
-	offer = (fileoffer *) list->data;
-	offer->downloads++;
-	hexchat_commandf(ph, "quote NOTICE %s :Sending offer #%d %s", nick, num, offer->file);
-	hexchat_commandf(ph, "dcc send %s %s", nick, offer->fullpath);
-}
-
-static void xdcc_del(char *name)
-{
-	GSList *list;
-	fileoffer *offer;
-
-	list = file_list;
-	while(list)
-	{
-		offer = (fileoffer *) list->data;
-		if(strcasecmp(name, offer->file) == 0)
-		{
-			file_list = g_slist_remove(file_list, offer);
-			hexchat_printf(ph, "%s [%s] removed.\n", offer->file, offer->fullpath);
-			free(offer->file);
-			free(offer->desc);
-			free(offer->fullpath);
-			free(offer);
-			return;
-		}
-		list = list->next;
-	}
-}
-
-static void xdcc_add(char *name, char *fullpath, char *desc, int dl)
-{
-	fileoffer *offer;
-
-	offer = (fileoffer *) malloc(sizeof(fileoffer));
-	offer->file = strdup(name);
-	offer->desc = strdup(desc);
-	offer->fullpath = strdup(fullpath);
-	offer->downloads = dl;
-
-	file_list = g_slist_append(file_list, offer);
-}
-
-static void xdcc_list(char *nick, char *host, char *arg, char *cmd)
-{
-	GSList *list;
-	int i = 0;
-	fileoffer *offer;
-
-	hexchat_commandf(ph, "%s %s :XDCC List:", cmd, nick);
-	list = file_list;
-	while(list)
-	{
-		i++;
-		offer = (fileoffer *) list->data;
-		hexchat_commandf(ph, "%s %s :[#%d] %s - %s [%d dl]", cmd,
-							nick, i, offer->file, offer->desc, offer->downloads);
-		list = list->next;
-	}
-
-	if(i == 0)
-		hexchat_commandf(ph, "%s %s :- list empty.", cmd, nick);
-	else
-		hexchat_commandf(ph, "%s %s :%d files listed.", cmd, nick, i);
-}
-
-static int xdcc_command(char *word[], char *word_eol[], void *userdata)
-{
-	if(strcasecmp(word[2], "ADD") == 0)
-	{
-		if(!word_eol[5][0])
-			hexchat_print(ph, "Syntax: /XDCC ADD <name> <path> <description>\n");
-		else
-		{
-			if(access(word[4], R_OK) == 0)
-			{
-				xdcc_add(word[3], word[4], word_eol[5], 0);
-				hexchat_printf(ph, "%s [%s] added.\n", word[3], word[4]);
-			}
-			else
-				hexchat_printf(ph, "Cannot read %s\n", word[4]);
-		}
-		return HEXCHAT_EAT_HEXCHAT;
-	}
-
-	if(strcasecmp(word[2], "DEL") == 0)
-	{
-		xdcc_del(word[3]);
-		return HEXCHAT_EAT_HEXCHAT;
-	}
-
-	if(strcasecmp(word[2], "SLOTS") == 0)
-	{
-		if(word[3][0])
-		{
-			xdcc_slots = atoi(word[3]);
-			hexchat_printf(ph, "XDCC slots set to %d\n", xdcc_slots);
-		} else
-		{
-			hexchat_printf(ph, "XDCC slots: %d\n", xdcc_slots);
-		}
-		return HEXCHAT_EAT_HEXCHAT;
-	}
-
-	if(strcasecmp(word[2], "ON") == 0)
-	{
-		xdcc_on = TRUE;
-		hexchat_print(ph, "XDCC now ON\n");
-		return HEXCHAT_EAT_HEXCHAT;
-	}
-
-	if(strcasecmp(word[2], "LIST") == 0)
-	{
-		xdcc_list("", "", "", "echo");
-		return HEXCHAT_EAT_HEXCHAT;
-	}
-
-	if(strcasecmp(word[2], "OFF") == 0)
-	{
-		xdcc_on = FALSE;
-		hexchat_print(ph, "XDCC now OFF\n");
-		return HEXCHAT_EAT_HEXCHAT;
-	}
-
-	hexchat_print(ph, "Syntax: XDCC ADD <name> <fullpath> <description>\n"
-						 "        XDCC DEL <name>\n"
-						 "        XDCC SLOTS <number>\n"
-						 "        XDCC LIST\n"
-						 "        XDCC ON\n"
-						 "        XDCC OFF\n\n");
-
-	return HEXCHAT_EAT_HEXCHAT;
-}
-
-static void xdcc_remote(char *from, char *msg)
-{
-  	char *ex, *nick, *host;
-
-	ex = strchr(from, '!');
-	if(!ex)
-		return;
-	ex[0] = 0;
-	nick = from;
-	host = ex + 1;
-
-	if(xdcc_on == 0)
-	{
-		hexchat_commandf(ph, "notice %s XDCC is turned OFF!", from);
-		return;
-	}
-
-	if(strncasecmp(msg, "LIST", 4) == 0)
-		xdcc_list(nick, host, msg + 4, "quote notice");
-	else if(strncasecmp(msg, "GET ", 4) == 0)
-		xdcc_get(nick, host, msg + 4);
-	else
-		hexchat_commandf(ph, "notice %s Unknown XDCC command!", from);
-}
-
-static int ctcp_cb(char *word[], void *userdata)
-{
-  	char *msg = word[1];
-	char *from = word[2];
-
-	if(strncasecmp(msg, "XDCC ", 5) == 0)
-		xdcc_remote(from, msg + 5);
-
-	return HEXCHAT_EAT_NONE;
-}
-
-static void xdcc_save(void)
-{
-	char buf[512];
-	FILE *fp;
-	GSList *list;
-	fileoffer *offer;
-
-	snprintf(buf, sizeof(buf), "%s/xdcclist.conf", hexchat_get_info(ph, "configdir"));
-
-	fp = fopen(buf, "w");
-	if(!fp)
-		return;
-
-	list = file_list;
-	while(list)
-	{
-		offer = (fileoffer *) list->data;
-		fprintf(fp, "%s\n%s\n%s\n%d\n\n\n", offer->file, offer->fullpath,
-							 offer->desc, offer->downloads);
-		list = list->next;
-	}
-
-	fclose(fp);
-}
-
-static void xdcc_load(void)
-{
-	char buf[512];
-	char file[128];
-	char path[128];
-	char desc[128];
-	char dl[128];
-	FILE *fp;
-
-	snprintf(buf, sizeof(buf), "%s/xdcclist.conf", hexchat_get_info(ph, "configdir"));
-
-	fp = fopen(buf, "r");
-	if(!fp)
-		return;
-
-	while(fgets(file, sizeof(file), fp))
-	{
-		file[strlen(file)-1] = 0;
-		fgets(path, sizeof(path), fp);
-		path[strlen(path)-1] = 0;
-		fgets(desc, sizeof(desc), fp);
-		desc[strlen(desc)-1] = 0;
-		fgets(dl, sizeof(dl), fp);
-		dl[strlen(dl)-1] = 0;
-		fgets(buf, sizeof(buf), fp);
-		fgets(buf, sizeof(buf), fp);
-		xdcc_add(file, path, desc, atoi(dl));
-	}
-
-	fclose(fp);
-}
-
-int hexchat_plugin_deinit(void)
-{
-	xdcc_save();
-	hexchat_print(ph, "XDCC List saved\n");
-	return 1;
-}
-
-int hexchat_plugin_init(hexchat_plugin *plugin_handle,
-				char **plugin_name, char **plugin_desc, char **plugin_version,
-				char *arg)
-{
-	ph = plugin_handle;
-
-	*plugin_name = "XDCC";
-	*plugin_desc = "Very simple XDCC server";
-	*plugin_version = "0.1";
-
-	hexchat_hook_command(ph, "XDCC", HEXCHAT_PRI_NORM, xdcc_command, 0, 0);
-	hexchat_hook_print(ph, "CTCP Generic", HEXCHAT_PRI_NORM, ctcp_cb, 0);
-	hexchat_hook_print(ph, "CTCP Generic to Channel", HEXCHAT_PRI_NORM, ctcp_cb, 0);
-
-	xdcc_load();
-	hexchat_print(ph, "XDCC loaded. Type /XDCC for help.\n");
-
-	return 1;
-}