diff --git a/net/smartsnmpd/Makefile b/net/smartsnmpd/Makefile deleted file mode 100644 index ed067ca42..000000000 --- a/net/smartsnmpd/Makefile +++ /dev/null @@ -1,84 +0,0 @@ -# -# Copyright (C) 2014 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=smartsnmpd -PKG_VERSION:=2015-02-22 -PKG_RELEASE:=2 - -PKG_SOURCE_PROTO:=git -PKG_SOURCE_URL:=https://github.com/credosemi/smartsnmp -PKG_SOURCE_VERSION:=ca1d455fd06748caa629fe7ad16a47cec8877b93 -PKG_MIRROR_HASH:=fda89ec37944b4f800eb3c0147678745b57f08c87f10d246d3c9d165a43418b4 - -PKG_MAINTAINER:=Xiongfei Guo -PKG_LICENSE:=GPL-2.0-or-later -PKG_LICENSE_FILES:=LICENSE - -PKG_BUILD_DEPENDS:=scons/host - -include $(INCLUDE_DIR)/package.mk -include ../../devel/scons/scons.mk - -define Package/smartsnmpd - SECTION:=net - CATEGORY:=Network - DEPENDS+=+lua +liblua +libubox +libuci-lua +libubus-lua - TITLE:=Smart-SNMP (Agent) - URL:=https://github.com/credosemi/smartsnmp -endef - -define Package/smartsnmpd/description -smartsnmpd is an implementation of SNMP Agent. Its goal is "Easily -writing boring SNMP MIB with Lua". This package add native support -for OpenWrt. Include using ubus and uci to get system info/status. -And, it use libubox/uloop as low level event-driven library. -endef - -ifeq ($(CONFIG_BIG_ENDIAN),y) - TARGET_CFLAGS += -DBIG_ENDIAN -else - TARGET_CFLAGS += -DLITTLE_ENDIAN -endif - -SCONS_OPTIONS += --transport=uloop - -define Build/Configure - (cd $(PKG_BUILD_DIR); \ - $(SCONS_VARS) \ - CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS)" \ - scons \ - prefix=/usr \ - $(SCONS_OPTIONS) \ - ) -endef - -define Package/smartsnmpd/conffiles -/etc/config/smartsnmpd -endef - -define Package/smartsnmpd/install - $(INSTALL_DIR) $(1)/usr/sbin - $(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/smartsnmpd $(1)/usr/sbin/smartsnmpd - - $(INSTALL_DIR) $(1)/usr/lib/lua/smartsnmp - $(INSTALL_BIN) $(PKG_BUILD_DIR)/build/smartsnmp/core.so $(1)/usr/lib/lua/smartsnmp/core.so - $(INSTALL_BIN) $(PKG_BUILD_DIR)/lualib/smartsnmp/*.lua $(1)/usr/lib/lua/smartsnmp/ - - $(INSTALL_DIR) $(1)/usr/lib/lua/smartsnmp/mibs - $(INSTALL_BIN) ./files/mibs/*.lua $(1)/usr/lib/lua/smartsnmp/mibs/ - - $(INSTALL_DIR) $(1)/etc/config - $(INSTALL_DATA) ./files/smartsnmpd.conf $(1)/etc/config/smartsnmpd - - $(INSTALL_DIR) $(1)/etc/init.d - $(INSTALL_BIN) ./files/smartsnmpd.init $(1)/etc/init.d/smartsnmpd -endef - -$(eval $(call BuildPackage,smartsnmpd)) - diff --git a/net/smartsnmpd/files/mibs/dummy.lua b/net/smartsnmpd/files/mibs/dummy.lua deleted file mode 100644 index e49ca683b..000000000 --- a/net/smartsnmpd/files/mibs/dummy.lua +++ /dev/null @@ -1,24 +0,0 @@ --- --- This file is part of SmartSNMP --- Copyright (C) 2014, Credo Semiconductor Inc. --- --- This program is free software; you can redistribute it and/or modify --- it under the terms of the GNU General Public License as published by --- the Free Software Foundation; either version 2 of the License, or --- (at your option) any later version. --- --- This program is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --- GNU General Public License for more details. --- --- You should have received a copy of the GNU General Public License along --- with this program; if not, write to the Free Software Foundation, Inc., --- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. --- - -local mib = require "smartsnmp" - -local dummy = {} - -return dummy diff --git a/net/smartsnmpd/files/mibs/interfaces.lua b/net/smartsnmpd/files/mibs/interfaces.lua deleted file mode 100644 index 01cea6aec..000000000 --- a/net/smartsnmpd/files/mibs/interfaces.lua +++ /dev/null @@ -1,125 +0,0 @@ --- --- This file is part of SmartSNMP --- Copyright (C) 2014, Credo Semiconductor Inc. --- --- This program is free software; you can redistribute it and/or modify --- it under the terms of the GNU General Public License as published by --- the Free Software Foundation; either version 2 of the License, or --- (at your option) any later version. --- --- This program is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --- GNU General Public License for more details. --- --- You should have received a copy of the GNU General Public License along --- with this program; if not, write to the Free Software Foundation, Inc., --- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. --- - -local mib = require "smartsnmp" -require "ubus" -require "uloop" - -uloop.init() - -local conn = ubus.connect() -if not conn then - error("Failed to connect to ubusd") -end - -local if_cache = {} -local if_status_cache = {} -local if_index_cache = {} - -local last_load_time = os.time() -local function need_to_reload() - if os.time() - last_load_time >= 3 then - last_load_time = os.time() - return true - else - return false - end -end - -local function load_config() - if need_to_reload() == true then - if_cache = {} - if_status_cache = {} - if_index_cache = {} - - -- if description - for k, v in pairs(conn:call("network.device", "status", {})) do - if_status_cache[k] = {} - end - - for name_ in pairs(if_status_cache) do - for k, v in pairs(conn:call("network.device", "status", { name = name_ })) do - if k == 'mtu' then - if_status_cache[name_].mtu = v - elseif k == 'macaddr' then - if_status_cache[name_].macaddr = v - elseif k == 'up' then - if v == true then - if_status_cache[name_].up = 1 - else - if_status_cache[name_].up = 2 - end - elseif k == 'statistics' then - for item, stat in pairs(v) do - if item == 'rx_bytes' then - if_status_cache[name_].in_octet = stat - elseif item == 'tx_bytes' then - if_status_cache[name_].out_octet = stat - elseif item == 'rx_errors' then - if_status_cache[name_].in_errors = stat - elseif item == 'tx_errors' then - if_status_cache[name_].out_errors = stat - elseif item == 'rx_dropped' then - if_status_cache[name_].in_discards = stat - elseif item == 'tx_dropped' then - if_status_cache[name_].out_discards = stat - end - end - end - end - end - - if_cache['desc'] = {} - for name, status in pairs(if_status_cache) do - table.insert(if_cache['desc'], name) - for k, v in pairs(status) do - if if_cache[k] == nil then if_cache[k] = {} end - table.insert(if_cache[k], v) - end - end - - -- if index - for i in ipairs(if_cache['desc']) do - table.insert(if_index_cache, i) - end - end -end - -mib.module_methods.or_table_reg("1.3.6.1.2.1.2", "The MIB module for managing Interfaces implementations") - -local ifGroup = { - [1] = mib.ConstInt(function () load_config() return #if_index_cache end), - [2] = { - [1] = { - [1] = mib.ConstIndex(function () load_config() return if_index_cache end), - [2] = mib.ConstString(function (i) load_config() return if_cache['desc'][i] end), - [4] = mib.ConstInt(function (i) load_config() return if_cache['mtu'][i] end), - [6] = mib.ConstString(function (i) load_config() return if_cache['macaddr'][i] end), - [8] = mib.ConstInt(function (i) load_config() return if_cache['up'][i] end), - [10] = mib.ConstCount(function (i) load_config() return if_cache['in_octet'][i] end), - [13] = mib.ConstCount(function (i) load_config() return if_cache['in_discards'][i] end), - [14] = mib.ConstCount(function (i) load_config() return if_cache['in_errors'][i] end), - [16] = mib.ConstCount(function (i) load_config() return if_cache['out_octet'][i] end), - [19] = mib.ConstCount(function (i) load_config() return if_cache['out_discards'][i] end), - [20] = mib.ConstCount(function (i) load_config() return if_cache['out_errors'][i] end), - } - } -} - -return ifGroup diff --git a/net/smartsnmpd/files/mibs/system.lua b/net/smartsnmpd/files/mibs/system.lua deleted file mode 100644 index 5b0a4af95..000000000 --- a/net/smartsnmpd/files/mibs/system.lua +++ /dev/null @@ -1,176 +0,0 @@ --- --- This file is part of SmartSNMP --- Copyright (C) 2014, Credo Semiconductor Inc. --- --- This program is free software; you can redistribute it and/or modify --- it under the terms of the GNU General Public License as published by --- the Free Software Foundation; either version 2 of the License, or --- (at your option) any later version. --- --- This program is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --- GNU General Public License for more details. --- --- You should have received a copy of the GNU General Public License along --- with this program; if not, write to the Free Software Foundation, Inc., --- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. --- - -local mib = require "smartsnmp" -local uci = require "uci" - --- System config -local context = uci.cursor("/etc/config", "/tmp/.uci") - --- scalar index -local sysDesc = 1 -local sysObjectID = 2 -local sysUpTime = 3 -local sysContact = 4 -local sysName = 5 -local sysLocation = 6 -local sysServices = 7 -local sysORLastChange = 8 - --- table index -local sysORTable = 9 - --- entry index -local sysOREntry = 1 - --- list index -local sysORIndex = 1 -local sysORID = 2 -local sysORDesc = 3 -local sysORUpTime = 4 - -local startup_time = 0 -local or_last_changed_time = 0 - -local function mib_system_startup(time) - startup_time = time - or_last_changed_time = time -end - -mib_system_startup(os.time()) - -local sysGroup = {} -local or_oid_cache = {} -local or_index_cache = {} -local or_table_cache = {} - -local or_table_reg = function (oid, desc) - local row = {} - row['oid'] = {} - for i in string.gmatch(oid, "%d") do - table.insert(row['oid'], tonumber(i)) - end - row['desc'] = desc - row['uptime'] = os.time() - table.insert(or_table_cache, row) - - or_last_changed_time = os.time() - - or_oid_cache[oid] = #or_table_cache - - or_index_cache = {} - for i in ipairs(or_table_cache) do - table.insert(or_index_cache, i) - end -end - -local or_table_unreg = function (oid) - local or_idx = or_oid_cache[oid] - - if or_table_cache[or_idx] ~= nil then - table.remove(or_table_cache, or_idx) - or_last_changed_time = os.time() - - or_index_cache = {} - for i in ipairs(or_table_cache) do - table.insert(or_index_cache, i) - end - end -end - -local last_load_time = os.time() -local function need_to_reload() - if os.difftime(os.time(), last_load_time) < 3 then - return false - else - last_load_time = os.time() - return true - end -end - -local function load_config() - if need_to_reload() == true then - context:load("smartsnmpd") - end -end - -context:load("smartsnmpd") - -local sysMethods = { - ["or_table_reg"] = or_table_reg, - ["or_table_unreg"] = or_table_unreg -} -mib.module_method_register(sysMethods) - -sysGroup = { - rocommunity = 'public', - [sysDesc] = mib.ConstString(function () load_config() return mib.sh_call("uname -a") end), - [sysObjectID] = mib.ConstOid(function () - load_config() - local oid - local objectid - context:foreach("smartsnmpd", "smartsnmpd", function (s) - objectid = s.objectid - end) - if objectid ~= nil then - oid = {} - for i in string.gmatch(objectid, "%d+") do - table.insert(oid, tonumber(i)) - end - end - return oid - end), - [sysUpTime] = mib.ConstTimeticks(function () load_config() return os.difftime(os.time(), startup_time) * 100 end), - [sysContact] = mib.ConstString(function () - load_config() - local contact - context:foreach("smartsnmpd", "smartsnmpd", function (s) - contact = s.contact - end) - return contact - end), - [sysName] = mib.ConstString(function () load_config() return mib.sh_call("uname -n") end), - [sysLocation] = mib.ConstString(function () - load_config() - local location - context:foreach("smartsnmpd", "smartsnmpd", function (s) - location = s.location - end) - return location - end), - [sysServices] = mib.ConstInt(function () - load_config() - local services - context:foreach("smartsnmpd", "smartsnmpd", function (s) - services = tonumber(s.services) - end) - return services - end), - [sysORLastChange] = mib.ConstTimeticks(function () load_config() return os.difftime(os.time(), or_last_changed_time) * 100 end), - [sysORTable] = { - [sysOREntry] = { - [sysORIndex] = mib.UnaIndex(function () load_config() return or_index_cache end), - [sysORID] = mib.ConstOid(function (i) load_config() return or_table_cache[i].oid end), - [sysORDesc] = mib.ConstString(function (i) load_config() return or_table_cache[i].desc end), - [sysORUpTime] = mib.ConstTimeticks(function (i) load_config() return os.difftime(os.time(), or_table_cache[i].uptime) * 100 end), - } - } -} - -return sysGroup diff --git a/net/smartsnmpd/files/smartsnmpd.conf b/net/smartsnmpd/files/smartsnmpd.conf deleted file mode 100644 index aace5a6af..000000000 --- a/net/smartsnmpd/files/smartsnmpd.conf +++ /dev/null @@ -1,21 +0,0 @@ -config smartsnmpd - option port '161' - option ro_community 'public' - option rw_community 'private' - option mib_module_path 'mibs' - option objectid '1.2.3.4' - option contact 'Me ' - option location 'Shanghai' - option services '72' - -config smartsnmpd_module - option oid "1.3.6.1.2.1.1" - option module 'system' - -config smartsnmpd_module - option oid "1.3.6.1.2.1.2" - option module 'interfaces' - -config smartsnmpd_module - option oid "1.3.6.1.1" - option module 'dummy' diff --git a/net/smartsnmpd/files/smartsnmpd.init b/net/smartsnmpd/files/smartsnmpd.init deleted file mode 100755 index 8cad81418..000000000 --- a/net/smartsnmpd/files/smartsnmpd.init +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/sh /etc/rc.common -# Copyright (C) 2014 OpenWrt.org - -START=97 - -USE_PROCD=1 -PROG=/usr/sbin/smartsnmpd -CONFIGFILE=/etc/smartsnmpd.conf - -smartsnmpd_mib_module() { - local cfg="$1" - config_get OID "$cfg" oid - config_get MODULE "$cfg" module - echo " ['$OID'] = '$MODULE'," >> $CONFIGFILE -} - -start_service() { - include /lib/functions - - config_load smartsnmpd - - procd_open_instance - procd_set_param command $PROG -c $CONFIGFILE - procd_set_param file $CONFIGFILE - procd_set_param respawn - procd_close_instance - - # before we can call xappend - mkdir -p "$(dirname $CONFIGFILE)" - - echo "-- auto-generated config file from /etc/config/smartsnmpd" > $CONFIGFILE - - { - config_get PORT smartsnmpd port 161 - echo "port = $PORT" - - config_get RO_COMMUNITY smartsnmpd ro_community 'public' - config_get RW_COMMUNITY smartsnmpd rw_community 'private' - echo "ro_community = '$RO_COMMUNITY'" - echo "rw_community = '$RW_COMMUNITY'" - - config_get MIB_MODULE_PATH smartsnmpd mib_module_path '/usr/lib/lua/smartsnmp/mibs/' - echo "mib_module_path = '$MIB_MODULE_PATH'" - - echo "mib_modules = {" - config_foreach smartsnmpd_mib_module smartsnmpd_module - echo "}" - } >> $CONFIGFILE -} diff --git a/net/smartsnmpd/patches/010-2to3.patch b/net/smartsnmpd/patches/010-2to3.patch deleted file mode 100644 index 4acca3193..000000000 --- a/net/smartsnmpd/patches/010-2to3.patch +++ /dev/null @@ -1,82 +0,0 @@ ---- a/SConstruct -+++ b/SConstruct -@@ -133,21 +133,21 @@ env = Environment( - ) - - # handle options/environment varibles. --if os.environ.has_key('CC'): -+if 'CC' in os.environ: - env.Replace(CC = os.environ['CC']) - - # CFLAGS - if GetOption("cflags") != "": - env.Append(CFLAGS = GetOption("cflags")) --elif os.environ.has_key('CFLAGS'): -+elif 'CFLAGS' in os.environ: - env.Append(CFLAGS = os.environ['CFLAGS']) - - # LDFLAGS - if GetOption("ldflags") != "": - env.Replace(LINKFLAGS = GetOption("ldflags")) --elif os.environ.has_key('LDFLAGS'): -+elif 'LDFLAGS' in os.environ: - env.Replace(LINKFLAGS = os.environ['LDFLAGS']) --elif os.environ.has_key('LINKFLAGS'): -+elif 'LINKFLAGS' in os.environ: - env.Replace(LINKFLAGS = os.environ['LINKFLAGS']) - - # LIBS -@@ -183,10 +183,10 @@ elif GetOption("transport") == 'built-in' or GetOption("transport") == '': - elif GetOption("evloop") == 'select' or GetOption("evloop") == '': - pass - else: -- print "Error: Not the right event driving type" -+ print("Error: Not the right event driving type") - Exit(1) - else: -- print "Error: Transport not found!" -+ print("Error: Transport not found!") - Exit(1) - - # autoconf -@@ -205,18 +205,18 @@ else: - if GetOption("transport") == 'built-in' or GetOption("transport") == '': - if GetOption("evloop") == 'epoll': - if not conf.CheckEpoll(): -- print "Error: epoll failed" -+ print("Error: epoll failed") - Exit(1) - elif GetOption("evloop") == 'kqueue': - if not conf.CheckKqueue(): -- print "Error: Kqueue failed" -+ print("Error: Kqueue failed") - Exit(1) - elif GetOption("evloop") == 'select' or GetOption("evloop") == '': - if not conf.CheckSelect(): -- print "Error: select failed" -+ print("Error: select failed") - Exit(1) - else: -- print "Error: Not the right event driving type" -+ print("Error: Not the right event driving type") - Exit(1) - - # CFLAGS -@@ -232,7 +232,7 @@ if conf.CheckLib('lua'): - elif conf.CheckLib('lua5.1'): - env.Append(LIBS = ['lua5.1']) - else: -- print "Error: liblua or liblua5.1 not found!" -+ print("Error: liblua or liblua5.1 not found!") - Exit(1) - - # find lua header files -@@ -241,7 +241,7 @@ if conf.CheckCHeader('lua.h'): - elif conf.CheckCHeader('lua5.1/lua.h'): - env.Append(CFLAGS = ['-I/usr/include/lua5.1']) - else: -- print "Error: lua.h not found" -+ print("Error: lua.h not found") - Exit(1) - - env = conf.Finish() diff --git a/net/smartsnmpd/patches/020-flags.patch b/net/smartsnmpd/patches/020-flags.patch deleted file mode 100644 index 05d097134..000000000 --- a/net/smartsnmpd/patches/020-flags.patch +++ /dev/null @@ -1,44 +0,0 @@ ---- a/SConstruct -+++ b/SConstruct -@@ -134,21 +134,21 @@ env = Environment( - - # handle options/environment varibles. - if 'CC' in os.environ: -- env.Replace(CC = os.environ['CC']) -+ env.Replace(CC = Split(os.environ['CC'])) - - # CFLAGS - if GetOption("cflags") != "": - env.Append(CFLAGS = GetOption("cflags")) - elif 'CFLAGS' in os.environ: -- env.Append(CFLAGS = os.environ['CFLAGS']) -+ env.Append(CFLAGS = Split(os.environ['CFLAGS'])) - - # LDFLAGS - if GetOption("ldflags") != "": - env.Replace(LINKFLAGS = GetOption("ldflags")) - elif 'LDFLAGS' in os.environ: -- env.Replace(LINKFLAGS = os.environ['LDFLAGS']) -+ env.Replace(LINKFLAGS = Split(os.environ['LDFLAGS'])) - elif 'LINKFLAGS' in os.environ: -- env.Replace(LINKFLAGS = os.environ['LINKFLAGS']) -+ env.Replace(LINKFLAGS = Split(os.environ['LINKFLAGS'])) - - # LIBS - if GetOption("libs") != "": -@@ -192,15 +192,6 @@ else: - # autoconf - conf = Configure(env, custom_tests = {'CheckEpoll' : CheckEpoll, 'CheckSelect' : CheckSelect, 'CheckKqueue' : CheckKqueue, 'CheckEndian' : CheckEndian}) - --# Endian check --endian = conf.CheckEndian() --if endian == 'Big': -- env.Append(CFLAGS = ["-DBIG_ENDIAN"]) --elif endian == 'Little': -- env.Append(CFLAGS = ["-DLITTLE_ENDIAN"]) --else: -- raise SConfError("Error when testing the endian.") -- - # built-in event loop check - if GetOption("transport") == 'built-in' or GetOption("transport") == '': - if GetOption("evloop") == 'epoll':