320-gluon-client-bridge-wireless 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #!/usr/bin/lua
  2. local site = require 'gluon.site_config'
  3. local util = require 'gluon.util'
  4. local uci = require('simple-uci').cursor()
  5. local function is_disabled(config, name)
  6. local disabled
  7. if uci:get('wireless', name) then
  8. disabled = uci:get_bool('wireless', name, 'disabled')
  9. else
  10. disabled = config and config.disabled
  11. end
  12. return disabled
  13. end
  14. local function configure_client(config, radio, index, suffix)
  15. local name = 'client_' .. radio
  16. local disabled = is_disabled(config, name)
  17. uci:delete('wireless', name)
  18. if not config then
  19. return
  20. end
  21. local macaddr = util.get_wlan_mac(radio, index, 1)
  22. if not macaddr then
  23. return
  24. end
  25. uci:section('wireless', 'wifi-iface', name,
  26. {
  27. device = radio,
  28. network = 'client',
  29. mode = 'ap',
  30. ssid = config.ssid,
  31. macaddr = macaddr,
  32. ifname = suffix and 'client' .. suffix,
  33. disabled = disabled or false,
  34. }
  35. )
  36. end
  37. local function configure_radio(radio, index, config)
  38. local suffix = radio:match('^radio(%d+)$')
  39. configure_client(config.ap, radio, index, suffix)
  40. end
  41. util.iterate_radios(configure_radio)
  42. uci:save('wireless')