Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Upgrade all deps update to dotnet8 #16

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/publish-executable-on-release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ jobs:
result-encoding: string
script: return context.payload.release.tag_name.substring(1) # remove `v`
- uses: actions/checkout@v3
- name: Setup .Net 6.0
- name: Setup .Net 8.0
uses: actions/setup-dotnet@v3
with:
dotnet-version: '6.0'
dotnet-version: '8.0'
- name: Install dependencies
run: dotnet restore
- name: Build WinSocat
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/unit-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@ jobs:
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- name: Setup .Net 6.0
- name: Setup .Net 8.0
uses: actions/setup-dotnet@v3
with:
dotnet-version: '6.0'
dotnet-version: '8.0'
- name: Install dependencies
run: dotnet restore
- name: Build
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@
/winsocat/bin/
/Tests/obj
/Tests/bin
/.vs

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can also add .idea folder here to prevent future additions as well.

Suggested change
/.vs
/.vs/
/.idea/

*.user
13 changes: 0 additions & 13 deletions .idea/.idea.WinSocat/.idea/.gitignore

This file was deleted.

1 change: 0 additions & 1 deletion .idea/.idea.WinSocat/.idea/.name

This file was deleted.

4 changes: 0 additions & 4 deletions .idea/.idea.WinSocat/.idea/encodings.xml

This file was deleted.

8 changes: 0 additions & 8 deletions .idea/.idea.WinSocat/.idea/indexLayout.xml

This file was deleted.

6 changes: 0 additions & 6 deletions .idea/.idea.WinSocat/.idea/vcs.xml

This file was deleted.

2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ The `address1` can accept `STDIO`, `TCP-LISTEN`, `TCP`, `NPIPE`, `NPIPE-LISTEN`,

The `address2` can accept `STDIO`, `TCP`, `NPIPE`, `EXEC`, `WSL`, `UNIX`, `HVSOCK`, `SP` socket types.

`NPIPE-LISTEN` supports the `ACL=AllowCurrentUser` parameter, in this case, no other user that is connected to the machine can read / write from / to the pipe. The default is `ACL=AllowEveryone`.

## Examples

* It can bridge standard input/output and tcp connection to address **127.0.0.1** on port **80**.
Expand Down
4 changes: 2 additions & 2 deletions Tests/AddressElementTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,15 @@ public class AddressElementTest
[TestCase("tag:\'foo \"bar\"\',opt1,opt2")]
public void ValidInputParseTest(string input)
{
Assert.NotNull(AddressElement.TryParse(input));
Assert.That(AddressElement.TryParse(input), Is.Not.Null);
}

[TestCase("tag:\'foo\"")]
[TestCase("tag:\"foo bar\'")]
[TestCase("tag:\'foo \"bar\',opt1, opt2")]
public void InvalidInputParseTest(string input)
{
Assert.Null(AddressElement.TryParse(input));
Assert.That(AddressElement.TryParse(input), Is.Null);
}

[TestCase("STDIO", ExpectedResult = "STDIO")]
Expand Down
6 changes: 3 additions & 3 deletions Tests/HyperVListenPiperInfoTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public class HyperVListenPiperInfoTest
public void ValidInputParseTest(string input)
{
var element = AddressElement.TryParse(input);
Assert.NotNull(HyperVListenPiperInfo.TryParse(element));
Assert.That(HyperVListenPiperInfo.TryParse(element), Is.Not.Null);
}

[TestCase("HVSOCK-LISTEN:00000000-0000-0000-0000-000000000000:00000000-0000-0000-0000-000000000000")]
Expand All @@ -39,7 +39,7 @@ public void ValidInputParseTest(string input)
public void CaseInsensitiveValidInputParseTest(string input)
{
var element = AddressElement.TryParse(input);
Assert.NotNull(HyperVListenPiperInfo.TryParse(element));
Assert.That(HyperVListenPiperInfo.TryParse(element), Is.Not.Null);
}

[TestCase("STDIO")]
Expand All @@ -53,7 +53,7 @@ public void CaseInsensitiveValidInputParseTest(string input)
public void InvalidInputParseTest(string input)
{
var element = AddressElement.TryParse(input);
Assert.Null(HyperVListenPiperInfo.TryParse(element));
Assert.That(HyperVListenPiperInfo.TryParse(element), Is.Null);
}

