aboutsummaryrefslogtreecommitdiff
path: root/tools/Crupest.V2ray/Crupest.V2ray/V2rayHttpProxy.cs
diff options
context:
space:
mode:
Diffstat (limited to 'tools/Crupest.V2ray/Crupest.V2ray/V2rayHttpProxy.cs')
-rw-r--r--tools/Crupest.V2ray/Crupest.V2ray/V2rayHttpProxy.cs41
1 files changed, 41 insertions, 0 deletions
diff --git a/tools/Crupest.V2ray/Crupest.V2ray/V2rayHttpProxy.cs b/tools/Crupest.V2ray/Crupest.V2ray/V2rayHttpProxy.cs
new file mode 100644
index 0000000..c641b4b
--- /dev/null
+++ b/tools/Crupest.V2ray/Crupest.V2ray/V2rayHttpProxy.cs
@@ -0,0 +1,41 @@
+namespace Crupest.V2ray;
+
+public class V2rayHttpProxy : IV2rayProxy
+{
+ public record HttpOutboundJsonObject(string Protocol, SettingsJsonObject Settings, string Tag)
+ {
+ public static HttpOutboundJsonObject Create(string address, int port, string tag)
+ {
+ return new HttpOutboundJsonObject("http", new SettingsJsonObject(
+ new List<ServerJsonObject> { new ServerJsonObject(address, port) }
+ ), tag);
+ }
+ }
+
+ public record ServerJsonObject(string Address, int Port);
+ public record SettingsJsonObject(List<ServerJsonObject> Servers);
+
+ public string Host { get; set; }
+ public int Port { get; set; }
+
+ public V2rayHttpProxy(string host, int port)
+ {
+ Host = host;
+ Port = port;
+ }
+
+ public HttpOutboundJsonObject ToOutboundJsonObject(string tag = "proxy")
+ {
+ return HttpOutboundJsonObject.Create(Host, Port, tag);
+ }
+
+ object IV2rayProxy.ToOutboundJsonObject()
+ {
+ return ToOutboundJsonObject();
+ }
+
+ public static V2rayHttpProxy FromDictionary(Dictionary<string, string> dict)
+ {
+ return new V2rayHttpProxy(dict["host"], int.Parse(dict["port"]));
+ }
+}