AdGuardHome.lua 3.1 KB

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