[TestCase("HVSOCK-LISTEN:00000000-0000-0000-0000-000000000000:00000000-0000-0000-0000-000000000000", ExpectedResult = "00000000-0000-0000-0000-000000000000")]
Expand Down
7 changes: 4 additions & 3 deletions Tests/HyperVStreamPiperInfoTest.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Firejox.App.WinSocat;

namespace APPTest;

public class HyperVStreamPiperInfoTest
Expand All @@ -24,7 +25,7 @@ public class HyperVStreamPiperInfoTest
public void ValidInputParseTest(string input)
{
var element = AddressElement.TryParse(input);
Assert.NotNull(HyperVStreamPiperInfo.TryParse(element));
Assert.That(HyperVStreamPiperInfo.TryParse(element), Is.Not.Null);
}

[TestCase("HVSOCK:00000000-0000-0000-0000-000000000000:00000000-0000-0000-0000-000000000000")]
Expand All @@ -38,7 +39,7 @@ public void ValidInputParseTest(string input)
public void CaseInsensitiveValidInputParseTest(string input)
{
var element = AddressElement.TryParse(input);
Assert.NotNull(HyperVStreamPiperInfo.TryParse(element));
Assert.That(HyperVStreamPiperInfo.TryParse(element), Is.Not.Null);
}

[TestCase("STDIO")]
Expand All @@ -52,7 +53,7 @@ public void CaseInsensitiveValidInputParseTest(string input)
public void InvalidInputParseTest(string input)
{
var element = AddressElement.TryParse(input);
Assert.Null(HyperVStreamPiperInfo.TryParse(element));
Assert.That(HyperVStreamPiperInfo.TryParse(element), Is.Null);
}

[TestCase("HVSOCK:00000000-0000-0000-0000-000000000000:00000000-0000-0000-0000-000000000000", ExpectedResult = "00000000-0000-0000-0000-000000000000")]
Expand Down
44 changes: 33 additions & 11 deletions Tests/NamedPipeListenPiperInfoTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,35 +5,57 @@ namespace APPTest;
public class NamedPipeListenPiperInfoTest
{
[TestCase("NPIPE-LISTEN:fooPipe")]
[TestCase("NPIPE-LISTEN:fooPipe,ACL=AllowEveryone")]
[TestCase("NPIPE-LISTEN:fooPipe,ACL=AllowCurrentUser")]
public void VaildInputParseTest(string input)
{
var element = AddressElement.TryParse(input);
Assert.NotNull(Firejox.App.WinSocat.NamedPipeListenPiperInfo.TryParse(element));
Assert.That(NamedPipeListenPiperInfo.TryParse(element), Is.Not.Null);
}

[TestCase("NPIPE-LISTEN:fooPipe")]
[TestCase("npipe-listen:fooPipe")]
public void CaseInsensitiveValidInputParseTest(string input)
{
var element = AddressElement.TryParse(input);
Assert.NotNull(Firejox.App.WinSocat.NamedPipeListenPiperInfo.TryParse(element));
Assert.That(NamedPipeListenPiperInfo.TryParse(element), Is.Not.Null);
}

[TestCase("STDIO")]
[TestCase("TCP:127.0.0.1:80")]
[TestCase("TCP-LISTEN:127.0.0.1:80")]
[TestCase("NPIPE:fooServer:barPipe")]
[TestCase("NPIPE:fooServer:barPipe")]
[TestCase("NPIPE:fooServer:barPipe")]
[TestCase(@"EXEC:'C:\Foo.exe bar'")]
public void InvalidInputParseTest(string input)
{
var element = AddressElement.TryParse(input);
Assert.Null(Firejox.App.WinSocat.NamedPipeListenPiperInfo.TryParse(element));
}

[TestCase("NPIPE-LISTEN:fooPipe", ExpectedResult = "fooPipe")]
public string PipePatternMatchTest(string input)
Assert.That(NamedPipeListenPiperInfo.TryParse(element), Is.Null);
}

