unblockneteasemusic.lua 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. -- SPDX-License-Identifer: GPL-3.0-only
  2. -- Copyright (C) 2019-2022 Tianling Shen <[email protected]>
  3. module("luci.controller.unblockneteasemusic", package.seeall)
  4. function index()
  5. if not nixio.fs.access("/etc/config/unblockneteasemusic") then
  6. return
  7. end
  8. local page
  9. page = entry({"admin", "services", "unblockneteasemusic"}, firstchild(), _("解除网易云音乐播放限制"), 50)
  10. page.dependent = false
  11. page.acl_depends = { "luci-app-unblockneteasemusic" }
  12. entry({"admin", "services", "unblockneteasemusic", "general"}, cbi("unblockneteasemusic/main"), _("基本设定"), 1)
  13. entry({"admin", "services", "unblockneteasemusic", "upgrade"}, form("unblockneteasemusic/upgrade"), _("更新组件"), 2).leaf = true
  14. entry({"admin", "services", "unblockneteasemusic", "log"}, form("unblockneteasemusic/log"), _("日志"), 3)
  15. entry({"admin", "services", "unblockneteasemusic", "status"}, call("act_status")).leaf = true
  16. entry({"admin", "services", "unblockneteasemusic", "update_core"}, call("act_update_core"))
  17. entry({"admin", "services", "unblockneteasemusic", "remove_core"}, call("act_remove_core"))
  18. end
  19. function act_status()
  20. local stat = luci.util.ubus("service", "list", { name = "unblockneteasemusic" })
  21. local running = next(stat) and next(stat.unblockneteasemusic) and stat.unblockneteasemusic.instances.unblockneteasemusic.running or false
  22. local e = { running = running }
  23. luci.http.prepare_content("application/json")
  24. luci.http.write_json(e)
  25. end
  26. function update_core()
  27. local core_cloud_ver = luci.sys.exec("uclient-fetch -qO- 'https://api.github.com/repos/UnblockNeteaseMusic/server/commits?sha=enhanced&path=precompiled' | jsonfilter -e '@[0].sha'")
  28. local core_cloud_ver_mini = string.sub(core_cloud_ver, 1, 7)
  29. local core_local_ver
  30. if (not core_cloud_ver) or (not core_cloud_ver_mini) then
  31. return "1"
  32. else
  33. core_local_ver = luci.sys.exec("cat '/usr/share/unblockneteasemusic/core_local_ver' 2>'/dev/null'")
  34. if not core_local_ver or (core_local_ver ~= core_cloud_ver) then
  35. luci.sys.call("rm -f /usr/share/unblockneteasemusic/update_core_successfully")
  36. luci.sys.call("/usr/share/unblockneteasemusic/update.sh update_core_from_luci")
  37. if not nixio.fs.access("/usr/share/unblockneteasemusic/update_core_successfully") then
  38. return "2"
  39. else
  40. luci.sys.call("rm -f /usr/share/unblockneteasemusic/update_core_successfully")
  41. return core_cloud_ver_mini
  42. end
  43. else
  44. return "0"
  45. end
  46. end
  47. end
  48. function act_update_core()
  49. luci.http.prepare_content("application/json")
  50. luci.http.write_json({
  51. ret = update_core();
  52. })
  53. end
  54. function act_remove_core()
  55. local ret = {}
  56. ret.ret = luci.sys.call("cd /usr/share/unblockneteasemusic && rm -rf core/* && rm -f core_local_ver") == 0
  57. luci.http.prepare_content("application/json")
  58. luci.http.write_json(ret)
  59. end