exp-mitmproxy-rs 0.12.11.post1__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 (179) hide show
  1. exp_mitmproxy_rs-0.12.11.post1/.cargo/config.toml +14 -0
  2. exp_mitmproxy_rs-0.12.11.post1/.github/FUNDING.yml +1 -0
  3. exp_mitmproxy_rs-0.12.11.post1/.github/RELEASING.md +30 -0
  4. exp_mitmproxy_rs-0.12.11.post1/.github/actions/setup/action.yml +31 -0
  5. exp_mitmproxy_rs-0.12.11.post1/.github/dependabot.yml +27 -0
  6. exp_mitmproxy_rs-0.12.11.post1/.github/python-version.txt +1 -0
  7. exp_mitmproxy_rs-0.12.11.post1/.github/scripts/build-macos-redirector.sh +58 -0
  8. exp_mitmproxy_rs-0.12.11.post1/.github/scripts/pin-versions.py +17 -0
  9. exp_mitmproxy_rs-0.12.11.post1/.github/scripts/release +27 -0
  10. exp_mitmproxy_rs-0.12.11.post1/.github/workflows/autofix.yml +56 -0
  11. exp_mitmproxy_rs-0.12.11.post1/.github/workflows/ci.yml +149 -0
  12. exp_mitmproxy_rs-0.12.11.post1/.github/workflows/docs.yml +55 -0
  13. exp_mitmproxy_rs-0.12.11.post1/.gitignore +10 -0
  14. exp_mitmproxy_rs-0.12.11.post1/CHANGELOG.md +358 -0
  15. exp_mitmproxy_rs-0.12.11.post1/CONTRIBUTING.md +58 -0
  16. exp_mitmproxy_rs-0.12.11.post1/Cargo.lock +4568 -0
  17. exp_mitmproxy_rs-0.12.11.post1/Cargo.toml +99 -0
  18. exp_mitmproxy_rs-0.12.11.post1/LICENSE +19 -0
  19. exp_mitmproxy_rs-0.12.11.post1/PKG-INFO +14 -0
  20. exp_mitmproxy_rs-0.12.11.post1/README.md +47 -0
  21. exp_mitmproxy_rs-0.12.11.post1/architecture.png +0 -0
  22. exp_mitmproxy_rs-0.12.11.post1/benches/.gitignore +3 -0
  23. exp_mitmproxy_rs-0.12.11.post1/benches/dns.py +23 -0
  24. exp_mitmproxy_rs-0.12.11.post1/benches/local.conf +9 -0
  25. exp_mitmproxy_rs-0.12.11.post1/benches/nonlocal.conf +8 -0
  26. exp_mitmproxy_rs-0.12.11.post1/benches/openvpnserv.exe +0 -0
  27. exp_mitmproxy_rs-0.12.11.post1/benches/plot.py +321 -0
  28. exp_mitmproxy_rs-0.12.11.post1/benches/process.rs +78 -0
  29. exp_mitmproxy_rs-0.12.11.post1/benches/py_echo_client.py +101 -0
  30. exp_mitmproxy_rs-0.12.11.post1/benches/py_echo_server.py +54 -0
  31. exp_mitmproxy_rs-0.12.11.post1/benches/wg_echo_client.py +100 -0
  32. exp_mitmproxy_rs-0.12.11.post1/benches/wg_echo_server.py +94 -0
  33. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-contentviews/Cargo.toml +34 -0
  34. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-contentviews/README.md +7 -0
  35. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-contentviews/benches/contentviews.rs +61 -0
  36. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-contentviews/src/hex_dump.rs +51 -0
  37. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-contentviews/src/hex_stream.rs +85 -0
  38. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-contentviews/src/lib.rs +132 -0
  39. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-contentviews/src/msgpack.rs +148 -0
  40. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-contentviews/src/protobuf/existing_proto_definitions.rs +190 -0
  41. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-contentviews/src/protobuf/mod.rs +10 -0
  42. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-contentviews/src/protobuf/proto_to_yaml.rs +109 -0
  43. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-contentviews/src/protobuf/raw_to_proto.rs +195 -0
  44. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-contentviews/src/protobuf/reencode.rs +193 -0
  45. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-contentviews/src/protobuf/view_grpc.rs +263 -0
  46. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-contentviews/src/protobuf/view_protobuf.rs +264 -0
  47. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-contentviews/src/protobuf/yaml_to_pretty.rs +130 -0
  48. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-contentviews/src/test_inspect_metadata.rs +52 -0
  49. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-contentviews/testdata/protobuf/mismatch.proto +5 -0
  50. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-contentviews/testdata/protobuf/nested.proto +17 -0
  51. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-contentviews/testdata/protobuf/simple.proto +5 -0
  52. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-contentviews/testdata/protobuf/simple_package.proto +18 -0
  53. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-contentviews/testdata/protobuf/simple_service.proto +16 -0
  54. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-highlight/Cargo.toml +29 -0
  55. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-highlight/README.md +8 -0
  56. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-highlight/benches/syntax_highlight.rs +58 -0
  57. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-highlight/src/common.rs +94 -0
  58. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-highlight/src/css.rs +92 -0
  59. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-highlight/src/javascript.rs +84 -0
  60. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-highlight/src/lib.rs +109 -0
  61. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-highlight/src/xml.rs +71 -0
  62. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-highlight/src/yaml.rs +70 -0
  63. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-macos/.swift-format +6 -0
  64. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-macos/.swiftlint.yml +9 -0
  65. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-macos/README.md +17 -0
  66. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-macos/mitmproxy_macos/__init__.py +0 -0
  67. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-macos/mitmproxy_macos/macos-certificate-truster.app/Contents/Info.plist +30 -0
  68. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-macos/mitmproxy_macos/macos-certificate-truster.app/Contents/Resources/mitmproxy.icns +0 -0
  69. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-macos/pyproject.toml +25 -0
  70. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-macos/redirector/.gitignore +2 -0
  71. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-macos/redirector/ExportOptions.plist +23 -0
  72. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-macos/redirector/README.md +21 -0
  73. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-macos/redirector/ipc/mitmproxy_ipc.pb.swift +733 -0
  74. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-macos/redirector/ipc/utils.swift +116 -0
  75. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-macos/redirector/macos-redirector/Assets.xcassets/AppIcon.appiconset/Contents.json +68 -0
  76. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-macos/redirector/macos-redirector/Assets.xcassets/AppIcon.appiconset/logo-circle-1024.png +0 -0
  77. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-macos/redirector/macos-redirector/Assets.xcassets/AppIcon.appiconset/logo-circle-128.png +0 -0
  78. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-macos/redirector/macos-redirector/Assets.xcassets/AppIcon.appiconset/logo-circle-16.png +0 -0
  79. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-macos/redirector/macos-redirector/Assets.xcassets/AppIcon.appiconset/logo-circle-256.png +0 -0
  80. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-macos/redirector/macos-redirector/Assets.xcassets/AppIcon.appiconset/logo-circle-32.png +0 -0
  81. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-macos/redirector/macos-redirector/Assets.xcassets/AppIcon.appiconset/logo-circle-512.png +0 -0
  82. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-macos/redirector/macos-redirector/Assets.xcassets/AppIcon.appiconset/logo-circle-64.png +0 -0
  83. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-macos/redirector/macos-redirector/Assets.xcassets/Contents.json +6 -0
  84. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-macos/redirector/macos-redirector/app.swift +123 -0
  85. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-macos/redirector/macos-redirector/macos_redirector.entitlements +12 -0
  86. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-macos/redirector/macos-redirector.xcodeproj/project.pbxproj +606 -0
  87. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-macos/redirector/macos-redirector.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  88. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-macos/redirector/macos-redirector.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  89. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-macos/redirector/macos-redirector.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +14 -0
  90. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-macos/redirector/macos-redirector.xcodeproj/xcshareddata/xcschemes/macos-redirector.xcscheme +99 -0
  91. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-macos/redirector/network-extension/FlowExtensions.swift +135 -0
  92. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-macos/redirector/network-extension/Info.plist +16 -0
  93. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-macos/redirector/network-extension/InterceptConf.swift +76 -0
  94. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-macos/redirector/network-extension/ProcessInfoCache.swift +48 -0
  95. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-macos/redirector/network-extension/TransparentProxyProvider.swift +186 -0
  96. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-macos/redirector/network-extension/libproc-Bridging-Header.h +6 -0
  97. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-macos/redirector/network-extension/main.swift +15 -0
  98. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-macos/redirector/network-extension/network_extension.entitlements +10 -0
  99. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-macos/version-info.toml +121 -0
  100. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-rs/.gitignore +5 -0
  101. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-rs/Cargo.toml +49 -0
  102. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-rs/README.md +7 -0
  103. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-rs/pytests/logger.rs +79 -0
  104. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-rs/pytests/test_task.rs +103 -0
  105. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-rs/src/contentviews.rs +166 -0
  106. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-rs/src/dns_resolver.rs +114 -0
  107. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-rs/src/lib.rs +159 -0
  108. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-rs/src/process_info.rs +86 -0
  109. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-rs/src/server/base.rs +99 -0
  110. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-rs/src/server/local_redirector.rs +353 -0
  111. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-rs/src/server/mod.rs +10 -0
  112. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-rs/src/server/tun.rs +84 -0
  113. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-rs/src/server/udp.rs +70 -0
  114. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-rs/src/server/wireguard.rs +87 -0
  115. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-rs/src/stream.rs +209 -0
  116. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-rs/src/syntax_highlight.rs +45 -0
  117. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-rs/src/task.rs +147 -0
  118. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-rs/src/udp_client.rs +206 -0
  119. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-rs/src/util.rs +99 -0
  120. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-rs/stubtest-allowlist.txt +7 -0
  121. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-windows/README.md +13 -0
  122. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-windows/mitmproxy_windows/LICENSE +1191 -0
  123. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-windows/mitmproxy_windows/WINDIVERT_VERSION +1 -0
  124. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-windows/mitmproxy_windows/WinDivert.dll +0 -0
  125. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-windows/mitmproxy_windows/WinDivert.lib +0 -0
  126. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-windows/mitmproxy_windows/WinDivert64.sys +0 -0
  127. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-windows/mitmproxy_windows/__init__.py +34 -0
  128. exp_mitmproxy_rs-0.12.11.post1/mitmproxy-windows/pyproject.toml +23 -0
  129. exp_mitmproxy_rs-0.12.11.post1/mitmproxy_rs/__init__.py +13 -0
  130. exp_mitmproxy_rs-0.12.11.post1/mitmproxy_rs/__init__.pyi +69 -0
  131. exp_mitmproxy_rs-0.12.11.post1/mitmproxy_rs/_pyinstaller/__init__.py +7 -0
  132. exp_mitmproxy_rs-0.12.11.post1/mitmproxy_rs/_pyinstaller/hook-mitmproxy_linux.py +6 -0
  133. exp_mitmproxy_rs-0.12.11.post1/mitmproxy_rs/_pyinstaller/hook-mitmproxy_macos.py +3 -0
  134. exp_mitmproxy_rs-0.12.11.post1/mitmproxy_rs/_pyinstaller/hook-mitmproxy_rs.py +14 -0
  135. exp_mitmproxy_rs-0.12.11.post1/mitmproxy_rs/_pyinstaller/hook-mitmproxy_windows.py +3 -0
  136. exp_mitmproxy_rs-0.12.11.post1/mitmproxy_rs/certs.pyi +9 -0
  137. exp_mitmproxy_rs-0.12.11.post1/mitmproxy_rs/contentviews.pyi +37 -0
  138. exp_mitmproxy_rs-0.12.11.post1/mitmproxy_rs/dns.pyi +18 -0
  139. exp_mitmproxy_rs-0.12.11.post1/mitmproxy_rs/local.pyi +31 -0
  140. exp_mitmproxy_rs-0.12.11.post1/mitmproxy_rs/process_info.pyi +22 -0
  141. exp_mitmproxy_rs-0.12.11.post1/mitmproxy_rs/py.typed +0 -0
  142. exp_mitmproxy_rs-0.12.11.post1/mitmproxy_rs/syntax_highlight.pyi +19 -0
  143. exp_mitmproxy_rs-0.12.11.post1/mitmproxy_rs/tun.pyi +24 -0
  144. exp_mitmproxy_rs-0.12.11.post1/mitmproxy_rs/udp.pyi +30 -0
  145. exp_mitmproxy_rs-0.12.11.post1/mitmproxy_rs/wireguard.pyi +29 -0
  146. exp_mitmproxy_rs-0.12.11.post1/pyproject.toml +42 -0
  147. exp_mitmproxy_rs-0.12.11.post1/src/bin/process-list.rs +56 -0
  148. exp_mitmproxy_rs-0.12.11.post1/src/certificates/macos.rs +49 -0
  149. exp_mitmproxy_rs-0.12.11.post1/src/certificates/mod.rs +4 -0
  150. exp_mitmproxy_rs-0.12.11.post1/src/dns.rs +235 -0
  151. exp_mitmproxy_rs-0.12.11.post1/src/intercept_conf.rs +199 -0
  152. exp_mitmproxy_rs-0.12.11.post1/src/ipc/mitmproxy_ipc.proto +62 -0
  153. exp_mitmproxy_rs-0.12.11.post1/src/ipc/mitmproxy_ipc.rs +100 -0
  154. exp_mitmproxy_rs-0.12.11.post1/src/ipc/mod.rs +68 -0
  155. exp_mitmproxy_rs-0.12.11.post1/src/lib.rs +13 -0
  156. exp_mitmproxy_rs-0.12.11.post1/src/messages.rs +235 -0
  157. exp_mitmproxy_rs-0.12.11.post1/src/network/core.rs +124 -0
  158. exp_mitmproxy_rs-0.12.11.post1/src/network/icmp.rs +111 -0
  159. exp_mitmproxy_rs-0.12.11.post1/src/network/mod.rs +14 -0
  160. exp_mitmproxy_rs-0.12.11.post1/src/network/task.rs +147 -0
  161. exp_mitmproxy_rs-0.12.11.post1/src/network/tcp.rs +359 -0
  162. exp_mitmproxy_rs-0.12.11.post1/src/network/tests.rs +859 -0
  163. exp_mitmproxy_rs-0.12.11.post1/src/network/udp.rs +363 -0
  164. exp_mitmproxy_rs-0.12.11.post1/src/network/virtual_device.rs +108 -0
  165. exp_mitmproxy_rs-0.12.11.post1/src/packet_sources/linux.rs +217 -0
  166. exp_mitmproxy_rs-0.12.11.post1/src/packet_sources/macos.rs +724 -0
  167. exp_mitmproxy_rs-0.12.11.post1/src/packet_sources/mod.rs +132 -0
  168. exp_mitmproxy_rs-0.12.11.post1/src/packet_sources/tun.rs +213 -0
  169. exp_mitmproxy_rs-0.12.11.post1/src/packet_sources/udp.rs +161 -0
  170. exp_mitmproxy_rs-0.12.11.post1/src/packet_sources/windows.rs +133 -0
  171. exp_mitmproxy_rs-0.12.11.post1/src/packet_sources/wireguard.rs +388 -0
  172. exp_mitmproxy_rs-0.12.11.post1/src/processes/macos_icons.rs +110 -0
  173. exp_mitmproxy_rs-0.12.11.post1/src/processes/mod.rs +58 -0
  174. exp_mitmproxy_rs-0.12.11.post1/src/processes/nix_list.rs +163 -0
  175. exp_mitmproxy_rs-0.12.11.post1/src/processes/windows_icons.rs +198 -0
  176. exp_mitmproxy_rs-0.12.11.post1/src/processes/windows_list.rs +336 -0
  177. exp_mitmproxy_rs-0.12.11.post1/src/shutdown.rs +74 -0
  178. exp_mitmproxy_rs-0.12.11.post1/src/windows/mod.rs +1 -0
  179. exp_mitmproxy_rs-0.12.11.post1/src/windows/network.rs +206 -0