[TestCase("NPIPE-LISTEN:fooPipe")]
[TestCase("NPIPE-LISTEN:fooPipe,ACL=AllowEveryone")]
[TestCase("NPIPE-LISTEN:fooPipe,ACL=AllowCurrentUser")]
public void PipePatternMatchTest(string input)
{
var element = AddressElement.TryParse(input);
return Firejox.App.WinSocat.NamedPipeListenPiperInfo.TryParse(element).PipeName;
// Case 1 - Default ACL
var element = AddressElement.TryParse("NPIPE-LISTEN:fooPipe");
var parsed = NamedPipeListenPiperInfo.TryParse(element);
Assert.That(parsed.PipeName, Is.EqualTo("fooPipe"));
Assert.That(parsed.ACL, Is.EqualTo("AllowEveryone"));

// Case 2 - AllowEveryone ACL
element = AddressElement.TryParse("NPIPE-LISTEN:fooPipe,ACL=AllowEveryone");
parsed = NamedPipeListenPiperInfo.TryParse(element);
Assert.That(parsed.PipeName, Is.EqualTo("fooPipe"));
Assert.That(parsed.ACL, Is.EqualTo("AllowEveryone"));

// Case 3 - AllowCurrentUser ACL
element = AddressElement.TryParse("NPIPE-LISTEN:fooPipe,ACL=AllowCurrentUser");
parsed = NamedPipeListenPiperInfo.TryParse(element);
Assert.That(parsed.PipeName, Is.EqualTo("fooPipe"));
Assert.That(parsed.ACL, Is.EqualTo("AllowCurrentUser"));

}
}
}
6 changes: 4 additions & 2 deletions Tests/NamedPipeListenPiperStrategyTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -52,14 +52,16 @@ public void EchoPiperTest()

writer.WriteLine("Foo");
writer.Flush();
StringAssert.AreEqualIgnoringCase("Foo", reader.ReadLine());

Assert.That(reader.ReadLine(), Is.EqualTo("Foo").IgnoreCase);
}
}

[TearDown]
public void CleanUp()
{
_source.Cancel();
_source.Dispose();
}

}
14 changes: 7 additions & 7 deletions Tests/NamedPipeStreamPiperInfoTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,27 +9,27 @@ public class NamedPipeStreamPiperInfoTest
[TestCase("NPIPE:barPipe")]
public void ValidInputParseTest(string input)
{
var element = AddressElement.TryParse(input);
Assert.NotNull(Firejox.App.WinSocat.NamedPipeStreamPiperInfo.TryParse(element));
var element = AddressElement.TryParse(input);
Assert.That(NamedPipeStreamPiperInfo.TryParse(element), Is.Not.Null);
}

[TestCase("NPIPE:fooServer:barPipe")]
[TestCase("npipe:fooServer:barPipe")]
public void CaseInsensitiveValidInputParseTest(string input)
{
var element = AddressElement.TryParse(input);
Assert.NotNull(Firejox.App.WinSocat.NamedPipeStreamPiperInfo.TryParse(element));
var element = AddressElement.TryParse(input);
Assert.That(NamedPipeStreamPiperInfo.TryParse(element), Is.Not.Null);
}

[TestCase("STDIO")]
[TestCase("TCP:127.0.0.1:80")]
[TestCase("TCP-LISTEN:127.0.0.1:80")]
[TestCase("NPIPE-LISTEN:fooPipe")]
[TestCase("NPIPE-LISTEN:fooPipe")]
[TestCase(@"EXEC:'C:\Foo.exe bar'")]
public void InvalidInputParseTest(string input)
{
var element = AddressElement.TryParse(input);
Assert.Null(Firejox.App.WinSocat.NamedPipeStreamPiperInfo.TryParse(element));
var element = AddressElement.TryParse(input);
Assert.That(NamedPipeStreamPiperInfo.TryParse(element), Is.Null);
}

[TestCase("NPIPE:fooServer:barPipe", ExpectedResult = "fooServer")]
Expand Down
23 changes: 13 additions & 10 deletions Tests/PiperStrategyTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ public void EchoPiperTest()
_writeStream.Seek(0, SeekOrigin.Begin);
var reader = new StreamReader(_writeStream);

StringAssert.AreEqualIgnoringCase("Foo", reader.ReadToEnd());
Assert.That(reader.ReadToEnd(), Is.EqualTo("Foo").IgnoreCase);
}

[Test]
Expand Down Expand Up @@ -149,10 +149,10 @@ public void TcpStreamPiperTest()
serverThread.Join();

