0100-mesh-vpn.lua 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. local site_i18n = i18n 'gluon-site'
  2. local uci = require("simple-uci").cursor()
  3. local lutil = require "gluon.web.util"
  4. local fs = require "nixio.fs"
  5. local site = require 'gluon.site'
  6. local sysconfig = require 'gluon.sysconfig'
  7. local util = require "gluon.util"
  8. local pretty_hostname = require 'pretty_hostname'
  9. local has_fastd = fs.access('/lib/gluon/mesh-vpn/fastd')
  10. local has_tunneldigger = fs.access('/lib/gluon/mesh-vpn/tunneldigger')
  11. local hostname = pretty_hostname.get(uci)
  12. local contact = uci:get_first("gluon-node-info", "owner", "contact")
  13. local pubkey
  14. local msg
  15. if has_tunneldigger then
  16. local tunneldigger_enabled = uci:get_bool("tunneldigger", "mesh_vpn", "enabled")
  17. if not tunneldigger_enabled then
  18. msg = site_i18n._translate('gluon-config-mode:novpn')
  19. end
  20. elseif has_fastd then
  21. local fastd_enabled = uci:get_bool("fastd", "mesh_vpn", "enabled")
  22. if fastd_enabled then
  23. pubkey = util.trim(lutil.exec("/etc/init.d/fastd show_key mesh_vpn"))
  24. msg = site_i18n._translate('gluon-config-mode:pubkey')
  25. else
  26. msg = site_i18n._translate('gluon-config-mode:novpn')
  27. end
  28. end
  29. if not msg then return end
  30. renderer.render_string(msg, {
  31. pubkey = pubkey,
  32. hostname = hostname,
  33. site = site,
  34. sysconfig = sysconfig,
  35. contact = contact,
  36. })