Work towards supporting compiling modules statically
authorjelmer@VERNSTOK.NL <jelmer@VERNSTOK.NL>
Thu, 3 Feb 2005 21:24:42 +0000 (23:24 +0200)
committerjelmer@VERNSTOK.NL <jelmer@VERNSTOK.NL>
Thu, 3 Feb 2005 21:24:42 +0000 (23:24 +0200)
Reduce number of files generated by configure
Lots of other minor fixes

27 files changed:
.bzrignore
ChangeLog
Makefile [moved from Makefile.in with 68% similarity]
Makefile.settings.in [new file with mode: 0644]
TODO
acinclude.m4 [new file with mode: 0644]
configure.in
ctrlproxyrc.default
ctrlproxyrc.dtd
mods/Makefile [new file with mode: 0644]
mods/Makefile.in [deleted file]
mods/auto_away.c [moved from mods/auto-away.c with 100% similarity]
mods/gnutls/Makefile.in
mods/gnutls/config.m4
mods/nss/Makefile.in
mods/nss/config.m4
mods/openssl/Makefile.in
mods/openssl/config.m4
mods/python/Makefile.in
mods/python/config.m4
mods/python2/Makefile.in
mods/python2/config.m4
mods/python2/python2.c
mods/socks.c
scripts/Makefile [moved from scripts/Makefile.in with 78% similarity]
scripts/web/Makefile [moved from scripts/web/Makefile.in with 83% similarity]
testsuite/Makefile [moved from testsuite/Makefile.in with 92% similarity]

index 2d51c9ff4033d45aff9e8710981f7fa72d06863d..e4c47a7302d7cec923737ecc9782965d5ffc708f 100644 (file)
@@ -1,4 +1,3 @@
-Makefile
 aclocal.m4
 autom4te.cache
 config.h
