#!/usr/bin/lua
json = require("json")
+ socket = require("socket")
function getConfig(configname)
- local uci=require("uci")
- local cur=uci.cursor()
+ local status,uci = pcall(require,"uci")
+
local config
- if configname then
- config=configname
- else
- config="beacon"
- end
- logging = cur.get(config,"logging","enabled")
+ if status then
+
+ if configname then
+ config=configname
+ else
+ config="beacon"
+ end
+
+ local cur=uci.cursor()
- mqtt_host = cur.get(config,"mqtt","host")
- mqtt_port = cur.get(config,"mqtt","port")
- mqtt_id = cur.get(config,"mqtt","id")
- mqtt_topic = cur.get(config,"mqtt","topic")
+ logging = cur.get(config,"logging","enabled")
- mqtt_user = cur.get(config,"mqtt","user")
- mqtt_passwd = cur.get(config,"mqtt","password")
+ mqtt_host = cur.get(config,"mqtt","host")
+ mqtt_port = cur.get(config,"mqtt","port")
+ mqtt_id = cur.get(config,"mqtt","id")
+ mqtt_topic = cur.get(config,"mqtt","topic")
+
+ mqtt_user = cur.get(config,"mqtt","user")
+ mqtt_passwd = cur.get(config,"mqtt","password")
+ else
+
+ local status,ini = pcall(require,"ini")
+ if not status then
+ os.exit(1)
+ end
+
+ if configname then
+ config=configname
+ else
+ config="/etc/beacon.ini"
+ end
+
+ local cur=ini.parse_file(config)
+
+ logging = cur["logging"]["enabled"]
+
+ mqtt_host = cur["mqtt"]["host"]
+ mqtt_port = cur["mqtt"]["port"]
+ mqtt_id = cur["mqtt"]["id"]
+ mqtt_topic = cur["mqtt"]["topic"]
+
+ mqtt_user = cur["mqtt"]["user"]
+ mqtt_passwd = cur["mqtt"]["password"]
+
+ end
+
+ hostname = socket.dns.gethostname()
if mqtt_host and not mqtt_id then
socket = require("socket")
posix = require("posix")
- hostname = socket.dns.gethostname()
pid = posix.getpid()
mqtt_id="beaconmon-"..hostname.."-"..pid
end
function printLog(str)
if logging=="yes" then
capture("logger -t beaconmon \""..str.."\"")
- else
+ print(str)
+ elseif logging=="syslog" then
+ capture("logger -t beaconmon \""..str.."\"")
+ elseif logging=="stdout" then
print(str)
end
end
function open_dump()
- run_command("/bin/kill `/usr/bin/pgrep btmon`")
- run_command("/bin/kill `/usr/bin/pgrep hcitool`")
+ run_command("/usr/bin/pkill btmon")
+ run_command("/usr/bin/pkill hcitool")
f = assert(io.popen ("/usr/bin/stdbuf -o0 /usr/bin/btmon"))
- run_command("/usr/bin/hciconfig hci0 down")
- run_command("/usr/bin/hciconfig hci0 up")
- f_null = assert(io.popen ("/usr/bin/hcitool lescan --duplicates --passive"))
+ run_command("hciconfig hci0 down")
+ run_command("hciconfig hci0 up")
+ f_null = assert(io.popen ("hcitool lescan --duplicates --passive"))
return f
local type
local name
+ packet['origin'] = hostname
+
mac = packet['Address']
uuid = packet['UUID']
type = packet['Type']
name = packet['Name (complete)']
- print(dump(packet))
-
if type and starts_with(type,'iBeacon') then
details=uuid
elseif name then