-Makefile
aclocal.m4
autom4te.cache
config.h
ctrlproxy.pc
doc/Makefile
mods/*.so
-mods/Makefile
mods/gnutls/*.so
mods/gnutls/Makefile
mods/nss/*.so
po/POTFILES
po/ctrlproxy.pot
po/stamp-po
-scripts/Makefile
-scripts/web/Makefile
-testsuite/Makefile
Jelmer Vernooij <jelmer@vernstok.nl>
Ctrlproxy 2.7:
+ * Reduce number of files generated by configure
+ * Modules can now be compiled into ctrlproxy as well as being built as shared
+ libraries
* Fix large number of memory leaks
* Use libxml less internally
* Moved documentation to seperate repository (version-independant)
-LIBS = @LIBS@ @PKG_LIBS@ @PKG_CFLAGS@ @LIBINTL@
-CC = @CC@
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-localedir = @datadir@/locale
-INSTALL = @INSTALL@
-bindir = @bindir@
-docdir = @prefix@/share/doc/ctrlproxy-@VERSION@
-modulesdir = @libdir@/ctrlproxy
-includedir = @includedir@
-destincludedir = @DESTINCLUDEDIR@
-man1dir = @mandir@/man1
-man5dir = @mandir@/man5
-cdatadir = @datadir@/ctrlproxy
-CFLAGS = @CFLAGS@ @PKG_CFLAGS@ -DHAVE_CONFIG_H -DLOCALEDIR=\"$(localedir)\" -DSHAREDIR=\"$(cdatadir)\" -DDTD_FILE=\"$(cdatadir)/ctrlproxyrc.dtd\"
+-include Makefile.settings
+
+CFLAGS+=-DHAVE_CONFIG_H -DLOCALEDIR=\"$(localedir)\" -DSHAREDIR=\"$(cdatadir)\" -DDTD_FILE=\"$(cdatadir)/ctrlproxyrc.dtd\"
CFLAGS+=-ansi -Wall -DMODULESDIR=\"$(modulesdir)\"
-OBJS = server.o line.o main.o state.o util.o hooks.o linestack.o plugins.o config.o
-BINS = @BINS@
.PHONY: all clean distclean install install-bin install-dirs install-doc install-data install-mods install-pkgconfig
$(MAKE) -C mods all
$(MAKE) -C scripts all
-ctrlproxy@EXEEXT@: $(OBJS)
- $(CC) $(LIBS) -rdynamic -o $@ $(OBJS)
+mods/static.o:
+ $(MAKE) -C mods static.o
+
+ctrlproxy$(EXEEXT): server.o line.o main.o state.o util.o hooks.o linestack.o plugins.o config.o mods/static.o
+ $(CC) $(LIBS) -rdynamic -o $@ $^
-%.@OBJEXT@: %.c
+%.$(OBJEXT): %.c
$(CC) $(CFLAGS) -c $<
+Makefile.settings:
+ @echo Please run ./configure first, then rerun make
+
install: all install-dirs install-doc install-bin install-mods install-data install-pkgconfig install-scripts install-locale
install-dirs:
$(INSTALL) -d $(DESTDIR)$(bindir)
$(INSTALL) -d $(DESTDIR)$(modulesdir)
$(INSTALL) -d $(DESTDIR)$(docdir)
$(INSTALL) -d $(DESTDIR)$(cdatadir)
- $(INSTALL) -d $(DESTDIR)@libdir@/pkgconfig
+ $(INSTALL) -d $(DESTDIR)$(libdir)/pkgconfig
install-locale:
$(MAKE) -C po install
install-bin:
- $(INSTALL) ctrlproxy@EXEEXT@ $(DESTDIR)$(bindir)
+ $(INSTALL) ctrlproxy$(EXEEXT) $(DESTDIR)$(bindir)
$(INSTALL) ctrlproxy-setup $(DESTDIR)$(bindir)
install-doc:
$(MAKE) -C scripts install
install-pkgconfig:
- $(INSTALL) ctrlproxy.pc $(DESTDIR)@libdir@/pkgconfig
+ $(INSTALL) ctrlproxy.pc $(DESTDIR)$(libdir)/pkgconfig
clean:
- rm -f *.@OBJEXT@ ctrlproxy@EXEEXT@ printstats *~
+ rm -f *.$(OBJEXT) ctrlproxy$(EXEEXT) printstats *~
$(MAKE) -C mods clean
$(MAKE) -C testsuite clean
--- /dev/null
+LIBS = @LIBS@ @PKG_LIBS@ @PKG_CFLAGS@ @LIBINTL@
+CC = @CC@
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+localedir = @datadir@/locale
+INSTALL = @INSTALL@
+bindir = @bindir@
+docdir = @prefix@/share/doc/ctrlproxy-@VERSION@
+modulesdir = @libdir@/ctrlproxy
+libdir = @libdir@
+includedir = @includedir@
+destincludedir = @DESTINCLUDEDIR@
+man1dir = @mandir@/man1
+man5dir = @mandir@/man5
+cdatadir = @datadir@/ctrlproxy
+EXEEXT = @EXEEXT@
+OBJEXT = @OBJEXT@
+CFLAGS = @CFLAGS@ @PKG_CFLAGS@
+MODS_STATIC = @MODS_STATIC@
+MODS_SHARED = @MODS_SHARED@
+LDFLAGS = @LDFLAGS@
+BINS = @BINS@
+scriptdir = @datadir@/ctrlproxy/scripts
- update documentation
- repl changes
- see FIXME's
-- fix bug in linestack_file
- finish python module
- hooks
- rewrite web script
- support the - and + in front of lines as used by Freenode
-- allow compiling in of modules.
--- /dev/null
+AC_DEFUN([DEFMODULE],
+[AC_PREREQ(2.57)dnl
+ AC_MSG_CHECKING([how to build $1])
+ if test "$module_default" = "shared"; then
+ MODS_SHARED="$MODS_SHARED $1"
+ AC_MSG_RESULT(shared)
+ else if test "$module_default" = "static"; then
+ LIBS="$LIBS $2"
+ MODS_STATIC="$MODS_STATIC $1"
+ AC_MSG_RESULT(static)
+ else
+ AC_MSG_RESULT(not)
+ fi
+fi
+])
# Checks for programs.
AC_PROG_CC
AC_PROG_INSTALL
+AC_PATH_PROG(LD,ld)
-MODS=""
+module_default="shared"
BINS="ctrlproxy$ac_cv_exeext"
-MODS="$MODS liblog_irssi.so libctcp.so liblinestack_memory.so libauto-away.so libstrip.so libadmin.so libnoticelog.so libnickserv.so liblog_custom.so libantiflood.so librepl_simple.so librepl_command.so librepl_highlight.so librepl_limited.so liblinestack_file.so libreport_time.so librepl_memory.so librepl_none.so libmotd_file.so librepl_lastdisconnect.so libautosave.so libdebug.so libsocks.so liblistener.so"
-MODS_SUBDIRS=""
+DEFMODULE(log_irssi)
+DEFMODULE(ctcp)
+DEFMODULE(linestack_memory)
+DEFMODULE(auto_away)
+DEFMODULE(strip)
+DEFMODULE(admin)
+DEFMODULE(noticelog)
+DEFMODULE(nickserv)
+DEFMODULE(log_custom)
+DEFMODULE(antiflood)
+DEFMODULE(repl_simple)
+DEFMODULE(repl_command)
+DEFMODULE(repl_highlight)
+DEFMODULE(repl_limited)
+DEFMODULE(linestack_file)
+DEFMODULE(report_time)
+DEFMODULE(repl_memory)
+DEFMODULE(repl_none)
+DEFMODULE(motd_file)
+DEFMODULE(repl_lastdisconnect)
+DEFMODULE(autosave)
+DEFMODULE(debug)
+DEFMODULE(socks)
+DEFMODULE(listener)
# Checks for libraries.
AC_CHECK_LIB([popt], [poptGetArg], , AC_MSG_WARN([Popt is strongly advised]))
AC_TYPE_SIGNAL
AC_SUBST(BINS)
-AC_SUBST(MODS)
-AC_SUBST(MODS_SUBDIRS)
+AC_SUBST(MODS_STATIC)
+AC_SUBST(MODS_SHARED)
AC_CHECK_FUNCS([gethostbyname gethostname memset mkdir strcasecmp strchr strdup strerror strncasecmp strstr uname backtrace_symbols gettimeofday strrchr daemon])
-AC_MSG_RESULT([Going to build the following plugins: ])
-AC_MSG_RESULT([$MODS])
DESTINCLUDEDIR="$includedir/ctrlproxy-2"
AC_SUBST(DESTINCLUDEDIR)
-
-AC_CONFIG_FILES([Makefile mods/Makefile testsuite/Makefile ctrlproxy.pc po/Makefile.in scripts/Makefile scripts/web/Makefile])
+AC_CONFIG_FILES([Makefile.settings ctrlproxy.pc po/Makefile.in])
AC_OUTPUT
</plugins>
<networks>
<network autoconnect="1" client_pass="secret" name="Freenode" fullname="CtrlProxy user">
- <listen>
- <ipv4 port="6667"/>
- <ipv4 port="7667" ssl="1"/>
- </listen>
-
<servers>
<ipv4 host="irc.freenode.net"/>
</servers>
<channel name="#ctrlproxy-test" autojoin="1"/>
<autosend>PRIVMSG #ctrlproxy-test :Hi There, I'm using ctrlproxy!</autosend>
-
</network>
</networks>
</ctrlproxy>
<!ATTLIST plugin file CDATA #REQUIRED>
<!ATTLIST plugin autoload CDATA "1">
-<!ELEMENT network (listen?,(servers|program|virtual),channel*,autosend*)>
+<!ELEMENT network ((servers|program|virtual),channel*,autosend*)>
<!ATTLIST network name CDATA #IMPLIED>
<!ATTLIST network client_pass CDATA "">
<!ATTLIST network password CDATA "">
<!ATTLIST network autoconnect CDATA "0">
<!ATTLIST network ignore_first_nick CDATA "0">
-<!ELEMENT listen (ipv4*,ipv6*)>
-
<!ELEMENT autosend (#PCDATA)>
<!ELEMENT channel EMPTY>
<!ATTLIST channel name CDATA #REQUIRED>
<!ATTLIST channel autojoin CDATA "0">
<!ATTLIST channel key CDATA #IMPLIED>
-<!ELEMENT servers (ipv4*,ipv6*,pipe*)>
-
-<!ELEMENT ipv4 EMPTY>
-<!ATTLIST ipv4 port CDATA #IMPLIED>
-<!ATTLIST ipv4 host CDATA #IMPLIED>
-<!ATTLIST ipv4 ssl CDATA #IMPLIED>
-<!ELEMENT ipv6 EMPTY>
-<!ATTLIST ipv6 port CDATA #IMPLIED>
-<!ATTLIST ipv6 host CDATA #IMPLIED>
-<!ATTLIST ipv6 ssl CDATA #IMPLIED>
-<!ELEMENT pipe (path)>
-<!ELEMENT path (#PCDATA)>
+<!ELEMENT servers (server*)>
+
+<!ELEMENT server EMPTY>
+<!ATTLIST server port CDATA #IMPLIED>
+<!ATTLIST server host CDATA #IMPLIED>
+<!ATTLIST server ssl CDATA #IMPLIED>
+<!ELEMENT program (#PCDATA)>
+<!ELEMENT virtual ANY>
+<!ATTLIST virtual type CDATA #REQUIRED>
<!ELEMENT nickserv (nick*)>
<!ELEMENT nick EMPTY>
--- /dev/null
+-include ../Makefile.settings
+CFLAGS += -Wall -I.. -DHAVE_CONFIG_H
+MODS_SHARED_SUBDIRS = $(foreach mod, $(MODS_SHARED), $(shell test -d $(mod) && echo $(mod)))
+MODS_SHARED_FILES = $(foreach mod, $(MODS_SHARED), $(shell test -f $(mod).c && echo lib$(mod).so))
+MODS_STATIC_SUBDIRS = $(foreach mod, $(MODS_STATIC), $(shell test -d $(mod) && echo $(mod)))
+MODS_STATIC_SUBDIRS_FILES = $(foreach mod, $(MODS_STATIC_SUBDIRS), $(mod)/$(mod).o)
+MODS_STATIC_FILES = $(foreach mod, $(MODS_STATIC), $(shell test -f $(mod).c && echo $(mod).o)) $(MODS_STATIC_SUBDIRS_FILES)
+INCLUDEFILES = $(wildcard *.h)
+
+.PHONY: all install clean distclean
+
+all: $(MODS_SHARED_FILES) static.o
+ for I in $(MODS_SHARED_SUBDIRS); do $(MAKE) -C $$I $@; done
+
+install: all
+ $(INSTALL) -d $(DESTDIR)$(modulesdir)
+ test -z "$(MODS_SHARED_FILES)" || $(INSTALL) $(MODS_SHARED_FILES) $(DESTDIR)$(modulesdir)
+ $(INSTALL) -m 644 $(INCLUDEFILES) $(DESTDIR)$(destincludedir)
+ for I in $(MODS_SHARED_SUBDIRS); do $(MAKE) -C $$I $@; done
+
+$(MODS_STATIC_SUBDIRS_FILES):
+ $(MAKE) -C $(@D) $(@F)
+
+static.o: $(MODS_STATIC_FILES)
+ $(LD) -r -o $@ $^
+
+%.o: %.c
+ $(CC) $(CFLAGS) -Dinit_plugin=$*_init -Dfini_plugin=$*_fini -Dname_plugin=$*_name -Dload_config=$*_load_config -Dsave_config=$*_save_config -c $<
+
+lib%.so: %.c
+ $(CC) $(CFLAGS) -fPIC -shared -o $@ $<
+
+clean:
+ for I in $(MODS_SHARED_SUBDIRS) $(MODS_STATIC_SUBDIRS); do $(MAKE) -C $$I $@; done
+ rm -f $(MODS_SHARED_FILES) $(MODS_STATIC_FILES) *.o *.so
+
+distclean: clean
+ for I in $(MODS_SHARED_SUBDIRS) $(MODS_STATIC_SUBDIRS); do $(MAKE) -C $$I $@; done
+ rm -f Makefile
+++ /dev/null
-CC = @CC@
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-INSTALL = @INSTALL@
-CFLAGS = -Wall -fPIC -I.. @CFLAGS@ @PKG_CFLAGS@ -DSHAREDIR=\"@datadir@\" -DHAVE_CONFIG_H
-moddir = @libdir@/ctrlproxy
-MODS_SUBDIRS = @MODS_SUBDIRS@
-MODS = @MODS@
-destincludedir = @DESTINCLUDEDIR@
-INCLUDEFILES = $(wildcard *.h)
-
-.PHONY: all install clean distclean
-
-all: $(MODS)
- for I in $(MODS_SUBDIRS); do $(MAKE) -C $$I $@; done
-
-install: all
- $(INSTALL) -d $(DESTDIR)$(moddir)
- $(INSTALL) $(MODS) $(DESTDIR)$(moddir)
- $(INSTALL) -m 644 $(INCLUDEFILES) $(DESTDIR)$(destincludedir)
- for I in $(MODS_SUBDIRS); do $(MAKE) -C $$I $@; done
-
-%.o: %.c
- $(CC) $(CFLAGS) -fPIC -c $<
-
-lib%.so: %.c
- $(CC) $(CFLAGS) -shared -o $@ $<
-
-clean:
- for I in $(MODS_SUBDIRS); do $(MAKE) -C $$I $@; done
- rm -f $(MODS) *.o
-
-distclean: clean
- for I in $(MODS_SUBDIRS); do $(MAKE) -C $$I $@; done
- rm -f Makefile
-CC = @CC@
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-INSTALL = @INSTALL@
-CFLAGS = -Wall -fPIC -I../.. -I.. @CFLAGS@ @PKG_CFLAGS@ @GNUTLS_CFLAGS@ -DSHAREDIR=\"@datadir@\" -DHAVE_CONFIG_H
-moddir = @libdir@/ctrlproxy
+-include ../../Makefile.settings
+CFLAGS += -I../.. -I.. @GNUTLS_CFLAGS@ -DHAVE_CONFIG_H
+LDFLAGS += @GNUTLS_LIBS@
MODS = libgnutls.so
-LDFLAGS = @GNUTLS_LIBS@
.PHONY: all install clean distclean
all: $(MODS)
install: all
- $(INSTALL) -d $(DESTDIR)$(moddir)
- $(INSTALL) $(MODS) $(DESTDIR)$(moddir)
+ $(INSTALL) -d $(DESTDIR)$(modulesdir)
+ $(INSTALL) $(MODS) $(DESTDIR)$(modulesdir)
%.o: %.c
- $(CC) $(CFLAGS) -fPIC -c $<
+ $(CC) $(CFLAGS) -Dinit_plugin=_$*_init -Dfini_plugin=$*_fini -Dname_plugin=$*_name -Dload_config=$*_load_config -Dsave_config=$*_save_config -c $<
lib%.so: %.c
- $(CC) $(CFLAGS) $(LDFLAGS) -shared -o $@ $<
+ $(CC) $(CFLAGS) -fPIC $(LDFLAGS) -shared -o $@ $<
clean:
rm -f $(MODS) *.o
if test "$gnutls_config" != "no" && test "`libgnutls-config --version | cut -f 1 -d .`" = "1"; then
GNUTLS_CFLAGS="`$gnutls_config --cflags`"
GNUTLS_LIBS="`$gnutls_config --libs`"
- MODS_SUBDIRS="$MODS_SUBDIRS gnutls"
+ DEFMODULE(gnutls, $GNUTLS_LIBS)
AC_CHECK_HEADERS([gnutls/gnutls.h])
fi
-CC = @CC@
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-INSTALL = @INSTALL@
-CFLAGS = -Wall -fPIC -I../.. -I.. @CFLAGS@ @PKG_CFLAGS@ @NSS_CFLAGS@ -DSHAREDIR=\"@datadir@\" -DHAVE_CONFIG_H
-moddir = @libdir@/ctrlproxy
+-include ../../Makefile.settings
+CFLAGS += -I../.. -I.. @NSS_CFLAGS@ -DHAVE_CONFIG_H
+LDFLAGS += @NSS_LIBS@
MODS = libnss.so
-LDFLAGS = @NSS_LIBS@
.PHONY: all install clean distclean
all: $(MODS)
install: all
- $(INSTALL) -d $(DESTDIR)$(moddir)
- $(INSTALL) $(MODS) $(DESTDIR)$(moddir)
+ $(INSTALL) -d $(DESTDIR)$(modulesdir)
+ $(INSTALL) $(MODS) $(DESTDIR)$(modulesdir)
%.o: %.c
- $(CC) $(CFLAGS) -fPIC -c $<
+ $(CC) $(CFLAGS) -Dinit_plugin=$*_init -Dfini_plugin=$*_fini -Dname_plugin=$*_name -Dload_config=$*_load_config -Dsave_config=$*_save_config -c $<
lib%.so: %.c
- $(CC) $(CFLAGS) $(LDFLAGS) -shared -o $@ $<
+ $(CC) -fPIC $(CFLAGS) $(LDFLAGS) -shared -o $@ $<
clean:
rm -f $(MODS) *.o
+dnl Mozilla NSS
+PKG_CHECK_MODULES(NSS, mozilla-nss,
+ [ DEFMODULE(nss, $NSS_LIBS) ], [ echo "Not using mozilla-nss"; ] )
+AC_CONFIG_FILES([mods/nss/Makefile])
$(INSTALL) $(MODS) $(DESTDIR)$(moddir)
%.o: %.c
- $(CC) $(CFLAGS) -fPIC -c $<
+ $(CC) $(CFLAGS) -Dinit_plugin=$*_init -Dfini_plugin=$*_fini -Dname_plugin=$*_name -Dload_config=$*_load_config -Dsave_config=$*_save_config -c $<
lib%.so: %.c
- $(CC) $(CFLAGS) $(LDFLAGS) -shared -o $@ $<
+ $(CC) $(CFLAGS) -fPIC $(LDFLAGS) -shared -o $@ $<
clean:
rm -f $(MODS) *.o
+dnl SSL Support
+dnl libssl
+PKG_CHECK_MODULES(OPENSSL, openssl, [ DEFMODULE(openssl, $OPENSSL_LIBS) ], [ echo "Not building openssl module" ])
+AC_CONFIG_FILES([mods/openssl/Makefile])
$(INSTALL) __init__.py $(DESTDIR)$(moddir)/python/__init__.py
%.o: %.c
- $(CC) $(CFLAGS) -DPYLIBDIR=$(PYLIBDIR) -DPREFIX=$(DPREFIX) -DSHAREDIR=$(DSHAREDIR) -fPIC -c $<
+ $(CC) $(CFLAGS) -Dinit_plugin=$*_init -Dfini_plugin=$*_fini -Dname_plugin=$*_name -Dload_config=$*_load_config -Dsave_config=$*_save_config -DPYLIBDIR=$(PYLIBDIR) -DPREFIX=$(DPREFIX) -DSHAREDIR=$(DSHAREDIR) -fPIC -c $<
libpython.so: python.o types.o
$(CC) -shared -o $@ $^ $(LIBS)
PY_LIBS=`$pythonpath -c 'import distutils.sysconfig; print distutils.sysconfig.get_config_var("BLDLIBRARY"),distutils.sysconfig.get_config_var("LIBS");'`
PY_CFLAGS=`$pythonpath -c 'import distutils.sysconfig; print distutils.sysconfig.get_config_var("CFLAGS");'`
PY_CFLAGS="$PY_CFLAGS -I$PY_INC"
- MODS_SUBDIRS="$MODS_SUBDIRS python"
+ DEFMODULE(python)
AC_MSG_RESULT(ok)
else
AC_MSG_RESULT([can't find Python.h])
+-include ../../Makefile.settings
PYTHON = @PYTHON@
-prefix = @prefix@
-exec_prefix = @exec_prefix@
PYTHON_PREFIX = @PYTHON_PREFIX@
SWIG = @SWIG@
-CC = @CC@
-PYCFLAGS = -I$(shell $(PYTHON) -c 'import distutils.sysconfig; print distutils.sysconfig.get_python_inc()')
-PYLDFLAGS = -L$(shell $(PYTHON) -c 'import distutils.sysconfig; print distutils.sysconfig.get_python_lib(standard_lib=1)')
-PYLDFLAGS += $(shell $(PYTHON) -c 'import distutils.sysconfig; print distutils.sysconfig.get_config_var("BLDLIBRARY")')
-CFLAGS = @CFLAGS@ @PKG_CFLAGS@ -I../..
-LDFLAGS = @LDFLAGS@ @PKG_LIBS@
-INSTALL = @INSTALL@
-moddir = @libdir@/ctrlproxy
+PYCFLAGS = @PY_CFLAGS@
+PYLDFLAGS = @PY_LIBS@
+CFLAGS += -I../..
+LDFLAGS +=
all: build libpython2.so
$(CC) $(LDFLAGS) $(PYLDFLAGS) -shared -o $@ $<
%.o: %.c
- $(CC) $(CFLAGS) $(PYCFLAGS) -c $<
+ $(CC) $(CFLAGS) $(PYCFLAGS) -Dinit_plugin=$*_init -Dfini_plugin=$*_fini -Dname_plugin=$*_name -Dload_config=$*_load_config -Dsave_config=$*_save_config -c $<
build: ctrlproxy_wrap.c
LDFLAGS="$(LDFLAGS)" CFLAGS="$(CFLAGS)" $(PYTHON) setup.py build
install: all
$(PYTHON) setup.py install
- $(INSTALL) libpython2.so $(DESTDIR)$(moddir)
+ $(INSTALL) libpython2.so $(DESTDIR)$(modulesdir)
clean:
rm -f *_wrap.c *.pyc
elif test _$PYTHON_VERSION = _; then
AC_MSG_WARN([Python not found, not building python module])
else
- MODS_SUBDIRS="$MODS_SUBDIRS python2"
+ PY_CFLAGS="-I`$PYTHON -c 'import distutils.sysconfig; print distutils.sysconfig.get_python_inc()'`"
+ PY_LIBS="-L`$PYTHON -c 'import distutils.sysconfig; print distutils.sysconfig.get_python_lib(standard_lib=1)'`"
+ PY_LIBS="$PY_LIBS `$PYTHON -c 'import distutils.sysconfig; print distutils.sysconfig.get_config_var("BLDLIBRARY")'`"
+ DEFMODULE(python2, $PY_LIBS)
+ AC_SUBST(PY_LIBS)
+ AC_SUBST(PY_CFLAGS)
fi
AC_CONFIG_FILES([mods/python2/Makefile])
return TRUE;
}
-gboolean init_plugin(struct plugin *p)
+gboolean load_config(struct plugin *p, xmlNodePtr node)
{
FILE *fd;
- xmlNodePtr cur = p->xmlConf->xmlChildrenNode;
+ xmlNodePtr cur;
Py_Initialize();
- while(cur) {
+ for (cur = node->xmlChildrenNode; cur; cur = cur->next)
+ {
if(!xmlIsBlankNode(cur) && !strcmp(cur->name, "script")) {
const char *filename = xmlNodeGetContent(cur);
fd = fopen(filename, "r");
PyRun_AnyFile(fd, filename);
}
}
- cur = cur->next;
}
return TRUE;
}
+
+gboolean init_plugin(struct plugin *p)
+{
+ return TRUE;
+}
g_warning("Unable to return network matching %s:%d", hostname, port);
return socks_error(ioc, REP_NET_UNREACHABLE);
} else {
- const char *hostname = get_my_hostname();
- struct sockaddr
+ struct sockaddr_in6 *name6 = (struct sockaddr_in6 *)result->connection.tcp.local_name;
+ struct sockaddr_in *name4 = (struct sockaddr_in *)result->connection.tcp.local_name;
+ int atyp, len, port;
+ guint8 *data;
+
+ if (name4->sin_family == AF_INET) {
+ atyp = ATYP_IPV4;
+ data = (guint8 *)&name4->sin_addr;
+ len = 4;
+ port = name4->sin_port;
+ } else if (name6->sin6_family == AF_INET6) {
+ atyp = ATYP_IPV6;
+ data = (guint8 *)&name6->sin6_addr;
+ len = 16;
+ port = name6->sin6_port;
+ } else {
+ g_warning("Unable to obtain local address for connection to server");
+ return socks_error(ioc, REP_NET_UNREACHABLE);
+ }
+
+ socks_reply(ioc, REP_OK, atyp, len, data, port);
- guint8 *data = g_new0(guint8, strlen(hostname)+3);
- data[0] = strlen(hostname);
- strcpy(data+1, hostname);
-
- socks_reply(ioc, REP_OK, ATYP_, strlen(hostname)+1, data, 0);
-
- g_free(data);
-
new_client(result, ioc);
return FALSE;
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-INSTALL = @INSTALL@
-scriptdir = @datadir@/ctrlproxy/scripts
+-include ../Makefile.settings
SUBDIRS = web
SCRIPTS =
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-INSTALL = @INSTALL@
-scriptdir = @datadir@/ctrlproxy/scripts
+-include ../../Makefile.settings
PAGES = $(wildcard pages/*.py) $(wildcard pages/*.css) $(wildcard pages/*.txt)
INCLUDES = $(wildcard includes/*.*)
-modulesdir = @libdir@/ctrlproxy
-LIBS = @LIBS@ @PKG_LIBS@ @PKG_CFLAGS@
-CC = @CC@
-CFLAGS = @CFLAGS@ @PKG_CFLAGS@ -I.. -DHAVE_CONFIG_H
-INSTALL = @INSTALL@
-
+-include ../Makefile.settings
+CFLAGS += -I.. -DHAVE_CONFIG_H
CFLAGS+=-ansi -Wall -DMODULESDIR=\"$(modulesdir)\"
.PHONY: all clean distclean install