diff --git a/Makefile.am b/Makefile.am index 6ac5d47004b33d9f87ac4110b2b6344009cb64da..c0058057de0d340cca21d48c43b0cab6aca066b4 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,4 +1,4 @@ -SUBDIRS = bin conf lib public templates +SUBDIRS = bin conf lib public templates systemd AM_TESTS_ENVIRONMENT = PERL5LIB='$(srcdir)/lib'; export PERL5LIB; TEST_LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) \ diff --git a/configure.ac b/configure.ac index efb70d0897f9810c6175a4c39efcfc32e0bf8085..fbff029db0900d525ac737c5748b22e39f406a76 100644 --- a/configure.ac +++ b/configure.ac @@ -6,7 +6,30 @@ AC_PROG_LN_S confdir=$sysconfdir/access-check +PKG_PROG_PKG_CONFIG +AC_ARG_WITH([systemd-unitdir], + [AS_HELP_STRING([--with-systemd-unitdir=DIR], [Directory for systemd service file @<:@default=automatic@:>@])], + [systemdunitdir=$with_systemd_unitdir], + [systemdunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)] +) +AC_ARG_WITH([systemd-user], + [AS_HELP_STRING([--with-systemd-user=USER], [User for systemd service @<:@default=root@:>@])], + [systemduser=$with_systemd_user], + [systemduser="root"] +) +AC_ARG_WITH([systemd-group], + [AS_HELP_STRING([--with-systemd-group=GROUP], [Group for systemd service @<:@default=root@:>@])], + [systemdgroup=$with_systemd_group], + [systemdgroup="root"] +) +systemdconfdir=$sysconfdir/sysconfig +AM_CONDITIONAL([HAVE_SYSTEMD], [test "x$systemdunitdir" != "x"]) + AC_SUBST(confdir) +AC_SUBST(systemdunitdir) +AC_SUBST(systemdconfdir) +AC_SUBST(systemduser) +AC_SUBST(systemdgroup) AC_CONFIG_FILES( Makefile @@ -15,6 +38,7 @@ AC_CONFIG_FILES( lib/Makefile templates/Makefile public/Makefile + systemd/Makefile ) AC_OUTPUT diff --git a/lib/AccountManager/App.pm b/lib/AccountManager/App.pm index 903c262e2d64a97d03f78ce1179c4934f2c5581a..8e5e3ca3febb7392479042a22e03dfad3bbc5b75 100644 --- a/lib/AccountManager/App.pm +++ b/lib/AccountManager/App.pm @@ -16,7 +16,7 @@ use constant { sub startup { my $self = shift; - $self->plugin('INIConfig', { file => $ENV{MOJO_CONFIG} || 'conf/manager.conf' }); + $self->plugin('INIConfig', { file => $ENV{ACCESS_CHECK_CONFIG} || 'conf/manager.conf' }); $self->plugin( 'TemplateToolkit', diff --git a/systemd/Makefile.am b/systemd/Makefile.am new file mode 100644 index 0000000000000000000000000000000000000000..9c3fe46f9aab8104d7059e74221f8b37e72b39e3 --- /dev/null +++ b/systemd/Makefile.am @@ -0,0 +1,34 @@ +EXTRA_DIST = access-check.sysconfig.in \ + access-check.service.in + +if HAVE_SYSTEMD +appbindir = $(pkgdatadir)/bin +noinst_DATA = access-check.sysconfig +systemdunit_DATA = access-check.service + +CLEANFILES = $(systemdunit_DATA) $(noinst_DATA) + +access-check.service: Makefile access-check.service.in + sed \ + -e 's|[@]systemdconfdir[@]|$(systemdconfdir)|' \ + -e 's|[@]appbindir[@]|$(appbindir)|' \ + -e 's|[@]systemduser[@]|$(systemduser)|' \ + -e 's|[@]systemdgroup[@]|$(systemdgroup)|' \ + < $(srcdir)/$@.in > $@ + +access-check.sysconfig: Makefile access-check.sysconfig.in + sed \ + -e 's|[@]confdir[@]|$(confdir)|' \ + < $(srcdir)/$@.in > $@ + +install-data-local: + $(mkinstalldirs) $(DESTDIR)$(systemdconfdir) + if [ -f $(DESTDIR)$(systemdconfdir)/access-check ]; then \ + $(INSTALL_DATA) access-check.sysconfig $(DESTDIR)$(systemdconfdir)/access-check.new; \ + else \ + $(INSTALL_DATA) access-check.sysconfig $(DESTDIR)$(systemdconfdir)/access-check; \ + fi + +uninstall-local: + rm -f $(DESTDIR)$(systemdconfdir)/access-check +endif diff --git a/systemd/access-check.service.in b/systemd/access-check.service.in new file mode 100644 index 0000000000000000000000000000000000000000..4e652307a2c8102d5dc88b0ee29c7289196d3214 --- /dev/null +++ b/systemd/access-check.service.in @@ -0,0 +1,13 @@ +[Unit] +Description=access-check account manager + +[Service] +Type=simple +EnvironmentFile=-@systemdconfdir@/access-check +User=@systemduser@ +Group=@systemdgroup@ +ExecStart=@appbindir@/app $ACCESS_CHECK_SERVER -m $ACCESS_CHECK_MODE -l $ACCESS_CHECK_URL $ACCESS_CHECK_OPTIONS +KillMode=process + +[Install] +WantedBy=multi-user.target diff --git a/systemd/access-check.sysconfig.in b/systemd/access-check.sysconfig.in new file mode 100644 index 0000000000000000000000000000000000000000..cd44c65210c12d24ddf7fb259c39b67293a57422 --- /dev/null +++ b/systemd/access-check.sysconfig.in @@ -0,0 +1,5 @@ +ACCESS_CHECK_MODE=development +ACCESS_CHECK_SERVER=daemon +ACCESS_CHECK_URL=http://127.0.0.1:3000 +ACCESS_CHECK_OPTIONS= +ACCESS_CHECK_CONFIG=@confdir@/manager.conf