@@ -11,7 +10,6 @@ ctrlproxy
 ctrlproxy.pc
 doc/Makefile
 mods/*.so
-mods/Makefile
 mods/gnutls/*.so
 mods/gnutls/Makefile
 mods/nss/*.so
@@ -29,6 +27,3 @@ po/Makefile.in
 po/POTFILES
 po/ctrlproxy.pot
 po/stamp-po
-scripts/Makefile
-scripts/web/Makefile
-testsuite/Makefile
index 0315fad75002a1a9dca73e0441dbd5eb66d231f7..f562702c397382af303367a83d4f97502dcc3bf0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,9 @@
        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)
similarity index 68%
rename from Makefile.in
rename to Makefile
index 1a4660da128d23fc8ad4547d76727d1e9b98775a..ce8ed77ccf0359fff828e40f155ab4e8861f6f17 100644 (file)
+++ b/Makefile
@@ -1,22 +1,8 @@
-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
 
@@ -24,12 +10,18 @@ all: $(BINS)
        $(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)
@@ -39,13 +31,13 @@ install-dirs:
        $(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:
@@ -76,10 +68,10 @@ install-scripts:
        $(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
 
diff --git a/Makefile.settings.in b/Makefile.settings.in
new file mode 100644 (file)
index 0000000..77d6350
--- /dev/null
@@ -0,0 +1,23 @@
+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
diff --git a/TODO b/TODO
index d446da031dfe6354cf3ce34bc3d6ae2198b4624c..7824ce74404a359b5853bc5cb2741d33358f2b42 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,9 +1,7 @@
 - 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.
diff --git a/acinclude.m4 b/acinclude.m4
new file mode 100644 (file)
index 0000000..3741507
--- /dev/null
@@ -0,0 +1,15 @@
+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
+])
index b733e03bf56bd80ac04d2c92231194cb7111a444..158f149a267c64f6cc132275bfa942ca4dd09a9c 100644 (file)
@@ -14,12 +14,35 @@ AC_CONFIG_HEADER([config.h])
 # 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]))
@@ -53,15 +76,12 @@ AC_FUNC_REALLOC
 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
index 21c6bf6cf2ed7c4856a47601490eecc7628d8f7a..dd46f4103c1046f44a5e1f583a14e86e2374573f 100644 (file)
        </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>
index 9af02d03d2b5f1e7d06e6bd2503a7a7b2b0ccabb..2383cadbc164c9dbc3aef972ffc7490efa3fae7f 100644 (file)
@@ -5,7 +5,7 @@
 <!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>
diff --git a/mods/Makefile b/mods/Makefile
new file mode 100644 (file)
index 0000000..8f1ebcb
--- /dev/null
@@ -0,0 +1,39 @@
+-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
diff --git a/mods/Makefile.in b/mods/Makefile.in
deleted file mode 100644 (file)
index a85716a..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-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
similarity index 100%
rename from mods/auto-away.c
rename to mods/auto_away.c
index 9b4bc9bb735ce232bc3de6d5076aecf2d42c0d9a..b1dddf300e633e599bf319dfbd2615f3eb47503e 100644 (file)
@@ -1,25 +1,21 @@
-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
index 0112888fe3275994e6f4459188062875b1a5040a..b2e253f95413b46686075c8ac869ab9bcc5b0fa2 100644 (file)
@@ -6,7 +6,7 @@ GNUTLS_LIBS=""
 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
 
index 2370af64963e20bf02780482ee37002ddca2384d..c1aac109fd9e1999ee1b14971bd4124f56a276b3 100644 (file)
@@ -1,25 +1,21 @@
-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
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..d24b3fa3307bfdb45a9af09268a10c8724b0758a 100644 (file)
@@ -0,0 +1,4 @@
+dnl Mozilla NSS
+PKG_CHECK_MODULES(NSS, mozilla-nss, 
+       [ DEFMODULE(nss, $NSS_LIBS) ], [ echo "Not using mozilla-nss"; ] )
+AC_CONFIG_FILES([mods/nss/Makefile])
index d57f0c15b6a71c8c860c32c08b8ee5b7bf26f3dd..77c348c7289a9180d2834b2da94c7d86c37a75e4 100644 (file)
@@ -16,10 +16,10 @@ install: all
        $(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
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..5960f61c0db4241918ccce4fb9cc6a84a4c6facf 100644 (file)
@@ -0,0 +1,4 @@
+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])
index a7ed79ddc7c22e855397818fd2f39d1823ffe133..a99946df4d666250bfebd82d78e5d43c98104a3d 100644 (file)
@@ -20,7 +20,7 @@ install:
        $(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)
index 3438bed0e761ce43a601ce63a0388ad32c2f5082..44486da74fac9d2fe658662015bcd0c221330381 100644 (file)
@@ -24,7 +24,7 @@ else
                        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])
index 99e0375075c3987d861af9f711f855ad77025b7e..afb726ed5ec25e568fca930f8f99155161265d07 100644 (file)
@@ -1,16 +1,11 @@
+-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
 
@@ -18,14 +13,14 @@ lib%.so: %.o
        $(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
index d3316114ac09ba2e7d8bda75d5b9fbf2699330ac..11b42931af0e17032fe3f4a6535c0f1d9aa6c9ff 100644 (file)
@@ -5,7 +5,12 @@ if test "_$SWIG" = _; then
 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])
index a27a2a794a150345a1a250e39aac2f0976d66546..fe9ba418c0e2b2124f204bf1d69642caba6ad82a 100644 (file)
@@ -38,14 +38,15 @@ gboolean fini_plugin(struct plugin *p)
        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");
@@ -55,8 +56,12 @@ gboolean init_plugin(struct plugin *p)
                                PyRun_AnyFile(fd, filename);
                        }
                }
-               cur = cur->next;
        }
 
        return TRUE;
 }
+
+gboolean init_plugin(struct plugin *p)
+{
+       return TRUE;
+}
index fe690cc1b7fe86e1148474dca8543c840340fdc8..bd42e39331aba4c32a79b96d89f241addc9b1e07 100644 (file)
@@ -361,17 +361,28 @@ static gboolean handle_client_data (GIOChannel *ioc, GIOCondition o, gpointer da
                                                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;
similarity index 78%
rename from scripts/Makefile.in
rename to scripts/Makefile
index 6df10e8251c870911d1d9226e105ea160c7e5c58..c18951e4f948c78b3e25b1b64410599917c5a7c2 100644 (file)
@@ -1,7 +1,4 @@
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-INSTALL = @INSTALL@
-scriptdir = @datadir@/ctrlproxy/scripts
+-include ../Makefile.settings
 SUBDIRS = web
 SCRIPTS = 
 
similarity index 83%
rename from scripts/web/Makefile.in
rename to scripts/web/Makefile
index 78347bc9523e267bd47c73b90c3f051aec50629a..21a23421ccdbb1744398958976e4253f5aa845f2 100644 (file)
@@ -1,7 +1,4 @@
-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/*.*)
 
similarity index 92%
rename from testsuite/Makefile.in
rename to testsuite/Makefile
index f8b211f1cc9ed6facfda6dbcf3a8165cb63cdf5e..483a2f3dd729858f0d9e4d74ffdfaa3dce4eff3f 100644 (file)
@@ -1,9 +1,5 @@
-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