|
From: Bob T. <bt...@us...> - 2001-08-14 04:11:06
|
Update of /cvsroot/benson/benson3/src
In directory usw-pr-cvs1:/tmp/cvs-serv5197/src
Modified Files:
Makefile.am Makefile.in ssl.c
Added Files:
bensond.c network.c
Log Message:
Adding the beginning of the bensond daemon
--- NEW FILE: bensond.c ---
#include "benson/benson.h"
int main(int argc, char *argv[], char *env[])
{
int sock, s;
BIO *sbio;
SSL_CTX *ctx;
SSL *ssl;
int r;
pid_t pid;
ctx=initialize_ctx(KEYFILE,PASSWORD);
load_dh_params(ctx,DHFILE);
generate_eph_rsa_key(ctx);
sock = bn_tcp_listen();
while(1) {
if((s=accept(sock,0,0))<0)
err_exit("accept() failed");
if(pid=fork()) {
close(s);
}
else {
sbio=BIO_new_socket(s,BIO_NOCLOSE);
ssl=SSL_new(ctx);
SSL_set_bio(ssl,sbio,sbio);
if((r=SSL_accept(ssl)<=0))
berr_exit("SSL accept error");
}
}
destroy_ctx(ctx);
exit(0);
}
--- NEW FILE: network.c ---
#include "benson/benson.h"
int bn_tcp_listen(void)
{
int sock;
struct sockaddr_in sin;
int val=1;
if((sock=socket(AF_INET,SOCK_STREAM,0))<0)
err_exit("Couldn't make socket()");
memset(&sin,0,sizeof(sin));
sin.sin_addr.s_addr=INADDR_ANY;
sin.sin_family=AF_INET;
sin.sin_port=htons(4433);
setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,&val,sizeof(val));
if(bind(sock,(struct sockaddr *)&sin, sizeof(sin))<0)
berr_exit("Couldn't bind()");
listen(sock,5);
return (sock);
}
Index: Makefile.am
===================================================================
RCS file: /cvsroot/benson/benson3/src/Makefile.am,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -r1.3 -r1.4
*** Makefile.am 2001/08/13 02:20:57 1.3
--- Makefile.am 2001/08/14 04:11:02 1.4
***************
*** 1,4 ****
lib_LTLIBRARIES = libbenson.la
libbenson_la_LDFLAGS = -no-undefined -version-info 3:0:0
! libbenson_la_SOURCES = shm_wrapper.c ssl.c
INCLUDES = -I@top_srcdir@/include
--- 1,7 ----
+ sbin_PROGRAMS = bensond
+ bensond_SOURCES = bensond.c
+ bensond_LDADD = libbenson.la
lib_LTLIBRARIES = libbenson.la
libbenson_la_LDFLAGS = -no-undefined -version-info 3:0:0
! libbenson_la_SOURCES = shm_wrapper.c ssl.c network.c
INCLUDES = -I@top_srcdir@/include
Index: Makefile.in
===================================================================
RCS file: /cvsroot/benson/benson3/src/Makefile.in,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -r1.3 -r1.4
*** Makefile.in 2001/08/13 02:20:57 1.3
--- Makefile.in 2001/08/14 04:11:02 1.4
***************
*** 84,90 ****
uniqpath = @uniqpath@
lib_LTLIBRARIES = libbenson.la
libbenson_la_LDFLAGS = -no-undefined -version-info 3:0:0
! libbenson_la_SOURCES = shm_wrapper.c ssl.c
INCLUDES = -I@top_srcdir@/include
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
--- 84,93 ----
uniqpath = @uniqpath@
+ sbin_PROGRAMS = bensond
+ bensond_SOURCES = bensond.c
+ bensond_LDADD = libbenson.la
lib_LTLIBRARIES = libbenson.la
libbenson_la_LDFLAGS = -no-undefined -version-info 3:0:0
! libbenson_la_SOURCES = shm_wrapper.c ssl.c network.c
INCLUDES = -I@top_srcdir@/include
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
***************
*** 102,106 ****
X_PRE_LIBS = @X_PRE_LIBS@
libbenson_la_LIBADD =
! libbenson_la_OBJECTS = shm_wrapper.lo ssl.lo
CFLAGS = @CFLAGS@
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
--- 105,115 ----
X_PRE_LIBS = @X_PRE_LIBS@
libbenson_la_LIBADD =
! libbenson_la_OBJECTS = shm_wrapper.lo ssl.lo network.lo
! sbin_PROGRAMS = bensond$(EXEEXT)
! PROGRAMS = $(sbin_PROGRAMS)
!
! bensond_OBJECTS = bensond.$(OBJEXT)
! bensond_DEPENDENCIES = libbenson.la
! bensond_LDFLAGS =
CFLAGS = @CFLAGS@
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
***************
*** 115,121 ****
TAR = tar
GZIP_ENV = --best
! DEP_FILES = .deps/shm_wrapper.P .deps/ssl.P
! SOURCES = $(libbenson_la_SOURCES)
! OBJECTS = $(libbenson_la_OBJECTS)
all: all-redirect
--- 124,131 ----
TAR = tar
GZIP_ENV = --best
! DEP_FILES = .deps/bensond.P .deps/network.P .deps/shm_wrapper.P \
! .deps/ssl.P
! SOURCES = $(libbenson_la_SOURCES) $(bensond_SOURCES)
! OBJECTS = $(libbenson_la_OBJECTS) $(bensond_OBJECTS)
all: all-redirect
***************
*** 196,199 ****
--- 206,238 ----
$(LINK) -rpath $(libdir) $(libbenson_la_LDFLAGS) $(libbenson_la_OBJECTS) $(libbenson_la_LIBADD) $(LIBS)
+ mostlyclean-sbinPROGRAMS:
+
+ clean-sbinPROGRAMS:
+ -test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS)
+
+ distclean-sbinPROGRAMS:
+
+ maintainer-clean-sbinPROGRAMS:
+
+ install-sbinPROGRAMS: $(sbin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ $(mkinstalldirs) $(DESTDIR)$(sbindir)
+ @list='$(sbin_PROGRAMS)'; for p in $$list; do \
+ if test -f $$p; then \
+ echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(sbindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
+ $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(sbindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
+ else :; fi; \
+ done
+
+ uninstall-sbinPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ list='$(sbin_PROGRAMS)'; for p in $$list; do \
+ rm -f $(DESTDIR)$(sbindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
+ done
+
+ bensond$(EXEEXT): $(bensond_OBJECTS) $(bensond_DEPENDENCIES)
+ @rm -f bensond$(EXEEXT)
+ $(LINK) $(bensond_LDFLAGS) $(bensond_OBJECTS) $(bensond_LDADD) $(LIBS)
+
tags: TAGS
***************
*** 285,289 ****
installcheck-am:
installcheck: installcheck-am
! install-exec-am: install-libLTLIBRARIES
install-exec: install-exec-am
--- 324,328 ----
installcheck-am:
installcheck: installcheck-am
! install-exec-am: install-libLTLIBRARIES install-sbinPROGRAMS
install-exec: install-exec-am
***************
*** 294,305 ****
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
install: install-am
! uninstall-am: uninstall-libLTLIBRARIES
uninstall: uninstall-am
! all-am: Makefile $(LTLIBRARIES)
all-redirect: all-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
installdirs:
! $(mkinstalldirs) $(DESTDIR)$(libdir)
--- 333,344 ----
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
install: install-am
! uninstall-am: uninstall-libLTLIBRARIES uninstall-sbinPROGRAMS
uninstall: uninstall-am
! all-am: Makefile $(LTLIBRARIES) $(PROGRAMS)
all-redirect: all-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
installdirs:
! $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(sbindir)
***************
*** 314,330 ****
maintainer-clean-generic:
mostlyclean-am: mostlyclean-libLTLIBRARIES mostlyclean-compile \
! mostlyclean-libtool mostlyclean-tags mostlyclean-depend \
! mostlyclean-generic
mostlyclean: mostlyclean-am
! clean-am: clean-libLTLIBRARIES clean-compile clean-libtool clean-tags \
! clean-depend clean-generic mostlyclean-am
clean: clean-am
distclean-am: distclean-libLTLIBRARIES distclean-compile \
! distclean-libtool distclean-tags distclean-depend \
! distclean-generic clean-am
-rm -f libtool
--- 353,370 ----
maintainer-clean-generic:
mostlyclean-am: mostlyclean-libLTLIBRARIES mostlyclean-compile \
! mostlyclean-libtool mostlyclean-sbinPROGRAMS \
! mostlyclean-tags mostlyclean-depend mostlyclean-generic
mostlyclean: mostlyclean-am
! clean-am: clean-libLTLIBRARIES clean-compile clean-libtool \
! clean-sbinPROGRAMS clean-tags clean-depend \
! clean-generic mostlyclean-am
clean: clean-am
distclean-am: distclean-libLTLIBRARIES distclean-compile \
! distclean-libtool distclean-sbinPROGRAMS distclean-tags \
! distclean-depend distclean-generic clean-am
-rm -f libtool
***************
*** 333,338 ****
maintainer-clean-am: maintainer-clean-libLTLIBRARIES \
maintainer-clean-compile maintainer-clean-libtool \
! maintainer-clean-tags maintainer-clean-depend \
! maintainer-clean-generic distclean-am
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
--- 373,379 ----
maintainer-clean-am: maintainer-clean-libLTLIBRARIES \
maintainer-clean-compile maintainer-clean-libtool \
! maintainer-clean-sbinPROGRAMS maintainer-clean-tags \
! maintainer-clean-depend maintainer-clean-generic \
! distclean-am
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
***************
*** 345,356 ****
distclean-compile clean-compile maintainer-clean-compile \
mostlyclean-libtool distclean-libtool clean-libtool \
! maintainer-clean-libtool tags mostlyclean-tags distclean-tags \
! clean-tags maintainer-clean-tags distdir mostlyclean-depend \
! distclean-depend clean-depend maintainer-clean-depend info-am info \
! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \
! install-exec install-data-am install-data install-am install \
! uninstall-am uninstall all-redirect all-am all installdirs \
! mostlyclean-generic distclean-generic clean-generic \
! maintainer-clean-generic clean mostlyclean distclean maintainer-clean
--- 386,400 ----
distclean-compile clean-compile maintainer-clean-compile \
mostlyclean-libtool distclean-libtool clean-libtool \
! maintainer-clean-libtool mostlyclean-sbinPROGRAMS \
! distclean-sbinPROGRAMS clean-sbinPROGRAMS maintainer-clean-sbinPROGRAMS \
! uninstall-sbinPROGRAMS install-sbinPROGRAMS tags mostlyclean-tags \
! distclean-tags clean-tags maintainer-clean-tags distdir \
! mostlyclean-depend distclean-depend clean-depend \
! maintainer-clean-depend info-am info dvi-am dvi check check-am \
! installcheck-am installcheck install-exec-am install-exec \
! install-data-am install-data install-am install uninstall-am uninstall \
! all-redirect all-am all installdirs mostlyclean-generic \
! distclean-generic clean-generic maintainer-clean-generic clean \
! mostlyclean distclean maintainer-clean
Index: ssl.c
===================================================================
RCS file: /cvsroot/benson/benson3/src/ssl.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** ssl.c 2001/08/13 02:20:57 1.2
--- ssl.c 2001/08/14 04:11:02 1.3
***************
*** 8,11 ****
--- 8,17 ----
}
+ int err_exit(char *string)
+ {
+ fprintf(stderr,"%s\n",string);
+ exit(0);
+ }
+
int berr_exit(char *string)
{
***************
*** 22,25 ****
--- 28,57 ----
}
+ void load_dh_params(SSL_CTX *ctx, char *file)
+ {
+ DH *ret=0;
+ BIO *bio;
+
+ if((bio=BIO_new_file(file,"r")) == NULL)
+ berr_exit("Couldn't open DH file");
+
+ ret=PEM_read_bio_DHparams(bio,NULL,NULL,NULL);
+ BIO_free(bio);
+ if(SSL_CTX_set_tmp_dh(ctx,ret)<0)
+ berr_exit("Couldn't set DH parameters");
+ }
+
+ void generate_eph_rsa_key(SSL_CTX *ctx)
+ {
+ RSA *rsa;
+
+ rsa=RSA_generate_key(512,RSA_F4,NULL,NULL);
+
+ if(!SSL_CTX_set_tmp_rsa(ctx,rsa))
+ berr_exit("Couldn't set RSA key");
+
+ RSA_free(rsa);
+ }
+
SSL_CTX *initialize_ctx(char *keyfile,char *password)
***************
*** 44,49 ****
ssl_pw->password=password;
! ssl_pw->length=length(password);
! SSL_CTX_set_default_password_cb(ctx, password_cb);
if(!(SSL_CTX_use_PrivateKey_file(ctx,keyfile,SSL_FILETYPE_PEM)))
berr_exit("Couldn't read key file");
--- 76,81 ----
ssl_pw->password=password;
! ssl_pw->length=strlen(password);
! SSL_CTX_set_default_passwd_cb(ctx, password_cb);
if(!(SSL_CTX_use_PrivateKey_file(ctx,keyfile,SSL_FILETYPE_PEM)))
berr_exit("Couldn't read key file");
|