@@ -0,0 +1,14 @@
1
+ [env]
2
+ WINDIVERT_PATH = { value = "mitmproxy-windows/mitmproxy_windows/", relative = true }
3
+
4
+ [target.x86_64-apple-darwin]
5
+ rustflags = [
6
+ "-C", "link-arg=-undefined",
7
+ "-C", "link-arg=dynamic_lookup",
8
+ ]
9
+
10
+ [target.aarch64-apple-darwin]
11
+ rustflags = [
12
+ "-C", "link-arg=-undefined",
13
+ "-C", "link-arg=dynamic_lookup",
14
+ ]
@@ -0,0 +1 @@
1
+ github: [decathorpe, mhils]
@@ -0,0 +1,30 @@
1
+ # Publishing the Capture native package
2
+
3
+ This fork publishes `exp-mitmproxy-rs`. Its Python import remains `mitmproxy_rs`.
4
+ The original `mitmproxy_macos==0.12.11` package supplies the signed macOS app and
5
+ Network Extension. The release builds neither of those signed components.
6
+
7
+ Configure a pending trusted publisher at <https://pypi.org/manage/account/publishing/>:
8
+
9
+ - Project: `exp-mitmproxy-rs`
10
+ - Owner: `experientiallabs`
11
+ - Repository: `mitmproxy_rs`
12
+ - Workflow: `ci.yml`
13
+ - Environment: `pypi`
14
+
15
+ The GitHub repository needs an environment named `pypi`. No long-lived API token
16
+ is needed. The workflow publishes only `exp-v*` tags whose version matches
17
+ `mitmproxy-rs/pyproject.toml`, after every test and wheel build passes. Pull requests
18
+ and branch pushes cannot publish. PyPI receives the artifacts from that same run,
19
+ with publishing attestations.
20
+
21
+ For version `0.12.11.post1`, tag the intended tested commit and push that tag:
22
+
23
+ ```sh
24
+ git tag exp-v0.12.11.post1 <commit>
25
+ git push experiential exp-v0.12.11.post1
26
+ ```
27
+
28
+ Verify all four platform wheels and the source archive appear on PyPI before
29
+ publishing the dependent `exp-mitmproxy` package. Never replace a published version;
30
+ use a new post-release version for changes.
@@ -0,0 +1,31 @@
1
+ name: 'setup'
2
+ description: 'checkout, setup rust and python'
3
+ inputs:
4
+ rust-version:
5
+ description: 'Rust version'
6
+ required: true
7
+ default: 'stable'
8
+ extra-targets:
9
+ description: 'Extra Rust targets'
10
+ toolchain-args:
11
+ description: 'Extra args for `rustup toolchain`'
12
+ runs:
13
+ using: "composite"
14
+ steps:
15
+ - uses: mhils/workflows/setup-python@3c9fc8f5b40cb8f3f1b81163f3f195cad843b09a # v18.0 # PyO3 wants recent Python on Windows.
16
+ - run: rustup toolchain install ${{ inputs.rust-version }} --profile minimal ${{ inputs.toolchain-args }}
17
+ shell: bash
18
+ - if: runner.os == 'Linux'
19
+ run: rustup toolchain install nightly --component rust-src
20
+ shell: bash
21
+ - run: rustup default ${{ inputs.rust-version }}
22
+ shell: bash
23
+ - if: inputs.extra-targets
24
+ run: rustup target add ${{ inputs.extra-targets }}
25
+ shell: bash
26
+ - uses: mhils/workflows/rust-cache@5b6540d578f48644ffa5e955cedadc81034cb7d8 # v19.0
27
+ with:
28
+ key: ${{ inputs.rust-version }} # proxy value for glibc version
29
+ - if: runner.os == 'Linux'
30
+ run: cargo install --locked bpf-linker@0.9.15
31
+ shell: bash
@@ -0,0 +1,27 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: github-actions
4
+ directory: "/"
5
+ cooldown:
6
+ default-days: 42
7
+ schedule:
8
+ interval: "monthly"
9
+ groups:
10
+ dependencies:
11
+ patterns:
12
+ - "*"
13
+ - package-ecosystem: cargo
14
+ directory: "/"
15
+ cooldown:
16
+ default-days: 42
17
+ schedule:
18
+ interval: "monthly"
19
+ groups:
20
+ # If a dependency matches more than one rule, it's included in the first group that it matches.
21
+ # Any outdated dependencies that do not match a rule are updated in individual pull requests.
22
+ windows:
23
+ patterns:
24
+ - "windows"
25
+ dependencies:
26
+ patterns:
27
+ - "*"
@@ -0,0 +1,58 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -eou pipefail
4
+
5
+ if [ -n "${APPLE_ID-}" ]; then
6
+ echo "Signing keys available, building signed binary..."
7
+
8
+ APPLE_TEAM_ID=S8XHQB96PW
9
+
10
+ # Install provisioning profiles
11
+ mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
12
+ echo -n "$APPLE_PROVISIONING_PROFILE_APP" | base64 --decode -o ~/Library/MobileDevice/Provisioning\ Profiles/app.provisionprofile
13
+ echo -n "$APPLE_PROVISIONING_PROFILE_EXT" | base64 --decode -o ~/Library/MobileDevice/Provisioning\ Profiles/ext.provisionprofile
14
+
15
+ # Create temporary keychain
16
+ KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain
17
+ security create-keychain -p "app-signing" $KEYCHAIN_PATH
18
+ security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
19
+ security unlock-keychain -p "app-signing" $KEYCHAIN_PATH
20
+ # Import certificate to keychain
21
+ security import <(echo -n "$APPLE_CERTIFICATE") -A -k $KEYCHAIN_PATH
22
+ security list-keychain -s $KEYCHAIN_PATH
23
+
24
+ mkdir build
25
+ xcodebuild \
26
+ -scheme macos-redirector \
27
+ -archivePath build/macos-redirector.xcarchive \
28
+ OTHER_CODE_SIGN_FLAGS="--keychain $KEYCHAIN_PATH" \
29
+ archive
30
+ xcodebuild \
31
+ -exportArchive \
32
+ -archivePath build/macos-redirector.xcarchive \
33
+ -exportOptionsPlist ./ExportOptions.plist \
34
+ -exportPath ./build
35
+
36
+ # Notarize
37
+ # https://developer.apple.com/documentation/security/notarizing_macos_software_before_distribution/customizing_the_notarization_workflow
38
+ xcrun notarytool store-credentials "AC_PASSWORD" \
39
+ --keychain "$KEYCHAIN_PATH" \
40
+ --apple-id "$APPLE_ID" \
41
+ --team-id "$APPLE_TEAM_ID" \
42
+ --password "$APPLE_APP_PASSWORD"
43
+ ditto -c -k --keepParent "./build/Mitmproxy Redirector.app" "./build/Mitmproxy Redirector.zip"
44
+ xcrun notarytool submit \
45
+ "./build/Mitmproxy Redirector.zip" \
46
+ --keychain "$KEYCHAIN_PATH" \
47
+ --keychain-profile "AC_PASSWORD" \
48
+ --wait
49
+ xcrun stapler staple "./build/Mitmproxy Redirector.app"
50
+
51
+ mkdir -p dist
52
+ tar --create --file "./dist/Mitmproxy Redirector.app.tar" --cd "./build" "Mitmproxy Redirector.app"
53
+ else
54
+ echo "Signing keys not available, building unsigned binary..."
55
+ xcodebuild -scheme macos-redirector CODE_SIGNING_ALLOWED="NO" build
56
+ mkdir -p dist
57
+ touch "dist/Mitmproxy Redirector.app.tar"
58
+ fi
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env python3
2
+
3
+ import tomllib
4
+ from pathlib import Path
5
+
6
+ with open("Cargo.toml", "rb") as f:
7
+ version = tomllib.load(f)["workspace"]["package"]["version"]
8
+
9
+ pyproject_toml = Path("mitmproxy-rs/pyproject.toml")
10
+ contents = pyproject_toml.read_text()
11
+ contents = (
12
+ contents
13
+ .replace(f"mitmproxy_windows", f"mitmproxy_windows=={version}")
14
+ .replace(f"mitmproxy_linux", f"mitmproxy_linux=={version}")
15
+ .replace(f"mitmproxy_macos", f"mitmproxy_macos=={version}")
16
+ )
17
+ pyproject_toml.write_text(contents)
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env -S python3 -u
2
+ import logging
3
+
4
+ from releasetool import branch
5
+ from releasetool import get_next_dev_version
6
+ from releasetool import git_commit
7
+ from releasetool import git_push
8
+ from releasetool import git_tag
9
+ from releasetool import status_check
10
+ from releasetool import update_changelog
11
+ from releasetool import update_rust_version
12
+
13
+ logger = logging.getLogger(__name__)
14
+
15
+ if __name__ == "__main__":
16
+ status_check()
17
+ update_changelog()
18
+ update_rust_version()
19
+ git_commit()
20
+ git_tag()
21
+
22
+ if branch == "main":
23
+ update_rust_version(version=get_next_dev_version())
24
+ git_commit(message="reopen main for development")
25
+
26
+ git_push()
27
+ logger.info("✅ All done. 🥳")
@@ -0,0 +1,56 @@
1
+ name: Formatting
2
+
3
+ on:
4
+ pull_request:
5
+
6
+ permissions:
7
+ contents: read
8
+
9
+ concurrency:
10
+ group: ${{ github.workflow }}-${{ github.ref }}
11
+ cancel-in-progress: true
12
+
13
+ env:
14
+ MSRV: "1.95" # Minimum Supported Rust Version
15
+
16
+ jobs:
17
+ protobuf:
18
+ runs-on: macos-latest
19
+ steps:
20
+ - uses: mhils/workflows/checkout@5b6540d578f48644ffa5e955cedadc81034cb7d8 # v18.0
21
+ # FIXME: https://github.com/mitmproxy/mitmproxy/issues/7877 - bump SwiftProtobuf and then re-add this here.
22
+ # - run: brew install swift-protobuf
23
+ - run: brew install protobuf
24
+ - run: cargo install --locked protoc-gen-prost@0.5.0
25
+ - run: protoc --proto_path=./src/ipc/ mitmproxy_ipc.proto
26
+ --prost_out=./src/ipc/
27
+ --prost_opt="bytes=data"
28
+ --prost_opt="flat_output_dir=true"
29
+ # --swift_out=./mitmproxy-macos/redirector/ipc
30
+ - run: cargo fmt --all
31
+ - run: git diff --exit-code
32
+
33
+ rustfmt:
34
+ runs-on: ${{ matrix.os }}
35
+ strategy:
36
+ matrix:
37
+ include:
38
+ - os: windows-latest
39
+ - os: macos-latest
40
+ - os: ubuntu-latest
41
+ steps:
42
+ - uses: mhils/workflows/checkout@5b6540d578f48644ffa5e955cedadc81034cb7d8 # v18.0
43
+ - uses: ./.github/actions/setup
44
+ with:
45
+ rust-version: ${{ env.MSRV }}
46
+ toolchain-args: --component rustfmt --component clippy
47
+
48
+ # We could run clippy on mitmproxy-linux-ebpf with
49
+ # cargo +nightly clippy --workspace -- -C panic=abort -Zpanic_abort_tests
50
+ # but that means we'd use nightly clippy, which may change its behavior (and thus break CI).
51
+ # So we rather exempt mitmproxy-linux-ebpf from clippy lints.
52
+ - run: cargo clippy --fix --allow-dirty --workspace --exclude mitmproxy-linux-ebpf
53
+ - run: cargo fmt --all
54
+ - run: git checkout src/ipc/mitmproxy_ipc.rs
55
+
56
+ - run: git diff --exit-code
@@ -0,0 +1,149 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ tags:
8
+ - 'exp-v*'
9
+ pull_request:
10
+
11
+ permissions:
12
+ contents: read
13
+
14
+ concurrency:
15
+ group: ${{ github.workflow }}-${{ github.ref }}
16
+ cancel-in-progress: true
17
+
18
+ jobs:
19
+ test:
20
+ runs-on: ${{ matrix.os }}
21
+ strategy:
22
+ matrix:
23
+ include:
24
+ - os: windows-latest
25
+ rust: "1.95" # MSRV - can't use variables here.
26
+ args: --exclude mitmproxy-linux-ebpf
27
+ - os: macos-latest
28
+ rust: "1.95" # MSRV - can't use variables here.
29
+ args: --exclude mitmproxy-linux-ebpf
30
+ - os: ubuntu-22.04
31
+ rust: "1.95" # MSRV - can't use variables here.
32
+ args: --exclude mitmproxy-linux-ebpf
33
+ - os: ubuntu-latest
34
+ rust: stable
35
+ args: --exclude mitmproxy-linux-ebpf
36
+ - os: ubuntu-latest # old Ubuntu to test eBPF verifier compatibility
37
+ rust: nightly
38
+ args: --package mitmproxy-linux-ebpf
39
+ env:
40
+ RUSTFLAGS: ${{ matrix.rust == 'nightly' && '-Zpanic_abort_tests -C panic=abort' || '' }}
41
+ steps:
42
+ - uses: mhils/workflows/checkout@5b6540d578f48644ffa5e955cedadc81034cb7d8 # v18.0
43
+ - uses: ./.github/actions/setup
44
+ with:
45
+ rust-version: ${{ matrix.rust }}
46
+
47
+ - name: Run "cargo check"
48
+ # the action-rs/cargo action adds inline annotations for "cargo check" output
49
+ uses: actions-rs/cargo@9e120dd99b0fbad1c065f686657e914e76bd7b72
50
+ with:
51
+ toolchain: ${{ matrix.rust }}
52
+ command: check
53
+ args: --workspace --verbose ${{ matrix.args }}
54
+ - if: matrix.rust != 'nightly' # XXX: weird errors here
55
+ name: Run "cargo test"
56
+ # the action-rs/cargo action adds inline annotations for "cargo test" output
57
+ uses: actions-rs/cargo@9e120dd99b0fbad1c065f686657e914e76bd7b72
58
+ with:
59
+ toolchain: ${{ matrix.rust }}
60
+ command: test
61
+ args: --workspace --verbose ${{ matrix.args }}
62
+ - if: matrix.os == 'ubuntu-22.04' # Test that eBPF loads
63
+ run: cargo test --features root-tests
64
+ working-directory: mitmproxy-linux
65
+ env:
66
+ CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUNNER: sudo -E
67
+
68
+ build:
69
+ strategy:
70
+ matrix:
71
+ include:
72
+ - name: windows-x86_64
73
+ os: windows-latest
74
+ - name: linux-x86_64
75
+ os: ubuntu-latest
76
+ args: --compatibility manylinux2014 --zig --sdist
77
+ - name: linux-arm64
78
+ os: ubuntu-24.04-arm
79
+ args: --compatibility manylinux2014 --zig
80
+ - name: macos-universal
81
+ os: macos-latest
82
+ target: aarch64-apple-darwin x86_64-apple-darwin
83
+ args: --target universal2-apple-darwin
84
+ runs-on: ${{ matrix.os }}
85
+ name: build mitmproxy-rs (${{ matrix.name }})
86
+ steps:
87
+ - uses: mhils/workflows/checkout@5b6540d578f48644ffa5e955cedadc81034cb7d8 # v18.0
88
+ - uses: ./.github/actions/setup
89
+ with:
90
+ extra-targets: ${{ matrix.target }}
91
+
92
+ - name: Verify release version
93
+ if: startsWith(github.ref, 'refs/tags/exp-v')
94
+ shell: bash
95
+ run: |
96
+ python - <<'PY'
97
+ import os
98
+ import tomllib
99
+ from pathlib import Path
100
+ project = tomllib.loads(Path('mitmproxy-rs/pyproject.toml').read_text())['project']
101
+ assert project['name'] == 'exp-mitmproxy-rs'
102
+ assert os.environ['GITHUB_REF_NAME'] == 'exp-v' + project['version']
103
+ PY
104
+
105
+ - if: runner.os == 'Linux'
106
+ name: Install maturin[zig] from PyPI
107
+ uses: install-pinned/maturin-with-zig@7f54e6144d8fd17188d0e99742fefc4bcb178e06
108
+ - if: runner.os != 'Linux'
109
+ name: Install maturin from PyPI
110
+ uses: install-pinned/maturin@3bfd83cd34bdcbcc8a10e459c2a9e41e6c33e706
111
+
112
+ - run: maturin build --release ${{ matrix.args }}
113
+ working-directory: ./mitmproxy-rs
114
+
115
+ # ensure that sdist is building.
116
+ # We do this here instead of a separate job because we don't want to wait for the entire matrix.
117
+ - if: contains(matrix.args, 'sdist')
118
+ run: pip install --no-dependencies target/wheels/*.tar.gz
119
+
120
+ - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
121
+ with:
122
+ name: wheels-${{ matrix.name }}
123
+ path: target/wheels
124
+
125
+ check:
126
+ if: always()
127
+ needs:
128
+ - test
129
+ - build
130
+ uses: mhils/workflows/.github/workflows/alls-green.yml@5b6540d578f48644ffa5e955cedadc81034cb7d8 # v18.0
131
+ with:
132
+ jobs: ${{ toJSON(needs) }}
133
+
134
+ publish:
135
+ if: github.repository == 'experientiallabs/mitmproxy_rs' && startsWith(github.ref, 'refs/tags/exp-v')
136
+ needs: check
137
+ runs-on: ubuntu-latest
138
+ environment: pypi
139
+ permissions:
140
+ contents: read
141
+ id-token: write
142
+ steps:
143
+ - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
144
+ with:
145
+ pattern: wheels-*
146
+ merge-multiple: true
147
+ path: dist
148
+ - name: Publish tested distributions to PyPI
149
+ uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # release/v1
@@ -0,0 +1,55 @@
1
+ name: docs
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ pull_request:
8
+
9
+ # security: restrict permissions for CI jobs.
10
+ permissions:
11
+ contents: read
12
+
13
+ concurrency:
14
+ group: ${{ github.workflow }}-${{ github.ref }}
15
+ cancel-in-progress: true
16
+
17
+ jobs:
18
+ # Build the documentation and upload the static HTML files as an artifact.
19
+ build:
20
+ runs-on: ubuntu-latest
21
+ steps:
22
+ # TODO: This should ideally just reuse the main CI artifacts.
23
+ - uses: mhils/workflows/checkout@5b6540d578f48644ffa5e955cedadc81034cb7d8 # v18.0
24
+ - uses: ./.github/actions/setup
25
+ - uses: install-pinned/maturin-with-zig@7f54e6144d8fd17188d0e99742fefc4bcb178e06
26
+ - uses: install-pinned/mypy@75779f141592e4909d64e13f8a1861f06aa9cd8d
27
+ - uses: install-pinned/pdoc@69ba59f9699df21e1026110af4ec6b10a98cf5cd
28
+
29
+ - run: maturin build --features docs,pyo3/extension-module
30
+ working-directory: ./mitmproxy-rs
31
+ - run: pip install --no-index --no-dependencies --find-links target/wheels/ exp-mitmproxy-rs
32
+
33
+ - run: stubtest --allowlist mitmproxy-rs/stubtest-allowlist.txt --mypy-config-file mitmproxy-rs/pyproject.toml mitmproxy_rs
34
+
35
+ - run: pdoc -o docs/ mitmproxy_rs
36
+
37
+ - uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5
38
+ with:
39
+ path: docs/
40
+
41
+ # Deploy the artifact to GitHub pages.
42
+ # This is a separate job so that only actions/deploy-pages has the necessary permissions.
43
+ deploy:
44
+ if: github.ref == 'refs/heads/main'
45
+ needs: build
46
+ runs-on: ubuntu-latest
47
+ permissions:
48
+ pages: write
49
+ id-token: write
50
+ environment:
51
+ name: github-pages
52
+ url: ${{ steps.deployment.outputs.page_url }}
53
+ steps:
54
+ - id: deployment
55
+ uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # v5
@@ -0,0 +1,10 @@
1
+ /.idea/
2
+ /dist/
3
+ /out/
4
+ /target/
5
+ /venv/
6
+ /docs/
7
+ __pycache__/
8
+ *.xcuserstate
9
+ editable.marker
10
+ *.DS_Store