ostium-ctl 0.1.0__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 (439) hide show
  1. ostium_ctl-0.1.0/.gitignore +58 -0
  2. ostium_ctl-0.1.0/AUDIT_REPORT.md +563 -0
  3. ostium_ctl-0.1.0/CHANGELOG.md +145 -0
  4. ostium_ctl-0.1.0/LICENSE +674 -0
  5. ostium_ctl-0.1.0/NOTICE +32 -0
  6. ostium_ctl-0.1.0/PKG-INFO +903 -0
  7. ostium_ctl-0.1.0/PLAN.md +1649 -0
  8. ostium_ctl-0.1.0/README.en.md +884 -0
  9. ostium_ctl-0.1.0/README.md +843 -0
  10. ostium_ctl-0.1.0/assets/brand/ostium-banner.svg +73 -0
  11. ostium_ctl-0.1.0/assets/brand/ostium-wordmark.svg +15 -0
  12. ostium_ctl-0.1.0/deploy/docker/docker-compose.yml +24 -0
  13. ostium_ctl-0.1.0/deploy/docker/entrypoint.sh +34 -0
  14. ostium_ctl-0.1.0/deploy/launchd/com.ostium.core.plist +34 -0
  15. ostium_ctl-0.1.0/deploy/launchd/com.ostium.ui.plist +38 -0
  16. ostium_ctl-0.1.0/deploy/launchd/com.ostium.ui.root.plist +38 -0
  17. ostium_ctl-0.1.0/deploy/launchd/install-macos.sh +229 -0
  18. ostium_ctl-0.1.0/deploy/nginx/ostium-ui.conf +73 -0
  19. ostium_ctl-0.1.0/deploy/pyinstaller/ostium-service.spec +33 -0
  20. ostium_ctl-0.1.0/deploy/pyinstaller/ostium.spec +39 -0
  21. ostium_ctl-0.1.0/deploy/pyinstaller/ostium_service.py +6 -0
  22. ostium_ctl-0.1.0/deploy/systemd/ostium-client-ui.service +26 -0
  23. ostium_ctl-0.1.0/deploy/systemd/ostium-core-client.service +37 -0
  24. ostium_ctl-0.1.0/deploy/systemd/ostium-core.service +37 -0
  25. ostium_ctl-0.1.0/deploy/systemd/ostium.service +39 -0
  26. ostium_ctl-0.1.0/deploy/systemd/user/ostium.service +22 -0
  27. ostium_ctl-0.1.0/deploy/windows/install.ps1 +126 -0
  28. ostium_ctl-0.1.0/deploy/windows/ostium.iss +36 -0
  29. ostium_ctl-0.1.0/deploy/windows/uninstall.ps1 +24 -0
  30. ostium_ctl-0.1.0/docs/adr/0001-typescript-6.md +19 -0
  31. ostium_ctl-0.1.0/docs/architecture.md +89 -0
  32. ostium_ctl-0.1.0/docs/design-system.md +60 -0
  33. ostium_ctl-0.1.0/docs/guides/acme.md +39 -0
  34. ostium_ctl-0.1.0/docs/guides/client.md +180 -0
  35. ostium_ctl-0.1.0/docs/guides/install.md +242 -0
  36. ostium_ctl-0.1.0/docs/guides/nginx.md +229 -0
  37. ostium_ctl-0.1.0/docs/guides/server.md +149 -0
  38. ostium_ctl-0.1.0/docs/guides/service-manager.md +276 -0
  39. ostium_ctl-0.1.0/docs/guides/subscription.md +31 -0
  40. ostium_ctl-0.1.0/docs/guides/tun.md +46 -0
  41. ostium_ctl-0.1.0/docs/guides/ui.md +37 -0
  42. ostium_ctl-0.1.0/docs/index.md +35 -0
  43. ostium_ctl-0.1.0/docs/operations/backup.md +50 -0
  44. ostium_ctl-0.1.0/docs/operations/troubleshooting.md +68 -0
  45. ostium_ctl-0.1.0/docs/operations/upgrade.md +73 -0
  46. ostium_ctl-0.1.0/docs/reference/api.md +36 -0
  47. ostium_ctl-0.1.0/docs/reference/cli.md +42 -0
  48. ostium_ctl-0.1.0/docs/reference/ports.md +38 -0
  49. ostium_ctl-0.1.0/docs/reference/profile.md +42 -0
  50. ostium_ctl-0.1.0/docs/security/threat-model.md +49 -0
  51. ostium_ctl-0.1.0/docs/ux.md +44 -0
  52. ostium_ctl-0.1.0/protos/v2ray_stats.proto +49 -0
  53. ostium_ctl-0.1.0/pyproject.toml +212 -0
  54. ostium_ctl-0.1.0/scripts/build-core-manifest.py +76 -0
  55. ostium_ctl-0.1.0/scripts/build-core.sh +81 -0
  56. ostium_ctl-0.1.0/scripts/build-macos.sh +34 -0
  57. ostium_ctl-0.1.0/scripts/build-windows.ps1 +60 -0
  58. ostium_ctl-0.1.0/scripts/coverage_gate.py +133 -0
  59. ostium_ctl-0.1.0/scripts/dev.sh +19 -0
  60. ostium_ctl-0.1.0/scripts/generate-icons.py +153 -0
  61. ostium_ctl-0.1.0/scripts/install-online.ps1 +170 -0
  62. ostium_ctl-0.1.0/scripts/install-online.sh +575 -0
  63. ostium_ctl-0.1.0/scripts/install.sh +597 -0
  64. ostium_ctl-0.1.0/scripts/soak-config.py +67 -0
  65. ostium_ctl-0.1.0/src/ostium/__init__.py +25 -0
  66. ostium_ctl-0.1.0/src/ostium/__main__.py +4 -0
  67. ostium_ctl-0.1.0/src/ostium/_version.py +24 -0
  68. ostium_ctl-0.1.0/src/ostium/acme/__init__.py +0 -0
  69. ostium_ctl-0.1.0/src/ostium/acme/client.py +202 -0
  70. ostium_ctl-0.1.0/src/ostium/api/__init__.py +0 -0
  71. ostium_ctl-0.1.0/src/ostium/api/app.py +529 -0
  72. ostium_ctl-0.1.0/src/ostium/api/deps.py +142 -0
  73. ostium_ctl-0.1.0/src/ostium/api/errors.py +45 -0
  74. ostium_ctl-0.1.0/src/ostium/api/ratelimit.py +30 -0
  75. ostium_ctl-0.1.0/src/ostium/api/routes_alerts.py +36 -0
  76. ostium_ctl-0.1.0/src/ostium/api/routes_audit.py +25 -0
  77. ostium_ctl-0.1.0/src/ostium/api/routes_auth.py +361 -0
  78. ostium_ctl-0.1.0/src/ostium/api/routes_backups.py +166 -0
  79. ostium_ctl-0.1.0/src/ostium/api/routes_certs.py +284 -0
  80. ostium_ctl-0.1.0/src/ostium/api/routes_events.py +65 -0
  81. ostium_ctl-0.1.0/src/ostium/api/routes_inbounds.py +254 -0
  82. ostium_ctl-0.1.0/src/ostium/api/routes_jobs.py +51 -0
  83. ostium_ctl-0.1.0/src/ostium/api/routes_logs.py +56 -0
  84. ostium_ctl-0.1.0/src/ostium/api/routes_profiles.py +281 -0
  85. ostium_ctl-0.1.0/src/ostium/api/routes_rules.py +316 -0
  86. ostium_ctl-0.1.0/src/ostium/api/routes_settings.py +319 -0
  87. ostium_ctl-0.1.0/src/ostium/api/routes_stats.py +172 -0
  88. ostium_ctl-0.1.0/src/ostium/api/routes_subscriptions.py +59 -0
  89. ostium_ctl-0.1.0/src/ostium/api/routes_system.py +516 -0
  90. ostium_ctl-0.1.0/src/ostium/api/routes_users.py +423 -0
  91. ostium_ctl-0.1.0/src/ostium/cli/__init__.py +0 -0
  92. ostium_ctl-0.1.0/src/ostium/cli/main.py +1399 -0
  93. ostium_ctl-0.1.0/src/ostium/config.py +381 -0
  94. ostium_ctl-0.1.0/src/ostium/core/__init__.py +0 -0
  95. ostium_ctl-0.1.0/src/ostium/core/app.py +231 -0
  96. ostium_ctl-0.1.0/src/ostium/db/__init__.py +0 -0
  97. ostium_ctl-0.1.0/src/ostium/db/base.py +34 -0
  98. ostium_ctl-0.1.0/src/ostium/db/models.py +261 -0
  99. ostium_ctl-0.1.0/src/ostium/db/session.py +86 -0
  100. ostium_ctl-0.1.0/src/ostium/domain/__init__.py +0 -0
  101. ostium_ctl-0.1.0/src/ostium/domain/endpoints.py +313 -0
  102. ostium_ctl-0.1.0/src/ostium/engine/__init__.py +0 -0
  103. ostium_ctl-0.1.0/src/ostium/engine/core_api.py +122 -0
  104. ostium_ctl-0.1.0/src/ostium/engine/manager.py +277 -0
  105. ostium_ctl-0.1.0/src/ostium/engine/singbox/__init__.py +0 -0
  106. ostium_ctl-0.1.0/src/ostium/engine/singbox/clash_api.py +71 -0
  107. ostium_ctl-0.1.0/src/ostium/engine/singbox/config.py +485 -0
  108. ostium_ctl-0.1.0/src/ostium/engine/singbox/supervisor.py +394 -0
  109. ostium_ctl-0.1.0/src/ostium/engine/singbox/v2ray_stats.py +79 -0
  110. ostium_ctl-0.1.0/src/ostium/engine/singbox/v2ray_stats_pb2.py +46 -0
  111. ostium_ctl-0.1.0/src/ostium/engine/singbox/v2ray_stats_pb2_grpc.py +199 -0
  112. ostium_ctl-0.1.0/src/ostium/engine/singbox/validate.py +259 -0
  113. ostium_ctl-0.1.0/src/ostium/py.typed +0 -0
  114. ostium_ctl-0.1.0/src/ostium/services/__init__.py +0 -0
  115. ostium_ctl-0.1.0/src/ostium/services/audit.py +136 -0
  116. ostium_ctl-0.1.0/src/ostium/services/auth.py +342 -0
  117. ostium_ctl-0.1.0/src/ostium/services/backup.py +284 -0
  118. ostium_ctl-0.1.0/src/ostium/services/certificates.py +293 -0
  119. ostium_ctl-0.1.0/src/ostium/services/crypto.py +26 -0
  120. ostium_ctl-0.1.0/src/ostium/services/events.py +70 -0
  121. ostium_ctl-0.1.0/src/ostium/services/jobs.py +195 -0
  122. ostium_ctl-0.1.0/src/ostium/services/profiles.py +359 -0
  123. ostium_ctl-0.1.0/src/ostium/services/rules.py +133 -0
  124. ostium_ctl-0.1.0/src/ostium/services/settings.py +33 -0
  125. ostium_ctl-0.1.0/src/ostium/services/stats.py +293 -0
  126. ostium_ctl-0.1.0/src/ostium/services/subscriptions.py +141 -0
  127. ostium_ctl-0.1.0/src/ostium/services/users.py +354 -0
  128. ostium_ctl-0.1.0/src/ostium/system/__init__.py +0 -0
  129. ostium_ctl-0.1.0/src/ostium/system/proxy.py +574 -0
  130. ostium_ctl-0.1.0/src/ostium/system/windows_service.py +94 -0
  131. ostium_ctl-0.1.0/src/ostium/util/__init__.py +0 -0
  132. ostium_ctl-0.1.0/src/ostium/util/ids.py +33 -0
  133. ostium_ctl-0.1.0/src/ostium/util/redact.py +58 -0
  134. ostium_ctl-0.1.0/src/ostium/util/security.py +200 -0
  135. ostium_ctl-0.1.0/src/ostium/util/time.py +39 -0
  136. ostium_ctl-0.1.0/src/ostium/web/__init__.py +0 -0
  137. ostium_ctl-0.1.0/tests/__init__.py +0 -0
  138. ostium_ctl-0.1.0/tests/conftest.py +121 -0
  139. ostium_ctl-0.1.0/tests/e2e/__init__.py +0 -0
  140. ostium_ctl-0.1.0/tests/integration/__init__.py +0 -0
  141. ostium_ctl-0.1.0/tests/integration/test_api_auth.py +380 -0
  142. ostium_ctl-0.1.0/tests/integration/test_api_backups_certs.py +296 -0
  143. ostium_ctl-0.1.0/tests/integration/test_api_events.py +69 -0
  144. ostium_ctl-0.1.0/tests/integration/test_api_flow.py +198 -0
  145. ostium_ctl-0.1.0/tests/integration/test_api_rules_profiles.py +342 -0
  146. ostium_ctl-0.1.0/tests/integration/test_api_settings.py +271 -0
  147. ostium_ctl-0.1.0/tests/integration/test_api_system.py +764 -0
  148. ostium_ctl-0.1.0/tests/integration/test_api_users_inbounds.py +378 -0
  149. ostium_ctl-0.1.0/tests/integration/test_app_helpers.py +579 -0
  150. ostium_ctl-0.1.0/tests/integration/test_audit.py +51 -0
  151. ostium_ctl-0.1.0/tests/integration/test_auth_service.py +149 -0
  152. ostium_ctl-0.1.0/tests/integration/test_backup.py +82 -0
  153. ostium_ctl-0.1.0/tests/integration/test_backup_extended.py +258 -0
  154. ostium_ctl-0.1.0/tests/integration/test_certificates.py +63 -0
  155. ostium_ctl-0.1.0/tests/integration/test_certificates_extended.py +219 -0
  156. ostium_ctl-0.1.0/tests/integration/test_client_api.py +53 -0
  157. ostium_ctl-0.1.0/tests/integration/test_collector_live.py +273 -0
  158. ostium_ctl-0.1.0/tests/integration/test_core_app.py +316 -0
  159. ostium_ctl-0.1.0/tests/integration/test_core_supervisor.py +129 -0
  160. ostium_ctl-0.1.0/tests/integration/test_engine_manager.py +57 -0
  161. ostium_ctl-0.1.0/tests/integration/test_engine_manager_extended.py +231 -0
  162. ostium_ctl-0.1.0/tests/integration/test_jobs.py +79 -0
  163. ostium_ctl-0.1.0/tests/integration/test_rulesets.py +48 -0
  164. ostium_ctl-0.1.0/tests/integration/test_services_misc.py +288 -0
  165. ostium_ctl-0.1.0/tests/integration/test_stats.py +125 -0
  166. ostium_ctl-0.1.0/tests/integration/test_stats_extended.py +292 -0
  167. ostium_ctl-0.1.0/tests/integration/test_supervisor_extended.py +502 -0
  168. ostium_ctl-0.1.0/tests/integration/test_users_service_extended.py +283 -0
  169. ostium_ctl-0.1.0/tests/integration/test_v2ray_core.py +76 -0
  170. ostium_ctl-0.1.0/tests/unit/__init__.py +0 -0
  171. ostium_ctl-0.1.0/tests/unit/test_acme.py +43 -0
  172. ostium_ctl-0.1.0/tests/unit/test_acme_extended.py +185 -0
  173. ostium_ctl-0.1.0/tests/unit/test_clash_api.py +38 -0
  174. ostium_ctl-0.1.0/tests/unit/test_clash_api_extended.py +59 -0
  175. ostium_ctl-0.1.0/tests/unit/test_cli.py +45 -0
  176. ostium_ctl-0.1.0/tests/unit/test_cli_extended.py +815 -0
  177. ostium_ctl-0.1.0/tests/unit/test_cli_workflows.py +84 -0
  178. ostium_ctl-0.1.0/tests/unit/test_config_builder.py +247 -0
  179. ostium_ctl-0.1.0/tests/unit/test_config_builder_extended.py +244 -0
  180. ostium_ctl-0.1.0/tests/unit/test_config_paths.py +351 -0
  181. ostium_ctl-0.1.0/tests/unit/test_core_api.py +123 -0
  182. ostium_ctl-0.1.0/tests/unit/test_deps.py +194 -0
  183. ostium_ctl-0.1.0/tests/unit/test_endpoints.py +108 -0
  184. ostium_ctl-0.1.0/tests/unit/test_endpoints_extended.py +173 -0
  185. ostium_ctl-0.1.0/tests/unit/test_entrypoints.py +62 -0
  186. ostium_ctl-0.1.0/tests/unit/test_events.py +31 -0
  187. ostium_ctl-0.1.0/tests/unit/test_installers.py +75 -0
  188. ostium_ctl-0.1.0/tests/unit/test_profiles.py +68 -0
  189. ostium_ctl-0.1.0/tests/unit/test_profiles_service_extended.py +313 -0
  190. ostium_ctl-0.1.0/tests/unit/test_release_scripts.py +38 -0
  191. ostium_ctl-0.1.0/tests/unit/test_release_workflow.py +73 -0
  192. ostium_ctl-0.1.0/tests/unit/test_rules.py +36 -0
  193. ostium_ctl-0.1.0/tests/unit/test_rules_extended.py +117 -0
  194. ostium_ctl-0.1.0/tests/unit/test_security.py +131 -0
  195. ostium_ctl-0.1.0/tests/unit/test_subscriptions_service.py +108 -0
  196. ostium_ctl-0.1.0/tests/unit/test_system_proxy.py +27 -0
  197. ostium_ctl-0.1.0/tests/unit/test_system_proxy_extended.py +425 -0
  198. ostium_ctl-0.1.0/tests/unit/test_utils.py +162 -0
  199. ostium_ctl-0.1.0/tests/unit/test_v2ray_stats.py +145 -0
  200. ostium_ctl-0.1.0/tests/unit/test_validate.py +338 -0
  201. ostium_ctl-0.1.0/tests/unit/test_windows_scripts.py +25 -0
  202. ostium_ctl-0.1.0/web/dist/.gitkeep +1 -0
  203. ostium_ctl-0.1.0/web/dist/assets/AppLayout-CnHo_1IA.css +1 -0
  204. ostium_ctl-0.1.0/web/dist/assets/AppLayout-TkOzyZjP.js +124 -0
  205. ostium_ctl-0.1.0/web/dist/assets/AuditPage-DKc-SkEr.css +1 -0
  206. ostium_ctl-0.1.0/web/dist/assets/AuditPage-DRMlsiOS.js +1 -0
  207. ostium_ctl-0.1.0/web/dist/assets/CertificatesPage-BALPvxEc.css +1 -0
  208. ostium_ctl-0.1.0/web/dist/assets/CertificatesPage-PoBGQlnF.js +1 -0
  209. ostium_ctl-0.1.0/web/dist/assets/CheckboxGroup-DaQGiz7w.js +105 -0
  210. ostium_ctl-0.1.0/web/dist/assets/ConnectionsPage-4L_Y9VaF.js +1 -0
  211. ostium_ctl-0.1.0/web/dist/assets/ConnectionsPage-BGHvE-XG.css +1 -0
  212. ostium_ctl-0.1.0/web/dist/assets/DiagnosticsPage-GBMdduQn.js +1 -0
  213. ostium_ctl-0.1.0/web/dist/assets/DiagnosticsPage-chvywnsd.css +1 -0
  214. ostium_ctl-0.1.0/web/dist/assets/Dropdown-CwXzstQE.js +125 -0
  215. ostium_ctl-0.1.0/web/dist/assets/HomeGate-3C_4sckV.css +1 -0
  216. ostium_ctl-0.1.0/web/dist/assets/HomeGate-D4c3bUDh.js +1 -0
  217. ostium_ctl-0.1.0/web/dist/assets/InboundsPage-DhR9BG0G.js +1 -0
  218. ostium_ctl-0.1.0/web/dist/assets/InboundsPage-Du4FhhK7.css +1 -0
  219. ostium_ctl-0.1.0/web/dist/assets/InputNumber-je36FpXB.js +13 -0
  220. ostium_ctl-0.1.0/web/dist/assets/JobsPage-BfbdymTp.css +1 -0
  221. ostium_ctl-0.1.0/web/dist/assets/JobsPage-CELbAvc8.js +1 -0
  222. ostium_ctl-0.1.0/web/dist/assets/LoginPage-B0c_xiRn.css +1 -0
  223. ostium_ctl-0.1.0/web/dist/assets/LoginPage-D1M5lp_t.js +110 -0
  224. ostium_ctl-0.1.0/web/dist/assets/LogsPage-BDLfX0KX.js +1 -0
  225. ostium_ctl-0.1.0/web/dist/assets/LogsPage-BLPPfggF.css +1 -0
  226. ostium_ctl-0.1.0/web/dist/assets/NetworkPage-B83yUZtL.css +1 -0
  227. ostium_ctl-0.1.0/web/dist/assets/NetworkPage-DMjbNN8w.js +1 -0
  228. ostium_ctl-0.1.0/web/dist/assets/NotFoundPage-4Eqar04L.js +1 -0
  229. ostium_ctl-0.1.0/web/dist/assets/NotFoundPage-eEit74Eg.css +1 -0
  230. ostium_ctl-0.1.0/web/dist/assets/OBrandMark-B6ptsQ9Y.js +1 -0
  231. ostium_ctl-0.1.0/web/dist/assets/OBrandMark-CVWmop63.css +1 -0
  232. ostium_ctl-0.1.0/web/dist/assets/OCopyButton-B-oqlfqz.css +1 -0
  233. ostium_ctl-0.1.0/web/dist/assets/OCopyButton-B0BdYJ8p.js +1 -0
  234. ostium_ctl-0.1.0/web/dist/assets/OEmptyState-C8WDHXJd.css +1 -0
  235. ostium_ctl-0.1.0/web/dist/assets/OEmptyState-CuNuiClw.js +1 -0
  236. ostium_ctl-0.1.0/web/dist/assets/OErrorState-C3LiX1aU.js +1 -0
  237. ostium_ctl-0.1.0/web/dist/assets/OErrorState-C3iaLxYh.css +1 -0
  238. ostium_ctl-0.1.0/web/dist/assets/OLazyChart-BxXcJLKv.css +1 -0
  239. ostium_ctl-0.1.0/web/dist/assets/OLazyChart-CPui9WML.js +2 -0
  240. ostium_ctl-0.1.0/web/dist/assets/OPageHeader-BpyY4eEc.js +1 -0
  241. ostium_ctl-0.1.0/web/dist/assets/OPageHeader-BsAKYTkr.css +1 -0
  242. ostium_ctl-0.1.0/web/dist/assets/OQrModal-BBvUIRXZ.css +1 -0
  243. ostium_ctl-0.1.0/web/dist/assets/OQrModal-DRzK9PFl.js +1 -0
  244. ostium_ctl-0.1.0/web/dist/assets/OSectionCard-BEbjsw4P.css +1 -0
  245. ostium_ctl-0.1.0/web/dist/assets/OSectionCard-Dwixcexc.js +1 -0
  246. ostium_ctl-0.1.0/web/dist/assets/OStatCard-DMMkumPu.css +1 -0
  247. ostium_ctl-0.1.0/web/dist/assets/OStatCard-DihjcKRH.js +1 -0
  248. ostium_ctl-0.1.0/web/dist/assets/OTrafficChart-BmqMasLG.js +19 -0
  249. ostium_ctl-0.1.0/web/dist/assets/OTrafficChart-yKTAaNwo.css +1 -0
  250. ostium_ctl-0.1.0/web/dist/assets/OnboardingPage-CnC3Tkn8.js +1 -0
  251. ostium_ctl-0.1.0/web/dist/assets/OnboardingPage-Dao3P5YR.css +1 -0
  252. ostium_ctl-0.1.0/web/dist/assets/ProfilesPage-BW82LDzL.js +1 -0
  253. ostium_ctl-0.1.0/web/dist/assets/ProfilesPage-Bf9lzS6J.css +1 -0
  254. ostium_ctl-0.1.0/web/dist/assets/RadioGroup-DjGmk7eo.js +153 -0
  255. ostium_ctl-0.1.0/web/dist/assets/RoutingPage-CHDNOmbs.css +1 -0
  256. ostium_ctl-0.1.0/web/dist/assets/RoutingPage-TELCLabr.js +1 -0
  257. ostium_ctl-0.1.0/web/dist/assets/RulesPage-DM47ToQK.js +1 -0
  258. ostium_ctl-0.1.0/web/dist/assets/RulesPage-DeW2Bp-B.css +1 -0
  259. ostium_ctl-0.1.0/web/dist/assets/Select-IxrvO84D.js +410 -0
  260. ostium_ctl-0.1.0/web/dist/assets/SettingsPage-01lhFrbF.css +1 -0
  261. ostium_ctl-0.1.0/web/dist/assets/SettingsPage-CdaYFH0Z.js +1 -0
  262. ostium_ctl-0.1.0/web/dist/assets/SetupPage-B5T7fne1.css +1 -0
  263. ostium_ctl-0.1.0/web/dist/assets/SetupPage-BWRiRx0N.js +1 -0
  264. ostium_ctl-0.1.0/web/dist/assets/StatsPage-C_J3rnv5.css +1 -0
  265. ostium_ctl-0.1.0/web/dist/assets/StatsPage-CiP7SXHY.js +1 -0
  266. ostium_ctl-0.1.0/web/dist/assets/SubscriptionsPage-BSecexRk.css +1 -0
  267. ostium_ctl-0.1.0/web/dist/assets/SubscriptionsPage-Cdq6Y3T2.js +1 -0
  268. ostium_ctl-0.1.0/web/dist/assets/Switch-CX9oUrD6.js +102 -0
  269. ostium_ctl-0.1.0/web/dist/assets/SystemPage-Deu_D2H5.css +1 -0
  270. ostium_ctl-0.1.0/web/dist/assets/SystemPage-DqesWfD8.js +1 -0
  271. ostium_ctl-0.1.0/web/dist/assets/UsersPage-CDpf--BF.js +362 -0
  272. ostium_ctl-0.1.0/web/dist/assets/UsersPage-DtGDcfjr.css +1 -0
  273. ostium_ctl-0.1.0/web/dist/assets/_plugin-vue_export-helper-CtsCrH4a.js +3 -0
  274. ostium_ctl-0.1.0/web/dist/assets/arrow-left-D_hTaPYD.js +1 -0
  275. ostium_ctl-0.1.0/web/dist/assets/arrow-up-from-line-C0pEYqml.js +1 -0
  276. ostium_ctl-0.1.0/web/dist/assets/calendar-clock-DiHESNVh.js +1 -0
  277. ostium_ctl-0.1.0/web/dist/assets/check-DGkXO7lB.js +1 -0
  278. ostium_ctl-0.1.0/web/dist/assets/compass-L-dwGuZp.js +1 -0
  279. ostium_ctl-0.1.0/web/dist/assets/composables-BsF0VAcy.js +1 -0
  280. ostium_ctl-0.1.0/web/dist/assets/create-mR1YnL_8.js +117 -0
  281. ostium_ctl-0.1.0/web/dist/assets/createLucideIcon-CWlB5tHO.js +45 -0
  282. ostium_ctl-0.1.0/web/dist/assets/css-HHsd4Dgi.js +1 -0
  283. ostium_ctl-0.1.0/web/dist/assets/database-Cq48lz38.js +1 -0
  284. ostium_ctl-0.1.0/web/dist/assets/download-58fxtqjE.js +1 -0
  285. ostium_ctl-0.1.0/web/dist/assets/earth-BmbhRGrA.js +1 -0
  286. ostium_ctl-0.1.0/web/dist/assets/events-iRSPNrZu.js +1 -0
  287. ostium_ctl-0.1.0/web/dist/assets/get-DCmvXwyo.js +1 -0
  288. ostium_ctl-0.1.0/web/dist/assets/index-BF0kVdj-.css +1 -0
  289. ostium_ctl-0.1.0/web/dist/assets/index-ByVCKlLD.js +1318 -0
  290. ostium_ctl-0.1.0/web/dist/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  291. ostium_ctl-0.1.0/web/dist/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  292. ostium_ctl-0.1.0/web/dist/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  293. ostium_ctl-0.1.0/web/dist/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  294. ostium_ctl-0.1.0/web/dist/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  295. ostium_ctl-0.1.0/web/dist/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  296. ostium_ctl-0.1.0/web/dist/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  297. ostium_ctl-0.1.0/web/dist/assets/key-round-pOGf6RQ8.js +1 -0
  298. ostium_ctl-0.1.0/web/dist/assets/lock-keyhole-CJztbacy.js +1 -0
  299. ostium_ctl-0.1.0/web/dist/assets/memory-stick-DFakatVS.js +1 -0
  300. ostium_ctl-0.1.0/web/dist/assets/misc-v7XGxIq4.js +1 -0
  301. ostium_ctl-0.1.0/web/dist/assets/pause-CmQQzZLQ.js +1 -0
  302. ostium_ctl-0.1.0/web/dist/assets/play-Dj9D01ba.js +1 -0
  303. ostium_ctl-0.1.0/web/dist/assets/plus-BS9m8U59.js +1 -0
  304. ostium_ctl-0.1.0/web/dist/assets/replaceable-Xwldo3FD.js +77 -0
  305. ostium_ctl-0.1.0/web/dist/assets/rolldown-runtime-XKyaHtl9.js +1 -0
  306. ostium_ctl-0.1.0/web/dist/assets/rotate-ccw-CxnBy7vT.js +1 -0
  307. ostium_ctl-0.1.0/web/dist/assets/route-DY54yEWA.js +1 -0
  308. ostium_ctl-0.1.0/web/dist/assets/server-DmdBrRlX.js +1 -0
  309. ostium_ctl-0.1.0/web/dist/assets/shield-question-mark-p_oiEXDj.js +1 -0
  310. ostium_ctl-0.1.0/web/dist/assets/sparkles-DwBhkDLT.js +1 -0
  311. ostium_ctl-0.1.0/web/dist/assets/terminal-DSrQLazn.js +1 -0
  312. ostium_ctl-0.1.0/web/dist/assets/trash-B4t97Yg6.js +1 -0
  313. ostium_ctl-0.1.0/web/dist/assets/use-message-DpuN2mQG.js +1 -0
  314. ostium_ctl-0.1.0/web/dist/assets/useBrowserNotifications-D7TM1fAV.js +1 -0
  315. ostium_ctl-0.1.0/web/dist/assets/useCopy-qMe7zkUi.js +1 -0
  316. ostium_ctl-0.1.0/web/dist/assets/user-round-BgbIfPpl.js +1 -0
  317. ostium_ctl-0.1.0/web/dist/assets/zap-mwHRUjCZ.js +1 -0
  318. ostium_ctl-0.1.0/web/dist/icons/apple-touch-icon.png +0 -0
  319. ostium_ctl-0.1.0/web/dist/icons/favicon.svg +14 -0
  320. ostium_ctl-0.1.0/web/dist/icons/icon-192.png +0 -0
  321. ostium_ctl-0.1.0/web/dist/icons/icon-512.png +0 -0
  322. ostium_ctl-0.1.0/web/dist/icons/maskable-512.png +0 -0
  323. ostium_ctl-0.1.0/web/dist/index.html +25 -0
  324. ostium_ctl-0.1.0/web/dist/manifest.webmanifest +21 -0
  325. ostium_ctl-0.1.0/web/dist/sw.js +54 -0
  326. ostium_ctl-0.1.0/web/dist/theme-init.js +6 -0
  327. ostium_ctl-0.1.0/web/eslint.config.js +64 -0
  328. ostium_ctl-0.1.0/web/index.html +19 -0
  329. ostium_ctl-0.1.0/web/package-lock.json +5054 -0
  330. ostium_ctl-0.1.0/web/package.json +69 -0
  331. ostium_ctl-0.1.0/web/playwright.config.ts +40 -0
  332. ostium_ctl-0.1.0/web/public/.gitkeep +1 -0
  333. ostium_ctl-0.1.0/web/public/icons/apple-touch-icon.png +0 -0
  334. ostium_ctl-0.1.0/web/public/icons/favicon.svg +14 -0
  335. ostium_ctl-0.1.0/web/public/icons/icon-192.png +0 -0
  336. ostium_ctl-0.1.0/web/public/icons/icon-512.png +0 -0
  337. ostium_ctl-0.1.0/web/public/icons/maskable-512.png +0 -0
  338. ostium_ctl-0.1.0/web/public/manifest.webmanifest +21 -0
  339. ostium_ctl-0.1.0/web/public/sw.js +8 -0
  340. ostium_ctl-0.1.0/web/public/theme-init.js +6 -0
  341. ostium_ctl-0.1.0/web/pwa.ts +137 -0
  342. ostium_ctl-0.1.0/web/src/App.vue +54 -0
  343. ostium_ctl-0.1.0/web/src/api/client.ts +92 -0
  344. ostium_ctl-0.1.0/web/src/api/index.ts +287 -0
  345. ostium_ctl-0.1.0/web/src/api/types.ts +324 -0
  346. ostium_ctl-0.1.0/web/src/components/OBrandMark.vue +71 -0
  347. ostium_ctl-0.1.0/web/src/components/OCommandPalette.vue +353 -0
  348. ostium_ctl-0.1.0/web/src/components/OConnectOrb.vue +211 -0
  349. ostium_ctl-0.1.0/web/src/components/OCopyButton.vue +101 -0
  350. ostium_ctl-0.1.0/web/src/components/OEmptyState.vue +99 -0
  351. ostium_ctl-0.1.0/web/src/components/OErrorState.vue +76 -0
  352. ostium_ctl-0.1.0/web/src/components/OJobDrawer.vue +203 -0
  353. ostium_ctl-0.1.0/web/src/components/OLazyChart.vue +80 -0
  354. ostium_ctl-0.1.0/web/src/components/OPageHeader.vue +60 -0
  355. ostium_ctl-0.1.0/web/src/components/OPwaUpdate.vue +79 -0
  356. ostium_ctl-0.1.0/web/src/components/OQrModal.vue +79 -0
  357. ostium_ctl-0.1.0/web/src/components/OSectionCard.vue +110 -0
  358. ostium_ctl-0.1.0/web/src/components/OShortcutModal.vue +77 -0
  359. ostium_ctl-0.1.0/web/src/components/OSkeletonPage.vue +111 -0
  360. ostium_ctl-0.1.0/web/src/components/OStatCard.vue +135 -0
  361. ostium_ctl-0.1.0/web/src/components/OStatusPill.vue +103 -0
  362. ostium_ctl-0.1.0/web/src/components/OTrafficChart.vue +145 -0
  363. ostium_ctl-0.1.0/web/src/composables/useBrowserNotifications.ts +29 -0
  364. ostium_ctl-0.1.0/web/src/composables/useCopy.ts +32 -0
  365. ostium_ctl-0.1.0/web/src/composables/usePwa.ts +67 -0
  366. ostium_ctl-0.1.0/web/src/composables/useStatus.ts +54 -0
  367. ostium_ctl-0.1.0/web/src/design/theme.ts +173 -0
  368. ostium_ctl-0.1.0/web/src/env.d.ts +1 -0
  369. ostium_ctl-0.1.0/web/src/layouts/AppLayout.vue +949 -0
  370. ostium_ctl-0.1.0/web/src/locales/en.ts +725 -0
  371. ostium_ctl-0.1.0/web/src/locales/index.ts +34 -0
  372. ostium_ctl-0.1.0/web/src/locales/zh.ts +715 -0
  373. ostium_ctl-0.1.0/web/src/main.ts +17 -0
  374. ostium_ctl-0.1.0/web/src/pages/AuditPage.vue +157 -0
  375. ostium_ctl-0.1.0/web/src/pages/CertificatesPage.vue +493 -0
  376. ostium_ctl-0.1.0/web/src/pages/ClientHomePage.vue +564 -0
  377. ostium_ctl-0.1.0/web/src/pages/ConnectionsPage.vue +369 -0
  378. ostium_ctl-0.1.0/web/src/pages/DashboardPage.vue +729 -0
  379. ostium_ctl-0.1.0/web/src/pages/DiagnosticsPage.vue +211 -0
  380. ostium_ctl-0.1.0/web/src/pages/HomeGate.vue +11 -0
  381. ostium_ctl-0.1.0/web/src/pages/InboundsPage.vue +526 -0
  382. ostium_ctl-0.1.0/web/src/pages/JobsPage.vue +289 -0
  383. ostium_ctl-0.1.0/web/src/pages/LoginPage.vue +478 -0
  384. ostium_ctl-0.1.0/web/src/pages/LogsPage.vue +362 -0
  385. ostium_ctl-0.1.0/web/src/pages/NetworkPage.vue +406 -0
  386. ostium_ctl-0.1.0/web/src/pages/NotFoundPage.vue +67 -0
  387. ostium_ctl-0.1.0/web/src/pages/OnboardingPage.vue +428 -0
  388. ostium_ctl-0.1.0/web/src/pages/ProfilesPage.vue +477 -0
  389. ostium_ctl-0.1.0/web/src/pages/RoutingPage.vue +510 -0
  390. ostium_ctl-0.1.0/web/src/pages/RulesPage.vue +505 -0
  391. ostium_ctl-0.1.0/web/src/pages/SettingsPage.vue +1080 -0
  392. ostium_ctl-0.1.0/web/src/pages/SetupPage.vue +689 -0
  393. ostium_ctl-0.1.0/web/src/pages/StatsPage.vue +173 -0
  394. ostium_ctl-0.1.0/web/src/pages/SubscriptionsPage.vue +401 -0
  395. ostium_ctl-0.1.0/web/src/pages/SystemPage.vue +343 -0
  396. ostium_ctl-0.1.0/web/src/pages/UsersPage.vue +1020 -0
  397. ostium_ctl-0.1.0/web/src/router/index.ts +178 -0
  398. ostium_ctl-0.1.0/web/src/router/nav.ts +217 -0
  399. ostium_ctl-0.1.0/web/src/stores/app.ts +97 -0
  400. ostium_ctl-0.1.0/web/src/stores/auth.ts +89 -0
  401. ostium_ctl-0.1.0/web/src/stores/events.ts +81 -0
  402. ostium_ctl-0.1.0/web/src/styles/base.css +316 -0
  403. ostium_ctl-0.1.0/web/src/styles/tokens.css +90 -0
  404. ostium_ctl-0.1.0/web/src/utils/format.ts +114 -0
  405. ostium_ctl-0.1.0/web/tests/e2e/smoke.spec.ts +238 -0
  406. ostium_ctl-0.1.0/web/tests/e2e/smoke.spec.ts-snapshots/dashboard-dark-desktop-linux.png +0 -0
  407. ostium_ctl-0.1.0/web/tests/e2e/smoke.spec.ts-snapshots/dashboard-dark-mobile-linux.png +0 -0
  408. ostium_ctl-0.1.0/web/tests/e2e/smoke.spec.ts-snapshots/dashboard-dark-tablet-linux.png +0 -0
  409. ostium_ctl-0.1.0/web/tests/e2e/smoke.spec.ts-snapshots/dashboard-light-desktop-linux.png +0 -0
  410. ostium_ctl-0.1.0/web/tests/e2e/smoke.spec.ts-snapshots/dashboard-light-mobile-linux.png +0 -0
  411. ostium_ctl-0.1.0/web/tests/e2e/smoke.spec.ts-snapshots/dashboard-light-tablet-linux.png +0 -0
  412. ostium_ctl-0.1.0/web/tests/setup.ts +62 -0
  413. ostium_ctl-0.1.0/web/tests/unit/api.test.ts +205 -0
  414. ostium_ctl-0.1.0/web/tests/unit/app_shell.test.ts +170 -0
  415. ostium_ctl-0.1.0/web/tests/unit/components.test.ts +226 -0
  416. ostium_ctl-0.1.0/web/tests/unit/composables.test.ts +175 -0
  417. ostium_ctl-0.1.0/web/tests/unit/format.test.ts +43 -0
  418. ostium_ctl-0.1.0/web/tests/unit/helpers.ts +908 -0
  419. ostium_ctl-0.1.0/web/tests/unit/layout_branches.test.ts +147 -0
  420. ostium_ctl-0.1.0/web/tests/unit/main.test.ts +45 -0
  421. ostium_ctl-0.1.0/web/tests/unit/pages_auth.test.ts +99 -0
  422. ostium_ctl-0.1.0/web/tests/unit/pages_auth_interactions.test.ts +172 -0
  423. ostium_ctl-0.1.0/web/tests/unit/pages_client.test.ts +98 -0
  424. ostium_ctl-0.1.0/web/tests/unit/pages_dashboard.test.ts +22 -0
  425. ostium_ctl-0.1.0/web/tests/unit/pages_interactions.test.ts +169 -0
  426. ostium_ctl-0.1.0/web/tests/unit/pages_script_branches.test.ts +332 -0
  427. ostium_ctl-0.1.0/web/tests/unit/pages_server.test.ts +64 -0
  428. ostium_ctl-0.1.0/web/tests/unit/pages_settings_interactions.test.ts +109 -0
  429. ostium_ctl-0.1.0/web/tests/unit/pages_users_interactions.test.ts +75 -0
  430. ostium_ctl-0.1.0/web/tests/unit/pages_variants.test.ts +208 -0
  431. ostium_ctl-0.1.0/web/tests/unit/pwa.test.ts +57 -0
  432. ostium_ctl-0.1.0/web/tests/unit/pwaGenerator.test.ts +37 -0
  433. ostium_ctl-0.1.0/web/tests/unit/router.test.ts +65 -0
  434. ostium_ctl-0.1.0/web/tests/unit/store_branches.test.ts +149 -0
  435. ostium_ctl-0.1.0/web/tests/unit/stores.test.ts +236 -0
  436. ostium_ctl-0.1.0/web/tests/unit/usePwa.test.ts +114 -0
  437. ostium_ctl-0.1.0/web/tsconfig.json +19 -0
  438. ostium_ctl-0.1.0/web/tsconfig.node.json +13 -0
  439. ostium_ctl-0.1.0/web/vite.config.ts +47 -0
