InPanel 1.2.1__tar.gz → 1.2.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (213) hide show
  1. {inpanel-1.2.1 → inpanel-1.2.2}/InPanel.egg-info/PKG-INFO +2 -2
  2. {inpanel-1.2.1 → inpanel-1.2.2}/InPanel.egg-info/SOURCES.txt +9 -14
  3. inpanel-1.2.2/MANIFEST.in +2 -0
  4. {inpanel-1.2.1 → inpanel-1.2.2}/PKG-INFO +2 -2
  5. {inpanel-1.2.1 → inpanel-1.2.2}/README.md +1 -1
  6. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/base.py +38 -35
  7. inpanel-1.2.2/inpanel/data/bookmarks.ini +20 -0
  8. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/data/config.ini +2 -2
  9. inpanel-1.2.2/inpanel/data/error.log +294 -0
  10. inpanel-1.2.2/inpanel/data/history.txt +30 -0
  11. inpanel-1.2.2/inpanel/data/inpanel.pid +1 -0
  12. inpanel-1.2.2/inpanel/data/lastfile.ini +4 -0
  13. inpanel-1.2.2/inpanel/data/main.log +3300 -0
  14. inpanel-1.2.2/inpanel/data/upgrade.ini +6 -0
  15. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/config.py +15 -10
  16. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/file.py +128 -34
  17. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/firewall_macos.py +1 -2
  18. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/server.py +237 -84
  19. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/setting.py +2 -2
  20. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/css/global.css +33 -1
  21. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/index.html +1 -1
  22. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/js/controllers/file.js +49 -0
  23. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/file/file.html +13 -10
  24. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/login.html +2 -2
  25. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/main.html +3 -3
  26. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/setting.html +2 -2
  27. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/templates/index.html +2 -2
  28. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/web.py +1 -1
  29. {inpanel-1.2.1 → inpanel-1.2.2}/pyproject.toml +2 -1
  30. inpanel-1.2.1/inpanel/data/history +0 -5
  31. inpanel-1.2.1/inpanel/data/runlogs.ini +0 -12
  32. inpanel-1.2.1/inpanel/data/update_info.ini +0 -4
  33. inpanel-1.2.1/inpanel/plugins/__pycache__/__init__.cpython-313.pyc +0 -0
  34. inpanel-1.2.1/inpanel/plugins/shadowsocks-libev/__pycache__/info.cpython-313.pyc +0 -0
  35. inpanel-1.2.1/test/test copy.py +0 -84
  36. inpanel-1.2.1/test/test.py +0 -84
  37. {inpanel-1.2.1 → inpanel-1.2.2}/InPanel.egg-info/dependency_links.txt +0 -0
  38. {inpanel-1.2.1 → inpanel-1.2.2}/InPanel.egg-info/entry_points.txt +0 -0
  39. {inpanel-1.2.1 → inpanel-1.2.2}/InPanel.egg-info/requires.txt +0 -0
  40. {inpanel-1.2.1 → inpanel-1.2.2}/InPanel.egg-info/top_level.txt +0 -0
  41. {inpanel-1.2.1 → inpanel-1.2.2}/LICENSE +0 -0
  42. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/__init__.py +0 -0
  43. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/acme.py +0 -0
  44. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/aliyuncs.py +0 -0
  45. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/app.py +0 -0
  46. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/apt.py +0 -0
  47. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/config.py +0 -0
  48. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/dnf.py +0 -0
  49. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/lib/__init__.py +0 -0
  50. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/lib/async_process.py +0 -0
  51. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/lib/filelock.py +0 -0
  52. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/lib/magic.py +0 -0
  53. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/lib/pxssh.py +0 -0
  54. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/lib/pyDes.py +0 -0
  55. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/__init__.py +0 -0
  56. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/apt.py +0 -0
  57. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/certificate.py +0 -0
  58. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/cron.py +0 -0
  59. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/disk.py +0 -0
  60. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/dnf.py +0 -0
  61. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/firewall.py +0 -0
  62. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/firewall_base.py +0 -0
  63. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/firewall_firewalld.py +0 -0
  64. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/firewall_iptables.py +0 -0
  65. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/firewall_ufw.py +0 -0
  66. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/ftp.py +0 -0
  67. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/httpd.py +0 -0
  68. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/lighttpd.py +0 -0
  69. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/login.py +0 -0
  70. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/mysql.py +0 -0
  71. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/named.py +0 -0
  72. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/nginx.py +0 -0
  73. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/package.py +0 -0
  74. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/package_apt.py +0 -0
  75. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/package_base.py +0 -0
  76. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/package_dnf.py +0 -0
  77. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/package_map.py +0 -0
  78. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/package_yum.py +0 -0
  79. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/php.py +0 -0
  80. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/process.py +0 -0
  81. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/proftpd.py +0 -0
  82. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/pureftpd.py +0 -0
  83. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/query.py +0 -0
  84. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/service.py +0 -0
  85. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/shell.py +0 -0
  86. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/ssh.py +0 -0
  87. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/system.py +0 -0
  88. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/task.py +0 -0
  89. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/ufw.py +0 -0
  90. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/user.py +0 -0
  91. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/vsftpd.py +0 -0
  92. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/mod/yum.py +0 -0
  93. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/plugins/__init__.py +0 -0
  94. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/plugins/acme/static/index.html +0 -0
  95. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/plugins/acme/static/index.js +0 -0
  96. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/plugins/shadowsocks-libev/info.py +0 -0
  97. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/plugins/shadowsocks-libev/static/index.html +0 -0
  98. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/plugins/shadowsocks-libev/static/index.js +0 -0
  99. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/favicon.ico +0 -0
  100. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/images/alipay.jpg +0 -0
  101. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/images/loading.gif +0 -0
  102. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/images/weixin.jpg +0 -0
  103. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/js/controllers/controllers.js +0 -0
  104. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/js/controllers/database.js +0 -0
  105. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/js/controllers/ecs.js +0 -0
  106. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/js/controllers/plugins.js +0 -0
  107. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/js/controllers/service.js +0 -0
  108. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/js/controllers/site.js +0 -0
  109. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/js/controllers/utils.js +0 -0
  110. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/js/core.js +0 -0
  111. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/js/directives.js +0 -0
  112. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/js/filters.js +0 -0
  113. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/js/services.js +0 -0
  114. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/lib/angular/1.0.2/angular-resource.min.js +0 -0
  115. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/lib/angular/1.0.2/angular.min.js +0 -0
  116. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/lib/bootstrap/css/bootstrap-theme.css +0 -0
  117. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/lib/bootstrap/css/bootstrap-theme.css.map +0 -0
  118. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/lib/bootstrap/css/bootstrap-theme.min.css +0 -0
  119. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/lib/bootstrap/css/bootstrap-theme.min.css.map +0 -0
  120. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/lib/bootstrap/css/bootstrap.css +0 -0
  121. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/lib/bootstrap/css/bootstrap.css.map +0 -0
  122. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/lib/bootstrap/css/bootstrap.min.css +0 -0
  123. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/lib/bootstrap/css/bootstrap.min.css.map +0 -0
  124. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/lib/bootstrap/fonts/glyphicons-halflings-regular.eot +0 -0
  125. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/lib/bootstrap/fonts/glyphicons-halflings-regular.svg +0 -0
  126. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf +0 -0
  127. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/lib/bootstrap/fonts/glyphicons-halflings-regular.woff +0 -0
  128. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2 +0 -0
  129. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/lib/bootstrap/img/glyphicons-halflings-white.png +0 -0
  130. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/lib/bootstrap/img/glyphicons-halflings.png +0 -0
  131. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/lib/bootstrap/js/bootstrap.js +0 -0
  132. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/lib/bootstrap/js/bootstrap.min.js +0 -0
  133. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/lib/bootstrap/js/npm.js +0 -0
  134. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/lib/codemirror/codemirror-compressed.js +0 -0
  135. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/lib/codemirror/codemirror.css +0 -0
  136. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/lib/jquery/jquery-1.12.4.min.js +0 -0
  137. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/lib/md5/md5.js +0 -0
  138. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/lib/md5/md5.min.js +0 -0
  139. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/database/index.html +0 -0
  140. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/database/mysql/dbedit.html +0 -0
  141. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/database/mysql/dbnew.html +0 -0
  142. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/database/mysql/useredit.html +0 -0
  143. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/database/mysql/usernew.html +0 -0
  144. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/directives/message.html +0 -0
  145. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/directives/navbar.html +0 -0
  146. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/directives/selector.html +0 -0
  147. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/directives/srvbase.html +0 -0
  148. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/directives/srvext.html +0 -0
  149. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/directives/srvfile.html +0 -0
  150. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/directives/srvinstall.html +0 -0
  151. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/directives/srvlog.html +0 -0
  152. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/directives/srvminiop.html +0 -0
  153. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/directives/srvuninstall.html +0 -0
  154. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/directives/srvupdate.html +0 -0
  155. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/ecs/account.html +0 -0
  156. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/ecs/ecs.html +0 -0
  157. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/ecs/index.html +0 -0
  158. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/ecs/setings.html +0 -0
  159. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/file/trash.html +0 -0
  160. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/ftp.html +0 -0
  161. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/log.html +0 -0
  162. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/logout.html +0 -0
  163. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/plugins/index.html +0 -0
  164. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/plugins/plugins.html +0 -0
  165. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/secure.html +0 -0
  166. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/service/apache.html +0 -0
  167. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/service/cron.html +0 -0
  168. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/service/index.html +0 -0
  169. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/service/iptables.html +0 -0
  170. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/service/lighttpd.html +0 -0
  171. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/service/mariadb.html +0 -0
  172. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/service/memcache.html +0 -0
  173. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/service/minio.html +0 -0
  174. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/service/mongodb.html +0 -0
  175. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/service/mysql.html +0 -0
  176. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/service/named.html +0 -0
  177. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/service/nginx.html +0 -0
  178. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/service/ntp.html +0 -0
  179. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/service/php.html +0 -0
  180. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/service/proftpd.html +0 -0
  181. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/service/pureftpd.html +0 -0
  182. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/service/redis.html +0 -0
  183. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/service/samba.html +0 -0
  184. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/service/sendmail.html +0 -0
  185. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/service/ssh.html +0 -0
  186. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/service/tomcat.html +0 -0
  187. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/service/vsftpd.html +0 -0
  188. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/site/apache/site.html +0 -0
  189. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/site/index.html +0 -0
  190. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/site/nginx/site.html +0 -0
  191. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/sorry.html +0 -0
  192. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/storage/autofm.html +0 -0
  193. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/storage/backup.html +0 -0
  194. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/storage/index.html +0 -0
  195. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/storage/migrate.html +0 -0
  196. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/storage/movedata.html +0 -0
  197. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/storage/remote.html +0 -0
  198. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/utils/cron.html +0 -0
  199. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/utils/firewall.html +0 -0
  200. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/utils/index.html +0 -0
  201. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/utils/network.html +0 -0
  202. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/utils/process.html +0 -0
  203. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/utils/repository.html +0 -0
  204. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/utils/shell.html +0 -0
  205. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/utils/ssl.html +0 -0
  206. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/utils/time.html +0 -0
  207. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/partials/utils/user.html +0 -0
  208. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/public/robots.txt +0 -0
  209. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/remote.py +0 -0
  210. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/templates/file/preview.html +0 -0
  211. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/utils.py +0 -0
  212. {inpanel-1.2.1 → inpanel-1.2.2}/inpanel/yum.py +0 -0
  213. {inpanel-1.2.1 → inpanel-1.2.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: InPanel
3
- Version: 1.2.1
3
+ Version: 1.2.2
4
4
  Summary: InPanel - A Web-based Linux Server Management Tool
5
5
  Author-email: Jackson Dou <jksdou@qq.com>
6
6
  Maintainer-email: Jackson Dou <jksdou@qq.com>
@@ -376,7 +376,7 @@ pip install build
376
376
  python -m build
377
377
 
378
378
  # 构建 RPM 包(需要 rpmbuild)
379
- rpmbuild -bb inpanel.spec
379
+ rpmbuild -bb rpmbuild.spec
380
380
 
381
381
  # 构建 DEB 包(需要 debuild)
382
382
  debuild -us -uc
@@ -1,4 +1,5 @@
1
1
  LICENSE
2
+ MANIFEST.in
2
3
  README.md
3
4
  pyproject.toml
4
5
  InPanel.egg-info/PKG-INFO
@@ -19,16 +20,14 @@ inpanel/remote.py
19
20
  inpanel/utils.py
20
21
  inpanel/web.py
21
22
  inpanel/yum.py
22
- inpanel.egg-info/PKG-INFO
23
- inpanel.egg-info/SOURCES.txt
24
- inpanel.egg-info/dependency_links.txt
25
- inpanel.egg-info/entry_points.txt
26
- inpanel.egg-info/requires.txt
27
- inpanel.egg-info/top_level.txt
23
+ inpanel/data/bookmarks.ini
28
24
  inpanel/data/config.ini
29
- inpanel/data/history
30
- inpanel/data/runlogs.ini
31
- inpanel/data/update_info.ini
25
+ inpanel/data/error.log
26
+ inpanel/data/history.txt
27
+ inpanel/data/inpanel.pid
28
+ inpanel/data/lastfile.ini
29
+ inpanel/data/main.log
30
+ inpanel/data/upgrade.ini
32
31
  inpanel/lib/__init__.py
33
32
  inpanel/lib/async_process.py
34
33
  inpanel/lib/filelock.py
@@ -79,11 +78,9 @@ inpanel/mod/user.py
79
78
  inpanel/mod/vsftpd.py
80
79
  inpanel/mod/yum.py
81
80
  inpanel/plugins/__init__.py
82
- inpanel/plugins/__pycache__/__init__.cpython-313.pyc
83
81
  inpanel/plugins/acme/static/index.html
84
82
  inpanel/plugins/acme/static/index.js
85
83
  inpanel/plugins/shadowsocks-libev/info.py
86
- inpanel/plugins/shadowsocks-libev/__pycache__/info.cpython-313.pyc
87
84
  inpanel/plugins/shadowsocks-libev/static/index.html
88
85
  inpanel/plugins/shadowsocks-libev/static/index.js
89
86
  inpanel/public/favicon.ico
@@ -204,6 +201,4 @@ inpanel/public/partials/utils/ssl.html
204
201
  inpanel/public/partials/utils/time.html
205
202
  inpanel/public/partials/utils/user.html
206
203
  inpanel/templates/index.html
207
- inpanel/templates/file/preview.html
208
- test/test copy.py
209
- test/test.py
204
+ inpanel/templates/file/preview.html
@@ -0,0 +1,2 @@
1
+ exclude test/*
2
+ exclude tests/*
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: InPanel
3
- Version: 1.2.1
3
+ Version: 1.2.2
4
4
  Summary: InPanel - A Web-based Linux Server Management Tool
5
5
  Author-email: Jackson Dou <jksdou@qq.com>
6
6
  Maintainer-email: Jackson Dou <jksdou@qq.com>
@@ -376,7 +376,7 @@ pip install build
376
376
  python -m build
377
377
 
378
378
  # 构建 RPM 包(需要 rpmbuild)
379
- rpmbuild -bb inpanel.spec
379
+ rpmbuild -bb rpmbuild.spec
380
380
 
381
381
  # 构建 DEB 包(需要 debuild)
382
382
  debuild -us -uc
@@ -308,7 +308,7 @@ pip install build
308
308
  python -m build
309
309
 
310
310
  # 构建 RPM 包(需要 rpmbuild)
311
- rpmbuild -bb inpanel.spec
311
+ rpmbuild -bb rpmbuild.spec
312
312
 
313
313
  # 构建 DEB 包(需要 debuild)
314
314
  debuild -us -uc
@@ -40,7 +40,7 @@ __author__ = 'Jackson Dou'
40
40
  __license__ = 'BSD'
41
41
 
42
42
  app_name = 'InPanel'
43
- releasetime = '2026-07-xx'
43
+ releasetime = '2026-07-07'
44
44
  DEBUG = True
45
45
  COMMENTFLAG = '#INPANEL#'
46
46
  GENBY = 'AUTOMATICALLY GENERATED BY INPANEL'
@@ -62,45 +62,48 @@ app_api = {
62
62
 
63
63
  if hasattr(sys, 'frozen') and hasattr(sys, '_MEIPASS'):
64
64
  run_type = 'binary'
65
- root_path = sys._MEIPASS
66
- execfile = '/usr/bin/inpanel'
67
- config_path = '/etc/inpanel/'
68
- config_file = '/etc/inpanel/config.ini'
69
- runlogs_path = '/etc/inpanel/runlogs.ini'
70
- update_info_path = '/etc/inpanel/update_info.ini'
71
- history_path = '/etc/inpanel/history.txt'
72
- logging_path = '/var/log/inpanel/'
73
- logfile = '/var/log/inpanel/main.log'
74
- logerror = '/var/log/inpanel/error.log'
75
- pidfile = '/var/run/inpanel.pid'
65
+ root_path = sys._MEIPASS
66
+ execfile = '/usr/bin/inpanel'
67
+ config_path = '/etc/inpanel/'
68
+ config_file = '/etc/inpanel/config.ini'
69
+ lastfile_path = '/etc/inpanel/lastfile.ini'
70
+ bookmarks_path = '/etc/inpanel/bookmarks.ini'
71
+ upgrade_path = '/etc/inpanel/upgrade.ini'
72
+ history_path = '/etc/inpanel/history.txt'
73
+ logging_path = '/var/log/inpanel/'
74
+ logfile = '/var/log/inpanel/main.log'
75
+ logerror = '/var/log/inpanel/error.log'
76
+ pidfile = '/var/run/inpanel.pid'
76
77
  else:
77
78
  package_dir = Path(__file__).parent.resolve()
78
79
  if package_dir.parts[-2] == 'site-packages' or 'dist-packages' in str(package_dir):
79
80
  run_type = 'system'
80
- root_path = str(package_dir)
81
- execfile = '/usr/bin/inpanel'
82
- config_path = '/etc/inpanel/'
83
- config_file = '/etc/inpanel/config.ini'
84
- runlogs_path = '/etc/inpanel/runlogs.ini'
85
- update_info_path = '/etc/inpanel/update_info.ini'
86
- history_path = '/etc/inpanel/history.txt'
87
- logging_path = '/var/log/inpanel/'
88
- logfile = '/var/log/inpanel/main.log'
89
- logerror = '/var/log/inpanel/error.log'
90
- pidfile = '/var/run/inpanel.pid'
81
+ root_path = str(package_dir)
82
+ execfile = '/usr/bin/inpanel'
83
+ config_path = '/etc/inpanel/'
84
+ config_file = '/etc/inpanel/config.ini'
85
+ lastfile_path = '/etc/inpanel/lastfile.ini'
86
+ bookmarks_path = '/etc/inpanel/bookmarks.ini'
87
+ upgrade_path = '/etc/inpanel/upgrade.ini'
88
+ history_path = '/etc/inpanel/history.txt'
89
+ logging_path = '/var/log/inpanel/'
90
+ logfile = '/var/log/inpanel/main.log'
91
+ logerror = '/var/log/inpanel/error.log'
92
+ pidfile = '/var/run/inpanel.pid'
91
93
  else:
92
94
  run_type = 'source'
93
- root_path = str(Path(__file__).parent.resolve())
94
- execfile = str(Path(root_path) / 'app.py')
95
- config_path = str(Path(root_path) / 'data')
96
- config_file = str(Path(root_path) / 'data' / 'config.ini')
97
- runlogs_path = str(Path(root_path) / 'data' / 'runlogs.ini')
98
- update_info_path = str(Path(root_path) / 'data' / 'update_info.ini')
99
- history_path = str(Path(root_path) / 'data' / 'history.txt')
100
- logging_path = str(Path(root_path) / 'data')
101
- logfile = str(Path(root_path) / 'data' / 'main.log')
102
- logerror = str(Path(root_path) / 'data' / 'error.log')
103
- pidfile = str(Path(root_path) / 'data' / 'inpanel.pid')
95
+ root_path = str(Path(__file__).parent.resolve())
96
+ execfile = str(Path(root_path) / 'app.py')
97
+ config_path = str(Path(root_path) / 'data')
98
+ config_file = str(Path(root_path) / 'data' / 'config.ini')
99
+ lastfile_path = str(Path(root_path) / 'data' / 'lastfile.ini')
100
+ bookmarks_path = str(Path(root_path) / 'data' / 'bookmarks.ini')
101
+ upgrade_path = str(Path(root_path) / 'data' / 'upgrade.ini')
102
+ history_path = str(Path(root_path) / 'data' / 'history.txt')
103
+ logging_path = str(Path(root_path) / 'data')
104
+ logfile = str(Path(root_path) / 'data' / 'main.log')
105
+ logerror = str(Path(root_path) / 'data' / 'error.log')
106
+ pidfile = str(Path(root_path) / 'data' / 'inpanel.pid')
104
107
 
105
108
 
106
109
  kernel_name, hostname, kernel_release, kernel_version, machine, processor = uname()
@@ -189,7 +192,7 @@ __all__ = [
189
192
  'run_type', 'config_file', 'root_path', 'COMMENTFLAG', 'GENBY', 'execfile',
190
193
  'releasetime', 'version_info', 'server_info', 'os_name', 'os_title',
191
194
  'os_version', 'os_versint', 'os_platform', 'kernel_name', 'kernel_release',
192
- 'kernel_version', 'hostname', 'machine', 'runlogs_path', 'update_info_path',
195
+ 'kernel_version', 'hostname', 'machine', 'lastfile_path', 'bookmarks_path', 'upgrade_path',
193
196
  'history_path', 'logfile', 'logerror', 'pidfile', 'processor'
194
197
  ]
195
198
 
@@ -0,0 +1,20 @@
1
+ [/usr/local/inpanel/data]
2
+ type = dir
3
+ desc = data
4
+
5
+ [/usr/local/inpanel/exec]
6
+ type = dir
7
+ desc = exec
8
+
9
+ [/usr/local/inpanel/module]
10
+ type = dir
11
+ desc = module
12
+
13
+ [/usr/local/inpanel/a.txt]
14
+ type = file
15
+ desc = a.txt
16
+
17
+ [/usr/local/inpanel/data/icon_logo@3x.png]
18
+ type = file
19
+ desc = icon_logo@3x.png
20
+
@@ -2,8 +2,8 @@
2
2
  ip = *
3
3
  port = 14433
4
4
  forcehttps = off
5
- sslkey = /Users/jksdou/Projects/inpanel/inpanel-v1.2.0/inpanel/data/certificate/inpanel.key
6
- sslcrt = /Users/jksdou/Projects/inpanel/inpanel-v1.2.0/inpanel/data/certificate/inpanel.crt
5
+ sslkey = /Users/jksdou/Projects/inpanel/inpanel/inpanel/data/certificate/inpanel.key
6
+ sslcrt = /Users/jksdou/Projects/inpanel/inpanel/inpanel/data/certificate/inpanel.crt
7
7
 
8
8
  [auth]
9
9
  username = admin
@@ -0,0 +1,294 @@
1
+ 2026-07-07 12:39:11,710 - ERROR - Uncaught exception GET /api/query/**?0.9907257244335985 (::1)
2
+ HTTPServerRequest(protocol='http', host='localhost:14433', method='GET', uri='/api/query/**?0.9907257244335985', version='HTTP/1.1', remote_ip='::1')
3
+ Traceback (most recent call last):
4
+ File "/usr/local/lib/python3.11/site-packages/tornado/web.py", line 1702, in _execute
5
+ result = method(*self.path_args, **self.path_kwargs)
6
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
7
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/web.py", line 419, in get
8
+ result = query.handle_query(items)
9
+ ^^^^^^^^^^^^^^^^^^^^^^^^^
10
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/mod/query.py", line 67, in handle_query
11
+ result['%s.%s' % (sec, q)] = getattr(server.ServerInfo, q)()
12
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
13
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/mod/server.py", line 517, in cpuinfo
14
+ cpu_info = psutil.cpu_info()
15
+ ^^^^^^^^^^^^^^^
16
+ AttributeError: module 'psutil' has no attribute 'cpu_info'
17
+ 2026-07-07 12:39:11,743 - ERROR - 500 GET /api/query/**?0.9907257244335985 (::1) 35.95ms
18
+ 2026-07-07 12:39:21,945 - ERROR - Uncaught exception GET /api/query/**?0.6034745411310344 (::1)
19
+ HTTPServerRequest(protocol='http', host='localhost:14433', method='GET', uri='/api/query/**?0.6034745411310344', version='HTTP/1.1', remote_ip='::1')
20
+ Traceback (most recent call last):
21
+ File "/usr/local/lib/python3.11/site-packages/tornado/web.py", line 1702, in _execute
22
+ result = method(*self.path_args, **self.path_kwargs)
23
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
24
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/web.py", line 419, in get
25
+ result = query.handle_query(items)
26
+ ^^^^^^^^^^^^^^^^^^^^^^^^^
27
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/mod/query.py", line 67, in handle_query
28
+ result['%s.%s' % (sec, q)] = getattr(server.ServerInfo, q)()
29
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
30
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/mod/server.py", line 517, in cpuinfo
31
+ cpu_info = psutil.cpu_info()
32
+ ^^^^^^^^^^^^^^^
33
+ AttributeError: module 'psutil' has no attribute 'cpu_info'
34
+ 2026-07-07 12:39:21,947 - ERROR - 500 GET /api/query/**?0.6034745411310344 (::1) 5.36ms
35
+ 2026-07-07 12:39:29,946 - ERROR - Uncaught exception GET /api/query/**?0.4646417044694817 (::1)
36
+ HTTPServerRequest(protocol='http', host='localhost:14433', method='GET', uri='/api/query/**?0.4646417044694817', version='HTTP/1.1', remote_ip='::1')
37
+ Traceback (most recent call last):
38
+ File "/usr/local/lib/python3.11/site-packages/tornado/web.py", line 1702, in _execute
39
+ result = method(*self.path_args, **self.path_kwargs)
40
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
41
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/web.py", line 419, in get
42
+ result = query.handle_query(items)
43
+ ^^^^^^^^^^^^^^^^^^^^^^^^^
44
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/mod/query.py", line 67, in handle_query
45
+ result['%s.%s' % (sec, q)] = getattr(server.ServerInfo, q)()
46
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
47
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/mod/server.py", line 517, in cpuinfo
48
+ cpu_info = psutil.cpu_info()
49
+ ^^^^^^^^^^^^^^^
50
+ AttributeError: module 'psutil' has no attribute 'cpu_info'
51
+ 2026-07-07 12:39:29,949 - ERROR - 500 GET /api/query/**?0.4646417044694817 (::1) 11.88ms
52
+ 2026-07-07 14:59:21,917 - ERROR - Uncaught exception GET /api/time/datetime?0.5853143592455546 (::1)
53
+ HTTPServerRequest(protocol='http', host='localhost:14433', method='GET', uri='/api/time/datetime?0.5853143592455546', version='HTTP/1.1', remote_ip='::1')
54
+ Traceback (most recent call last):
55
+ File "/usr/local/lib/python3.11/site-packages/tornado/web.py", line 1702, in _execute
56
+ result = method(*self.path_args, **self.path_kwargs)
57
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
58
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/web.py", line 454, in get
59
+ result = server.ServerInfo.handle_time_get(sec, region)
60
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
61
+ AttributeError: type object 'ServerInfo' has no attribute 'handle_time_get'
62
+ 2026-07-07 14:59:21,933 - ERROR - 500 GET /api/time/datetime?0.5853143592455546 (::1) 22.14ms
63
+ 2026-07-07 14:59:21,933 - ERROR - Uncaught exception GET /api/time/timezone?0.7251897808325614 (::1)
64
+ HTTPServerRequest(protocol='http', host='localhost:14433', method='GET', uri='/api/time/timezone?0.7251897808325614', version='HTTP/1.1', remote_ip='::1')
65
+ Traceback (most recent call last):
66
+ File "/usr/local/lib/python3.11/site-packages/tornado/web.py", line 1702, in _execute
67
+ result = method(*self.path_args, **self.path_kwargs)
68
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
69
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/web.py", line 454, in get
70
+ result = server.ServerInfo.handle_time_get(sec, region)
71
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
72
+ AttributeError: type object 'ServerInfo' has no attribute 'handle_time_get'
73
+ 2026-07-07 14:59:21,935 - ERROR - 500 GET /api/time/timezone?0.7251897808325614 (::1) 21.66ms
74
+ 2026-07-07 14:59:21,950 - ERROR - Uncaught exception GET /api/time/timezone_list?0.2813670468040258 (::1)
75
+ HTTPServerRequest(protocol='http', host='localhost:14433', method='GET', uri='/api/time/timezone_list?0.2813670468040258', version='HTTP/1.1', remote_ip='::1')
76
+ Traceback (most recent call last):
77
+ File "/usr/local/lib/python3.11/site-packages/tornado/web.py", line 1702, in _execute
78
+ result = method(*self.path_args, **self.path_kwargs)
79
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
80
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/web.py", line 454, in get
81
+ result = server.ServerInfo.handle_time_get(sec, region)
82
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
83
+ AttributeError: type object 'ServerInfo' has no attribute 'handle_time_get'
84
+ 2026-07-07 14:59:21,953 - ERROR - 500 GET /api/time/timezone_list?0.2813670468040258 (::1) 18.13ms
85
+ 2026-07-07 15:18:02,023 - ERROR - Uncaught exception POST /api/operation/file (::1)
86
+ HTTPServerRequest(protocol='http', host='localhost:14433', method='POST', uri='/api/operation/file', version='HTTP/1.1', remote_ip='::1')
87
+ Traceback (most recent call last):
88
+ File "/usr/local/lib/python3.11/site-packages/tornado/web.py", line 1702, in _execute
89
+ result = method(*self.path_args, **self.path_kwargs)
90
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
91
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/web.py", line 489, in post
92
+ getattr(self, op)()
93
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/web.py", line 524, in file
94
+ mod.file.web_handler(self)
95
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/mod/file.py", line 150, in web_handler
96
+ items = listdir(path, showhidden=='on', onlydir=='on')
97
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
98
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/mod/file.py", line 345, in listdir
99
+ items[i] = getitem(str(Path(path) / item))
100
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
101
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/mod/file.py", line 407, in getitem
102
+ item['is_image'] = is_image(path)
103
+ ^^^^^^^^^^^^^^
104
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/mod/file.py", line 478, in is_image
105
+ suffix = imghdr.what(filepath)
106
+ ^^^^^^^^^^^^^^^^^^^^^
107
+ File "/usr/local/Cellar/python@3.11/3.11.11/Frameworks/Python.framework/Versions/3.11/lib/python3.11/imghdr.py", line 21, in what
108
+ f = open(file, 'rb')
109
+ ^^^^^^^^^^^^^^^^
110
+ PermissionError: [Errno 13] Permission denied: '/etc/aliases.db'
111
+ 2026-07-07 15:18:02,033 - ERROR - 500 POST /api/operation/file (::1) 20.87ms
112
+ 2026-07-07 15:18:04,912 - ERROR - Uncaught exception POST /api/operation/file (::1)
113
+ HTTPServerRequest(protocol='http', host='localhost:14433', method='POST', uri='/api/operation/file', version='HTTP/1.1', remote_ip='::1')
114
+ Traceback (most recent call last):
115
+ File "/usr/local/lib/python3.11/site-packages/tornado/web.py", line 1702, in _execute
116
+ result = method(*self.path_args, **self.path_kwargs)
117
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
118
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/web.py", line 489, in post
119
+ getattr(self, op)()
120
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/web.py", line 524, in file
121
+ mod.file.web_handler(self)
122
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/mod/file.py", line 150, in web_handler
123
+ items = listdir(path, showhidden=='on', onlydir=='on')
124
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
125
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/mod/file.py", line 345, in listdir
126
+ items[i] = getitem(str(Path(path) / item))
127
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
128
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/mod/file.py", line 407, in getitem
129
+ item['is_image'] = is_image(path)
130
+ ^^^^^^^^^^^^^^
131
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/mod/file.py", line 478, in is_image
132
+ suffix = imghdr.what(filepath)
133
+ ^^^^^^^^^^^^^^^^^^^^^
134
+ File "/usr/local/Cellar/python@3.11/3.11.11/Frameworks/Python.framework/Versions/3.11/lib/python3.11/imghdr.py", line 21, in what
135
+ f = open(file, 'rb')
136
+ ^^^^^^^^^^^^^^^^
137
+ PermissionError: [Errno 13] Permission denied: '/etc/aliases.db'
138
+ 2026-07-07 15:18:04,913 - ERROR - 500 POST /api/operation/file (::1) 5.38ms
139
+ 2026-07-07 20:17:56,776 - ERROR - Uncaught exception POST /api/operation/file (::1)
140
+ HTTPServerRequest(protocol='http', host='localhost:14433', method='POST', uri='/api/operation/file', version='HTTP/1.1', remote_ip='::1')
141
+ Traceback (most recent call last):
142
+ File "/usr/local/lib/python3.11/site-packages/tornado/web.py", line 1702, in _execute
143
+ result = method(*self.path_args, **self.path_kwargs)
144
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
145
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/web.py", line 489, in post
146
+ getattr(self, op)()
147
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/web.py", line 524, in file
148
+ mod.file.web_handler(self)
149
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/mod/file.py", line 335, in web_handler
150
+ context.write({'code': 0, 'msg': '', 'data': tlist()})
151
+ ^^^^^^^
152
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/mod/file.py", line 670, in tlist
153
+ with shelve.open(trashfile, 'c') as db:
154
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^
155
+ File "/usr/local/Cellar/python@3.11/3.11.11/Frameworks/Python.framework/Versions/3.11/lib/python3.11/shelve.py", line 243, in open
156
+ return DbfilenameShelf(filename, flag, protocol, writeback)
157
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
158
+ File "/usr/local/Cellar/python@3.11/3.11.11/Frameworks/Python.framework/Versions/3.11/lib/python3.11/shelve.py", line 227, in __init__
159
+ Shelf.__init__(self, dbm.open(filename, flag), protocol, writeback)
160
+ ^^^^^^^^^^^^^^^^^^^^^^^^
161
+ File "/usr/local/Cellar/python@3.11/3.11.11/Frameworks/Python.framework/Versions/3.11/lib/python3.11/dbm/__init__.py", line 91, in open
162
+ raise error[0]("db type is {0}, but the module is not "
163
+ dbm.error: db type is dbm.gnu, but the module is not available
164
+ 2026-07-07 20:17:56,786 - ERROR - 500 POST /api/operation/file (::1) 60.55ms
165
+ 2026-07-07 20:18:03,121 - ERROR - Uncaught exception POST /api/operation/file (::1)
166
+ HTTPServerRequest(protocol='http', host='localhost:14433', method='POST', uri='/api/operation/file', version='HTTP/1.1', remote_ip='::1')
167
+ Traceback (most recent call last):
168
+ File "/usr/local/lib/python3.11/site-packages/tornado/web.py", line 1702, in _execute
169
+ result = method(*self.path_args, **self.path_kwargs)
170
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
171
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/web.py", line 489, in post
172
+ getattr(self, op)()
173
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/web.py", line 524, in file
174
+ mod.file.web_handler(self)
175
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/mod/file.py", line 335, in web_handler
176
+ context.write({'code': 0, 'msg': '', 'data': tlist()})
177
+ ^^^^^^^
178
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/mod/file.py", line 670, in tlist
179
+ with shelve.open(trashfile, 'c') as db:
180
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^
181
+ File "/usr/local/Cellar/python@3.11/3.11.11/Frameworks/Python.framework/Versions/3.11/lib/python3.11/shelve.py", line 243, in open
182
+ return DbfilenameShelf(filename, flag, protocol, writeback)
183
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
184
+ File "/usr/local/Cellar/python@3.11/3.11.11/Frameworks/Python.framework/Versions/3.11/lib/python3.11/shelve.py", line 227, in __init__
185
+ Shelf.__init__(self, dbm.open(filename, flag), protocol, writeback)
186
+ ^^^^^^^^^^^^^^^^^^^^^^^^
187
+ File "/usr/local/Cellar/python@3.11/3.11.11/Frameworks/Python.framework/Versions/3.11/lib/python3.11/dbm/__init__.py", line 91, in open
188
+ raise error[0]("db type is {0}, but the module is not "
189
+ dbm.error: db type is dbm.gnu, but the module is not available
190
+ 2026-07-07 20:18:03,126 - ERROR - 500 POST /api/operation/file (::1) 8.51ms
191
+ 2026-07-07 20:18:28,097 - ERROR - Uncaught exception POST /api/operation/file (::1)
192
+ HTTPServerRequest(protocol='http', host='localhost:14433', method='POST', uri='/api/operation/file', version='HTTP/1.1', remote_ip='::1')
193
+ Traceback (most recent call last):
194
+ File "/usr/local/lib/python3.11/site-packages/tornado/web.py", line 1702, in _execute
195
+ result = method(*self.path_args, **self.path_kwargs)
196
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
197
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/web.py", line 489, in post
198
+ getattr(self, op)()
199
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/web.py", line 524, in file
200
+ mod.file.web_handler(self)
201
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/mod/file.py", line 323, in web_handler
202
+ if delete(path):
203
+ ^^^^^^^^^^^^
204
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/mod/file.py", line 629, in delete
205
+ db.close()
206
+ ^^
207
+ UnboundLocalError: cannot access local variable 'db' where it is not associated with a value
208
+ 2026-07-07 20:18:28,099 - ERROR - 500 POST /api/operation/file (::1) 3.20ms
209
+ 2026-07-07 20:20:49,923 - ERROR - Uncaught exception POST /api/operation/file (::1)
210
+ HTTPServerRequest(protocol='http', host='localhost:14433', method='POST', uri='/api/operation/file', version='HTTP/1.1', remote_ip='::1')
211
+ Traceback (most recent call last):
212
+ File "/usr/local/lib/python3.11/site-packages/tornado/web.py", line 1702, in _execute
213
+ result = method(*self.path_args, **self.path_kwargs)
214
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
215
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/web.py", line 489, in post
216
+ getattr(self, op)()
217
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/web.py", line 524, in file
218
+ mod.file.web_handler(self)
219
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/mod/file.py", line 323, in web_handler
220
+ if delete(path):
221
+ ^^^^^^^^^^^^
222
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/mod/file.py", line 629, in delete
223
+ db.close()
224
+ ^^
225
+ UnboundLocalError: cannot access local variable 'db' where it is not associated with a value
226
+ 2026-07-07 20:20:49,925 - ERROR - 500 POST /api/operation/file (::1) 5.16ms
227
+ 2026-07-07 20:26:14,790 - ERROR - Uncaught exception POST /api/operation/file (::1)
228
+ HTTPServerRequest(protocol='http', host='localhost:14433', method='POST', uri='/api/operation/file', version='HTTP/1.1', remote_ip='::1')
229
+ Traceback (most recent call last):
230
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/mod/file.py", line 45, in safe_shelve_open
231
+ return shelve.open(filename, flag)
232
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^
233
+ File "/usr/local/Cellar/python@3.11/3.11.11/Frameworks/Python.framework/Versions/3.11/lib/python3.11/shelve.py", line 243, in open
234
+ return DbfilenameShelf(filename, flag, protocol, writeback)
235
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
236
+ File "/usr/local/Cellar/python@3.11/3.11.11/Frameworks/Python.framework/Versions/3.11/lib/python3.11/shelve.py", line 227, in __init__
237
+ Shelf.__init__(self, dbm.open(filename, flag), protocol, writeback)
238
+ ^^^^^^^^^^^^^^^^^^^^^^^^
239
+ File "/usr/local/Cellar/python@3.11/3.11.11/Frameworks/Python.framework/Versions/3.11/lib/python3.11/dbm/__init__.py", line 91, in open
240
+ raise error[0]("db type is {0}, but the module is not "
241
+ dbm.error: db type is dbm.gnu, but the module is not available
242
+
243
+ During handling of the above exception, another exception occurred:
244
+
245
+ Traceback (most recent call last):
246
+ File "/usr/local/lib/python3.11/site-packages/tornado/web.py", line 1702, in _execute
247
+ result = method(*self.path_args, **self.path_kwargs)
248
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
249
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/web.py", line 489, in post
250
+ getattr(self, op)()
251
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/web.py", line 524, in file
252
+ mod.file.web_handler(self)
253
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/mod/file.py", line 350, in web_handler
254
+ context.write({'code': 0, 'msg': '', 'data': tlist()})
255
+ ^^^^^^^
256
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/mod/file.py", line 682, in tlist
257
+ with safe_shelve_open(trashfile, 'c') as db:
258
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
259
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/mod/file.py", line 55, in safe_shelve_open
260
+ return shelve.open(filename, 'n')
261
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
262
+ File "/usr/local/Cellar/python@3.11/3.11.11/Frameworks/Python.framework/Versions/3.11/lib/python3.11/shelve.py", line 243, in open
263
+ return DbfilenameShelf(filename, flag, protocol, writeback)
264
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
265
+ File "/usr/local/Cellar/python@3.11/3.11.11/Frameworks/Python.framework/Versions/3.11/lib/python3.11/shelve.py", line 227, in __init__
266
+ Shelf.__init__(self, dbm.open(filename, flag), protocol, writeback)
267
+ ^^^^^^^^^^^^^^^^^^^^^^^^
268
+ File "/usr/local/Cellar/python@3.11/3.11.11/Frameworks/Python.framework/Versions/3.11/lib/python3.11/dbm/__init__.py", line 95, in open
269
+ return mod.open(file, flag, mode)
270
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
271
+ _dbm.error: [Errno 13] Permission denied: '/Users/jksdou/.deleted_files/.fileinfo'
272
+ 2026-07-07 20:26:14,805 - ERROR - 500 POST /api/operation/file (::1) 23.70ms
273
+ 2026-07-07 21:52:17,890 - ERROR - Uncaught exception GET / (::1)
274
+ HTTPServerRequest(protocol='http', host='localhost:14433', method='GET', uri='/', version='HTTP/1.1', remote_ip='::1')
275
+ Traceback (most recent call last):
276
+ File "/usr/local/lib/python3.11/site-packages/tornado/web.py", line 1702, in _execute
277
+ result = method(*self.path_args, **self.path_kwargs)
278
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
279
+ File "/Users/jksdou/Projects/inpanel/inpanel/inpanel/web.py", line 156, in get
280
+ self.render("index.html", **data)
281
+ File "/usr/local/lib/python3.11/site-packages/tornado/web.py", line 863, in render
282
+ html = self.render_string(template_name, **kwargs)
283
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
284
+ File "/usr/local/lib/python3.11/site-packages/tornado/web.py", line 1012, in render_string
285
+ return t.generate(**namespace)
286
+ ^^^^^^^^^^^^^^^^^^^^^^^
287
+ File "/usr/local/lib/python3.11/site-packages/tornado/template.py", line 362, in generate
288
+ return execute()
289
+ ^^^^^^^^^
290
+ File "index_html.generated.py", line 29, in _tt_execute
291
+ _tt_tmp = version.version # index.html:58
292
+ ^^^^^^^
293
+ NameError: name 'version' is not defined
294
+ 2026-07-07 21:52:17,894 - ERROR - 500 GET / (::1) 7.04ms
@@ -0,0 +1,30 @@
1
+ /usr/local/inpanel/module
2
+ /usr/local
3
+ /usr/local/inpanel
4
+ /usr/local/inpanel/data
5
+ /usr/local/inpanel/exec
6
+ /
7
+ /usr/local/bin
8
+ /usr
9
+ /Users
10
+ /Users/jksdou
11
+ /Users/jksdou/Backups
12
+ /Users/jksdou/Backups/site
13
+ /Users/jksdou/Backups/server
14
+ /Users/jksdou/Backups/HonorPlay4T云盘/【批量下载】Screenshot_20230703_155737_mobi.w3studio.apps.android.shsmy.phone.jpg等
15
+ /Users/jksdou/Backups/HonorPlay4T云盘
16
+ /home
17
+ /etc/inpanel
18
+ /Users/jksdou/massCode
19
+ /Users/jksdou/iCloud云盘(归档)
20
+ /Users/jksdou/NutstoreCloudBridge
21
+ /Users/jksdou/Nutstore Files/我的坚果云
22
+ /Users/jksdou/Nutstore Files
23
+ /Users/jksdou/Movies
24
+ /Users/jksdou/MAMP PRO/assets
25
+ /Users/jksdou/MAMP PRO
26
+ /Users/jksdou/Library/AppleMediaServices
27
+ /Users/jksdou/Library
28
+ /Users/jksdou/Downloads
29
+ /Users/jksdou/Downloads/AppIcon.iconset
30
+ /Users/jksdou/Documents/20230416
@@ -0,0 +1 @@
1
+ 21358
@@ -0,0 +1,4 @@
1
+ [file]
2
+ lastdir = /usr/local/inpanel/module
3
+ lastfile =
4
+