mirror of
				https://github.com/ergochat/ergo.git
				synced 2025-10-31 13:57:23 +01:00 
			
		
		
		
	Solaris SMF Service
Signed-off-by: Georg <georg@lysergic.dev>
This commit is contained in:
		
							parent
							
								
									5c7fd0ec0b
								
							
						
					
					
						commit
						b106c01303
					
				
							
								
								
									
										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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user