diff --git a/Makefile.am b/Makefile.am index f4aa4f74..c246909f 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,5 +1,5 @@ ACLOCAL_AMFLAGS = -I m4 -SUBDIRS = man plugins src test tmpfiles.d +SUBDIRS = man plugins src system test tmpfiles.d doc_DATA = README.md LICENSE contrib/finit.conf EXTRA_DIST = README.md LICENSE ChangeLog.md contrib/finit.conf diff --git a/plugins/Makefile.am b/plugins/Makefile.am index c5581ac0..a2b69c53 100644 --- a/plugins/Makefile.am +++ b/plugins/Makefile.am @@ -41,10 +41,6 @@ if BUILD_RTC_PLUGIN libplug_la_SOURCES += rtc.c endif -if BUILD_TESTSERV_PLUGIN -libplug_la_SOURCES += testserv.c -endif - if BUILD_TTY_PLUGIN libplug_la_SOURCES += tty.c endif @@ -96,10 +92,6 @@ if BUILD_RTC_PLUGIN pkglib_LTLIBRARIES += rtc.la endif -if BUILD_TESTSERV_PLUGIN -pkglib_LTLIBRARIES += testserv.la -endif - if BUILD_TTY_PLUGIN pkglib_LTLIBRARIES += tty.la endif diff --git a/plugins/testserv.c b/plugins/testserv.c deleted file mode 100644 index cca3a342..00000000 --- a/plugins/testserv.c +++ /dev/null @@ -1,98 +0,0 @@ -/* Test plugin, only used for `make check`, not for public use - * - * Copyright (c) 2023 Joachim Wiberg - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#include -#ifdef _LIBITE_LITE -# include -#else -# include -#endif - -#include "finit.h" -#include "config.h" -#include "helpers.h" -#include "plugin.h" -#include "service.h" -#include "conf.h" - -#define SERV_DAEMON "serv" -#define SERV_ARGS "-n -p -i testserv" -#define SERV_DESC "Test serv daemon" - -static void setup(void *arg) -{ - char line[256]; - mode_t prev; - char *cmd; - - if (rescue) { - dbg("Skipping %s plugin in rescue mode.", __FILE__); - return; - } - - cmd = which(SERV_DAEMON); - if (!cmd) { - dbg("Skipping plugin, %s is not installed.", SERV_DAEMON); - return; - } - - /* Clean up from any previous pre-bootstrap run */ - remove("/run/serv.pid"); - - prev = umask(0); - mksubsys("/var/run/serv", 0755, "root", "root"); - mksubsys("/var/run/lock/subsys", 0755, "root", "root"); - mksubsys("/var/lib/serv", 0755, "root", "root"); - mksubsys("/tmp/serv", 0755, "root", "root"); - umask(prev); - - snprintf(line, sizeof(line), "[S123456789] name:testserv pid:!/run/testserv.pid cgroup.system %s %s -- %s", - cmd, SERV_ARGS, SERV_DESC); - - if (service_register(SVC_TYPE_SERVICE, line, global_rlimit, NULL)) - err(1, "Failed registering %s", SERV_DAEMON); - - free(cmd); -} - -static plugin_t plugin = { - .name = __FILE__, - .hook[HOOK_SVC_PLUGIN] = { .cb = setup }, -}; - -PLUGIN_INIT(plugin_init) -{ - plugin_register(&plugin); -} - -PLUGIN_EXIT(plugin_exit) -{ - plugin_unregister(&plugin); -} - -/** - * Local Variables: - * indent-tabs-mode: t - * c-file-style: "linux" - * End: - */ diff --git a/system/.gitignore b/system/.gitignore new file mode 100644 index 00000000..282522db --- /dev/null +++ b/system/.gitignore @@ -0,0 +1,2 @@ +Makefile +Makefile.in diff --git a/system/Makefile.am b/system/Makefile.am new file mode 100644 index 00000000..b9b82043 --- /dev/null +++ b/system/Makefile.am @@ -0,0 +1,6 @@ +systemdir = $(system_path) +dist_system_DATA = + +if BUILD_TESTSERV_PLUGIN +dist_system_DATA += testserv.conf +endif diff --git a/system/testserv.conf b/system/testserv.conf new file mode 100644 index 00000000..b52cd898 --- /dev/null +++ b/system/testserv.conf @@ -0,0 +1,4 @@ +# Test service, only used for `make check`, not for public use +service [S123456789] name:testserv pid:!/run/testserv.pid \ + cgroup.system \ + /sbin/serv -n -p -i testserv -- Test serv daemon diff --git a/tmpfiles.d/Makefile.am b/tmpfiles.d/Makefile.am index 0ab60a8a..4f4747c0 100644 --- a/tmpfiles.d/Makefile.am +++ b/tmpfiles.d/Makefile.am @@ -5,3 +5,7 @@ tmpfilesdir = $(tmpfiles_path) dist_tmpfiles_DATA = etc.conf legacy.conf var.conf x11.conf dist_tmpfiles_DATA += dnsmasq.conf frr.conf lldpd.conf openswan.conf \ quagga.conf sshd.conf uuidd.conf + +if BUILD_TESTSERV_PLUGIN +dist_tmpfiles_DATA += testserv.conf +endif diff --git a/tmpfiles.d/testserv.conf b/tmpfiles.d/testserv.conf new file mode 100644 index 00000000..83965a5f --- /dev/null +++ b/tmpfiles.d/testserv.conf @@ -0,0 +1,6 @@ +# Test service, only used for `make check`, not for public use + +d /var/run/serv 0755 - - - +d /var/lib/serv 0755 - - - +d /tmp/serv 0755 - - - +r /run/serv.pid