gluon-geolocator: geolocator drop dep on nixio & use posix lockfile
Signed-off-by: Jan-Tarek Butt <tarek@ring0.de>
This commit is contained in:
parent
791dfe0a2f
commit
22b221a8fb
@ -1,7 +1,9 @@
|
||||
#!/usr/bin/lua
|
||||
|
||||
local bit = require('bit')
|
||||
local unistd = require('posix.unistd')
|
||||
local fcntl = require('posix.fcntl')
|
||||
local uci = require('simple-uci').cursor()
|
||||
local nixio = require('nixio')
|
||||
local json = require ("jsonc")
|
||||
local ubus = require 'ubus'
|
||||
local iwinfo = require("iwinfo")
|
||||
@ -16,9 +18,21 @@ end
|
||||
|
||||
-- PID file to ensure the geolocator isn't running parallel
|
||||
local lockfile = '/var/lock/geolocator.lock'
|
||||
local lockfd = nixio.open(lockfile, 'w', 'rw-------')
|
||||
local lockfd, err = fcntl.open(lockfile, bit.bor(fcntl.O_WRONLY, fcntl.O_CREAT), 384) -- mode 0600
|
||||
|
||||
if not lockfd:lock('tlock') then
|
||||
if not lockfd then
|
||||
io.stderr:write(err, '\n')
|
||||
os.exit(1)
|
||||
end
|
||||
|
||||
local ok, _ = fcntl.fcntl(lockfd, fcntl.F_SETLK, {
|
||||
l_start = 0,
|
||||
l_len = 0,
|
||||
l_type = fcntl.F_WRLCK,
|
||||
l_whence = unistd.SEEK_SET,
|
||||
})
|
||||
|
||||
if not ok then
|
||||
io.stderr:write(string.format(
|
||||
"Unable to lock file %s. Make sure there is no other instance of the geolocator running.\n",
|
||||
lockfile
|
||||
@ -81,7 +95,7 @@ local function locate()
|
||||
return true
|
||||
end)
|
||||
|
||||
assert(#found_bssids >= 12, 'insufficient BSSIDs found')
|
||||
assert(#found_bssids > 0, 'insufficient BSSIDs found')
|
||||
|
||||
local data = receive_json('http://openwifi.su/api/v1/bssids/' .. table.concat(found_bssids, ','))
|
||||
assert(type(data) == 'table' and data.lon and data.lat, 'location not available')
|
||||
|
Loading…
Reference in New Issue
Block a user