summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile3
-rwxr-xr-xlayout/rootfs/bin/pps6
-rw-r--r--layout/rootfs/etc/group1
-rw-r--r--layout/rootfs/etc/passwd6
-rw-r--r--layout/rootfs/etc/resolv.conf1
-rw-r--r--layout/rootfs/etc/s6-rc/source-base/default/contents7
-rw-r--r--layout/rootfs/etc/s6-rc/source-base/init-eth0/dependencies2
-rw-r--r--layout/rootfs/etc/s6-rc/source-base/init-eth0/down2
-rw-r--r--layout/rootfs/etc/s6-rc/source-base/init-eth0/type1
-rw-r--r--layout/rootfs/etc/s6-rc/source-base/init-eth0/up2
-rw-r--r--layout/rootfs/etc/s6-rc/source-base/init-lo/down2
-rw-r--r--layout/rootfs/etc/s6-rc/source-base/init-route/dependencies2
-rw-r--r--layout/rootfs/etc/s6-rc/source-base/init-route/down2
-rw-r--r--layout/rootfs/etc/s6-rc/source-base/init-route/type1
-rw-r--r--layout/rootfs/etc/s6-rc/source-base/init-route/up1
-rw-r--r--layout/rootfs/etc/s6-rc/source-base/ok-lan/contents4
-rw-r--r--layout/rootfs/etc/s6-rc/source-base/ok-lan/type1
-rw-r--r--layout/rootfs/etc/s6-rc/source-base/ok-local/contents6
-rw-r--r--layout/rootfs/etc/s6-rc/source-base/ok-local/type1
-rw-r--r--layout/rootfs/etc/s6-rc/source-base/sshd-4-log/consumer-for1
-rw-r--r--layout/rootfs/etc/s6-rc/source-base/sshd-4-log/dependencies1
-rw-r--r--layout/rootfs/etc/s6-rc/source-base/sshd-4-log/pipeline-name1
-rwxr-xr-xlayout/rootfs/etc/s6-rc/source-base/sshd-4-log/run4
-rw-r--r--layout/rootfs/etc/s6-rc/source-base/sshd-4-log/type1
-rw-r--r--layout/rootfs/etc/s6-rc/source-base/sshd-4/data/rules/ip4/10.0.0.2_32/allow (renamed from layout/rootfs/bin/.empty)0
-rw-r--r--layout/rootfs/etc/s6-rc/source-base/sshd-4/dependencies2
-rw-r--r--layout/rootfs/etc/s6-rc/source-base/sshd-4/notification-fd1
-rw-r--r--layout/rootfs/etc/s6-rc/source-base/sshd-4/producer-for1
-rwxr-xr-xlayout/rootfs/etc/s6-rc/source-base/sshd-4/run6
-rw-r--r--layout/rootfs/etc/s6-rc/source-base/sshd-4/type1
-rw-r--r--layout/rootfs/etc/s6-rc/source-base/syslogd-log/consumer-for1
-rw-r--r--layout/rootfs/etc/s6-rc/source-base/syslogd-log/dependencies1
-rw-r--r--layout/rootfs/etc/s6-rc/source-base/syslogd-log/pipeline-name1
-rwxr-xr-xlayout/rootfs/etc/s6-rc/source-base/syslogd-log/run4
-rw-r--r--layout/rootfs/etc/s6-rc/source-base/syslogd-log/type1
-rw-r--r--layout/rootfs/etc/s6-rc/source-base/syslogd/dependencies1
-rw-r--r--layout/rootfs/etc/s6-rc/source-base/syslogd/producer-for1
-rwxr-xr-xlayout/rootfs/etc/s6-rc/source-base/syslogd/run4
-rw-r--r--layout/rootfs/etc/s6-rc/source-base/syslogd/type1
-rw-r--r--layout/rootfs/etc/shadow5
-rw-r--r--layout/rwfs/var/log/sshd-4/.empty0
-rw-r--r--layout/rwfs/var/log/syslogd/.empty0
-rw-r--r--lh-config.dist2
-rw-r--r--sub/dropbear/Makefile2
-rw-r--r--sub/layout/permissions2
-rw-r--r--sub/socklog/Makefile34
-rw-r--r--sub/socklog/patch.sed5
47 files changed, 121 insertions, 14 deletions
diff --git a/Makefile b/Makefile
index d3c72eb..32ab471 100644
--- a/Makefile
+++ b/Makefile
@@ -57,7 +57,7 @@ $(OUTPUT)/build-build/.lh_done: $(OUTPUT)/build-build/.lh_skarnet_installed $(OU
# The filesystems
-$(OUTPUT)/tmp/.lh_rootfs_installed: $(OUTPUT)/tmp/.lh_layout_installed $(OUTPUT)/build-host/.lh_skarnet_installed $(OUTPUT)/build-host/.lh_bb_installed $(OUTPUT)/build-host/.lh_dropbear_installed
+$(OUTPUT)/tmp/.lh_rootfs_installed: $(OUTPUT)/tmp/.lh_layout_installed $(OUTPUT)/build-host/.lh_skarnet_installed $(OUTPUT)/build-host/.lh_socklog_installed $(OUTPUT)/build-host/.lh_bb_installed $(OUTPUT)/build-host/.lh_dropbear_installed
exec setuidgid $(NORMALUSER) touch $@
$(OUTPUT)/tmp/.lh_rwfs_installed: $(OUTPUT)/tmp/.lh_layout_installed
@@ -94,5 +94,6 @@ include sub/kmod/Makefile
include sub/layout/Makefile
include sub/bearssl/Makefile
include sub/skarnet.org/Makefile
+include sub/socklog/Makefile
include sub/busybox/Makefile
include sub/dropbear/Makefile
diff --git a/layout/rootfs/bin/pps b/layout/rootfs/bin/pps
new file mode 100755
index 0000000..3fdf991
--- /dev/null
+++ b/layout/rootfs/bin/pps
@@ -0,0 +1,6 @@
+#!/command/execlineb -P
+pipeline
+{
+ s6-ps -H -o user,pid,vsize,rss,tty,s,start,cttime,args
+}
+less
diff --git a/layout/rootfs/etc/group b/layout/rootfs/etc/group
index fe84981..680b61b 100644
--- a/layout/rootfs/etc/group
+++ b/layout/rootfs/etc/group
@@ -2,5 +2,4 @@ root:x:0:
catchlog:x:98:
nogroup:x:65534:
log:x:61:
-ntp:x:62:
fdh:x:76:
diff --git a/layout/rootfs/etc/passwd b/layout/rootfs/etc/passwd
index 0e6110c..a7755cf 100644
--- a/layout/rootfs/etc/passwd
+++ b/layout/rootfs/etc/passwd
@@ -4,7 +4,7 @@ alias:x:999:100:alias:/home/alias:/nonexistent
nobody:x:65534:65534:nobody:/:/nonexistent
klog:x:101:61:klog:/:/nonexistent
kllog:x:102:61:kllog:/:/nonexistent
-ntp:x:105:62:ntp:/:/nonexistent
-ntplog:x:106:62:ntplog:/:/nonexistent
-sshlog:x:138:61:sshlog:/var/log/sshd-4:/nonexistent
+syslog:x:103:61:syslog:/:/nonexistent
+sysllog:x:104:61:sysllog:/:/nonexistent
sysfdh:x:137:76:sysfdh:/:/nonexistent
+sshlog:x:138:61:sshlog:/var/log/sshd-4:/nonexistent
diff --git a/layout/rootfs/etc/resolv.conf b/layout/rootfs/etc/resolv.conf
new file mode 100644
index 0000000..a30c407
--- /dev/null
+++ b/layout/rootfs/etc/resolv.conf
@@ -0,0 +1 @@
+nameserver 10.0.0.3
diff --git a/layout/rootfs/etc/s6-rc/source-base/default/contents b/layout/rootfs/etc/s6-rc/source-base/default/contents
index 0882c2e..359e9bc 100644
--- a/layout/rootfs/etc/s6-rc/source-base/default/contents
+++ b/layout/rootfs/etc/s6-rc/source-base/default/contents
@@ -1,5 +1,2 @@
-mdevd
-klogd-pipeline
-mount-disks
-mount-virtual
-fifodir-cleanup
+ok-local
+ok-lan
diff --git a/layout/rootfs/etc/s6-rc/source-base/init-eth0/dependencies b/layout/rootfs/etc/s6-rc/source-base/init-eth0/dependencies
new file mode 100644
index 0000000..5e57eb3
--- /dev/null
+++ b/layout/rootfs/etc/s6-rc/source-base/init-eth0/dependencies
@@ -0,0 +1,2 @@
+init-sysctl
+mdevd
diff --git a/layout/rootfs/etc/s6-rc/source-base/init-eth0/down b/layout/rootfs/etc/s6-rc/source-base/init-eth0/down
new file mode 100644
index 0000000..5404b98
--- /dev/null
+++ b/layout/rootfs/etc/s6-rc/source-base/init-eth0/down
@@ -0,0 +1,2 @@
+foreground { ip link set dev eth0 down }
+exit 0
diff --git a/layout/rootfs/etc/s6-rc/source-base/init-eth0/type b/layout/rootfs/etc/s6-rc/source-base/init-eth0/type
new file mode 100644
index 0000000..bdd22a1
--- /dev/null
+++ b/layout/rootfs/etc/s6-rc/source-base/init-eth0/type
@@ -0,0 +1 @@
+oneshot
diff --git a/layout/rootfs/etc/s6-rc/source-base/init-eth0/up b/layout/rootfs/etc/s6-rc/source-base/init-eth0/up
new file mode 100644
index 0000000..a89a990
--- /dev/null
+++ b/layout/rootfs/etc/s6-rc/source-base/init-eth0/up
@@ -0,0 +1,2 @@
+if { ip addr add 10.0.0.1/24 dev eth0 }
+ip link set dev eth0 up
diff --git a/layout/rootfs/etc/s6-rc/source-base/init-lo/down b/layout/rootfs/etc/s6-rc/source-base/init-lo/down
new file mode 100644
index 0000000..06de595
--- /dev/null
+++ b/layout/rootfs/etc/s6-rc/source-base/init-lo/down
@@ -0,0 +1,2 @@
+foreground { ip link set dev lo down }
+exit 0
diff --git a/layout/rootfs/etc/s6-rc/source-base/init-route/dependencies b/layout/rootfs/etc/s6-rc/source-base/init-route/dependencies
new file mode 100644
index 0000000..9280d84
--- /dev/null
+++ b/layout/rootfs/etc/s6-rc/source-base/init-route/dependencies
@@ -0,0 +1,2 @@
+init-eth0
+mdevd
diff --git a/layout/rootfs/etc/s6-rc/source-base/init-route/down b/layout/rootfs/etc/s6-rc/source-base/init-route/down
new file mode 100644
index 0000000..a498b23
--- /dev/null
+++ b/layout/rootfs/etc/s6-rc/source-base/init-route/down
@@ -0,0 +1,2 @@
+foreground { ip route del default }
+exit 0
diff --git a/layout/rootfs/etc/s6-rc/source-base/init-route/type b/layout/rootfs/etc/s6-rc/source-base/init-route/type
new file mode 100644
index 0000000..bdd22a1
--- /dev/null
+++ b/layout/rootfs/etc/s6-rc/source-base/init-route/type
@@ -0,0 +1 @@
+oneshot
diff --git a/layout/rootfs/etc/s6-rc/source-base/init-route/up b/layout/rootfs/etc/s6-rc/source-base/init-route/up
new file mode 100644
index 0000000..62a704d
--- /dev/null
+++ b/layout/rootfs/etc/s6-rc/source-base/init-route/up
@@ -0,0 +1 @@
+route add default gw 10.0.0.2
diff --git a/layout/rootfs/etc/s6-rc/source-base/ok-lan/contents b/layout/rootfs/etc/s6-rc/source-base/ok-lan/contents
new file mode 100644
index 0000000..11e9fd9
--- /dev/null
+++ b/layout/rootfs/etc/s6-rc/source-base/ok-lan/contents
@@ -0,0 +1,4 @@
+init-lo
+init-eth0
+init-route
+sshd-4
diff --git a/layout/rootfs/etc/s6-rc/source-base/ok-lan/type b/layout/rootfs/etc/s6-rc/source-base/ok-lan/type
new file mode 100644
index 0000000..757b422
--- /dev/null
+++ b/layout/rootfs/etc/s6-rc/source-base/ok-lan/type
@@ -0,0 +1 @@
+bundle
diff --git a/layout/rootfs/etc/s6-rc/source-base/ok-local/contents b/layout/rootfs/etc/s6-rc/source-base/ok-local/contents
new file mode 100644
index 0000000..2d907c7
--- /dev/null
+++ b/layout/rootfs/etc/s6-rc/source-base/ok-local/contents
@@ -0,0 +1,6 @@
+mdevd
+syslogd-pipeline
+klogd-pipeline
+mount-disks
+mount-virtual
+fifodir-cleanup
diff --git a/layout/rootfs/etc/s6-rc/source-base/ok-local/type b/layout/rootfs/etc/s6-rc/source-base/ok-local/type
new file mode 100644
index 0000000..757b422
--- /dev/null
+++ b/layout/rootfs/etc/s6-rc/source-base/ok-local/type
@@ -0,0 +1 @@
+bundle
diff --git a/layout/rootfs/etc/s6-rc/source-base/sshd-4-log/consumer-for b/layout/rootfs/etc/s6-rc/source-base/sshd-4-log/consumer-for
new file mode 100644
index 0000000..7d1730e
--- /dev/null
+++ b/layout/rootfs/etc/s6-rc/source-base/sshd-4-log/consumer-for
@@ -0,0 +1 @@
+sshd-4
diff --git a/layout/rootfs/etc/s6-rc/source-base/sshd-4-log/dependencies b/layout/rootfs/etc/s6-rc/source-base/sshd-4-log/dependencies
new file mode 100644
index 0000000..7c63988
--- /dev/null
+++ b/layout/rootfs/etc/s6-rc/source-base/sshd-4-log/dependencies
@@ -0,0 +1 @@
+mount-rwfs
diff --git a/layout/rootfs/etc/s6-rc/source-base/sshd-4-log/pipeline-name b/layout/rootfs/etc/s6-rc/source-base/sshd-4-log/pipeline-name
new file mode 100644
index 0000000..d46bed2
--- /dev/null
+++ b/layout/rootfs/etc/s6-rc/source-base/sshd-4-log/pipeline-name
@@ -0,0 +1 @@
+sshd-4-pipeline
diff --git a/layout/rootfs/etc/s6-rc/source-base/sshd-4-log/run b/layout/rootfs/etc/s6-rc/source-base/sshd-4-log/run
new file mode 100755
index 0000000..e40c2af
--- /dev/null
+++ b/layout/rootfs/etc/s6-rc/source-base/sshd-4-log/run
@@ -0,0 +1,4 @@
+#!/command/execlineb -P
+s6-setuidgid sshlog
+exec -c
+s6-log t s1000000 n20 /var/log/sshd-4
diff --git a/layout/rootfs/etc/s6-rc/source-base/sshd-4-log/type b/layout/rootfs/etc/s6-rc/source-base/sshd-4-log/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/layout/rootfs/etc/s6-rc/source-base/sshd-4-log/type
@@ -0,0 +1 @@
+longrun
diff --git a/layout/rootfs/bin/.empty b/layout/rootfs/etc/s6-rc/source-base/sshd-4/data/rules/ip4/10.0.0.2_32/allow
index e69de29..e69de29 100644
--- a/layout/rootfs/bin/.empty
+++ b/layout/rootfs/etc/s6-rc/source-base/sshd-4/data/rules/ip4/10.0.0.2_32/allow
diff --git a/layout/rootfs/etc/s6-rc/source-base/sshd-4/dependencies b/layout/rootfs/etc/s6-rc/source-base/sshd-4/dependencies
new file mode 100644
index 0000000..8aee9b6
--- /dev/null
+++ b/layout/rootfs/etc/s6-rc/source-base/sshd-4/dependencies
@@ -0,0 +1,2 @@
+init-sysctl
+init-eth0
diff --git a/layout/rootfs/etc/s6-rc/source-base/sshd-4/notification-fd b/layout/rootfs/etc/s6-rc/source-base/sshd-4/notification-fd
new file mode 100644
index 0000000..00750ed
--- /dev/null
+++ b/layout/rootfs/etc/s6-rc/source-base/sshd-4/notification-fd
@@ -0,0 +1 @@
+3
diff --git a/layout/rootfs/etc/s6-rc/source-base/sshd-4/producer-for b/layout/rootfs/etc/s6-rc/source-base/sshd-4/producer-for
new file mode 100644
index 0000000..f103f82
--- /dev/null
+++ b/layout/rootfs/etc/s6-rc/source-base/sshd-4/producer-for
@@ -0,0 +1 @@
+sshd-4-log
diff --git a/layout/rootfs/etc/s6-rc/source-base/sshd-4/run b/layout/rootfs/etc/s6-rc/source-base/sshd-4/run
new file mode 100755
index 0000000..7d8da1b
--- /dev/null
+++ b/layout/rootfs/etc/s6-rc/source-base/sshd-4/run
@@ -0,0 +1,6 @@
+#!/command/execlineb -P
+fdmove -c 2 1
+fdmove 1 3
+s6-tcpserver4 -v 2 -1 -- 10.0.0.1 22
+s6-tcpserver-access -v 2 -DRHl0 -t 5000 -i data/rules --
+dropbear -i -K 60
diff --git a/layout/rootfs/etc/s6-rc/source-base/sshd-4/type b/layout/rootfs/etc/s6-rc/source-base/sshd-4/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/layout/rootfs/etc/s6-rc/source-base/sshd-4/type
@@ -0,0 +1 @@
+longrun
diff --git a/layout/rootfs/etc/s6-rc/source-base/syslogd-log/consumer-for b/layout/rootfs/etc/s6-rc/source-base/syslogd-log/consumer-for
new file mode 100644
index 0000000..96c5cc7
--- /dev/null
+++ b/layout/rootfs/etc/s6-rc/source-base/syslogd-log/consumer-for
@@ -0,0 +1 @@
+syslogd
diff --git a/layout/rootfs/etc/s6-rc/source-base/syslogd-log/dependencies b/layout/rootfs/etc/s6-rc/source-base/syslogd-log/dependencies
new file mode 100644
index 0000000..7c63988
--- /dev/null
+++ b/layout/rootfs/etc/s6-rc/source-base/syslogd-log/dependencies
@@ -0,0 +1 @@
+mount-rwfs
diff --git a/layout/rootfs/etc/s6-rc/source-base/syslogd-log/pipeline-name b/layout/rootfs/etc/s6-rc/source-base/syslogd-log/pipeline-name
new file mode 100644
index 0000000..c8a925a
--- /dev/null
+++ b/layout/rootfs/etc/s6-rc/source-base/syslogd-log/pipeline-name
@@ -0,0 +1 @@
+syslogd-pipeline
diff --git a/layout/rootfs/etc/s6-rc/source-base/syslogd-log/run b/layout/rootfs/etc/s6-rc/source-base/syslogd-log/run
new file mode 100755
index 0000000..b04f309
--- /dev/null
+++ b/layout/rootfs/etc/s6-rc/source-base/syslogd-log/run
@@ -0,0 +1,4 @@
+#!/command/execlineb -P
+s6-setuidgid sysllog
+exec -c
+s6-log t s1000000 n20 /var/log/syslogd
diff --git a/layout/rootfs/etc/s6-rc/source-base/syslogd-log/type b/layout/rootfs/etc/s6-rc/source-base/syslogd-log/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/layout/rootfs/etc/s6-rc/source-base/syslogd-log/type
@@ -0,0 +1 @@
+longrun
diff --git a/layout/rootfs/etc/s6-rc/source-base/syslogd/dependencies b/layout/rootfs/etc/s6-rc/source-base/syslogd/dependencies
new file mode 100644
index 0000000..c1ee812
--- /dev/null
+++ b/layout/rootfs/etc/s6-rc/source-base/syslogd/dependencies
@@ -0,0 +1 @@
+init-dev
diff --git a/layout/rootfs/etc/s6-rc/source-base/syslogd/producer-for b/layout/rootfs/etc/s6-rc/source-base/syslogd/producer-for
new file mode 100644
index 0000000..75d14f5
--- /dev/null
+++ b/layout/rootfs/etc/s6-rc/source-base/syslogd/producer-for
@@ -0,0 +1 @@
+syslogd-log
diff --git a/layout/rootfs/etc/s6-rc/source-base/syslogd/run b/layout/rootfs/etc/s6-rc/source-base/syslogd/run
new file mode 100755
index 0000000..1036f5e
--- /dev/null
+++ b/layout/rootfs/etc/s6-rc/source-base/syslogd/run
@@ -0,0 +1,4 @@
+#!/command/execlineb -P
+fdclose 0
+exec -c
+socklog
diff --git a/layout/rootfs/etc/s6-rc/source-base/syslogd/type b/layout/rootfs/etc/s6-rc/source-base/syslogd/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/layout/rootfs/etc/s6-rc/source-base/syslogd/type
@@ -0,0 +1 @@
+longrun
diff --git a/layout/rootfs/etc/shadow b/layout/rootfs/etc/shadow
index b6abce1..8059a6c 100644
--- a/layout/rootfs/etc/shadow
+++ b/layout/rootfs/etc/shadow
@@ -4,6 +4,7 @@ alias:!:14761:0:99999:7:::
nobody:!:14314:0:99999:7:::
klog:!:14793::::::
kllog:!:14793::::::
-ntp:!:14849::::::
-ntplog:!:14849::::::
+syslog:!:14793::::::
+sysllog:!:14793::::::
+sysfdh:!:15041::::::
sshlog:!:14849::::::
diff --git a/layout/rwfs/var/log/sshd-4/.empty b/layout/rwfs/var/log/sshd-4/.empty
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/layout/rwfs/var/log/sshd-4/.empty
diff --git a/layout/rwfs/var/log/syslogd/.empty b/layout/rwfs/var/log/syslogd/.empty
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/layout/rwfs/var/log/syslogd/.empty
diff --git a/lh-config.dist b/lh-config.dist
index 1972a88..b320a02 100644
--- a/lh-config.dist
+++ b/lh-config.dist
@@ -29,7 +29,7 @@ NORMALUSER=nobody
# Filesystems size, as understood by libguestfs's virt-make-fs
ROOTFS_SIZE=1024M
RWFS_SIZE=512M
-USERFS_SIZE=512M
+USERFS_SIZE=128M
# The device on which to spawn an early getty.
# Leave empty for no early getty.
diff --git a/sub/dropbear/Makefile b/sub/dropbear/Makefile
index b3b791a..823cb28 100644
--- a/sub/dropbear/Makefile
+++ b/sub/dropbear/Makefile
@@ -15,7 +15,7 @@ $(OUTPUT)/build-host/.lh_dropbear_dled: $(OUTPUT)/sources/dropbear-$(DROPBEAR_VE
$(OUTPUT)/build-host/.lh_dropbear_copied: $(OUTPUT)/build-host/.lh_dropbear_dled | $(OUTPUT)/build-build/.lh_skarnet_installed
exec setuidgid $(NORMALUSER) s6-rmrf $(OUTPUT)/build-host/dropbear-$(DROPBEAR_VERSION)
- exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-host tar jxpvf $(OUTPUT)/sources/dropbear-$(DROPBEAR_VERSION).tar.bz2
+ exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-host tar -jxpvf $(OUTPUT)/sources/dropbear-$(DROPBEAR_VERSION).tar.bz2
exec setuidgid $(NORMALUSER) s6-touch $@
$(OUTPUT)/build-host/.lh_dropbear_patched: $(OUTPUT)/build-host/.lh_dropbear_copied sub/dropbear/localoptions.h
diff --git a/sub/layout/permissions b/sub/layout/permissions
index 7f3102f..74469ba 100644
--- a/sub/layout/permissions
+++ b/sub/layout/permissions
@@ -2,6 +2,8 @@ rootfs/etc/shadow 0 0 0600
rwfs/var/tmp 0 0 1777
rwfs/var/log/klogd 102 61 2700
+rwfs/var/log/syslogd 104 61 2700
+rwfs/var/log/sshd-4 138 61 2700
userfs/home/guest 1000 100 2755
userfs/home/guest/.execline-shell 1000 100 0755
diff --git a/sub/socklog/Makefile b/sub/socklog/Makefile
new file mode 100644
index 0000000..003d613
--- /dev/null
+++ b/sub/socklog/Makefile
@@ -0,0 +1,34 @@
+
+SOCKLOG_STATIC := $(if $(filter true,$(BUILD_HOST_STATIC)),-static,)
+
+$(OUTPUT)/sources/socklog-2.1.0.tar.gz: | $(OUTPUT)/tmp/.lh_prepared $(OUTPUT)/build-build/.lh_skarnet_installed
+ exec setuidgid $(NORMALUSER) cd $(OUTPUT)/sources wget http://smarden.org/socklog/socklog-2.1.0.tar.gz
+
+$(OUTPUT)/sources/.lh_socklog_dled: $(OUTPUT)/sources/socklog-2.1.0.tar.gz | $(OUTPUT)/build-build/.lh_skarnet_installed
+ exec setuidgid $(NORMALUSER) s6-touch $@
+
+$(OUTPUT)/build-host/.lh_socklog_copied: $(OUTPUT)/sources/.lh_socklog_dled | $(OUTPUT)/build-build/.lh_skarnet_installed
+ exec setuidgid $(NORMALUSER) s6-rmrf $(OUTPUT)/build-host/package/admin/socklog-2.1.0
+ exec setuidgid $(NORMALUSER) s6-mkdir -p -- $(OUTPUT)/build-host/package
+ exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-host/package tar -zxpvf $(OUTPUT)/sources/socklog-2.1.0.tar.gz
+ exec setuidgid $(NORMALUSER) s6-touch $@
+
+$(OUTPUT)/build-host/.lh_socklog_patched: $(OUTPUT)/build-host/.lh_socklog_copied sub/socklog/patch.sed | $(OUTPUT)/build-build/.lh_skarnet_installed
+ exec setuidgid $(NORMALUSER) redirfd -w 1 $(OUTPUT)/build-host/package/admin/socklog-2.1.0/src/Makefile.patched sed -f sub/socklog/patch.sed $(OUTPUT)/build-host/package/admin/socklog-2.1.0/src/Makefile
+ exec setuidgid $(NORMALUSER) s6-touch $@
+
+$(OUTPUT)/build-host/.lh_socklog_configured: $(OUTPUT)/build-host/.lh_socklog_copied | $(OUTPUT)/build-build/.lh_skarnet_installed
+ exec setuidgid $(NORMALUSER) redirfd -w 1 $(OUTPUT)/build-host/package/admin/socklog-2.1.0/src/conf-cc s6-echo "$(BUILD_HOST_CC) -O2 -Wimplicit -Wunused -Wcomment -Wchar-subscripts -Wuninitialized -Wshadow -Wcast-qual -Wcast-align -Wwrite-strings -include errno.h"
+ exec setuidgid $(NORMALUSER) redirfd -w 1 $(OUTPUT)/build-host/package/admin/socklog-2.1.0/src/conf-ld s6-echo "$(BUILD_HOST_CC) $(SOCKLOG_STATIC)"
+ exec setuidgid $(NORMALUSER) s6-touch $@
+
+$(OUTPUT)/build-host/.lh_socklog_built: $(OUTPUT)/build-host/.lh_socklog_configured $(OUTPUT)/build-host/.lh_socklog_patched | $(OUTPUT)/build-build/.lh_skarnet_installed
+ exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-host/package/admin/socklog-2.1.0/src $(MAKE) -f Makefile.patched socklog
+ exec setuidgid $(NORMALUSER) s6-touch $@
+
+$(OUTPUT)/build-host/.lh_socklog_installed: $(OUTPUT)/build-host/.lh_socklog_built | $(OUTPUT)/tmp/.lh_prepared $(OUTPUT)/build-build/.lh_skarnet_installed
+ exec s6-mkdir -p -m 0755 $(OUTPUT)/rootfs/package/admin/socklog-2.1.0/command
+ exec makenamelink $(OUTPUT)/rootfs/package/admin socklog socklog-2.1.0 $(OUTPUT)/tmp
+ exec cp -f $(OUTPUT)/build-host/package/admin/socklog-2.1.0/src/socklog $(OUTPUT)/rootfs/package/admin/socklog-2.1.0/command/socklog
+ exec makelinks $(OUTPUT)/rootfs /command /package/admin/socklog/command
+ exec setuidgid $(NORMALUSER) s6-touch $@
diff --git a/sub/socklog/patch.sed b/sub/socklog/patch.sed
new file mode 100644
index 0000000..0540d27
--- /dev/null
+++ b/sub/socklog/patch.sed
@@ -0,0 +1,5 @@
+s/choose compile load tryshsgr\.c hasshsgr\.h1 hasshsgr\.h2 chkshsgr /choose compile load tryshsgr.c hasshsgr.h1 hasshsgr.h2 /
+s/ar cr /$(TRIPLE)-ar cr /
+s/ranlib /$(TRIPLE)-ranlib /
+s%\./chkshsgr ||%true ||%
+s%\./choose clr tryshsgr hasshsgr\.h1 hasshsgr\.h2 > hasshsgr\.h%cat hasshsgr.h1 > hasshsgr.h%