diff --git a/package/gluon-authorized-keys/Makefile b/package/gluon-authorized-keys/Makefile new file mode 100644 index 00000000..6ef90da3 --- /dev/null +++ b/package/gluon-authorized-keys/Makefile @@ -0,0 +1,36 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=gluon-authorized-keys +PKG_VERSION:=2 + +PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) + +include $(GLUONDIR)/include/package.mk + +define Package/gluon-authorized-keys + SECTION:=gluon + CATEGORY:=Gluon + TITLE:=Fill /etc/dropbear/authorized_keys from site.conf + DEPENDS:=+gluon-core +endef + +define Build/Prepare + mkdir -p $(PKG_BUILD_DIR) +endef + +define Build/Configure +endef + +define Build/Compile +endef + +define Package/gluon-authorized-keys/install + $(CP) ./files/* $(1)/ +endef + +define Package/gluon-authorized-keys/postinst +#!/bin/sh +$(call GluonCheckSite,check_site.lua) +endef + +$(eval $(call BuildPackage,gluon-authorized-keys)) diff --git a/package/gluon-authorized-keys/check_site.lua b/package/gluon-authorized-keys/check_site.lua new file mode 100644 index 00000000..d1acfabe --- /dev/null +++ b/package/gluon-authorized-keys/check_site.lua @@ -0,0 +1 @@ +need_string_array 'authorized_keys' diff --git a/package/gluon-authorized-keys/files/lib/gluon/upgrade/authorized-keys/invariant/010-authorized-keys b/package/gluon-authorized-keys/files/lib/gluon/upgrade/authorized-keys/invariant/010-authorized-keys new file mode 100755 index 00000000..643fa076 --- /dev/null +++ b/package/gluon-authorized-keys/files/lib/gluon/upgrade/authorized-keys/invariant/010-authorized-keys @@ -0,0 +1,22 @@ +#!/usr/bin/lua + +local site = require 'gluon.site_config' +local file = '/etc/dropbear/authorized_keys' + +local keys = {} + +function load_keys() + for line in io.lines(file) do + keys[line] = true + end +end + +pcall(load_keys) + +local f = io.open(file, 'a') +for _, key in ipairs(site.authorized_keys) do + if not keys[key] then + f:write(key .. '\n') + end +end +f:close()