Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F136890968
D38394.id116555.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
5 KB
Referenced Files
None
Subscribers
None
D38394.id116555.diff
View Options
Index: ports-mgmt/Makefile
===================================================================
--- ports-mgmt/Makefile
+++ ports-mgmt/Makefile
@@ -72,6 +72,7 @@
SUBDIR += py-FreeBSD-ports
SUBDIR += py-pytoport
SUBDIR += py-skog
+ SUBDIR += rc-subr-jail
SUBDIR += reprise
SUBDIR += sccache-overlay
SUBDIR += synth
Index: ports-mgmt/rc-subr-jail/Makefile
===================================================================
--- /dev/null
+++ ports-mgmt/rc-subr-jail/Makefile
@@ -0,0 +1,23 @@
+PORTNAME= rc-subr-jail
+PORTVERSION= 1
+CATEGORIES= ports-mgmt
+MASTER_SITES= #
+DISTFILES= #
+EXTRACT_ONLY= #
+
+MAINTAINER= arrowd@FreeBSD.org
+COMMENT= Shell library to help writing RC scripts with jail support
+WWW= https://cgit.freebsd.org/ports/tree/ports-mgmt/rc-subr-jail
+
+LICENSE= BSD3CLAUSE
+
+NO_ARCH= yes
+NO_BUILD= yes
+
+PLIST_FILES= share/rc-subr-jail/rc.subr.jail
+
+do-install:
+ @${MKDIR} ${STAGEDIR}${DATADIR}
+ ${INSTALL_DATA} ${PATCHDIR}/rc.subr.jail ${STAGEDIR}${DATADIR}/rc.subr.jail
+
+.include <bsd.port.mk>
Index: ports-mgmt/rc-subr-jail/distinfo
===================================================================
--- /dev/null
+++ ports-mgmt/rc-subr-jail/distinfo
@@ -0,0 +1 @@
+TIMESTAMP = 1675627821
Index: ports-mgmt/rc-subr-jail/files/rc.subr.jail
===================================================================
--- /dev/null
+++ ports-mgmt/rc-subr-jail/files/rc.subr.jail
@@ -0,0 +1,141 @@
+# This file can be included in the RC script by adding following line:
+# . %%LOCALBASE%%/share/rc-subr-jail/rc.subr.jail
+
+# The behavior of routines defined in this file are affected by the following
+# global variables, which can be used in the same manner as Makefile knobs:
+
+# jail_copy_resolv_conf
+# set this to "yes" to copy /etc/resolv.conf file into the jail being created
+
+# jail_copy_services
+# set this to "yes" to copy /etc/services file into the jail being created
+
+# jail_copy_programs
+# set this to a list of binaries, which should be copied into /bin directory
+# of the jail. Dynamic libraries required by each program will be placed into
+# the /lib directory of the jail
+
+# jail_mount_devfs
+# set this to "yes" to mount a devfs filesystem under the /dev directory of the
+# jail
+
+# jail_ip_inherit
+# set this to "yes" to make "ip4=inherit" and "ip6=inherit" arguments to be
+# passed to the jail
+
+# jail_prepare_inside_cmds
+# set this to the shell command that will be run before starting the jail
+# commands are run after changing directory into the jail's root
+
+# jail_nullfs_mounts
+# set this to a list of triplets of "src_dir dst_dir opts" that will be passed
+# to mount_nullfs
+# make sure to pass either "ro" or "rw" as "opts" value
+
+
+# prepare_jail jroot
+# sets $jail_prepared_args that can be used in jail(4) invocation
+# intended to be run during "start" command
+prepare_jail()
+{
+ local jroot jargs
+ jroot=$1
+ jargs="-c path=${jroot} "
+
+ destroy_jail $jroot 2> /dev/null
+
+ mkdir -p "$jroot"
+
+ if [ "$jail_copy_resolv_conf" = "yes" ]
+ then
+ mkdir -p "$jroot/etc"
+ cp /etc/resolv.conf "$jroot/etc"
+ fi
+ if [ "$jail_copy_services" = "yes" ]
+ then
+ mkdir -p "$jroot/etc"
+ cp /etc/services "$jroot/etc"
+ fi
+
+ local _prog _interp
+ for _prog in $jail_copy_programs; do
+ mkdir -p "$jroot/bin"
+ mkdir -p "$jroot/lib"
+
+ cp "$_prog" "$jroot/bin"
+ ldd "$_prog" 2> /dev/null | cut -s -d " " -f 3 | grep -E '^(/lib|/usr)' | sort -u | xargs -I % cp % "${jroot}/lib/"
+
+ _interp=`file "$_prog" | grep -o '/libexec/ld-elf.so[0-9\.]*'`
+ if [ "$_interp" ]
+ then
+ mkdir "$jroot/libexec"
+ cp "$_interp" "$jroot/libexec/"
+ fi
+ done
+
+ if [ "$jail_mount_devfs" = "yes" ]
+ then
+ mkdir -p "$jroot/dev"
+ jargs="$jargs mount.devfs "
+ fi
+ if [ "$jail_ip_inherit" = "yes" ]
+ then
+ check_kern_features inet
+ if [ "$?" = "0" ]
+ then
+ jargs="$jargs ip4=inherit "
+ fi
+ check_kern_features inet6
+ if [ "$?" = "0" ]
+ then
+ jargs="$jargs ip6=inherit "
+ fi
+ fi
+
+ if [ "$jail_nullfs_mounts" ]
+ then
+ local _mnt_line
+ echo "$jail_nullfs_mounts" | xargs -n 3 | while read _mnt_line; do
+ local _src _dst _opts
+ _src=$(echo "$_mnt_line" | awk '{print $1}')
+ _dst=$(echo "$_mnt_line" | awk '{print $2}')
+ _opts=$(echo "$_mnt_line" | awk '{print $3}')
+ mkdir -p "$_dst"
+ mount_nullfs -o "$_opts" "$_src" "$_dst"
+ done
+ fi
+
+ if [ "$jail_prepare_inside_cmds" ]
+ then
+ /bin/sh -c "cd \"$jroot\" && $jail_prepare_inside_cmds"
+ fi
+
+ jail_prepared_args=$jargs
+}
+
+# destroy_jail jail_root
+# cleans up the jail, unmounts all filesystems and finally removes jail_root
+# intended to be run during both "stop" and "start" commands
+destroy_jail()
+{
+ local jroot
+ jroot=$1
+
+ if [ "$jail_mount_devfs" ]
+ then
+ rmdir "$jroot/dev"
+ fi
+
+ if [ "$jail_nullfs_mounts" ]
+ then
+ local _mnt_line
+ echo "$jail_nullfs_mounts" | xargs -n 3 | while read _mnt_line; do
+ local _dst
+ _dst=$(echo "$_mnt_line" | awk '{print $2}')
+ umount "$_dst"
+ rmdir "$_dst"
+ done
+ fi
+
+ rm -rf "$jroot"
+}
Index: ports-mgmt/rc-subr-jail/pkg-descr
===================================================================
--- /dev/null
+++ ports-mgmt/rc-subr-jail/pkg-descr
@@ -0,0 +1,3 @@
+This port install a shell source intended to be included by rc scripts that
+want to run services inside a jail.
+
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Nov 21, 11:30 AM (11 h, 1 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
25762499
Default Alt Text
D38394.id116555.diff (5 KB)
Attached To
Mode
D38394: ports-mgmt/rc-subr-jail: Shell library to help writing jailed rc services.
Attached
Detach File
Event Timeline
Log In to Comment