initial commit of file from CVS for ipsvd on Fri 14 Jul 13:50:31 BST 2023

This commit is contained in:
Brian Read 2023-07-14 13:50:31 +01:00
parent ddc5d5796a
commit 901cd77fb3
10 changed files with 392 additions and 1 deletions

1
.gitattributes vendored Normal file
View File

@ -0,0 +1 @@
*.tar.gz filter=lfs diff=lfs merge=lfs -text

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
*.rpm
*.log
*spec-20*

21
Makefile Normal file
View File

@ -0,0 +1,21 @@
# Makefile for source rpm: ipsvd
# $Id: Makefile,v 1.1 2016/02/04 12:43:02 vip-ire Exp $
NAME := ipsvd
SPECFILE = $(firstword $(wildcard *.spec))
define find-makefile-common
for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done
endef
MAKEFILE_COMMON := $(shell $(find-makefile-common))
ifeq ($(MAKEFILE_COMMON),)
# attept a checkout
define checkout-makefile-common
test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2
endef
MAKEFILE_COMMON := $(shell $(checkout-makefile-common))
endif
include $(MAKEFILE_COMMON)

View File

@ -1,3 +1,11 @@
# ipsvd # ipsvd
3rd Party (Maintained by Koozali) git repo for ipsvd smeserver 3rd Party (Maintained by Koozali) git repo for ipsvd smeserver
## Description
<br />*This description has been generated by an LLM AI system and cannot be relied on to be fully correct.*
*Once it has been checked, then this comment will be deleted*
<br />
ipsvd is a software package that provides Internet Protocol services such as TCP, UDP, and SCTP over IPv4 and IPv6. It also provides secure tunnels and provides a secure connection over which to send data. Additionally, it provides services such as logging, authentication, and virtual hosting.

1
contriborbase Normal file
View File

@ -0,0 +1 @@
sme10

BIN
ipsvd-0.12.1.tar.gz (Stored with Git LFS) Normal file

Binary file not shown.

182
ipsvd.spec Normal file
View File

