AdGuardHome.lua 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. module("luci.controller.AdGuardHome",package.seeall)
  2. local fs=require"nixio.fs"
  3. local http=require"luci.http"
  4. local uci=require"luci.model.uci".cursor()
  5. function index()
  6. entry({"admin", "services", "AdGuardHome"},alias("admin", "services", "AdGuardHome", "base"),_("AdGuard Home"), 10).dependent = true
  7. entry({"admin","services","AdGuardHome","base"},cbi("AdGuardHome/base"),_("Base Setting"),1).leaf = true
  8. entry({"admin","services","AdGuardHome","log"},form("AdGuardHome/log"),_("Log"),2).leaf = true
  9. entry({"admin","services","AdGuardHome","manual"},cbi("AdGuardHome/manual"),_("Manual Config"),3).leaf = true
  10. entry({"admin","services","AdGuardHome","status"},call("act_status")).leaf=true
  11. entry({"admin", "services", "AdGuardHome", "check"}, call("check_update"))
  12. entry({"admin", "services", "AdGuardHome", "doupdate"}, call("do_update"))
  13. entry({"admin", "services", "AdGuardHome", "getlog"}, call("get_log"))
  14. entry({"admin", "services", "AdGuardHome", "dodellog"}, call("do_dellog"))
  15. entry({"admin", "services", "AdGuardHome", "reloadconfig"}, call("reload_config"))
  16. end
  17. function reload_config()
  18. fs.remove("/tmp/AdGuardHometmpconfig.yaml")
  19. http.prepare_content("application/json")
  20. http.write('')
  21. end
  22. function act_status()
  23. local e={}
  24. local binpath=uci:get("AdGuardHome","AdGuardHome","binpath")
  25. e.running=luci.sys.call("pgrep "..binpath.." >/dev/null")==0
  26. e.redirect=(fs.readfile("/var/run/AdGredir")=="1")
  27. http.prepare_content("application/json")
  28. http.write_json(e)
  29. end
  30. function do_update()
  31. fs.writefile("/var/run/lucilogpos","0")
  32. local arg
  33. if luci.http.formvalue("force") == "1" then
  34. arg="force"
  35. else
  36. arg=""
  37. end
  38. luci.sys.exec("(rm /var/run/update_core_error ; touch /var/run/update_core ; sh /usr/share/AdGuardHome/update_core.sh "..arg.." >/tmp/AdGuardHome_update.log 2>&1 || touch /var/run/update_core_error ;rm /var/run/update_core) &")
  39. http.prepare_content("application/json")
  40. http.write('')
  41. end
  42. function get_log()
  43. local logfile=uci:get("AdGuardHome","AdGuardHome","logfile")
  44. if (logfile==nil) then
  45. http.write("no log available\n")
  46. return
  47. elseif (logfile=="syslog") then
  48. if not fs.access("/var/run/AdGuardHomesyslog") then
  49. luci.sys.exec("(/usr/share/AdGuardHome/getsyslog.sh &); sleep 1;")
  50. end
  51. logfile="/tmp/AdGuardHometmp.log"
  52. fs.writefile("/var/run/AdGuardHomesyslog","1")
  53. elseif not fs.access(logfile) then
  54. http.write("")
  55. return
  56. end
  57. http.prepare_content("text/plain; charset=utf-8")
  58. local fdp=tonumber(fs.readfile("/var/run/lucilogpos")) or 0
  59. local f=io.open(logfile, "r+")
  60. f:seek("set",fdp)
  61. local a=f:read(2048000) or ""
  62. fdp=f:seek()
  63. fs.writefile("/var/run/lucilogpos",tostring(fdp))
  64. f:close()
  65. http.write(a)
  66. end
  67. function do_dellog()
  68. local logfile=uci:get("AdGuardHome","AdGuardHome","logfile")
  69. fs.writefile(logfile,"")
  70. http.prepare_content("application/json")
  71. http.write('')
  72. end
  73. function check_update()
  74. http.prepare_content("text/plain; charset=utf-8")
  75. local fdp=tonumber(fs.readfile("/var/run/lucilogpos")) or 0
  76. local f=io.open("/tmp/AdGuardHome_update.log", "r+")
  77. f:seek("set",fdp)
  78. local a=f:read(2048000) or ""
  79. fdp=f:seek()
  80. fs.writefile("/var/run/lucilogpos",tostring(fdp))
  81. f:close()
  82. if fs.access("/var/run/update_core") then
  83. http.write(a)
  84. else
  85. http.write(a.."\0")
  86. end
  87. end