003-site-auto-select 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #!/usr/bin/lua
  2. local config = require 'gluon.sites'
  3. local uci = require('luci.model.uci').cursor()
  4. function is_site_valid(site)
  5. for _, tmp in pairs(config) do
  6. if tmp.site_code == site then
  7. return true
  8. end
  9. end
  10. return false
  11. end
  12. function set_currentsite(site)
  13. if site and is_site_valid(site) then
  14. uci:set('currentsite', 'current', 'name', site)
  15. uci:save('currentsite')
  16. uci:commit('currentsite')
  17. return true
  18. end
  19. return false
  20. end
  21. function get_site_by_geo(latitude, longitude)
  22. return nil
  23. end
  24. local currentsite = uci:get('currentsite', 'current', 'name')
  25. local configured = is_site_valid(currentsite)
  26. if configured == false then
  27. local latitude = uci:get_first('gluon-node-info', 'location', 'latitude')
  28. local longitude = uci:get_first('gluon-node-info', 'location', 'longitude')
  29. if latitude and longitude then
  30. currentsite = get_site_by_geo(latitude, longitude)
  31. configured = set_currentsite(currentsite)
  32. end
  33. end
  34. if configured == false then
  35. local minute = math.random(0, 59)
  36. local f = io.open('/lib/gluon/cron/ffho-site-auto-select', 'w')
  37. f:write(string.format('%i * * * * /usr/sbin/ffho-site-auto-select\n', minute))
  38. f:close()
  39. end