@ -0,0 +1,182 @@
# $Id: ipsvd.spec,v 1.1 2016/02/04 12:43:02 vip-ire Exp $
Summary: internet protocol service daemons
Name: ipsvd
Version: 0.12.1
Release: 7%{?dist}
License: BSD style
Group: System Enviornment/Daemons
Url: http://smarden.org/ipsvd/
Source: %{name}-%{version}.tar.gz
Source1: matrixssl-1-8-3-open.tar.gz
Patch0: matrix.decode.debug.patch
Patch1: tcpsvd_keepalive.patch
BuildRequires: dietlibc
BuildRoot: %{_tmppath}/%{name}-root
%description
ipsvd is a set of internet protocol service daemons. It currently includes
a TCP/IP service daemon, and a UDP/IP service daemon.
An internet protocol service (ipsv) daemon waits for incoming
connections on a local socket. On incoming connections, the ipsv daemon
conditionally runs an arbitrary program with standard input reading from
the socket, and standard output writing to the socket, that handles the
connection. The network connection optionally can be encrypted using SSLv3.
Standard error is used for logging.
ipsv daemons can be told to read and follow pre-defined instructions
on how to handle incoming connections. It's possible to run different
programs, or to set a different environment, or to deny a connection,
or to set a per host concurrency limit, depending on the client's address
or hostname.
Normally the ipsv daemons are run by a supervisor process, such as runsv
from the runit package, or supervise from the daemontools package.
ipsvd can be used to run services normally run by inetd, xinetd, or tcpserver.
%changelog
* Fri Jul 14 2023 BogusDateBot
- Eliminated rpmbuild "bogus date" warnings due to inconsistent weekday,
by assuming the date is correct and changing the weekday.
* Wed Apr 23 2014 Ian Wells <esmith@wellsi.com> 0.12.1-07.sme
- Modifed patch and spec file to avoid build errors [SME: 8084]
* Wed Dec 25 2013 Charlie Brady <charlieb@e-smith.com> 0.12.1-06
- Add option to tcpsvd to set socket keepalive. Code provided by Chris Maltby.
[SME: 8084]
* Sat Oct 6 2007 Charlie Brady <charlieb@e-smith.com> 0.12.1-05
- Remove extra debugging code. [SME: 3438]
* Tue Oct 2 2007 Charlie Brady <charlieb@e-smith.com> 0.12.1-04
- Add more debugging of client hello parsing. [SME: 3438]
* Fri Aug 17 2007 Charlie Brady <charlieb@e-smith.com> 0.12.1-03
- Send all debugging to stderr rather than stdout.
- Fix bug parsing SSL 3.0 client hello (if hello extensions are
included, as in Thunderbird 2). [SME: 3438]
* Thu Aug 16 2007 Charlie Brady <charlieb@e-smith.com> 0.12.1-02
- Enable DEBUG during matrixssl build.
* Sun Apr 29 2007 Shad L. Lords <slords@mail.com>
- Clean up spec so package can be built by koji/plague
* Thu Apr 12 2007 Charlie Brady <charlieb@e-smith.com> 0.12.1-01
- Update to latest upstream ipsvd.
* Thu Mar 15 2007 Charlie Brady <charlieb@e-smith.com> 0.12.0-04
- Update to latest upstream matrixssl library.
* Thu Dec 07 2006 Shad L. Lords <slords@mail.com>
- Update to new release naming. No functional changes.
- Make Packager generic
* Sat Feb 4 2006 Charlie Brady <charlieb@e-smith.com> 0.12.0-02
- Fix build error in Makefile.
* Sat Feb 4 2006 Charlie Brady <charlieb@e-smith.com> 0.12.0-01
- Upgrade to new version.
* Mon Nov 21 2005 Charlie Brady <charlieb@e-smith.com> 0.11.1-03
- Rebuild with new dietlibc (0.27-4).
* Wed Nov 16 2005 Charlie Brady <charlieb@e-smith.com> 0.11.1-02
- Update to latest matrixssl.
* Wed Nov 16 2005 Charlie Brady <charlieb@e-smith.com> 0.11.1-01
- Update to new ipsvd version.
- Remove matrixssl build issue patch.
* Mon Oct 24 2005 Charlie Brady <charlieb@e-smith.com> 0.11.0-04
- Update to latest matrixssl.
* Tue Jul 12 2005 Charlie Brady <charlieb@e-smith.com> 0.11.0-03
- Rebuild on CentOS 4.1 build server, to correct segfault problem.
* Tue Mar 15 2005 Charlie Brady <charlieb@e-smith.com> 0.11.0-02
- Fix install of sslio
* Wed Feb 23 2005 Charlie Brady <charlieb@e-smith.com> 0.11.0-01
- Upgrade to 0.11.0
- Remove bogus dietlibc Requires: header (statically linked)
* Sat Jan 15 2005 Charlie Brady <charlieb@e-smith.com> 0.10.1-01
- Upgrade to 0.10.1
- Upgrade martixssl to 1.2.2.
- Don't bundle djbdns client library.
* Mon Dec 20 2004 Charlie Brady <charlieb@e-smith.com> 0.9.7-01
- Upgrade to 0.9.7.
* Thu Sep 30 2004 Charlie Brady <charlieb@e-smith.com> 0.9.6-01
- Upgrade to 0.9.6.
- Upgrade martixssl to 1.2.
* Mon Jun 07 2004 Charlie Brady <charlieb@e-smith.com> 0.9.3-01
- Upgrade to 0.9.3.
* Mon May 03 2004 Charlie Brady <charlieb@e-smith.com> 0.9.1-01
- Upgrade to 0.9.1.
* Sun May 02 2004 Charlie Brady <charlieb@e-smith.com> 0.9.0-01
- Upgrade to 0.9.0 (now includes sslio).
- Build/link with dietlibc and matrixssl.
* Tue Nov 04 2003 Charlie Brady <charlieb@e-smith.com> 0.6.0-02
- Build/link with uClibc.
- Add missing man(8) pages.
* Thu Oct 16 2003 Charlie Brady <charlieb@e-smith.com> 0.6.0-01
- Upgrade to 0.6.0.
* Tue Jul 22 2003 Charlie Brady <charlieb@e-smith.com> 0.4.1-01
- Initial
%prep
%setup -c -n %{name}-%{version}
cp -v %{SOURCE1} net/%{name}-%{version}/src/matrixssl.tar.gz
mkdir -p net/%{name}-%{version}/compile
perl -p -i -e 's:CC=../../compile:CC=../../compile -DDEBUG:' \
net/%{name}-%{version}/src/Makefile.matrixssl
ln -s matrixssl-1-8-3-open net/%{name}-%{version}/compile/matrixssl
%patch1 -p1
%build
cd net/%{name}-%{version}
echo 'diet -Os gcc -O2 -Wall' >src/conf-cc
echo 'diet -Os gcc -s -Os -pipe' >src/conf-ld
./package/compile
cd compile
#patch -p0 < %{PATCH0}
perl -p -i -e "s/printf.m/fprintf(stderr, m/" matrixssl/src/os/debug.c
perl -p -i -e "s/ssl.*TLS_MIN_VER .. c/c/" matrixssl/src/sslDecode.c
rm matrixssl.a sslio sslsvd
cd ..
./package/compile
%install
cd net/%{name}-%{version}
mkdir -p $RPM_BUILD_ROOT/%{_bindir}
for i in $(cat package/commands compile/command.ssl)
do
install command/$i $RPM_BUILD_ROOT/%{_bindir}
done
mkdir -p $RPM_BUILD_ROOT/%{_mandir}/man1
#install man/*.1 $RPM_BUILD_ROOT/%{_mandir}/man1
mkdir -p $RPM_BUILD_ROOT/%{_mandir}/man8
install man/*.8 $RPM_BUILD_ROOT/%{_mandir}/man8
%clean
rm -r $RPM_BUILD_ROOT
%files
%defattr(-,root,root)
%{_bindir}/*
%{_mandir}/man8/*
#%{_mandir}/man1/*
%doc net/%{name}-%{version}/package/COPYING
%doc net/%{name}-%{version}/doc/*

105
matrix.decode.debug.patch Normal file
View File

@ -0,0 +1,105 @@
--- matrixssl/src/sslDecode.c.orig 2007-08-17 14:12:23.000000000 -0400
+++ matrixssl/src/sslDecode.c 2007-08-17 15:56:46.000000000 -0400
@@ -619,6 +619,8 @@
First two bytes are the highest supported major and minor SSL versions
We support only 3.0 (support 3.1 in commercial version)
*/
+ matrixStrDebugMsg("c is %u\n", c);
+ matrixStrDebugMsg("end is %u\n", end);
if (end - c < 2) {
ssl->err = SSL_ALERT_ILLEGAL_PARAMETER;
matrixStrDebugMsg("Invalid ssl header version length\n", NULL);
@@ -626,6 +628,7 @@
}
ssl->reqMajVer = *c; c++;
ssl->reqMinVer = *c; c++;
+ matrixStrDebugMsg("after version number c is %u\n", c);
if (ssl->reqMajVer >= SSL3_MAJ_VER) {
ssl->majVer = ssl->reqMajVer;
ssl->minVer = SSL3_MIN_VER;
@@ -651,7 +654,9 @@
}
memcpy(ssl->sec.clientRandom, c, SSL_HS_RANDOM_SIZE);
c += SSL_HS_RANDOM_SIZE;
+ matrixStrDebugMsg("after random block c is %u\n", c);
ssl->sessionIdLen = *c; c++;
+ matrixStrDebugMsg("before session id c is %u\n", c);
/*
If a session length was specified, the client is asking to
resume a previously established session to speed up the handshake.
@@ -685,6 +690,7 @@
*/
ssl->flags &= ~SSL_FLAGS_RESUMED;
}
+ matrixStrDebugMsg("after session id c is %u\n", c);
/*
Next is the two byte cipher suite list length, network byte order.
It must not be zero, and must be a multiple of two.
@@ -696,6 +702,7 @@
}
suiteLen = *c << 8; c++;
suiteLen += *c; c++;
+ matrixStrDebugMsg("before cipher list c is %u\n", c);
if (suiteLen == 0 || suiteLen & 1) {
ssl->err = SSL_ALERT_ILLEGAL_PARAMETER;
matrixIntDebugMsg("Unable to parse cipher suite list: %d\n",
@@ -732,6 +739,7 @@
}
}
}
+ matrixStrDebugMsg("after cipher suites c is %u\n", c);
/*
If we fell to the default cipher suite, we didn't have
any in common with the client, or the client is being bad
@@ -750,6 +758,7 @@
and value 0 (second byte). There are no compression schemes defined
for SSLv3
*/
+ matrixStrDebugMsg("before compression header length c is %u\n", c);
if (end - c < 1) {
ssl->err = SSL_ALERT_ILLEGAL_PARAMETER;
matrixStrDebugMsg("Invalid compression header length\n", NULL);
@@ -762,6 +771,7 @@
return SSL_ERROR;
}
c += extLen;
+ matrixStrDebugMsg("after comps c is %u\n", c);
if (ssl->reqMinVer == SSL3_MIN_VER && extLen != 1) {
ssl->err = SSL_ALERT_ILLEGAL_PARAMETER;
@@ -773,14 +783,17 @@
to parse here: Two byte length and extension info.
http://www.faqs.org/rfcs/rfc3546.html
*/
- if (ssl->reqMinVer >= TLS_MIN_VER && c != end) {
+ /*if (ssl->reqMinVer >= TLS_MIN_VER && c != end) {*/
+ if (c != end) {
if (end - c < 2) {
ssl->err = SSL_ALERT_ILLEGAL_PARAMETER;
matrixStrDebugMsg("Invalid extension header len\n", NULL);
return SSL_ERROR;
}
+ matrixStrDebugMsg("before extLen c is %u\n", c);
extLen = *c << 8; c++;
extLen += *c; c++;
+ matrixStrDebugMsg("before extensions c is %u\n", c);
if (end - c < extLen) {
ssl->err = SSL_ALERT_ILLEGAL_PARAMETER;
matrixStrDebugMsg("Invalid extension header len\n", NULL);
@@ -793,6 +806,7 @@
just skip over all extensions, ignoring them.
*/
c += extLen;
+ matrixStrDebugMsg("after extensions c is %u\n", c);
}
} else {
/*
@@ -885,6 +899,8 @@
if (c != end) {
ssl->err = SSL_ALERT_ILLEGAL_PARAMETER;
matrixStrDebugMsg("Invalid final client hello length\n", NULL);
+ matrixStrDebugMsg("parsed to %u\n", c);
+ matrixStrDebugMsg("end at %u\n", end);
return SSL_ERROR;
}

BIN
matrixssl-1-8-3-open.tar.gz (Stored with Git LFS) Normal file

Binary file not shown.

64
tcpsvd_keepalive.patch Normal file
View File

@ -0,0 +1,64 @@
diff -rN --unified=2 ipsvd-0.12.1.old/net/ipsvd-0.12.1/src/socket_bind.c ipsvd-0.12.1/net/ipsvd-0.12.1/src/socket_bind.c
--- ipsvd-0.12.1.old/net/ipsvd-0.12.1/src/socket_bind.c 2006-02-04 11:16:48.000000000 -0800
+++ ipsvd-0.12.1/net/ipsvd-0.12.1/src/socket_bind.c 2014-04-23 20:54:30.000000000 -0700
@@ -32,2 +32,8 @@
}
}
+
+int socket_keepalive(int s)
+{
+ int opt = 1;
+ return setsockopt(s,SOL_SOCKET,SO_KEEPALIVE,&opt,sizeof opt);
+}
diff -rN --unified=2 ipsvd-0.12.1.old/net/ipsvd-0.12.1/src/socket.h ipsvd-0.12.1/net/ipsvd-0.12.1/src/socket.h
--- ipsvd-0.12.1.old/net/ipsvd-0.12.1/src/socket.h 2006-02-04 11:16:48.000000000 -0800
+++ ipsvd-0.12.1/net/ipsvd-0.12.1/src/socket.h 2014-04-23 20:54:30.000000000 -0700
@@ -19,4 +19,5 @@
extern void socket_tryreservein(int,int);
+extern int socket_keepalive(int);
#endif
diff -rN --unified=2 ipsvd-0.12.1.old/net/ipsvd-0.12.1/src/tcpsvd.c ipsvd-0.12.1/net/ipsvd-0.12.1/src/tcpsvd.c
--- ipsvd-0.12.1.old/net/ipsvd-0.12.1/src/tcpsvd.c 2006-02-04 11:16:47.000000000 -0800
+++ ipsvd-0.12.1/net/ipsvd-0.12.1/src/tcpsvd.c 2014-04-23 20:54:30.000000000 -0700
@@ -33,7 +33,7 @@
#ifdef SSLSVD
-#define USAGE " [-Ehpv] [-u user] [-c n] [-C n:msg] [-b n] [-l name] [-i dir|-x cdb] [-t sec] [-U ssluser] [-/ root] [-Z cert] [-K key] host port prog"
+#define USAGE " [-Ehkpv] [-u user] [-c n] [-C n:msg] [-b n] [-l name] [-i dir|-x cdb] [-t sec] [-U ssluser] [-/ root] [-Z cert] [-K key] host port prog"
#else
-#define USAGE " [-Ehpv] [-u user] [-c n] [-C n:msg] [-b n] [-l name] [-i dir|-x cdb] [-t sec] host port prog"
+#define USAGE " [-Ehkpv] [-u user] [-c n] [-C n:msg] [-b n] [-l name] [-i dir|-x cdb] [-t sec] host port prog"
#endif
@@ -55,4 +55,5 @@
unsigned long cmax =30;
unsigned long timeout =0;
+unsigned int keepalive =0;
unsigned int ucspi =1;
@@ -242,4 +243,6 @@
if ((fd_move(0, c) == -1) || (fd_copy(1, 0) == -1))
drop("unable to set filedescriptor");
+ if (keepalive)
+ socket_keepalive(0);
sig_uncatch(sig_term);
sig_uncatch(sig_pipe);
@@ -272,8 +275,8 @@
#ifdef SSLSVD
while ((opt =getopt(argc, (const char **)argv,
- "c:C:i:x:u:l:Eb:hpt:vVU:/:Z:K:")) != opteof) {
+ "c:C:i:x:u:l:Eb:hkpt:vVU:/:Z:K:")) != opteof) {
#else
while ((opt =getopt(argc, (const char **)argv,
- "c:C:i:x:u:l:Eb:hpt:vV")) != opteof) {
+ "c:C:i:x:u:l:Eb:hpkt:vV")) != opteof) {
#endif
switch(opt) {
@@ -298,4 +301,5 @@
case 'b': scan_ulong(optarg, &backlog); break;
case 'h': lookuphost =1; break;
+ case 'k': keepalive =1; break;
case 'p': lookuphost =1; paranoid =1; break;
case 't': scan_ulong(optarg, &timeout); break;