diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..78b36ca --- /dev/null +++ b/.editorconfig @@ -0,0 +1 @@ +root = true diff --git a/.github/workflows/Master.yml b/.github/workflows/Master.yml new file mode 100644 index 0000000..cf71924 --- /dev/null +++ b/.github/workflows/Master.yml @@ -0,0 +1,35 @@ +name: Master + +on: + push: + branches: + - master + pull_request: + +jobs: + build-test: + name: Build and Test + runs-on: ${{ matrix.os }}-latest + + strategy: + matrix: + os: [windows, ubuntu, macos] + + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Setup .NET + uses: actions/setup-dotnet@v1 + with: + dotnet-version: '8.0.x' + + - name: Deps + run: dotnet restore Open.Nat.UnitTests/Open.Nat.Tests.csproj + + - name: Build + run: dotnet build Open.Nat.UnitTests/Open.Nat.Tests.csproj --configuration Release --no-restore + + - name: Test + # skip IPv6 tests: https://github.com/actions/runner-images/issues/668 + run: dotnet test Open.Nat.UnitTests/Open.Nat.Tests.csproj --no-restore --verbosity normal --filter TestCategory!=IPv6 diff --git a/.github/workflows/Release.yml b/.github/workflows/Release.yml new file mode 100644 index 0000000..0057664 --- /dev/null +++ b/.github/workflows/Release.yml @@ -0,0 +1,38 @@ +name: Master + +on: + push: + tags: + - '*' + +jobs: + release: + name: Release + runs-on: ${{ matrix.os }}-latest + + strategy: + matrix: + os: [windows] + + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Setup .NET + uses: actions/setup-dotnet@v1 + with: + dotnet-version: '8.0.x' + + - name: Deps + run: dotnet restore Open.Nat.UnitTests/Open.Nat.Tests.csproj + + - name: Test + # skip IPv6 tests: https://github.com/actions/runner-images/issues/668 + run: dotnet test Open.Nat.UnitTests/Open.Nat.Tests.csproj --no-restore --verbosity normal --filter TestCategory!=IPv6 + + - name: Pack + # skip signing until key added to GitHub secrets + run: dotnet pack /p:SignAssembly=false /p:Version=${{ github.ref_name }} Open.Nat/Open.Nat.csproj --no-restore + + - name: Publish + run: dotnet nuget push **.nupkg --source https://api.nuget.org/v3/index.json --api-key ${{ secrets.NUGET_API_KEY }} diff --git a/.nuget/NuGet.Config b/.nuget/NuGet.Config deleted file mode 100644 index 67f8ea0..0000000 --- a/.nuget/NuGet.Config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.nuget/NuGet.exe b/.nuget/NuGet.exe deleted file mode 100644 index c41a0d0..0000000 Binary files a/.nuget/NuGet.exe and /dev/null differ diff --git a/.nuget/NuGet.targets b/.nuget/NuGet.targets deleted file mode 100644 index 3f8c37b..0000000 --- a/.nuget/NuGet.targets +++ /dev/null @@ -1,144 +0,0 @@ - - - - $(MSBuildProjectDirectory)\..\ - - - false - - - false - - - true - - - false - - - - - - - - - - - $([System.IO.Path]::Combine($(SolutionDir), ".nuget")) - - - - - $(SolutionDir).nuget - - - - $(MSBuildProjectDirectory)\packages.$(MSBuildProjectName.Replace(' ', '_')).config - $(MSBuildProjectDirectory)\packages.$(MSBuildProjectName).config - - - - $(MSBuildProjectDirectory)\packages.config - $(PackagesProjectConfig) - - - - - $(NuGetToolsPath)\NuGet.exe - @(PackageSource) - - "$(NuGetExePath)" - mono --runtime=v4.0.30319 "$(NuGetExePath)" - - $(TargetDir.Trim('\\')) - - -RequireConsent - -NonInteractive - - "$(SolutionDir) " - "$(SolutionDir)" - - - $(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(NonInteractiveSwitch) $(RequireConsentSwitch) -solutionDir $(PaddedSolutionDir) - $(NuGetCommand) pack "$(ProjectPath)" -Properties "Configuration=$(Configuration);Platform=$(Platform)" $(NonInteractiveSwitch) -OutputDirectory "$(PackageOutputDir)" -symbols - - - - RestorePackages; - $(BuildDependsOn); - - - - - $(BuildDependsOn); - BuildPackage; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Open.Nat.UnitTests/InternetProtocolV6Tests.cs b/Open.Nat.UnitTests/InternetProtocolV6Tests.cs index 07184f9..d2595c8 100644 --- a/Open.Nat.UnitTests/InternetProtocolV6Tests.cs +++ b/Open.Nat.UnitTests/InternetProtocolV6Tests.cs @@ -7,6 +7,7 @@ namespace Open.Nat.Tests { [TestClass] + [TestCategory("IPv6")] public class InternetProtocolV6Tests { private UpnpMockServer _server; diff --git a/Open.Nat.UnitTests/Open.Nat.Tests.csproj b/Open.Nat.UnitTests/Open.Nat.Tests.csproj new file mode 100644 index 0000000..353c49e --- /dev/null +++ b/Open.Nat.UnitTests/Open.Nat.Tests.csproj @@ -0,0 +1,32 @@ + + + + net8.0 + enable + + false + true + true + Open.Nat.snk + + + + + + + + + + + + + + + + + + + + + + diff --git a/Open.Nat.UnitTests/Open.Nat.UnitTests.csproj b/Open.Nat.UnitTests/Open.Nat.UnitTests.Legacy.csproj similarity index 98% rename from Open.Nat.UnitTests/Open.Nat.UnitTests.csproj rename to Open.Nat.UnitTests/Open.Nat.UnitTests.Legacy.csproj index b07a383..012cfd0 100644 --- a/Open.Nat.UnitTests/Open.Nat.UnitTests.csproj +++ b/Open.Nat.UnitTests/Open.Nat.UnitTests.Legacy.csproj @@ -1,94 +1,94 @@ - - - - - true - - - Open.Nat.snk - - - bin\Debug\net35\ - TRACE;DEBUG;NET35 - {7A65D2F2-BFB5-4BE1-A54D-484A394DE745} - Library - Properties - Open.Nat.UnitTests - Open.Nat.UnitTests - v3.5 - 512 - - - bin\Debug\net45\ - TRACE;DEBUG;NET45 - {7A65D2F2-BFB5-4BE1-A54D-484A394DE745} - Library - Properties - Open.Nat.UnitTests - Open.Nat.UnitTests - v4.5 - 512 - - - bin\Release\net35\ - NET35 - {7A65D2F2-BFB5-4BE1-A54D-484A394DE745} - Library - Properties - Open.Nat.UnitTests - Open.Nat.UnitTests - v3.5 - 512 - - - bin\Release\net45\ - NET45 - {7A65D2F2-BFB5-4BE1-A54D-484A394DE745} - Library - Properties - Open.Nat.UnitTests - Open.Nat.UnitTests - v4.5 - 512 - - - - - - - - - - - - - - - ..\packages\TaskParallelLibrary.1.0.2856.0\lib\Net35\System.Threading.dll - True - - - - - - - - - - - - - - {F5D74163-145F-47BF-83DC-D0E07249C6CA} - Open.Nat - - - + + + + + true + + + Open.Nat.snk + + + bin\Debug\net35\ + TRACE;DEBUG;NET35 + {7A65D2F2-BFB5-4BE1-A54D-484A394DE745} + Library + Properties + Open.Nat.UnitTests + Open.Nat.UnitTests + v3.5 + 512 + + + bin\Debug\net45\ + TRACE;DEBUG;NET45 + {7A65D2F2-BFB5-4BE1-A54D-484A394DE745} + Library + Properties + Open.Nat.UnitTests + Open.Nat.UnitTests + v4.5 + 512 + + + bin\Release\net35\ + NET35 + {7A65D2F2-BFB5-4BE1-A54D-484A394DE745} + Library + Properties + Open.Nat.UnitTests + Open.Nat.UnitTests + v3.5 + 512 + + + bin\Release\net45\ + NET45 + {7A65D2F2-BFB5-4BE1-A54D-484A394DE745} + Library + Properties + Open.Nat.UnitTests + Open.Nat.UnitTests + v4.5 + 512 + + + + + + + + + + + + + + + ..\packages\TaskParallelLibrary.1.0.2856.0\lib\Net35\System.Threading.dll + True + + + + + + + + + + + + + + {F5D74163-145F-47BF-83DC-D0E07249C6CA} + Open.Nat + + + + --> \ No newline at end of file diff --git a/Open.Nat.sln b/Open.Nat.sln index 852b3bc..b8d48cc 100644 --- a/Open.Nat.sln +++ b/Open.Nat.sln @@ -1,21 +1,15 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.28010.2046 +# Visual Studio Version 17 +VisualStudioVersion = 17.10.34916.146 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Open.Nat", "Open.Nat\Open.Nat.csproj", "{F5D74163-145F-47BF-83DC-D0E07249C6CA}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Open.Nat", "Open.Nat\Open.Nat.csproj", "{F5D74163-145F-47BF-83DC-D0E07249C6CA}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Open.Nat.ConsoleTest", "Open.Nat.ConsoleTest\Open.Nat.ConsoleTest.csproj", "{E92CFA66-F518-4E66-B0BA-76A7808C939A}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{87CD0D6D-64C8-4C38-9A75-2036C09BB763}" - ProjectSection(SolutionItems) = preProject - .nuget\NuGet.Config = .nuget\NuGet.Config - .nuget\NuGet.exe = .nuget\NuGet.exe - .nuget\NuGet.targets = .nuget\NuGet.targets - EndProjectSection -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Documents", "Documents", "{94F0AE28-727F-497A-AC20-EB5B0C5EBA9A}" ProjectSection(SolutionItems) = preProject + .editorconfig = .editorconfig .gitignore = .gitignore AUTHORS = AUTHORS CHANGELOG.md = CHANGELOG.md @@ -24,40 +18,74 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Documents", "Documents", "{ README.md = README.md EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Open.Nat.UnitTests", "Open.Nat.UnitTests\Open.Nat.UnitTests.csproj", "{7A65D2F2-BFB5-4BE1-A54D-484A394DE745}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Open.Nat.UnitTests.Legacy", "Open.Nat.UnitTests\Open.Nat.UnitTests.Legacy.csproj", "{7A65D2F2-BFB5-4BE1-A54D-484A394DE745}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CI", "CI", "{5FE9E645-92FE-4E0F-AC6D-F57F964642FE}" + ProjectSection(SolutionItems) = preProject + .github\workflows\Master.yml = .github\workflows\Master.yml + .github\workflows\Release.yml = .github\workflows\Release.yml + EndProjectSection +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Open.Nat.Tests", "Open.Nat.UnitTests\Open.Nat.Tests.csproj", "{4383D7A1-4B5C-4892-9285-24D7E715CEE8}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug 3.5|Any CPU = Debug 3.5|Any CPU Debug 4.5|Any CPU = Debug 4.5|Any CPU + Debug|Any CPU = Debug|Any CPU Release 3.5|Any CPU = Release 3.5|Any CPU Release 4.5|Any CPU = Release 4.5|Any CPU + Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Debug 3.5|Any CPU.ActiveCfg = Debug|Any CPU {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Debug 3.5|Any CPU.Build.0 = Debug|Any CPU {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Debug 4.5|Any CPU.ActiveCfg = Debug|Any CPU {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Debug 4.5|Any CPU.Build.0 = Debug|Any CPU + {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Debug|Any CPU.Build.0 = Debug|Any CPU {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Release 3.5|Any CPU.ActiveCfg = Release|Any CPU {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Release 3.5|Any CPU.Build.0 = Release|Any CPU {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Release 4.5|Any CPU.ActiveCfg = Release|Any CPU {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Release 4.5|Any CPU.Build.0 = Release|Any CPU + {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Release|Any CPU.Build.0 = Release|Any CPU {E92CFA66-F518-4E66-B0BA-76A7808C939A}.Debug 3.5|Any CPU.ActiveCfg = Debug 3.5|Any CPU {E92CFA66-F518-4E66-B0BA-76A7808C939A}.Debug 3.5|Any CPU.Build.0 = Debug 3.5|Any CPU {E92CFA66-F518-4E66-B0BA-76A7808C939A}.Debug 4.5|Any CPU.ActiveCfg = Debug 4.5|Any CPU {E92CFA66-F518-4E66-B0BA-76A7808C939A}.Debug 4.5|Any CPU.Build.0 = Debug 4.5|Any CPU + {E92CFA66-F518-4E66-B0BA-76A7808C939A}.Debug|Any CPU.ActiveCfg = Debug 4.5|Any CPU + {E92CFA66-F518-4E66-B0BA-76A7808C939A}.Debug|Any CPU.Build.0 = Debug 4.5|Any CPU {E92CFA66-F518-4E66-B0BA-76A7808C939A}.Release 3.5|Any CPU.ActiveCfg = Release 3.5|Any CPU {E92CFA66-F518-4E66-B0BA-76A7808C939A}.Release 3.5|Any CPU.Build.0 = Release 3.5|Any CPU {E92CFA66-F518-4E66-B0BA-76A7808C939A}.Release 4.5|Any CPU.ActiveCfg = Release 4.5|Any CPU {E92CFA66-F518-4E66-B0BA-76A7808C939A}.Release 4.5|Any CPU.Build.0 = Release 4.5|Any CPU + {E92CFA66-F518-4E66-B0BA-76A7808C939A}.Release|Any CPU.ActiveCfg = Release 4.5|Any CPU + {E92CFA66-F518-4E66-B0BA-76A7808C939A}.Release|Any CPU.Build.0 = Release 4.5|Any CPU {7A65D2F2-BFB5-4BE1-A54D-484A394DE745}.Debug 3.5|Any CPU.ActiveCfg = Debug 3.5|Any CPU {7A65D2F2-BFB5-4BE1-A54D-484A394DE745}.Debug 3.5|Any CPU.Build.0 = Debug 3.5|Any CPU {7A65D2F2-BFB5-4BE1-A54D-484A394DE745}.Debug 4.5|Any CPU.ActiveCfg = Debug 4.5|Any CPU {7A65D2F2-BFB5-4BE1-A54D-484A394DE745}.Debug 4.5|Any CPU.Build.0 = Debug 4.5|Any CPU + {7A65D2F2-BFB5-4BE1-A54D-484A394DE745}.Debug|Any CPU.ActiveCfg = Debug 4.5|Any CPU + {7A65D2F2-BFB5-4BE1-A54D-484A394DE745}.Debug|Any CPU.Build.0 = Debug 4.5|Any CPU {7A65D2F2-BFB5-4BE1-A54D-484A394DE745}.Release 3.5|Any CPU.ActiveCfg = Release 3.5|Any CPU {7A65D2F2-BFB5-4BE1-A54D-484A394DE745}.Release 3.5|Any CPU.Build.0 = Release 3.5|Any CPU {7A65D2F2-BFB5-4BE1-A54D-484A394DE745}.Release 4.5|Any CPU.ActiveCfg = Release 4.5|Any CPU {7A65D2F2-BFB5-4BE1-A54D-484A394DE745}.Release 4.5|Any CPU.Build.0 = Release 4.5|Any CPU + {7A65D2F2-BFB5-4BE1-A54D-484A394DE745}.Release|Any CPU.ActiveCfg = Release 4.5|Any CPU + {7A65D2F2-BFB5-4BE1-A54D-484A394DE745}.Release|Any CPU.Build.0 = Release 4.5|Any CPU + {4383D7A1-4B5C-4892-9285-24D7E715CEE8}.Debug 3.5|Any CPU.ActiveCfg = Debug|Any CPU + {4383D7A1-4B5C-4892-9285-24D7E715CEE8}.Debug 3.5|Any CPU.Build.0 = Debug|Any CPU + {4383D7A1-4B5C-4892-9285-24D7E715CEE8}.Debug 4.5|Any CPU.ActiveCfg = Debug|Any CPU + {4383D7A1-4B5C-4892-9285-24D7E715CEE8}.Debug 4.5|Any CPU.Build.0 = Debug|Any CPU + {4383D7A1-4B5C-4892-9285-24D7E715CEE8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4383D7A1-4B5C-4892-9285-24D7E715CEE8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4383D7A1-4B5C-4892-9285-24D7E715CEE8}.Release 3.5|Any CPU.ActiveCfg = Release|Any CPU + {4383D7A1-4B5C-4892-9285-24D7E715CEE8}.Release 3.5|Any CPU.Build.0 = Release|Any CPU + {4383D7A1-4B5C-4892-9285-24D7E715CEE8}.Release 4.5|Any CPU.ActiveCfg = Release|Any CPU + {4383D7A1-4B5C-4892-9285-24D7E715CEE8}.Release 4.5|Any CPU.Build.0 = Release|Any CPU + {4383D7A1-4B5C-4892-9285-24D7E715CEE8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4383D7A1-4B5C-4892-9285-24D7E715CEE8}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Open.Nat/Open.Nat.csproj b/Open.Nat/Open.Nat.csproj index 136f657..0ef9ee8 100644 --- a/Open.Nat/Open.Nat.csproj +++ b/Open.Nat/Open.Nat.csproj @@ -1,42 +1,51 @@  - netstandard2.0;net35;net45;net472 - AnyCPU;x64;x86 + netstandard2.0;net35 + 12.0 + Library + + + Open.Nat Alan McGovern, Ben Motmans, Lucas Ontivero Open.Nat - Networking + MIT + Networking;NAT TRAVERSAL;UPNP;PMP;PORT FORWARD;PORT FORWARDING;PORT MAPPING - .NET Library for automatic network address translation + README.md + .NET Library for port forwarding/port mapping en Copyright Alan McGovern, Ben Motmans, Lucas Ontivero © 2006-2014 - 2.1.0.0 - 1.0.1.0 - Library - - Open.Nat.UnitTests,PublicKey=00240000048000009400000006020000002400005253413100040000010001004de491ec95076f7054ac0562395232c4c351bce7037c7e266a5cc5dc6c60738fe649e06513ca1d58edec8e6a60e969887403a09ae158a007a592f650fe98912e7029e112e61494a47eff16138b62390241e1d8d45076ac3af77b47fa67d40ba1928a37ebe073415785a23ae87b6119f63f78f04cb3b8ea280dfbf3d6df437fbf + 0 + true + true + embedded true Open.Nat.snk https://github.com/lontivero/Open.NAT - Github + git + + + - - - - + + + + + \ No newline at end of file