--- /dev/null
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=rpcd-mod-packagelist
+PKG_VERSION:=0.1
+PKG_RELEASE:=1
+PKG_LICENSE:=GPL-2.0
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/rpcd-mod-packagelist
+ SECTION:=utils
+ CATEGORY:=Base system
+ TITLE:=ubus packagelist
+ MAINTAINER:=Paul Spooren <paul@spooren.de>
+ DEPENDS:=rpcd @!CLEAN_IPKG
+endef
+
+define Package/rpcd-mod-packagelist/description
+ add ubus call to receive user installed packages without the need of opkg installed
+endef
+
+define Build/Compile
+endef
+
+define Build/Configure
+endef
+
+define Package/rpcd-mod-packagelist/install
+ $(INSTALL_DIR) $(1)/usr/share/rpcd/acl.d/
+ $(INSTALL_BIN) ./files/packagelist.acl $(1)/usr/share/rpcd/acl.d/packagelist.json
+
+ $(INSTALL_DIR) $(1)/usr/libexec/rpcd/
+ $(INSTALL_BIN) ./files/packagelist.rpcd $(1)/usr/libexec/rpcd/packagelist
+endef
+
+$(eval $(call BuildPackage,rpcd-mod-packagelist))
--- /dev/null
+#!/bin/sh
+
+. /usr/share/libubox/jshn.sh
+
+case "$1" in
+list)
+ json_init
+ json_add_object "list"
+ json_dump
+ ;;
+call)
+ case "$2" in
+ list)
+ json_init;
+ json_add_object "packagelist"
+
+ if [ -f /usr/lib/opkg/status ]; then
+ while read var p1 p2 p3; do
+ if [ "$var" = "Package:" ]; then
+ pkg="$p1"
+ fi
+ if [ "$var" = "Version:" ]; then
+ version="$p1"
+ fi
+
+ if [ "$var" = "Status:" \
+ -a "$p1" = "install" \
+ -a "$p2" = "user" \
+ -a "$p3" = "installed" ]; then
+ json_add_string "$pkg" "$version";
+ fi
+ done < /usr/lib/opkg/status
+ fi
+
+ json_close_object
+ json_dump
+ ;;
+ esac
+ ;;
+esac