Get mobile app telemetry working again.
* run syslogd on gfrg200-family Network Boxes, using minijail to let it
bind to the actual syslog port.
* advertise syslogd as a Zeroconf (Avahi) service on platforms where
it runs.
* advertise isoping as a Zeroconf service, too.
This will let mobile devices on the local network find us to run
performance tests and upload results.
Change-Id: I4412575900b78242b9f2acbc6b2a7adb6413a8d2
diff --git a/configs/gfrg200_defconfig b/configs/gfrg200_defconfig
index 391cb1f..e83b4e1 100644
--- a/configs/gfrg200_defconfig
+++ b/configs/gfrg200_defconfig
@@ -104,6 +104,7 @@
BR2_PACKAGE_GOOGLE_PLATFORM_CACHE_WARMING=y
BR2_PACKAGE_GOOGLE_PLATFORM_LOGUPLOAD=y
BR2_PACKAGE_GOOGLE_PLATFORM_SYSMGR=y
+BR2_PACKAGE_GOOGLE_PLATFORM_SYSLOG=y
BR2_PACKAGE_GOOGLE_TEST=y
BR2_PACKAGE_GOOGLE_NETWORK_BOX=y
BR2_PACKAGE_GOOGLE_STORAGE_BOX=y
diff --git a/fs/skeleton/etc/group b/fs/skeleton/etc/group
index c0aea49..1c6bfe4 100755
--- a/fs/skeleton/etc/group
+++ b/fs/skeleton/etc/group
@@ -13,6 +13,7 @@
rpcuser:x:29:
_ntp:x:30:
avahi::40:
+syslog::41:
ftp::50:
lock::54:
nobody::98:
diff --git a/fs/skeleton/etc/passwd b/fs/skeleton/etc/passwd
index f592857..37b277e 100755
--- a/fs/skeleton/etc/passwd
+++ b/fs/skeleton/etc/passwd
@@ -6,9 +6,11 @@
rpcuser:x:29:29:RPC Service User:/var/tmp:/dev/null
_ntp:x:30:30:OpenNTP Daemon:/var/empty/ntp:/dev/null
avahi:x:40:40:Avahi mDNS:/:/dev/null
+syslog:*:41:41:syslogd:/var/tmp:/dev/null
nobody:*:99:99:Nobody:/:/dev/null
dbus:x:102:105::/var/run/dbus:/dev/null
video:x:200:200:Video User:/var/media:/dev/null
appclient:x:201:201:Application User:/:/dev/null
prism:$1$fufhpwhn$eAwIc7tGVHqELSV1MnPP91:300:300:Prism User:/var/prism:/usr/bin/clish
nfsnobody:x:65534:65534:Anonymous NFS User:/var/tmp:/dev/null
+
diff --git a/package/google/google_platform/Config.in b/package/google/google_platform/Config.in
index 8a462d0..8d0ca58 100644
--- a/package/google/google_platform/Config.in
+++ b/package/google/google_platform/Config.in
@@ -101,6 +101,12 @@
help
Include the ledpattern tool.
+config BR2_PACKAGE_GOOGLE_PLATFORM_SYSLOG
+ bool "include syslogd"
+ default n
+ help
+ Simple syslog daemon with strong filtering support.
+
config BR2_PACKAGE_GOOGLE_OPENBOX
bool "Openbox Release"
default n
diff --git a/package/google/google_platform/google_platform.mk b/package/google/google_platform/google_platform.mk
index b660253..4b7923d 100644
--- a/package/google/google_platform/google_platform.mk
+++ b/package/google/google_platform/google_platform.mk
@@ -143,6 +143,10 @@
BUILD_LEDPATTERN=y
endif
+ifeq ($(BR2_PACKAGE_GOOGLE_PLATFORM_SYSLOG),y)
+BUILD_SYSLOG=y
+endif
+
ifneq ($(BR2_PACKAGE_GOOGLE_FIBER_JACK),y)
# fiber jack kernel is too old for the new-style loguploader for now
BUILD_LOGUPLOAD=y
@@ -277,6 +281,11 @@
$(INSTALL) -m 0755 -D -T package/google/google_platform/gfiber_public.der/$(PUB_KEY) $(TARGET_DIR)/etc/gfiber_public.der
$(if $(BR2_PACKAGE_GOOGLE_TV_BOX),mkdir -p -m 0755 $(TARGET_DIR)/usr/sv/)
$(if $(BR2_PACKAGE_GOOGLE_TV_BOX),$(INSTALL) -m 0555 -D package/google/google_platform/*.ts $(TARGET_DIR)/usr/sv/)
+ $(INSTALL) -m 0644 -D package/google/google_platform/syslog.conf $(TARGET_DIR)/etc/
+
+ # Avahi service files
+ $(INSTALL) -m 0644 -D package/google/google_platform/services/isoping.service $(TARGET_DIR)/etc/avahi/services
+ $(if $(BUILD_SYSLOG),$(INSTALL) -m 0644 -D package/google/google_platform/services/syslog.service $(TARGET_DIR)/etc/avahi/services)
# registercheck
#TODO(apenwarr): do we actually need this for anything?
diff --git a/package/google/google_platform/rc/syslog/dependencies b/package/google/google_platform/rc/syslog/dependencies
new file mode 100644
index 0000000..f977fbb
--- /dev/null
+++ b/package/google/google_platform/rc/syslog/dependencies
@@ -0,0 +1 @@
+firewall
diff --git a/package/google/google_platform/rc/syslog/run b/package/google/google_platform/rc/syslog/run
new file mode 100755
index 0000000..4acc747
--- /dev/null
+++ b/package/google/google_platform/rc/syslog/run
@@ -0,0 +1,5 @@
+#!/usr/bin/execlineb
+fdmove -c 2 1
+if { runnable syslogd }
+# run with CAP_NET_BIND_SERVICE
+minijail0 -u syslog -g syslog -c 0x400 /bin/syslogd -l 0.0.0.0:514
diff --git a/package/google/google_platform/rc/syslog/type b/package/google/google_platform/rc/syslog/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/package/google/google_platform/rc/syslog/type
@@ -0,0 +1 @@
+longrun
diff --git a/package/google/google_platform/services/isoping.service b/package/google/google_platform/services/isoping.service
new file mode 100644
index 0000000..6a6618d
--- /dev/null
+++ b/package/google/google_platform/services/isoping.service
@@ -0,0 +1,9 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
+<service-group>
+ <name replace-wildcards="yes">isoping on %h</name>
+ <service>
+ <type>_isoping._udp</type>
+ <port>4948</port>
+ </service>
+</service-group>
diff --git a/package/google/google_platform/services/syslog.service b/package/google/google_platform/services/syslog.service
new file mode 100644
index 0000000..172abc6
--- /dev/null
+++ b/package/google/google_platform/services/syslog.service
@@ -0,0 +1,9 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
+<service-group>
+ <name replace-wildcards="yes">syslog on %h</name>
+ <service>
+ <type>_syslog._udp</type>
+ <port>514</port>
+ </service>
+</service-group>
diff --git a/package/google/google_platform/syslog.conf b/package/google/google_platform/syslog.conf
new file mode 100644
index 0000000..8d98f9d
--- /dev/null
+++ b/package/google/google_platform/syslog.conf
@@ -0,0 +1 @@
+.*