From 2ea0ba3de897044d106043ae688db8abf04703db Mon Sep 17 00:00:00 2001 From: Alexey Osipov Date: Thu, 7 Dec 2023 16:09:01 +0300 Subject: [PATCH] Temporary remove code to make it submodule later --- src/cs-multiaddress/.editorconfig | 17 -- src/cs-multiaddress/.gitattributes | 63 ---- src/cs-multiaddress/.gitignore | 243 --------------- src/cs-multiaddress/.travis.yml | 51 ---- src/cs-multiaddress/LICENSE | 21 -- src/cs-multiaddress/Multiformats.Address.sln | 71 ----- src/cs-multiaddress/NuGet.config | 8 - src/cs-multiaddress/README.md | 85 ------ src/cs-multiaddress/appveyor.yml | 113 ------- src/cs-multiaddress/build.sh | 17 -- .../src/Multiformats.Address/Extensions.cs | 18 -- .../src/Multiformats.Address/Multiaddress.cs | 278 ------------------ .../Multiformats.Address.csproj | 43 --- .../Net/MultiaddressExtensions.cs | 201 ------------- .../Net/MultiaddressTools.cs | 21 -- .../Multiformats.Address/Protocols/DCCP.cs | 16 - .../src/Multiformats.Address/Protocols/DNS.cs | 24 -- .../Multiformats.Address/Protocols/DNS4.cs | 24 -- .../Multiformats.Address/Protocols/DNS6.cs | 24 -- .../Multiformats.Address/Protocols/HTTP.cs | 22 -- .../Multiformats.Address/Protocols/HTTPS.cs | 22 -- .../src/Multiformats.Address/Protocols/IP.cs | 20 -- .../src/Multiformats.Address/Protocols/IP4.cs | 42 --- .../src/Multiformats.Address/Protocols/IP6.cs | 39 --- .../Multiformats.Address/Protocols/IPFS.cs | 30 -- .../Protocols/MultiaddressProtocol.cs | 40 --- .../Multiformats.Address/Protocols/Number.cs | 19 -- .../Multiformats.Address/Protocols/Onion.cs | 70 ----- .../Protocols/P2P.Circuit.cs | 20 -- .../Protocols/P2P.Web.RTC.Star.cs | 20 -- .../Protocols/P2P.WebRTC.Direct.cs | 20 -- .../Protocols/P2P.WebSocket.Star.cs | 20 -- .../src/Multiformats.Address/Protocols/P2P.cs | 28 -- .../Multiformats.Address/Protocols/QUIC.cs | 23 -- .../Multiformats.Address/Protocols/QUICv1.cs | 24 -- .../Multiformats.Address/Protocols/SCTP.cs | 16 - .../src/Multiformats.Address/Protocols/TCP.cs | 34 --- .../src/Multiformats.Address/Protocols/UDP.cs | 34 --- .../src/Multiformats.Address/Protocols/UDT.cs | 22 -- .../src/Multiformats.Address/Protocols/UTP.cs | 22 -- .../Multiformats.Address/Protocols/Unix.cs | 50 ---- .../Protocols/WebSocket.cs | 22 -- .../Protocols/WebSocketSecure.cs | 22 -- .../ConvertTests.cs | 225 -------------- .../MultiaddressTests.cs | 198 ------------- .../Multiformats.Address.Tests.csproj | 45 --- 46 files changed, 2487 deletions(-) delete mode 100644 src/cs-multiaddress/.editorconfig delete mode 100644 src/cs-multiaddress/.gitattributes delete mode 100644 src/cs-multiaddress/.gitignore delete mode 100644 src/cs-multiaddress/.travis.yml delete mode 100644 src/cs-multiaddress/LICENSE delete mode 100644 src/cs-multiaddress/Multiformats.Address.sln delete mode 100644 src/cs-multiaddress/NuGet.config delete mode 100644 src/cs-multiaddress/README.md delete mode 100644 src/cs-multiaddress/appveyor.yml delete mode 100644 src/cs-multiaddress/build.sh delete mode 100644 src/cs-multiaddress/src/Multiformats.Address/Extensions.cs delete mode 100644 src/cs-multiaddress/src/Multiformats.Address/Multiaddress.cs delete mode 100644 src/cs-multiaddress/src/Multiformats.Address/Multiformats.Address.csproj delete mode 100644 src/cs-multiaddress/src/Multiformats.Address/Net/MultiaddressExtensions.cs delete mode 100644 src/cs-multiaddress/src/Multiformats.Address/Net/MultiaddressTools.cs delete mode 100644 src/cs-multiaddress/src/Multiformats.Address/Protocols/DCCP.cs delete mode 100644 src/cs-multiaddress/src/Multiformats.Address/Protocols/DNS.cs delete mode 100644 src/cs-multiaddress/src/Multiformats.Address/Protocols/DNS4.cs delete mode 100644 src/cs-multiaddress/src/Multiformats.Address/Protocols/DNS6.cs delete mode 100644 src/cs-multiaddress/src/Multiformats.Address/Protocols/HTTP.cs delete mode 100644 src/cs-multiaddress/src/Multiformats.Address/Protocols/HTTPS.cs delete mode 100644 src/cs-multiaddress/src/Multiformats.Address/Protocols/IP.cs delete mode 100644 src/cs-multiaddress/src/Multiformats.Address/Protocols/IP4.cs delete mode 100644 src/cs-multiaddress/src/Multiformats.Address/Protocols/IP6.cs delete mode 100644 src/cs-multiaddress/src/Multiformats.Address/Protocols/IPFS.cs delete mode 100644 src/cs-multiaddress/src/Multiformats.Address/Protocols/MultiaddressProtocol.cs delete mode 100644 src/cs-multiaddress/src/Multiformats.Address/Protocols/Number.cs delete mode 100644 src/cs-multiaddress/src/Multiformats.Address/Protocols/Onion.cs delete mode 100644 src/cs-multiaddress/src/Multiformats.Address/Protocols/P2P.Circuit.cs delete mode 100644 src/cs-multiaddress/src/Multiformats.Address/Protocols/P2P.Web.RTC.Star.cs delete mode 100644 src/cs-multiaddress/src/Multiformats.Address/Protocols/P2P.WebRTC.Direct.cs delete mode 100644 src/cs-multiaddress/src/Multiformats.Address/Protocols/P2P.WebSocket.Star.cs delete mode 100644 src/cs-multiaddress/src/Multiformats.Address/Protocols/P2P.cs delete mode 100644 src/cs-multiaddress/src/Multiformats.Address/Protocols/QUIC.cs delete mode 100644 src/cs-multiaddress/src/Multiformats.Address/Protocols/QUICv1.cs delete mode 100644 src/cs-multiaddress/src/Multiformats.Address/Protocols/SCTP.cs delete mode 100644 src/cs-multiaddress/src/Multiformats.Address/Protocols/TCP.cs delete mode 100644 src/cs-multiaddress/src/Multiformats.Address/Protocols/UDP.cs delete mode 100644 src/cs-multiaddress/src/Multiformats.Address/Protocols/UDT.cs delete mode 100644 src/cs-multiaddress/src/Multiformats.Address/Protocols/UTP.cs delete mode 100644 src/cs-multiaddress/src/Multiformats.Address/Protocols/Unix.cs delete mode 100644 src/cs-multiaddress/src/Multiformats.Address/Protocols/WebSocket.cs delete mode 100644 src/cs-multiaddress/src/Multiformats.Address/Protocols/WebSocketSecure.cs delete mode 100644 src/cs-multiaddress/test/Multiformats.Address.Tests/ConvertTests.cs delete mode 100644 src/cs-multiaddress/test/Multiformats.Address.Tests/MultiaddressTests.cs delete mode 100644 src/cs-multiaddress/test/Multiformats.Address.Tests/Multiformats.Address.Tests.csproj diff --git a/src/cs-multiaddress/.editorconfig b/src/cs-multiaddress/.editorconfig deleted file mode 100644 index ad7283e..0000000 --- a/src/cs-multiaddress/.editorconfig +++ /dev/null @@ -1,17 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -indent_style = space -insert_final_newline = true -trim_trailing_whitespace = true - -[*.cs] -indent_size = 4 - -[*.{sln,csproj,yml,config,md}] -indent_size = 2 - -[*.md] -trim_trailing_whitespace = false diff --git a/src/cs-multiaddress/.gitattributes b/src/cs-multiaddress/.gitattributes deleted file mode 100644 index 1ff0c42..0000000 --- a/src/cs-multiaddress/.gitattributes +++ /dev/null @@ -1,63 +0,0 @@ -############################################################################### -# Set default behavior to automatically normalize line endings. -############################################################################### -* text=auto - -############################################################################### -# Set default behavior for command prompt diff. -# -# This is need for earlier builds of msysgit that does not have it on by -# default for csharp files. -# Note: This is only used by command line -############################################################################### -#*.cs diff=csharp - -############################################################################### -# Set the merge driver for project and solution files -# -# Merging from the command prompt will add diff markers to the files if there -# are conflicts (Merging from VS is not affected by the settings below, in VS -# the diff markers are never inserted). Diff markers may cause the following -# file extensions to fail to load in VS. An alternative would be to treat -# these files as binary and thus will always conflict and require user -# intervention with every merge. To do so, just uncomment the entries below -############################################################################### -#*.sln merge=binary -#*.csproj merge=binary -#*.vbproj merge=binary -#*.vcxproj merge=binary -#*.vcproj merge=binary -#*.dbproj merge=binary -#*.fsproj merge=binary -#*.lsproj merge=binary -#*.wixproj merge=binary -#*.modelproj merge=binary -#*.sqlproj merge=binary -#*.wwaproj merge=binary - -############################################################################### -# behavior for image files -# -# image files are treated as binary by default. -############################################################################### -#*.jpg binary -#*.png binary -#*.gif binary - -############################################################################### -# diff behavior for common document formats -# -# Convert binary document formats to text before diffing them. This feature -# is only available from the command line. Turn it on by uncommenting the -# entries below. -############################################################################### -#*.doc diff=astextplain -#*.DOC diff=astextplain -#*.docx diff=astextplain -#*.DOCX diff=astextplain -#*.dot diff=astextplain -#*.DOT diff=astextplain -#*.pdf diff=astextplain -#*.PDF diff=astextplain -#*.rtf diff=astextplain -#*.RTF diff=astextplain diff --git a/src/cs-multiaddress/.gitignore b/src/cs-multiaddress/.gitignore deleted file mode 100644 index 87d73e3..0000000 --- a/src/cs-multiaddress/.gitignore +++ /dev/null @@ -1,243 +0,0 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. - -# User-specific files -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -[Xx]64/ -[Xx]86/ -[Bb]uild/ -bld/ -[Bb]in/ -[Oo]bj/ - -# Visual Studio 2015 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUNIT -*.VisualState.xml -TestResult.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# DNX -project.lock.json -artifacts/ - -*_i.c -*_p.c -*_i.h -*.ilk -*.meta -*.obj -*.pch -*.pdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# JustCode is a .NET coding add-in -.JustCode - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml - -# TODO: Un-comment the next line if you do not want to checkin -# your web deploy settings because they may include unencrypted -# passwords -#*.pubxml -*.publishproj - -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/packages/* -# except build/, which is used as an MSBuild target. -!**/packages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/packages/repositories.config -# NuGet v3's project.json files produces more ignoreable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directory -AppPackages/ -BundleArtifacts/ - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!*.[Cc]ache/ - -# Others -ClientBin/ -[Ss]tyle[Cc]op.* -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.pfx -*.publishsettings -node_modules/ -orleans.codegen.cs - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm - -# SQL Server files -*.mdf -*.ldf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# LightSwitch generated files -GeneratedArtifacts/ -ModelManifest.xml - -# Paket dependency manager -.paket/paket.exe - -# FAKE - F# Make -.fake/ -.vscode diff --git a/src/cs-multiaddress/.travis.yml b/src/cs-multiaddress/.travis.yml deleted file mode 100644 index e1c501d..0000000 --- a/src/cs-multiaddress/.travis.yml +++ /dev/null @@ -1,51 +0,0 @@ -language: csharp -sudo: required -dist: trusty -env: - - CLI_VERSION=latest - -addons: - apt: - packages: - - gettext - - libcurl4-openssl-dev - - libicu-dev - - libssl-dev - - libunwind8 - - zlib1g -mono: - - latest -os: - - linux - - osx - -notifications: - email: - on_success: change - on_failure: always - -branches: - only: - - master - -cache: - bundler: true - directories: - - ./packages - - /.dotnetcli - - $HOME/Library/Caches/Homebrew - -before_install: - - if test "$TRAVIS_OS_NAME" == "osx"; then brew update; brew install openssl; ln -s /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib /usr/local/lib/; ln -s /usr/local/opt/openssl/lib/libssl.1.0.0.dylib /usr/local/lib/; fi - -install: - - export DOTNET_INSTALL_DIR="$PWD/.dotnetcli" - - export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true - - export DOTNET_CLI_TELEMETRY_OPTOUT=1 - - curl -sSL https://raw.githubusercontent.com/dotnet/cli/rel/1.0.1/scripts/obtain/dotnet-install.sh | bash /dev/stdin --version "$CLI_VERSION" --install-dir "$DOTNET_INSTALL_DIR" - - git config --global core.autocrlf input - - chmod +x ./build.sh - - export PATH="$DOTNET_INSTALL_DIR:$PATH" - -script: - - ./build.sh diff --git a/src/cs-multiaddress/LICENSE b/src/cs-multiaddress/LICENSE deleted file mode 100644 index e0756c7..0000000 --- a/src/cs-multiaddress/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2016 Trond Bråthen - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/src/cs-multiaddress/Multiformats.Address.sln b/src/cs-multiaddress/Multiformats.Address.sln deleted file mode 100644 index 6164f59..0000000 --- a/src/cs-multiaddress/Multiformats.Address.sln +++ /dev/null @@ -1,71 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.27130.2027 -MinimumVisualStudioVersion = 15.0.26124.0 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{5174FE92-E9D8-47EA-8738-0E94D8E8F85B}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Multiformats.Address", "src\Multiformats.Address\Multiformats.Address.csproj", "{BFFDDBBD-0073-49CC-8592-78140A5A7165}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{C0A9F493-26A9-4370-9B7B-EA3B2031B952}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Multiformats.Address.Tests", "test\Multiformats.Address.Tests\Multiformats.Address.Tests.csproj", "{B6E09410-D728-4184-A79D-B9195DB90C73}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{BCB0693C-373E-4379-B767-01319F264FFA}" - ProjectSection(SolutionItems) = preProject - .editorconfig = .editorconfig - .gitattributes = .gitattributes - .gitignore = .gitignore - .travis.yml = .travis.yml - appveyor.yml = appveyor.yml - build.sh = build.sh - LICENSE = LICENSE - NuGet.config = NuGet.config - README.md = README.md - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {BFFDDBBD-0073-49CC-8592-78140A5A7165}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BFFDDBBD-0073-49CC-8592-78140A5A7165}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BFFDDBBD-0073-49CC-8592-78140A5A7165}.Debug|x64.ActiveCfg = Debug|Any CPU - {BFFDDBBD-0073-49CC-8592-78140A5A7165}.Debug|x64.Build.0 = Debug|Any CPU - {BFFDDBBD-0073-49CC-8592-78140A5A7165}.Debug|x86.ActiveCfg = Debug|Any CPU - {BFFDDBBD-0073-49CC-8592-78140A5A7165}.Debug|x86.Build.0 = Debug|Any CPU - {BFFDDBBD-0073-49CC-8592-78140A5A7165}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BFFDDBBD-0073-49CC-8592-78140A5A7165}.Release|Any CPU.Build.0 = Release|Any CPU - {BFFDDBBD-0073-49CC-8592-78140A5A7165}.Release|x64.ActiveCfg = Release|Any CPU - {BFFDDBBD-0073-49CC-8592-78140A5A7165}.Release|x64.Build.0 = Release|Any CPU - {BFFDDBBD-0073-49CC-8592-78140A5A7165}.Release|x86.ActiveCfg = Release|Any CPU - {BFFDDBBD-0073-49CC-8592-78140A5A7165}.Release|x86.Build.0 = Release|Any CPU - {B6E09410-D728-4184-A79D-B9195DB90C73}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B6E09410-D728-4184-A79D-B9195DB90C73}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B6E09410-D728-4184-A79D-B9195DB90C73}.Debug|x64.ActiveCfg = Debug|Any CPU - {B6E09410-D728-4184-A79D-B9195DB90C73}.Debug|x64.Build.0 = Debug|Any CPU - {B6E09410-D728-4184-A79D-B9195DB90C73}.Debug|x86.ActiveCfg = Debug|Any CPU - {B6E09410-D728-4184-A79D-B9195DB90C73}.Debug|x86.Build.0 = Debug|Any CPU - {B6E09410-D728-4184-A79D-B9195DB90C73}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B6E09410-D728-4184-A79D-B9195DB90C73}.Release|Any CPU.Build.0 = Release|Any CPU - {B6E09410-D728-4184-A79D-B9195DB90C73}.Release|x64.ActiveCfg = Release|Any CPU - {B6E09410-D728-4184-A79D-B9195DB90C73}.Release|x64.Build.0 = Release|Any CPU - {B6E09410-D728-4184-A79D-B9195DB90C73}.Release|x86.ActiveCfg = Release|Any CPU - {B6E09410-D728-4184-A79D-B9195DB90C73}.Release|x86.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {BFFDDBBD-0073-49CC-8592-78140A5A7165} = {5174FE92-E9D8-47EA-8738-0E94D8E8F85B} - {B6E09410-D728-4184-A79D-B9195DB90C73} = {C0A9F493-26A9-4370-9B7B-EA3B2031B952} - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {C1A38278-CB86-4A00-96FA-EE89A8D7293A} - EndGlobalSection -EndGlobal diff --git a/src/cs-multiaddress/NuGet.config b/src/cs-multiaddress/NuGet.config deleted file mode 100644 index bcee4a6..0000000 --- a/src/cs-multiaddress/NuGet.config +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/cs-multiaddress/README.md b/src/cs-multiaddress/README.md deleted file mode 100644 index 74d34ea..0000000 --- a/src/cs-multiaddress/README.md +++ /dev/null @@ -1,85 +0,0 @@ -**This project is no longer maintained and has been archived.** - -# Multiformats.Address (cs-multiaddress) - -[![](https://img.shields.io/badge/project-multiformats-blue.svg?style=flat-square)](https://github.com/multiformats/multiformats) -[![](https://img.shields.io/badge/freenode-%23ipfs-blue.svg?style=flat-square)](https://webchat.freenode.net/?channels=%23ipfs) -[![](https://img.shields.io/badge/readme%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/RichardLitt/standard-readme) -[![Travis CI](https://img.shields.io/travis/multiformats/cs-multiaddress.svg?style=flat-square&branch=master)](https://travis-ci.org/multiformats/cs-multiaddress) -[![AppVeyor](https://img.shields.io/appveyor/ci/tabrath/cs-multiaddress/master.svg?style=flat-square)](https://ci.appveyor.com/project/tabrath/cs-multiaddress) -[![NuGet](https://buildstats.info/nuget/Multiformats.Address)](https://www.nuget.org/packages/Multiformats.Address/) -[![Codecov](https://img.shields.io/codecov/c/github/multiformats/cs-multiaddress/master.svg?style=flat-square)](https://codecov.io/gh/multiformats/cs-multiaddress) -[![Libraries.io](https://img.shields.io/librariesio/github/multiformats/cs-multiaddress.svg?style=flat-square)](https://libraries.io/github/multiformats/cs-multiaddress) - -> [Multiaddr](https://github.com/multiformats/multiaddr) implementation in C# .NET Standard 1.6 compliant. - -## Table of Contents - -- [Install](#install) -- [Usage](#usage) -- [Supported protocols](#supported-protocols) -- [Maintainers](#maintainers) -- [Contribute](#contribute) -- [License](#license) - -## Install - - PM> Install-Package Multiformats.Address - ---- - - dotnet add package Multiformats.Address - -## Usage -``` cs -var ma = Multiaddress.Decode("/ip4/127.0.0.1/udp/1234"); -var addresses = ma.Split(); -var joined = Multiaddress.Join(addresses); -var tcp = ma.Protocols.Get(); -``` - -There's some extension methods included that let's you create multiaddresses of IPEndPoints, and create IPEndPoints from multiaddresses. -Some let's you create sockets directly from IP4/IP6, TCP/UDP multiaddresses. - -``` cs -var socket = ma.CreateSocket(); -var localEndPoint = socket.GetLocalMultiaddress(); -var remoteEndPoint = socket.GetRemoteMultiaddress(); -``` - -## Supported protocols - -* DCCP -* DNS/4/6 -* HTTP -* HTTPS -* IPv4 -* IPv6 -* IPFS (deprecated - use P2P) -* Onion -* P2P -* SCTP -* TCP -* UDP -* UDT -* Unix -* WebRTCDirect -* WebRTCStar -* WebSocket -* WebSocket Secure - -## Maintainers - -Captain: [@tabrath](https://github.com/tabrath). - -## Contribute - -Contributions welcome. Please check out [the issues](https://github.com/multiformats/cs-multiaddress/issues). - -Check out our [contributing document](https://github.com/multiformats/multiformats/blob/master/contributing.md) for more information on how we work, and about contributing in general. Please be aware that all interactions related to multiformats are subject to the IPFS [Code of Conduct](https://github.com/ipfs/community/blob/master/code-of-conduct.md). - -Small note: If editing the README, please conform to the [standard-readme](https://github.com/RichardLitt/standard-readme) specification. - -## License - -[MIT](LICENSE) © 2017 Trond BrÃ¥then diff --git a/src/cs-multiaddress/appveyor.yml b/src/cs-multiaddress/appveyor.yml deleted file mode 100644 index c7645af..0000000 --- a/src/cs-multiaddress/appveyor.yml +++ /dev/null @@ -1,113 +0,0 @@ -environment: - PKG_VERSION: 1.1.1 - VERSION_SUFFIX: "" -version: ${PKG_VERSION}-{build} -configuration: Release -platform: x64 - -skip_commits: - message: /travis/ - files: - - '**\*.md' - - LICENSE - -skip_branch_with_pr: true - -matrix: - fast_finish: true - -init: - - git config --global core.autocrlf input - - ps: $env:BUILD_VERSION = "$env:PKG_VERSION-$env:APPVEYOR_BUILD_NUMBER" - - ps: | - if ($env:APPVEYOR_REPO_BRANCH -eq "master") - { - $env:VERSION_SUFFIX = "" - $env:NUGET_VERSION = "$env:PKG_VERSION" - } - else - { - $env:VERSION_SUFFIX = "beta$env:APPVEYOR_BUILD_NUMBER" - $env:NUGET_VERSION = "$env:PKG_VERSION-$env:VERSION_SUFFIX" - } - - ps: Update-AppveyorBuild -Version $env:BUILD_VERSION - - ps: Write-Host "Build version $env:BUILD_VERSION, NuGet version $env:NUGET_VERSION, Version suffix $env:VERSION_SUFFIX" - -install: - - git submodule update --init --recursive - -before_build: - - appveyor-retry dotnet restore -v Minimal - -build_script: - - ps: | - if ($env:APPVEYOR_REPO_BRANCH -eq "master") - { - dotnet build "src\Multiformats.Address" -c $env:CONFIGURATION - } - else - { - dotnet build "src\Multiformats.Address" -c $env:CONFIGURATION --version-suffix $env:VERSION_SUFFIX - } - -after_build: - - ps: | - if ($env:APPVEYOR_REPO_BRANCH -eq "master") - { - dotnet pack "src\Multiformats.Address" -c $env:CONFIGURATION --no-build -o $env:APPVEYOR_BUILD_FOLDER\artifacts - } - else - { - dotnet pack "src\Multiformats.Address" -c $env:CONFIGURATION --no-build --version-suffix $env:VERSION_SUFFIX -o $env:APPVEYOR_BUILD_FOLDER\artifacts - } - -test: off - -before_test: - - nuget install OpenCover -Version 4.6.519 -OutputDirectory .\tools - -test_script: - - .\tools\OpenCover.4.6.519\tools\OpenCover.Console.exe -register:user -returntargetcode -target:"%ProgramFiles%\dotnet\dotnet.exe" -targetargs:"test %APPVEYOR_BUILD_FOLDER%\test\Multiformats.Address.Tests\Multiformats.Address.Tests.csproj -c Debug -f netcoreapp1.1 -l trx;logfilename=TestResult.xml /p:Platform=AnyCPU" -filter:"+[Multiformats.Address]* -[Multiformats.Address.Benchmarks]* -[Multiformats.Address.Tests]*" -excludebyattribute:*.ExcludeFromCodeCoverage* -hideskipped:All -output:"%APPVEYOR_BUILD_FOLDER%\coverage.xml" -oldStyle - -after_test: - - ps: | - $wc = New-Object 'System.Net.WebClient' - $wc.UploadFile("https://ci.appveyor.com/api/testresults/xunit/$($env:APPVEYOR_JOB_ID)", (Resolve-Path .\test\Multiformats.Address.Tests\TestResults\TestResult.xml)) - -on_success: - - "SET PATH=C:\\Python34;C:\\Python34\\Scripts;%PATH%" - - pip install codecov - - codecov -f "%APPVEYOR_BUILD_FOLDER%\coverage.xml" -X gcov - -artifacts: - - path: artifacts\**\*.* - -cache: - - '%USERPROFILE%\.local' - - '%USERPROFILE%\.nuget\packages -> **\project.json' - - '%LocalAppData%\NuGet\Cache' - - '%LocalAppData%\Python' - - '.\packages -> **\project.json' - - '.\tools' - - '\Python34' - -nuget: - account_feed: true - -deploy: - - provider: NuGet - api_key: - secure: WcDqU36pLPvA+s5D4N0VEsi7AZGewvf4croE/D3rh3F+iqiztq9w5gHbrhgoTNS9 - on: - branch: master - appveyor_repo_tag: true - - provider: GitHub - description: 'Release description' - auth_token: - secure: nsZHZ5nFBFP4fZoVUEeWeZKx7LUASVqCZ+JblTox+02RfTAOlANdFWeCqOwhu7pk - artifact: /.*\.nupkg/ # upload all NuGet packages to release assets - draft: false - prerelease: false - on: - branch: master # release from master branch only - appveyor_repo_tag: true diff --git a/src/cs-multiaddress/build.sh b/src/cs-multiaddress/build.sh deleted file mode 100644 index 7c22621..0000000 --- a/src/cs-multiaddress/build.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env bash - -set -e - -if [ $TRAVIS_OS_NAME = "osx" ]; then - ulimit -n 1024 - dotnet restore --disable-parallel --runtime osx-x64 -else - dotnet restore --runtime ubuntu-x64 -fi - -export FrameworkPathOverride=$(dirname $(which mono))/../lib/mono/4.5/ - -dotnet test ./test/Multiformats.Address.Tests/Multiformats.Address.Tests.csproj -c Release -f netcoreapp1.1 -dotnet build ./test/Multiformats.Address.Tests/Multiformats.Address.Tests.csproj -c Release -f net461 - -mono $HOME/.nuget/packages/xunit.runner.console/2.3.1/tools/net452/xunit.console.exe ./test/Multiformats.Address.Tests/bin/Release/net461/Multiformats.Address.Tests.dll diff --git a/src/cs-multiaddress/src/Multiformats.Address/Extensions.cs b/src/cs-multiaddress/src/Multiformats.Address/Extensions.cs deleted file mode 100644 index 5b7d412..0000000 --- a/src/cs-multiaddress/src/Multiformats.Address/Extensions.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Multiformats.Address -{ - internal static class Extensions - { - public static T[] Slice(this T[] array, int offset, int? count = null) - { - var result = new T[count ?? array.Length - offset]; - Array.Copy(array, offset, result, 0, result.Length); - return result; - } - } -} diff --git a/src/cs-multiaddress/src/Multiformats.Address/Multiaddress.cs b/src/cs-multiaddress/src/Multiformats.Address/Multiaddress.cs deleted file mode 100644 index 0470a6b..0000000 --- a/src/cs-multiaddress/src/Multiformats.Address/Multiaddress.cs +++ /dev/null @@ -1,278 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Net; -using BinaryEncoding; -using Multiformats.Address.Protocols; -using Multiformats.Hash; -using Org.BouncyCastle.Bcpg; - -namespace Multiformats.Address -{ - public class Multiaddress : IEquatable - { - static Multiaddress() - { - Setup("ip4", 4, 32, false, ip => { - if (ip != null) - { - if (ip is IPAddress) - return new IP4((IPAddress)ip); - else if (ip is string) - return new IP4((string)ip); - else - throw new Exception($"Invalid IP4 address {ip}"); - } - - return new IP4(); - }); - Setup("ip6", 41, 128, false, ip => ip != null ? new IP6((IPAddress)ip) : new IP6()); - Setup("tcp", 6, 16, false, port => port != null ? new TCP((int)port) : new TCP()); - Setup("udp", 17, 16, false, port => port != null ? new UDP((int)port) : new UDP()); - Setup("p2p", 420, -1, false, address => address != null ? address is Multihash ? new P2P((Multihash)address) : new P2P((string)address) : new P2P()); - Setup("ipfs", 421, -1, false, address => address != null ? address is Multihash ? new IPFS((Multihash)address) : new IPFS((string)address) : new IPFS()); - Setup("ws", 477, 0, false, _ => new WebSocket()); - Setup("wss", 478, 0, false, _ => new WebSocketSecure()); - Setup("dccp", 33, 16, false, port => port != null ? new DCCP((short)port) : new DCCP()); - Setup("sctp", 132, 16, false, port => port != null ? new SCTP((short)port) : new SCTP()); - Setup("unix", 400, -1, true, address => address != null ? new Unix((string)address) : new Unix()); - Setup("onion", 444, 96, false, address => address != null ? new Onion((string)address) : new Onion()); - Setup("quic", 460, 0, false, _ => new QUIC()); - Setup("quic-v1", 461, 0, false, _ => new QUICv1()); - Setup("http", 480, 0, false, _ => new HTTP()); - Setup("https", 443, 0, false, _ => new HTTPS()); - Setup("utp", 301, 0, false, _ => new UTP()); - Setup("udt", 302, 0, false, _ => new UDT()); - Setup("dns", 53, -1, false, address => address != null ? new DNS((string)address) : new DNS()); - Setup("dns4", 54, -1, false, address => address != null ? new DNS4((string)address) : new DNS4()); - Setup("dns6", 55, -1, false, address => address != null ? new DNS6((string)address) : new DNS6()); - Setup("p2p-circuit", 290, 0, false, _ => new P2PCircuit()); - Setup("p2p-webrtc-star", 275, 0, false, _ => new P2PWebRTCStar()); - Setup("p2p-webrtc-direct", 276, 0, false, _ => new P2PWebRTCStar()); - Setup("p2p-websocket-star", 479, 0, false, _ => new P2PWebSocketStar()); - } - - private class Protocol - { - public string Name { get; } - public int Code { get; } - public int Size { get; } - public Func Factory { get; } - public Type Type { get; } - public bool Path { get; } - - public Protocol(string name, int code, int size, Type type, bool path, Func factory) - { - Name = name; - Code = code; - Size = size; - Type = type; - Path = path; - Factory = factory; - } - - } - private static readonly List _protocols = new List(); - - private static void Setup(string name, int code, int size, bool path, Func factory) - where TProtocol : MultiaddressProtocol - { - _protocols.Add(new Protocol(name, code, size, typeof(TProtocol), path, factory)); - } - - public List Protocols { get; } - - public Multiaddress() - { - Protocols = new List(); - } - - public Multiaddress Add(object value) - where TProtocol : MultiaddressProtocol - { - var proto = _protocols.SingleOrDefault(p => p.Type == typeof(TProtocol)); - Protocols.Add(proto.Factory(value)); - return this; - } - - public Multiaddress Add() where TProtocol : MultiaddressProtocol => Add(null); - - public Multiaddress Add(params MultiaddressProtocol[] protocols) - { - Protocols.AddRange(protocols); - return this; - } - - public TProtocol Get() where TProtocol : MultiaddressProtocol => Protocols.OfType().SingleOrDefault(); - public MultiaddressProtocol Get(Type multiprotocolType) => Protocols.Where(p => p.GetType() == multiprotocolType).SingleOrDefault(); - - public void Remove() where TProtocol : MultiaddressProtocol - { - var protocol = Get(); - if (protocol != null) - Protocols.Remove(protocol); - } - - private static bool SupportsProtocol(string name) => _protocols.Any(p => p.Name.Equals(name)); - private static bool SupportsProtocol(int code) => _protocols.Any(p => p.Code.Equals(code)); - - private static MultiaddressProtocol CreateProtocol(string name) => _protocols.SingleOrDefault(p => p.Name == name)?.Factory(null); - private static MultiaddressProtocol CreateProtocol(int code) => _protocols.SingleOrDefault(p => p.Code == code)?.Factory(null); - - public static Multiaddress Decode(string value) => new Multiaddress().Add(DecodeProtocols(value.Split(new [] { '/' }, StringSplitOptions.RemoveEmptyEntries)).ToArray()); - public static Multiaddress Decode(byte[] bytes) => new Multiaddress().Add(DecodeProtocols(bytes).ToArray()); - - private static IEnumerable DecodeProtocols(params string[] parts) - { - for (var i = 0; i < parts.Length; i++) - { - if (!SupportsProtocol(parts[i])) - throw new NotSupportedException(parts[i]); - - var protocol = CreateProtocol(parts[i]); - if (protocol.Size != 0) - { - if (i + 1 >= parts.Length) - throw new Exception("Required parameter not found"); - - if (_protocols.SingleOrDefault(p => p.Code == protocol.Code).Path) - { - protocol.Decode(string.Join("/", parts.Slice(i + 1))); - i = parts.Length - 1; - } - else - { - protocol.Decode(parts[++i]); - } - } - - yield return protocol; - } - } - - private static IEnumerable DecodeProtocols(byte[] bytes) - { - var offset = 0; - short code = 0; - MultiaddressProtocol protocol = null; - while (offset < bytes.Length) - { - offset += ParseProtocolCode(bytes, offset, out code); - if (SupportsProtocol(code)) - { - offset += ParseProtocol(bytes, offset, code, out protocol); - - yield return protocol; - } - } - } - - private static int ParseProtocol(byte[] bytes, int offset, short code, out MultiaddressProtocol protocol) - { - var start = offset; - protocol = CreateProtocol(code); - offset += DecodeProtocol(protocol, bytes, offset); - return offset - start; - } - - private static int ParseProtocolCode(byte[] bytes, int offset, out short code) - { - code = Binary.LittleEndian.GetInt16(bytes, offset); - return 2; - } - - private static int DecodeProtocol(MultiaddressProtocol protocol, byte[] bytes, int offset) - { - int start = offset; - int count = 0; - if (protocol.Size > 0) - { - count = protocol.Size/8; - } - else if (protocol.Size == -1) - { - uint proxy = 0; - offset += Binary.Varint.Read(bytes, offset, out proxy); - count = (int) proxy; - } - - if (count > 0) - { - protocol.Decode(bytes.Slice(offset, count)); - offset += count; - } - - return offset - start; - } - - public override string ToString() => Protocols.Count > 0 ? "/" + string.Join("/", Protocols.SelectMany(ProtocolToStrings)) : string.Empty; - - private static IEnumerable ProtocolToStrings(MultiaddressProtocol p) - { - yield return p.Name; - if (p.Value != null) - yield return p.Value.ToString(); - } - - public byte[] ToBytes() => Protocols.SelectMany(EncodeProtocol).ToArray(); - - private static IEnumerable EncodeProtocol(MultiaddressProtocol p) - { - var code = Binary.Varint.GetBytes((ulong)p.Code); - - if (p.Size == 0) - return code; - - var bytes = p.ToBytes(); - - if (p.Size > 0) - return code.Concat(bytes); - - var prefix = Binary.Varint.GetBytes((ulong)bytes.Length); - - return code.Concat(prefix).Concat(bytes); - } - - public IEnumerable Split() => Protocols.Select(p => new Multiaddress().Add(p)); - - public static Multiaddress Join(IEnumerable addresses) - { - var result = new Multiaddress(); - foreach (var address in addresses) - { - result.Add(address.Protocols.ToArray()); - } - return result; - } - - public Multiaddress Encapsulate(Multiaddress address) - { - return new Multiaddress() - .Add(Protocols.Concat(address.Protocols).ToArray()); - } - - public Multiaddress Decapsulate(Multiaddress address) - { - return new Multiaddress() - .Add(Protocols.TakeWhile(p => !address.Protocols.Any(p.Equals)).ToArray()); - } - - public override bool Equals(object obj) => Equals((Multiaddress)obj); - public bool Equals(Multiaddress other) => other != null && ToBytes().SequenceEqual(other.ToBytes()); - - public static implicit operator Multiaddress(string value) - { - return Decode(value); - } - - public bool Has() where T : MultiaddressProtocol - => Protocols.OfType().Any(); - - public Multiaddress Replace(object v) where T : MultiaddressProtocol - { - Remove(); - var protocolDef = _protocols.SingleOrDefault(p => p.Type == typeof(T)); - return Add(protocolDef.Factory(v)); - } - } -} diff --git a/src/cs-multiaddress/src/Multiformats.Address/Multiformats.Address.csproj b/src/cs-multiaddress/src/Multiformats.Address/Multiformats.Address.csproj deleted file mode 100644 index ad40b2b..0000000 --- a/src/cs-multiaddress/src/Multiformats.Address/Multiformats.Address.csproj +++ /dev/null @@ -1,43 +0,0 @@ - - - net70 - win10-x64;osx-x64;ubuntu-x64 - Multiformat addresses - Copyright © tabrath 2017 - Multiformats.Address - 1.1.1 - tabrath - true - Multiformats.Address - Multiformats.Address - multiaddress - https://cdn.rawgit.com/multiformats/website/116894f6/favicon.png - https://github.com/multiformats/cs-multiaddress/blob/master/LICENSE - git - https://github.com/multiformats/cs-multiaddress - $(PackageTargetFallback);netstandard;portable-net461+win8 - 1.6.1 - AnyCPU - Library - https://github.com/multiformats/cs-multiaddress - - - true - full - false - $(DefineConstants);DEBUG - - - pdbonly - true - $(DefineConstants) - - - - - - - - - - diff --git a/src/cs-multiaddress/src/Multiformats.Address/Net/MultiaddressExtensions.cs b/src/cs-multiaddress/src/Multiformats.Address/Net/MultiaddressExtensions.cs deleted file mode 100644 index 7342591..0000000 --- a/src/cs-multiaddress/src/Multiformats.Address/Net/MultiaddressExtensions.cs +++ /dev/null @@ -1,201 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Net; -using System.Net.NetworkInformation; -using System.Net.Sockets; -using System.Threading.Tasks; -using Multiformats.Address.Protocols; - -namespace Multiformats.Address.Net -{ - public static class MultiaddressExtensions - { - public static Multiaddress GetLocalMultiaddress(this Socket socket) => socket.LocalEndPoint.ToMultiaddress(socket.ProtocolType); - public static Multiaddress GetRemoteMultiaddress(this Socket socket) => socket.RemoteEndPoint.ToMultiaddress(socket.ProtocolType); - - public static Multiaddress ToMultiaddress(this EndPoint ep, ProtocolType protocolType) - { - var ma = new Multiaddress(); - - var ip = (IPEndPoint) ep; - if (ip != null) - { - if (ip.AddressFamily == AddressFamily.InterNetwork) - ma.Add(ip.Address); - if (ip.AddressFamily == AddressFamily.InterNetworkV6) - ma.Add(ip.Address); - - if (protocolType == ProtocolType.Tcp) - ma.Add((ushort) ip.Port); - if (protocolType == ProtocolType.Udp) - ma.Add((ushort) ip.Port); - } - - return ma; - } - - public static Multiaddress ToMultiaddress(this IPAddress ip) - { - var ma = new Multiaddress(); - if (ip.AddressFamily == AddressFamily.InterNetwork) - ma.Add(ip); - if (ip.AddressFamily == AddressFamily.InterNetworkV6) - ma.Add(ip); - return ma; - } - - public static IPEndPoint ToEndPoint(this Multiaddress ma) - { - ProtocolType pt; - return ToEndPoint(ma, out pt); - } - - public static IPEndPoint ToEndPoint(this Multiaddress ma, out ProtocolType protocolType) - { - SocketType st; - return ToEndPoint(ma, out protocolType, out st); - } - - public static IPEndPoint ToEndPoint(this Multiaddress ma, out ProtocolType protocolType, out SocketType socketType) - { - IPAddress addr = null; - IP ip = ma.Protocols.OfType().SingleOrDefault(); - if (ip != null) - addr = (IPAddress) ip.Value; - else - { - ip = ma.Protocols.OfType().SingleOrDefault(); - if (ip != null) - addr = (IPAddress) ip.Value; - } - - int? port = null; - Number n = ma.Protocols.OfType().SingleOrDefault(); - if (n != null) - { - port = (ushort) n.Value; - protocolType = ProtocolType.Tcp; - socketType = SocketType.Stream; - } - else - { - n = ma.Protocols.OfType().SingleOrDefault(); - if (n != null) - { - port = (ushort) n.Value; - protocolType = ProtocolType.Udp; - socketType = SocketType.Dgram; - } - else - { - protocolType = ProtocolType.Unknown; - socketType = SocketType.Unknown; - } - } - - return new IPEndPoint(addr ?? IPAddress.Any, port ?? 0); - } - - public static Socket CreateSocket(this Multiaddress ma) - { - IPEndPoint ep; - return CreateSocket(ma, out ep); - } - - public static Socket CreateSocket(this Multiaddress ma, out IPEndPoint ep) - { - ProtocolType pt; - SocketType st; - ep = ma.ToEndPoint(out pt, out st); - - return new Socket(ep.AddressFamily, st, pt); - } - - public static Socket CreateConnection(this Multiaddress ma) - { - IPEndPoint ep; - var socket = CreateSocket(ma, out ep); - socket.Connect(ep); - return socket; - } - - public static Task CreateConnectionAsync(this Multiaddress ma) - { - IPEndPoint ep; - var socket = CreateSocket(ma, out ep); - -#if NETSTANDARD1_6 - return socket.ConnectAsync(ep) - .ContinueWith(_ => socket); -#else - var tcs = new TaskCompletionSource(); - - try - { - socket.BeginConnect(ep, ar => - { - try - { - socket.EndConnect(ar); - tcs.TrySetResult(socket); - } - catch (Exception e) - { - tcs.TrySetException(e); - } - }, null); - } - catch (Exception e) - { - tcs.TrySetException(e); - } - - return tcs.Task; -#endif - } - - public static Socket CreateListener(this Multiaddress ma, int backlog = 10) - { - IPEndPoint ep; - var socket = CreateSocket(ma, out ep); - socket.Bind(ep); - socket.Listen(backlog); - return socket; - } - - public static bool IsThinWaist(this Multiaddress ma) - { - if (!ma.Protocols.Any()) - return false; - - if (!(ma.Protocols[0] is IP4) && !(ma.Protocols[0] is IP6)) - return false; - - if (ma.Protocols.Count == 1) - return true; - - return ma.Protocols[1] is TCP || ma.Protocols[1] is UDP || - ma.Protocols[1] is IP4 || ma.Protocols[1] is IP6; - } - - public static IEnumerable GetMultiaddresses(this NetworkInterface nic) - { - return nic - .GetIPProperties() - .UnicastAddresses - .Select(addr => addr.Address.ToMultiaddress()); - } - - public static IEnumerable Match(this Multiaddress match, params Multiaddress[] addrs) - { - foreach (var a in addrs.Where(x => match.Protocols.Count == x.Protocols.Count)) - { - var i = 0; - - if (a.Protocols.All(p2 => match.Protocols[i++].Code == p2.Code)) - yield return a; - } - } - } -} \ No newline at end of file diff --git a/src/cs-multiaddress/src/Multiformats.Address/Net/MultiaddressTools.cs b/src/cs-multiaddress/src/Multiformats.Address/Net/MultiaddressTools.cs deleted file mode 100644 index 17c3411..0000000 --- a/src/cs-multiaddress/src/Multiformats.Address/Net/MultiaddressTools.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Net.NetworkInformation; - -namespace Multiformats.Address.Net -{ - public static class MultiaddressTools - { - public static IEnumerable GetInterfaceMultiaddresses() - { -#if __MonoCS__ - return Array.Empty(); -#else - return NetworkInterface - .GetAllNetworkInterfaces() - .SelectMany(MultiaddressExtensions.GetMultiaddresses); -#endif - } - } -} diff --git a/src/cs-multiaddress/src/Multiformats.Address/Protocols/DCCP.cs b/src/cs-multiaddress/src/Multiformats.Address/Protocols/DCCP.cs deleted file mode 100644 index 568e16d..0000000 --- a/src/cs-multiaddress/src/Multiformats.Address/Protocols/DCCP.cs +++ /dev/null @@ -1,16 +0,0 @@ -namespace Multiformats.Address.Protocols -{ - public class DCCP : Number - { - public DCCP() - : base("dccp", 33) - { - } - - public DCCP(int port) - : this() - { - Value = port; - } - } -} diff --git a/src/cs-multiaddress/src/Multiformats.Address/Protocols/DNS.cs b/src/cs-multiaddress/src/Multiformats.Address/Protocols/DNS.cs deleted file mode 100644 index 758ae38..0000000 --- a/src/cs-multiaddress/src/Multiformats.Address/Protocols/DNS.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System.Text; -using Multiformats.Hash; - -namespace Multiformats.Address.Protocols -{ - public class DNS : MultiaddressProtocol - { - public DNS() - : base("dns", 53, -1) - { - } - - public DNS(string address) - : this() - { - Value = address; - } - - public override void Decode(string value) => Value = value; - public override void Decode(byte[] bytes) => Value = Encoding.UTF8.GetString(bytes); - public override byte[] ToBytes() => Encoding.UTF8.GetBytes((string)Value); - public override string ToString() => (string)Value ?? string.Empty; - } -} diff --git a/src/cs-multiaddress/src/Multiformats.Address/Protocols/DNS4.cs b/src/cs-multiaddress/src/Multiformats.Address/Protocols/DNS4.cs deleted file mode 100644 index e38c9b3..0000000 --- a/src/cs-multiaddress/src/Multiformats.Address/Protocols/DNS4.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System.Text; -using Multiformats.Hash; - -namespace Multiformats.Address.Protocols -{ - public class DNS4 : MultiaddressProtocol - { - public DNS4() - : base("dns4", 54, -1) - { - } - - public DNS4(string address) - : this() - { - Value = address; - } - - public override void Decode(string value) => Value = value; - public override void Decode(byte[] bytes) => Value = Encoding.UTF8.GetString(bytes); - public override byte[] ToBytes() => Encoding.UTF8.GetBytes((string)Value); - public override string ToString() => (string)Value ?? string.Empty; - } -} diff --git a/src/cs-multiaddress/src/Multiformats.Address/Protocols/DNS6.cs b/src/cs-multiaddress/src/Multiformats.Address/Protocols/DNS6.cs deleted file mode 100644 index 5794d1d..0000000 --- a/src/cs-multiaddress/src/Multiformats.Address/Protocols/DNS6.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System.Text; -using Multiformats.Hash; - -namespace Multiformats.Address.Protocols -{ - public class DNS6 : MultiaddressProtocol - { - public DNS6() - : base("dns6", 55, -1) - { - } - - public DNS6(string address) - : this() - { - Value = address; - } - - public override void Decode(string value) => Value = value; - public override void Decode(byte[] bytes) => Value = Encoding.UTF8.GetString(bytes); - public override byte[] ToBytes() => Encoding.UTF8.GetBytes((string)Value); - public override string ToString() => (string)Value ?? string.Empty; - } -} diff --git a/src/cs-multiaddress/src/Multiformats.Address/Protocols/HTTP.cs b/src/cs-multiaddress/src/Multiformats.Address/Protocols/HTTP.cs deleted file mode 100644 index b3015ad..0000000 --- a/src/cs-multiaddress/src/Multiformats.Address/Protocols/HTTP.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System; - -namespace Multiformats.Address.Protocols -{ - public class HTTP : MultiaddressProtocol - { - public HTTP() - : base("http", 480, 0) - { - } - - public override void Decode(string value) - { - } - - public override void Decode(byte[] bytes) - { - } - - public override byte[] ToBytes() => EmptyBuffer; - } -} \ No newline at end of file diff --git a/src/cs-multiaddress/src/Multiformats.Address/Protocols/HTTPS.cs b/src/cs-multiaddress/src/Multiformats.Address/Protocols/HTTPS.cs deleted file mode 100644 index dbde99e..0000000 --- a/src/cs-multiaddress/src/Multiformats.Address/Protocols/HTTPS.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System; - -namespace Multiformats.Address.Protocols -{ - public class HTTPS : MultiaddressProtocol - { - public HTTPS() - : base("https", 480, 0) - { - } - - public override void Decode(string value) - { - } - - public override void Decode(byte[] bytes) - { - } - - public override byte[] ToBytes() => EmptyBuffer; - } -} \ No newline at end of file diff --git a/src/cs-multiaddress/src/Multiformats.Address/Protocols/IP.cs b/src/cs-multiaddress/src/Multiformats.Address/Protocols/IP.cs deleted file mode 100644 index 17e3245..0000000 --- a/src/cs-multiaddress/src/Multiformats.Address/Protocols/IP.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System.Net; - -namespace Multiformats.Address.Protocols -{ - public abstract class IP : MultiaddressProtocol - { - public IPAddress Address => Value != null ? (IPAddress) Value : IPAddress.None; - - protected IP(string name, int code, int size) - : base(name, code, size) - { - } - - public override void Decode(string value) => Value = IPAddress.Parse(value); - public override void Decode(byte[] bytes) => Value = new IPAddress(bytes); - public override byte[] ToBytes() => Address.GetAddressBytes(); - public override string ToString() => Address.ToString(); - } - -} diff --git a/src/cs-multiaddress/src/Multiformats.Address/Protocols/IP4.cs b/src/cs-multiaddress/src/Multiformats.Address/Protocols/IP4.cs deleted file mode 100644 index 06baa32..0000000 --- a/src/cs-multiaddress/src/Multiformats.Address/Protocols/IP4.cs +++ /dev/null @@ -1,42 +0,0 @@ -using System; -using System.Net; -using System.Net.Sockets; - -namespace Multiformats.Address.Protocols -{ - public class IP4 : IP - { - public IP4() - : base("ip4", 4, 32) - { - } - - public IP4(IPAddress address) - : this() - { - if (address.AddressFamily != AddressFamily.InterNetwork) - throw new Exception("Address is not IPv4"); - - Value = address; - } - - public IP4(string address) - : this(IPAddress.Parse(address)) { } - - public override void Decode(string value) - { - base.Decode(value); - - if (Value != null && ((IPAddress)Value).AddressFamily != AddressFamily.InterNetwork) - throw new Exception("Address is not IPv4"); - } - - public override void Decode(byte[] bytes) - { - base.Decode(bytes); - - if (Value != null && ((IPAddress)Value).AddressFamily != AddressFamily.InterNetwork) - throw new Exception("Address is not IPv4"); - } - } -} diff --git a/src/cs-multiaddress/src/Multiformats.Address/Protocols/IP6.cs b/src/cs-multiaddress/src/Multiformats.Address/Protocols/IP6.cs deleted file mode 100644 index dcd93e1..0000000 --- a/src/cs-multiaddress/src/Multiformats.Address/Protocols/IP6.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System; -using System.Net; -using System.Net.Sockets; - -namespace Multiformats.Address.Protocols -{ - public class IP6 : IP - { - public IP6() - : base("ip6", 41, 128) - { - } - - public IP6(IPAddress address) - : this() - { - if (address.AddressFamily != AddressFamily.InterNetworkV6) - throw new Exception("Address is not IPv6"); - - Value = address; - } - - public override void Decode(string value) - { - base.Decode(value); - - if (Value != null && ((IPAddress)Value).AddressFamily != AddressFamily.InterNetworkV6) - throw new Exception("Address is not IPv6"); - } - - public override void Decode(byte[] bytes) - { - base.Decode(bytes); - - if (Value != null && ((IPAddress)Value).AddressFamily != AddressFamily.InterNetworkV6) - throw new Exception("Address is not IPv6"); - } - } -} diff --git a/src/cs-multiaddress/src/Multiformats.Address/Protocols/IPFS.cs b/src/cs-multiaddress/src/Multiformats.Address/Protocols/IPFS.cs deleted file mode 100644 index 1be3f38..0000000 --- a/src/cs-multiaddress/src/Multiformats.Address/Protocols/IPFS.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; -using Multiformats.Hash; - -namespace Multiformats.Address.Protocols -{ - [Obsolete("Use P2P instead")] - public class IPFS : MultiaddressProtocol - { - public IPFS() - : base("ipfs", 421, -1) - { - } - - public IPFS(string address) - : this(Multihash.FromB58String(address)) - { - } - - public IPFS(Multihash address) - : this() - { - Value = address; - } - - public override void Decode(string value) => Value = Multihash.FromB58String(value); - public override void Decode(byte[] bytes) => Value = Multihash.Decode(bytes); - public override byte[] ToBytes() => (Multihash)Value; - public override string ToString() => ((Multihash)Value)?.B58String() ?? string.Empty; - } -} diff --git a/src/cs-multiaddress/src/Multiformats.Address/Protocols/MultiaddressProtocol.cs b/src/cs-multiaddress/src/Multiformats.Address/Protocols/MultiaddressProtocol.cs deleted file mode 100644 index cb48004..0000000 --- a/src/cs-multiaddress/src/Multiformats.Address/Protocols/MultiaddressProtocol.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; - -namespace Multiformats.Address.Protocols -{ - public abstract class MultiaddressProtocol : IEquatable - { - public string Name { get; } - public int Code { get; } - public int Size { get; } - public object Value { get; protected set; } - - protected static readonly byte[] EmptyBuffer = new byte[] {}; - - protected MultiaddressProtocol(string name, int code, int size) - { - Name = name; - Code = code; - Size = size; - } - - public abstract void Decode(string value); - public abstract void Decode(byte[] bytes); - public abstract byte[] ToBytes(); - - public bool Equals(MultiaddressProtocol other) - { - var eq = Name.Equals(other.Name) && - Code.Equals(other.Code) && - Size.Equals(other.Size) && - Value.Equals(other.Value); - - return eq; - } - - public override bool Equals(object obj) => Equals((MultiaddressProtocol)obj); - - public override string ToString() => Value?.ToString() ?? string.Empty; - public override int GetHashCode() => Value?.GetHashCode() ?? Code ^ Size; - } -} diff --git a/src/cs-multiaddress/src/Multiformats.Address/Protocols/Number.cs b/src/cs-multiaddress/src/Multiformats.Address/Protocols/Number.cs deleted file mode 100644 index f1b5c84..0000000 --- a/src/cs-multiaddress/src/Multiformats.Address/Protocols/Number.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System.Globalization; -using BinaryEncoding; - -namespace Multiformats.Address.Protocols -{ - public abstract class Number : MultiaddressProtocol - { - public ushort Port => (ushort?) Value ?? 0; - - protected Number(string name, int code) - : base(name, code, 16) - { - } - - public override void Decode(string value) => Value = ushort.Parse(value, NumberStyles.Number); - public override void Decode(byte[] bytes) => Value = Binary.BigEndian.GetUInt16(bytes, 0); - public override byte[] ToBytes() => Binary.BigEndian.GetBytes((ushort)Value); - } -} diff --git a/src/cs-multiaddress/src/Multiformats.Address/Protocols/Onion.cs b/src/cs-multiaddress/src/Multiformats.Address/Protocols/Onion.cs deleted file mode 100644 index 8acb74c..0000000 --- a/src/cs-multiaddress/src/Multiformats.Address/Protocols/Onion.cs +++ /dev/null @@ -1,70 +0,0 @@ -using System; -using System.Linq; -using BinaryEncoding; -using Multiformats.Base; - -namespace Multiformats.Address.Protocols -{ - public class Onion : MultiaddressProtocol - { - public string Address => Value != null ? (string) Value : string.Empty; - - public Onion() - : base("onion", 444, 96) - { - } - - public Onion(string s) - : this() - { - Value = s; - } - - public override void Decode(string value) - { - var addr = value.Split(':'); - if (addr.Length != 2) - throw new Exception("Failed to parse addr"); - - if (addr[0].Length != 16) - throw new Exception("Failed to parse addr"); - - if (!Multibase.TryDecode(addr[0], out var encoding, out _) || encoding != MultibaseEncoding.Base32Lower) - throw new InvalidOperationException($"{value} is not a valid onion address."); - - var i = ushort.Parse(addr[1]); - if (i < 1) - throw new Exception("Failed to parse addr"); - - Value = value; - } - - public override void Decode(byte[] bytes) - { - var addr = Multibase.Base32.Encode(bytes.Slice(0, 10)); - var port = Binary.BigEndian.GetUInt16(bytes, 10); - - Value = $"{addr}:{port}"; - } - - public override byte[] ToBytes() - { - var s = (string) Value; - var addr = s.Split(':'); - if (addr.Length != 2) - throw new Exception("Failed to parse addr"); - - if (addr[0].Length != 16) - throw new Exception("Failed to parse addr"); - - if (!Multibase.TryDecode(addr[0], out var encoding, out var onionHostBytes) || encoding != MultibaseEncoding.Base32Lower) - throw new InvalidOperationException($"{s} is not a valid onion address."); - - var i = ushort.Parse(addr[1]); - if (i < 1) - throw new Exception("Failed to parse addr"); - - return onionHostBytes.Concat(Binary.BigEndian.GetBytes(i)).ToArray(); - } - } -} diff --git a/src/cs-multiaddress/src/Multiformats.Address/Protocols/P2P.Circuit.cs b/src/cs-multiaddress/src/Multiformats.Address/Protocols/P2P.Circuit.cs deleted file mode 100644 index bb04db0..0000000 --- a/src/cs-multiaddress/src/Multiformats.Address/Protocols/P2P.Circuit.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace Multiformats.Address.Protocols -{ - public class P2PCircuit : MultiaddressProtocol - { - public P2PCircuit() - : base("p2p-circuit", 290, 0) - { - } - - public override void Decode(string value) - { - } - - public override void Decode(byte[] bytes) - { - } - - public override byte[] ToBytes() => EmptyBuffer; - } -} diff --git a/src/cs-multiaddress/src/Multiformats.Address/Protocols/P2P.Web.RTC.Star.cs b/src/cs-multiaddress/src/Multiformats.Address/Protocols/P2P.Web.RTC.Star.cs deleted file mode 100644 index 9b2d451..0000000 --- a/src/cs-multiaddress/src/Multiformats.Address/Protocols/P2P.Web.RTC.Star.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace Multiformats.Address.Protocols -{ - public class P2PWebRTCStar : MultiaddressProtocol - { - public P2PWebRTCStar() - : base("p2p-webrtc-star", 275, 0) - { - } - - public override void Decode(string value) - { - } - - public override void Decode(byte[] bytes) - { - } - - public override byte[] ToBytes() => EmptyBuffer; - } -} diff --git a/src/cs-multiaddress/src/Multiformats.Address/Protocols/P2P.WebRTC.Direct.cs b/src/cs-multiaddress/src/Multiformats.Address/Protocols/P2P.WebRTC.Direct.cs deleted file mode 100644 index a3e00be..0000000 --- a/src/cs-multiaddress/src/Multiformats.Address/Protocols/P2P.WebRTC.Direct.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace Multiformats.Address.Protocols -{ - public class P2PWebRTCDirect : MultiaddressProtocol - { - public P2PWebRTCDirect() - : base("p2p-webrtc-direct", 276, 0) - { - } - - public override void Decode(string value) - { - } - - public override void Decode(byte[] bytes) - { - } - - public override byte[] ToBytes() => EmptyBuffer; - } -} diff --git a/src/cs-multiaddress/src/Multiformats.Address/Protocols/P2P.WebSocket.Star.cs b/src/cs-multiaddress/src/Multiformats.Address/Protocols/P2P.WebSocket.Star.cs deleted file mode 100644 index cd497ec..0000000 --- a/src/cs-multiaddress/src/Multiformats.Address/Protocols/P2P.WebSocket.Star.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace Multiformats.Address.Protocols -{ - public class P2PWebSocketStar : MultiaddressProtocol - { - public P2PWebSocketStar() - : base("p2p-websocket-star", 479, 0) - { - } - - public override void Decode(string value) - { - } - - public override void Decode(byte[] bytes) - { - } - - public override byte[] ToBytes() => EmptyBuffer; - } -} diff --git a/src/cs-multiaddress/src/Multiformats.Address/Protocols/P2P.cs b/src/cs-multiaddress/src/Multiformats.Address/Protocols/P2P.cs deleted file mode 100644 index a007e9e..0000000 --- a/src/cs-multiaddress/src/Multiformats.Address/Protocols/P2P.cs +++ /dev/null @@ -1,28 +0,0 @@ -using Multiformats.Hash; - -namespace Multiformats.Address.Protocols -{ - public class P2P : MultiaddressProtocol - { - public P2P() - : base("p2p", 420, -1) - { - } - - public P2P(string address) - : this(Multihash.FromB58String(address)) - { - } - - public P2P(Multihash address) - : this() - { - Value = address; - } - - public override void Decode(string value) => Value = Multihash.FromB58String(value); - public override void Decode(byte[] bytes) => Value = Multihash.Decode(bytes); - public override byte[] ToBytes() => (Multihash)Value; - public override string ToString() => ((Multihash)Value)?.B58String() ?? string.Empty; - } -} diff --git a/src/cs-multiaddress/src/Multiformats.Address/Protocols/QUIC.cs b/src/cs-multiaddress/src/Multiformats.Address/Protocols/QUIC.cs deleted file mode 100644 index 42feae7..0000000 --- a/src/cs-multiaddress/src/Multiformats.Address/Protocols/QUIC.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System; - -namespace Multiformats.Address.Protocols -{ - [Obsolete("Use QUICv1 instead")] - public class QUIC : MultiaddressProtocol - { - public QUIC() - : base("quic", 460, 0) - { - } - - public override void Decode(string value) - { - } - - public override void Decode(byte[] bytes) - { - } - - public override byte[] ToBytes() => EmptyBuffer; - } -} diff --git a/src/cs-multiaddress/src/Multiformats.Address/Protocols/QUICv1.cs b/src/cs-multiaddress/src/Multiformats.Address/Protocols/QUICv1.cs deleted file mode 100644 index 2a85026..0000000 --- a/src/cs-multiaddress/src/Multiformats.Address/Protocols/QUICv1.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace Multiformats.Address.Protocols -{ - public class QUICv1 : MultiaddressProtocol - { - public QUICv1() - : base("quic-v1", 461, 0) - { - } - - public override void Decode(string value) - { - } - - public override void Decode(byte[] bytes) - { - } - - public override byte[] ToBytes() => EmptyBuffer; - } -} diff --git a/src/cs-multiaddress/src/Multiformats.Address/Protocols/SCTP.cs b/src/cs-multiaddress/src/Multiformats.Address/Protocols/SCTP.cs deleted file mode 100644 index c1440f0..0000000 --- a/src/cs-multiaddress/src/Multiformats.Address/Protocols/SCTP.cs +++ /dev/null @@ -1,16 +0,0 @@ -namespace Multiformats.Address.Protocols -{ - public class SCTP : Number - { - public SCTP() - : base("sctp", 132) - { - } - - public SCTP(int port) - : this() - { - Value = port; - } - } -} \ No newline at end of file diff --git a/src/cs-multiaddress/src/Multiformats.Address/Protocols/TCP.cs b/src/cs-multiaddress/src/Multiformats.Address/Protocols/TCP.cs deleted file mode 100644 index 202b6d3..0000000 --- a/src/cs-multiaddress/src/Multiformats.Address/Protocols/TCP.cs +++ /dev/null @@ -1,34 +0,0 @@ -namespace Multiformats.Address.Protocols -{ - public class TCP : Number - { - public TCP() - : base("tcp", 6) - { - } - - public TCP(int port) - : this() - { - Value = port; - } - - public TCP(uint port) - : this() - { - Value = port; - } - - public TCP(short port) - : this() - { - Value = port; - } - - public TCP(ushort port) - : this() - { - Value = port; - } - } -} diff --git a/src/cs-multiaddress/src/Multiformats.Address/Protocols/UDP.cs b/src/cs-multiaddress/src/Multiformats.Address/Protocols/UDP.cs deleted file mode 100644 index 5fa22c4..0000000 --- a/src/cs-multiaddress/src/Multiformats.Address/Protocols/UDP.cs +++ /dev/null @@ -1,34 +0,0 @@ -namespace Multiformats.Address.Protocols -{ - public class UDP : Number - { - public UDP() - : base("udp", 17) - { - } - - public UDP(int port) - : this() - { - Value = port; - } - - public UDP(uint port) - : this() - { - Value = port; - } - - public UDP(short port) - : this() - { - Value = port; - } - - public UDP(ushort port) - : this() - { - Value = port; - } - } -} diff --git a/src/cs-multiaddress/src/Multiformats.Address/Protocols/UDT.cs b/src/cs-multiaddress/src/Multiformats.Address/Protocols/UDT.cs deleted file mode 100644 index b1c9c41..0000000 --- a/src/cs-multiaddress/src/Multiformats.Address/Protocols/UDT.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System; - -namespace Multiformats.Address.Protocols -{ - public class UDT : MultiaddressProtocol - { - public UDT() - : base("udt", 302, 0) - { - } - - public override void Decode(string value) - { - } - - public override void Decode(byte[] bytes) - { - } - - public override byte[] ToBytes() => EmptyBuffer; - } -} \ No newline at end of file diff --git a/src/cs-multiaddress/src/Multiformats.Address/Protocols/UTP.cs b/src/cs-multiaddress/src/Multiformats.Address/Protocols/UTP.cs deleted file mode 100644 index 3358b10..0000000 --- a/src/cs-multiaddress/src/Multiformats.Address/Protocols/UTP.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System; - -namespace Multiformats.Address.Protocols -{ - public class UTP : MultiaddressProtocol - { - public UTP() - : base("utp", 301, 0) - { - } - - public override void Decode(string value) - { - } - - public override void Decode(byte[] bytes) - { - } - - public override byte[] ToBytes() => EmptyBuffer; - } -} \ No newline at end of file diff --git a/src/cs-multiaddress/src/Multiformats.Address/Protocols/Unix.cs b/src/cs-multiaddress/src/Multiformats.Address/Protocols/Unix.cs deleted file mode 100644 index 0dd4f33..0000000 --- a/src/cs-multiaddress/src/Multiformats.Address/Protocols/Unix.cs +++ /dev/null @@ -1,50 +0,0 @@ -using System; -using System.Linq; -using System.Text; -using BinaryEncoding; - -namespace Multiformats.Address.Protocols -{ - public class Unix : MultiaddressProtocol - { - public string Path => Value != null ? (string) Value : string.Empty; - - public Unix() - : base("unix", 400, -1) - { - } - - public Unix(string address) - : this() - { - Value = address; - } - - public override void Decode(string value) - { - Value = value; - } - - public override void Decode(byte[] bytes) - { - uint size = 0; - var n = Binary.Varint.Read(bytes, 0, out size); - - if (bytes.Length - n != size) - throw new Exception("Inconsitent lengths"); - - if (size == 0) - throw new Exception("Invalid length"); - - var s = Encoding.UTF8.GetString(bytes, n, bytes.Length - n); - - Value = s.Substring(1); - } - - public override byte[] ToBytes() - { - return Binary.Varint.GetBytes((uint) Encoding.UTF8.GetByteCount((string) Value)) - .Concat(Encoding.UTF8.GetBytes((string) Value)).ToArray(); - } - } -} diff --git a/src/cs-multiaddress/src/Multiformats.Address/Protocols/WebSocket.cs b/src/cs-multiaddress/src/Multiformats.Address/Protocols/WebSocket.cs deleted file mode 100644 index bb0ea59..0000000 --- a/src/cs-multiaddress/src/Multiformats.Address/Protocols/WebSocket.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System; - -namespace Multiformats.Address.Protocols -{ - public class WebSocket : MultiaddressProtocol - { - public WebSocket() - : base("ws", 477, 0) - { - } - - public override void Decode(byte[] bytes) - { - } - - public override void Decode(string value) - { - } - - public override byte[] ToBytes() => EmptyBuffer; - } -} diff --git a/src/cs-multiaddress/src/Multiformats.Address/Protocols/WebSocketSecure.cs b/src/cs-multiaddress/src/Multiformats.Address/Protocols/WebSocketSecure.cs deleted file mode 100644 index a2ade95..0000000 --- a/src/cs-multiaddress/src/Multiformats.Address/Protocols/WebSocketSecure.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System; - -namespace Multiformats.Address.Protocols -{ - public class WebSocketSecure : MultiaddressProtocol - { - public WebSocketSecure() - : base("wss", 478, 0) - { - } - - public override void Decode(byte[] bytes) - { - } - - public override void Decode(string value) - { - } - - public override byte[] ToBytes() => EmptyBuffer; - } -} diff --git a/src/cs-multiaddress/test/Multiformats.Address.Tests/ConvertTests.cs b/src/cs-multiaddress/test/Multiformats.Address.Tests/ConvertTests.cs deleted file mode 100644 index 8190fa4..0000000 --- a/src/cs-multiaddress/test/Multiformats.Address.Tests/ConvertTests.cs +++ /dev/null @@ -1,225 +0,0 @@ -using System.Linq; -using System.Net; -using System.Net.Sockets; -using System.Threading.Tasks; -using Multiformats.Address.Net; -using Xunit; - -namespace Multiformats.Address.Tests -{ - public class ConvertTests - { - [Fact] - public void IPEndPoint_GivenIPv4Tcp_ReturnsValid() - { - var ep = new IPEndPoint(IPAddress.Loopback, 1337); - var ma = ep.ToMultiaddress(ProtocolType.Tcp); - var result = ma.ToString(); - - Assert.Equal("/ip4/127.0.0.1/tcp/1337", result); - } - - [Fact] - public void IPEndPoint_GivenIPv6Tcp_ReturnsValid() - { - var ep = new IPEndPoint(IPAddress.IPv6Loopback, 1337); - var ma = ep.ToMultiaddress(ProtocolType.Tcp); - var result = ma.ToString(); - - Assert.Equal("/ip6/::1/tcp/1337", result); - } - - [Fact] - public void IPEndPoint_GivenIPv4Udp_ReturnsValid() - { - var ep = new IPEndPoint(IPAddress.Loopback, 1337); - var ma = ep.ToMultiaddress(ProtocolType.Udp); - var result = ma.ToString(); - - Assert.Equal("/ip4/127.0.0.1/udp/1337", result); - } - - [Fact] - public void IPEndPoint_GivenIPv6Udp_ReturnsValid() - { - var ep = new IPEndPoint(IPAddress.IPv6Loopback, 1337); - var ma = ep.ToMultiaddress(ProtocolType.Udp); - var result = ma.ToString(); - - Assert.Equal("/ip6/::1/udp/1337", result); - } - - [Fact] - public void Multiaddress_GivenIPv4Tcp_ReturnsValidEndPoint() - { - var ma = Multiaddress.Decode("/ip4/127.0.0.1/tcp/1337"); - ProtocolType p; - var ep = ma.ToEndPoint(out p); - - Assert.Equal(AddressFamily.InterNetwork, ep.AddressFamily); - Assert.Equal(IPAddress.Loopback, ep.Address); - Assert.Equal(1337, ep.Port); - Assert.Equal(ProtocolType.Tcp, p); - } - - [Fact] - public void Multiaddress_GivenIPv4Udp_ReturnsValidEndPoint() - { - var ma = Multiaddress.Decode("/ip4/127.0.0.1/udp/1337"); - ProtocolType p; - var ep = ma.ToEndPoint(out p); - - Assert.Equal(AddressFamily.InterNetwork, ep.AddressFamily); - Assert.Equal(IPAddress.Loopback, ep.Address); - Assert.Equal(1337, ep.Port); - Assert.Equal(ProtocolType.Udp, p); - } - - [Fact] - public void Multiaddress_GivenIPv6Tcp_ReturnsValidEndPoint() - { - var ma = Multiaddress.Decode("/ip6/::1/tcp/1337"); - ProtocolType p; - var ep = ma.ToEndPoint(out p); - - Assert.Equal(AddressFamily.InterNetworkV6, ep.AddressFamily); - Assert.Equal(IPAddress.IPv6Loopback, ep.Address); - Assert.Equal(1337, ep.Port); - Assert.Equal(ProtocolType.Tcp, p); - } - - [Fact] - public void Multiaddress_GivenIPv6Udp_ReturnsValidEndPoint() - { - var ma = Multiaddress.Decode("/ip6/::1/udp/1337"); - ProtocolType p; - var ep = ma.ToEndPoint(out p); - - Assert.Equal(AddressFamily.InterNetworkV6, ep.AddressFamily); - Assert.Equal(IPAddress.IPv6Loopback, ep.Address); - Assert.Equal(1337, ep.Port); - Assert.Equal(ProtocolType.Udp, p); - } - - [Fact] - public void Socket_GivenMultiaddress_CreatesSocket() - { - var ma = Multiaddress.Decode("/ip4/127.0.0.1/tcp/1337"); - using (var socket = ma.CreateSocket()) - { - Assert.Equal(AddressFamily.InterNetwork, socket.AddressFamily); - Assert.Equal(ProtocolType.Tcp, socket.ProtocolType); - Assert.Equal(SocketType.Stream, socket.SocketType); - } - } - - [Theory] - [InlineData("/ip4/127.0.0.1/udp/1234", true)] - [InlineData("/ip4/127.0.0.1/tcp/1234", true)] - [InlineData("/ip4/127.0.0.1/udp/1234/tcp/1234", true)] - [InlineData("/ip4/127.0.0.1/tcp/12345/ip4/1.2.3.4", true)] - [InlineData("/ip6/::1/tcp/80", true)] - [InlineData("/ip6/::1/udp/80", true)] - [InlineData("/ip6/::1", true)] - [InlineData("/tcp/1234/ip4/1.2.3.4", false)] - [InlineData("/tcp/1234", false)] - [InlineData("/tcp/1234/udp/1234", false)] - [InlineData("/ip4/1.2.3.4/ip4/2.3.4.5", true)] - [InlineData("/ip6/::1/ip4/2.3.4.5", true)] - public void TestThinWaist(string addr, bool expected) - { - var m = Multiaddress.Decode(addr); - - Assert.Equal(expected, m.IsThinWaist()); - } - - [Fact] - public void CanGetInterfaceAddresses() - { -#if !__MonoCS__ - var addrs = MultiaddressTools.GetInterfaceMultiaddresses(); - - Assert.True(addrs.Count() > 1); -#endif - } - - private void TestAddr(Multiaddress m, Multiaddress[] input, Multiaddress[] expect) - { - var actual = m.Match(input); - - Assert.Equal(expect, actual); - } - - [Fact] - public void TestAddrMatch() - { - var a = new[] - { - Multiaddress.Decode("/ip4/1.2.3.4/tcp/1234"), - Multiaddress.Decode("/ip4/1.2.3.4/tcp/2345"), - Multiaddress.Decode("/ip4/1.2.3.4/tcp/1234/tcp/2345"), - Multiaddress.Decode("/ip4/1.2.3.4/tcp/1234/tcp/2345"), - Multiaddress.Decode("/ip4/1.2.3.4/tcp/1234/udp/1234"), - Multiaddress.Decode("/ip4/1.2.3.4/tcp/1234/udp/1234"), - Multiaddress.Decode("/ip4/1.2.3.4/tcp/1234/ip6/::1"), - Multiaddress.Decode("/ip4/1.2.3.4/tcp/1234/ip6/::1"), - Multiaddress.Decode("/ip6/::1/tcp/1234"), - Multiaddress.Decode("/ip6/::1/tcp/2345"), - Multiaddress.Decode("/ip6/::1/tcp/1234/tcp/2345"), - Multiaddress.Decode("/ip6/::1/tcp/1234/tcp/2345"), - Multiaddress.Decode("/ip6/::1/tcp/1234/udp/1234"), - Multiaddress.Decode("/ip6/::1/tcp/1234/udp/1234"), - Multiaddress.Decode("/ip6/::1/tcp/1234/ip6/::1"), - Multiaddress.Decode("/ip6/::1/tcp/1234/ip6/::1"), - }; - - TestAddr(a[0], a, new [] - { - Multiaddress.Decode("/ip4/1.2.3.4/tcp/1234"), - Multiaddress.Decode("/ip4/1.2.3.4/tcp/2345"), - }); - - TestAddr(a[2], a, new[] - { - Multiaddress.Decode("/ip4/1.2.3.4/tcp/1234/tcp/2345"), - Multiaddress.Decode("/ip4/1.2.3.4/tcp/1234/tcp/2345"), - }); - - TestAddr(a[4], a, new[] - { - Multiaddress.Decode("/ip4/1.2.3.4/tcp/1234/udp/1234"), - Multiaddress.Decode("/ip4/1.2.3.4/tcp/1234/udp/1234"), - }); - - TestAddr(a[6], a, new[] - { - Multiaddress.Decode("/ip4/1.2.3.4/tcp/1234/ip6/::1"), - Multiaddress.Decode("/ip4/1.2.3.4/tcp/1234/ip6/::1"), - }); - - TestAddr(a[8], a, new[] - { - Multiaddress.Decode("/ip6/::1/tcp/1234"), - Multiaddress.Decode("/ip6/::1/tcp/2345"), - }); - - TestAddr(a[10], a, new[] - { - Multiaddress.Decode("/ip6/::1/tcp/1234/tcp/2345"), - Multiaddress.Decode("/ip6/::1/tcp/1234/tcp/2345"), - }); - - TestAddr(a[12], a, new[] - { - Multiaddress.Decode("/ip6/::1/tcp/1234/udp/1234"), - Multiaddress.Decode("/ip6/::1/tcp/1234/udp/1234"), - }); - - TestAddr(a[14], a, new[] - { - Multiaddress.Decode("/ip6/::1/tcp/1234/ip6/::1"), - Multiaddress.Decode("/ip6/::1/tcp/1234/ip6/::1"), - }); - } - } -} diff --git a/src/cs-multiaddress/test/Multiformats.Address.Tests/MultiaddressTests.cs b/src/cs-multiaddress/test/Multiformats.Address.Tests/MultiaddressTests.cs deleted file mode 100644 index e610d9f..0000000 --- a/src/cs-multiaddress/test/Multiformats.Address.Tests/MultiaddressTests.cs +++ /dev/null @@ -1,198 +0,0 @@ -using System; -using System.Linq; -using Multiformats.Address.Protocols; -using Org.BouncyCastle.Utilities.Encoders; -using Xunit; - -namespace Multiformats.Address.Tests -{ - public class MultiaddressTests - { - [Theory] - [InlineData("/ip4")] - [InlineData("/ip4/::1")] - [InlineData("/ip4/fdpsofodsajfdoisa")] - [InlineData("/ip6")] - [InlineData("/udp")] - [InlineData("/tcp")] - [InlineData("/sctp")] - [InlineData("/udp/65536")] - [InlineData("/tcp/65536")] - [InlineData("/onion/9imaq4ygg2iegci7:80")] - [InlineData("/onion/aaimaq4ygg2iegci7:80")] - [InlineData("/onion/timaq4ygg2iegci7:0")] - [InlineData("/onion/timaq4ygg2iegci7:-1")] - [InlineData("/onion/timaq4ygg2iegci7")] - [InlineData("/onion/timaq4ygg2iegci@:666")] - [InlineData("/udp/1234/sctp")] - [InlineData("/udp/1234/udt/1234")] - [InlineData("/udp/1234/utp/1234")] - [InlineData("/ip4/127.0.0.1/udp/jfodsajfidosajfoidsa")] - [InlineData("/ip4/127.0.0.1/udp")] - [InlineData("/ip4/127.0.0.1/tcp/jfodsajfidosajfoidsa")] - [InlineData("/ip4/127.0.0.1/tcp")] - [InlineData("/ip4/127.0.0.1/ipfs")] - [InlineData("/ip4/127.0.0.1/ipfs/tcp")] - [InlineData("/unix")] - [InlineData("/ip4/1.2.3.4/tcp/80/unix")] - [InlineData("/dns")] - [InlineData("/dns4")] - [InlineData("/dns6")] - [InlineData("/libp2p-circuit-relay")] - [InlineData("/libp2p-webrtc-star/4")] - [InlineData("/libp2p-webrtc-direct/4")] - public void TestConstructFails(string addr) - { - Assert.ThrowsAny(() => Multiaddress.Decode(addr)); - } - - [Theory] - [InlineData("/ip4/1.2.3.4")] - [InlineData("/ip4/0.0.0.0")] - [InlineData("/ip6/::1")] - [InlineData("/ip6/2601:9:4f81:9700:803e:ca65:66e8:c21")] - [InlineData("/onion/timaq4ygg2iegci7:1234")] - [InlineData("/onion/timaq4ygg2iegci7:80/http")] - [InlineData("/udp/0")] - [InlineData("/tcp/0")] - [InlineData("/sctp/0")] - [InlineData("/udp/1234")] - [InlineData("/tcp/1234")] - [InlineData("/sctp/1234")] - [InlineData("/udp/65535")] - [InlineData("/tcp/65535")] - [InlineData("/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC")] - [InlineData("/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC")] - [InlineData("/udp/1234/sctp/1234")] - [InlineData("/udp/1234/udt")] - [InlineData("/udp/1234/utp")] - [InlineData("/tcp/1234/http")] - [InlineData("/tcp/1234/https")] - [InlineData("/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC/tcp/1234")] - [InlineData("/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC/tcp/1234")] - [InlineData("/ip4/127.0.0.1/udp/1234")] - [InlineData("/ip4/127.0.0.1/udp/0")] - [InlineData("/ip4/127.0.0.1/tcp/1234")] - [InlineData("/ip4/127.0.0.1/tcp/1234/")] - [InlineData("/ip4/127.0.0.1/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC")] - [InlineData("/ip4/127.0.0.1/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC/tcp/1234")] - [InlineData("/unix/a/b/c/d/e")] - [InlineData("/unix/stdio")] - [InlineData("/ip4/1.2.3.4/tcp/80/unix/a/b/c/d/e/f")] - [InlineData("/ip4/127.0.0.1/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC/tcp/1234/unix/stdio")] - [InlineData("/dns/www.google.com")] - [InlineData("/dns4/www.google.com")] - [InlineData("/dns6/www.google.com")] - [InlineData("/p2p-circuit/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC")] - [InlineData("/p2p-webrtc-star/dns/www.google.com")] - [InlineData("/p2p-webrtc-direct/dns/www.google.com")] - [InlineData("/p2p-websocket-star/dns/www.google.com")] - [InlineData("/quic/dns/www.google.com")] - [InlineData("/ws/dns/www.google.com")] - [InlineData("/wss/dns/www.google.com")] - [InlineData("/http/dns/www.google.com")] - [InlineData("/https/dns/www.google.com")] - public void TestConstructSucceeds(string addr) - { - Multiaddress.Decode(addr); - } - - [Fact] - public void TestEqual() - { - var m1 = Multiaddress.Decode("/ip4/127.0.0.1/udp/1234"); - var m2 = Multiaddress.Decode("/ip4/127.0.0.1/tcp/1234"); - var m3 = Multiaddress.Decode("/ip4/127.0.0.1/tcp/1234"); - var m4 = Multiaddress.Decode("/ip4/127.0.0.1/tcp/1234"); - - Assert.NotEqual(m1, m2); - Assert.NotEqual(m2, m1); - Assert.Equal(m2, m3); - Assert.Equal(m3, m2); - Assert.Equal(m1, m1); - Assert.Equal(m2, m4); - Assert.Equal(m4, m3); - } - - [Theory] - [InlineData("/ip4/127.0.0.1/udp/1234", "047f0000011104d2")] - [InlineData("/ip4/127.0.0.1/tcp/4321", "047f0000010610e1")] - [InlineData("/ip4/127.0.0.1/udp/1234/ip4/127.0.0.1/tcp/4321", "047f0000011104d2047f0000010610e1")] - public void TestStringToBytes(string s, string h) - { - var b1 = Hex.Decode(h); - var b2 = Multiaddress.Decode(s).ToBytes(); - - Assert.Equal(b1, b2); - } - - [Theory] - [InlineData("/ip4/127.0.0.1/udp/1234", "047f0000011104d2")] - [InlineData("/ip4/127.0.0.1/tcp/4321", "047f0000010610e1")] - [InlineData("/ip4/127.0.0.1/udp/1234/ip4/127.0.0.1/tcp/4321", "047f0000011104d2047f0000010610e1")] - [InlineData("/onion/aaimaq4ygg2iegci:80", "bc030010c0439831b48218480050")] - public void TestBytesToString(string s1, string h) - { - var b = Hex.Decode(h); - var s2 = Multiaddress.Decode(s1).ToString(); - - Assert.Equal(s1, s2); - } - - [Theory] - [InlineData("/ip4/1.2.3.4/udp/1234", "/ip4/1.2.3.4", "/udp/1234")] - [InlineData("/ip4/1.2.3.4/tcp/1/ip4/2.3.4.5/udp/2", "/ip4/1.2.3.4", "/tcp/1", "/ip4/2.3.4.5", "/udp/2")] - [InlineData("/ip4/1.2.3.4/utp/ip4/2.3.4.5/udp/2/udt", "/ip4/1.2.3.4", "/utp", "/ip4/2.3.4.5", "/udp/2", "/udt")] - public void TestBytesSplitAndJoin(string s, params string[] res) - { - var m = Multiaddress.Decode(s); - var split = m.Split().ToArray(); - - Assert.Equal(split.Length, res.Length); - - for (var i = 0; i < split.Length; i++) - { - Assert.Equal(split[i].ToString(), res[i]); - } - - var joined = Multiaddress.Join(split); - Assert.Equal(m, joined); - } - - [Fact] - public void TestEncapsulate() - { - var m = Multiaddress.Decode("/ip4/127.0.0.1/udp/1234"); - var m2 = Multiaddress.Decode("/udp/5678"); - - var b = m.Encapsulate(m2); - Assert.Equal("/ip4/127.0.0.1/udp/1234/udp/5678", b.ToString()); - - var m3 = Multiaddress.Decode("/udp/5678"); - var c = b.Decapsulate(m3); - Assert.Equal("/ip4/127.0.0.1/udp/1234", c.ToString()); - - var m4 = Multiaddress.Decode("/ip4/127.0.0.1"); - var d = c.Decapsulate(m4); - Assert.Equal("", d.ToString()); - } - - [Fact] - public void TestGetValue() - { - var a = - Multiaddress.Decode( - "/ip4/127.0.0.1/utp/tcp/5555/udp/1234/utp/ipfs/QmbHVEEepCi7rn7VL7Exxpd2Ci9NNB6ifvqwhsrbRMgQFP"); - - Assert.Equal("127.0.0.1", a.Protocols.OfType().FirstOrDefault()?.ToString()); - Assert.Equal("", a.Protocols.OfType().FirstOrDefault()?.ToString()); - Assert.Equal("5555", a.Protocols.OfType().FirstOrDefault()?.ToString()); - Assert.Equal("1234", a.Protocols.OfType().FirstOrDefault()?.ToString()); - Assert.Equal("QmbHVEEepCi7rn7VL7Exxpd2Ci9NNB6ifvqwhsrbRMgQFP", a.Protocols.OfType().FirstOrDefault()?.ToString()); - - a = Multiaddress.Decode("/ip4/0.0.0.0/unix/a/b/c/d"); - Assert.Equal("0.0.0.0", a.Protocols.OfType().FirstOrDefault()?.ToString()); - Assert.Equal("a/b/c/d", a.Protocols.OfType().FirstOrDefault()?.ToString()); - } - } -} diff --git a/src/cs-multiaddress/test/Multiformats.Address.Tests/Multiformats.Address.Tests.csproj b/src/cs-multiaddress/test/Multiformats.Address.Tests/Multiformats.Address.Tests.csproj deleted file mode 100644 index a9bbcc0..0000000 --- a/src/cs-multiaddress/test/Multiformats.Address.Tests/Multiformats.Address.Tests.csproj +++ /dev/null @@ -1,45 +0,0 @@ - - - - netcoreapp1.1;net461 - win10-x64;osx-x64;ubuntu-x64 - true - Multiformats.Address.Tests - Multiformats.Address.Tests - true - $(PackageTargetFallback);netstandard;portable-net461+win8 - - - - true - full - false - $(DefineConstants);DEBUG - - - - pdbonly - true - $(DefineConstants) - - - - - - - - - - - - - - - - - - - - - -