diff options
Diffstat (limited to 'windows')
| -rw-r--r-- | windows/ZeroTierOne/ZeroTierOne.vcxproj | 109 | ||||
| -rw-r--r-- | windows/ZeroTierOne/ZeroTierOne.vcxproj.filters | 260 | ||||
| -rw-r--r-- | windows/ZeroTierOne/ZeroTierOneService.cpp | 71 | ||||
| -rw-r--r-- | windows/ZeroTierOne/ZeroTierOneService.h | 8 | 
4 files changed, 196 insertions, 252 deletions
| diff --git a/windows/ZeroTierOne/ZeroTierOne.vcxproj b/windows/ZeroTierOne/ZeroTierOne.vcxproj index a651b5f7..796c30d9 100644 --- a/windows/ZeroTierOne/ZeroTierOne.vcxproj +++ b/windows/ZeroTierOne/ZeroTierOne.vcxproj @@ -19,87 +19,49 @@      </ProjectConfiguration>    </ItemGroup>    <ItemGroup> -    <ClCompile Include="..\..\control\IpcConnection.cpp" /> -    <ClCompile Include="..\..\control\IpcListener.cpp" /> -    <ClCompile Include="..\..\control\NodeControlClient.cpp" /> -    <ClCompile Include="..\..\control\NodeControlService.cpp" /> +    <ClCompile Include="..\..\ext\http-parser\http_parser.c" /> +    <ClCompile Include="..\..\ext\json-parser\json.c" />      <ClCompile Include="..\..\ext\lz4\lz4.c" /> -    <ClCompile Include="..\..\main.cpp" />      <ClCompile Include="..\..\node\C25519.cpp" />      <ClCompile Include="..\..\node\CertificateOfMembership.cpp" />      <ClCompile Include="..\..\node\Defaults.cpp" />      <ClCompile Include="..\..\node\Dictionary.cpp" /> -    <ClCompile Include="..\..\node\HttpClient.cpp" />      <ClCompile Include="..\..\node\Identity.cpp" />      <ClCompile Include="..\..\node\IncomingPacket.cpp" />      <ClCompile Include="..\..\node\InetAddress.cpp" /> -    <ClCompile Include="..\..\node\Logger.cpp" />      <ClCompile Include="..\..\node\Multicaster.cpp" />      <ClCompile Include="..\..\node\Network.cpp" />      <ClCompile Include="..\..\node\NetworkConfig.cpp" />      <ClCompile Include="..\..\node\Node.cpp" /> -    <ClCompile Include="..\..\node\NodeConfig.cpp" />      <ClCompile Include="..\..\node\OutboundMulticast.cpp" />      <ClCompile Include="..\..\node\Packet.cpp" />      <ClCompile Include="..\..\node\Peer.cpp" />      <ClCompile Include="..\..\node\Poly1305.cpp" /> -    <ClCompile Include="..\..\node\RoutingTable.cpp" />      <ClCompile Include="..\..\node\Salsa20.cpp" /> -    <ClCompile Include="..\..\node\Service.cpp" /> +    <ClCompile Include="..\..\node\SelfAwareness.cpp" />      <ClCompile Include="..\..\node\SHA512.cpp" /> -    <ClCompile Include="..\..\node\SoftwareUpdater.cpp" />      <ClCompile Include="..\..\node\Switch.cpp" />      <ClCompile Include="..\..\node\Topology.cpp" />      <ClCompile Include="..\..\node\Utils.cpp" /> -    <ClCompile Include="..\..\osnet\NativeSocketManager.cpp" /> -    <ClCompile Include="..\..\osnet\WindowsEthernetTap.cpp" /> -    <ClCompile Include="..\..\osnet\WindowsEthernetTapFactory.cpp" /> -    <ClCompile Include="..\..\osnet\WindowsRoutingTable.cpp" /> -    <ClCompile Include="..\..\testnet.cpp"> -      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> -      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild> -      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> -      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> -    </ClCompile> -    <ClCompile Include="..\..\testnet\SimNet.cpp"> -      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> -      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild> -      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> -      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> -    </ClCompile> -    <ClCompile Include="..\..\testnet\SimNetSocketManager.cpp"> -      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> -      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild> -      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> -      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> -    </ClCompile> -    <ClCompile Include="..\..\testnet\TestEthernetTap.cpp"> -      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> -      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild> -      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> -      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> -    </ClCompile> -    <ClCompile Include="..\..\testnet\TestEthernetTapFactory.cpp"> -      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> -      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild> -      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> -      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> -    </ClCompile> -    <ClCompile Include="..\..\testnet\TestRoutingTable.cpp"> +    <ClCompile Include="..\..\one.cpp" /> +    <ClCompile Include="..\..\osdep\Http.cpp" /> +    <ClCompile Include="..\..\osdep\OSUtils.cpp" /> +    <ClCompile Include="..\..\osdep\WindowsEthernetTap.cpp" /> +    <ClCompile Include="..\..\selftest.cpp">        <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>        <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>        <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>        <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>      </ClCompile> +    <ClCompile Include="..\..\service\ControlPlane.cpp" /> +    <ClCompile Include="..\..\service\OneService.cpp" />      <ClCompile Include="ServiceBase.cpp" />      <ClCompile Include="ServiceInstaller.cpp" />      <ClCompile Include="ZeroTierOneService.cpp" />    </ItemGroup>    <ItemGroup> -    <ClInclude Include="..\..\control\IpcConnection.hpp" /> -    <ClInclude Include="..\..\control\IpcListener.hpp" /> -    <ClInclude Include="..\..\control\NodeControlClient.hpp" /> -    <ClInclude Include="..\..\control\NodeControlService.hpp" /> +    <ClInclude Include="..\..\ext\http-parser\http_parser.h" /> +    <ClInclude Include="..\..\ext\json-parser\json.h" />      <ClInclude Include="..\..\ext\lz4\lz4.h" />      <ClInclude Include="..\..\include\ZeroTierOne.h" />      <ClInclude Include="..\..\node\Address.hpp" /> @@ -114,50 +76,39 @@      <ClInclude Include="..\..\node\Constants.hpp" />      <ClInclude Include="..\..\node\Defaults.hpp" />      <ClInclude Include="..\..\node\Dictionary.hpp" /> -    <ClInclude Include="..\..\node\EthernetTap.hpp" /> -    <ClInclude Include="..\..\node\EthernetTapFactory.hpp" /> -    <ClInclude Include="..\..\node\HttpClient.hpp" />      <ClInclude Include="..\..\node\Identity.hpp" />      <ClInclude Include="..\..\node\IncomingPacket.hpp" />      <ClInclude Include="..\..\node\InetAddress.hpp" /> -    <ClInclude Include="..\..\node\Logger.hpp" />      <ClInclude Include="..\..\node\MAC.hpp" />      <ClInclude Include="..\..\node\Multicaster.hpp" />      <ClInclude Include="..\..\node\MulticastGroup.hpp" />      <ClInclude Include="..\..\node\Mutex.hpp" />      <ClInclude Include="..\..\node\Network.hpp" />      <ClInclude Include="..\..\node\NetworkConfig.hpp" /> +    <ClInclude Include="..\..\node\NetworkController.hpp" />      <ClInclude Include="..\..\node\Node.hpp" /> -    <ClInclude Include="..\..\node\NodeConfig.hpp" />      <ClInclude Include="..\..\node\NonCopyable.hpp" />      <ClInclude Include="..\..\node\OutboundMulticast.hpp" />      <ClInclude Include="..\..\node\Packet.hpp" />      <ClInclude Include="..\..\node\Path.hpp" />      <ClInclude Include="..\..\node\Peer.hpp" />      <ClInclude Include="..\..\node\Poly1305.hpp" /> -    <ClInclude Include="..\..\node\RoutingTable.hpp" />      <ClInclude Include="..\..\node\RuntimeEnvironment.hpp" />      <ClInclude Include="..\..\node\Salsa20.hpp" /> -    <ClInclude Include="..\..\node\Service.hpp" /> +    <ClInclude Include="..\..\node\SelfAwareness.hpp" />      <ClInclude Include="..\..\node\SHA512.hpp" />      <ClInclude Include="..\..\node\SharedPtr.hpp" /> -    <ClInclude Include="..\..\node\Socket.hpp" /> -    <ClInclude Include="..\..\node\SocketManager.hpp" /> -    <ClInclude Include="..\..\node\SoftwareUpdater.hpp" />      <ClInclude Include="..\..\node\Switch.hpp" /> -    <ClInclude Include="..\..\node\Thread.hpp" />      <ClInclude Include="..\..\node\Topology.hpp" />      <ClInclude Include="..\..\node\Utils.hpp" /> -    <ClInclude Include="..\..\osnet\NativeSocketManager.hpp" /> -    <ClInclude Include="..\..\osnet\WindowsEthernetTap.hpp" /> -    <ClInclude Include="..\..\osnet\WindowsEthernetTapFactory.hpp" /> -    <ClInclude Include="..\..\osnet\WindowsRoutingTable.hpp" /> -    <ClInclude Include="..\..\testnet\MTQ.hpp" /> -    <ClInclude Include="..\..\testnet\SimNet.hpp" /> -    <ClInclude Include="..\..\testnet\SimNetSocketManager.hpp" /> -    <ClInclude Include="..\..\testnet\TestEthernetTap.hpp" /> -    <ClInclude Include="..\..\testnet\TestEthernetTapFactory.hpp" /> -    <ClInclude Include="..\..\testnet\TestRoutingTable.hpp" /> +    <ClInclude Include="..\..\osdep\Http.hpp" /> +    <ClInclude Include="..\..\osdep\OSUtils.hpp" /> +    <ClInclude Include="..\..\osdep\Phy.hpp" /> +    <ClInclude Include="..\..\osdep\Thread.hpp" /> +    <ClInclude Include="..\..\osdep\WindowsEthernetTap.hpp" /> +    <ClInclude Include="..\..\service\ControlPlane.hpp" /> +    <ClInclude Include="..\..\service\ControlPlaneSubsystem.hpp" /> +    <ClInclude Include="..\..\service\OneService.hpp" />      <ClInclude Include="..\..\version.h" />      <ClInclude Include="resource.h" />      <ClInclude Include="ServiceBase.h" /> @@ -240,11 +191,11 @@        <Optimization>Disabled</Optimization>        <SDLCheck>true</SDLCheck>        <AdditionalIncludeDirectories>$(SolutionDir)\ext\bin\libcrypto\include</AdditionalIncludeDirectories> -      <PreprocessorDefinitions>ZT_LOG_STDOUT;ZT_TRACE;%(PreprocessorDefinitions)</PreprocessorDefinitions> +      <PreprocessorDefinitions>NOMINMAX;ZT_TRACE;%(PreprocessorDefinitions)</PreprocessorDefinitions>      </ClCompile>      <Link>        <GenerateDebugInformation>true</GenerateDebugInformation> -      <AdditionalDependencies>wsock32.lib;ws2_32.lib;newdev.lib;winhttp.lib;Iphlpapi.lib;Rpcrt4.lib;%(AdditionalDependencies)</AdditionalDependencies> +      <AdditionalDependencies>wsock32.lib;ws2_32.lib;newdev.lib;Iphlpapi.lib;Rpcrt4.lib;%(AdditionalDependencies)</AdditionalDependencies>        <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>      </Link>    </ItemDefinitionGroup> @@ -254,11 +205,11 @@        <Optimization>Disabled</Optimization>        <SDLCheck>true</SDLCheck>        <AdditionalIncludeDirectories>$(SolutionDir)\ext\bin\libcrypto\include</AdditionalIncludeDirectories> -      <PreprocessorDefinitions>ZT_LOG_STDOUT;ZT_TRACE;%(PreprocessorDefinitions)</PreprocessorDefinitions> +      <PreprocessorDefinitions>NOMINMAX;ZT_TRACE;%(PreprocessorDefinitions)</PreprocessorDefinitions>      </ClCompile>      <Link>        <GenerateDebugInformation>true</GenerateDebugInformation> -      <AdditionalDependencies>wsock32.lib;ws2_32.lib;newdev.lib;winhttp.lib;Iphlpapi.lib;Rpcrt4.lib;%(AdditionalDependencies)</AdditionalDependencies> +      <AdditionalDependencies>wsock32.lib;ws2_32.lib;newdev.lib;Iphlpapi.lib;Rpcrt4.lib;%(AdditionalDependencies)</AdditionalDependencies>        <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>      </Link>    </ItemDefinitionGroup> @@ -270,7 +221,7 @@        <IntrinsicFunctions>true</IntrinsicFunctions>        <SDLCheck>true</SDLCheck>        <AdditionalIncludeDirectories>$(SolutionDir)\ext\bin\libcrypto\include</AdditionalIncludeDirectories> -      <PreprocessorDefinitions>ZT_OFFICIAL_RELEASE;ZT_AUTO_UPDATE;ZT_SALSA20_SSE;%(PreprocessorDefinitions)</PreprocessorDefinitions> +      <PreprocessorDefinitions>ZT_OFFICIAL_RELEASE;ZT_AUTO_UPDATE;ZT_SALSA20_SSE;NOMINMAX;%(PreprocessorDefinitions)</PreprocessorDefinitions>        <RuntimeLibrary>MultiThreaded</RuntimeLibrary>        <EnableEnhancedInstructionSet>NoExtensions</EnableEnhancedInstructionSet>        <StringPooling>true</StringPooling> @@ -282,7 +233,7 @@        <GenerateDebugInformation>true</GenerateDebugInformation>        <EnableCOMDATFolding>true</EnableCOMDATFolding>        <OptimizeReferences>true</OptimizeReferences> -      <AdditionalDependencies>wsock32.lib;ws2_32.lib;newdev.lib;winhttp.lib;Iphlpapi.lib;Rpcrt4.lib;%(AdditionalDependencies)</AdditionalDependencies> +      <AdditionalDependencies>wsock32.lib;ws2_32.lib;newdev.lib;Iphlpapi.lib;Rpcrt4.lib;%(AdditionalDependencies)</AdditionalDependencies>        <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>      </Link>    </ItemDefinitionGroup> @@ -294,7 +245,7 @@        <IntrinsicFunctions>true</IntrinsicFunctions>        <SDLCheck>true</SDLCheck>        <AdditionalIncludeDirectories>$(SolutionDir)\ext\bin\libcrypto\include</AdditionalIncludeDirectories> -      <PreprocessorDefinitions>ZT_OFFICIAL_RELEASE;ZT_AUTO_UPDATE;ZT_SALSA20_SSE;%(PreprocessorDefinitions)</PreprocessorDefinitions> +      <PreprocessorDefinitions>ZT_OFFICIAL_RELEASE;ZT_AUTO_UPDATE;ZT_SALSA20_SSE;NOMINMAX;%(PreprocessorDefinitions)</PreprocessorDefinitions>        <RuntimeLibrary>MultiThreaded</RuntimeLibrary>        <EnableEnhancedInstructionSet>NotSet</EnableEnhancedInstructionSet>        <StringPooling>true</StringPooling> @@ -306,7 +257,7 @@        <GenerateDebugInformation>true</GenerateDebugInformation>        <EnableCOMDATFolding>true</EnableCOMDATFolding>        <OptimizeReferences>true</OptimizeReferences> -      <AdditionalDependencies>wsock32.lib;ws2_32.lib;newdev.lib;winhttp.lib;Iphlpapi.lib;Rpcrt4.lib;%(AdditionalDependencies)</AdditionalDependencies> +      <AdditionalDependencies>wsock32.lib;ws2_32.lib;newdev.lib;Iphlpapi.lib;Rpcrt4.lib;%(AdditionalDependencies)</AdditionalDependencies>        <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>      </Link>    </ItemDefinitionGroup> diff --git a/windows/ZeroTierOne/ZeroTierOne.vcxproj.filters b/windows/ZeroTierOne/ZeroTierOne.vcxproj.filters index 8771af7e..7ed585ad 100644 --- a/windows/ZeroTierOne/ZeroTierOne.vcxproj.filters +++ b/windows/ZeroTierOne/ZeroTierOne.vcxproj.filters @@ -16,36 +16,78 @@      <Filter Include="Source Files\node">        <UniqueIdentifier>{67b1c0f8-b018-4169-9c14-7032ed12c786}</UniqueIdentifier>      </Filter> -    <Filter Include="Source Files\control"> -      <UniqueIdentifier>{64683235-3edd-443c-828c-c8e657d3bfd7}</UniqueIdentifier> -    </Filter> -    <Filter Include="Source Files\osnet"> -      <UniqueIdentifier>{c8a3c54f-bb49-4c3f-b406-5177bc14a447}</UniqueIdentifier> -    </Filter> -    <Filter Include="Source Files\testnet"> -      <UniqueIdentifier>{142d7af3-1770-44d7-bd87-d509bb25be1e}</UniqueIdentifier> -    </Filter>      <Filter Include="Header Files\include">        <UniqueIdentifier>{40761a4c-e8db-4a91-9cab-7afef332f4a8}</UniqueIdentifier>      </Filter> -    <Filter Include="Header Files\control"> -      <UniqueIdentifier>{066d9967-d4f3-4b41-b9a8-b18ea763aca3}</UniqueIdentifier> -    </Filter>      <Filter Include="Header Files\node">        <UniqueIdentifier>{da3b8126-840c-45db-8abe-9d7e7976f8be}</UniqueIdentifier>      </Filter> -    <Filter Include="Header Files\osnet"> -      <UniqueIdentifier>{173e391d-1519-41b8-960b-9b8dad083827}</UniqueIdentifier> +    <Filter Include="Source Files\osdep"> +      <UniqueIdentifier>{6054dfae-4ed2-4d69-8cf5-d6f27646f2d7}</UniqueIdentifier> +    </Filter> +    <Filter Include="Source Files\service"> +      <UniqueIdentifier>{9944293a-4a1a-40e9-b92a-eff31fe87e2c}</UniqueIdentifier> +    </Filter> +    <Filter Include="Header Files\osdep"> +      <UniqueIdentifier>{ca21bd6b-ff4e-4f9e-bedd-c9f603d2d0d6}</UniqueIdentifier> +    </Filter> +    <Filter Include="Header Files\service"> +      <UniqueIdentifier>{e1743b3c-1d18-47f1-ab5a-f5703c19f1df}</UniqueIdentifier> +    </Filter> +    <Filter Include="Header Files\ext"> +      <UniqueIdentifier>{71865460-d693-4c73-84f6-dbff42f49df6}</UniqueIdentifier> +    </Filter> +    <Filter Include="Header Files\ext\http-parser"> +      <UniqueIdentifier>{17ae9a01-d39f-4c6d-a800-8f2cd0804c96}</UniqueIdentifier> +    </Filter> +    <Filter Include="Header Files\ext\json-parser"> +      <UniqueIdentifier>{736aad7f-8d95-4602-88df-3bb970869c6f}</UniqueIdentifier> +    </Filter> +    <Filter Include="Header Files\ext\lz4"> +      <UniqueIdentifier>{3636527c-bc03-4852-bd3c-20ee25e56d82}</UniqueIdentifier> +    </Filter> +    <Filter Include="Source Files\ext"> +      <UniqueIdentifier>{7784af31-5b60-4300-b07e-44cf864c54db}</UniqueIdentifier>      </Filter> -    <Filter Include="Header Files\testnet"> -      <UniqueIdentifier>{6f36ddd5-a2e1-48e1-9543-1ab975f91780}</UniqueIdentifier> +    <Filter Include="Source Files\ext\lz4"> +      <UniqueIdentifier>{29164186-10fc-45f5-b253-6d03f0ddd4db}</UniqueIdentifier> +    </Filter> +    <Filter Include="Source Files\ext\http-parser"> +      <UniqueIdentifier>{f8a1c208-15b8-4d85-a4cb-11d2b82f2d1e}</UniqueIdentifier> +    </Filter> +    <Filter Include="Source Files\ext\json-parser"> +      <UniqueIdentifier>{da28e961-1761-41d8-9a59-65b00dfb1302}</UniqueIdentifier> +    </Filter> +    <Filter Include="Source Files\windows"> +      <UniqueIdentifier>{43f75f84-c70d-4d44-a0ef-28a7a399abd4}</UniqueIdentifier> +    </Filter> +    <Filter Include="Source Files\windows\ZeroTierOne"> +      <UniqueIdentifier>{0da07a2f-8922-4827-ac51-29ca3f30f881}</UniqueIdentifier> +    </Filter> +    <Filter Include="Header Files\windows"> +      <UniqueIdentifier>{b74916eb-bb6c-4449-a2a2-fa0b17f60121}</UniqueIdentifier> +    </Filter> +    <Filter Include="Header Files\windows\ZeroTierOne"> +      <UniqueIdentifier>{bf604491-14c4-4a74-81a6-6105d07c5c7c}</UniqueIdentifier>      </Filter>    </ItemGroup>    <ItemGroup> -    <ClCompile Include="..\..\ext\lz4\lz4.c"> -      <Filter>Source Files</Filter> +    <ClCompile Include="..\..\service\ControlPlane.cpp"> +      <Filter>Source Files\service</Filter>      </ClCompile> -    <ClCompile Include="ZeroTierOneService.cpp"> +    <ClCompile Include="..\..\service\OneService.cpp"> +      <Filter>Source Files\service</Filter> +    </ClCompile> +    <ClCompile Include="..\..\osdep\WindowsEthernetTap.cpp"> +      <Filter>Source Files\osdep</Filter> +    </ClCompile> +    <ClCompile Include="..\..\osdep\Http.cpp"> +      <Filter>Source Files\osdep</Filter> +    </ClCompile> +    <ClCompile Include="..\..\osdep\OSUtils.cpp"> +      <Filter>Source Files\osdep</Filter> +    </ClCompile> +    <ClCompile Include="..\..\selftest.cpp">        <Filter>Source Files</Filter>      </ClCompile>      <ClCompile Include="..\..\node\C25519.cpp"> @@ -60,9 +102,6 @@      <ClCompile Include="..\..\node\Dictionary.cpp">        <Filter>Source Files\node</Filter>      </ClCompile> -    <ClCompile Include="..\..\node\HttpClient.cpp"> -      <Filter>Source Files\node</Filter> -    </ClCompile>      <ClCompile Include="..\..\node\Identity.cpp">        <Filter>Source Files\node</Filter>      </ClCompile> @@ -72,9 +111,6 @@      <ClCompile Include="..\..\node\InetAddress.cpp">        <Filter>Source Files\node</Filter>      </ClCompile> -    <ClCompile Include="..\..\node\Logger.cpp"> -      <Filter>Source Files\node</Filter> -    </ClCompile>      <ClCompile Include="..\..\node\Multicaster.cpp">        <Filter>Source Files\node</Filter>      </ClCompile> @@ -87,9 +123,6 @@      <ClCompile Include="..\..\node\Node.cpp">        <Filter>Source Files\node</Filter>      </ClCompile> -    <ClCompile Include="..\..\node\NodeConfig.cpp"> -      <Filter>Source Files\node</Filter> -    </ClCompile>      <ClCompile Include="..\..\node\OutboundMulticast.cpp">        <Filter>Source Files\node</Filter>      </ClCompile> @@ -102,21 +135,15 @@      <ClCompile Include="..\..\node\Poly1305.cpp">        <Filter>Source Files\node</Filter>      </ClCompile> -    <ClCompile Include="..\..\node\RoutingTable.cpp"> -      <Filter>Source Files\node</Filter> -    </ClCompile>      <ClCompile Include="..\..\node\Salsa20.cpp">        <Filter>Source Files\node</Filter>      </ClCompile> -    <ClCompile Include="..\..\node\Service.cpp"> +    <ClCompile Include="..\..\node\SelfAwareness.cpp">        <Filter>Source Files\node</Filter>      </ClCompile>      <ClCompile Include="..\..\node\SHA512.cpp">        <Filter>Source Files\node</Filter>      </ClCompile> -    <ClCompile Include="..\..\node\SoftwareUpdater.cpp"> -      <Filter>Source Files\node</Filter> -    </ClCompile>      <ClCompile Include="..\..\node\Switch.cpp">        <Filter>Source Files\node</Filter>      </ClCompile> @@ -126,118 +153,61 @@      <ClCompile Include="..\..\node\Utils.cpp">        <Filter>Source Files\node</Filter>      </ClCompile> -    <ClCompile Include="..\..\control\IpcConnection.cpp"> -      <Filter>Source Files\control</Filter> -    </ClCompile> -    <ClCompile Include="..\..\control\IpcListener.cpp"> -      <Filter>Source Files\control</Filter> -    </ClCompile> -    <ClCompile Include="..\..\control\NodeControlClient.cpp"> -      <Filter>Source Files\control</Filter> -    </ClCompile> -    <ClCompile Include="..\..\control\NodeControlService.cpp"> -      <Filter>Source Files\control</Filter> -    </ClCompile> -    <ClCompile Include="..\..\osnet\NativeSocketManager.cpp"> -      <Filter>Source Files\osnet</Filter> -    </ClCompile> -    <ClCompile Include="..\..\osnet\WindowsEthernetTap.cpp"> -      <Filter>Source Files\osnet</Filter> -    </ClCompile> -    <ClCompile Include="..\..\osnet\WindowsEthernetTapFactory.cpp"> -      <Filter>Source Files\osnet</Filter> -    </ClCompile> -    <ClCompile Include="..\..\osnet\WindowsRoutingTable.cpp"> -      <Filter>Source Files\osnet</Filter> -    </ClCompile> -    <ClCompile Include="..\..\testnet\SimNet.cpp"> -      <Filter>Source Files\testnet</Filter> -    </ClCompile> -    <ClCompile Include="..\..\testnet\SimNetSocketManager.cpp"> -      <Filter>Source Files\testnet</Filter> +    <ClCompile Include="..\..\ext\lz4\lz4.c"> +      <Filter>Source Files\ext\lz4</Filter>      </ClCompile> -    <ClCompile Include="..\..\testnet\TestEthernetTap.cpp"> -      <Filter>Source Files\testnet</Filter> +    <ClCompile Include="..\..\ext\http-parser\http_parser.c"> +      <Filter>Source Files\ext\http-parser</Filter>      </ClCompile> -    <ClCompile Include="..\..\testnet\TestEthernetTapFactory.cpp"> -      <Filter>Source Files\testnet</Filter> +    <ClCompile Include="..\..\ext\json-parser\json.c"> +      <Filter>Source Files\ext\json-parser</Filter>      </ClCompile> -    <ClCompile Include="..\..\testnet\TestRoutingTable.cpp"> -      <Filter>Source Files\testnet</Filter> +    <ClCompile Include="..\..\one.cpp"> +      <Filter>Source Files</Filter>      </ClCompile>      <ClCompile Include="ServiceBase.cpp"> -      <Filter>Source Files</Filter> +      <Filter>Source Files\windows\ZeroTierOne</Filter>      </ClCompile>      <ClCompile Include="ServiceInstaller.cpp"> -      <Filter>Source Files</Filter> +      <Filter>Source Files\windows\ZeroTierOne</Filter>      </ClCompile> -    <ClCompile Include="..\..\testnet.cpp"> -      <Filter>Source Files</Filter> -    </ClCompile> -    <ClCompile Include="..\..\main.cpp"> -      <Filter>Source Files</Filter> +    <ClCompile Include="ZeroTierOneService.cpp"> +      <Filter>Source Files\windows\ZeroTierOne</Filter>      </ClCompile>    </ItemGroup>    <ItemGroup>      <ClInclude Include="resource.h">        <Filter>Header Files</Filter>      </ClInclude> -    <ClInclude Include="ServiceBase.h"> -      <Filter>Header Files</Filter> -    </ClInclude> -    <ClInclude Include="ServiceInstaller.h"> -      <Filter>Header Files</Filter> -    </ClInclude> -    <ClInclude Include="ZeroTierOneService.h"> -      <Filter>Header Files</Filter> -    </ClInclude>      <ClInclude Include="..\..\version.h">        <Filter>Header Files</Filter>      </ClInclude> -    <ClInclude Include="..\..\testnet\MTQ.hpp"> -      <Filter>Header Files\testnet</Filter> -    </ClInclude> -    <ClInclude Include="..\..\testnet\SimNet.hpp"> -      <Filter>Header Files\testnet</Filter> -    </ClInclude> -    <ClInclude Include="..\..\testnet\SimNetSocketManager.hpp"> -      <Filter>Header Files\testnet</Filter> -    </ClInclude> -    <ClInclude Include="..\..\testnet\TestEthernetTap.hpp"> -      <Filter>Header Files\testnet</Filter> -    </ClInclude> -    <ClInclude Include="..\..\testnet\TestEthernetTapFactory.hpp"> -      <Filter>Header Files\testnet</Filter> -    </ClInclude> -    <ClInclude Include="..\..\testnet\TestRoutingTable.hpp"> -      <Filter>Header Files\testnet</Filter> -    </ClInclude>      <ClInclude Include="..\..\include\ZeroTierOne.h">        <Filter>Header Files\include</Filter>      </ClInclude> -    <ClInclude Include="..\..\control\IpcConnection.hpp"> -      <Filter>Header Files\control</Filter> +    <ClInclude Include="..\..\osdep\Http.hpp"> +      <Filter>Header Files\osdep</Filter>      </ClInclude> -    <ClInclude Include="..\..\control\IpcListener.hpp"> -      <Filter>Header Files\control</Filter> +    <ClInclude Include="..\..\osdep\OSUtils.hpp"> +      <Filter>Header Files\osdep</Filter>      </ClInclude> -    <ClInclude Include="..\..\control\NodeControlClient.hpp"> -      <Filter>Header Files\control</Filter> +    <ClInclude Include="..\..\osdep\Phy.hpp"> +      <Filter>Header Files\osdep</Filter>      </ClInclude> -    <ClInclude Include="..\..\control\NodeControlService.hpp"> -      <Filter>Header Files\control</Filter> +    <ClInclude Include="..\..\osdep\Thread.hpp"> +      <Filter>Header Files\osdep</Filter>      </ClInclude> -    <ClInclude Include="..\..\osnet\NativeSocketManager.hpp"> -      <Filter>Header Files\osnet</Filter> +    <ClInclude Include="..\..\osdep\WindowsEthernetTap.hpp"> +      <Filter>Header Files\osdep</Filter>      </ClInclude> -    <ClInclude Include="..\..\osnet\WindowsEthernetTap.hpp"> -      <Filter>Header Files\osnet</Filter> +    <ClInclude Include="..\..\service\ControlPlane.hpp"> +      <Filter>Header Files\service</Filter>      </ClInclude> -    <ClInclude Include="..\..\osnet\WindowsEthernetTapFactory.hpp"> -      <Filter>Header Files\osnet</Filter> +    <ClInclude Include="..\..\service\ControlPlaneSubsystem.hpp"> +      <Filter>Header Files\service</Filter>      </ClInclude> -    <ClInclude Include="..\..\osnet\WindowsRoutingTable.hpp"> -      <Filter>Header Files\osnet</Filter> +    <ClInclude Include="..\..\service\OneService.hpp"> +      <Filter>Header Files\service</Filter>      </ClInclude>      <ClInclude Include="..\..\node\Address.hpp">        <Filter>Header Files\node</Filter> @@ -275,15 +245,6 @@      <ClInclude Include="..\..\node\Dictionary.hpp">        <Filter>Header Files\node</Filter>      </ClInclude> -    <ClInclude Include="..\..\node\EthernetTap.hpp"> -      <Filter>Header Files\node</Filter> -    </ClInclude> -    <ClInclude Include="..\..\node\EthernetTapFactory.hpp"> -      <Filter>Header Files\node</Filter> -    </ClInclude> -    <ClInclude Include="..\..\node\HttpClient.hpp"> -      <Filter>Header Files\node</Filter> -    </ClInclude>      <ClInclude Include="..\..\node\Identity.hpp">        <Filter>Header Files\node</Filter>      </ClInclude> @@ -293,9 +254,6 @@      <ClInclude Include="..\..\node\InetAddress.hpp">        <Filter>Header Files\node</Filter>      </ClInclude> -    <ClInclude Include="..\..\node\Logger.hpp"> -      <Filter>Header Files\node</Filter> -    </ClInclude>      <ClInclude Include="..\..\node\MAC.hpp">        <Filter>Header Files\node</Filter>      </ClInclude> @@ -314,10 +272,10 @@      <ClInclude Include="..\..\node\NetworkConfig.hpp">        <Filter>Header Files\node</Filter>      </ClInclude> -    <ClInclude Include="..\..\node\Node.hpp"> +    <ClInclude Include="..\..\node\NetworkController.hpp">        <Filter>Header Files\node</Filter>      </ClInclude> -    <ClInclude Include="..\..\node\NodeConfig.hpp"> +    <ClInclude Include="..\..\node\Node.hpp">        <Filter>Header Files\node</Filter>      </ClInclude>      <ClInclude Include="..\..\node\NonCopyable.hpp"> @@ -338,16 +296,13 @@      <ClInclude Include="..\..\node\Poly1305.hpp">        <Filter>Header Files\node</Filter>      </ClInclude> -    <ClInclude Include="..\..\node\RoutingTable.hpp"> -      <Filter>Header Files\node</Filter> -    </ClInclude>      <ClInclude Include="..\..\node\RuntimeEnvironment.hpp">        <Filter>Header Files\node</Filter>      </ClInclude>      <ClInclude Include="..\..\node\Salsa20.hpp">        <Filter>Header Files\node</Filter>      </ClInclude> -    <ClInclude Include="..\..\node\Service.hpp"> +    <ClInclude Include="..\..\node\SelfAwareness.hpp">        <Filter>Header Files\node</Filter>      </ClInclude>      <ClInclude Include="..\..\node\SHA512.hpp"> @@ -356,21 +311,9 @@      <ClInclude Include="..\..\node\SharedPtr.hpp">        <Filter>Header Files\node</Filter>      </ClInclude> -    <ClInclude Include="..\..\node\Socket.hpp"> -      <Filter>Header Files\node</Filter> -    </ClInclude> -    <ClInclude Include="..\..\node\SocketManager.hpp"> -      <Filter>Header Files\node</Filter> -    </ClInclude> -    <ClInclude Include="..\..\node\SoftwareUpdater.hpp"> -      <Filter>Header Files\node</Filter> -    </ClInclude>      <ClInclude Include="..\..\node\Switch.hpp">        <Filter>Header Files\node</Filter>      </ClInclude> -    <ClInclude Include="..\..\node\Thread.hpp"> -      <Filter>Header Files\node</Filter> -    </ClInclude>      <ClInclude Include="..\..\node\Topology.hpp">        <Filter>Header Files\node</Filter>      </ClInclude> @@ -378,7 +321,22 @@        <Filter>Header Files\node</Filter>      </ClInclude>      <ClInclude Include="..\..\ext\lz4\lz4.h"> -      <Filter>Header Files</Filter> +      <Filter>Header Files\ext\lz4</Filter> +    </ClInclude> +    <ClInclude Include="..\..\ext\json-parser\json.h"> +      <Filter>Header Files\ext\json-parser</Filter> +    </ClInclude> +    <ClInclude Include="..\..\ext\http-parser\http_parser.h"> +      <Filter>Header Files\ext\http-parser</Filter> +    </ClInclude> +    <ClInclude Include="ServiceBase.h"> +      <Filter>Header Files\windows\ZeroTierOne</Filter> +    </ClInclude> +    <ClInclude Include="ServiceInstaller.h"> +      <Filter>Header Files\windows\ZeroTierOne</Filter> +    </ClInclude> +    <ClInclude Include="ZeroTierOneService.h"> +      <Filter>Header Files\windows\ZeroTierOne</Filter>      </ClInclude>    </ItemGroup>    <ItemGroup> diff --git a/windows/ZeroTierOne/ZeroTierOneService.cpp b/windows/ZeroTierOne/ZeroTierOneService.cpp index abae3aff..e5426dc2 100644 --- a/windows/ZeroTierOne/ZeroTierOneService.cpp +++ b/windows/ZeroTierOne/ZeroTierOneService.cpp @@ -34,15 +34,13 @@  #include "ZeroTierOneService.h" -#include "../../node/Defaults.hpp" -#include "../../node/Utils.hpp" - -#include "../../control/NodeControlClient.hpp" -#include "../../control/NodeControlService.hpp" +#include "../../version.h" +#include "../../include/ZeroTierOne.h" -#include "../../osdep/WindowsEthernetTapFactory.hpp" -#include "../../osdep/WindowsRoutingTable.hpp" -#include "../../osdep/NativeSocketManager.hpp" +#include "../../node/Constants.hpp" +#include "../../node/Utils.hpp" +#include "../../osdep/OSUtils.hpp" +#include "../../service/OneService.hpp"  #pragma endregion // Includes @@ -53,7 +51,7 @@ ZeroTier::Mutex SVCDBGfile_m;  ZeroTierOneService::ZeroTierOneService() :  	CServiceBase(ZT_SERVICE_NAME,TRUE,TRUE,FALSE), -	_node((ZeroTier::Node *)0) +	_service((ZeroTier::OneService *)0)  {  #ifdef ZT_DEBUG_SERVICE  	SVCDBGfile_m.lock(); @@ -86,6 +84,41 @@ void ZeroTierOneService::threadMain()  restart_node:  	try { +		{ +			ZeroTier::Mutex::Lock _l(_lock); +			delete _service; +			_service = (ZeroTier::OneService *)0; // in case newInstance() fails +			_service = ZeroTier::OneService::newInstance( +				ZeroTier::OneService::platformDefaultHomePath().c_str(), +				ZT1_DEFAULT_PORT); +		} +		switch(_service->run()) { +			case ZeroTier::OneService::ONE_UNRECOVERABLE_ERROR: { +				std::string err("ZeroTier One encountered an unrecoverable error: "); +				err.append(_service->fatalErrorMessage()); +				err.append(" (restarting in 5 seconds)"); +				WriteEventLogEntry(const_cast <PSTR>(err.c_str()),EVENTLOG_ERROR_TYPE); +				Sleep(5000); +			}	goto restart_node; + +			case ZeroTier::OneService::ONE_IDENTITY_COLLISION: { +				std::string homeDir(ZeroTier::OneService::platformDefaultHomePath()); +				delete _service; +				_service = (ZeroTier::OneService *)0; +				std::string oldid; +				ZeroTier::OSUtils::readFile((homeDir + ZT_PATH_SEPARATOR_S + "identity.secret").c_str(),oldid); +				if (oldid.length()) { +					ZeroTier::OSUtils::writeFile((homeDir + ZT_PATH_SEPARATOR_S + "identity.secret.saved_after_collision").c_str(),oldid); +					ZeroTier::OSUtils::rm((homeDir + ZT_PATH_SEPARATOR_S + "identity.secret").c_str()); +					ZeroTier::OSUtils::rm((homeDir + ZT_PATH_SEPARATOR_S + "identity.public").c_str()); +				} +			}	goto restart_node; + +			default: // normal termination +				break; +		} + +#if 0  		std::string authToken(ZeroTier::NodeControlClient::getAuthToken((ZeroTier::ZT_DEFAULTS.defaultHomePath + ZT_PATH_SEPARATOR_S + "authtoken.secret").c_str(),true));  		ZeroTier::WindowsEthernetTapFactory tapFactory(ZeroTier::ZT_DEFAULTS.defaultHomePath.c_str()); @@ -154,6 +187,7 @@ restart_node:  				break;  		} +#endif  	} catch ( ... ) {  		// sanity check, shouldn't happen since Node::run() should catch all its own errors  		// could also happen if we're out of memory though! @@ -164,17 +198,19 @@ restart_node:  	{  		ZeroTier::Mutex::Lock _l(_lock); -		delete _node; -		_node = (ZeroTier::Node *)0; +		delete _service; +		_service = (ZeroTier::OneService *)0;  	}  }  bool ZeroTierOneService::doStartUpgrade(const std::string &msiPath)  { -	std::string msiLog(ZeroTier::ZT_DEFAULTS.defaultHomePath + "\\LastUpdateLog.txt"); -	ZeroTier::Utils::rm(msiLog); +	std::string homePath(ZeroTier::OneService::platformDefaultHomePath()); -	std::string bat(ZeroTier::ZT_DEFAULTS.defaultHomePath + "\\InstallAndRestartService.bat"); +	std::string msiLog(homePath + "\\LastUpdateLog.txt"); +	ZeroTier::OSUtils::rm(msiLog); + +	std::string bat(homePath + "\\InstallAndRestartService.bat");  	FILE *batf = fopen(bat.c_str(),"wb");  	if (!batf)  		return false; @@ -210,10 +246,11 @@ void ZeroTierOneService::OnStop()  	ZT_SVCDBG("ZeroTierOneService::OnStop()\r\n");  	_lock.lock(); -	ZeroTier::Node *n = _node; +	ZeroTier::OneService *s = _service;  	_lock.unlock(); -	if (n) { -		n->terminate(ZeroTier::Node::NODE_NORMAL_TERMINATION,"Windows service stopped"); + +	if (s) { +		s->terminate();  		ZeroTier::Thread::join(_thread);  	}  } diff --git a/windows/ZeroTierOne/ZeroTierOneService.h b/windows/ZeroTierOne/ZeroTierOneService.h index bfc835f2..1b97fd46 100644 --- a/windows/ZeroTierOne/ZeroTierOneService.h +++ b/windows/ZeroTierOne/ZeroTierOneService.h @@ -33,11 +33,9 @@  #include <string> -#include "../../node/Node.hpp" -#include "../../node/Defaults.hpp" -#include "../../node/Thread.hpp"  #include "../../node/Mutex.hpp" -#include "../../node/Utils.hpp" +#include "../../osdep/Thread.hpp" +#include "../../service/OneService.hpp"  // Uncomment to make debugging Windows services suck slightly less hard.  //#define ZT_DEBUG_SERVICE "C:\\ZeroTierOneServiceDebugLog.txt" @@ -79,7 +77,7 @@ protected:  	virtual void OnShutdown();  private: -	ZeroTier::Node *volatile _node; +	ZeroTier::OneService *volatile _service;  	ZeroTier::Mutex _lock;  	ZeroTier::Thread _thread;  }; | 