_writeStream.Seek(0, SeekOrigin.Begin);
var reader = new StreamReader(_writeStream);
StringAssert.AreEqualIgnoringCase("Foo", tcs.Task.Result);
StringAssert.AreEqualIgnoringCase("Bar", reader.ReadToEnd());
var reader = new StreamReader(_writeStream);
Assert.That(tcs.Task.Result, Is.EqualTo("Foo").IgnoreCase);
Assert.That(reader.ReadToEnd(), Is.EqualTo("Bar").IgnoreCase);
}

[Test]
Expand Down Expand Up @@ -188,8 +188,9 @@ public void NamedPipeStreamPiperTest()

_writeStream.Seek(0, SeekOrigin.Begin);
var reader = new StreamReader(_writeStream);
StringAssert.AreEqualIgnoringCase("Bar", reader.ReadToEnd());
StringAssert.AreEqualIgnoringCase("Foo", tcs.Task.Result);

Assert.That(reader.ReadToEnd(), Is.EqualTo("Bar").IgnoreCase);
Assert.That(tcs.Task.Result, Is.EqualTo("Foo").IgnoreCase);
}

[Test]
Expand Down Expand Up @@ -241,14 +242,16 @@ public void UnixSocketStreamPiperTest()
_strategy.Execute(factory);

_writeStream.Seek(0, SeekOrigin.Begin);
var reader = new StreamReader(_writeStream);
StringAssert.AreEqualIgnoringCase("Bar", reader.ReadToEnd());
StringAssert.AreEqualIgnoringCase("Foo", tcs.Task.Result);
var reader = new StreamReader(_writeStream);

Assert.That(reader.ReadToEnd(), Is.EqualTo("Bar").IgnoreCase);
Assert.That(tcs.Task.Result, Is.EqualTo("Foo").IgnoreCase);
}

[TearDown]
public void CleanUp()
{
_writeStream.Dispose();
_writer.Dispose();
}
}
10 changes: 5 additions & 5 deletions Tests/ProcPiperInfoTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,15 @@ public class ProcPiperInfoTest
public void ValidInputParseTest(string input)
{
var element = AddressElement.TryParse(input);
Assert.NotNull(Firejox.App.WinSocat.ProcPiperInfo.TryParse(element));
Assert.That(ProcPiperInfo.TryParse(element), Is.Not.Null);
}

[TestCase(@"EXEC:C:\Foo.exe bar")]
[TestCase(@"exec:C:\Foo.exe bar")]
public void CaseInsensitiveValidInputParseTest(string input)
{
var element = AddressElement.TryParse(input);
Assert.NotNull(Firejox.App.WinSocat.ProcPiperInfo.TryParse(element));
Assert.That(ProcPiperInfo.TryParse(element), Is.Not.Null);
}

[TestCase("STDIO")]
Expand All @@ -29,7 +29,7 @@ public void CaseInsensitiveValidInputParseTest(string input)
public void InvalidInputParseTest(string input)
{
var element = AddressElement.TryParse(input);
Assert.Null(Firejox.App.WinSocat.ProcPiperInfo.TryParse(element));
Assert.That(ProcPiperInfo.TryParse(element), Is.Null);
}

[TestCase(@"EXEC:C:\Foo.exe bar", ExpectedResult = @"C:\Foo.exe")]
Expand All @@ -38,14 +38,14 @@ public void InvalidInputParseTest(string input)
public string FileNamePatternMatchTest(string input)
{
var element = AddressElement.TryParse(input);
return Firejox.App.WinSocat.ProcPiperInfo.TryParse(element).FileName;
return ProcPiperInfo.TryParse(element).FileName;
}

[TestCase(@"EXEC:C:\Foo.exe bar1 bar2", ExpectedResult = "bar1 bar2")]
[TestCase(@"EXEC:""C:\foo\space dir\bar.exe"" arg1 arg2", ExpectedResult = @"arg1 arg2")]
public string ArgumentPatternMatchTest(string input)
{
var element = AddressElement.TryParse(input);
return Firejox.App.WinSocat.ProcPiperInfo.TryParse(element).Arguments;
return ProcPiperInfo.TryParse(element).Arguments;
}
}
Loading