mirror of
https://github.com/ergochat/ergo.git
synced 2024-11-25 13:29:27 +01:00
Merge pull request #1846 from tacerus/SMF
OpenSolaris / Illumos Service Management Facility (SMF) Service
This commit is contained in:
commit
57c943c812
26
distrib/SMF/README
Normal file
26
distrib/SMF/README
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
Created 22/11/2021 by georg@lysergic.dev.
|
||||||
|
|
||||||
|
This directory contains Service Management Facility service files for ergo.
|
||||||
|
These files should be compatible with current OpenSolaris / Illumos based operating systems. Tested on OpenIndiana.
|
||||||
|
|
||||||
|
Prerequesites:
|
||||||
|
- ergo binary located at /opt/ergo/ergo
|
||||||
|
- ergo configuration located at /opt/ergo/ircd.yaml (hardcoded)
|
||||||
|
- ergo languages located at /opt/ergo/languages (to be compatible with default.yaml - you may adjust this path or disable languages in your custom ircd.yaml)
|
||||||
|
- ergo certificate and key located at /opt/ergo/fullchain.pem /opt/ergo/privkey.pem (to be compatible with default.yaml - you may adjust these paths in your custom ircd.yaml)
|
||||||
|
- `ergo` role user and `ergo` role group owning all of the above
|
||||||
|
|
||||||
|
Installation:
|
||||||
|
- cp ergo.xml /lib/svc/manifest/network/
|
||||||
|
- cp ergo /lib/svc/method/
|
||||||
|
- svcadm restart manifest-import
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
- svcadm enable ergo (Start)
|
||||||
|
- tail /var/svc/log/network-ergo:default.log (Check ergo log and SMF output)
|
||||||
|
- svcs ergo (Check status)
|
||||||
|
- svcadm refresh ergo (Reload manifest and ergo configuration)
|
||||||
|
- svcadm disable ergo (Stop)
|
||||||
|
|
||||||
|
Notes:
|
||||||
|
- Does not support multiple instances - spawns instance :default
|
26
distrib/SMF/ergo
Executable file
26
distrib/SMF/ergo
Executable file
@ -0,0 +1,26 @@
|
|||||||
|
#!/sbin/sh
|
||||||
|
#
|
||||||
|
# SMF method script for ergo - used by manifest file ergo.xml
|
||||||
|
# Created 22/11/2021 by georg@lysergic.dev
|
||||||
|
|
||||||
|
. /lib/svc/share/smf_include.sh
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
'start')
|
||||||
|
exec /opt/ergo/ergo run --conf /opt/ergo/ircd.yaml
|
||||||
|
;;
|
||||||
|
|
||||||
|
'refresh' )
|
||||||
|
exec pkill -1 -U ergo -x ergo
|
||||||
|
;;
|
||||||
|
'stop' )
|
||||||
|
exec pkill -U ergo -x ergo
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "Usage: $0 { start | refresh | stop }"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit $?
|
48
distrib/SMF/ergo.xml
Normal file
48
distrib/SMF/ergo.xml
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
<?xml version='1.0'?>
|
||||||
|
<!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'>
|
||||||
|
<service_bundle type='manifest' name='ergo'>
|
||||||
|
<service name='network/ergo' type='service' version='0'>
|
||||||
|
<create_default_instance enabled="true"/>
|
||||||
|
<single_instance/>
|
||||||
|
<dependency name='fs-local' grouping='require_all' restart_on='none' type='service'>
|
||||||
|
<service_fmri value='svc:/system/filesystem/local'/>
|
||||||
|
</dependency>
|
||||||
|
<dependency name='fs-autofs' grouping='optional_all' restart_on='none' type='service'>
|
||||||
|
<service_fmri value='svc:/system/filesystem/autofs'/>
|
||||||
|
</dependency>
|
||||||
|
<dependency name='net-loopback' grouping='require_all' restart_on='none' type='service'>
|
||||||
|
<service_fmri value='svc:/network/loopback'/>
|
||||||
|
</dependency>
|
||||||
|
<dependency name='net-physical' grouping='require_all' restart_on='none' type='service'>
|
||||||
|
<service_fmri value='svc:/network/physical'/>
|
||||||
|
</dependency>
|
||||||
|
<dependency name='config_data' grouping='require_all' restart_on='restart' type='path'>
|
||||||
|
<service_fmri value='file://localhost/opt/ergo/ircd.yaml'/>
|
||||||
|
</dependency>
|
||||||
|
<method_context working_directory="/opt/ergo">
|
||||||
|
<method_credential user='ergo' group='ergo' />
|
||||||
|
</method_context>
|
||||||
|
<exec_method name='start' type='method' exec='/lib/svc/method/ergo start' timeout_seconds='20'>
|
||||||
|
<method_context security_flags='aslr'/>
|
||||||
|
</exec_method>
|
||||||
|
<exec_method name='stop' type='method' exec='/lib/svc/method/ergo stop' timeout_seconds='20'/>
|
||||||
|
<exec_method name='refresh' type='method' exec='/lib/svc/method/ergo refresh' timeout_seconds='20'/>
|
||||||
|
<property_group name='general' type='framework'>
|
||||||
|
<propval name='action_authorization' type='astring' value='solaris.smf.manage.ergo'/>
|
||||||
|
</property_group>
|
||||||
|
<property_group name='startd' type='framework'>
|
||||||
|
<propval name='ignore_error' type='astring' value='core,signal'/>
|
||||||
|
<propval name='duration' type='astring' value='child'/>
|
||||||
|
</property_group>
|
||||||
|
<stability value='Unstable'/>
|
||||||
|
<template>
|
||||||
|
<common_name>
|
||||||
|
<loctext xml:lang='C'>IRC server</loctext>
|
||||||
|
</common_name>
|
||||||
|
<documentation>
|
||||||
|
<doc_link name='ergo-manual' uri='https://github.com/ergochat/ergo/blob/master/docs/MANUAL.md'/>
|
||||||
|
<doc_link name='ergo-userguide' uri='https://github.com/ergochat/ergo/blob/master/docs/USERGUIDE.md'/>
|
||||||
|
</documentation>
|
||||||
|
</template>
|
||||||
|
</service>
|
||||||
|
</service_bundle>
|
Loading…
Reference in New Issue
Block a user