AdGuardHome.lua 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. module("luci.controller.AdGuardHome",package.seeall)
  2. local fs=require"fs"
  3. local http=require"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. local st=fs.readfile("/var/run/AdGredir")
  27. if (st=="0") then
  28. e.redirect=false
  29. else
  30. e.redirect=true
  31. end
  32. http.prepare_content("application/json")
  33. http.write_json(e)
  34. end
  35. function do_update()
  36. fs.writefile("/var/run/lucilogpos","0")
  37. 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) &")
  38. http.prepare_content("application/json")
  39. http.write('')
  40. end
  41. function get_log()
  42. local logfile=uci:get("AdGuardHome","AdGuardHome","logfile")
  43. if (logfile==nil) then
  44. http.write("no log available\n")
  45. return
  46. elseif (logfile=="syslog") then
  47. if not fs.access("/var/run/AdGuardHomesyslog") then
  48. luci.sys.exec("(/usr/share/AdGuardHome/getsyslog.sh &); sleep 1;")
  49. end
  50. logfile="/tmp/AdGuardHometmp.log"
  51. fs.writefile("/var/run/AdGuardHomesyslog","1")
  52. elseif not fs.access(logfile) then
  53. http.write("log file not created\n")
  54. return
  55. end
  56. http.prepare_content("text/plain; charset=utf-8")
  57. local logpos=fs.readfile("/var/run/lucilogpos")
  58. local fdp
  59. if (logpos ~= nil) then
  60. fdp=tonumber(logpos)
  61. else
  62. fdp=0
  63. end
  64. local f=io.open(logfile, "r+")
  65. f:seek("set",fdp)
  66. local a=f:read(2048000)
  67. if (a==nil) then
  68. a=""
  69. end
  70. fdp=f:seek()
  71. fs.writefile("/var/run/lucilogpos",tostring(fdp))
  72. f:close()
  73. http.write(a)
  74. end
  75. function do_dellog()
  76. local logfile=uci:get("AdGuardHome","AdGuardHome","logfile")
  77. fs.writefile(logfile,"")
  78. http.prepare_content("application/json")
  79. http.write('')
  80. end
  81. function check_update()
  82. http.prepare_content("text/plain; charset=utf-8")
  83. local logpos=fs.readfile("/var/run/lucilogpos")
  84. if (logpos ~= nil) then
  85. local fdp=tonumber(logpos)
  86. else
  87. fdp=0
  88. end
  89. local f=io.open("/tmp/AdGuardHome_update.log", "r+")
  90. f:seek("set",fdp)
  91. local a=f:read(2048000)
  92. if (a==nil) then
  93. a=""
  94. end
  95. fdp=f:seek()
  96. fs.writefile("/var/run/lucilogpos",tostring(fdp))
  97. f:close()
  98. if fs.access("/var/run/update_core") then
  99. http.write(a)
  100. else
  101. http.write(a.."\0")
  102. end
  103. end