--- /dev/null
+# SPDX-License-Identifier: GPL-2.0-only
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=ubnt-manager
+PKG_VERSION:=1
+PKG_RELEASE:=$(AUTORELEASE)
+
+PKG_MAINTAINER:=Nick Hainke <vincent@systemli.org>
+PKG_LICENSE:=GPL-2.0-only
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/ubnt-manager
+ SECTION:=utils
+ CATEGORY:=Utilities
+ TITLE:=Managment app for Ubiquiti devices
+ PKGARCH:=all
+ EXTRA_DEPENDS:=dropbear
+endef
+
+define Package/ubnt-manager/description
+Managment app for Ubiquiti devices.
+endef
+
+define Package/ubnt-manager/conffiles
+/etc/config/ubnt-manager
+endef
+
+define Build/Compile
+endef
+
+define Package/ubnt-manager/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) ./files/ubnt-manager.sh $(1)/usr/bin/ubnt-manager
+ $(INSTALL_DIR) $(1)/etc/config
+ $(INSTALL_DATA) ./files/ubnt-manager.config $(1)/etc/config/ubnt-manager
+endef
+
+$(eval $(call BuildPackage,ubnt-manager))
--- /dev/null
+config device 'sample_ap' # make sure to not use dashes in name
+ option target '192.168.1.20'
+ option username 'ubnt'
+ option password 'ubnt'
+
+#config device 'sample_ap1'
+# option target '10.31.81.21'
+# option username 'ubnt'
+# option password '...'
--- /dev/null
+#!/bin/sh
+
+. /usr/share/libubox/jshn.sh
+. /lib/functions.sh
+
+log() {
+ local msg="$1"
+ logger -t ubnt-manager -s "$msg"
+}
+
+rexec() {
+ local target="$1"
+ local username="$2"
+ local password="$3"
+ local cmd="$4"
+ raw=$(DROPBEAR_PASSWORD="$password" ssh -y $username@$target "$cmd" 2>/dev/null)
+ ssh_result=$?
+}
+
+get_json_dump() {
+ local cmd="/usr/www/status.cgi"
+ rexec $* "$cmd"
+ echo $raw
+}
+
+handle_device() {
+ local device="${1//-/_}" # replace "-" with "_"
+ config_load ubnt-manager
+ config_get target "$device" target
+ config_get username "$device" username
+ config_get password "$device" password
+ ssh_result=0
+}
+
+add_device_to_list() {
+ local device="$1"
+ device_list="$device_list $device"
+}
+
+list_devices() {
+ device_list=""
+ config_load ubnt-manager
+ config_foreach add_device_to_list device device_list
+ echo $device_list
+}
+
+usage() {
+ cat <<EOF
+usage: ubnt-manager [command]
+-j | --json Dump json info
+-t | --target Target device
+-l | --list-devices List all devices
+-h | --help Brings up this menu
+EOF
+}
+
+while [ "$1" != "" ]; do
+ case $1 in
+ -t | --target)
+ shift
+ target=$1
+ handle_device $target
+ ;;
+ -j | --json)
+ json=1
+ ;;
+ -l | --list-devices)
+ list_devices
+ ;;
+ -h | --help)
+ usage
+ ;;
+ esac
+ shift
+done
+
+if [ ! -z $json ]; then
+ get_json_dump $target $username $password | sed 's/Content-Type:\ application\/json//'
+fi