@@ -0,0 +1,58 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *.egg-info/
5
+ .eggs/
6
+ build/
7
+ dist/
8
+ !web/dist/
9
+ .venv/
10
+ venv/
11
+ .mypy_cache/
12
+ .ruff_cache/
13
+ .pytest_cache/
14
+ .coverage
15
+ .coverage.*
16
+ htmlcov/
17
+ coverage.xml
18
+ coverage.json
19
+ .hypothesis/
20
+ site/
21
+ src/ostium/_version.py
22
+
23
+ # Node
24
+ node_modules/
25
+ web/dist/*
26
+ !web/dist/.gitkeep
27
+ web/.vite/
28
+ web/coverage/
29
+ web/test-results/
30
+ web/playwright-report/
31
+ web/blob-report/
32
+ web/.eslintcache
33
+
34
+ # Ostium runtime data / secrets
35
+ .env
36
+ .env.*
37
+ !.env.example
38
+ *.db
39
+ *.db-wal
40
+ *.db-shm
41
+ master.key
42
+ core.token
43
+ clash.secret
44
+ runtime/
45
+ data/
46
+ *.pem
47
+ *.key
48
+ !web/public/icons/*.svg
49
+
50
+ # Editor / OS
51
+ .idea/
52
+ .vscode/
53
+ .DS_Store
54
+ Thumbs.db
55
+ *.swp
56
+
57
+ # Local notes
58
+ HANDOFF.md