Измненеие сборки версии 2.0.0
All checks were successful
Build / Build project (push) Successful in 57s
All checks were successful
Build / Build project (push) Successful in 57s
Исходный код взят с GitHub с последними актуальными коммитами. Добавлена русскоязычная документация. Пути к конфигурационным файлам заданы по умолчанию в /usr/share/defaults/etc/openslp, но могут переопределяться в /etc/openslp.
This commit is contained in:
parent
2ce0a0601c
commit
af925eca6d
18 changed files with 413 additions and 213 deletions
|
@ -1,6 +1,6 @@
|
||||||
diff -up openslp-2.0.0/etc/slpd.all_init.orig openslp-2.0.0/etc/slpd.all_init
|
diff -up a/etc/slpd.all_init.orig b/etc/slpd.all_init
|
||||||
--- openslp-2.0.0/etc/slpd.all_init.orig 2012-11-28 18:07:04.000000000 +0100
|
--- a/etc/slpd.all_init.orig 2012-11-28 18:07:04.000000000 +0100
|
||||||
+++ openslp-2.0.0/etc/slpd.all_init 2017-10-04 12:50:36.672953246 +0200
|
+++ b/etc/slpd.all_init 2017-10-04 12:50:36.672953246 +0200
|
||||||
@@ -1,28 +1,5 @@
|
@@ -1,28 +1,5 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
-#
|
-#
|
|
@ -0,0 +1,32 @@
|
||||||
|
diff --git a/slpd/Makefile.am b/slpd/Makefile.am
|
||||||
|
index c94dd6a..ca0f702 100644
|
||||||
|
--- a/slpd/Makefile.am
|
||||||
|
+++ b/slpd/Makefile.am
|
||||||
|
@@ -93,5 +93,5 @@ noinst_HEADERS = \
|
||||||
|
slpd_index.h
|
||||||
|
|
||||||
|
#if you're building on Irix, replace .la with .a below
|
||||||
|
-slpd_LDADD = ../common/libcommonslpd.la ../libslpattr/libslpattr.la
|
||||||
|
+slpd_LDADD = ../common/libcommonslpd.la ../libslpattr/libslpattr.la -lsystemd
|
||||||
|
|
||||||
|
diff --git a/slpd/slpd_main.c b/slpd/slpd_main.c
|
||||||
|
index 130497e..6359c4b 100644
|
||||||
|
--- a/slpd/slpd_main.c
|
||||||
|
+++ b/slpd/slpd_main.c
|
||||||
|
@@ -58,6 +58,8 @@
|
||||||
|
#include "slp_xid.h"
|
||||||
|
#include "slp_net.h"
|
||||||
|
|
||||||
|
+#include <systemd/sd-daemon.h>
|
||||||
|
+
|
||||||
|
int G_SIGALRM;
|
||||||
|
int G_SIGTERM;
|
||||||
|
int G_SIGHUP;
|
||||||
|
@@ -668,6 +670,7 @@ int main(int argc, char * argv[])
|
||||||
|
|
||||||
|
/* Main loop */
|
||||||
|
SLPDLog("Startup complete entering main run loop ...\n\n");
|
||||||
|
+ sd_notify(0, "READY=1");
|
||||||
|
G_SIGALRM = 0;
|
||||||
|
G_SIGTERM = 0;
|
||||||
|
G_SIGHUP = 0;
|
|
@ -1,6 +1,6 @@
|
||||||
diff -up openslp-2.0.0/common/slp_buffer.c.orig openslp-2.0.0/common/slp_buffer.c
|
diff -up a/common/slp_buffer.c.orig b/common/slp_buffer.c
|
||||||
--- openslp-2.0.0/common/slp_buffer.c.orig 2012-12-11 00:31:53.000000000 +0100
|
--- a/common/slp_buffer.c.orig 2012-12-11 00:31:53.000000000 +0100
|
||||||
+++ openslp-2.0.0/common/slp_buffer.c 2019-12-09 10:39:16.422058793 +0100
|
+++ b/common/slp_buffer.c 2019-12-09 10:39:16.422058793 +0100
|
||||||
@@ -30,6 +30,13 @@
|
@@ -30,6 +30,13 @@
|
||||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*-------------------------------------------------------------------------*/
|
*-------------------------------------------------------------------------*/
|
||||||
|
@ -36,9 +36,9 @@ diff -up openslp-2.0.0/common/slp_buffer.c.orig openslp-2.0.0/common/slp_buffer.
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
/*=========================================================================*/
|
/*=========================================================================*/
|
||||||
diff -up openslp-2.0.0/common/slp_buffer.h.orig openslp-2.0.0/common/slp_buffer.h
|
diff -up a/common/slp_buffer.h.orig b/common/slp_buffer.h
|
||||||
--- openslp-2.0.0/common/slp_buffer.h.orig 2012-11-28 18:07:04.000000000 +0100
|
--- a/common/slp_buffer.h.orig 2012-11-28 18:07:04.000000000 +0100
|
||||||
+++ openslp-2.0.0/common/slp_buffer.h 2019-12-09 10:39:16.422058793 +0100
|
+++ b/common/slp_buffer.h 2019-12-09 10:39:16.422058793 +0100
|
||||||
@@ -30,6 +30,13 @@
|
@@ -30,6 +30,13 @@
|
||||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*-------------------------------------------------------------------------*/
|
*-------------------------------------------------------------------------*/
|
||||||
|
@ -62,9 +62,10 @@ diff -up openslp-2.0.0/common/slp_buffer.h.orig openslp-2.0.0/common/slp_buffer.
|
||||||
/*! @} */
|
/*! @} */
|
||||||
|
|
||||||
#endif /* SLP_BUFFER_H_INCLUDED */
|
#endif /* SLP_BUFFER_H_INCLUDED */
|
||||||
diff -up openslp-2.0.0/slpd/slpd_process.c.orig openslp-2.0.0/slpd/slpd_process.c
|
diff --git a/slpd/slpd_process.c b/slpd/slpd_process.c
|
||||||
--- openslp-2.0.0/slpd/slpd_process.c.orig 2019-12-09 10:39:16.420058789 +0100
|
index 0698ab8..935f6c9 100644
|
||||||
+++ openslp-2.0.0/slpd/slpd_process.c 2019-12-09 10:39:16.422058793 +0100
|
--- a/slpd/slpd_process.c
|
||||||
|
+++ b/slpd/slpd_process.c
|
||||||
@@ -30,6 +30,13 @@
|
@@ -30,6 +30,13 @@
|
||||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*-------------------------------------------------------------------------*/
|
*-------------------------------------------------------------------------*/
|
||||||
|
@ -142,11 +143,17 @@ diff -up openslp-2.0.0/slpd/slpd_process.c.orig openslp-2.0.0/slpd/slpd_process.
|
||||||
|
|
||||||
/* url-entry auths */
|
/* url-entry auths */
|
||||||
*result->curpos++ = 0;
|
*result->curpos++ = 0;
|
||||||
@@ -630,8 +661,18 @@ RESPOND:
|
@@ -628,14 +659,18 @@ RESPOND:
|
||||||
|
|
||||||
/* TRICKY: Fix up the lifetime. */
|
/* TRICKY: Fix up the lifetime. */
|
||||||
TO_UINT16(urlentry->opaque + 1, urlentry->lifetime);
|
TO_UINT16(urlentry->opaque + 1, urlentry->lifetime);
|
||||||
- memcpy(result->curpos, urlentry->opaque, urlentry->opaquelen);
|
- memcpy(result->curpos, urlentry->opaque, urlentry->opaquelen);
|
||||||
|
-
|
||||||
|
- /* TRICKY: Fix up the result authblock count. */
|
||||||
|
- if (urlentry->authcount)
|
||||||
|
- result->curpos[1 + 2 + 2 + urlentry->urllen] = (uint8_t)urlentry->authcount;
|
||||||
|
- /* 1 reserved + 2 lifetime + 2 url length */
|
||||||
|
-
|
||||||
- result->curpos += urlentry->opaquelen;
|
- result->curpos += urlentry->opaquelen;
|
||||||
+ if (RemainingBufferSpace(result) >= urlentry->opaquelen)
|
+ if (RemainingBufferSpace(result) >= urlentry->opaquelen)
|
||||||
+ {
|
+ {
|
42
files/man/en/slpd.8
Normal file
42
files/man/en/slpd.8
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
.TH SLPD "8" "March 2025" "slpd 2.0.0" "System Administration Utilities"
|
||||||
|
.SH NAME
|
||||||
|
slpd \- SLP daemon
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.B slpd
|
||||||
|
[\-d] [\-c configfile] [\-l logfile] [\-r registrationfile] [\-s spifile] [\-p pidfile] [\-v version]
|
||||||
|
.SH OPTIONS
|
||||||
|
.IP
|
||||||
|
.TP
|
||||||
|
.BI \-d\fR
|
||||||
|
Don't detach from the controlling tty.
|
||||||
|
.TP
|
||||||
|
.BI \-c\ configfile \fR
|
||||||
|
Use
|
||||||
|
.IR configfile
|
||||||
|
as the file slpd reads to obtain configuration information, rather than the default,
|
||||||
|
.IR /usr/share/defaults/etc/openslp/slp.conf
|
||||||
|
or
|
||||||
|
.IR /etc/openslp/slp.conf .
|
||||||
|
.TP
|
||||||
|
.BI \-l\ logfile \fR
|
||||||
|
Use
|
||||||
|
.IR logfile
|
||||||
|
as the file that slpd reads to write log messages, rather than the default,
|
||||||
|
.IR /var/log/slpd.log .
|
||||||
|
.TP
|
||||||
|
.BI \-l\ registrationfile \fR
|
||||||
|
Use
|
||||||
|
.IR registrationfile
|
||||||
|
as the file that slpd reads to obtain static registrations, rather than the default,
|
||||||
|
.IR /usr/share/defaults/etc/openslp/slp.reg
|
||||||
|
or
|
||||||
|
.IR /etc/openslp/slp.reg .
|
||||||
|
.TP
|
||||||
|
.BI \-l\ pidfile \fR
|
||||||
|
Use
|
||||||
|
.IR pidfile
|
||||||
|
as the file that holds the slpd process id, rather than the default,
|
||||||
|
.IR /var/run/slpd.pid .
|
||||||
|
.TP
|
||||||
|
.BI \-v\fR
|
||||||
|
Show slpd version and compile options.
|
63
files/man/en/slptool.1
Normal file
63
files/man/en/slptool.1
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
.TH SLPTOOL "1" "May 2013" "slptool 2.0.beta2" "User Commands"
|
||||||
|
.SH NAME
|
||||||
|
slptool \- SLP command line tool
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.B slptool
|
||||||
|
[\fIoptions\fR] \fIcommand-and-arguments\fR
|
||||||
|
.SH OPTIONS
|
||||||
|
.IP
|
||||||
|
options may be:
|
||||||
|
.HP
|
||||||
|
\fB\-v\fR (or \fB\-\-version\fR) displays the versions of slptool and OpenSLP.
|
||||||
|
.HP
|
||||||
|
\fB\-s\fR (or \fB\-\-scope\fR) followed by a comma\-separated list of scopes.
|
||||||
|
.HP
|
||||||
|
\fB\-l\fR (or \fB\-\-language\fR) followed by a language tag.
|
||||||
|
.HP
|
||||||
|
\fB\-t\fR (or \fB\-\-time\fR) followed by a lifetime tag.
|
||||||
|
.HP
|
||||||
|
\fB\-i\fR (or \fB\-\-interfaces\fR) followed by a comma\-separated list of interfaces.
|
||||||
|
.HP
|
||||||
|
\fB\-u\fR (or \fB\-\-unicastifc\fR) followed by a single interface.
|
||||||
|
.IP
|
||||||
|
command\-and\-arguments may be:
|
||||||
|
.IP
|
||||||
|
.HP
|
||||||
|
findsrvs service\-type [filter]
|
||||||
|
.HP
|
||||||
|
findattrs url [attrids]
|
||||||
|
.HP
|
||||||
|
findsrvtypes [authority]
|
||||||
|
.HP
|
||||||
|
findscopes
|
||||||
|
.HP
|
||||||
|
register url [attrs]
|
||||||
|
.HP
|
||||||
|
deregister url
|
||||||
|
.HP
|
||||||
|
getproperty propertyname
|
||||||
|
.SH EXAMPLES
|
||||||
|
.IP
|
||||||
|
.HP
|
||||||
|
slptool register service:myserv.x://myhost.com "(attr1=val1),(attr2=val2)"
|
||||||
|
.HP
|
||||||
|
slptool findsrvs service:myserv.x
|
||||||
|
.HP
|
||||||
|
slptool findsrvs service:myserv.x "(attr1=val1)"
|
||||||
|
.HP
|
||||||
|
slptool \fB\-i\fR 10.77.13.240,192.168.250.240 findsrvs service:myserv.x
|
||||||
|
.HP
|
||||||
|
slptool \fB\-u\fR 10.77.13.237 findsrvs service:myserv.x "(attr1=val1)"
|
||||||
|
.HP
|
||||||
|
slptool findattrs service:myserv.x://myhost.com
|
||||||
|
.HP
|
||||||
|
slptool findattrs service:myserv.x://myhost.com attr1
|
||||||
|
.HP
|
||||||
|
slptool \fB\-i\fR 10.77.13.243 findattrs service:myserv.x://myhost.com attr1
|
||||||
|
.HP
|
||||||
|
slptool \fB\-u\fR 10.77.13.237 findattrs service:myserv.x://myhost.com attr1
|
||||||
|
.HP
|
||||||
|
slptool deregister service:myserv.x://myhost.com
|
||||||
|
.HP
|
||||||
|
slptool getproperty net.slp.useScopes
|
||||||
|
.PP
|
42
files/man/ru/slpd.8
Normal file
42
files/man/ru/slpd.8
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
.TH SLPD "8" "Май 2025" "slpd 2.0" "Утилиты системного администрирования"
|
||||||
|
.SH ИМЯ
|
||||||
|
slpd \- демон SLP
|
||||||
|
.SH СИНТАКСИС
|
||||||
|
.B slpd
|
||||||
|
[\-d] [\-c файл_конфигурации] [\-l файл_журнала] [\-r файл_регистрации] [\-s файл_spi] [\-p файл_pid] [\-v версия]
|
||||||
|
.SH ОПЦИИ
|
||||||
|
.IP
|
||||||
|
.TP
|
||||||
|
.BI \-d\fR
|
||||||
|
Не отключаться от управляющего терминала.
|
||||||
|
.TP
|
||||||
|
.BI \-c\ файл_конфигурации \fR
|
||||||
|
Использовать
|
||||||
|
.IR файл_конфигурации
|
||||||
|
в качестве файла, который slpd читает для получения конфигурационной информации, вместо стандартного
|
||||||
|
.IR /usr/share/defaults/etc/openslp/slp.conf
|
||||||
|
или
|
||||||
|
.IR /etc/openslp/slp.conf .
|
||||||
|
.TP
|
||||||
|
.BI \-l\ файл_журнала \fR
|
||||||
|
Использовать
|
||||||
|
.IR файл_журнала
|
||||||
|
в качестве файла, в который slpd записывает сообщения журнала, вместо стандартного
|
||||||
|
.IR /var/log/slpd.log .
|
||||||
|
.TP
|
||||||
|
.BI \-r\ файл_регистрации \fR
|
||||||
|
Использовать
|
||||||
|
.IR файл_регистрации
|
||||||
|
в качестве файла, который slpd читает для получения статических регистраций, вместо стандартного
|
||||||
|
.IR /usr/share/defaults/etc/openslp/slp.reg
|
||||||
|
или
|
||||||
|
.IR /etc/openslp/slp.reg .
|
||||||
|
.TP
|
||||||
|
.BI \-p\ файл_pid \fR
|
||||||
|
Использовать
|
||||||
|
.IR файл_pid
|
||||||
|
в качестве файла, содержащего идентификатор процесса slpd, вместо стандартного
|
||||||
|
.IR /var/run/slpd.pid .
|
||||||
|
.TP
|
||||||
|
.BI \-v\fR
|
||||||
|
Показать версию slpd и параметры компиляции.
|
63
files/man/ru/slptool.1
Normal file
63
files/man/ru/slptool.1
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
.TH SLPTOOL "1" "Май 2025" "slptool 2.0" "Команды пользователя"
|
||||||
|
.SH ИМЯ
|
||||||
|
slptool \- командный инструмент SLP
|
||||||
|
.SH СИНТАКСИС
|
||||||
|
.B slptool
|
||||||
|
[\fIопции\fR] \fIкоманда-и-аргументы\fR
|
||||||
|
.SH ОПЦИИ
|
||||||
|
.IP
|
||||||
|
Опции могут быть:
|
||||||
|
.HP
|
||||||
|
\fB\-v\fR (или \fB\-\-version\fR) отображает версии slptool и OpenSLP.
|
||||||
|
.HP
|
||||||
|
\fB\-s\fR (или \fB\-\-scope\fR) с последующим списком областей, разделённых запятыми.
|
||||||
|
.HP
|
||||||
|
\fB\-l\fR (или \fB\-\-language\fR) с последующим тегом языка.
|
||||||
|
.HP
|
||||||
|
\fB\-t\fR (или \fB\-\-time\fR) с последующим тегом времени жизни.
|
||||||
|
.HP
|
||||||
|
\fB\-i\fR (или \fB\-\-interfaces\fR) с последующим списком интерфейсов, разделённых запятыми.
|
||||||
|
.HP
|
||||||
|
\fB\-u\fR (или \fB\-\-unicastifc\fR) с последующим одиночным интерфейсом.
|
||||||
|
.IP
|
||||||
|
Команда-и-аргументы могут быть:
|
||||||
|
.IP
|
||||||
|
.HP
|
||||||
|
findsrvs тип_службы [фильтр]
|
||||||
|
.HP
|
||||||
|
findattrs url [идентификаторы_атрибутов]
|
||||||
|
.HP
|
||||||
|
findsrvtypes [авторизация]
|
||||||
|
.HP
|
||||||
|
findscopes
|
||||||
|
.HP
|
||||||
|
register url [атрибуты]
|
||||||
|
.HP
|
||||||
|
deregister url
|
||||||
|
.HP
|
||||||
|
getproperty имя_свойства
|
||||||
|
.SH ПРИМЕРЫ
|
||||||
|
.IP
|
||||||
|
.HP
|
||||||
|
slptool register service:myserv.x://myhost.com "(attr1=val1),(attr2=val2)"
|
||||||
|
.HP
|
||||||
|
slptool findsrvs service:myserv.x
|
||||||
|
.HP
|
||||||
|
slptool findsrvs service:myserv.x "(attr1=val1)"
|
||||||
|
.HP
|
||||||
|
slptool \fB\-i\fR 10.77.13.240,192.168.250.240 findsrvs service:myserv.x
|
||||||
|
.HP
|
||||||
|
slptool \fB\-u\fR 10.77.13.237 findsrvs service:myserv.x "(attr1=val1)"
|
||||||
|
.HP
|
||||||
|
slptool findattrs service:myserv.x://myhost.com
|
||||||
|
.HP
|
||||||
|
slptool findattrs service:myserv.x://myhost.com attr1
|
||||||
|
.HP
|
||||||
|
slptool \fB\-i\fR 10.77.13.243 findattrs service:myserv.x://myhost.com attr1
|
||||||
|
.HP
|
||||||
|
slptool \fB\-u\fR 10.77.13.237 findattrs service:myserv.x://myhost.com attr1
|
||||||
|
.HP
|
||||||
|
slptool deregister service:myserv.x://myhost.com
|
||||||
|
.HP
|
||||||
|
slptool getproperty net.slp.useScopes
|
||||||
|
.PP
|
|
@ -1,90 +0,0 @@
|
||||||
diff -up openslp-2.0.0/common/slp_compare.c.orig openslp-2.0.0/common/slp_compare.c
|
|
||||||
--- openslp-2.0.0/common/slp_compare.c.orig 2012-12-12 20:12:43.000000000 +0100
|
|
||||||
+++ openslp-2.0.0/common/slp_compare.c 2017-03-14 10:51:36.480675991 +0100
|
|
||||||
@@ -194,7 +194,8 @@ static int SLPUnescapeInPlace(size_t len
|
|
||||||
* @return The new (shorter) length of @p str.
|
|
||||||
*
|
|
||||||
* @note This routine assumes that leading and trailing white space have
|
|
||||||
- * already been removed from @p str.
|
|
||||||
+ * already been removed from @p str. It also assumes that @p str may
|
|
||||||
+ * not be null-terminated.
|
|
||||||
*/
|
|
||||||
static int SLPFoldWhiteSpace(size_t len, char * str)
|
|
||||||
{
|
|
||||||
@@ -203,11 +204,11 @@ static int SLPFoldWhiteSpace(size_t len,
|
|
||||||
{
|
|
||||||
if (isspace(*p))
|
|
||||||
{
|
|
||||||
- char * ws2p = ++p; /* Point ws2p to the second ws char. */
|
|
||||||
- while (isspace(*p)) /* Scan till we hit a non-ws char. */
|
|
||||||
+ char * ws2p = ++p; /* Point ws2p to the second ws char. */
|
|
||||||
+ while (p < ep && isspace(*p)) /* Scan till we hit a non-ws char. */
|
|
||||||
p++;
|
|
||||||
- len -= p - ws2p; /* Reduce the length by extra ws. */
|
|
||||||
- memmove(ws2p, p, ep - p); /* Overwrite the extra white space. */
|
|
||||||
+ len -= p - ws2p; /* Reduce the length by extra ws. */
|
|
||||||
+ memmove(ws2p, p, ep - p); /* Overwrite the extra white space. */
|
|
||||||
}
|
|
||||||
p++;
|
|
||||||
}
|
|
||||||
@@ -821,6 +822,50 @@ int SLPCheckAttributeListSyntax(const ch
|
|
||||||
|
|
||||||
#ifdef SLP_COMPARE_TEST
|
|
||||||
|
|
||||||
+/* Test boundary conditions of SLPFoldWhiteSpace. */
|
|
||||||
+static int test_SLPFoldWhiteSpace(void)
|
|
||||||
+{
|
|
||||||
+ static char test_str0[] = " ";
|
|
||||||
+ static char test_str1[] = "Blah";
|
|
||||||
+ static char test_str3[] = "Blah blah";
|
|
||||||
+ static char test_str4[] = "Blah blah";
|
|
||||||
+ static char test_str5[] = "Blah blah blah";
|
|
||||||
+ static char test_str8[] = " Blah blah";
|
|
||||||
+ static char test_str9[] = " Blah blah";
|
|
||||||
+ static char test_strC[] = "Blah blah ";
|
|
||||||
+ static char test_strD[] = "Blah blah xxxx";
|
|
||||||
+
|
|
||||||
+ static char * test_strs[] =
|
|
||||||
+ {
|
|
||||||
+ test_str0, test_str0, test_str0, test_str1, test_strC,
|
|
||||||
+ test_str3, test_str4, test_str5, test_strC, test_strC,
|
|
||||||
+ test_str8, test_str9, test_strC, test_strD,
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ static int test_lens[] =
|
|
||||||
+ {
|
|
||||||
+ 0, 1, 2, 4, 9, 10, 11, 15, 10, 11, 10, 11, 11, 11,
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ static int test_fins[] =
|
|
||||||
+ {
|
|
||||||
+ 0, 1, 1, 4, 9, 9, 9, 14, 10, 10, 10, 10, 10, 10,
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+#define MAX_BUFSZ 32
|
|
||||||
+
|
|
||||||
+ int i;
|
|
||||||
+ for (i = 0; i < sizeof(test_strs) / sizeof(*test_strs); ++i)
|
|
||||||
+ {
|
|
||||||
+ char test_buf[MAX_BUFSZ];
|
|
||||||
+ memmove(test_buf, test_strs[i], test_lens[i]);
|
|
||||||
+ int len = SLPFoldWhiteSpace(test_lens[i], test_buf);
|
|
||||||
+ if (len != test_fins[i])
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/* ---------------- Test main for the slp_compare.c module ----------------
|
|
||||||
*
|
|
||||||
* Compile with:
|
|
||||||
@@ -840,6 +885,9 @@ int main(void)
|
|
||||||
|
|
||||||
int count;
|
|
||||||
|
|
||||||
+ if (test_SLPFoldWhiteSpace() != 0)
|
|
||||||
+ return -1;
|
|
||||||
+
|
|
||||||
/* *** SLPContainsStringList ***
|
|
||||||
*/
|
|
||||||
count = SLPContainsStringList(sizeof lst1 - 1, lst1, sizeof str1 - 1, str1);
|
|
|
@ -1,19 +0,0 @@
|
||||||
diff -up openslp-2.0.0/slpd/slpd_process.c.orig openslp-2.0.0/slpd/slpd_process.c
|
|
||||||
--- openslp-2.0.0/slpd/slpd_process.c.orig 2018-05-09 13:08:06.185104375 +0200
|
|
||||||
+++ openslp-2.0.0/slpd/slpd_process.c 2018-05-09 13:07:21.017095089 +0200
|
|
||||||
@@ -462,6 +462,15 @@ static int ProcessSrvRqst(SLPMessage * m
|
|
||||||
message->body.srvrqst.srvtype, 23, SLP_DA_SERVICE_TYPE) == 0)
|
|
||||||
{
|
|
||||||
errorcode = ProcessDASrvRqst(message, sendbuf, errorcode);
|
|
||||||
+
|
|
||||||
+ if (result != *sendbuf)
|
|
||||||
+ {
|
|
||||||
+ // The pointer stored at *sendbuf can be modified by a realloc
|
|
||||||
+ // operation in ProcessDASrvRqst(). Fix up the local copy of
|
|
||||||
+ // that pointer if necessary.
|
|
||||||
+ result = *sendbuf;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
if (errorcode == 0)
|
|
||||||
{
|
|
||||||
/* Since we have an errorcode of 0, we were successful,
|
|
|
@ -1,39 +0,0 @@
|
||||||
exporting patch:
|
|
||||||
# HG changeset patch
|
|
||||||
# User Stephen Gallagher <sgallagh@redhat.com>
|
|
||||||
# Date 1394805577 14400
|
|
||||||
# Fri Mar 14 09:59:37 2014 -0400
|
|
||||||
# Node ID ff9067316db43f8e1204c0a7a743574c9f94feb5
|
|
||||||
# Parent 598821da69f2f26b1e76447bfecf139a4210ad48
|
|
||||||
Notify systemd of start-up completion
|
|
||||||
|
|
||||||
diff -r 598821da69f2 -r ff9067316db4 openslp/slpd/Makefile.am
|
|
||||||
--- a/openslp/slpd/Makefile.am Sat Jun 08 15:14:45 2013 -0600
|
|
||||||
+++ b/openslp/slpd/Makefile.am Fri Mar 14 09:59:37 2014 -0400
|
|
||||||
@@ -93,5 +93,5 @@
|
|
||||||
slpd_index.h
|
|
||||||
|
|
||||||
#if you're building on Irix, replace .la with .a below
|
|
||||||
-slpd_LDADD = ../common/libcommonslpd.la ../libslpattr/libslpattr.la
|
|
||||||
+slpd_LDADD = ../common/libcommonslpd.la ../libslpattr/libslpattr.la -lsystemd
|
|
||||||
|
|
||||||
diff -r 598821da69f2 -r ff9067316db4 openslp/slpd/slpd_main.c
|
|
||||||
--- a/openslp/slpd/slpd_main.c Sat Jun 08 15:14:45 2013 -0600
|
|
||||||
+++ b/openslp/slpd/slpd_main.c Fri Mar 14 09:59:37 2014 -0400
|
|
||||||
@@ -58,6 +58,8 @@
|
|
||||||
#include "slp_xid.h"
|
|
||||||
#include "slp_net.h"
|
|
||||||
|
|
||||||
+#include <systemd/sd-daemon.h>
|
|
||||||
+
|
|
||||||
int G_SIGALRM;
|
|
||||||
int G_SIGTERM;
|
|
||||||
int G_SIGHUP;
|
|
||||||
@@ -666,6 +668,7 @@
|
|
||||||
|
|
||||||
/* Main loop */
|
|
||||||
SLPDLog("Startup complete entering main run loop ...\n\n");
|
|
||||||
+ sd_notify(0, "READY=1");
|
|
||||||
G_SIGALRM = 0;
|
|
||||||
G_SIGTERM = 0;
|
|
||||||
G_SIGHUP = 0;
|
|
|
@ -1,12 +0,0 @@
|
||||||
diff -up openslp-2.0.0/common/slp_xmalloc.c.orig openslp-2.0.0/common/slp_xmalloc.c
|
|
||||||
--- openslp-2.0.0/common/slp_xmalloc.c.orig 2012-12-07 01:52:08.000000000 +0100
|
|
||||||
+++ openslp-2.0.0/common/slp_xmalloc.c 2016-05-23 12:58:57.953532979 +0200
|
|
||||||
@@ -203,6 +203,8 @@ void * _xrealloc(const char * file, int
|
|
||||||
if (x->size != size)
|
|
||||||
{
|
|
||||||
newptr = _xmalloc(file, line, size);
|
|
||||||
+ if (newptr == 0)
|
|
||||||
+ return 0;
|
|
||||||
memcpy(newptr, ptr, x->size);
|
|
||||||
_xfree(file, line, x);
|
|
||||||
}
|
|
|
@ -1,28 +0,0 @@
|
||||||
diff -up openslp-2.0.0/common/slp_crypto.c.orig openslp-2.0.0/common/slp_crypto.c
|
|
||||||
--- openslp-2.0.0/common/slp_crypto.c.orig 2012-12-07 21:13:28.000000000 +0100
|
|
||||||
+++ openslp-2.0.0/common/slp_crypto.c 2017-10-04 09:38:48.469999889 +0200
|
|
||||||
@@ -88,11 +88,24 @@ SLPCryptoDSAKey * SLPCryptoDSAKeyDup(SLP
|
|
||||||
result = DSA_new();
|
|
||||||
if (result)
|
|
||||||
{
|
|
||||||
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
|
|
||||||
+ const BIGNUM *p, *q, *g;
|
|
||||||
+ const BIGNUM *priv_key, *pub_key;
|
|
||||||
+
|
|
||||||
+ DSA_get0_pqg(dsa, &p, &q, &g);
|
|
||||||
+ DSA_get0_key(dsa, &pub_key, &priv_key);
|
|
||||||
+
|
|
||||||
+ /* would be nice to check return values, but
|
|
||||||
+ * original code for OpenSSL < 1.1 didn't do that either... */
|
|
||||||
+ DSA_set0_pqg(result, BN_dup(p), BN_dup(q), BN_dup(g));
|
|
||||||
+ DSA_set0_key(result, BN_dup(pub_key), BN_dup(priv_key));
|
|
||||||
+#else
|
|
||||||
result->p = BN_dup(dsa->p);
|
|
||||||
result->q = BN_dup(dsa->q);
|
|
||||||
result->g = BN_dup(dsa->g);
|
|
||||||
result->priv_key = BN_dup(dsa->priv_key);
|
|
||||||
result->pub_key = BN_dup(dsa->pub_key);
|
|
||||||
+#endif
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
|
@ -4,7 +4,7 @@ After=network.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=forking
|
Type=forking
|
||||||
ExecStart=/usr/bin/slpd -c /etc/openslp/slp.conf -r /etc/openslp/slp.reg -s /etc/openslp/slp.spi
|
ExecStart=/usr/bin/slpd
|
||||||
ExecReload=/bin/kill -HUP $MAINPID
|
ExecReload=/bin/kill -HUP $MAINPID
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
|
|
4
files/series
Normal file
4
files/series
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
default_patches/0001-openslp-2.0.0-multicast-set.patch
|
||||||
|
default_patches/0002-openslp-2.0.0-notify-systemd-of-start-up.patch
|
||||||
|
default_patches/0003-openslp-2.0.0-cve-2019-5544.patch
|
||||||
|
solus_patches/0004-stateless.patch
|
BIN
files/slpd.8.gz
BIN
files/slpd.8.gz
Binary file not shown.
Binary file not shown.
115
files/solus_patches/0004-stateless.patch
Normal file
115
files/solus_patches/0004-stateless.patch
Normal file
|
@ -0,0 +1,115 @@
|
||||||
|
From: Alexander Zhirov <azhirov1991@gmail.com>
|
||||||
|
Date: Tue, 06 May 2025 19:15:37 +0300
|
||||||
|
Subject: The default paths to the configuration files have been changed.
|
||||||
|
|
||||||
|
diff --git a/common/slp_types.h b/common/slp_types.h
|
||||||
|
index 9714a50..478155b 100644
|
||||||
|
--- a/common/slp_types.h
|
||||||
|
+++ b/common/slp_types.h
|
||||||
|
@@ -231,8 +231,11 @@ typedef unsigned long uint32_t;
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# define SLPD_CONFFILE ETCDIR "/slp.conf"
|
||||||
|
+# define SLPD_CONFFILE_STATELESS "/usr/share/defaults/etc/openslp/slp.conf"
|
||||||
|
# define SLPD_REGFILE ETCDIR "/slp.reg"
|
||||||
|
+# define SLPD_REGFILE_STATELESS "/usr/share/defaults/etc/openslp/slp.reg"
|
||||||
|
# define SLPD_SPIFILE ETCDIR "/slp.spi"
|
||||||
|
+# define SLPD_SPIFILE_STATELESS "/usr/share/defaults/etc/openslp/slp.spi"
|
||||||
|
# define SLPD_LOGFILE VARDIR "/log/slpd.log"
|
||||||
|
# define SLPD_PIDFILE VARDIR "/run/slpd.pid"
|
||||||
|
|
||||||
|
diff --git a/libslp/libslp_handle.c b/libslp/libslp_handle.c
|
||||||
|
index b938345..d75314a 100644
|
||||||
|
--- a/libslp/libslp_handle.c
|
||||||
|
+++ b/libslp/libslp_handle.c
|
||||||
|
@@ -65,7 +65,11 @@ static SLPError InitUserAgentLibrary(void)
|
||||||
|
/* Initialize the system if this is the first handle opened. */
|
||||||
|
if (SLPAtomicInc(&s_OpenSLPHandleCount) == 1)
|
||||||
|
{
|
||||||
|
- if (LIBSLPPropertyInit(LIBSLP_CONFFILE) != 0)
|
||||||
|
+ const char *slp_conf_file_name = LIBSLP_CONFFILE;
|
||||||
|
+ if (access(slp_conf_file_name, R_OK) != 0)
|
||||||
|
+ slp_conf_file_name = SLPD_CONFFILE_STATELESS;
|
||||||
|
+
|
||||||
|
+ if (LIBSLPPropertyInit(slp_conf_file_name) != 0)
|
||||||
|
{
|
||||||
|
SLPAtomicDec(&s_OpenSLPHandleCount);
|
||||||
|
return SLP_MEMORY_ALLOC_FAILED;
|
||||||
|
@@ -221,7 +225,11 @@ SLPEXP SLPError SLPAPI SLPOpen(
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef ENABLE_SLPv2_SECURITY
|
||||||
|
- handle->hspi = SLPSpiOpen(LIBSLP_SPIFILE, 0);
|
||||||
|
+ const char *slp_spi_file_name = LIBSLP_SPIFILE;
|
||||||
|
+ if (access(slp_spi_file_name, R_OK) != 0)
|
||||||
|
+ slp_spi_file_name = SLPD_SPIFILE_STATELESS;
|
||||||
|
+
|
||||||
|
+ handle->hspi = SLPSpiOpen(slp_spi_file_name, 0);
|
||||||
|
if (!handle->hspi)
|
||||||
|
{
|
||||||
|
xfree(handle->langtag);
|
||||||
|
diff --git a/libslp/libslp_property.c b/libslp/libslp_property.c
|
||||||
|
index f645b93..913d39b 100644
|
||||||
|
--- a/libslp/libslp_property.c
|
||||||
|
+++ b/libslp/libslp_property.c
|
||||||
|
@@ -115,8 +115,12 @@ SLPEXP const char * SLPAPI SLPGetProperty(const char * pcName)
|
||||||
|
if (!pcName || !*pcName)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
+ const char *slp_conf_file_name = LIBSLP_CONFFILE;
|
||||||
|
+ if (access(slp_conf_file_name, R_OK) != 0)
|
||||||
|
+ slp_conf_file_name = SLPD_CONFFILE_STATELESS;
|
||||||
|
+
|
||||||
|
/* This wrapper ensures that we only get initialized once */
|
||||||
|
- if (!s_PropInited && LIBSLPPropertyInit(LIBSLP_CONFFILE) != 0)
|
||||||
|
+ if (!s_PropInited && LIBSLPPropertyInit(slp_conf_file_name) != 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
/* At this point, the caller may no longer call SLPSetProperty because
|
||||||
|
@@ -157,8 +161,12 @@ SLPEXP void SLPAPI SLPSetProperty(const char * pcName, const char * pcValue)
|
||||||
|
if (!pcName || !*pcName)
|
||||||
|
return;
|
||||||
|
|
||||||
|
+ const char *slp_conf_file_name = LIBSLP_CONFFILE;
|
||||||
|
+ if (access(slp_conf_file_name, R_OK) != 0)
|
||||||
|
+ slp_conf_file_name = SLPD_CONFFILE_STATELESS;
|
||||||
|
+
|
||||||
|
/* This wrapper ensures that we only get initialized once */
|
||||||
|
- if (!s_PropInited && LIBSLPPropertyInit(LIBSLP_CONFFILE) != 0)
|
||||||
|
+ if (!s_PropInited && LIBSLPPropertyInit(slp_conf_file_name) != 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (s_UserAllowedToSet)
|
||||||
|
diff --git a/slpd/slpd_cmdline.c b/slpd/slpd_cmdline.c
|
||||||
|
index 177833e..7f47436 100644
|
||||||
|
--- a/slpd/slpd_cmdline.c
|
||||||
|
+++ b/slpd/slpd_cmdline.c
|
||||||
|
@@ -85,14 +85,25 @@ int SLPDParseCommandLine(int argc, char * argv[])
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
+ const char *slp_spi_file_name = SLPD_SPIFILE;
|
||||||
|
+ const char *slp_reg_file_name = SLPD_REGFILE;
|
||||||
|
+ const char *slp_conf_file_name = SLPD_CONFFILE;
|
||||||
|
+
|
||||||
|
+ if (access(slp_spi_file_name, R_OK) != 0)
|
||||||
|
+ slp_spi_file_name = SLPD_SPIFILE_STATELESS;
|
||||||
|
+ if (access(slp_reg_file_name, R_OK) != 0)
|
||||||
|
+ slp_reg_file_name = SLPD_REGFILE_STATELESS;
|
||||||
|
+ if (access(slp_conf_file_name, R_OK) != 0)
|
||||||
|
+ slp_conf_file_name = SLPD_CONFFILE_STATELESS;
|
||||||
|
+
|
||||||
|
/* Set defaults */
|
||||||
|
memset(&G_SlpdCommandLine, 0, sizeof(SLPDCommandLine));
|
||||||
|
- strnenv(G_SlpdCommandLine.cfgfile, SLPD_CONFFILE, sizeof(G_SlpdCommandLine.cfgfile));
|
||||||
|
+ strnenv(G_SlpdCommandLine.cfgfile, slp_conf_file_name, sizeof(G_SlpdCommandLine.cfgfile));
|
||||||
|
strnenv(G_SlpdCommandLine.logfile, SLPD_LOGFILE, sizeof(G_SlpdCommandLine.logfile));
|
||||||
|
- strnenv(G_SlpdCommandLine.regfile, SLPD_REGFILE, sizeof(G_SlpdCommandLine.regfile));
|
||||||
|
+ strnenv(G_SlpdCommandLine.regfile, slp_reg_file_name, sizeof(G_SlpdCommandLine.regfile));
|
||||||
|
strnenv(G_SlpdCommandLine.pidfile, SLPD_PIDFILE, sizeof(G_SlpdCommandLine.pidfile));
|
||||||
|
#ifdef ENABLE_SLPv2_SECURITY
|
||||||
|
- strnenv(G_SlpdCommandLine.spifile, SLPD_SPIFILE, sizeof(G_SlpdCommandLine.spifile));
|
||||||
|
+ strnenv(G_SlpdCommandLine.spifile, slp_spi_file_name, sizeof(G_SlpdCommandLine.spifile));
|
||||||
|
#endif
|
||||||
|
G_SlpdCommandLine.action = -1;
|
||||||
|
|
42
package.yml
42
package.yml
|
@ -1,8 +1,11 @@
|
||||||
name : openslp
|
name : openslp
|
||||||
version : 2.0.0
|
version : 2.0.0
|
||||||
release : 1
|
release : 2
|
||||||
source :
|
source :
|
||||||
- http://downloads.sf.net/openslp/openslp-2.0.0.tar.gz : 924337a2a8e5be043ebaea2a78365c7427ac6e9cee24610a0780808b2ba7579b
|
# The official repository has moved from SourceForge to GitHub.
|
||||||
|
# No releases have been made since 2013, but there is an abundance of commits with fixes.
|
||||||
|
# Therefore, the git source was used as the source code.
|
||||||
|
- git|https://github.com/openslp-org/openslp.git : f8dd97d68bdcf4af58d973d9eb97f4cddd149fe7
|
||||||
homepage : http://www.openslp.org
|
homepage : http://www.openslp.org
|
||||||
license : BSD
|
license : BSD
|
||||||
component : system.utils
|
component : system.utils
|
||||||
|
@ -10,13 +13,10 @@ summary : Service Location Protocol (SLP) is an Internet Engineering Task For
|
||||||
description: |
|
description: |
|
||||||
Service Location Protocol (SLP) is an Internet Engineering Task Force (IETF) standards track protocol that provides a framework to allow networking applications to discover the existence, location, and configuration of networked services in enterprise networks.
|
Service Location Protocol (SLP) is an Internet Engineering Task Force (IETF) standards track protocol that provides a framework to allow networking applications to discover the existence, location, and configuration of networked services in enterprise networks.
|
||||||
setup : |
|
setup : |
|
||||||
%patch -p1 < $pkgfiles/openslp-2.0.0-multicast-set.patch
|
# The path in the official repository has become nested, a transition is required.
|
||||||
%patch -p2 < $pkgfiles/openslp-2.0.0-notify-systemd-of-start-up.patch
|
cd openslp
|
||||||
%patch -p1 < $pkgfiles/openslp-2.0.0-null-pointer-deref.patch
|
|
||||||
%patch -p1 < $pkgfiles/openslp-2.0.0-openssl-1.1-fix.patch
|
%apply_patches
|
||||||
%patch -p1 < $pkgfiles/openslp-2.0.0-cve-2016-7567.patch
|
|
||||||
%patch -p1 < $pkgfiles/openslp-2.0.0-cve-2017-17833.patch
|
|
||||||
%patch -p1 < $pkgfiles/openslp-2.0.0-cve-2019-5544.patch
|
|
||||||
|
|
||||||
autoreconf -f -i
|
autoreconf -f -i
|
||||||
find . -name "CVS" | xargs rm -rf
|
find . -name "CVS" | xargs rm -rf
|
||||||
|
@ -32,11 +32,31 @@ setup : |
|
||||||
--disable-dependency-tracking \
|
--disable-dependency-tracking \
|
||||||
--disable-static
|
--disable-static
|
||||||
build : |
|
build : |
|
||||||
|
cd openslp
|
||||||
|
|
||||||
%make
|
%make
|
||||||
|
|
||||||
|
# Preparation of man pages
|
||||||
|
gzip -c $pkgfiles/man/en/slptool.1 > slptool.1.gz.en
|
||||||
|
gzip -c $pkgfiles/man/en/slpd.8 > slpd.8.gz.en
|
||||||
|
gzip -c $pkgfiles/man/ru/slptool.1 > slptool.1.gz.ru
|
||||||
|
gzip -c $pkgfiles/man/ru/slpd.8 > slpd.8.gz.ru
|
||||||
install : |
|
install : |
|
||||||
|
cd openslp
|
||||||
|
|
||||||
%make_install
|
%make_install
|
||||||
|
|
||||||
install -Dm 00644 $pkgfiles/openslp.service $installdir/usr/lib/systemd/system/openslp.service
|
install -Dm 00644 $pkgfiles/openslp.service $installdir/usr/lib/systemd/system/openslp.service
|
||||||
install -Dm 00644 $pkgfiles/slpd.8.gz $installdir/usr/share/man/man8/slpd.8.gz
|
|
||||||
install -Dm 00644 $pkgfiles/slptool.1.gz $installdir/usr/share/man/man1/slptool.1.gz
|
|
||||||
install -Dm 00644 $pkgfiles/slp.pc $installdir/usr/lib64/pkgconfig/slp.pc
|
install -Dm 00644 $pkgfiles/slp.pc $installdir/usr/lib64/pkgconfig/slp.pc
|
||||||
|
|
||||||
|
install -Dm 00644 slptool.1.gz.en $installdir/usr/share/man/man1/slptool.1.gz
|
||||||
|
install -Dm 00644 slpd.8.gz.en $installdir/usr/share/man/man8/slpd.8.gz
|
||||||
|
install -Dm 00644 slptool.1.gz.ru $installdir/usr/share/man/ru/man1/slptool.1.gz
|
||||||
|
install -Dm 00644 slpd.8.gz.ru $installdir/usr/share/man/ru/man8/slpd.8.gz
|
||||||
|
|
||||||
|
install -dm00755 $installdir/usr/share/defaults/etc/
|
||||||
|
mv $installdir/etc/openslp $installdir/usr/share/defaults/etc/
|
||||||
|
|
||||||
|
rmdir $installdir/etc
|
||||||
|
rmdir $installdir/var/log
|
||||||
|
rmdir $installdir/var
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue