Skip to content

Commit

Permalink
[sharelink] add extra-headers support
Browse files Browse the repository at this point in the history
  • Loading branch information
KevinZonda committed Jun 19, 2020
1 parent 23560d9 commit 42ec30e
Show file tree
Hide file tree
Showing 8 changed files with 39 additions and 25 deletions.
8 changes: 7 additions & 1 deletion NaiveSharp.Test/Sharelink.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,15 @@ public void LoadFromShareLink1()
Console.WriteLine("Username =>" + r.Value.Username);
Console.WriteLine("Password =>" + r.Value.Password);
Console.WriteLine("Padding =>" + r.Value.Padding);
Console.WriteLine("ExtraHeaders =>" + r.Value.ExtraHeaders);

Assert.AreEqual(r.Value.Name, "Naive!");
Assert.AreEqual(r.Value.Scheme, "https");
Assert.AreEqual(r.Value.Host, "test.someone.cf");
Assert.AreEqual(r.Value.Username, "what");
Assert.AreEqual(r.Value.Password, "happened");
Assert.AreEqual(r.Value.Padding, false);
Assert.AreEqual(r.Value.ExtraHeaders, null);
}

[TestMethod]
Expand All @@ -39,13 +41,15 @@ public void LoadFromShareLink2()
Console.WriteLine("Username =>" + r.Value.Username);
Console.WriteLine("Password =>" + r.Value.Password);
Console.WriteLine("Padding =>" + r.Value.Padding);
Console.WriteLine("ExtraHeaders =>" + r.Value.ExtraHeaders);

Assert.AreEqual(r.Value.Name, "Public-01");
Assert.AreEqual(r.Value.Scheme, "https");
Assert.AreEqual(r.Value.Host, "some.public.rs");
Assert.AreEqual(r.Value.Username, "");
Assert.AreEqual(r.Value.Password, "");
Assert.AreEqual(r.Value.Padding, true);
Assert.AreEqual(r.Value.ExtraHeaders, null);
}

[TestMethod]
Expand All @@ -59,13 +63,15 @@ public void LoadFromShareLink3()
Console.WriteLine("Username =>" + r.Value.Username);
Console.WriteLine("Password =>" + r.Value.Password);
Console.WriteLine("Padding =>" + r.Value.Padding);
Console.WriteLine("ExtraHeaders =>" + r.Value.ExtraHeaders);

Assert.AreEqual(r.Value.Name, "");
Assert.AreEqual(r.Value.Scheme, "quic");
Assert.AreEqual(r.Value.Host, "quic.test.me");
Assert.AreEqual(r.Value.Username, "manhole");
Assert.AreEqual(r.Value.Password, "114514");
Assert.AreEqual(r.Value.Padding, false);
Assert.AreEqual(r.Value.Padding, null);
Assert.AreEqual(r.Value.ExtraHeaders, null);
}
}
}
2 changes: 1 addition & 1 deletion NaiveSharp/Controller/Command.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public static void RunNaive(string proto)
NaiveCmdBuilder.Proxy(Config.Scheme, Config.Username, Config.Password,
Config.Host) +
" --listen=" + proto.ToLower() + "://127.0.0.1:1080";
if (Config.Padding)
if (Config.Padding ?? false)
{
p.StartInfo.Arguments += " --padding";
}
Expand Down
6 changes: 0 additions & 6 deletions NaiveSharp/Controller/Operation.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,6 @@ public static void Run()
switch (Config.RunMode.ToLower())
{
case "global":
if (!Config.Padding)
{
Command.RunNaive("http");
Proxy.Set(1080);
return;
}
Command.RunNaive("socks");
Command.RunPrivoxy();
break;
Expand Down
40 changes: 26 additions & 14 deletions NaiveSharp/Controller/Sharelink.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

using System;
using System.Data;
using System.Web;

namespace NaiveSharp.Controller
{
Expand Down Expand Up @@ -62,33 +63,43 @@ public class Sharelink
throw new DataException();
}
}
var tmp = uri.Query;
if (tmp.StartsWith("?padding="))

var query = HttpUtility.ParseQueryString(uri.Query);

config.Padding = null;
if (bool.TryParse(query["padding"], out bool n))
{
if (tmp.EndsWith("true"))
{
config.Padding = true;
}
else
{
config.Padding = false;
}
config.Padding = n;
}
if (!string.IsNullOrWhiteSpace(query["extra-headers"]))
{
config.ExtraHeaders = query["extra-headers"];
}
return config;
}

public static string Generate()
=> new UriBuilder()
{
var queryC = HttpUtility.ParseQueryString(string.Empty);
if (Config.Padding.HasValue)
{
queryC.Add("padding", Config.Padding.ToString());
}
if (!string.IsNullOrWhiteSpace(Config.ExtraHeaders))
{
queryC.Add("extra-headers", Config.ExtraHeaders);
}
return new UriBuilder()
{
Scheme = "naive+" + Config.Scheme,
Host = Config.Host,
UserName = Config.Username,
Password = Config.Password,
Query = "padding=" + Config.Padding.ToString().ToLower(),
Query = queryC.ToString(),
Fragment = Config.Name

}.ToString();

}
}

public struct NaiveConfig
Expand All @@ -103,7 +114,8 @@ public struct NaiveConfig

public string Scheme;

public bool Padding;
public bool? Padding;

public string ExtraHeaders;
}
}
4 changes: 3 additions & 1 deletion NaiveSharp/Model/Config.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@ public class Config

public static string Scheme { set; get; } = "https";

public static bool Padding { set; get; } = true;
public static bool? Padding { set; get; } = true;

public static string ExtraHeaders { set; get; } = null;

public static bool Debug { get; set; } = false;

Expand Down
2 changes: 1 addition & 1 deletion NaiveSharp/NaiveSharp.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@
<Compile Include="View\MainWindow.Designer.cs">
<DependentUpon>MainWindow.cs</DependentUpon>
</Compile>
<Compile Include="View\MainWindowsUtil.cs">
<Compile Include="View\MainWindowsEx.cs">
<SubType>Form</SubType>
</Compile>
<EmbeddedResource Include="Properties\Resources.resx">
Expand Down
2 changes: 1 addition & 1 deletion NaiveSharp/View/MainWindow.cs
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ private void smiLoadShareLink_Click(object sender, EventArgs e)
txtHost.Text = y.Value.Host;
txtUsername.Text = y.Value.Username;
txtPassword.Text = y.Value.Password;
chkPadding.Checked = y.Value.Padding;
chkPadding.Checked = y.Value.Padding ?? false;
}

private void MainWindow_FormClosing(object sender, FormClosingEventArgs e)
Expand Down
File renamed without changes.

0 comments on commit 42ec30e

Please sign in to comment.