Compare commits
210 Commits
Author | SHA1 | Date | |
---|---|---|---|
5293dfc1a7 | |||
2a918254f6 | |||
0f3070033f | |||
887129ccc0 | |||
511b8c04ea | |||
a174e42b3b | |||
0ad6f61e15 | |||
5cffd63cf5 | |||
3215cc0cc7 | |||
97958040a3 | |||
4f69180e3d | |||
232b374488 | |||
b049b7eeb8 | |||
4d67075ff4 | |||
af7bbb5ae4 | |||
b0a7c5fd16 | |||
53845c6abe | |||
609d55cfeb | |||
a2cab07a30 | |||
831dcf680c | |||
52b29a48b8 | |||
8304e666a3 | |||
05d51ce6b6 | |||
4ed294171e | |||
db34e71705 | |||
280e9206f2 | |||
47b602e1fa | |||
19c523509b | |||
a254dd527a | |||
6f92e82598 | |||
5e7f55880a | |||
84fae77ed3 | |||
48ef747388 | |||
4bd38d5d89 | |||
ce2cc15cc6 | |||
4ef4ec6f31 | |||
358dd021db | |||
d0d0174576 | |||
b44aeb7a79 | |||
4c4cb35bce | |||
0e7a9c7448 | |||
0d905f414e | |||
4fce7f58e1 | |||
174baa36c1 | |||
67805dc9d1 | |||
83ad0ef45d | |||
f144b85047 | |||
b55ddd7d86 | |||
b96ebfbce4 | |||
0b7b16396a | |||
12ef3059e9 | |||
1994da974a | |||
2862faba73 | |||
ddf6ce6997 | |||
e1707cfb01 | |||
b00f379655 | |||
44e02e51e3 | |||
1f6716b279 | |||
71976a8a0b | |||
78478a203f | |||
682dc048e9 | |||
51fa08cc71 | |||
2e9f073e94 | |||
dd9cd83400 | |||
d113388a69 | |||
d62089d5bd | |||
a6bdb42ece | |||
7897d0716c | |||
842f46dac8 | |||
b2373c10c7 | |||
3f4afdcb9a | |||
45ee84f9ac | |||
96b104f0a6 | |||
8b8690c71a | |||
d945ccac73 | |||
63db62453a | |||
a7dc7d2525 | |||
ae0085cfdf | |||
fdc1e5cb73 | |||
9671daecf4 | |||
7d53ec52b7 | |||
709a9e8709 | |||
e8ff739ca5 | |||
5b452a25fe | |||
90e21bd6e6 | |||
8b9d99a944 | |||
c81af549bf | |||
1286bd0b87 | |||
f0e2d2d40d | |||
3fc0f89291 | |||
96fede14ed | |||
aadd1c8472 | |||
14726b14d4 | |||
9c50c949b1 | |||
61d3ef43ad | |||
152e3a9176 | |||
ddaf4cc598 | |||
8c2225992e | |||
dedaee0693 | |||
fdb1340b9d | |||
f98996c13d | |||
0aab5f2e94 | |||
8d42db2f56 | |||
4dad574377 | |||
cd0a99c518 | |||
3bd2d1fd09 | |||
d4c01a5345 | |||
6e97a04bfe | |||
75488ba870 | |||
e2eb41e811 | |||
e8b1e157d9 | |||
6511d826a0 | |||
33e765adcd | |||
5b02352f1a | |||
5195b79eed | |||
d400901c52 | |||
570eb83558 | |||
db056f5150 | |||
1d558c939e | |||
5c0299197b | |||
383a85c18b | |||
3fa48c3650 | |||
c40f71462f | |||
bef455e5a6 | |||
737f51b815 | |||
7706e54294 | |||
d2a0c034c1 | |||
1290d83b9d | |||
b2edd74270 | |||
0a280975fb | |||
1e9e5a99c3 | |||
41c2be77f5 | |||
4331de8605 | |||
bacd4fd8d8 | |||
18184a2762 | |||
fb8ca2de24 | |||
248e15641a | |||
a943a14d0f | |||
04e6b7064f | |||
3e04ca5181 | |||
017766cb29 | |||
213042339b | |||
4da7785490 | |||
7caa4b12a6 | |||
2282a2c45f | |||
9d0e261bbe | |||
e5e5f1c63e | |||
1c295360fc | |||
0daa0579fe | |||
b908ff3aa9 | |||
4af1bdc935 | |||
a18fb7826c | |||
d8cc9636b5 | |||
f4e8ba88ae | |||
9e9648c924 | |||
a75008891b | |||
72398339d3 | |||
6addc49df2 | |||
c4fc8d184a | |||
a2a4d75745 | |||
b3291ff8b1 | |||
5e99c8e1c7 | |||
14e48f9c8a | |||
dfa8115883 | |||
b49624fc28 | |||
08a67c561a | |||
d3760d33ca | |||
8b66c7ad8d | |||
6f4df3dfab | |||
f05d3f8243 | |||
1cc7b1a3a0 | |||
33612b556c | |||
b592ad0569 | |||
68729cdcd9 | |||
32254864d5 | |||
5a7827e85e | |||
6db816cd60 | |||
840e055bf6 | |||
40193b7a68 | |||
98fa1a09a0 | |||
8d68795461 | |||
059710d83c | |||
fac33ee0b1 | |||
55b8259fe9 | |||
bbd5aa1490 | |||
6fb5cb88d2 | |||
a459823beb | |||
9058dc75d9 | |||
ab3ffc63f7 | |||
24a02e5adf | |||
b2d939011f | |||
2ce0c5d259 | |||
f3cc5b6064 | |||
8a093c645e | |||
35fd9fbbac | |||
dfd26f214d | |||
009cd36fe2 | |||
592d53d8bc | |||
e10923c7c2 | |||
d66ad98a49 | |||
2e8bd4403f | |||
40ee89a04a | |||
0e69fb175c | |||
8233992b76 | |||
f88b966762 | |||
5a82dc2a25 | |||
638f2cf18d | |||
38a7354ad9 | |||
672afbb918 | |||
ec908bbfe9 |
3
.gitmodules
vendored
3
.gitmodules
vendored
@ -7,3 +7,6 @@
|
|||||||
[submodule "lib/wxExtend"]
|
[submodule "lib/wxExtend"]
|
||||||
path = lib/wxExtend
|
path = lib/wxExtend
|
||||||
url = https://github.com/Amebis/wxExtend.git
|
url = https://github.com/Amebis/wxExtend.git
|
||||||
|
[submodule "lib/stdex"]
|
||||||
|
path = lib/stdex
|
||||||
|
url = https://github.com/Amebis/stdex.git
|
||||||
|
@ -1,14 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ImportGroup Label="PropertySheets" />
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup>
|
|
||||||
<OutDir>..\output\$(Platform).$(Configuration)\</OutDir>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup>
|
|
||||||
<ClCompile>
|
|
||||||
<AdditionalIncludeDirectories>..\lib\Events\build\temp\Events.$(Platform).$(Configuration).$(PlatformToolset);..\lib\WinStd\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
</ClCompile>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup />
|
|
||||||
</Project>
|
|
Binary file not shown.
@ -1,4 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
<ProjectConfiguration Include="Debug|ARM64">
|
<ProjectConfiguration Include="Debug|ARM64">
|
||||||
@ -28,116 +28,46 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<PropertyGroup Label="Globals">
|
<PropertyGroup Label="Globals">
|
||||||
<ProjectGuid>{2D3CE079-7EB1-4F47-B79E-F0310671ECCB}</ProjectGuid>
|
<ProjectGuid>{2D3CE079-7EB1-4F47-B79E-F0310671ECCB}</ProjectGuid>
|
||||||
<Keyword>Win32Proj</Keyword>
|
|
||||||
<RootNamespace>CredWrite</RootNamespace>
|
<RootNamespace>CredWrite</RootNamespace>
|
||||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
<PropertyGroup Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Label="Configuration" Condition="'$(Configuration)'=='Debug'">
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
<PropertyGroup Label="Configuration" Condition="'$(Configuration)'=='Release'">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
<PropertyGroup Label="Configuration" Condition="'$(Platform)'=='ARM64'">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
<ImportGroup Label="ExtensionSettings">
|
<ImportGroup Label="ExtensionSettings" />
|
||||||
</ImportGroup>
|
<ImportGroup Label="PropertySheets">
|
||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
<Import Project="..\include\$(Platform).props" />
|
<Import Project="..\include\$(Platform).props" />
|
||||||
<Import Project="..\include\$(Configuration).props" />
|
<Import Project="..\include\$(Configuration).props" />
|
||||||
<Import Project="CredWrite.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\include\$(Platform).props" />
|
|
||||||
<Import Project="..\include\$(Configuration).props" />
|
|
||||||
<Import Project="CredWrite.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\include\$(Platform).props" />
|
|
||||||
<Import Project="..\include\$(Configuration).props" />
|
|
||||||
<Import Project="CredWrite.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\include\$(Platform).props" />
|
|
||||||
<Import Project="..\include\$(Configuration).props" />
|
|
||||||
<Import Project="CredWrite.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\include\$(Platform).props" />
|
|
||||||
<Import Project="..\include\$(Configuration).props" />
|
|
||||||
<Import Project="CredWrite.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\include\$(Platform).props" />
|
|
||||||
<Import Project="..\include\$(Configuration).props" />
|
|
||||||
<Import Project="CredWrite.props" />
|
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
<PropertyGroup Label="UserMacros" />
|
<PropertyGroup Label="UserMacros" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
|
<PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
|
<OutDir>..\output\$(Platform).$(Configuration)\</OutDir>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" />
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
|
<ItemDefinitionGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
|
<ClCompile>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" />
|
<AdditionalIncludeDirectories>..\lib\Events\build\temp\Events.$(Platform).$(Configuration).$(PlatformToolset);..\lib\WinStd\include;..\lib\stdex\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
|
</ClCompile>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" />
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" />
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="StdAfx.h" />
|
<ClInclude Include="PCH.h" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="Main.cpp" />
|
<ClCompile Include="Main.cpp" />
|
||||||
<ClCompile Include="StdAfx.cpp">
|
<ClCompile Include="PCH.cpp">
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
|
<PrecompiledHeader>Create</PrecompiledHeader>
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">Create</PrecompiledHeader>
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">Create</PrecompiledHeader>
|
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@ -156,14 +86,10 @@
|
|||||||
<ProjectReference Include="..\lib\TLS\build\TLS.vcxproj">
|
<ProjectReference Include="..\lib\TLS\build\TLS.vcxproj">
|
||||||
<Project>{4d40cb8a-812e-4f12-b23a-31af743878e8}</Project>
|
<Project>{4d40cb8a-812e-4f12-b23a-31af743878e8}</Project>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\lib\WinStd\build\WinStd-15.0.vcxproj">
|
|
||||||
<Project>{47399d91-7eb9-41de-b521-514ba5db0c43}</Project>
|
|
||||||
</ProjectReference>
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="README.md" />
|
<None Include="README.md" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets" />
|
||||||
</ImportGroup>
|
|
||||||
</Project>
|
</Project>
|
@ -1,4 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Filter Include="Source Files">
|
<Filter Include="Source Files">
|
||||||
@ -15,12 +15,12 @@
|
|||||||
</Filter>
|
</Filter>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="StdAfx.h">
|
<ClInclude Include="PCH.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="StdAfx.cpp">
|
<ClCompile Include="PCH.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="Main.cpp">
|
<ClCompile Include="Main.cpp">
|
||||||
|
@ -1,29 +1,18 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2015-2016 Amebis
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
Copyright 2016 GÉANT
|
Copyright © 2015-2022 Amebis
|
||||||
|
Copyright © 2016 GÉANT
|
||||||
This file is part of GÉANTLink.
|
|
||||||
|
|
||||||
GÉANTLink is free software: you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
GÉANTLink is distributed in the hope that it will be useful, but
|
|
||||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with GÉANTLink. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "StdAfx.h"
|
#include "PCH.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
using namespace stdex;
|
||||||
using namespace winstd;
|
using namespace winstd;
|
||||||
|
|
||||||
eap::module g_module;
|
class module_dummy : public eap::module {
|
||||||
|
virtual eap::config_method* make_config() { return nullptr; }
|
||||||
|
} g_module;
|
||||||
|
|
||||||
|
|
||||||
static int CredWrite()
|
static int CredWrite()
|
||||||
@ -116,15 +105,16 @@ static int CredWrite()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int CALLBACK WinMain(_In_ HINSTANCE hInstance, _In_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nCmdShow)
|
_Use_decl_annotations_
|
||||||
|
int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
|
||||||
{
|
{
|
||||||
UNREFERENCED_PARAMETER(hPrevInstance);
|
UNREFERENCED_PARAMETER(hPrevInstance);
|
||||||
UNREFERENCED_PARAMETER(lpCmdLine);
|
UNREFERENCED_PARAMETER(lpCmdLine);
|
||||||
UNREFERENCED_PARAMETER(nCmdShow);
|
UNREFERENCED_PARAMETER(nCmdShow);
|
||||||
|
|
||||||
|
_CrtSetDbgFlag(_crtDbgFlag | _CRTDBG_ALLOC_MEM_DF | _CRTDBG_CHECK_ALWAYS_DF | _CRTDBG_CHECK_CRT_DF | _CRTDBG_LEAK_CHECK_DF);
|
||||||
g_module.m_instance = hInstance;
|
g_module.m_instance = hInstance;
|
||||||
|
|
||||||
int res = CredWrite();
|
int res = CredWrite();
|
||||||
assert(!_CrtDumpMemoryLeaks());
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
7
CredWrite/PCH.cpp
Normal file
7
CredWrite/PCH.cpp
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
/*
|
||||||
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
Copyright © 2015-2022 Amebis
|
||||||
|
Copyright © 2016 GÉANT
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "PCH.h"
|
22
CredWrite/PCH.h
Normal file
22
CredWrite/PCH.h
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
/*
|
||||||
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
Copyright © 2015-2022 Amebis
|
||||||
|
Copyright © 2016 GÉANT
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../lib/EAPBase/include/Config.h"
|
||||||
|
#include "../lib/EAPBase/include/Credentials.h"
|
||||||
|
#include "../lib/EAPBase/include/Module.h"
|
||||||
|
|
||||||
|
#include <WinStd/Common.h>
|
||||||
|
#include <WinStd/Win.h>
|
||||||
|
#include <stdex/base64.hpp>
|
||||||
|
|
||||||
|
#include <Windows.h>
|
||||||
|
#include <eaptypes.h> // Must include after <Windows.h>
|
||||||
|
#include <shellapi.h>
|
||||||
|
#include <tchar.h>
|
||||||
|
|
||||||
|
#include <memory>
|
@ -1,7 +1,9 @@
|
|||||||
#CredWrite
|
# CredWrite
|
||||||
Imports given credentials to Windows Credential Manager for GÉANTLink use
|
|
||||||
|
Imports given credentials to Windows Credential Manager for GÉANTLink use
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
##Usage
|
|
||||||
```
|
```
|
||||||
CredWrite <username> <password> [<realm> [level]]
|
CredWrite <username> <password> [<realm> [level]]
|
||||||
```
|
```
|
||||||
@ -13,8 +15,15 @@ CredWrite <username> <password> [<realm> [level]]
|
|||||||
|
|
||||||
The credentials are stored to Windows Credential Manager in invoking user's roaming profile.
|
The credentials are stored to Windows Credential Manager in invoking user's roaming profile.
|
||||||
|
|
||||||
Return codes:
|
### Return codes
|
||||||
|
|
||||||
- -1 = Invalid parameters
|
- -1 = Invalid parameters
|
||||||
- 0 = Success
|
- 0 = Success
|
||||||
- 1 = Error parsing command line
|
- 1 = Error parsing command line
|
||||||
- 2 = Error encrypting password or writing credentials
|
- 2 = Error encrypting password or writing credentials
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
```
|
||||||
|
CredWrite dXNlckBjb250b3NvLmNvbQ== cGFzc3dvcmQxMjM= urn:RFC4282:realm:contoso.com 1
|
||||||
|
```
|
||||||
|
@ -1,21 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright 2015-2016 Amebis
|
|
||||||
Copyright 2016 GÉANT
|
|
||||||
|
|
||||||
This file is part of GÉANTLink.
|
|
||||||
|
|
||||||
GÉANTLink is free software: you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
GÉANTLink is distributed in the hope that it will be useful, but
|
|
||||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with GÉANTLink. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "StdAfx.h"
|
|
@ -1,34 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright 2015-2016 Amebis
|
|
||||||
Copyright 2016 GÉANT
|
|
||||||
|
|
||||||
This file is part of GÉANTLink.
|
|
||||||
|
|
||||||
GÉANTLink is free software: you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
GÉANTLink is distributed in the hope that it will be useful, but
|
|
||||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with GÉANTLink. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "../lib/EAPBase/include/Credentials.h"
|
|
||||||
#include "../lib/EAPBase/include/Module.h"
|
|
||||||
|
|
||||||
#include <WinStd/Common.h>
|
|
||||||
#include <WinStd/Base64.h>
|
|
||||||
#include <WinStd/Win.h>
|
|
||||||
|
|
||||||
#include <Windows.h>
|
|
||||||
#include <eaptypes.h> // Must include after <Windows.h>
|
|
||||||
#include <tchar.h>
|
|
||||||
|
|
||||||
#include <memory>
|
|
4
Doxyfile
4
Doxyfile
@ -1,4 +1,4 @@
|
|||||||
# Doxyfile 1.8.7
|
# Doxyfile 1.8.7
|
||||||
|
|
||||||
# This file describes the settings to be used by the documentation system
|
# This file describes the settings to be used by the documentation system
|
||||||
# doxygen (www.doxygen.org) for a project.
|
# doxygen (www.doxygen.org) for a project.
|
||||||
@ -44,7 +44,7 @@ PROJECT_NUMBER =
|
|||||||
# for a project that appears at the top of each page and should give viewer a
|
# for a project that appears at the top of each page and should give viewer a
|
||||||
# quick idea about the purpose of the project. Keep the description short.
|
# quick idea about the purpose of the project. Keep the description short.
|
||||||
|
|
||||||
PROJECT_BRIEF = "EAP Supplicant for Windows"
|
PROJECT_BRIEF = "Suite of EAP supplicants for Microsoft Windows - IEEE 802.1X clients for enterprise network authentication"
|
||||||
|
|
||||||
# With the PROJECT_LOGO tag one can specify an logo or icon that is included in
|
# With the PROJECT_LOGO tag one can specify an logo or icon that is included in
|
||||||
# the documentation. The maximum height of the logo should not exceed 55 pixels
|
# the documentation. The maximum height of the logo should not exceed 55 pixels
|
||||||
|
24
EAPMethods/Common.props
Normal file
24
EAPMethods/Common.props
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ImportGroup Label="PropertySheets">
|
||||||
|
<Import Project="..\include\$(Platform).props" />
|
||||||
|
<Import Project="..\include\$(Configuration).props" />
|
||||||
|
</ImportGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<_PropertySheetDisplayName>EAP Method Common</_PropertySheetDisplayName>
|
||||||
|
<OutDir>..\output\$(Platform).$(Configuration)\</OutDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemDefinitionGroup>
|
||||||
|
<ClCompile>
|
||||||
|
<AdditionalIncludeDirectories>$(ProjectDir);..\lib\Events\build\temp\Events.$(Platform).$(Configuration).$(PlatformToolset);..\lib\WinStd\include;..\lib\stdex\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\lib\EAPBase\build\EAPBase.vcxproj">
|
||||||
|
<Project>{ad6816a0-9600-4e01-8c49-39d03d1e791f}</Project>
|
||||||
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\lib\Events\build\Events.vcxproj">
|
||||||
|
<Project>{d63f24bd-92a0-4d6b-8b69-ed947e4d2b1b}</Project>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
85
EAPMethods/EAP-TTLS.vcxproj
Normal file
85
EAPMethods/EAP-TTLS.vcxproj
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
|
<ProjectConfiguration Include="Debug|ARM64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>ARM64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|Win32">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|x64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|ARM64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>ARM64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|Win32">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|x64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<ProjectGuid>{331B6077-E3E2-4867-B93E-9D3F57280DE7}</ProjectGuid>
|
||||||
|
<RootNamespace>EAP-TTLS</RootNamespace>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<PropertyGroup Label="Configuration">
|
||||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Label="Configuration" Condition="'$(Configuration)'=='Debug'">
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Label="Configuration" Condition="'$(Configuration)'=='Release'">
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Label="Configuration" Condition="'$(Platform)'=='ARM64'">
|
||||||
|
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
<ImportGroup Label="ExtensionSettings" />
|
||||||
|
<ImportGroup Label="PropertySheets">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
<Import Project="EAPMethod.props" />
|
||||||
|
</ImportGroup>
|
||||||
|
<PropertyGroup Label="UserMacros" />
|
||||||
|
<ItemDefinitionGroup>
|
||||||
|
<ClCompile>
|
||||||
|
<PreprocessorDefinitions>EAPMETHOD_TYPE=21;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
</ClCompile>
|
||||||
|
<ResourceCompile>
|
||||||
|
<PreprocessorDefinitions>EAPMETHOD_TYPE=21;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
</ResourceCompile>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\lib\EapHost\build\EapHost.vcxproj">
|
||||||
|
<Project>{b385ec2b-c3f4-48bb-9bac-8b996de7f754}</Project>
|
||||||
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\lib\GTC\build\GTC.vcxproj">
|
||||||
|
<Project>{114a70bb-8698-4a0c-8c90-58f22edd8129}</Project>
|
||||||
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\lib\MSCHAPv2\build\MSCHAPv2.vcxproj">
|
||||||
|
<Project>{86a6d6a0-4b7d-4134-be81-a5755c77584d}</Project>
|
||||||
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\lib\PAP\build\PAP.vcxproj">
|
||||||
|
<Project>{36b0cf8a-7794-46c3-8099-825ba962b4c7}</Project>
|
||||||
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\lib\TLS\build\TLS.vcxproj">
|
||||||
|
<Project>{4d40cb8a-812e-4f12-b23a-31af743878e8}</Project>
|
||||||
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\lib\TTLS\build\TTLS.vcxproj">
|
||||||
|
<Project>{ee0ef0d9-a475-4038-8637-5754724f65b0}</Project>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Label="ExtensionTargets" />
|
||||||
|
</Project>
|
@ -1,4 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Filter Include="Source Files">
|
<Filter Include="Source Files">
|
||||||
@ -15,25 +15,28 @@
|
|||||||
</Filter>
|
</Filter>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="StdAfx.h">
|
<ClInclude Include="PCH.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="StdAfx.cpp">
|
<ClCompile Include="PCH.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\src\Main.cpp">
|
<ClCompile Include="Main.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="Register.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ResourceCompile Include="EAPTTLS.rc">
|
<ResourceCompile Include="res\EAPMethod.rc">
|
||||||
<Filter>Resource Files</Filter>
|
<Filter>Resource Files</Filter>
|
||||||
</ResourceCompile>
|
</ResourceCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="..\build\EAPMethod.def">
|
<None Include="EAPMethod.def">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</None>
|
</None>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
105
EAPMethods/EAP-TTLS_UI.vcxproj
Normal file
105
EAPMethods/EAP-TTLS_UI.vcxproj
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
|
<ProjectConfiguration Include="Debug|ARM64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>ARM64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|Win32">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|x64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|ARM64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>ARM64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|Win32">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|x64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<ProjectGuid>{DD7A97CA-F18E-43B7-95C4-D06E6A291624}</ProjectGuid>
|
||||||
|
<RootNamespace>EAP-TTLS_UI</RootNamespace>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<PropertyGroup Label="Configuration">
|
||||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Label="Configuration" Condition="'$(Configuration)'=='Debug'">
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Label="Configuration" Condition="'$(Configuration)'=='Release'">
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Label="Configuration" Condition="'$(Platform)'=='ARM64'">
|
||||||
|
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
<ImportGroup Label="ExtensionSettings" />
|
||||||
|
<ImportGroup Label="PropertySheets">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
<Import Project="EAPMethod_UI.props" />
|
||||||
|
</ImportGroup>
|
||||||
|
<PropertyGroup Label="UserMacros" />
|
||||||
|
<ItemDefinitionGroup>
|
||||||
|
<ClCompile>
|
||||||
|
<PreprocessorDefinitions>EAPMETHOD_TYPE=21;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
</ClCompile>
|
||||||
|
<ResourceCompile>
|
||||||
|
<PreprocessorDefinitions>EAPMETHOD_TYPE=21;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
</ResourceCompile>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\lib\EapHost\build\EapHost.vcxproj">
|
||||||
|
<Project>{b385ec2b-c3f4-48bb-9bac-8b996de7f754}</Project>
|
||||||
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\lib\EapHost_UI\build\EapHost_UI.vcxproj">
|
||||||
|
<Project>{13d2d8b5-f6aa-459d-b5f7-29b95dd9d583}</Project>
|
||||||
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\lib\GTC\build\GTC.vcxproj">
|
||||||
|
<Project>{114a70bb-8698-4a0c-8c90-58f22edd8129}</Project>
|
||||||
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\lib\GTC_UI\build\GTC_UI.vcxproj">
|
||||||
|
<Project>{34680813-3a52-46fb-b5a8-1e4bbf770855}</Project>
|
||||||
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\lib\MSCHAPv2\build\MSCHAPv2.vcxproj">
|
||||||
|
<Project>{86a6d6a0-4b7d-4134-be81-a5755c77584d}</Project>
|
||||||
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\lib\MSCHAPv2_UI\build\MSCHAPv2_UI.vcxproj">
|
||||||
|
<Project>{7af5b922-7c17-428a-97e0-09e3b41a684d}</Project>
|
||||||
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\lib\PAP\build\PAP.vcxproj">
|
||||||
|
<Project>{36b0cf8a-7794-46c3-8099-825ba962b4c7}</Project>
|
||||||
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\lib\PAP_UI\build\PAP_UI.vcxproj">
|
||||||
|
<Project>{3d309c2e-64ab-4bc4-a16d-468571a2bc1a}</Project>
|
||||||
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\lib\TLS\build\TLS.vcxproj">
|
||||||
|
<Project>{4d40cb8a-812e-4f12-b23a-31af743878e8}</Project>
|
||||||
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\lib\TLS_UI\build\TLS_UI.vcxproj">
|
||||||
|
<Project>{9a25c261-8ade-4938-8393-e857ef0e37e9}</Project>
|
||||||
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\lib\TTLS\build\TTLS.vcxproj">
|
||||||
|
<Project>{ee0ef0d9-a475-4038-8637-5754724f65b0}</Project>
|
||||||
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\lib\TTLS_UI\build\TTLS_UI.vcxproj">
|
||||||
|
<Project>{42f0f0f4-c928-4860-a4e4-94991c2c3d90}</Project>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
<Import Project="..\include\xgettext.targets" />
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
@ -1,4 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Filter Include="Source Files">
|
<Filter Include="Source Files">
|
||||||
@ -19,120 +19,126 @@
|
|||||||
</Filter>
|
</Filter>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="StdAfx.h">
|
<ClInclude Include="PCH_UI.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="StdAfx.cpp">
|
<ClCompile Include="PCH_UI.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\src\Main_UI.cpp">
|
<ClCompile Include="Main_UI.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="Register_UI.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ResourceCompile Include="EAPTTLSUI.rc">
|
<ResourceCompile Include="res\EAPMethod_UI.rc">
|
||||||
<Filter>Resource Files</Filter>
|
<Filter>Resource Files</Filter>
|
||||||
</ResourceCompile>
|
</ResourceCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="..\build\EAPMethodUI.def">
|
<None Include="EAPMethod_UI.def">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</None>
|
</None>
|
||||||
<None Include="..\locale\EAPMethods.pot">
|
<None Include="locale\EAPMethods.pot">
|
||||||
<Filter>Resource Files\Localization</Filter>
|
<Filter>Resource Files\Localization</Filter>
|
||||||
</None>
|
</None>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<POCompile Include="..\locale\sl_SI.po">
|
<POCompile Include="locale\ro_RO.po">
|
||||||
<Filter>Resource Files\Localization</Filter>
|
<Filter>Resource Files\Localization</Filter>
|
||||||
</POCompile>
|
</POCompile>
|
||||||
<POCompile Include="..\locale\bg_BG.po">
|
<POCompile Include="locale\sl_SI.po">
|
||||||
<Filter>Resource Files\Localization</Filter>
|
<Filter>Resource Files\Localization</Filter>
|
||||||
</POCompile>
|
</POCompile>
|
||||||
<POCompile Include="..\locale\ca_ES.po">
|
<POCompile Include="locale\bg_BG.po">
|
||||||
<Filter>Resource Files\Localization</Filter>
|
<Filter>Resource Files\Localization</Filter>
|
||||||
</POCompile>
|
</POCompile>
|
||||||
<POCompile Include="..\locale\cs_CZ.po">
|
<POCompile Include="locale\ca_ES.po">
|
||||||
<Filter>Resource Files\Localization</Filter>
|
<Filter>Resource Files\Localization</Filter>
|
||||||
</POCompile>
|
</POCompile>
|
||||||
<POCompile Include="..\locale\cy_UK.po">
|
<POCompile Include="locale\cs_CZ.po">
|
||||||
<Filter>Resource Files\Localization</Filter>
|
<Filter>Resource Files\Localization</Filter>
|
||||||
</POCompile>
|
</POCompile>
|
||||||
<POCompile Include="..\locale\de_DE.po">
|
<POCompile Include="locale\cy_UK.po">
|
||||||
<Filter>Resource Files\Localization</Filter>
|
<Filter>Resource Files\Localization</Filter>
|
||||||
</POCompile>
|
</POCompile>
|
||||||
<POCompile Include="..\locale\el_GR.po">
|
<POCompile Include="locale\de_DE.po">
|
||||||
<Filter>Resource Files\Localization</Filter>
|
<Filter>Resource Files\Localization</Filter>
|
||||||
</POCompile>
|
</POCompile>
|
||||||
<POCompile Include="..\locale\es_ES.po">
|
<POCompile Include="locale\el_GR.po">
|
||||||
<Filter>Resource Files\Localization</Filter>
|
<Filter>Resource Files\Localization</Filter>
|
||||||
</POCompile>
|
</POCompile>
|
||||||
<POCompile Include="..\locale\eu_ES.po">
|
<POCompile Include="locale\es_ES.po">
|
||||||
<Filter>Resource Files\Localization</Filter>
|
<Filter>Resource Files\Localization</Filter>
|
||||||
</POCompile>
|
</POCompile>
|
||||||
<POCompile Include="..\locale\fi_FI.po">
|
<POCompile Include="locale\eu_ES.po">
|
||||||
<Filter>Resource Files\Localization</Filter>
|
<Filter>Resource Files\Localization</Filter>
|
||||||
</POCompile>
|
</POCompile>
|
||||||
<POCompile Include="..\locale\fr_CA.po">
|
<POCompile Include="locale\fi_FI.po">
|
||||||
<Filter>Resource Files\Localization</Filter>
|
<Filter>Resource Files\Localization</Filter>
|
||||||
</POCompile>
|
</POCompile>
|
||||||
<POCompile Include="..\locale\fr_FR.po">
|
<POCompile Include="locale\fr_CA.po">
|
||||||
<Filter>Resource Files\Localization</Filter>
|
<Filter>Resource Files\Localization</Filter>
|
||||||
</POCompile>
|
</POCompile>
|
||||||
<POCompile Include="..\locale\gl_ES.po">
|
<POCompile Include="locale\fr_FR.po">
|
||||||
<Filter>Resource Files\Localization</Filter>
|
<Filter>Resource Files\Localization</Filter>
|
||||||
</POCompile>
|
</POCompile>
|
||||||
<POCompile Include="..\locale\hr_HR.po">
|
<POCompile Include="locale\gl_ES.po">
|
||||||
<Filter>Resource Files\Localization</Filter>
|
<Filter>Resource Files\Localization</Filter>
|
||||||
</POCompile>
|
</POCompile>
|
||||||
<POCompile Include="..\locale\hu_HU.po">
|
<POCompile Include="locale\hr_HR.po">
|
||||||
<Filter>Resource Files\Localization</Filter>
|
<Filter>Resource Files\Localization</Filter>
|
||||||
</POCompile>
|
</POCompile>
|
||||||
<POCompile Include="..\locale\is_IS.po">
|
<POCompile Include="locale\hu_HU.po">
|
||||||
<Filter>Resource Files\Localization</Filter>
|
<Filter>Resource Files\Localization</Filter>
|
||||||
</POCompile>
|
</POCompile>
|
||||||
<POCompile Include="..\locale\it_IT.po">
|
<POCompile Include="locale\is_IS.po">
|
||||||
<Filter>Resource Files\Localization</Filter>
|
<Filter>Resource Files\Localization</Filter>
|
||||||
</POCompile>
|
</POCompile>
|
||||||
<POCompile Include="..\locale\lt_LT.po">
|
<POCompile Include="locale\it_IT.po">
|
||||||
<Filter>Resource Files\Localization</Filter>
|
<Filter>Resource Files\Localization</Filter>
|
||||||
</POCompile>
|
</POCompile>
|
||||||
<POCompile Include="..\locale\nb_NO.po">
|
<POCompile Include="locale\lt_LT.po">
|
||||||
<Filter>Resource Files\Localization</Filter>
|
<Filter>Resource Files\Localization</Filter>
|
||||||
</POCompile>
|
</POCompile>
|
||||||
<POCompile Include="..\locale\nl_NL.po">
|
<POCompile Include="locale\nb_NO.po">
|
||||||
<Filter>Resource Files\Localization</Filter>
|
<Filter>Resource Files\Localization</Filter>
|
||||||
</POCompile>
|
</POCompile>
|
||||||
<POCompile Include="..\locale\pl_PL.po">
|
<POCompile Include="locale\nl_NL.po">
|
||||||
<Filter>Resource Files\Localization</Filter>
|
<Filter>Resource Files\Localization</Filter>
|
||||||
</POCompile>
|
</POCompile>
|
||||||
<POCompile Include="..\locale\pt_PT.po">
|
<POCompile Include="locale\pl_PL.po">
|
||||||
<Filter>Resource Files\Localization</Filter>
|
<Filter>Resource Files\Localization</Filter>
|
||||||
</POCompile>
|
</POCompile>
|
||||||
<POCompile Include="..\locale\ru_RU.po">
|
<POCompile Include="locale\pt_PT.po">
|
||||||
<Filter>Resource Files\Localization</Filter>
|
<Filter>Resource Files\Localization</Filter>
|
||||||
</POCompile>
|
</POCompile>
|
||||||
<POCompile Include="..\locale\sk_SK.po">
|
<POCompile Include="locale\ru_RU.po">
|
||||||
<Filter>Resource Files\Localization</Filter>
|
<Filter>Resource Files\Localization</Filter>
|
||||||
</POCompile>
|
</POCompile>
|
||||||
<POCompile Include="..\locale\sr_RS.po">
|
<POCompile Include="locale\sk_SK.po">
|
||||||
<Filter>Resource Files\Localization</Filter>
|
<Filter>Resource Files\Localization</Filter>
|
||||||
</POCompile>
|
</POCompile>
|
||||||
<POCompile Include="..\locale\sv_SE.po">
|
<POCompile Include="locale\sr_RS.po">
|
||||||
<Filter>Resource Files\Localization</Filter>
|
<Filter>Resource Files\Localization</Filter>
|
||||||
</POCompile>
|
</POCompile>
|
||||||
<POCompile Include="..\locale\tr_TR.po">
|
<POCompile Include="locale\sv_SE.po">
|
||||||
<Filter>Resource Files\Localization</Filter>
|
<Filter>Resource Files\Localization</Filter>
|
||||||
</POCompile>
|
</POCompile>
|
||||||
<POCompile Include="..\locale\vi_VN.po">
|
<POCompile Include="locale\tr_TR.po">
|
||||||
<Filter>Resource Files\Localization</Filter>
|
<Filter>Resource Files\Localization</Filter>
|
||||||
</POCompile>
|
</POCompile>
|
||||||
<POCompile Include="..\locale\ko_KR.po">
|
<POCompile Include="locale\vi_VN.po">
|
||||||
<Filter>Resource Files\Localization</Filter>
|
<Filter>Resource Files\Localization</Filter>
|
||||||
</POCompile>
|
</POCompile>
|
||||||
<POCompile Include="..\locale\et_EE.po">
|
<POCompile Include="locale\ko_KR.po">
|
||||||
|
<Filter>Resource Files\Localization</Filter>
|
||||||
|
</POCompile>
|
||||||
|
<POCompile Include="locale\et_EE.po">
|
||||||
<Filter>Resource Files\Localization</Filter>
|
<Filter>Resource Files\Localization</Filter>
|
||||||
</POCompile>
|
</POCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
BIN
EAPMethods/EAPMethod.def
Normal file
BIN
EAPMethods/EAPMethod.def
Normal file
Binary file not shown.
27
EAPMethods/EAPMethod.props
Normal file
27
EAPMethods/EAPMethod.props
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ImportGroup Label="PropertySheets">
|
||||||
|
<Import Project="Common.props" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ItemDefinitionGroup>
|
||||||
|
<Link>
|
||||||
|
<ModuleDefinitionFile>EAPMethod.def</ModuleDefinitionFile>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="PCH.h" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="Main.cpp" />
|
||||||
|
<ClCompile Include="PCH.cpp">
|
||||||
|
<PrecompiledHeader>Create</PrecompiledHeader>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="Register.cpp" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="EAPMethod.def" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ResourceCompile Include="res\EAPMethod.rc" />
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
BIN
EAPMethods/EAPMethod_UI.def
Normal file
BIN
EAPMethods/EAPMethod_UI.def
Normal file
Binary file not shown.
72
EAPMethods/EAPMethod_UI.props
Normal file
72
EAPMethods/EAPMethod_UI.props
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ImportGroup Label="PropertySheets">
|
||||||
|
<Import Project="Common.props" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ItemDefinitionGroup>
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeaderFile>PCH_UI.h</PrecompiledHeaderFile>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<ModuleDefinitionFile>EAPMethod_UI.def</ModuleDefinitionFile>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="PCH_UI.h" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="Main_UI.cpp" />
|
||||||
|
<ClCompile Include="PCH_UI.cpp">
|
||||||
|
<PrecompiledHeader>Create</PrecompiledHeader>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="Register_UI.cpp" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="EAPMethod_UI.def" />
|
||||||
|
<None Include="locale\EAPMethods.pot" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<POCompile Include="locale\bg_BG.po" />
|
||||||
|
<POCompile Include="locale\ca_ES.po" />
|
||||||
|
<POCompile Include="locale\cs_CZ.po" />
|
||||||
|
<POCompile Include="locale\cy_UK.po" />
|
||||||
|
<POCompile Include="locale\de_DE.po" />
|
||||||
|
<POCompile Include="locale\el_GR.po" />
|
||||||
|
<POCompile Include="locale\es_ES.po" />
|
||||||
|
<POCompile Include="locale\et_EE.po" />
|
||||||
|
<POCompile Include="locale\eu_ES.po" />
|
||||||
|
<POCompile Include="locale\fi_FI.po" />
|
||||||
|
<POCompile Include="locale\fr_CA.po" />
|
||||||
|
<POCompile Include="locale\fr_FR.po" />
|
||||||
|
<POCompile Include="locale\gl_ES.po" />
|
||||||
|
<POCompile Include="locale\hr_HR.po" />
|
||||||
|
<POCompile Include="locale\hu_HU.po" />
|
||||||
|
<POCompile Include="locale\is_IS.po" />
|
||||||
|
<POCompile Include="locale\it_IT.po" />
|
||||||
|
<POCompile Include="locale\ko_KR.po" />
|
||||||
|
<POCompile Include="locale\lt_LT.po" />
|
||||||
|
<POCompile Include="locale\nb_NO.po" />
|
||||||
|
<POCompile Include="locale\nl_NL.po" />
|
||||||
|
<POCompile Include="locale\pl_PL.po" />
|
||||||
|
<POCompile Include="locale\pt_PT.po" />
|
||||||
|
<POCompile Include="locale\ru_RU.po" />
|
||||||
|
<POCompile Include="locale\sk_SK.po" />
|
||||||
|
<POCompile Include="locale\ro_RO.po" />
|
||||||
|
<POCompile Include="locale\sl_SI.po" />
|
||||||
|
<POCompile Include="locale\sr_RS.po" />
|
||||||
|
<POCompile Include="locale\sv_SE.po" />
|
||||||
|
<POCompile Include="locale\tr_TR.po" />
|
||||||
|
<POCompile Include="locale\vi_VN.po" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ResourceCompile Include="res\EAPMethod_UI.rc" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\lib\EAPBase_UI\build\EAPBase_UI.vcxproj">
|
||||||
|
<Project>{d4b54856-be1f-4937-a8f7-495125be76be}</Project>
|
||||||
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\lib\wxExtend\build\wxExtendLib.vcxproj">
|
||||||
|
<Project>{d3e29951-d9f5-486d-a167-20ae8e90b1fa}</Project>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
@ -1,17 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ImportGroup Label="PropertySheets">
|
|
||||||
<Import Project="..\build\Common.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup />
|
|
||||||
<ItemDefinitionGroup>
|
|
||||||
<ClCompile>
|
|
||||||
<PreprocessorDefinitions>EAPMETHOD_TYPE=21;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<ModuleDefinitionFile>..\build\EAPMethod.def</ModuleDefinitionFile>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup />
|
|
||||||
</Project>
|
|
@ -1,175 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
|
||||||
<ProjectConfiguration Include="Debug|ARM64">
|
|
||||||
<Configuration>Debug</Configuration>
|
|
||||||
<Platform>ARM64</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Debug|Win32">
|
|
||||||
<Configuration>Debug</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Debug|x64">
|
|
||||||
<Configuration>Debug</Configuration>
|
|
||||||
<Platform>x64</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Release|ARM64">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>ARM64</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Release|Win32">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Release|x64">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>x64</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
</ItemGroup>
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>{331B6077-E3E2-4867-B93E-9D3F57280DE7}</ProjectGuid>
|
|
||||||
<RootNamespace>EAPTTLS</RootNamespace>
|
|
||||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
|
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
||||||
<ImportGroup Label="ExtensionSettings">
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\..\include\$(Platform).props" />
|
|
||||||
<Import Project="..\..\include\$(Configuration).props" />
|
|
||||||
<Import Project="EAPTTLS.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\..\include\$(Platform).props" />
|
|
||||||
<Import Project="..\..\include\$(Configuration).props" />
|
|
||||||
<Import Project="EAPTTLS.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\..\include\$(Platform).props" />
|
|
||||||
<Import Project="..\..\include\$(Configuration).props" />
|
|
||||||
<Import Project="EAPTTLS.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\..\include\$(Platform).props" />
|
|
||||||
<Import Project="..\..\include\$(Configuration).props" />
|
|
||||||
<Import Project="EAPTTLS.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\..\include\$(Platform).props" />
|
|
||||||
<Import Project="..\..\include\$(Configuration).props" />
|
|
||||||
<Import Project="EAPTTLS.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\..\include\$(Platform).props" />
|
|
||||||
<Import Project="..\..\include\$(Configuration).props" />
|
|
||||||
<Import Project="EAPTTLS.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup />
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" />
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" />
|
|
||||||
<ItemGroup>
|
|
||||||
<ClInclude Include="StdAfx.h" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="..\src\Main.cpp" />
|
|
||||||
<ClCompile Include="StdAfx.cpp">
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">Create</PrecompiledHeader>
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">Create</PrecompiledHeader>
|
|
||||||
</ClCompile>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ResourceCompile Include="EAPTTLS.rc" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\..\lib\EAPBase\build\EAPBase.vcxproj">
|
|
||||||
<Project>{ad6816a0-9600-4e01-8c49-39d03d1e791f}</Project>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\..\lib\EapHost\build\EapHost.vcxproj">
|
|
||||||
<Project>{b385ec2b-c3f4-48bb-9bac-8b996de7f754}</Project>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\..\lib\Events\build\Events.vcxproj">
|
|
||||||
<Project>{d63f24bd-92a0-4d6b-8b69-ed947e4d2b1b}</Project>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\..\lib\GTC\build\GTC.vcxproj">
|
|
||||||
<Project>{114a70bb-8698-4a0c-8c90-58f22edd8129}</Project>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\..\lib\MSCHAPv2\build\MSCHAPv2.vcxproj">
|
|
||||||
<Project>{86a6d6a0-4b7d-4134-be81-a5755c77584d}</Project>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\..\lib\PAP\build\PAP.vcxproj">
|
|
||||||
<Project>{36b0cf8a-7794-46c3-8099-825ba962b4c7}</Project>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\..\lib\TLS\build\TLS.vcxproj">
|
|
||||||
<Project>{4d40cb8a-812e-4f12-b23a-31af743878e8}</Project>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\..\lib\TTLS\build\TTLS.vcxproj">
|
|
||||||
<Project>{ee0ef0d9-a475-4038-8637-5754724f65b0}</Project>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\..\lib\WinStd\build\WinStd-15.0.vcxproj">
|
|
||||||
<Project>{47399d91-7eb9-41de-b521-514ba5db0c43}</Project>
|
|
||||||
</ProjectReference>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="..\build\EAPMethod.def" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
||||||
<ImportGroup Label="ExtensionTargets">
|
|
||||||
</ImportGroup>
|
|
||||||
</Project>
|
|
@ -1,21 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright 2015-2016 Amebis
|
|
||||||
Copyright 2016 GÉANT
|
|
||||||
|
|
||||||
This file is part of GÉANTLink.
|
|
||||||
|
|
||||||
GÉANTLink is free software: you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
GÉANTLink is distributed in the hope that it will be useful, but
|
|
||||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with GÉANTLink. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "StdAfx.h"
|
|
@ -1,24 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright 2015-2016 Amebis
|
|
||||||
Copyright 2016 GÉANT
|
|
||||||
|
|
||||||
This file is part of GÉANTLink.
|
|
||||||
|
|
||||||
GÉANTLink is free software: you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
GÉANTLink is distributed in the hope that it will be useful, but
|
|
||||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with GÉANTLink. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "../../lib/TTLS/include/Method.h"
|
|
||||||
#include "../../lib/TTLS/include/Module.h"
|
|
2
EAPMethods/EAPTTLSUI/.gitignore
vendored
2
EAPMethods/EAPTTLSUI/.gitignore
vendored
@ -1,2 +0,0 @@
|
|||||||
/temp
|
|
||||||
/*.user
|
|
@ -1,17 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ImportGroup Label="PropertySheets">
|
|
||||||
<Import Project="..\build\Common.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup />
|
|
||||||
<ItemDefinitionGroup>
|
|
||||||
<ClCompile>
|
|
||||||
<PreprocessorDefinitions>EAPMETHOD_TYPE=21;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<ModuleDefinitionFile>..\build\EAPMethodUI.def</ModuleDefinitionFile>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup />
|
|
||||||
</Project>
|
|
@ -1,233 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
|
||||||
<ProjectConfiguration Include="Debug|ARM64">
|
|
||||||
<Configuration>Debug</Configuration>
|
|
||||||
<Platform>ARM64</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Debug|Win32">
|
|
||||||
<Configuration>Debug</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Debug|x64">
|
|
||||||
<Configuration>Debug</Configuration>
|
|
||||||
<Platform>x64</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Release|ARM64">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>ARM64</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Release|Win32">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Release|x64">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>x64</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
</ItemGroup>
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>{DD7A97CA-F18E-43B7-95C4-D06E6A291624}</ProjectGuid>
|
|
||||||
<RootNamespace>EAPTTLSUI</RootNamespace>
|
|
||||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
|
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
||||||
<ImportGroup Label="ExtensionSettings">
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\..\include\$(Platform).props" />
|
|
||||||
<Import Project="..\..\include\$(Configuration).props" />
|
|
||||||
<Import Project="EAPTTLSUI.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\..\include\$(Platform).props" />
|
|
||||||
<Import Project="..\..\include\$(Configuration).props" />
|
|
||||||
<Import Project="EAPTTLSUI.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\..\include\$(Platform).props" />
|
|
||||||
<Import Project="..\..\include\$(Configuration).props" />
|
|
||||||
<Import Project="EAPTTLSUI.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\..\include\$(Platform).props" />
|
|
||||||
<Import Project="..\..\include\$(Configuration).props" />
|
|
||||||
<Import Project="EAPTTLSUI.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\..\include\$(Platform).props" />
|
|
||||||
<Import Project="..\..\include\$(Configuration).props" />
|
|
||||||
<Import Project="EAPTTLSUI.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\..\include\$(Platform).props" />
|
|
||||||
<Import Project="..\..\include\$(Configuration).props" />
|
|
||||||
<Import Project="EAPTTLSUI.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup />
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" />
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" />
|
|
||||||
<ItemGroup>
|
|
||||||
<ClInclude Include="StdAfx.h" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="..\src\Main_UI.cpp" />
|
|
||||||
<ClCompile Include="StdAfx.cpp">
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">Create</PrecompiledHeader>
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">Create</PrecompiledHeader>
|
|
||||||
</ClCompile>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ResourceCompile Include="EAPTTLSUI.rc" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\..\lib\EAPBase\build\EAPBase.vcxproj">
|
|
||||||
<Project>{ad6816a0-9600-4e01-8c49-39d03d1e791f}</Project>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\..\lib\EAPBase_UI\build\EAPBase_UI.vcxproj">
|
|
||||||
<Project>{d4b54856-be1f-4937-a8f7-495125be76be}</Project>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\..\lib\EapHost\build\EapHost.vcxproj">
|
|
||||||
<Project>{b385ec2b-c3f4-48bb-9bac-8b996de7f754}</Project>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\..\lib\EapHost_UI\build\EapHost_UI.vcxproj">
|
|
||||||
<Project>{13d2d8b5-f6aa-459d-b5f7-29b95dd9d583}</Project>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\..\lib\Events\build\Events.vcxproj">
|
|
||||||
<Project>{d63f24bd-92a0-4d6b-8b69-ed947e4d2b1b}</Project>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\..\lib\GTC\build\GTC.vcxproj">
|
|
||||||
<Project>{114a70bb-8698-4a0c-8c90-58f22edd8129}</Project>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\..\lib\GTC_UI\build\GTC_UI.vcxproj">
|
|
||||||
<Project>{34680813-3a52-46fb-b5a8-1e4bbf770855}</Project>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\..\lib\MSCHAPv2\build\MSCHAPv2.vcxproj">
|
|
||||||
<Project>{86a6d6a0-4b7d-4134-be81-a5755c77584d}</Project>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\..\lib\MSCHAPv2_UI\build\MSCHAPv2_UI.vcxproj">
|
|
||||||
<Project>{7af5b922-7c17-428a-97e0-09e3b41a684d}</Project>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\..\lib\PAP\build\PAP.vcxproj">
|
|
||||||
<Project>{36b0cf8a-7794-46c3-8099-825ba962b4c7}</Project>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\..\lib\PAP_UI\build\PAP_UI.vcxproj">
|
|
||||||
<Project>{3d309c2e-64ab-4bc4-a16d-468571a2bc1a}</Project>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\..\lib\TLS\build\TLS.vcxproj">
|
|
||||||
<Project>{4d40cb8a-812e-4f12-b23a-31af743878e8}</Project>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\..\lib\TLS_UI\build\TLS_UI.vcxproj">
|
|
||||||
<Project>{9a25c261-8ade-4938-8393-e857ef0e37e9}</Project>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\..\lib\TTLS\build\TTLS.vcxproj">
|
|
||||||
<Project>{ee0ef0d9-a475-4038-8637-5754724f65b0}</Project>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\..\lib\TTLS_UI\build\TTLS_UI.vcxproj">
|
|
||||||
<Project>{42f0f0f4-c928-4860-a4e4-94991c2c3d90}</Project>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\..\lib\WinStd\build\WinStd-15.0.vcxproj">
|
|
||||||
<Project>{47399d91-7eb9-41de-b521-514ba5db0c43}</Project>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\..\lib\wxExtend\build\wxExtendLib-15.0.vcxproj">
|
|
||||||
<Project>{d3e29951-d9f5-486d-a167-20ae8e90b1fa}</Project>
|
|
||||||
</ProjectReference>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="..\build\EAPMethodUI.def" />
|
|
||||||
<None Include="..\locale\EAPMethods.pot" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<POCompile Include="..\locale\bg_BG.po" />
|
|
||||||
<POCompile Include="..\locale\ca_ES.po" />
|
|
||||||
<POCompile Include="..\locale\cs_CZ.po" />
|
|
||||||
<POCompile Include="..\locale\cy_UK.po" />
|
|
||||||
<POCompile Include="..\locale\de_DE.po" />
|
|
||||||
<POCompile Include="..\locale\el_GR.po" />
|
|
||||||
<POCompile Include="..\locale\es_ES.po" />
|
|
||||||
<POCompile Include="..\locale\et_EE.po" />
|
|
||||||
<POCompile Include="..\locale\eu_ES.po" />
|
|
||||||
<POCompile Include="..\locale\fi_FI.po" />
|
|
||||||
<POCompile Include="..\locale\fr_CA.po" />
|
|
||||||
<POCompile Include="..\locale\fr_FR.po" />
|
|
||||||
<POCompile Include="..\locale\gl_ES.po" />
|
|
||||||
<POCompile Include="..\locale\hr_HR.po" />
|
|
||||||
<POCompile Include="..\locale\hu_HU.po" />
|
|
||||||
<POCompile Include="..\locale\is_IS.po" />
|
|
||||||
<POCompile Include="..\locale\it_IT.po" />
|
|
||||||
<POCompile Include="..\locale\ko_KR.po" />
|
|
||||||
<POCompile Include="..\locale\lt_LT.po" />
|
|
||||||
<POCompile Include="..\locale\nb_NO.po" />
|
|
||||||
<POCompile Include="..\locale\nl_NL.po" />
|
|
||||||
<POCompile Include="..\locale\pl_PL.po" />
|
|
||||||
<POCompile Include="..\locale\pt_PT.po" />
|
|
||||||
<POCompile Include="..\locale\ru_RU.po" />
|
|
||||||
<POCompile Include="..\locale\sk_SK.po" />
|
|
||||||
<POCompile Include="..\locale\sl_SI.po" />
|
|
||||||
<POCompile Include="..\locale\sr_RS.po" />
|
|
||||||
<POCompile Include="..\locale\sv_SE.po" />
|
|
||||||
<POCompile Include="..\locale\tr_TR.po" />
|
|
||||||
<POCompile Include="..\locale\vi_VN.po" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
||||||
<ImportGroup Label="ExtensionTargets">
|
|
||||||
<Import Project="..\..\include\xgettext.targets" />
|
|
||||||
</ImportGroup>
|
|
||||||
</Project>
|
|
@ -1,21 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright 2015-2016 Amebis
|
|
||||||
Copyright 2016 GÉANT
|
|
||||||
|
|
||||||
This file is part of GÉANTLink.
|
|
||||||
|
|
||||||
GÉANTLink is free software: you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
GÉANTLink is distributed in the hope that it will be useful, but
|
|
||||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with GÉANTLink. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "StdAfx.h"
|
|
@ -1,23 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright 2015-2016 Amebis
|
|
||||||
Copyright 2016 GÉANT
|
|
||||||
|
|
||||||
This file is part of GÉANTLink.
|
|
||||||
|
|
||||||
GÉANTLink is free software: you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
GÉANTLink is distributed in the hope that it will be useful, but
|
|
||||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with GÉANTLink. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "../../lib/TTLS_UI/include/Module.h"
|
|
9
EAPMethods/MSIBuild.EAP-TTLS/.gitignore
vendored
Normal file
9
EAPMethods/MSIBuild.EAP-TTLS/.gitignore
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
/*-1.idt
|
||||||
|
/*-2.idt
|
||||||
|
/*-2.idtx
|
||||||
|
/*.Binary-1
|
||||||
|
/*.Binary-2
|
||||||
|
/*.Icon-1
|
||||||
|
/*.Icon-2
|
||||||
|
/*.lst
|
||||||
|
/*.msm
|
BIN
EAPMethods/MSIBuild.EAP-TTLS/Makefile
Normal file
BIN
EAPMethods/MSIBuild.EAP-TTLS/Makefile
Normal file
Binary file not shown.
Binary file not shown.
BIN
EAPMethods/MSIBuild/MakefileEAPMethod.mak
Normal file
BIN
EAPMethods/MSIBuild/MakefileEAPMethod.mak
Normal file
Binary file not shown.
895
EAPMethods/Main.cpp
Normal file
895
EAPMethods/Main.cpp
Normal file
@ -0,0 +1,895 @@
|
|||||||
|
/*
|
||||||
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
Copyright © 2015-2022 Amebis
|
||||||
|
Copyright © 2016 GÉANT
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "PCH.h"
|
||||||
|
|
||||||
|
#pragma comment(lib, "Ws2_32.lib")
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
using namespace winstd;
|
||||||
|
|
||||||
|
|
||||||
|
EAPMETHOD_PEER g_peer;
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// DLL main entry point
|
||||||
|
///
|
||||||
|
/// \sa [DllMain entry point](https://msdn.microsoft.com/en-us/library/windows/desktop/ms682583.aspx)
|
||||||
|
///
|
||||||
|
BOOL WINAPI DllMain(_In_ HINSTANCE hinstDLL, _In_ DWORD fdwReason, _In_ LPVOID lpvReserved)
|
||||||
|
{
|
||||||
|
UNREFERENCED_PARAMETER(lpvReserved);
|
||||||
|
|
||||||
|
if (fdwReason == DLL_PROCESS_ATTACH) {
|
||||||
|
#ifdef _DEBUG
|
||||||
|
//Sleep(10000);
|
||||||
|
_CrtSetDbgFlag(_crtDbgFlag | _CRTDBG_ALLOC_MEM_DF | _CRTDBG_CHECK_ALWAYS_DF | _CRTDBG_CHECK_CRT_DF | _CRTDBG_LEAK_CHECK_DF);
|
||||||
|
#endif
|
||||||
|
g_peer.m_instance = hinstDLL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Releases all memory associated with an opaque user interface context data buffer.
|
||||||
|
///
|
||||||
|
/// \sa [EapPeerFreeMemory function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363606.aspx)
|
||||||
|
///
|
||||||
|
_Use_decl_annotations_
|
||||||
|
VOID WINAPI EapPeerFreeMemory(void *pUIContextData)
|
||||||
|
{
|
||||||
|
event_fn_auto event_auto(g_peer.get_event_fn_auto(__FUNCTION__));
|
||||||
|
|
||||||
|
if (pUIContextData)
|
||||||
|
g_peer.free_memory((BYTE*)pUIContextData);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Releases error-specific memory allocated by the EAP peer method.
|
||||||
|
///
|
||||||
|
/// \sa [EapPeerFreeErrorMemory function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363605.aspx)
|
||||||
|
///
|
||||||
|
_Use_decl_annotations_
|
||||||
|
VOID WINAPI EapPeerFreeErrorMemory(EAP_ERROR *ppEapError)
|
||||||
|
{
|
||||||
|
event_fn_auto event_auto(g_peer.get_event_fn_auto(__FUNCTION__));
|
||||||
|
|
||||||
|
if (ppEapError)
|
||||||
|
g_peer.free_error_memory(ppEapError);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Obtains a set of function pointers for an implementation of the EAP peer method currently loaded on the EapHost service.
|
||||||
|
///
|
||||||
|
/// \sa [EapPeerGetInfo function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363608.aspx)
|
||||||
|
///
|
||||||
|
_Use_decl_annotations_
|
||||||
|
DWORD WINAPI EapPeerGetInfo(EAP_TYPE* pEapType, EAP_PEER_METHOD_ROUTINES* pEapPeerMethodRoutines, EAP_ERROR **ppEapError)
|
||||||
|
{
|
||||||
|
DWORD dwResult = ERROR_SUCCESS;
|
||||||
|
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
||||||
|
#ifdef _DEBUG
|
||||||
|
//Sleep(10000);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Initialize output parameters.
|
||||||
|
if (pEapPeerMethodRoutines)
|
||||||
|
memset(pEapPeerMethodRoutines, 0, sizeof(*pEapPeerMethodRoutines));
|
||||||
|
if (ppEapError)
|
||||||
|
*ppEapError = NULL;
|
||||||
|
|
||||||
|
// Parameter check
|
||||||
|
if (!pEapType || !pEapPeerMethodRoutines)
|
||||||
|
return dwResult = ERROR_INVALID_PARAMETER;
|
||||||
|
if (pEapType->type != EAPMETHOD_TYPE)
|
||||||
|
return dwResult = ERROR_NOT_SUPPORTED;
|
||||||
|
|
||||||
|
pEapPeerMethodRoutines->dwVersion =
|
||||||
|
((PRODUCT_VERSION_MAJ & 0xff) << 24) |
|
||||||
|
((PRODUCT_VERSION_MIN & 0xff) << 16) |
|
||||||
|
((PRODUCT_VERSION_REV & 0xff) << 8) |
|
||||||
|
(PRODUCT_VERSION_BUILD & 0xff);
|
||||||
|
pEapPeerMethodRoutines->pEapType = NULL;
|
||||||
|
|
||||||
|
pEapPeerMethodRoutines->EapPeerInitialize = EapPeerInitialize;
|
||||||
|
pEapPeerMethodRoutines->EapPeerShutdown = EapPeerShutdown;
|
||||||
|
pEapPeerMethodRoutines->EapPeerBeginSession = EapPeerBeginSession;
|
||||||
|
pEapPeerMethodRoutines->EapPeerEndSession = EapPeerEndSession;
|
||||||
|
pEapPeerMethodRoutines->EapPeerSetCredentials = NULL; // Always NULL unless we want to use generic credential UI
|
||||||
|
pEapPeerMethodRoutines->EapPeerGetIdentity = EapPeerGetIdentity;
|
||||||
|
pEapPeerMethodRoutines->EapPeerProcessRequestPacket = EapPeerProcessRequestPacket;
|
||||||
|
pEapPeerMethodRoutines->EapPeerGetResponsePacket = EapPeerGetResponsePacket;
|
||||||
|
pEapPeerMethodRoutines->EapPeerGetResult = EapPeerGetResult;
|
||||||
|
pEapPeerMethodRoutines->EapPeerGetUIContext = EapPeerGetUIContext;
|
||||||
|
pEapPeerMethodRoutines->EapPeerSetUIContext = EapPeerSetUIContext;
|
||||||
|
pEapPeerMethodRoutines->EapPeerGetResponseAttributes = EapPeerGetResponseAttributes;
|
||||||
|
pEapPeerMethodRoutines->EapPeerSetResponseAttributes = EapPeerSetResponseAttributes;
|
||||||
|
|
||||||
|
return dwResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#pragma warning(push)
|
||||||
|
#pragma warning(disable: 4702) // Compiler is smart enough to find out the initialize() method is empty => never throws an exception.
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Initializes an EAP peer method for EapHost.
|
||||||
|
///
|
||||||
|
/// \sa [EapPeerInitialize function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363613.aspx)
|
||||||
|
///
|
||||||
|
//_Use_decl_annotations_
|
||||||
|
DWORD APIENTRY EapPeerInitialize(EAP_ERROR **ppEapError)
|
||||||
|
{
|
||||||
|
DWORD dwResult = ERROR_SUCCESS;
|
||||||
|
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
||||||
|
#ifdef _DEBUG
|
||||||
|
//Sleep(10000);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Initialize output parameters.
|
||||||
|
if (ppEapError)
|
||||||
|
*ppEapError = NULL;
|
||||||
|
|
||||||
|
try {
|
||||||
|
g_peer.initialize();
|
||||||
|
} catch (std::exception &err) {
|
||||||
|
dwResult = g_peer.log_error(ppEapError, err);
|
||||||
|
} catch (...) {
|
||||||
|
dwResult = ERROR_INVALID_DATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
return dwResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma warning(pop)
|
||||||
|
|
||||||
|
|
||||||
|
#pragma warning(push)
|
||||||
|
#pragma warning(disable: 4702) // Compiler is smart enough to find out the shutdown() method is empty => never throws an exception.
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Shuts down the EAP method and prepares to unload its corresponding DLL.
|
||||||
|
///
|
||||||
|
/// \sa [EapPeerShutdown function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363627.aspx)
|
||||||
|
///
|
||||||
|
//_Use_decl_annotations_
|
||||||
|
DWORD APIENTRY EapPeerShutdown(EAP_ERROR **ppEapError)
|
||||||
|
{
|
||||||
|
DWORD dwResult = ERROR_SUCCESS;
|
||||||
|
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
||||||
|
#ifdef _DEBUG
|
||||||
|
//Sleep(10000);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Initialize output parameters.
|
||||||
|
if (ppEapError)
|
||||||
|
*ppEapError = NULL;
|
||||||
|
|
||||||
|
try {
|
||||||
|
g_peer.shutdown();
|
||||||
|
} catch (std::exception &err) {
|
||||||
|
dwResult = g_peer.log_error(ppEapError, err);
|
||||||
|
} catch (...) {
|
||||||
|
dwResult = ERROR_INVALID_DATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
return dwResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma warning(pop)
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Returns the user data and user identity after being called by EapHost.
|
||||||
|
///
|
||||||
|
/// \sa [EapPeerGetIdentity function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363607.aspx)
|
||||||
|
///
|
||||||
|
_Use_decl_annotations_
|
||||||
|
DWORD APIENTRY EapPeerGetIdentity(
|
||||||
|
DWORD dwFlags,
|
||||||
|
DWORD dwConnectionDataSize,
|
||||||
|
const BYTE *pConnectionData,
|
||||||
|
DWORD dwUserDataSize,
|
||||||
|
const BYTE *pUserData,
|
||||||
|
HANDLE hTokenImpersonateUser,
|
||||||
|
BOOL *pfInvokeUI,
|
||||||
|
DWORD *pdwUserDataOutSize,
|
||||||
|
BYTE **ppUserDataOut,
|
||||||
|
WCHAR **ppwszIdentity,
|
||||||
|
EAP_ERROR **ppEapError)
|
||||||
|
{
|
||||||
|
DWORD dwResult = ERROR_SUCCESS;
|
||||||
|
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
||||||
|
#ifdef _DEBUG
|
||||||
|
//Sleep(10000);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Initialize output parameters.
|
||||||
|
if (pfInvokeUI)
|
||||||
|
*pfInvokeUI = FALSE;
|
||||||
|
if (pdwUserDataOutSize)
|
||||||
|
*pdwUserDataOutSize = 0;
|
||||||
|
if (ppUserDataOut)
|
||||||
|
*ppUserDataOut = NULL;
|
||||||
|
if (ppwszIdentity)
|
||||||
|
*ppwszIdentity = NULL;
|
||||||
|
if (ppEapError)
|
||||||
|
*ppEapError = NULL;
|
||||||
|
|
||||||
|
// Parameter check
|
||||||
|
if (!pConnectionData && dwConnectionDataSize || !pUserData && dwUserDataSize || !pfInvokeUI || !pdwUserDataOutSize || !ppUserDataOut || !ppwszIdentity)
|
||||||
|
return dwResult = ERROR_INVALID_PARAMETER;
|
||||||
|
|
||||||
|
try {
|
||||||
|
g_peer.get_identity(dwFlags, pConnectionData, dwConnectionDataSize, pUserData, dwUserDataSize, ppUserDataOut, pdwUserDataOutSize, hTokenImpersonateUser, pfInvokeUI, ppwszIdentity);
|
||||||
|
} catch (std::exception &err) {
|
||||||
|
dwResult = g_peer.log_error(ppEapError, err);
|
||||||
|
} catch (...) {
|
||||||
|
dwResult = ERROR_INVALID_DATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
return dwResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Starts an EAP authentication session on the peer EapHost using the EAP method.
|
||||||
|
///
|
||||||
|
/// \sa [EapPeerBeginSession function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363600.aspx)
|
||||||
|
///
|
||||||
|
//_Use_decl_annotations_
|
||||||
|
DWORD APIENTRY EapPeerBeginSession(
|
||||||
|
DWORD dwFlags,
|
||||||
|
const EapAttributes *pAttributeArray,
|
||||||
|
HANDLE hTokenImpersonateUser,
|
||||||
|
DWORD dwConnectionDataSize,
|
||||||
|
/*const*/ BYTE *pConnectionData,
|
||||||
|
DWORD dwUserDataSize,
|
||||||
|
/*const*/ BYTE *pUserData,
|
||||||
|
DWORD dwMaxSendPacketSize,
|
||||||
|
EAP_SESSION_HANDLE *phSession,
|
||||||
|
EAP_ERROR **ppEapError)
|
||||||
|
{
|
||||||
|
DWORD dwResult = ERROR_SUCCESS;
|
||||||
|
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
||||||
|
#ifdef _DEBUG
|
||||||
|
//Sleep(10000);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Initialize output parameters.
|
||||||
|
if (phSession)
|
||||||
|
*phSession = NULL;
|
||||||
|
if (ppEapError)
|
||||||
|
*ppEapError = NULL;
|
||||||
|
|
||||||
|
// Parameter check
|
||||||
|
if (!pConnectionData && dwConnectionDataSize || !pUserData && dwUserDataSize || !phSession)
|
||||||
|
return dwResult = ERROR_INVALID_PARAMETER;
|
||||||
|
|
||||||
|
try {
|
||||||
|
*phSession = g_peer.begin_session(dwFlags, pAttributeArray, hTokenImpersonateUser, pConnectionData, dwConnectionDataSize, pUserData, dwUserDataSize, dwMaxSendPacketSize);
|
||||||
|
} catch (std::exception &err) {
|
||||||
|
dwResult = g_peer.log_error(ppEapError, err);
|
||||||
|
} catch (...) {
|
||||||
|
dwResult = ERROR_INVALID_DATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
return dwResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Ends an EAP authentication session for the EAP method.
|
||||||
|
///
|
||||||
|
/// \sa [EapPeerEndSession function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363604.aspx)
|
||||||
|
///
|
||||||
|
//_Use_decl_annotations_
|
||||||
|
DWORD APIENTRY EapPeerEndSession(
|
||||||
|
EAP_SESSION_HANDLE hSession,
|
||||||
|
EAP_ERROR **ppEapError)
|
||||||
|
{
|
||||||
|
DWORD dwResult = ERROR_SUCCESS;
|
||||||
|
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
||||||
|
#ifdef _DEBUG
|
||||||
|
//Sleep(10000);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Initialize output parameters.
|
||||||
|
if (ppEapError)
|
||||||
|
*ppEapError = NULL;
|
||||||
|
|
||||||
|
// Parameter check
|
||||||
|
if (!hSession)
|
||||||
|
return dwResult = ERROR_INVALID_PARAMETER;
|
||||||
|
|
||||||
|
try {
|
||||||
|
g_peer.end_session(hSession);
|
||||||
|
} catch (std::exception &err) {
|
||||||
|
dwResult = g_peer.log_error(ppEapError, err);
|
||||||
|
} catch (...) {
|
||||||
|
dwResult = ERROR_INVALID_DATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
return dwResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Processes a packet received by EapHost from a supplicant.
|
||||||
|
///
|
||||||
|
/// \sa [EapPeerProcessRequestPacket function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363621.aspx)
|
||||||
|
///
|
||||||
|
//_Use_decl_annotations_
|
||||||
|
DWORD APIENTRY EapPeerProcessRequestPacket(
|
||||||
|
EAP_SESSION_HANDLE hSession,
|
||||||
|
DWORD dwReceivedPacketSize,
|
||||||
|
/*const*/ EapPacket *pReceivedPacket,
|
||||||
|
EapPeerMethodOutput *pEapOutput,
|
||||||
|
EAP_ERROR **ppEapError)
|
||||||
|
{
|
||||||
|
DWORD dwResult = ERROR_SUCCESS;
|
||||||
|
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
||||||
|
#ifdef _DEBUG
|
||||||
|
//Sleep(10000);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Initialize output parameters.
|
||||||
|
if (pEapOutput)
|
||||||
|
memset(pEapOutput, 0, sizeof(*pEapOutput));
|
||||||
|
if (ppEapError)
|
||||||
|
*ppEapError = NULL;
|
||||||
|
|
||||||
|
// Parameter check
|
||||||
|
if (!hSession || !pReceivedPacket || dwReceivedPacketSize < sizeof(EapPacket) || pReceivedPacket->Data[0] != EAPMETHOD_TYPE || !pEapOutput)
|
||||||
|
return dwResult = ERROR_INVALID_PARAMETER;
|
||||||
|
|
||||||
|
try {
|
||||||
|
g_peer.process_request_packet(hSession, pReceivedPacket, dwReceivedPacketSize, pEapOutput);
|
||||||
|
} catch (std::exception &err) {
|
||||||
|
dwResult = g_peer.log_error(ppEapError, err);
|
||||||
|
} catch (...) {
|
||||||
|
dwResult = ERROR_INVALID_DATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
return dwResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Obtains a response packet from the EAP method.
|
||||||
|
///
|
||||||
|
/// \sa [EapPeerGetResponsePacket function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363610.aspx)
|
||||||
|
///
|
||||||
|
//_Use_decl_annotations_
|
||||||
|
DWORD APIENTRY EapPeerGetResponsePacket(
|
||||||
|
EAP_SESSION_HANDLE hSession,
|
||||||
|
DWORD *pdwSendPacketSize,
|
||||||
|
EapPacket *pSendPacket,
|
||||||
|
EAP_ERROR **ppEapError)
|
||||||
|
{
|
||||||
|
DWORD dwResult = ERROR_SUCCESS;
|
||||||
|
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
||||||
|
#ifdef _DEBUG
|
||||||
|
//Sleep(10000);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Initialize output parameters.
|
||||||
|
if (ppEapError)
|
||||||
|
*ppEapError = NULL;
|
||||||
|
|
||||||
|
// Parameter check
|
||||||
|
if (!hSession || !pdwSendPacketSize || !pSendPacket && *pdwSendPacketSize)
|
||||||
|
return dwResult = ERROR_INVALID_PARAMETER;
|
||||||
|
|
||||||
|
try {
|
||||||
|
g_peer.get_response_packet(hSession, pSendPacket, pdwSendPacketSize);
|
||||||
|
} catch (std::exception &err) {
|
||||||
|
dwResult = g_peer.log_error(ppEapError, err);
|
||||||
|
} catch (...) {
|
||||||
|
dwResult = ERROR_INVALID_DATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
return dwResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Obtains the result of an authentication session from the EAP method.
|
||||||
|
///
|
||||||
|
/// \sa [EapPeerGetResult function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363611.aspx)
|
||||||
|
///
|
||||||
|
//_Use_decl_annotations_
|
||||||
|
DWORD APIENTRY EapPeerGetResult(
|
||||||
|
EAP_SESSION_HANDLE hSession,
|
||||||
|
EapPeerMethodResultReason reason,
|
||||||
|
EapPeerMethodResult *pResult,
|
||||||
|
EAP_ERROR **ppEapError)
|
||||||
|
{
|
||||||
|
DWORD dwResult = ERROR_SUCCESS;
|
||||||
|
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
||||||
|
#ifdef _DEBUG
|
||||||
|
//Sleep(10000);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Initialize output parameters.
|
||||||
|
if (ppEapError)
|
||||||
|
*ppEapError = NULL;
|
||||||
|
|
||||||
|
// Parameter check
|
||||||
|
if (!hSession || !pResult)
|
||||||
|
return dwResult = ERROR_INVALID_PARAMETER;
|
||||||
|
|
||||||
|
try {
|
||||||
|
g_peer.get_result(hSession, reason, pResult);
|
||||||
|
} catch (std::exception &err) {
|
||||||
|
dwResult = g_peer.log_error(ppEapError, err);
|
||||||
|
} catch (...) {
|
||||||
|
dwResult = ERROR_INVALID_DATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
return dwResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Obtains the user interface context from the EAP method.
|
||||||
|
///
|
||||||
|
/// \note This function is always followed by the `EapPeerInvokeInteractiveUI()` function, which is followed by the `EapPeerSetUIContext()` function.
|
||||||
|
///
|
||||||
|
/// \sa [EapPeerGetUIContext function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363612.aspx)
|
||||||
|
///
|
||||||
|
//_Use_decl_annotations_
|
||||||
|
DWORD APIENTRY EapPeerGetUIContext(
|
||||||
|
EAP_SESSION_HANDLE hSession,
|
||||||
|
DWORD *pdwUIContextDataSize,
|
||||||
|
BYTE **ppUIContextData,
|
||||||
|
EAP_ERROR **ppEapError)
|
||||||
|
{
|
||||||
|
DWORD dwResult = ERROR_SUCCESS;
|
||||||
|
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
||||||
|
#ifdef _DEBUG
|
||||||
|
//Sleep(10000);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Initialize output parameters.
|
||||||
|
if (pdwUIContextDataSize)
|
||||||
|
*pdwUIContextDataSize = 0;
|
||||||
|
if (ppUIContextData)
|
||||||
|
*ppUIContextData = NULL;
|
||||||
|
if (ppEapError)
|
||||||
|
*ppEapError = NULL;
|
||||||
|
|
||||||
|
// Parameter check
|
||||||
|
if (!hSession || !pdwUIContextDataSize || !ppUIContextData)
|
||||||
|
return dwResult = ERROR_INVALID_PARAMETER;
|
||||||
|
|
||||||
|
try {
|
||||||
|
g_peer.get_ui_context(hSession, ppUIContextData, pdwUIContextDataSize);
|
||||||
|
} catch (std::exception &err) {
|
||||||
|
dwResult = g_peer.log_error(ppEapError, err);
|
||||||
|
} catch (...) {
|
||||||
|
dwResult = ERROR_INVALID_DATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
return dwResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Provides a user interface context to the EAP method.
|
||||||
|
///
|
||||||
|
/// \note This function is called after the UI has been raised through the `EapPeerGetUIContext()` function.
|
||||||
|
///
|
||||||
|
/// \sa [EapPeerSetUIContext function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363626.aspx)
|
||||||
|
///
|
||||||
|
//_Use_decl_annotations_
|
||||||
|
DWORD APIENTRY EapPeerSetUIContext(
|
||||||
|
EAP_SESSION_HANDLE hSession,
|
||||||
|
DWORD dwUIContextDataSize,
|
||||||
|
const BYTE *pUIContextData,
|
||||||
|
EapPeerMethodOutput *pEapOutput,
|
||||||
|
EAP_ERROR **ppEapError)
|
||||||
|
{
|
||||||
|
DWORD dwResult = ERROR_SUCCESS;
|
||||||
|
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
||||||
|
#ifdef _DEBUG
|
||||||
|
//Sleep(10000);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Initialize output parameters.
|
||||||
|
if (pEapOutput)
|
||||||
|
memset(pEapOutput, 0, sizeof(*pEapOutput));
|
||||||
|
if (ppEapError)
|
||||||
|
*ppEapError = NULL;
|
||||||
|
|
||||||
|
// Parameter check
|
||||||
|
if (!hSession || !pUIContextData && dwUIContextDataSize || !pEapOutput)
|
||||||
|
return dwResult = ERROR_INVALID_PARAMETER;
|
||||||
|
|
||||||
|
try {
|
||||||
|
g_peer.set_ui_context(hSession, pUIContextData, dwUIContextDataSize, pEapOutput);
|
||||||
|
} catch (std::exception &err) {
|
||||||
|
dwResult = g_peer.log_error(ppEapError, err);
|
||||||
|
} catch (...) {
|
||||||
|
dwResult = ERROR_INVALID_DATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
return dwResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Obtains an array of EAP response attributes from the EAP method.
|
||||||
|
///
|
||||||
|
/// \sa [EapPeerGetResponseAttributes function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363609.aspx)
|
||||||
|
///
|
||||||
|
//_Use_decl_annotations_
|
||||||
|
DWORD APIENTRY EapPeerGetResponseAttributes(
|
||||||
|
EAP_SESSION_HANDLE hSession,
|
||||||
|
EapAttributes *pAttribs,
|
||||||
|
EAP_ERROR **ppEapError)
|
||||||
|
{
|
||||||
|
DWORD dwResult = ERROR_SUCCESS;
|
||||||
|
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
||||||
|
#ifdef _DEBUG
|
||||||
|
//Sleep(10000);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Initialize output parameters.
|
||||||
|
if (pAttribs)
|
||||||
|
memset(pAttribs, 0, sizeof(*pAttribs));
|
||||||
|
if (ppEapError)
|
||||||
|
*ppEapError = NULL;
|
||||||
|
|
||||||
|
// Parameter check
|
||||||
|
if (!hSession || !pAttribs)
|
||||||
|
return dwResult = ERROR_INVALID_PARAMETER;
|
||||||
|
|
||||||
|
try {
|
||||||
|
g_peer.get_response_attributes(hSession, pAttribs);
|
||||||
|
} catch (std::exception &err) {
|
||||||
|
dwResult = g_peer.log_error(ppEapError, err);
|
||||||
|
} catch (...) {
|
||||||
|
dwResult = ERROR_INVALID_DATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
return dwResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Provides an updated array of EAP response attributes to the EAP method.
|
||||||
|
///
|
||||||
|
/// \sa [EapPeerSetResponseAttributes function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363625.aspx)
|
||||||
|
///
|
||||||
|
//_Use_decl_annotations_
|
||||||
|
DWORD APIENTRY EapPeerSetResponseAttributes(
|
||||||
|
EAP_SESSION_HANDLE hSession,
|
||||||
|
/*const*/ EapAttributes *pAttribs,
|
||||||
|
EapPeerMethodOutput *pEapOutput,
|
||||||
|
EAP_ERROR **ppEapError)
|
||||||
|
{
|
||||||
|
DWORD dwResult = ERROR_SUCCESS;
|
||||||
|
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
||||||
|
#ifdef _DEBUG
|
||||||
|
//Sleep(10000);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Initialize output parameters.
|
||||||
|
if (pEapOutput)
|
||||||
|
memset(pEapOutput, 0, sizeof(*pEapOutput));
|
||||||
|
if (ppEapError)
|
||||||
|
*ppEapError = NULL;
|
||||||
|
|
||||||
|
// Parameter check
|
||||||
|
if (!hSession || !pEapOutput)
|
||||||
|
return dwResult = ERROR_INVALID_PARAMETER;
|
||||||
|
|
||||||
|
try {
|
||||||
|
g_peer.set_response_attributes(hSession, pAttribs, pEapOutput);
|
||||||
|
} catch (std::exception &err) {
|
||||||
|
dwResult = g_peer.log_error(ppEapError, err);
|
||||||
|
} catch (...) {
|
||||||
|
dwResult = ERROR_INVALID_DATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
return dwResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Defines the implementation of an EAP method-specific function that retrieves the properties of an EAP method given the connection and user data.
|
||||||
|
///
|
||||||
|
/// \sa [EapPeerGetMethodProperties function](https://msdn.microsoft.com/en-us/library/windows/desktop/hh706636.aspx)
|
||||||
|
///
|
||||||
|
_Use_decl_annotations_
|
||||||
|
DWORD WINAPI EapPeerGetMethodProperties(
|
||||||
|
DWORD dwVersion,
|
||||||
|
DWORD dwFlags,
|
||||||
|
EAP_METHOD_TYPE eapMethodType,
|
||||||
|
HANDLE hUserImpersonationToken,
|
||||||
|
DWORD dwConnectionDataSize,
|
||||||
|
/*const*/ BYTE *pConnectionData,
|
||||||
|
DWORD dwUserDataSize,
|
||||||
|
/*const*/ BYTE *pUserData,
|
||||||
|
EAP_METHOD_PROPERTY_ARRAY *pMethodPropertyArray,
|
||||||
|
EAP_ERROR **ppEapError)
|
||||||
|
{
|
||||||
|
DWORD dwResult = ERROR_SUCCESS;
|
||||||
|
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
||||||
|
#ifdef _DEBUG
|
||||||
|
//Sleep(10000);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Initialize output parameters.
|
||||||
|
if (pMethodPropertyArray)
|
||||||
|
memset(pMethodPropertyArray, 0, sizeof(*pMethodPropertyArray));
|
||||||
|
if (ppEapError)
|
||||||
|
*ppEapError = NULL;
|
||||||
|
|
||||||
|
// Parameter check
|
||||||
|
if (eapMethodType.eapType.type != EAPMETHOD_TYPE || eapMethodType.dwAuthorId != EAPMETHOD_AUTHOR_ID)
|
||||||
|
return dwResult = ERROR_NOT_SUPPORTED;
|
||||||
|
if (!pConnectionData && dwConnectionDataSize || !pUserData && dwUserDataSize || !pMethodPropertyArray)
|
||||||
|
return dwResult = ERROR_INVALID_PARAMETER;
|
||||||
|
|
||||||
|
try {
|
||||||
|
g_peer.get_method_properties(dwVersion, dwFlags, hUserImpersonationToken, pConnectionData, dwConnectionDataSize, pUserData, dwUserDataSize, pMethodPropertyArray);
|
||||||
|
} catch (std::exception &err) {
|
||||||
|
dwResult = g_peer.log_error(ppEapError, err);
|
||||||
|
} catch (...) {
|
||||||
|
dwResult = ERROR_INVALID_DATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
return dwResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Converts XML into the configuration BLOB. The XML based credentials can come from group policy or from a system administrator.
|
||||||
|
///
|
||||||
|
/// \sa [EapPeerCredentialsXml2Blob function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363603.aspx)
|
||||||
|
///
|
||||||
|
_Use_decl_annotations_
|
||||||
|
DWORD WINAPI EapPeerCredentialsXml2Blob(
|
||||||
|
DWORD dwFlags,
|
||||||
|
EAP_METHOD_TYPE eapMethodType,
|
||||||
|
IXMLDOMDocument2 *pCredentialsDoc,
|
||||||
|
const BYTE *pConnectionData,
|
||||||
|
DWORD dwConnectionDataSize,
|
||||||
|
BYTE **ppCredentialsOut,
|
||||||
|
DWORD *pdwCredentialsOutSize,
|
||||||
|
EAP_ERROR **ppEapError)
|
||||||
|
{
|
||||||
|
DWORD dwResult = ERROR_SUCCESS;
|
||||||
|
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
||||||
|
#ifdef _DEBUG
|
||||||
|
//Sleep(10000);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Initialize output parameters.
|
||||||
|
if (ppCredentialsOut)
|
||||||
|
*ppCredentialsOut = NULL;
|
||||||
|
if (pdwCredentialsOutSize)
|
||||||
|
*pdwCredentialsOutSize = 0;
|
||||||
|
if (ppEapError)
|
||||||
|
*ppEapError = NULL;
|
||||||
|
|
||||||
|
// Parameter check
|
||||||
|
if (eapMethodType.eapType.type != EAPMETHOD_TYPE || eapMethodType.dwAuthorId != EAPMETHOD_AUTHOR_ID)
|
||||||
|
return dwResult = ERROR_NOT_SUPPORTED;
|
||||||
|
if (!pCredentialsDoc || !pConnectionData && dwConnectionDataSize || !ppCredentialsOut || !pdwCredentialsOutSize)
|
||||||
|
return dwResult = ERROR_INVALID_PARAMETER;
|
||||||
|
|
||||||
|
// <Credentials>
|
||||||
|
com_obj<IXMLDOMNode> pXmlElCredentials;
|
||||||
|
if (FAILED(eapxml::select_node(pCredentialsDoc, bstr(L"//EapHostUserCredentials/Credentials"), pXmlElCredentials)))
|
||||||
|
return dwResult = g_peer.log_error(ppEapError, ERROR_NOT_FOUND, _T(__FUNCTION__) _T(" Error selecting <EapHostUserCredentials><Credentials> element."));
|
||||||
|
|
||||||
|
// Load credentials.
|
||||||
|
pCredentialsDoc->setProperty(bstr(L"SelectionNamespaces"), variant(L"xmlns:eap-metadata=\"urn:ietf:params:xml:ns:yang:ietf-eap-metadata\""));
|
||||||
|
try {
|
||||||
|
g_peer.credentials_xml2blob(dwFlags, pXmlElCredentials, pConnectionData, dwConnectionDataSize, ppCredentialsOut, pdwCredentialsOutSize);
|
||||||
|
} catch (std::exception &err) {
|
||||||
|
dwResult = g_peer.log_error(ppEapError, err);
|
||||||
|
} catch (...) {
|
||||||
|
dwResult = ERROR_INVALID_DATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
return dwResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Defines the implementation of an EAP method-specific function that obtains the EAP Single-Sign-On (SSO) credential input fields for an EAP method.
|
||||||
|
///
|
||||||
|
/// \sa [EapPeerQueryCredentialInputFields function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363622.aspx)
|
||||||
|
///
|
||||||
|
_Use_decl_annotations_
|
||||||
|
DWORD WINAPI EapPeerQueryCredentialInputFields(
|
||||||
|
HANDLE hUserImpersonationToken,
|
||||||
|
EAP_METHOD_TYPE eapMethodType,
|
||||||
|
DWORD dwFlags,
|
||||||
|
DWORD dwConnectionDataSize,
|
||||||
|
/*const*/ BYTE *pConnectionData,
|
||||||
|
EAP_CONFIG_INPUT_FIELD_ARRAY *pEapConfigInputFieldsArray,
|
||||||
|
EAP_ERROR **ppEapError)
|
||||||
|
{
|
||||||
|
DWORD dwResult = ERROR_SUCCESS;
|
||||||
|
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
||||||
|
#ifdef _DEBUG
|
||||||
|
//Sleep(10000);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Initialize output parameters.
|
||||||
|
if (pEapConfigInputFieldsArray)
|
||||||
|
memset(pEapConfigInputFieldsArray, 0, sizeof(*pEapConfigInputFieldsArray));
|
||||||
|
if (ppEapError)
|
||||||
|
*ppEapError = NULL;
|
||||||
|
|
||||||
|
// Parameter check
|
||||||
|
if (eapMethodType.eapType.type != EAPMETHOD_TYPE || eapMethodType.dwAuthorId != EAPMETHOD_AUTHOR_ID)
|
||||||
|
return dwResult = ERROR_NOT_SUPPORTED;
|
||||||
|
if (!pConnectionData && dwConnectionDataSize || !pEapConfigInputFieldsArray)
|
||||||
|
return dwResult = ERROR_INVALID_PARAMETER;
|
||||||
|
|
||||||
|
try {
|
||||||
|
g_peer.query_credential_input_fields(hUserImpersonationToken, dwFlags, dwConnectionDataSize, pConnectionData, pEapConfigInputFieldsArray);
|
||||||
|
} catch (std::exception &err) {
|
||||||
|
dwResult = g_peer.log_error(ppEapError, err);
|
||||||
|
} catch (...) {
|
||||||
|
dwResult = ERROR_INVALID_DATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
return dwResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Defines the implementation of an EAP method function that obtains the user BLOB data provided in an interactive Single-Sign-On (SSO) UI raised on the supplicant.
|
||||||
|
///
|
||||||
|
/// \sa [EapPeerQueryUserBlobFromCredentialInputFields function](https://msdn.microsoft.com/en-us/library/windows/desktop/bb204697.aspx)
|
||||||
|
///
|
||||||
|
#pragma warning(suppress: 6101) // Function is incorrectly annotated and code analysis gets confused
|
||||||
|
_Use_decl_annotations_
|
||||||
|
DWORD WINAPI EapPeerQueryUserBlobFromCredentialInputFields(
|
||||||
|
HANDLE hUserImpersonationToken,
|
||||||
|
EAP_METHOD_TYPE eapMethodType,
|
||||||
|
DWORD dwFlags,
|
||||||
|
DWORD dwConnectionDataSize,
|
||||||
|
/*const*/ BYTE *pConnectionData,
|
||||||
|
const EAP_CONFIG_INPUT_FIELD_ARRAY *pEapConfigInputFieldArray,
|
||||||
|
DWORD *pdwUsersBlobSize,
|
||||||
|
BYTE **ppUserBlob,
|
||||||
|
EAP_ERROR **ppEapError)
|
||||||
|
{
|
||||||
|
DWORD dwResult = ERROR_SUCCESS;
|
||||||
|
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
||||||
|
#ifdef _DEBUG
|
||||||
|
//Sleep(10000);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Initialize output parameters.
|
||||||
|
if (ppEapError)
|
||||||
|
*ppEapError = NULL;
|
||||||
|
|
||||||
|
// Parameter check
|
||||||
|
if (eapMethodType.eapType.type != EAPMETHOD_TYPE || eapMethodType.dwAuthorId != EAPMETHOD_AUTHOR_ID)
|
||||||
|
return dwResult = ERROR_NOT_SUPPORTED;
|
||||||
|
if (!pConnectionData && dwConnectionDataSize || !pEapConfigInputFieldArray || !pdwUsersBlobSize || !ppUserBlob)
|
||||||
|
return dwResult = ERROR_INVALID_PARAMETER;
|
||||||
|
|
||||||
|
try {
|
||||||
|
g_peer.query_user_blob_from_credential_input_fields(hUserImpersonationToken, dwFlags, dwConnectionDataSize, pConnectionData, pEapConfigInputFieldArray, pdwUsersBlobSize, ppUserBlob);
|
||||||
|
} catch (std::exception &err) {
|
||||||
|
dwResult = g_peer.log_error(ppEapError, err);
|
||||||
|
} catch (...) {
|
||||||
|
dwResult = ERROR_INVALID_DATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
return dwResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Defines the implementation of an EAP method API that provides the input fields for interactive UI components to be raised on the supplicant.
|
||||||
|
///
|
||||||
|
/// \sa [EapPeerQueryInteractiveUIInputFields function](https://msdn.microsoft.com/en-us/library/windows/desktop/bb204695.aspx)
|
||||||
|
///
|
||||||
|
_Use_decl_annotations_
|
||||||
|
DWORD WINAPI EapPeerQueryInteractiveUIInputFields(
|
||||||
|
DWORD dwVersion,
|
||||||
|
DWORD dwFlags,
|
||||||
|
DWORD dwUIContextDataSize,
|
||||||
|
const BYTE *pUIContextData,
|
||||||
|
EAP_INTERACTIVE_UI_DATA *pEapInteractiveUIData,
|
||||||
|
EAP_ERROR **ppEapError,
|
||||||
|
LPVOID *ppvReserved)
|
||||||
|
{
|
||||||
|
UNREFERENCED_PARAMETER(ppvReserved);
|
||||||
|
|
||||||
|
DWORD dwResult = ERROR_SUCCESS;
|
||||||
|
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
||||||
|
#ifdef _DEBUG
|
||||||
|
//Sleep(10000);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Initialize output parameters.
|
||||||
|
if (pEapInteractiveUIData)
|
||||||
|
memset(pEapInteractiveUIData, 0, sizeof(*pEapInteractiveUIData));
|
||||||
|
if (ppEapError)
|
||||||
|
*ppEapError = NULL;
|
||||||
|
|
||||||
|
// Parameter check
|
||||||
|
if (!pUIContextData && dwUIContextDataSize || !pEapInteractiveUIData)
|
||||||
|
return dwResult = ERROR_INVALID_PARAMETER;
|
||||||
|
|
||||||
|
try {
|
||||||
|
g_peer.query_interactive_ui_input_fields(dwVersion, dwFlags, dwUIContextDataSize, pUIContextData, pEapInteractiveUIData);
|
||||||
|
} catch (std::exception &err) {
|
||||||
|
dwResult = g_peer.log_error(ppEapError, err);
|
||||||
|
} catch (...) {
|
||||||
|
dwResult = ERROR_INVALID_DATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
return dwResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Converts user information into a user BLOB that can be consumed by EapHost run-time functions.
|
||||||
|
///
|
||||||
|
/// \sa [EapPeerQueryUIBlobFromInteractiveUIInputFields function](https://msdn.microsoft.com/en-us/library/windows/desktop/bb204696.aspx)
|
||||||
|
///
|
||||||
|
#pragma warning(suppress: 6387) // Function is incorrectly annotated and code analysis gets confused
|
||||||
|
#pragma warning(suppress: 28196)
|
||||||
|
_Use_decl_annotations_
|
||||||
|
DWORD WINAPI EapPeerQueryUIBlobFromInteractiveUIInputFields(
|
||||||
|
DWORD dwVersion,
|
||||||
|
DWORD dwFlags,
|
||||||
|
DWORD dwUIContextDataSize,
|
||||||
|
const BYTE *pUIContextData,
|
||||||
|
const EAP_INTERACTIVE_UI_DATA *pEapInteractiveUIData,
|
||||||
|
DWORD *pdwDataFromInteractiveUISize,
|
||||||
|
BYTE **ppDataFromInteractiveUI,
|
||||||
|
EAP_ERROR **ppEapError,
|
||||||
|
LPVOID *ppvReserved)
|
||||||
|
{
|
||||||
|
UNREFERENCED_PARAMETER(ppvReserved);
|
||||||
|
|
||||||
|
DWORD dwResult = ERROR_SUCCESS;
|
||||||
|
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
||||||
|
#ifdef _DEBUG
|
||||||
|
//Sleep(10000);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Initialize output parameters.
|
||||||
|
if (pdwDataFromInteractiveUISize)
|
||||||
|
*pdwDataFromInteractiveUISize = 0;
|
||||||
|
if (ppDataFromInteractiveUI)
|
||||||
|
*ppDataFromInteractiveUI = NULL;
|
||||||
|
if (ppEapError)
|
||||||
|
*ppEapError = NULL;
|
||||||
|
|
||||||
|
// Parameter check
|
||||||
|
if (!pUIContextData && dwUIContextDataSize || !pEapInteractiveUIData || !pdwDataFromInteractiveUISize || !ppDataFromInteractiveUI)
|
||||||
|
return dwResult = ERROR_INVALID_PARAMETER;
|
||||||
|
|
||||||
|
try {
|
||||||
|
g_peer.query_ui_blob_from_interactive_ui_input_fields(dwVersion, dwFlags, dwUIContextDataSize, pUIContextData, pEapInteractiveUIData, pdwDataFromInteractiveUISize, ppDataFromInteractiveUI);
|
||||||
|
} catch (std::exception &err) {
|
||||||
|
dwResult = g_peer.log_error(ppEapError, err);
|
||||||
|
} catch (...) {
|
||||||
|
dwResult = ERROR_INVALID_DATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
return dwResult;
|
||||||
|
}
|
359
EAPMethods/Main_UI.cpp
Normal file
359
EAPMethods/Main_UI.cpp
Normal file
@ -0,0 +1,359 @@
|
|||||||
|
/*
|
||||||
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
Copyright © 2015-2022 Amebis
|
||||||
|
Copyright © 2016 GÉANT
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "PCH_UI.h"
|
||||||
|
|
||||||
|
#pragma comment(lib, "msxml6.lib")
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
using namespace winstd;
|
||||||
|
|
||||||
|
|
||||||
|
HANDLE g_act_ctx = NULL;
|
||||||
|
EAPMETHOD_PEER_UI g_peer;
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// DLL main entry point
|
||||||
|
///
|
||||||
|
/// \sa [DllMain entry point](https://msdn.microsoft.com/en-us/library/windows/desktop/ms682583.aspx)
|
||||||
|
///
|
||||||
|
BOOL WINAPI DllMain(_In_ HINSTANCE hinstDLL, _In_ DWORD fdwReason, _In_ LPVOID lpvReserved)
|
||||||
|
{
|
||||||
|
UNREFERENCED_PARAMETER(lpvReserved);
|
||||||
|
|
||||||
|
if (fdwReason == DLL_PROCESS_ATTACH) {
|
||||||
|
#ifdef _DEBUG
|
||||||
|
//Sleep(10000);
|
||||||
|
_CrtSetDbgFlag(_crtDbgFlag | _CRTDBG_ALLOC_MEM_DF | _CRTDBG_CHECK_ALWAYS_DF | _CRTDBG_CHECK_CRT_DF | _CRTDBG_LEAK_CHECK_DF);
|
||||||
|
#endif
|
||||||
|
g_peer.m_instance = hinstDLL;
|
||||||
|
|
||||||
|
#if _WIN32_WINNT >= _WIN32_WINNT_VISTA
|
||||||
|
// Declare our DllHost process as DPI-aware.
|
||||||
|
SetProcessDPIAware();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Save current activation context, as proper activation context is set at this time only (LoadLibrary() call).
|
||||||
|
GetCurrentActCtx(&g_act_ctx);
|
||||||
|
} else if (fdwReason == DLL_PROCESS_DETACH) {
|
||||||
|
if (g_act_ctx)
|
||||||
|
ReleaseActCtx(g_act_ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Releases all memory associated with an opaque user interface context data buffer.
|
||||||
|
///
|
||||||
|
/// \sa [EapPeerFreeMemory function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363606.aspx)
|
||||||
|
///
|
||||||
|
_Use_decl_annotations_
|
||||||
|
VOID WINAPI EapPeerFreeMemory(void *pUIContextData)
|
||||||
|
{
|
||||||
|
event_fn_auto event_auto(g_peer.get_event_fn_auto(__FUNCTION__));
|
||||||
|
|
||||||
|
if (pUIContextData)
|
||||||
|
g_peer.free_memory((BYTE*)pUIContextData);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Releases error-specific memory allocated by the EAP peer method.
|
||||||
|
///
|
||||||
|
/// \sa [EapPeerFreeErrorMemory function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363605.aspx)
|
||||||
|
///
|
||||||
|
_Use_decl_annotations_
|
||||||
|
VOID WINAPI EapPeerFreeErrorMemory(EAP_ERROR *ppEapError)
|
||||||
|
{
|
||||||
|
event_fn_auto event_auto(g_peer.get_event_fn_auto(__FUNCTION__));
|
||||||
|
|
||||||
|
if (ppEapError)
|
||||||
|
g_peer.free_error_memory(ppEapError);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Converts XML into the configuration BLOB.
|
||||||
|
///
|
||||||
|
/// \sa [EapPeerConfigXml2Blob function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363602.aspx)
|
||||||
|
///
|
||||||
|
_Use_decl_annotations_
|
||||||
|
DWORD WINAPI EapPeerConfigXml2Blob(
|
||||||
|
DWORD dwFlags,
|
||||||
|
EAP_METHOD_TYPE eapMethodType,
|
||||||
|
IXMLDOMDocument2 *pConfigDoc,
|
||||||
|
BYTE **pConnectionDataOut,
|
||||||
|
DWORD *pdwConnectionDataOutSize,
|
||||||
|
EAP_ERROR **ppEapError)
|
||||||
|
{
|
||||||
|
DWORD dwResult = ERROR_SUCCESS;
|
||||||
|
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
||||||
|
#ifdef _DEBUG
|
||||||
|
//Sleep(10000);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Initialize output parameters.
|
||||||
|
if (pConnectionDataOut)
|
||||||
|
*pConnectionDataOut = NULL;
|
||||||
|
if (pdwConnectionDataOutSize)
|
||||||
|
*pdwConnectionDataOutSize = 0;
|
||||||
|
if (ppEapError)
|
||||||
|
*ppEapError = NULL;
|
||||||
|
|
||||||
|
// Parameter check
|
||||||
|
if (eapMethodType.eapType.type != EAPMETHOD_TYPE || eapMethodType.dwAuthorId != EAPMETHOD_AUTHOR_ID)
|
||||||
|
return dwResult = ERROR_NOT_SUPPORTED;
|
||||||
|
if (!pConfigDoc || !pConnectionDataOut || !pdwConnectionDataOutSize)
|
||||||
|
return dwResult = ERROR_INVALID_PARAMETER;
|
||||||
|
|
||||||
|
// Configure XML selection namespaces used.
|
||||||
|
pConfigDoc->setProperty(bstr(L"SelectionNamespaces"), variant(L"xmlns:eap-metadata=\"urn:ietf:params:xml:ns:yang:ietf-eap-metadata\" xmlns:eaphostconfig=\"http://www.microsoft.com/provisioning/EapHostConfig\""));
|
||||||
|
|
||||||
|
// <Config>
|
||||||
|
com_obj<IXMLDOMElement> pXmlElConfig;
|
||||||
|
if (FAILED(eapxml::select_element(pConfigDoc, bstr(L"//eaphostconfig:Config"), pXmlElConfig)))
|
||||||
|
return dwResult = g_peer.log_error(ppEapError, ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" Error reading <Config> element."));
|
||||||
|
|
||||||
|
// Load configuration.
|
||||||
|
try {
|
||||||
|
g_peer.config_xml2blob(dwFlags, pXmlElConfig, pConnectionDataOut, pdwConnectionDataOutSize);
|
||||||
|
} catch (std::exception &err) {
|
||||||
|
dwResult = g_peer.log_error(ppEapError, err);
|
||||||
|
} catch (...) {
|
||||||
|
dwResult = ERROR_INVALID_DATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
return dwResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Converts the configuration BLOB to XML.
|
||||||
|
///
|
||||||
|
/// The configuration BLOB is returned in the ppConnectionDataOut parameter of the EapPeerInvokeConfigUI function.
|
||||||
|
///
|
||||||
|
/// \sa [EapPeerConfigBlob2Xml function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363601.aspx)
|
||||||
|
///
|
||||||
|
_Use_decl_annotations_
|
||||||
|
DWORD WINAPI EapPeerConfigBlob2Xml(
|
||||||
|
DWORD dwFlags,
|
||||||
|
EAP_METHOD_TYPE eapMethodType,
|
||||||
|
const BYTE *pConnectionData,
|
||||||
|
DWORD dwConnectionDataSize,
|
||||||
|
IXMLDOMDocument2 **ppConfigDoc,
|
||||||
|
EAP_ERROR **ppEapError)
|
||||||
|
{
|
||||||
|
DWORD dwResult = ERROR_SUCCESS;
|
||||||
|
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
||||||
|
#ifdef _DEBUG
|
||||||
|
//Sleep(10000);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Initialize output parameters.
|
||||||
|
if (ppConfigDoc)
|
||||||
|
*ppConfigDoc = NULL;
|
||||||
|
if (ppEapError)
|
||||||
|
*ppEapError = NULL;
|
||||||
|
|
||||||
|
// Parameter check
|
||||||
|
if (eapMethodType.eapType.type != EAPMETHOD_TYPE || eapMethodType.dwAuthorId != EAPMETHOD_AUTHOR_ID)
|
||||||
|
return dwResult = ERROR_NOT_SUPPORTED;
|
||||||
|
if (!pConnectionData && dwConnectionDataSize || !ppConfigDoc)
|
||||||
|
return dwResult = ERROR_INVALID_PARAMETER;
|
||||||
|
|
||||||
|
HRESULT hr;
|
||||||
|
|
||||||
|
// Create configuration XML document.
|
||||||
|
com_obj<IXMLDOMDocument2> pConfigDoc;
|
||||||
|
if (FAILED(hr = CoCreateInstance(CLSID_DOMDocument60, NULL, CLSCTX_INPROC_SERVER, pConfigDoc)))
|
||||||
|
return dwResult = g_peer.log_error(ppEapError, HRESULT_CODE(hr), _T(__FUNCTION__) _T(" Error creating XML document."));
|
||||||
|
|
||||||
|
pConfigDoc->put_async(VARIANT_FALSE);
|
||||||
|
|
||||||
|
// Load empty XML configuration.
|
||||||
|
VARIANT_BOOL isSuccess = VARIANT_FALSE;
|
||||||
|
if (FAILED((hr = pConfigDoc->loadXML(L"<Config xmlns=\"http://www.microsoft.com/provisioning/EapHostConfig\"></Config>", &isSuccess))))
|
||||||
|
return dwResult = g_peer.log_error(ppEapError, HRESULT_CODE(hr), _T(__FUNCTION__) _T(" Error loading XML document template."));
|
||||||
|
if (!isSuccess)
|
||||||
|
return dwResult = g_peer.log_error(ppEapError, ERROR_XML_PARSE_ERROR, _T(__FUNCTION__) _T(" Loading XML template failed."));
|
||||||
|
|
||||||
|
// Configure XML selection namespaces used.
|
||||||
|
pConfigDoc->setProperty(bstr(L"SelectionNamespaces"), variant(L"xmlns:eap-metadata=\"urn:ietf:params:xml:ns:yang:ietf-eap-metadata\" xmlns:eaphostconfig=\"http://www.microsoft.com/provisioning/EapHostConfig\""));
|
||||||
|
|
||||||
|
// Select <Config> node.
|
||||||
|
com_obj<IXMLDOMNode> pXmlElConfig;
|
||||||
|
if (FAILED(eapxml::select_node(pConfigDoc, bstr(L"eaphostconfig:Config"), pXmlElConfig)))
|
||||||
|
return dwResult = g_peer.log_error(ppEapError, ERROR_NOT_FOUND, _T(__FUNCTION__) _T(" Error selecting <Config> element."));
|
||||||
|
|
||||||
|
// Save configuration.
|
||||||
|
pConfigDoc->setProperty(bstr(L"SelectionNamespaces"), variant(L"xmlns:eap-metadata=\"urn:ietf:params:xml:ns:yang:ietf-eap-metadata\""));
|
||||||
|
try {
|
||||||
|
g_peer.config_blob2xml(dwFlags, pConnectionData, dwConnectionDataSize, pConfigDoc, pXmlElConfig);
|
||||||
|
} catch (std::exception &err) {
|
||||||
|
dwResult = g_peer.log_error(ppEapError, err);
|
||||||
|
} catch (...) {
|
||||||
|
return dwResult = ERROR_INVALID_DATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
*ppConfigDoc = pConfigDoc.detach();
|
||||||
|
|
||||||
|
return dwResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Raises the EAP method's specific connection configuration user interface dialog on the client.
|
||||||
|
///
|
||||||
|
/// \sa [EapPeerInvokeConfigUI function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363614.aspx)
|
||||||
|
///
|
||||||
|
//_Use_decl_annotations_
|
||||||
|
DWORD WINAPI EapPeerInvokeConfigUI(
|
||||||
|
const EAP_METHOD_TYPE *pEapType,
|
||||||
|
HWND hwndParent,
|
||||||
|
DWORD dwFlags,
|
||||||
|
DWORD dwConnectionDataInSize,
|
||||||
|
const BYTE *pConnectionDataIn,
|
||||||
|
DWORD *pdwConnectionDataOutSize,
|
||||||
|
BYTE **ppConnectionDataOut,
|
||||||
|
EAP_ERROR **ppEapError)
|
||||||
|
{
|
||||||
|
UNREFERENCED_PARAMETER(dwFlags);
|
||||||
|
DWORD dwResult = ERROR_SUCCESS;
|
||||||
|
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
||||||
|
actctx_activator actctx(g_act_ctx);
|
||||||
|
#ifdef _DEBUG
|
||||||
|
//Sleep(10000);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Initialize output parameters.
|
||||||
|
if (pdwConnectionDataOutSize)
|
||||||
|
*pdwConnectionDataOutSize = 0;
|
||||||
|
if (ppConnectionDataOut)
|
||||||
|
*ppConnectionDataOut = NULL;
|
||||||
|
if (ppEapError)
|
||||||
|
*ppEapError = NULL;
|
||||||
|
|
||||||
|
// Parameter check
|
||||||
|
if (!pEapType || !pConnectionDataIn && dwConnectionDataInSize || !pdwConnectionDataOutSize || !ppConnectionDataOut)
|
||||||
|
return dwResult = ERROR_INVALID_PARAMETER;
|
||||||
|
if (pEapType->eapType.type != EAPMETHOD_TYPE || pEapType->dwAuthorId != EAPMETHOD_AUTHOR_ID)
|
||||||
|
return dwResult = ERROR_NOT_SUPPORTED;
|
||||||
|
|
||||||
|
try {
|
||||||
|
g_peer.invoke_config_ui(hwndParent, pConnectionDataIn, dwConnectionDataInSize, ppConnectionDataOut, pdwConnectionDataOutSize);
|
||||||
|
} catch (std::exception &err) {
|
||||||
|
dwResult = g_peer.log_error(ppEapError, err);
|
||||||
|
} catch (...) {
|
||||||
|
dwResult = ERROR_INVALID_DATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
return dwResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Raises a custom interactive user interface dialog to obtain user identity information for the EAP method on the client.
|
||||||
|
///
|
||||||
|
/// \sa [EapPeerInvokeIdentityUI function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363615.aspx)
|
||||||
|
///
|
||||||
|
//_Use_decl_annotations_
|
||||||
|
DWORD WINAPI EapPeerInvokeIdentityUI(
|
||||||
|
const EAP_METHOD_TYPE *pEapType,
|
||||||
|
DWORD dwFlags,
|
||||||
|
HWND hwndParent,
|
||||||
|
DWORD dwConnectionDataSize,
|
||||||
|
const BYTE *pConnectionData,
|
||||||
|
DWORD dwUserDataSize,
|
||||||
|
const BYTE *pUserData,
|
||||||
|
DWORD *pdwUserDataOutSize,
|
||||||
|
BYTE **ppUserDataOut,
|
||||||
|
LPWSTR *ppwszIdentity,
|
||||||
|
EAP_ERROR **ppEapError)
|
||||||
|
{
|
||||||
|
DWORD dwResult = ERROR_SUCCESS;
|
||||||
|
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
||||||
|
actctx_activator actctx(g_act_ctx);
|
||||||
|
#ifdef _DEBUG
|
||||||
|
//Sleep(10000);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Initialize output parameters.
|
||||||
|
if (pdwUserDataOutSize)
|
||||||
|
*pdwUserDataOutSize = 0;
|
||||||
|
if (ppUserDataOut)
|
||||||
|
*ppUserDataOut = NULL;
|
||||||
|
if (ppwszIdentity)
|
||||||
|
*ppwszIdentity = NULL;
|
||||||
|
if (ppEapError)
|
||||||
|
*ppEapError = NULL;
|
||||||
|
|
||||||
|
// Parameter check
|
||||||
|
if (!pEapType || !pConnectionData && dwConnectionDataSize || !pUserData && dwUserDataSize || !pdwUserDataOutSize || !ppUserDataOut || !ppwszIdentity)
|
||||||
|
return dwResult = ERROR_INVALID_PARAMETER;
|
||||||
|
if (pEapType->eapType.type != EAPMETHOD_TYPE || pEapType->dwAuthorId != EAPMETHOD_AUTHOR_ID)
|
||||||
|
return dwResult = ERROR_NOT_SUPPORTED;
|
||||||
|
|
||||||
|
try {
|
||||||
|
g_peer.invoke_identity_ui(hwndParent, dwFlags, pConnectionData, dwConnectionDataSize, pUserData, dwUserDataSize, ppUserDataOut, pdwUserDataOutSize, ppwszIdentity);
|
||||||
|
} catch (std::exception &err) {
|
||||||
|
dwResult = g_peer.log_error(ppEapError, err);
|
||||||
|
} catch (...) {
|
||||||
|
dwResult = ERROR_INVALID_DATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
return dwResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Raises a custom interactive user interface dialog for the EAP method on the client.
|
||||||
|
///
|
||||||
|
/// \sa [EapPeerInvokeInteractiveUI function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363616.aspx)
|
||||||
|
///
|
||||||
|
//_Use_decl_annotations_
|
||||||
|
DWORD WINAPI EapPeerInvokeInteractiveUI(
|
||||||
|
const EAP_METHOD_TYPE *pEapType,
|
||||||
|
HWND hwndParent,
|
||||||
|
DWORD dwUIContextDataSize,
|
||||||
|
const BYTE *pUIContextData,
|
||||||
|
DWORD *pdwDataFromInteractiveUISize,
|
||||||
|
BYTE **ppDataFromInteractiveUI,
|
||||||
|
EAP_ERROR **ppEapError)
|
||||||
|
{
|
||||||
|
DWORD dwResult = ERROR_SUCCESS;
|
||||||
|
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
||||||
|
actctx_activator actctx(g_act_ctx);
|
||||||
|
#ifdef _DEBUG
|
||||||
|
//Sleep(10000);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Initialize output parameters.
|
||||||
|
if (pdwDataFromInteractiveUISize)
|
||||||
|
*pdwDataFromInteractiveUISize = 0;
|
||||||
|
if (ppDataFromInteractiveUI)
|
||||||
|
*ppDataFromInteractiveUI = NULL;
|
||||||
|
if (ppEapError)
|
||||||
|
*ppEapError = NULL;
|
||||||
|
|
||||||
|
// Parameter check
|
||||||
|
if (!pEapType || !pUIContextData && dwUIContextDataSize || !pdwDataFromInteractiveUISize || !ppDataFromInteractiveUI)
|
||||||
|
return dwResult = ERROR_INVALID_PARAMETER;
|
||||||
|
if (pEapType->eapType.type != EAPMETHOD_TYPE || pEapType->dwAuthorId != EAPMETHOD_AUTHOR_ID)
|
||||||
|
return dwResult = ERROR_NOT_SUPPORTED;
|
||||||
|
|
||||||
|
try {
|
||||||
|
g_peer.invoke_interactive_ui(hwndParent, pUIContextData, dwUIContextDataSize, ppDataFromInteractiveUI, pdwDataFromInteractiveUISize);
|
||||||
|
} catch (std::exception &err) {
|
||||||
|
dwResult = g_peer.log_error(ppEapError, err);
|
||||||
|
} catch (...) {
|
||||||
|
dwResult = ERROR_INVALID_DATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
return dwResult;
|
||||||
|
}
|
7
EAPMethods/PCH.cpp
Normal file
7
EAPMethods/PCH.cpp
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
/*
|
||||||
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
Copyright © 2015-2022 Amebis
|
||||||
|
Copyright © 2016 GÉANT
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "PCH.h"
|
17
EAPMethods/PCH.h
Normal file
17
EAPMethods/PCH.h
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
/*
|
||||||
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
Copyright © 2015-2022 Amebis
|
||||||
|
Copyright © 2016 GÉANT
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#if EAPMETHOD_TYPE == 21
|
||||||
|
#include "../lib/TTLS/include/Method.h"
|
||||||
|
#include "../lib/TTLS/include/Module.h"
|
||||||
|
#define EAPMETHOD_PEER eap::peer_ttls
|
||||||
|
#else
|
||||||
|
#error Unknown EAP Method type.
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern EAPMETHOD_PEER g_peer;
|
7
EAPMethods/PCH_UI.cpp
Normal file
7
EAPMethods/PCH_UI.cpp
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
/*
|
||||||
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
Copyright © 2015-2022 Amebis
|
||||||
|
Copyright © 2016 GÉANT
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "PCH_UI.h"
|
19
EAPMethods/PCH_UI.h
Normal file
19
EAPMethods/PCH_UI.h
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
Copyright © 2015-2022 Amebis
|
||||||
|
Copyright © 2016 GÉANT
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
// Prevent warnings from wxWidgets headers
|
||||||
|
#define _CRT_SECURE_NO_WARNINGS
|
||||||
|
|
||||||
|
#if EAPMETHOD_TYPE == 21
|
||||||
|
#include "../lib/TTLS_UI/include/Module.h"
|
||||||
|
#define EAPMETHOD_PEER_UI eap::peer_ttls_ui
|
||||||
|
#else
|
||||||
|
#error Unknown EAP Method type.
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern EAPMETHOD_PEER_UI g_peer;
|
89
EAPMethods/Register.cpp
Normal file
89
EAPMethods/Register.cpp
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
/*
|
||||||
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
Copyright © 2020-2022 Amebis
|
||||||
|
Copyright © 2016 GÉANT
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "PCH.h"
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
using namespace winstd;
|
||||||
|
|
||||||
|
|
||||||
|
static void set_value(_In_ HKEY hKey, _In_opt_z_ LPCTSTR lpValueName, _In_ LPCTSTR sValue)
|
||||||
|
{
|
||||||
|
LSTATUS s = RegSetValueEx(hKey, lpValueName, 0, REG_SZ, reinterpret_cast<LPCBYTE>(sValue), (DWORD)((_tcslen(sValue) + 1) * sizeof(tstring::value_type)));
|
||||||
|
if (s != ERROR_SUCCESS)
|
||||||
|
throw win_runtime_error(s, "RegSetValueEx failed.");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void set_value(_In_ HKEY hKey, _In_opt_z_ LPCTSTR lpValueName, _In_ const tstring &sValue)
|
||||||
|
{
|
||||||
|
LSTATUS s = RegSetValueEx(hKey, lpValueName, 0, REG_SZ, reinterpret_cast<LPCBYTE>(sValue.c_str()), (DWORD)((sValue.length() + 1) * sizeof(tstring::value_type)));
|
||||||
|
if (s != ERROR_SUCCESS)
|
||||||
|
throw win_runtime_error(s, "RegSetValueEx failed.");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void set_value(_In_ HKEY hKey, _In_opt_z_ LPCTSTR lpValueName, _In_ DWORD dwValue)
|
||||||
|
{
|
||||||
|
LSTATUS s = RegSetValueEx(hKey, lpValueName, 0, REG_DWORD, reinterpret_cast<LPCBYTE>(&dwValue), sizeof(dwValue));
|
||||||
|
if (s != ERROR_SUCCESS)
|
||||||
|
throw win_runtime_error(s, "RegSetValueEx failed.");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Registers method in EapHost registry
|
||||||
|
///
|
||||||
|
/// \returns S_OK if successful; E_FAIL otherwise
|
||||||
|
///
|
||||||
|
STDAPI DllRegisterServer()
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
tstring sz, sz2;
|
||||||
|
reg_key key_methods, key_author, key_method;
|
||||||
|
LSTATUS s = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("SYSTEM\\CurrentControlSet\\services\\EapHost\\Methods"), 0, KEY_CREATE_SUB_KEY, key_methods);
|
||||||
|
if (s != ERROR_SUCCESS) throw win_runtime_error(s);
|
||||||
|
sprintf(sz, _T("%u"), EAPMETHOD_AUTHOR_ID);
|
||||||
|
s = RegCreateKeyEx(key_methods, sz.c_str(), NULL, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, key_author, NULL);
|
||||||
|
if (s != ERROR_SUCCESS) throw win_runtime_error(s);
|
||||||
|
set_value(key_author, NULL, _T(PRODUCT_NAME_STR));
|
||||||
|
sprintf(sz, _T("%u"), EAPMETHOD_TYPE);
|
||||||
|
s = RegCreateKeyEx(key_author, sz.c_str(), NULL, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, key_method, NULL);
|
||||||
|
if (s != ERROR_SUCCESS) throw win_runtime_error(s);
|
||||||
|
if (!GetModuleFileName(g_peer.m_instance, sz)) throw win_runtime_error("GetModuleFileName failed.");
|
||||||
|
sprintf(sz2, _T("@%s,-1"), sz.c_str());
|
||||||
|
set_value(key_method, _T("PeerDllPath") , sz);
|
||||||
|
set_value(key_method, _T("PeerFriendlyName"), sz2);
|
||||||
|
set_value(key_method, _T("Properties") , (DWORD)389871807);
|
||||||
|
|
||||||
|
return S_OK;
|
||||||
|
} catch(win_runtime_error &err) {
|
||||||
|
OutputDebugStr(_T("%hs (error %u)\n"), err.what(), err.number());
|
||||||
|
return E_FAIL;
|
||||||
|
} catch(...) {
|
||||||
|
OutputDebugStr(_T("Registering DLL failed.\n"));
|
||||||
|
return E_FAIL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Unregisters method from EapHost registry
|
||||||
|
///
|
||||||
|
/// \returns Always S_OK
|
||||||
|
///
|
||||||
|
STDAPI DllUnregisterServer()
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
tstring sz;
|
||||||
|
reg_key key_methods;
|
||||||
|
LSTATUS s = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("SYSTEM\\CurrentControlSet\\services\\EapHost\\Methods"), 0, KEY_READ, key_methods);
|
||||||
|
if (s != ERROR_SUCCESS) throw win_runtime_error(s);
|
||||||
|
sprintf(sz, _T("%u\\%u"), EAPMETHOD_AUTHOR_ID, EAPMETHOD_TYPE);
|
||||||
|
if (!key_methods.delete_subkey(sz.c_str())) throw win_runtime_error();
|
||||||
|
} catch(...) {}
|
||||||
|
return S_OK;
|
||||||
|
}
|
90
EAPMethods/Register_UI.cpp
Normal file
90
EAPMethods/Register_UI.cpp
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
/*
|
||||||
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
Copyright © 2020-2022 Amebis
|
||||||
|
Copyright © 2016 GÉANT
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "PCH_UI.h"
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
using namespace winstd;
|
||||||
|
|
||||||
|
|
||||||
|
static void set_value(_In_ HKEY hKey, _In_opt_z_ LPCTSTR lpValueName, _In_ LPCTSTR sValue)
|
||||||
|
{
|
||||||
|
LSTATUS s = RegSetValueEx(hKey, lpValueName, 0, REG_SZ, reinterpret_cast<LPCBYTE>(sValue), (DWORD)((_tcslen(sValue) + 1) * sizeof(tstring::value_type)));
|
||||||
|
if (s != ERROR_SUCCESS)
|
||||||
|
throw win_runtime_error(s, "RegSetValueEx failed.");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void set_value(_In_ HKEY hKey, _In_opt_z_ LPCTSTR lpValueName, _In_ const tstring &sValue)
|
||||||
|
{
|
||||||
|
LSTATUS s = RegSetValueEx(hKey, lpValueName, 0, REG_SZ, reinterpret_cast<LPCBYTE>(sValue.c_str()), (DWORD)((sValue.length() + 1) * sizeof(tstring::value_type)));
|
||||||
|
if (s != ERROR_SUCCESS)
|
||||||
|
throw win_runtime_error(s, "RegSetValueEx failed.");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void set_value(_In_ HKEY hKey, _In_opt_z_ LPCTSTR lpValueName, _In_ DWORD dwValue)
|
||||||
|
{
|
||||||
|
LSTATUS s = RegSetValueEx(hKey, lpValueName, 0, REG_DWORD, reinterpret_cast<LPCBYTE>(&dwValue), sizeof(dwValue));
|
||||||
|
if (s != ERROR_SUCCESS)
|
||||||
|
throw win_runtime_error(s, "RegSetValueEx failed.");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Registers method UI in EapHost registry
|
||||||
|
///
|
||||||
|
/// \returns S_OK if successful; E_FAIL otherwise
|
||||||
|
///
|
||||||
|
STDAPI DllRegisterServer()
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
tstring sz;
|
||||||
|
reg_key key_methods, key_author, key_method;
|
||||||
|
LSTATUS s = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("SYSTEM\\CurrentControlSet\\services\\EapHost\\Methods"), 0, KEY_CREATE_SUB_KEY, key_methods);
|
||||||
|
if (s != ERROR_SUCCESS) throw win_runtime_error(s);
|
||||||
|
sprintf(sz, _T("%u"), EAPMETHOD_AUTHOR_ID);
|
||||||
|
s = RegCreateKeyEx(key_methods, sz.c_str(), NULL, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, key_author, NULL);
|
||||||
|
if (s != ERROR_SUCCESS) throw win_runtime_error(s);
|
||||||
|
set_value(key_author, NULL, _T(PRODUCT_NAME_STR));
|
||||||
|
sprintf(sz, _T("%u"), EAPMETHOD_TYPE);
|
||||||
|
s = RegCreateKeyEx(key_author, sz.c_str(), NULL, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, key_method, NULL);
|
||||||
|
if (s != ERROR_SUCCESS) throw win_runtime_error(s);
|
||||||
|
if (!GetModuleFileName(g_peer.m_instance, sz)) throw win_runtime_error("GetModuleFileName failed.");
|
||||||
|
set_value(key_method, _T("PeerConfigUIPath") , sz);
|
||||||
|
set_value(key_method, _T("PeerIdentityPath") , sz);
|
||||||
|
set_value(key_method, _T("PeerInteractiveUIPath") , sz);
|
||||||
|
set_value(key_method, _T("PeerInvokePasswordDialog"), (DWORD)0);
|
||||||
|
set_value(key_method, _T("PeerInvokeUsernameDialog"), (DWORD)0);
|
||||||
|
|
||||||
|
return S_OK;
|
||||||
|
} catch(win_runtime_error &err) {
|
||||||
|
OutputDebugStr(_T("%hs (error %u)\n"), err.what(), err.number());
|
||||||
|
return E_FAIL;
|
||||||
|
} catch(...) {
|
||||||
|
OutputDebugStr(_T("Registering DLL failed.\n"));
|
||||||
|
return E_FAIL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Unregisters method UI from EapHost registry
|
||||||
|
///
|
||||||
|
/// \returns Always S_OK
|
||||||
|
///
|
||||||
|
STDAPI DllUnregisterServer()
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
tstring sz;
|
||||||
|
reg_key key_methods;
|
||||||
|
LSTATUS s = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("SYSTEM\\CurrentControlSet\\services\\EapHost\\Methods"), 0, KEY_READ, key_methods);
|
||||||
|
if (s != ERROR_SUCCESS) throw win_runtime_error(s);
|
||||||
|
sprintf(sz, _T("%u\\%u"), EAPMETHOD_AUTHOR_ID, EAPMETHOD_TYPE);
|
||||||
|
key_methods.delete_subkey(sz.c_str());
|
||||||
|
} catch(...) {}
|
||||||
|
return S_OK;
|
||||||
|
}
|
@ -1,15 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ImportGroup Label="PropertySheets" />
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup>
|
|
||||||
<_PropertySheetDisplayName>EAP Method Common</_PropertySheetDisplayName>
|
|
||||||
<OutDir>..\..\output\$(Platform).$(Configuration)\</OutDir>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup>
|
|
||||||
<ClCompile>
|
|
||||||
<AdditionalIncludeDirectories>$(ProjectDir);..\..\lib\Events\build\temp\Events.$(Platform).$(Configuration).$(PlatformToolset);..\include;..\..\lib\WinStd\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
</ClCompile>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup />
|
|
||||||
</Project>
|
|
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@ -903,7 +903,7 @@ msgstr "Използвай &празна външна самоличност"
|
|||||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
msgid "Ommit my user name and use @mydomain.org only"
|
msgid "Omit my user name and use @mydomain.org only"
|
||||||
msgstr "Пропусни моето потребителско име и използвай само @mydomain.org"
|
msgstr "Пропусни моето потребителско име и използвай само @mydomain.org"
|
||||||
|
|
||||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -847,7 +847,7 @@ msgstr ""
|
|||||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
msgid "Ommit my user name and use @mydomain.org only"
|
msgid "Omit my user name and use @mydomain.org only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||||
|
@ -846,7 +846,7 @@ msgstr ""
|
|||||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
msgid "Ommit my user name and use @mydomain.org only"
|
msgid "Omit my user name and use @mydomain.org only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -846,7 +846,7 @@ msgstr ""
|
|||||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
msgid "Ommit my user name and use @mydomain.org only"
|
msgid "Omit my user name and use @mydomain.org only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||||
|
@ -846,7 +846,7 @@ msgstr ""
|
|||||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
msgid "Ommit my user name and use @mydomain.org only"
|
msgid "Omit my user name and use @mydomain.org only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||||
|
@ -846,7 +846,7 @@ msgstr ""
|
|||||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
msgid "Ommit my user name and use @mydomain.org only"
|
msgid "Omit my user name and use @mydomain.org only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||||
|
@ -846,7 +846,7 @@ msgstr ""
|
|||||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
msgid "Ommit my user name and use @mydomain.org only"
|
msgid "Omit my user name and use @mydomain.org only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||||
|
@ -846,7 +846,7 @@ msgstr ""
|
|||||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
msgid "Ommit my user name and use @mydomain.org only"
|
msgid "Omit my user name and use @mydomain.org only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -846,7 +846,7 @@ msgstr ""
|
|||||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
msgid "Ommit my user name and use @mydomain.org only"
|
msgid "Omit my user name and use @mydomain.org only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -847,7 +847,7 @@ msgstr ""
|
|||||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
msgid "Ommit my user name and use @mydomain.org only"
|
msgid "Omit my user name and use @mydomain.org only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||||
|
@ -882,7 +882,7 @@ msgstr "Naudoti &tuščią išorinę tapatybę"
|
|||||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
msgid "Ommit my user name and use @mydomain.org only"
|
msgid "Omit my user name and use @mydomain.org only"
|
||||||
msgstr "Praleisti mano naudotojo vardą ir naudoti tik @domenas.lt"
|
msgstr "Praleisti mano naudotojo vardą ir naudoti tik @domenas.lt"
|
||||||
|
|
||||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -846,7 +846,7 @@ msgstr ""
|
|||||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
msgid "Ommit my user name and use @mydomain.org only"
|
msgid "Omit my user name and use @mydomain.org only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
729
EAPMethods/locale/ro_RO.po
Normal file
729
EAPMethods/locale/ro_RO.po
Normal file
@ -0,0 +1,729 @@
|
|||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Simon Rozman <simon@rozman.si>, 2020
|
||||||
|
# Raul Opruta <raul.opruta@roedu.net>, 2020
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: EAPMethods\n"
|
||||||
|
"POT-Creation-Date: 2020-04-17 14:55+0200\n"
|
||||||
|
"PO-Revision-Date: 2016-08-25 06:18+0000\n"
|
||||||
|
"Last-Translator: Raul Opruta <raul.opruta@roedu.net>, 2020\n"
|
||||||
|
"Language-Team: Romanian (Romania) (https://www.transifex.com/eduroam_devel/teams/11799/ro_RO/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Language: ro_RO\n"
|
||||||
|
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"
|
||||||
|
"X-Generator: Poedit 2.3\n"
|
||||||
|
"X-Poedit-Basepath: ../..\n"
|
||||||
|
"X-Poedit-KeywordsList: _\n"
|
||||||
|
"X-Poedit-SearchPath-0: lib/EAPBase_UI\n"
|
||||||
|
"X-Poedit-SearchPath-1: lib/EapHost_UI\n"
|
||||||
|
"X-Poedit-SearchPath-2: lib/GTC_UI\n"
|
||||||
|
"X-Poedit-SearchPath-3: lib/MSCHAPv2_UI\n"
|
||||||
|
"X-Poedit-SearchPath-4: lib/PAP_UI\n"
|
||||||
|
"X-Poedit-SearchPath-5: lib/TLS_UI\n"
|
||||||
|
"X-Poedit-SearchPath-6: lib/TTLS_UI\n"
|
||||||
|
"X-Poedit-SearchPath-7: EAPMethods\n"
|
||||||
|
"X-Poedit-SourceCharset: UTF-8\n"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/include/EAP_UI.h:295
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"Are you sure you want to permanently remove %s provider from configuration?"
|
||||||
|
msgstr ""
|
||||||
|
"Sunteți sigur că doriți să eliminați definitiv furnizorul %s din "
|
||||||
|
"configurație?"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/include/EAP_UI.h:295
|
||||||
|
msgid "Warning"
|
||||||
|
msgstr "Avertizare"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/include/EAP_UI.h:381 lib/EAPBase_UI/res/wxEAP_UI.h:116
|
||||||
|
msgid "EAP Credentials"
|
||||||
|
msgstr "Credenţiale EAP"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/include/EAP_UI.h:725
|
||||||
|
msgid "Provider Settings"
|
||||||
|
msgstr "Setări de provider"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/include/EAP_UI.h:758 lib/EAPBase_UI/res/wxEAP_UI.cpp:229
|
||||||
|
#, c-format
|
||||||
|
msgid "%s User Credentials"
|
||||||
|
msgstr "%s Credenţiale utilizator"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/include/EAP_UI.h:866 lib/TTLS_UI/src/Module.cpp:196
|
||||||
|
#: lib/TTLS_UI/src/Module.cpp:305
|
||||||
|
#, c-format
|
||||||
|
msgid "Error writing credentials to Credential Manager: %hs (error %u)"
|
||||||
|
msgstr ""
|
||||||
|
"Eroare la scriere a credențialelor în Managerul de credențiale: % hs "
|
||||||
|
"(eroare%u)"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/include/EAP_UI.h:869 lib/TTLS_UI/src/Module.cpp:198
|
||||||
|
#: lib/TTLS_UI/src/Module.cpp:307
|
||||||
|
msgid "Writing credentials failed."
|
||||||
|
msgstr " Scrierea credențialele nu au reușit."
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/include/EAP_UI.h:897
|
||||||
|
#, c-format
|
||||||
|
msgid "Deleting credentials failed (error %u)."
|
||||||
|
msgstr "Ştergerea credenţialelor eşuată (eroare %u)."
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/include/EAP_UI.h:924 lib/EAPBase_UI/include/EAP_UI.h:943
|
||||||
|
#: lib/EAPBase_UI/include/EAP_UI.h:952
|
||||||
|
msgid "(none)"
|
||||||
|
msgstr "(nici unul)"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/include/EAP_UI.h:928
|
||||||
|
#, c-format
|
||||||
|
msgid "(error %u)"
|
||||||
|
msgstr "(eroare %u )"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/include/EAP_UI.h:932
|
||||||
|
msgid "(error)"
|
||||||
|
msgstr "(eroare)"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/include/EAP_UI.h:943 lib/EAPBase_UI/include/EAP_UI.h:952
|
||||||
|
msgid "(blank ID)"
|
||||||
|
msgstr "(ID gol)"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/include/EAP_UI.h:992
|
||||||
|
msgid "&Remember"
|
||||||
|
msgstr "&Ţine minte"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/include/EAP_UI.h:993
|
||||||
|
msgid "Check if you would like to save credentials"
|
||||||
|
msgstr " Verificați dacă doriți să salvați datele de acreditare"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/include/EAP_UI.h:1214
|
||||||
|
msgid "(Your Organization)"
|
||||||
|
msgstr "(Organizaţia ta)"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:37
|
||||||
|
msgid "+"
|
||||||
|
msgstr "+"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:38
|
||||||
|
msgid "Adds new provider"
|
||||||
|
msgstr "Adaugă un nou furnizor"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:42
|
||||||
|
msgid "-"
|
||||||
|
msgstr "-"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:43
|
||||||
|
msgid "Removes selected provider"
|
||||||
|
msgstr "Înlătură furnizorul selectat"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:47
|
||||||
|
msgid "Advanced..."
|
||||||
|
msgstr "Avansat..."
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:48
|
||||||
|
msgid "Opens dialog with provider settings"
|
||||||
|
msgstr "Deschide dialogul cu setările furnizorului"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:240
|
||||||
|
msgid "Select the source where your credentials used to connect are stored."
|
||||||
|
msgstr ""
|
||||||
|
"Selectați sursa în care sunt stocate datele de acreditare folosite pentru a "
|
||||||
|
"vă conecta."
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:250
|
||||||
|
msgid "Use from Credential &Manager:"
|
||||||
|
msgstr "Utilizați de la Credențiale & Management:"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:251
|
||||||
|
msgid ""
|
||||||
|
"Select this option if you would like to use credentials stored in Windows "
|
||||||
|
"Credential Manager"
|
||||||
|
msgstr ""
|
||||||
|
"Selectați această opțiune dacă doriți să utilizați credețialele stocate în "
|
||||||
|
"Windows Credential Manager"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:258
|
||||||
|
msgid "Your present credentials stored in Windows Credential Manager"
|
||||||
|
msgstr "Credențiele dvs. actuale sunt stocate în Windows Credential Manager"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:268
|
||||||
|
msgid "Use from &profile configuration:"
|
||||||
|
msgstr "Utilizați din configurarea profilului:"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:269
|
||||||
|
msgid ""
|
||||||
|
"Select this option if you would like to store credentials as a part of "
|
||||||
|
"profile configuration"
|
||||||
|
msgstr ""
|
||||||
|
"Selectați această opțiune dacă doriți să stocați credențialele ca parte a "
|
||||||
|
"configurației profilului"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:276
|
||||||
|
msgid "Profile configuration credentials"
|
||||||
|
msgstr " Credențialele de configurare a profilului"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:289
|
||||||
|
msgid "&Clear Credentials"
|
||||||
|
msgstr "%Ştergere Credenţiale"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:290
|
||||||
|
msgid ""
|
||||||
|
"Click to clear your credentials from Credential Manager.\n"
|
||||||
|
"Note: You will be prompted to enter credentials when connecting."
|
||||||
|
msgstr ""
|
||||||
|
"Faceți clic pentru a șterge credențialele din Managerul de credenţiale.\n"
|
||||||
|
"Notă: Vi se va solicita să introduceți credențialele atunci când vă conectați."
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:294
|
||||||
|
msgid "&Set Credentials..."
|
||||||
|
msgstr "&Setare credenţiale"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:295
|
||||||
|
msgid "Click here to set or modify your credentials"
|
||||||
|
msgstr "Apasă aici pentru a modifica credenţialele"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:332
|
||||||
|
msgid "User ID and Password"
|
||||||
|
msgstr "ID de utilizator și parolă"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:342
|
||||||
|
msgid "Please provide your user ID and password."
|
||||||
|
msgstr "Vă rugăm să furnizați ID-ul de utilizator și parola."
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:352 lib/EAPBase_UI/res/wxEAP_UI.cpp:416
|
||||||
|
msgid "User ID:"
|
||||||
|
msgstr "ID utilizator:"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:357 lib/EAPBase_UI/res/wxEAP_UI.cpp:421
|
||||||
|
msgid "Enter your user name here (user@domain.org, DOMAIN\\User, etc.)"
|
||||||
|
msgstr ""
|
||||||
|
"Introduceți numele de utilizator aici (user@domain.org, DOMENIU \\ User "
|
||||||
|
"etc.)"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:361
|
||||||
|
msgid "Password:"
|
||||||
|
msgstr "Parolă:"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:366
|
||||||
|
msgid "Enter your password here"
|
||||||
|
msgstr "Introduceţi parola aici:"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:396
|
||||||
|
msgid "User ID"
|
||||||
|
msgstr "ID Utilizator"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:406
|
||||||
|
msgid "Please provide your user ID."
|
||||||
|
msgstr "Vă rugăm să furnizați ID-ul de utilizator."
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:446
|
||||||
|
msgid "Your Organization"
|
||||||
|
msgstr "Organizaţia dumneavostră"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:457
|
||||||
|
msgid ""
|
||||||
|
"Describe your organization to customize user prompts. When organization is "
|
||||||
|
"introduced, end-users find program messages easier to understand and act."
|
||||||
|
msgstr ""
|
||||||
|
"Descrieți organizația dumneavoastră pentru a personaliza solicitările "
|
||||||
|
"utilizatorilor. Când este introdusă organizația, utilizatorii finali găsesc "
|
||||||
|
"mesajele de program mai ușor de înțeles și de acționat."
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:464
|
||||||
|
msgid "Your organization &name:"
|
||||||
|
msgstr "Numele organizaţiei dumneavoastră &:"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:469
|
||||||
|
msgid ""
|
||||||
|
"Your organization name as it will appear on helpdesk contact notifications"
|
||||||
|
msgstr ""
|
||||||
|
"Numele organizației dumneavoastră, așa cum va apărea în notificările de "
|
||||||
|
"contact ale helpdesk"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:473
|
||||||
|
msgid "(Keep it short, please)"
|
||||||
|
msgstr "(Păstrați-l scurt, vă rog)"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:483
|
||||||
|
msgid "Helpdesk contact &information:"
|
||||||
|
msgstr "Contact și informații despre asistență:"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:500
|
||||||
|
msgid "Your helpdesk website address"
|
||||||
|
msgstr "Adresa web de asistență"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:511
|
||||||
|
msgid "Your helpdesk e-mail address"
|
||||||
|
msgstr "Adresa de e-mail de asistență"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:522
|
||||||
|
msgid "Your helpdesk phone number"
|
||||||
|
msgstr "Numărul de telefon de asistență"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:550
|
||||||
|
msgid "Provider Unique Identifier"
|
||||||
|
msgstr "Identificator unic al furnizorului"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:561
|
||||||
|
msgid ""
|
||||||
|
"Assign your organization a unique ID to allow sharing the same credential "
|
||||||
|
"set across different network profiles."
|
||||||
|
msgstr ""
|
||||||
|
"Alocați organizației dumneavostră un ID unic care să permită partajarea "
|
||||||
|
"aceluiași set de credințiale pe diferite profiluri de rețea."
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:568
|
||||||
|
msgid "&Namespace:"
|
||||||
|
msgstr "&Spaţiu de nume:"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:572
|
||||||
|
msgid "urn:RFC4282:realm"
|
||||||
|
msgstr "urn:RFC4282:realm"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:572
|
||||||
|
msgid "urn:uuid"
|
||||||
|
msgstr "urn:uuid"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:584
|
||||||
|
msgid "Provider unique &identifier:"
|
||||||
|
msgstr "Identificator unic și identificator:"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:589
|
||||||
|
msgid "Your organization ID to assign same credentials from other profiles"
|
||||||
|
msgstr ""
|
||||||
|
"ID-ul organizației dumneavoastră pentru a atribui aceleași date de "
|
||||||
|
"acreditare de la alte profiluri"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:614
|
||||||
|
msgid "Configuration Lock"
|
||||||
|
msgstr "Configurare Blocată"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:625
|
||||||
|
msgid ""
|
||||||
|
"Your configuration can be locked to prevent accidental modification by end-"
|
||||||
|
"users. Users will only be allowed to enter credentials."
|
||||||
|
msgstr ""
|
||||||
|
"Configurația dumneavoastră poate fi blocată pentru a preveni modificarea "
|
||||||
|
"accidentală de către utilizatorii finali. Utilizatorii vor avea voie să "
|
||||||
|
"introducă numai datele de acreditare."
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:632
|
||||||
|
msgid ""
|
||||||
|
"&Lock this configuration and prevent any further modification via user "
|
||||||
|
"interface."
|
||||||
|
msgstr ""
|
||||||
|
"& Blocați această configurație și preveniți alte modificări prin interfața "
|
||||||
|
"utilizatorului"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:635
|
||||||
|
msgid "(Warning: Once locked, you can not revert using this dialog!)"
|
||||||
|
msgstr "(Avertisment: odată blocat, nu puteți reveni folosind acest dialog!)"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:700
|
||||||
|
msgid "Identity"
|
||||||
|
msgstr "Identitate"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:711
|
||||||
|
msgid "Select the user ID supplicant introduces itself as to authenticator:"
|
||||||
|
msgstr ""
|
||||||
|
"Selectați ID-ul utilizatorului implicit care se introduce ca autentificator:"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:718
|
||||||
|
msgid "&True identity"
|
||||||
|
msgstr "&Identitate adevărată"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:719
|
||||||
|
msgid "Use my true user name"
|
||||||
|
msgstr "Utilizați numele meu de utilizator adevărat"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:723
|
||||||
|
msgid "Use &empty identity"
|
||||||
|
msgstr "Utilizați & identitate goală"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:724
|
||||||
|
msgid "Omit my user name and use @mydomain.org only"
|
||||||
|
msgstr "Omiteți numele meu de utilizator si folositi doar @ mydomain.org"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:731
|
||||||
|
msgid "&Custom identity:"
|
||||||
|
msgstr "& Identitate personalizată:"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:732
|
||||||
|
msgid "Specify custom identity"
|
||||||
|
msgstr "Precizați identitatea personalizată"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:737
|
||||||
|
msgid "Custom identity to use"
|
||||||
|
msgstr "Identitate personalizată de utilizat"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.h:66
|
||||||
|
msgid "EAP Connection Configuration"
|
||||||
|
msgstr "Configurare conexiune EAP"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/res/wxEAP_UI.h:329
|
||||||
|
msgid "EAP Identity Provider"
|
||||||
|
msgstr "Furnizor de identitate EAP"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/src/EAP_UI.cpp:103
|
||||||
|
#, c-format
|
||||||
|
msgid "%s Credentials"
|
||||||
|
msgstr "%s Credenţiale"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/src/EAP_UI.cpp:139
|
||||||
|
#, c-format
|
||||||
|
msgid "For additional help and instructions, please contact %s at:"
|
||||||
|
msgstr ""
|
||||||
|
"Pentru ajutor și instrucțiuni suplimentare, vă rugăm să contactați %s la : "
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/src/EAP_UI.cpp:140
|
||||||
|
msgid "your provider"
|
||||||
|
msgstr "providerul dumneavoastră"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/src/EAP_UI.cpp:159
|
||||||
|
msgid "Open the default web browser"
|
||||||
|
msgstr "Deschideți browserul web implicit"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/src/EAP_UI.cpp:170
|
||||||
|
msgid "Open your e-mail program"
|
||||||
|
msgstr "Deschideți programul de e-mail"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/src/EAP_UI.cpp:181
|
||||||
|
msgid "Dial the phone number"
|
||||||
|
msgstr "Apelează numărul de telefon"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/src/EAP_UI.cpp:203
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"%s has pre-set parts of this configuration. Those parts are locked to "
|
||||||
|
"prevent accidental modification."
|
||||||
|
msgstr ""
|
||||||
|
"%s are părți prestabilite ale acestei configurații. Aceste piese sunt "
|
||||||
|
"blocate pentru a preveni modificarea accidentală."
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/src/EAP_UI.cpp:204
|
||||||
|
msgid "Your provider"
|
||||||
|
msgstr "Furnizorul dumneavostră"
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/src/EAP_UI.cpp:225
|
||||||
|
msgid "Previous attempt to connect reported invalid credentials."
|
||||||
|
msgstr "Încercarea anterioară de conectare a raportat credențiale nevalide ."
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/src/EAP_UI.cpp:226
|
||||||
|
msgid "Previous attempt to connect reported your credentials expired."
|
||||||
|
msgstr ""
|
||||||
|
"Încercarea anterioară de conectare a raportat datele de acreditare expirate."
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/src/EAP_UI.cpp:227
|
||||||
|
msgid ""
|
||||||
|
"Previous attempt to connect reported your credentials are being changed."
|
||||||
|
msgstr ""
|
||||||
|
"Încercarea anterioară de conectare a raportat că datele de acreditare au "
|
||||||
|
"fost modificate."
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/src/EAP_UI.cpp:228
|
||||||
|
msgid "Previous attempt to connect failed."
|
||||||
|
msgstr "Încercarea anterioară de conectare a eșuat."
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/src/EAP_UI.cpp:229
|
||||||
|
msgid "Please, make sure your credentials are correct, or try again later."
|
||||||
|
msgstr ""
|
||||||
|
"Vă rugăm, asigurați-vă că datele de acreditare sunt corecte sau încercați "
|
||||||
|
"din nou mai târziu."
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/src/EAP_UI.cpp:250
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"The %s version installed on this computer logs credentials in visible and "
|
||||||
|
"easy to read way."
|
||||||
|
msgstr ""
|
||||||
|
"Versiunea instalată %s pe acest computer înregistrează datele de acreditare "
|
||||||
|
"în mod vizibil și ușor de citit."
|
||||||
|
|
||||||
|
#: lib/EAPBase_UI/src/EAP_UI.cpp:251
|
||||||
|
msgid "Please, reconsider necessity to enter your credentials."
|
||||||
|
msgstr ""
|
||||||
|
"Vă rugăm să reconsiderați necesitatea de a introduce datele de acreditare."
|
||||||
|
|
||||||
|
#: lib/EapHost_UI/res/wxEapHost_UI.cpp:17
|
||||||
|
msgid "Inner EAP Method"
|
||||||
|
msgstr "Metoda EAP interioară"
|
||||||
|
|
||||||
|
#: lib/EapHost_UI/res/wxEapHost_UI.cpp:28
|
||||||
|
msgid "Select and configure inner EAP method"
|
||||||
|
msgstr "Selectați și configurați metoda EAP interioară"
|
||||||
|
|
||||||
|
#: lib/EapHost_UI/res/wxEapHost_UI.cpp:40
|
||||||
|
msgid "&Settings"
|
||||||
|
msgstr "&Setări"
|
||||||
|
|
||||||
|
#: lib/EapHost_UI/src/EapHost_UI.cpp:59
|
||||||
|
#, c-format
|
||||||
|
msgid "Enumerating EAP methods failed (error %u, %s, %s)."
|
||||||
|
msgstr "Enumerarea metodelor EAP a eșuat (eroare %u , %s , %s )."
|
||||||
|
|
||||||
|
#: lib/EapHost_UI/src/EapHost_UI.cpp:61
|
||||||
|
#, c-format
|
||||||
|
msgid "Enumerating EAP methods failed (error %u)."
|
||||||
|
msgstr "Enumerarea metodelor EAP a eșuat (eroare %u )."
|
||||||
|
|
||||||
|
#: lib/EapHost_UI/src/EapHost_UI.cpp:136
|
||||||
|
#, c-format
|
||||||
|
msgid "Configuring EAP method failed (error %u, %s, %s)."
|
||||||
|
msgstr "Configurarea metodei EAP a eșuat (eroare %u,%s,%s)."
|
||||||
|
|
||||||
|
#: lib/EapHost_UI/src/EapHost_UI.cpp:138
|
||||||
|
#, c-format
|
||||||
|
msgid "Configuring EAP method failed (error %u)."
|
||||||
|
msgstr "Configurarea metodei EAP a eșuat (eroare %u )."
|
||||||
|
|
||||||
|
#: lib/GTC_UI/include/GTC_UI.h:114 lib/GTC_UI/res/wxGTC_UI.cpp:16
|
||||||
|
msgid "GTC Challenge"
|
||||||
|
msgstr "Provocarea GTC"
|
||||||
|
|
||||||
|
#: lib/GTC_UI/res/wxGTC_UI.cpp:26
|
||||||
|
msgid "Please provide your response."
|
||||||
|
msgstr "Vă rugăm să ne oferiți răspunsul."
|
||||||
|
|
||||||
|
#: lib/GTC_UI/res/wxGTC_UI.cpp:38
|
||||||
|
msgid "Server challenge"
|
||||||
|
msgstr "Provocarea serverului"
|
||||||
|
|
||||||
|
#: lib/GTC_UI/res/wxGTC_UI.cpp:43
|
||||||
|
msgid "Enter your response here"
|
||||||
|
msgstr "Introduceți răspunsul aici"
|
||||||
|
|
||||||
|
#: lib/GTC_UI/res/wxGTC_UI.cpp:70
|
||||||
|
msgid "EAP-GTC authentication &mode:"
|
||||||
|
msgstr "Autentificare și &mod EAP-GTC:"
|
||||||
|
|
||||||
|
#: lib/GTC_UI/res/wxGTC_UI.cpp:75
|
||||||
|
msgid "Select EAP-GTC authentication mode from the list"
|
||||||
|
msgstr "Selectați modul de autentificare EAP-GTC din listă"
|
||||||
|
|
||||||
|
#: lib/GTC_UI/src/GTC_UI.cpp:39
|
||||||
|
msgid "Challenge/Response"
|
||||||
|
msgstr "Provocare/Răspuns"
|
||||||
|
|
||||||
|
#: lib/GTC_UI/src/GTC_UI.cpp:41
|
||||||
|
msgid "Password"
|
||||||
|
msgstr "Parolă"
|
||||||
|
|
||||||
|
#: lib/GTC_UI/src/GTC_UI.cpp:119
|
||||||
|
#, c-format
|
||||||
|
msgid "%s Challenge"
|
||||||
|
msgstr "%s Provocare"
|
||||||
|
|
||||||
|
#: lib/MSCHAPv2_UI/src/MSCHAPv2_UI.cpp:33
|
||||||
|
msgid "MSCHAPv2 User ID and Password"
|
||||||
|
msgstr "MSCHAPv2 Utilizator şi Parolă"
|
||||||
|
|
||||||
|
#: lib/PAP_UI/src/PAP_UI.cpp:33
|
||||||
|
msgid "PAP User ID and Password"
|
||||||
|
msgstr "PAP Utilizator şi Parolă"
|
||||||
|
|
||||||
|
#: lib/TLS_UI/res/wxTLS_UI.cpp:17
|
||||||
|
msgid "Server Trust"
|
||||||
|
msgstr "Server de încredere"
|
||||||
|
|
||||||
|
#: lib/TLS_UI/res/wxTLS_UI.cpp:28
|
||||||
|
msgid "Describe the servers you trust to prevent man-in-the-middle attacks."
|
||||||
|
msgstr ""
|
||||||
|
"Descrieți serverele de încredere pentru a preveni atacurile de tipul man-in-"
|
||||||
|
"the-middle."
|
||||||
|
|
||||||
|
#: lib/TLS_UI/res/wxTLS_UI.cpp:35
|
||||||
|
msgid "Acceptable Certificate Authorities:"
|
||||||
|
msgstr "Autorități de certificare acceptate:"
|
||||||
|
|
||||||
|
#: lib/TLS_UI/res/wxTLS_UI.cpp:40
|
||||||
|
msgid ""
|
||||||
|
"Server's certificate must be issued by one of certificate authorities listed"
|
||||||
|
" here"
|
||||||
|
msgstr ""
|
||||||
|
"Certificatul de server trebuie eliberat de una dintre autoritățile de "
|
||||||
|
"certificare enumerate aici"
|
||||||
|
|
||||||
|
#: lib/TLS_UI/res/wxTLS_UI.cpp:47
|
||||||
|
msgid "Add CA from Store..."
|
||||||
|
msgstr "Adăugare CA din magazin..."
|
||||||
|
|
||||||
|
#: lib/TLS_UI/res/wxTLS_UI.cpp:48
|
||||||
|
msgid ""
|
||||||
|
"Adds a new certificate authority from the certificate store to the list"
|
||||||
|
msgstr ""
|
||||||
|
"Adaugă o nouă autoritate de certificare din magazinul de certificate în "
|
||||||
|
"listă"
|
||||||
|
|
||||||
|
#: lib/TLS_UI/res/wxTLS_UI.cpp:52
|
||||||
|
msgid "Add CA from File..."
|
||||||
|
msgstr "Adăugare CA din fişier..."
|
||||||
|
|
||||||
|
#: lib/TLS_UI/res/wxTLS_UI.cpp:53
|
||||||
|
msgid "Adds a new certificate authority from the file to the list"
|
||||||
|
msgstr "Adaugă o nouă autoritate de certificare din fișier în listă"
|
||||||
|
|
||||||
|
#: lib/TLS_UI/res/wxTLS_UI.cpp:57
|
||||||
|
msgid "&Remove CA"
|
||||||
|
msgstr "&Ştergere CA"
|
||||||
|
|
||||||
|
#: lib/TLS_UI/res/wxTLS_UI.cpp:58
|
||||||
|
msgid "Removes selected certificate authorities from the list"
|
||||||
|
msgstr "Îndepărtează autoritățile de certificare selectate din listă"
|
||||||
|
|
||||||
|
#: lib/TLS_UI/res/wxTLS_UI.cpp:71
|
||||||
|
msgid "Acceptable server &names:"
|
||||||
|
msgstr "Server și nume acceptate:"
|
||||||
|
|
||||||
|
#: lib/TLS_UI/res/wxTLS_UI.cpp:76
|
||||||
|
msgid ""
|
||||||
|
"A semicolon delimited list of acceptable server FQDN names; blank to skip "
|
||||||
|
"name check; Unicode characters allowed"
|
||||||
|
msgstr ""
|
||||||
|
"Punct și virgulă delimitează lista de nume de servere FQDN ; lăsați spațiu "
|
||||||
|
"gol pentru a omite verificarea numelui; Caractere Unicode permise"
|
||||||
|
|
||||||
|
#: lib/TLS_UI/res/wxTLS_UI.cpp:80
|
||||||
|
msgid "(Example: foo.bar.com;server2.bar.com)"
|
||||||
|
msgstr "(Exemplu: foo.bar.com;server2.bar.com)"
|
||||||
|
|
||||||
|
#: lib/TLS_UI/res/wxTLS_UI.cpp:118 lib/TLS_UI/src/TLS_UI.cpp:400
|
||||||
|
msgid "User Certificate"
|
||||||
|
msgstr "Certificatul de utilizator"
|
||||||
|
|
||||||
|
#: lib/TLS_UI/res/wxTLS_UI.cpp:128
|
||||||
|
msgid "Please select your &certificate to use for authentication."
|
||||||
|
msgstr ""
|
||||||
|
"Vă rugăm să selectați certificatul dumneavoastră de utilizat pentru "
|
||||||
|
"autentificare."
|
||||||
|
|
||||||
|
#: lib/TLS_UI/res/wxTLS_UI.cpp:135
|
||||||
|
msgid "Client certificate to use for authentication"
|
||||||
|
msgstr "Certificat de client de folosit pentru autentificare"
|
||||||
|
|
||||||
|
#: lib/TLS_UI/res/wxTLS_UI.cpp:142
|
||||||
|
msgid "Custom &identity:"
|
||||||
|
msgstr "Personalizare și identitate:"
|
||||||
|
|
||||||
|
#: lib/TLS_UI/res/wxTLS_UI.cpp:147
|
||||||
|
msgid ""
|
||||||
|
"Your identity (username@domain) to override one from certificate; or blank "
|
||||||
|
"to use one provided in certificate"
|
||||||
|
msgstr ""
|
||||||
|
"Identitatea dumneavoastră (nume de utilizator @ domeniu) pentru a trece "
|
||||||
|
"peste un certificat; sau necompletat pentru a utiliza unul prevăzut în "
|
||||||
|
"certificat"
|
||||||
|
|
||||||
|
#: lib/TLS_UI/src/TLS_UI.cpp:118
|
||||||
|
msgid "No certificate selected"
|
||||||
|
msgstr "Niciun certificat selectat"
|
||||||
|
|
||||||
|
#: lib/TLS_UI/src/TLS_UI.cpp:118
|
||||||
|
msgid "Validation conflict"
|
||||||
|
msgstr "Conflict la validare"
|
||||||
|
|
||||||
|
#: lib/TLS_UI/src/TLS_UI.cpp:327
|
||||||
|
msgid "Add Certificate"
|
||||||
|
msgstr "Adaugă certificat"
|
||||||
|
|
||||||
|
#: lib/TLS_UI/src/TLS_UI.cpp:328
|
||||||
|
msgid "Certificate Files (*.cer;*.crt;*.der;*.p7b;*.pem)"
|
||||||
|
msgstr "Fişierele Certificat (*.cer;*.crt;*.der;*.p7b;*.pem)"
|
||||||
|
|
||||||
|
#: lib/TLS_UI/src/TLS_UI.cpp:329
|
||||||
|
msgid "X.509 Certificate Files (*.cer;*.crt;*.der;*.pem)"
|
||||||
|
msgstr "X.509 Fişierele Certificat (*.cer;*.crt;*.der;*.pem)"
|
||||||
|
|
||||||
|
#: lib/TLS_UI/src/TLS_UI.cpp:330
|
||||||
|
msgid "PKCS #7 Certificate Files (*.p7b)"
|
||||||
|
msgstr "PKCS #7 Fişierele Certificat (*.p7b)"
|
||||||
|
|
||||||
|
#: lib/TLS_UI/src/TLS_UI.cpp:331
|
||||||
|
msgid "All Files (*.*)"
|
||||||
|
msgstr "Toate filele (*.*)"
|
||||||
|
|
||||||
|
#: lib/TLS_UI/src/TLS_UI.cpp:345
|
||||||
|
#, c-format
|
||||||
|
msgid "Invalid or unsupported certificate file %s"
|
||||||
|
msgstr "Fișier de certificat %s nevalid sau neacceptat "
|
||||||
|
|
||||||
|
#: lib/TLS_UI/src/TLS_UI.cpp:345
|
||||||
|
msgid "Error"
|
||||||
|
msgstr "Eroare"
|
||||||
|
|
||||||
|
#: lib/TTLS_UI/src/Module.cpp:249
|
||||||
|
#, c-format
|
||||||
|
msgid "Invoking EAP identity UI failed (error %u, %s, %s)."
|
||||||
|
msgstr " Invocarea interfaței de identitate EAP a eșuat (eroare%u,%s,%s)."
|
||||||
|
|
||||||
|
#: lib/TTLS_UI/src/Module.cpp:252
|
||||||
|
#, c-format
|
||||||
|
msgid "Invoking EAP identity UI failed (error %u)."
|
||||||
|
msgstr "Invocarea interfaței de identitate EAP a eșuat (eroare%u)."
|
||||||
|
|
||||||
|
#: lib/TTLS_UI/src/Module.cpp:376
|
||||||
|
#, c-format
|
||||||
|
msgid "Invoking EAP interactive UI failed (error %u, %s, %s)."
|
||||||
|
msgstr "Invocarea EAP EI interactivă a eșuat (eroare %u,%s,%s)."
|
||||||
|
|
||||||
|
#: lib/TTLS_UI/src/Module.cpp:379
|
||||||
|
#, c-format
|
||||||
|
msgid "Invoking EAP interactive UI failed (error %u)."
|
||||||
|
msgstr "Invocarea EAP EI interactivă a eșuat (eroare %u)."
|
||||||
|
|
||||||
|
#: lib/TTLS_UI/src/TTLS_UI.cpp:37
|
||||||
|
msgid "Outer Authentication"
|
||||||
|
msgstr "Autentificare exterioară"
|
||||||
|
|
||||||
|
#: lib/TTLS_UI/src/TTLS_UI.cpp:50
|
||||||
|
msgid "Inner Authentication"
|
||||||
|
msgstr "Autentificare interioară"
|
||||||
|
|
||||||
|
#: lib/TTLS_UI/src/TTLS_UI.cpp:56
|
||||||
|
msgid "Select inner authentication method from the list"
|
||||||
|
msgstr "Selectați metoda de autentificare interioară din listă"
|
||||||
|
|
||||||
|
#: lib/TTLS_UI/src/TTLS_UI.cpp:127
|
||||||
|
msgid "PAP"
|
||||||
|
msgstr "PAP"
|
||||||
|
|
||||||
|
#: lib/TTLS_UI/src/TTLS_UI.cpp:129
|
||||||
|
msgid "MSCHAPv2"
|
||||||
|
msgstr "MSCHAPv2"
|
||||||
|
|
||||||
|
#: lib/TTLS_UI/src/TTLS_UI.cpp:131
|
||||||
|
msgid "EAP-MSCHAPv2"
|
||||||
|
msgstr "EAP-MSCHAPv2"
|
||||||
|
|
||||||
|
#: lib/TTLS_UI/src/TTLS_UI.cpp:133
|
||||||
|
msgid "EAP-GTC"
|
||||||
|
msgstr "EAP-GTC"
|
||||||
|
|
||||||
|
#: lib/TTLS_UI/src/TTLS_UI.cpp:136
|
||||||
|
msgid "Other EAP methods..."
|
||||||
|
msgstr "Alte metode EAP..."
|
||||||
|
|
||||||
|
#: EAPMethods/MSIBuild.EAP-TTLS/en_US.ARM64.Release.Feature-2.idtx:4
|
||||||
|
#: EAPMethods/MSIBuild.EAP-TTLS/en_US.Win32.Release.Feature-2.idtx:4
|
||||||
|
#: EAPMethods/MSIBuild.EAP-TTLS/en_US.x64.Release.Feature-2.idtx:4
|
||||||
|
msgid "EAP-TTLS"
|
||||||
|
msgstr "EAP-TTLS"
|
||||||
|
|
||||||
|
#: EAPMethods/MSIBuild.EAP-TTLS/en_US.ARM64.Release.Feature-2.idtx:4
|
||||||
|
#: EAPMethods/MSIBuild.EAP-TTLS/en_US.Win32.Release.Feature-2.idtx:4
|
||||||
|
#: EAPMethods/MSIBuild.EAP-TTLS/en_US.x64.Release.Feature-2.idtx:4
|
||||||
|
msgid "EAP-TTLS Method"
|
||||||
|
msgstr "Metoda EAP-TTLS"
|
||||||
|
|
||||||
|
#: EAPMethods/MSIBuild/en_US.ARM64.Release.Feature-2.idtx:4
|
||||||
|
#: EAPMethods/MSIBuild/en_US.Win32.Release.Feature-2.idtx:4
|
||||||
|
#: EAPMethods/MSIBuild/en_US.x64.Release.Feature-2.idtx:4
|
||||||
|
msgid "EAP Methods"
|
||||||
|
msgstr "Metodele EAP"
|
||||||
|
|
||||||
|
#: EAPMethods/MSIBuild/en_US.ARM64.Release.Feature-2.idtx:4
|
||||||
|
#: EAPMethods/MSIBuild/en_US.Win32.Release.Feature-2.idtx:4
|
||||||
|
#: EAPMethods/MSIBuild/en_US.x64.Release.Feature-2.idtx:4
|
||||||
|
msgid "Modules to support individual EAP methods"
|
||||||
|
msgstr "Module pentru a sprijini metodele individuale EAP"
|
@ -846,7 +846,7 @@ msgstr ""
|
|||||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
msgid "Ommit my user name and use @mydomain.org only"
|
msgid "Omit my user name and use @mydomain.org only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||||
|
@ -846,7 +846,7 @@ msgstr ""
|
|||||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
msgid "Ommit my user name and use @mydomain.org only"
|
msgid "Omit my user name and use @mydomain.org only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -846,7 +846,7 @@ msgstr ""
|
|||||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
msgid "Ommit my user name and use @mydomain.org only"
|
msgid "Omit my user name and use @mydomain.org only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -846,7 +846,7 @@ msgstr ""
|
|||||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
|
||||||
msgid "Ommit my user name and use @mydomain.org only"
|
msgid "Omit my user name and use @mydomain.org only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -1,982 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright 2015-2016 Amebis
|
|
||||||
Copyright 2016 GÉANT
|
|
||||||
|
|
||||||
This file is part of GÉANTLink.
|
|
||||||
|
|
||||||
GÉANTLink is free software: you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
GÉANTLink is distributed in the hope that it will be useful, but
|
|
||||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with GÉANTLink. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <StdAfx.h>
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
using namespace winstd;
|
|
||||||
|
|
||||||
#pragma comment(lib, "Ws2_32.lib")
|
|
||||||
|
|
||||||
#if EAPMETHOD_TYPE==21
|
|
||||||
#define _EAPMETHOD_PEER eap::peer_ttls
|
|
||||||
#else
|
|
||||||
#error Unknown EAP Method type.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
_EAPMETHOD_PEER g_peer;
|
|
||||||
|
|
||||||
|
|
||||||
///
|
|
||||||
/// DLL main entry point
|
|
||||||
///
|
|
||||||
/// \sa [DllMain entry point](https://msdn.microsoft.com/en-us/library/windows/desktop/ms682583.aspx)
|
|
||||||
///
|
|
||||||
BOOL WINAPI DllMain(_In_ HINSTANCE hinstDLL, _In_ DWORD fdwReason, _In_ LPVOID lpvReserved)
|
|
||||||
{
|
|
||||||
UNREFERENCED_PARAMETER(lpvReserved);
|
|
||||||
|
|
||||||
if (fdwReason == DLL_PROCESS_ATTACH) {
|
|
||||||
#ifdef _DEBUG
|
|
||||||
//Sleep(10000);
|
|
||||||
#endif
|
|
||||||
g_peer.m_instance = hinstDLL;
|
|
||||||
} else if (fdwReason == DLL_PROCESS_DETACH)
|
|
||||||
assert(!_CrtDumpMemoryLeaks());
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Releases all memory associated with an opaque user interface context data buffer.
|
|
||||||
///
|
|
||||||
/// \sa [EapPeerFreeMemory function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363606.aspx)
|
|
||||||
///
|
|
||||||
VOID WINAPI EapPeerFreeMemory(_In_ void *pUIContextData)
|
|
||||||
{
|
|
||||||
event_fn_auto event_auto(g_peer.get_event_fn_auto(__FUNCTION__));
|
|
||||||
|
|
||||||
if (pUIContextData)
|
|
||||||
g_peer.free_memory((BYTE*)pUIContextData);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Releases error-specific memory allocated by the EAP peer method.
|
|
||||||
///
|
|
||||||
/// \sa [EapPeerFreeErrorMemory function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363605.aspx)
|
|
||||||
///
|
|
||||||
VOID WINAPI EapPeerFreeErrorMemory(_In_ EAP_ERROR *ppEapError)
|
|
||||||
{
|
|
||||||
event_fn_auto event_auto(g_peer.get_event_fn_auto(__FUNCTION__));
|
|
||||||
|
|
||||||
if (ppEapError)
|
|
||||||
g_peer.free_error_memory(ppEapError);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Obtains a set of function pointers for an implementation of the EAP peer method currently loaded on the EapHost service.
|
|
||||||
///
|
|
||||||
/// \sa [EapPeerGetInfo function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363608.aspx)
|
|
||||||
///
|
|
||||||
DWORD WINAPI EapPeerGetInfo(_In_ EAP_TYPE* pEapType, _Out_ EAP_PEER_METHOD_ROUTINES* pEapPeerMethodRoutines, _Out_ EAP_ERROR **ppEapError)
|
|
||||||
{
|
|
||||||
DWORD dwResult = ERROR_SUCCESS;
|
|
||||||
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
|
||||||
#ifdef _DEBUG
|
|
||||||
//Sleep(10000);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Parameter check
|
|
||||||
if (!ppEapError)
|
|
||||||
return dwResult = ERROR_INVALID_PARAMETER;
|
|
||||||
|
|
||||||
assert(!*ppEapError);
|
|
||||||
|
|
||||||
if (!pEapType)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pEapType is NULL.")));
|
|
||||||
else if (pEapType->type != EAPMETHOD_TYPE)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_NOT_SUPPORTED, wstring_printf(_T(__FUNCTION__) _T(" Input EAP type (%d) does not match the supported EAP type (%d)."), (int)pEapType->type, (int)EAPMETHOD_TYPE).c_str()));
|
|
||||||
else if (!pEapPeerMethodRoutines)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pEapPeerMethodRoutines is NULL.")));
|
|
||||||
else {
|
|
||||||
pEapPeerMethodRoutines->dwVersion = PRODUCT_VERSION;
|
|
||||||
pEapPeerMethodRoutines->pEapType = NULL;
|
|
||||||
|
|
||||||
pEapPeerMethodRoutines->EapPeerInitialize = EapPeerInitialize;
|
|
||||||
pEapPeerMethodRoutines->EapPeerShutdown = EapPeerShutdown;
|
|
||||||
pEapPeerMethodRoutines->EapPeerBeginSession = EapPeerBeginSession;
|
|
||||||
pEapPeerMethodRoutines->EapPeerEndSession = EapPeerEndSession;
|
|
||||||
pEapPeerMethodRoutines->EapPeerSetCredentials = NULL; // Always NULL unless we want to use generic credential UI
|
|
||||||
pEapPeerMethodRoutines->EapPeerGetIdentity = EapPeerGetIdentity;
|
|
||||||
pEapPeerMethodRoutines->EapPeerProcessRequestPacket = EapPeerProcessRequestPacket;
|
|
||||||
pEapPeerMethodRoutines->EapPeerGetResponsePacket = EapPeerGetResponsePacket;
|
|
||||||
pEapPeerMethodRoutines->EapPeerGetResult = EapPeerGetResult;
|
|
||||||
pEapPeerMethodRoutines->EapPeerGetUIContext = EapPeerGetUIContext;
|
|
||||||
pEapPeerMethodRoutines->EapPeerSetUIContext = EapPeerSetUIContext;
|
|
||||||
pEapPeerMethodRoutines->EapPeerGetResponseAttributes = EapPeerGetResponseAttributes;
|
|
||||||
pEapPeerMethodRoutines->EapPeerSetResponseAttributes = EapPeerSetResponseAttributes;
|
|
||||||
}
|
|
||||||
|
|
||||||
return dwResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#pragma warning(push)
|
|
||||||
#pragma warning(disable: 4702) // Compiler is smart enough to find out the initialize() method is empty => never throws an exception.
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Initializes an EAP peer method for EapHost.
|
|
||||||
///
|
|
||||||
/// \sa [EapPeerGetInfo function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363613.aspx)
|
|
||||||
///
|
|
||||||
DWORD APIENTRY EapPeerInitialize(_Out_ EAP_ERROR **ppEapError)
|
|
||||||
{
|
|
||||||
DWORD dwResult = ERROR_SUCCESS;
|
|
||||||
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
|
||||||
#ifdef _DEBUG
|
|
||||||
//Sleep(10000);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Parameter check
|
|
||||||
if (!ppEapError)
|
|
||||||
return dwResult = ERROR_INVALID_PARAMETER;
|
|
||||||
|
|
||||||
assert(!*ppEapError);
|
|
||||||
|
|
||||||
try {
|
|
||||||
g_peer.initialize();
|
|
||||||
} catch (std::exception &err) {
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(err));
|
|
||||||
dwResult = (*ppEapError)->dwWinError;
|
|
||||||
} catch (...) {
|
|
||||||
dwResult = ERROR_INVALID_DATA;
|
|
||||||
}
|
|
||||||
|
|
||||||
return dwResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
#pragma warning(pop)
|
|
||||||
|
|
||||||
|
|
||||||
#pragma warning(push)
|
|
||||||
#pragma warning(disable: 4702) // Compiler is smart enough to find out the shutdown() method is empty => never throws an exception.
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Shuts down the EAP method and prepares to unload its corresponding DLL.
|
|
||||||
///
|
|
||||||
/// \sa [EapPeerShutdown function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363627.aspx)
|
|
||||||
///
|
|
||||||
DWORD APIENTRY EapPeerShutdown(_Out_ EAP_ERROR **ppEapError)
|
|
||||||
{
|
|
||||||
DWORD dwResult = ERROR_SUCCESS;
|
|
||||||
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
|
||||||
#ifdef _DEBUG
|
|
||||||
//Sleep(10000);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Parameter check
|
|
||||||
if (!ppEapError)
|
|
||||||
return dwResult = ERROR_INVALID_PARAMETER;
|
|
||||||
|
|
||||||
assert(!*ppEapError);
|
|
||||||
|
|
||||||
try {
|
|
||||||
g_peer.shutdown();
|
|
||||||
} catch (std::exception &err) {
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(err));
|
|
||||||
dwResult = (*ppEapError)->dwWinError;
|
|
||||||
} catch (...) {
|
|
||||||
dwResult = ERROR_INVALID_DATA;
|
|
||||||
}
|
|
||||||
|
|
||||||
return dwResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
#pragma warning(pop)
|
|
||||||
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Returns the user data and user identity after being called by EapHost.
|
|
||||||
///
|
|
||||||
/// \sa [EapPeerGetIdentity function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363607.aspx)
|
|
||||||
///
|
|
||||||
DWORD APIENTRY EapPeerGetIdentity(
|
|
||||||
_In_ DWORD dwFlags,
|
|
||||||
_In_ DWORD dwConnectionDataSize,
|
|
||||||
_In_count_(dwConnectionDataSize) const BYTE *pConnectionData,
|
|
||||||
_In_ DWORD dwUserDataSize,
|
|
||||||
_In_count_(dwUserDataSize) const BYTE *pUserData,
|
|
||||||
_In_ HANDLE hTokenImpersonateUser,
|
|
||||||
_Out_ BOOL *pfInvokeUI,
|
|
||||||
_Out_ DWORD *pdwUserDataOutSize,
|
|
||||||
_Out_ BYTE **ppUserDataOut,
|
|
||||||
_Out_ WCHAR **ppwszIdentity,
|
|
||||||
_Out_ EAP_ERROR **ppEapError)
|
|
||||||
{
|
|
||||||
DWORD dwResult = ERROR_SUCCESS;
|
|
||||||
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
|
||||||
#ifdef _DEBUG
|
|
||||||
//Sleep(10000);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Parameter check
|
|
||||||
if (!ppEapError)
|
|
||||||
return dwResult = ERROR_INVALID_PARAMETER;
|
|
||||||
|
|
||||||
assert(!*ppEapError);
|
|
||||||
|
|
||||||
if (!pConnectionData && dwConnectionDataSize)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pConnectionData is NULL.")));
|
|
||||||
else if (!pUserData && dwUserDataSize)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pUserData is NULL.")));
|
|
||||||
else if (!pfInvokeUI)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pfInvokeUI is NULL.")));
|
|
||||||
else if (!pdwUserDataOutSize)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pdwUserDataOutSize is NULL.")));
|
|
||||||
else if (!ppUserDataOut)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" ppUserDataOut is NULL.")));
|
|
||||||
else if (!ppwszIdentity)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" ppwszIdentity is NULL.")));
|
|
||||||
else {
|
|
||||||
try {
|
|
||||||
g_peer.get_identity(dwFlags, pConnectionData, dwConnectionDataSize, pUserData, dwUserDataSize, ppUserDataOut, pdwUserDataOutSize, hTokenImpersonateUser, pfInvokeUI, ppwszIdentity);
|
|
||||||
} catch (std::exception &err) {
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(err));
|
|
||||||
dwResult = (*ppEapError)->dwWinError;
|
|
||||||
} catch (...) {
|
|
||||||
dwResult = ERROR_INVALID_DATA;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return dwResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Starts an EAP authentication session on the peer EapHost using the EAP method.
|
|
||||||
///
|
|
||||||
/// \sa [EapPeerBeginSession function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363600.aspx)
|
|
||||||
///
|
|
||||||
DWORD APIENTRY EapPeerBeginSession(
|
|
||||||
_In_ DWORD dwFlags,
|
|
||||||
_In_ const EapAttributes *pAttributeArray,
|
|
||||||
_In_ HANDLE hTokenImpersonateUser,
|
|
||||||
_In_ DWORD dwConnectionDataSize,
|
|
||||||
_In_count_(dwConnectionDataSize) /*const*/ BYTE *pConnectionData,
|
|
||||||
_In_ DWORD dwUserDataSize,
|
|
||||||
_In_count_(dwUserDataSize) /*const*/ BYTE *pUserData,
|
|
||||||
_In_ DWORD dwMaxSendPacketSize,
|
|
||||||
_Out_ EAP_SESSION_HANDLE *phSession,
|
|
||||||
_Out_ EAP_ERROR **ppEapError)
|
|
||||||
{
|
|
||||||
DWORD dwResult = ERROR_SUCCESS;
|
|
||||||
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
|
||||||
#ifdef _DEBUG
|
|
||||||
//Sleep(10000);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Parameter check
|
|
||||||
if (!ppEapError)
|
|
||||||
return dwResult = ERROR_INVALID_PARAMETER;
|
|
||||||
|
|
||||||
assert(!*ppEapError);
|
|
||||||
|
|
||||||
if (!pConnectionData && dwConnectionDataSize)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pConnectionData is NULL.")));
|
|
||||||
else if (!pUserData && dwUserDataSize)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pUserData is NULL.")));
|
|
||||||
else if (!phSession)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" phSession is NULL.")));
|
|
||||||
else {
|
|
||||||
try {
|
|
||||||
*phSession = g_peer.begin_session(dwFlags, pAttributeArray, hTokenImpersonateUser, pConnectionData, dwConnectionDataSize, pUserData, dwUserDataSize, dwMaxSendPacketSize);
|
|
||||||
} catch (std::exception &err) {
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(err));
|
|
||||||
dwResult = (*ppEapError)->dwWinError;
|
|
||||||
} catch (...) {
|
|
||||||
dwResult = ERROR_INVALID_DATA;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return dwResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Ends an EAP authentication session for the EAP method.
|
|
||||||
///
|
|
||||||
/// \sa [EapPeerEndSession function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363604.aspx)
|
|
||||||
///
|
|
||||||
DWORD APIENTRY EapPeerEndSession(
|
|
||||||
_In_ EAP_SESSION_HANDLE hSession,
|
|
||||||
_Out_ EAP_ERROR **ppEapError)
|
|
||||||
{
|
|
||||||
DWORD dwResult = ERROR_SUCCESS;
|
|
||||||
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
|
||||||
#ifdef _DEBUG
|
|
||||||
//Sleep(10000);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Parameter check
|
|
||||||
if (!ppEapError)
|
|
||||||
return dwResult = ERROR_INVALID_PARAMETER;
|
|
||||||
|
|
||||||
assert(!*ppEapError);
|
|
||||||
|
|
||||||
if (!hSession)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" hSession is NULL.")));
|
|
||||||
else {
|
|
||||||
try {
|
|
||||||
g_peer.end_session(hSession);
|
|
||||||
} catch (std::exception &err) {
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(err));
|
|
||||||
dwResult = (*ppEapError)->dwWinError;
|
|
||||||
} catch (...) {
|
|
||||||
dwResult = ERROR_INVALID_DATA;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return dwResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Processes a packet received by EapHost from a supplicant.
|
|
||||||
///
|
|
||||||
/// \sa [EapPeerProcessRequestPacket function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363621.aspx)
|
|
||||||
///
|
|
||||||
DWORD APIENTRY EapPeerProcessRequestPacket(
|
|
||||||
_In_ EAP_SESSION_HANDLE hSession,
|
|
||||||
_In_ DWORD dwReceivedPacketSize,
|
|
||||||
_In_bytecount_(dwReceivedPacketSize) /*const*/ EapPacket *pReceivedPacket,
|
|
||||||
_Out_ EapPeerMethodOutput *pEapOutput,
|
|
||||||
_Out_ EAP_ERROR **ppEapError)
|
|
||||||
{
|
|
||||||
DWORD dwResult = ERROR_SUCCESS;
|
|
||||||
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
|
||||||
#ifdef _DEBUG
|
|
||||||
//Sleep(10000);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Parameter check
|
|
||||||
if (!ppEapError)
|
|
||||||
return dwResult = ERROR_INVALID_PARAMETER;
|
|
||||||
|
|
||||||
assert(!*ppEapError);
|
|
||||||
|
|
||||||
if (!hSession)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" hSession is NULL.")));
|
|
||||||
else if (!pReceivedPacket || dwReceivedPacketSize < 6)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pReceivedPacket is NULL or too short.")));
|
|
||||||
else if (pReceivedPacket->Data[0] != EAPMETHOD_TYPE)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, wstring_printf(_T(__FUNCTION__) _T(" Packet EAP type (%d) does not match the supported EAP type (%d)."), (int)pReceivedPacket->Data[0], (int)EAPMETHOD_TYPE).c_str()));
|
|
||||||
else if (!pEapOutput)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pEapOutput is NULL.")));
|
|
||||||
else {
|
|
||||||
try {
|
|
||||||
g_peer.process_request_packet(hSession, pReceivedPacket, dwReceivedPacketSize, pEapOutput);
|
|
||||||
} catch (std::exception &err) {
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(err));
|
|
||||||
dwResult = (*ppEapError)->dwWinError;
|
|
||||||
} catch (...) {
|
|
||||||
dwResult = ERROR_INVALID_DATA;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return dwResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Obtains a response packet from the EAP method.
|
|
||||||
///
|
|
||||||
/// \sa [EapPeerGetResponsePacket function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363610.aspx)
|
|
||||||
///
|
|
||||||
DWORD APIENTRY EapPeerGetResponsePacket(
|
|
||||||
_In_ EAP_SESSION_HANDLE hSession,
|
|
||||||
_Inout_ DWORD *pdwSendPacketSize,
|
|
||||||
_Inout_bytecap_(*dwSendPacketSize) EapPacket *pSendPacket,
|
|
||||||
_Out_ EAP_ERROR **ppEapError)
|
|
||||||
{
|
|
||||||
DWORD dwResult = ERROR_SUCCESS;
|
|
||||||
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
|
||||||
#ifdef _DEBUG
|
|
||||||
//Sleep(10000);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Parameter check
|
|
||||||
if (!ppEapError)
|
|
||||||
return dwResult = ERROR_INVALID_PARAMETER;
|
|
||||||
|
|
||||||
assert(!*ppEapError);
|
|
||||||
|
|
||||||
if (!hSession)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" hSession is NULL.")));
|
|
||||||
else if (!pdwSendPacketSize)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pdwSendPacketSize is NULL.")));
|
|
||||||
else if (!pSendPacket && *pdwSendPacketSize)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pSendPacket is NULL.")));
|
|
||||||
else {
|
|
||||||
try {
|
|
||||||
g_peer.get_response_packet(hSession, pSendPacket, pdwSendPacketSize);
|
|
||||||
} catch (std::exception &err) {
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(err));
|
|
||||||
dwResult = (*ppEapError)->dwWinError;
|
|
||||||
} catch (...) {
|
|
||||||
dwResult = ERROR_INVALID_DATA;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return dwResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Obtains the result of an authentication session from the EAP method.
|
|
||||||
///
|
|
||||||
/// \sa [EapPeerGetResult function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363611.aspx)
|
|
||||||
///
|
|
||||||
DWORD APIENTRY EapPeerGetResult(
|
|
||||||
_In_ EAP_SESSION_HANDLE hSession,
|
|
||||||
_In_ EapPeerMethodResultReason reason,
|
|
||||||
_Out_ EapPeerMethodResult *pResult,
|
|
||||||
_Out_ EAP_ERROR **ppEapError)
|
|
||||||
{
|
|
||||||
DWORD dwResult = ERROR_SUCCESS;
|
|
||||||
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
|
||||||
#ifdef _DEBUG
|
|
||||||
//Sleep(10000);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Parameter check
|
|
||||||
if (!ppEapError)
|
|
||||||
return dwResult = ERROR_INVALID_PARAMETER;
|
|
||||||
|
|
||||||
assert(!*ppEapError);
|
|
||||||
|
|
||||||
if (!hSession)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" hSession is NULL.")));
|
|
||||||
else if (!pResult)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pResult is NULL.")));
|
|
||||||
else {
|
|
||||||
try {
|
|
||||||
g_peer.get_result(hSession, reason, pResult);
|
|
||||||
} catch (std::exception &err) {
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(err));
|
|
||||||
dwResult = (*ppEapError)->dwWinError;
|
|
||||||
} catch (...) {
|
|
||||||
dwResult = ERROR_INVALID_DATA;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return dwResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Obtains the user interface context from the EAP method.
|
|
||||||
///
|
|
||||||
/// \note This function is always followed by the `EapPeerInvokeInteractiveUI()` function, which is followed by the `EapPeerSetUIContext()` function.
|
|
||||||
///
|
|
||||||
/// \sa [EapPeerGetUIContext function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363612.aspx)
|
|
||||||
///
|
|
||||||
DWORD APIENTRY EapPeerGetUIContext(
|
|
||||||
_In_ EAP_SESSION_HANDLE hSession,
|
|
||||||
_Out_ DWORD *pdwUIContextDataSize,
|
|
||||||
_Out_ BYTE **ppUIContextData,
|
|
||||||
_Out_ EAP_ERROR **ppEapError)
|
|
||||||
{
|
|
||||||
DWORD dwResult = ERROR_SUCCESS;
|
|
||||||
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
|
||||||
#ifdef _DEBUG
|
|
||||||
//Sleep(10000);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Parameter check
|
|
||||||
if (!ppEapError)
|
|
||||||
return dwResult = ERROR_INVALID_PARAMETER;
|
|
||||||
|
|
||||||
assert(!*ppEapError);
|
|
||||||
|
|
||||||
if (!hSession)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" hSession is NULL.")));
|
|
||||||
else if (!pdwUIContextDataSize)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pdwUIContextDataSize is NULL.")));
|
|
||||||
else if (!ppUIContextData)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" ppUIContextData is NULL.")));
|
|
||||||
else {
|
|
||||||
try {
|
|
||||||
g_peer.get_ui_context(hSession, ppUIContextData, pdwUIContextDataSize);
|
|
||||||
} catch (std::exception &err) {
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(err));
|
|
||||||
dwResult = (*ppEapError)->dwWinError;
|
|
||||||
} catch (...) {
|
|
||||||
dwResult = ERROR_INVALID_DATA;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return dwResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Provides a user interface context to the EAP method.
|
|
||||||
///
|
|
||||||
/// \note This function is called after the UI has been raised through the `EapPeerGetUIContext()` function.
|
|
||||||
///
|
|
||||||
/// \sa [EapPeerSetUIContext function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363626.aspx)
|
|
||||||
///
|
|
||||||
DWORD APIENTRY EapPeerSetUIContext(
|
|
||||||
_In_ EAP_SESSION_HANDLE hSession,
|
|
||||||
_In_ DWORD dwUIContextDataSize,
|
|
||||||
_In_count_(dwUIContextDataSize) const BYTE *pUIContextData,
|
|
||||||
_Out_ EapPeerMethodOutput *pEapOutput,
|
|
||||||
_Out_ EAP_ERROR **ppEapError)
|
|
||||||
{
|
|
||||||
DWORD dwResult = ERROR_SUCCESS;
|
|
||||||
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
|
||||||
#ifdef _DEBUG
|
|
||||||
//Sleep(10000);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Parameter check
|
|
||||||
if (!ppEapError)
|
|
||||||
return dwResult = ERROR_INVALID_PARAMETER;
|
|
||||||
|
|
||||||
assert(!*ppEapError);
|
|
||||||
|
|
||||||
if (!hSession)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" hSession is NULL.")));
|
|
||||||
else if (!pUIContextData && dwUIContextDataSize)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pUIContextData is NULL.")));
|
|
||||||
else if (!pEapOutput)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pEapOutput is NULL.")));
|
|
||||||
else {
|
|
||||||
try {
|
|
||||||
g_peer.set_ui_context(hSession, pUIContextData, dwUIContextDataSize, pEapOutput);
|
|
||||||
} catch (std::exception &err) {
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(err));
|
|
||||||
dwResult = (*ppEapError)->dwWinError;
|
|
||||||
} catch (...) {
|
|
||||||
dwResult = ERROR_INVALID_DATA;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return dwResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Obtains an array of EAP response attributes from the EAP method.
|
|
||||||
///
|
|
||||||
/// \sa [EapPeerGetResponseAttributes function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363609.aspx)
|
|
||||||
///
|
|
||||||
DWORD APIENTRY EapPeerGetResponseAttributes(
|
|
||||||
_In_ EAP_SESSION_HANDLE hSession,
|
|
||||||
_Out_ EapAttributes *pAttribs,
|
|
||||||
_Out_ EAP_ERROR **ppEapError)
|
|
||||||
{
|
|
||||||
DWORD dwResult = ERROR_SUCCESS;
|
|
||||||
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
|
||||||
#ifdef _DEBUG
|
|
||||||
//Sleep(10000);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Parameter check
|
|
||||||
if (!ppEapError)
|
|
||||||
return dwResult = ERROR_INVALID_PARAMETER;
|
|
||||||
|
|
||||||
assert(!*ppEapError);
|
|
||||||
|
|
||||||
if (!hSession)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" hSession is NULL.")));
|
|
||||||
else if (!pAttribs)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pAttribs is NULL.")));
|
|
||||||
else {
|
|
||||||
try {
|
|
||||||
g_peer.get_response_attributes(hSession, pAttribs);
|
|
||||||
} catch (std::exception &err) {
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(err));
|
|
||||||
dwResult = (*ppEapError)->dwWinError;
|
|
||||||
} catch (...) {
|
|
||||||
dwResult = ERROR_INVALID_DATA;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return dwResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Provides an updated array of EAP response attributes to the EAP method.
|
|
||||||
///
|
|
||||||
/// \sa [EapPeerSetResponseAttributes function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363625.aspx)
|
|
||||||
///
|
|
||||||
DWORD APIENTRY EapPeerSetResponseAttributes(
|
|
||||||
_In_ EAP_SESSION_HANDLE hSession,
|
|
||||||
_In_ /*const*/ EapAttributes *pAttribs,
|
|
||||||
_Out_ EapPeerMethodOutput *pEapOutput,
|
|
||||||
_Out_ EAP_ERROR **ppEapError)
|
|
||||||
{
|
|
||||||
DWORD dwResult = ERROR_SUCCESS;
|
|
||||||
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
|
||||||
#ifdef _DEBUG
|
|
||||||
//Sleep(10000);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Parameter check
|
|
||||||
if (!ppEapError)
|
|
||||||
return dwResult = ERROR_INVALID_PARAMETER;
|
|
||||||
|
|
||||||
assert(!*ppEapError);
|
|
||||||
|
|
||||||
if (!hSession)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" hSession is NULL.")));
|
|
||||||
else if (!pEapOutput)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pEapOutput is NULL.")));
|
|
||||||
else {
|
|
||||||
try {
|
|
||||||
g_peer.set_response_attributes(hSession, pAttribs, pEapOutput);
|
|
||||||
} catch (std::exception &err) {
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(err));
|
|
||||||
dwResult = (*ppEapError)->dwWinError;
|
|
||||||
} catch (...) {
|
|
||||||
dwResult = ERROR_INVALID_DATA;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return dwResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Defines the implementation of an EAP method-specific function that retrieves the properties of an EAP method given the connection and user data.
|
|
||||||
///
|
|
||||||
/// \sa [EapPeerGetMethodProperties function](https://msdn.microsoft.com/en-us/library/windows/desktop/hh706636.aspx)
|
|
||||||
///
|
|
||||||
DWORD WINAPI EapPeerGetMethodProperties(
|
|
||||||
_In_ DWORD dwVersion,
|
|
||||||
_In_ DWORD dwFlags,
|
|
||||||
_In_ EAP_METHOD_TYPE eapMethodType,
|
|
||||||
_In_ HANDLE hUserImpersonationToken,
|
|
||||||
_In_ DWORD dwConnectionDataSize,
|
|
||||||
_In_count_(dwConnectionDataSize) const BYTE *pConnectionData,
|
|
||||||
_In_ DWORD dwUserDataSize,
|
|
||||||
_In_count_(dwUserDataSize) const BYTE *pUserData,
|
|
||||||
_Out_ EAP_METHOD_PROPERTY_ARRAY *pMethodPropertyArray,
|
|
||||||
_Out_ EAP_ERROR **ppEapError)
|
|
||||||
{
|
|
||||||
DWORD dwResult = ERROR_SUCCESS;
|
|
||||||
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
|
||||||
#ifdef _DEBUG
|
|
||||||
//Sleep(10000);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Parameter check
|
|
||||||
if (!ppEapError)
|
|
||||||
return dwResult = ERROR_INVALID_PARAMETER;
|
|
||||||
|
|
||||||
assert(!*ppEapError);
|
|
||||||
|
|
||||||
if (eapMethodType.eapType.type != EAPMETHOD_TYPE)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_NOT_SUPPORTED, wstring_printf(_T(__FUNCTION__) _T(" Input EAP type (%d) does not match the supported EAP type (%d)."), (int)eapMethodType.eapType.type, (int)EAPMETHOD_TYPE).c_str()));
|
|
||||||
else if (eapMethodType.dwAuthorId != 67532)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_NOT_SUPPORTED, wstring_printf(_T(__FUNCTION__) _T(" EAP author (%d) does not match the supported author (%d)."), (int)eapMethodType.dwAuthorId, (int)67532).c_str()));
|
|
||||||
else if (!pConnectionData && dwConnectionDataSize)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pConnectionData is NULL.")));
|
|
||||||
else if (!pUserData && dwUserDataSize)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pUserData is NULL.")));
|
|
||||||
else if (!pMethodPropertyArray)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pMethodPropertyArray is NULL.")));
|
|
||||||
else {
|
|
||||||
try {
|
|
||||||
g_peer.get_method_properties(dwVersion, dwFlags, hUserImpersonationToken, pConnectionData, dwConnectionDataSize, pUserData, dwUserDataSize, pMethodPropertyArray);
|
|
||||||
} catch (std::exception &err) {
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(err));
|
|
||||||
dwResult = (*ppEapError)->dwWinError;
|
|
||||||
} catch (...) {
|
|
||||||
dwResult = ERROR_INVALID_DATA;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return dwResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Converts XML into the configuration BLOB. The XML based credentials can come from group policy or from a system administrator.
|
|
||||||
///
|
|
||||||
/// \sa [EapPeerCredentialsXml2Blob function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363603.aspx)
|
|
||||||
///
|
|
||||||
DWORD WINAPI EapPeerCredentialsXml2Blob(
|
|
||||||
_In_ DWORD dwFlags,
|
|
||||||
_In_ EAP_METHOD_TYPE eapMethodType,
|
|
||||||
_In_ IXMLDOMDocument2 *pCredentialsDoc,
|
|
||||||
_In_count_(dwConnectionDataSize) const BYTE *pConnectionData,
|
|
||||||
_In_ DWORD dwConnectionDataSize,
|
|
||||||
_Out_ BYTE **ppCredentialsOut,
|
|
||||||
_Out_ DWORD *pdwCredentialsOutSize,
|
|
||||||
_Out_ EAP_ERROR **ppEapError)
|
|
||||||
{
|
|
||||||
DWORD dwResult = ERROR_SUCCESS;
|
|
||||||
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
|
||||||
#ifdef _DEBUG
|
|
||||||
//Sleep(10000);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Parameter check
|
|
||||||
if (!ppEapError)
|
|
||||||
return dwResult = ERROR_INVALID_PARAMETER;
|
|
||||||
|
|
||||||
assert(!*ppEapError);
|
|
||||||
|
|
||||||
if (eapMethodType.eapType.type != EAPMETHOD_TYPE)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_NOT_SUPPORTED, wstring_printf(_T(__FUNCTION__) _T(" Input EAP type (%d) does not match the supported EAP type (%d)."), (int)eapMethodType.eapType.type, (int)EAPMETHOD_TYPE).c_str()));
|
|
||||||
else if (eapMethodType.dwAuthorId != 67532)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_NOT_SUPPORTED, wstring_printf(_T(__FUNCTION__) _T(" EAP author (%d) does not match the supported author (%d)."), (int)eapMethodType.dwAuthorId, (int)67532).c_str()));
|
|
||||||
else if (!pCredentialsDoc)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pCredentialsDoc is NULL.")));
|
|
||||||
else if (!pConnectionData && dwConnectionDataSize)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pConnectionData is NULL.")));
|
|
||||||
else if (!ppCredentialsOut)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" ppCredentialsOut is NULL.")));
|
|
||||||
else if (!pdwCredentialsOutSize)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pdwCredentialsOutSize is NULL.")));
|
|
||||||
else {
|
|
||||||
// <Credentials>
|
|
||||||
com_obj<IXMLDOMNode> pXmlElCredentials;
|
|
||||||
if (FAILED(eapxml::select_node(pCredentialsDoc, bstr(L"//EapHostUserCredentials/Credentials"), pXmlElCredentials))) {
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_NOT_FOUND, _T(__FUNCTION__) _T(" Error selecting <EapHostUserCredentials><Credentials> element.")));
|
|
||||||
return dwResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Load credentials.
|
|
||||||
pCredentialsDoc->setProperty(bstr(L"SelectionNamespaces"), variant(L"xmlns:eap-metadata=\"urn:ietf:params:xml:ns:yang:ietf-eap-metadata\""));
|
|
||||||
try {
|
|
||||||
g_peer.credentials_xml2blob(dwFlags, pXmlElCredentials, pConnectionData, dwConnectionDataSize, ppCredentialsOut, pdwCredentialsOutSize);
|
|
||||||
} catch (std::exception &err) {
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(err));
|
|
||||||
dwResult = (*ppEapError)->dwWinError;
|
|
||||||
} catch (...) {
|
|
||||||
dwResult = ERROR_INVALID_DATA;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return dwResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Defines the implementation of an EAP method-specific function that obtains the EAP Single-Sign-On (SSO) credential input fields for an EAP method.
|
|
||||||
///
|
|
||||||
/// \sa [EapPeerQueryCredentialInputFields function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363622.aspx)
|
|
||||||
///
|
|
||||||
DWORD WINAPI EapPeerQueryCredentialInputFields(
|
|
||||||
_In_ HANDLE hUserImpersonationToken,
|
|
||||||
_In_ EAP_METHOD_TYPE eapMethodType,
|
|
||||||
_In_ DWORD dwFlags,
|
|
||||||
_In_ DWORD dwConnectionDataSize,
|
|
||||||
_In_count_(dwConnectionDataSize) const BYTE *pConnectionData,
|
|
||||||
_Out_ EAP_CONFIG_INPUT_FIELD_ARRAY *pEapConfigInputFieldsArray,
|
|
||||||
_Out_ EAP_ERROR **ppEapError)
|
|
||||||
{
|
|
||||||
DWORD dwResult = ERROR_SUCCESS;
|
|
||||||
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
|
||||||
#ifdef _DEBUG
|
|
||||||
//Sleep(10000);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Parameter check
|
|
||||||
if (!ppEapError)
|
|
||||||
return dwResult = ERROR_INVALID_PARAMETER;
|
|
||||||
|
|
||||||
assert(!*ppEapError);
|
|
||||||
|
|
||||||
if (eapMethodType.eapType.type != EAPMETHOD_TYPE)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_NOT_SUPPORTED, wstring_printf(_T(__FUNCTION__) _T(" Input EAP type (%d) does not match the supported EAP type (%d)."), (int)eapMethodType.eapType.type, (int)EAPMETHOD_TYPE).c_str()));
|
|
||||||
else if (eapMethodType.dwAuthorId != 67532)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_NOT_SUPPORTED, wstring_printf(_T(__FUNCTION__) _T(" EAP author (%d) does not match the supported author (%d)."), (int)eapMethodType.dwAuthorId, (int)67532).c_str()));
|
|
||||||
else if (!pConnectionData && dwConnectionDataSize)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pConnectionData is NULL.")));
|
|
||||||
else if (!pEapConfigInputFieldsArray)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pEapConfigInputFieldsArray is NULL.")));
|
|
||||||
else {
|
|
||||||
try {
|
|
||||||
g_peer.query_credential_input_fields(hUserImpersonationToken, dwFlags, dwConnectionDataSize, pConnectionData, pEapConfigInputFieldsArray);
|
|
||||||
} catch (std::exception &err) {
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(err));
|
|
||||||
dwResult = (*ppEapError)->dwWinError;
|
|
||||||
} catch (...) {
|
|
||||||
dwResult = ERROR_INVALID_DATA;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return dwResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Defines the implementation of an EAP method function that obtains the user BLOB data provided in an interactive Single-Sign-On (SSO) UI raised on the supplicant.
|
|
||||||
///
|
|
||||||
/// \sa [EapPeerQueryUserBlobFromCredentialInputFields function](https://msdn.microsoft.com/en-us/library/windows/desktop/bb204697.aspx)
|
|
||||||
///
|
|
||||||
DWORD WINAPI EapPeerQueryUserBlobFromCredentialInputFields(
|
|
||||||
_In_ HANDLE hUserImpersonationToken,
|
|
||||||
_In_ EAP_METHOD_TYPE eapMethodType,
|
|
||||||
_In_ DWORD dwFlags,
|
|
||||||
_In_ DWORD dwConnectionDataSize,
|
|
||||||
_In_count_(dwConnectionDataSize) const BYTE *pConnectionData,
|
|
||||||
_In_ const EAP_CONFIG_INPUT_FIELD_ARRAY *pEapConfigInputFieldArray,
|
|
||||||
_Inout_ DWORD *pdwUsersBlobSize,
|
|
||||||
_Inout_ BYTE **ppUserBlob,
|
|
||||||
_Out_ EAP_ERROR **ppEapError)
|
|
||||||
{
|
|
||||||
DWORD dwResult = ERROR_SUCCESS;
|
|
||||||
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
|
||||||
#ifdef _DEBUG
|
|
||||||
//Sleep(10000);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Parameter check
|
|
||||||
if (!ppEapError)
|
|
||||||
return dwResult = ERROR_INVALID_PARAMETER;
|
|
||||||
|
|
||||||
assert(!*ppEapError);
|
|
||||||
|
|
||||||
if (eapMethodType.eapType.type != EAPMETHOD_TYPE)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_NOT_SUPPORTED, wstring_printf(_T(__FUNCTION__) _T(" Input EAP type (%d) does not match the supported EAP type (%d)."), (int)eapMethodType.eapType.type, (int)EAPMETHOD_TYPE).c_str()));
|
|
||||||
else if (eapMethodType.dwAuthorId != 67532)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_NOT_SUPPORTED, wstring_printf(_T(__FUNCTION__) _T(" EAP author (%d) does not match the supported author (%d)."), (int)eapMethodType.dwAuthorId, (int)67532).c_str()));
|
|
||||||
else if (!pConnectionData && dwConnectionDataSize)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pConnectionData is NULL.")));
|
|
||||||
else if (!pEapConfigInputFieldArray)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pEapConfigInputFieldArray is NULL.")));
|
|
||||||
else if (!pdwUsersBlobSize)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pdwUsersBlobSize is NULL.")));
|
|
||||||
else if (!ppUserBlob)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" ppUserBlob is NULL.")));
|
|
||||||
else {
|
|
||||||
try {
|
|
||||||
g_peer.query_user_blob_from_credential_input_fields(hUserImpersonationToken, dwFlags, dwConnectionDataSize, pConnectionData, pEapConfigInputFieldArray, pdwUsersBlobSize, ppUserBlob);
|
|
||||||
} catch (std::exception &err) {
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(err));
|
|
||||||
dwResult = (*ppEapError)->dwWinError;
|
|
||||||
} catch (...) {
|
|
||||||
dwResult = ERROR_INVALID_DATA;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return dwResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Defines the implementation of an EAP method API that provides the input fields for interactive UI components to be raised on the supplicant.
|
|
||||||
///
|
|
||||||
/// \sa [EapPeerQueryInteractiveUIInputFields function](https://msdn.microsoft.com/en-us/library/windows/desktop/bb204695.aspx)
|
|
||||||
///
|
|
||||||
DWORD WINAPI EapPeerQueryInteractiveUIInputFields(
|
|
||||||
_In_ DWORD dwVersion,
|
|
||||||
_In_ DWORD dwFlags,
|
|
||||||
_In_ DWORD dwUIContextDataSize,
|
|
||||||
_In_count_(dwUIContextDataSize) const BYTE *pUIContextData,
|
|
||||||
_Out_ EAP_INTERACTIVE_UI_DATA *pEapInteractiveUIData,
|
|
||||||
_Out_ EAP_ERROR **ppEapError,
|
|
||||||
_Inout_ LPVOID *ppvReserved)
|
|
||||||
{
|
|
||||||
DWORD dwResult = ERROR_SUCCESS;
|
|
||||||
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
|
||||||
#ifdef _DEBUG
|
|
||||||
//Sleep(10000);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Parameter check
|
|
||||||
if (!ppEapError)
|
|
||||||
return dwResult = ERROR_INVALID_PARAMETER;
|
|
||||||
|
|
||||||
assert(!*ppEapError);
|
|
||||||
|
|
||||||
if (!pUIContextData && dwUIContextDataSize)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pUIContextData is NULL.")));
|
|
||||||
else if (!pUIContextData && dwUIContextDataSize)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pUIContextData is NULL.")));
|
|
||||||
else if (!pEapInteractiveUIData)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pEapInteractiveUIData is NULL.")));
|
|
||||||
else {
|
|
||||||
UNREFERENCED_PARAMETER(ppvReserved);
|
|
||||||
|
|
||||||
try {
|
|
||||||
g_peer.query_interactive_ui_input_fields(dwVersion, dwFlags, dwUIContextDataSize, pUIContextData, pEapInteractiveUIData);
|
|
||||||
} catch (std::exception &err) {
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(err));
|
|
||||||
dwResult = (*ppEapError)->dwWinError;
|
|
||||||
} catch (...) {
|
|
||||||
dwResult = ERROR_INVALID_DATA;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return dwResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Converts user information into a user BLOB that can be consumed by EapHost run-time functions.
|
|
||||||
///
|
|
||||||
/// \sa [EapPeerQueryUIBlobFromInteractiveUIInputFields function](https://msdn.microsoft.com/en-us/library/windows/desktop/bb204696.aspx)
|
|
||||||
///
|
|
||||||
DWORD WINAPI EapPeerQueryUIBlobFromInteractiveUIInputFields(
|
|
||||||
_In_ DWORD dwVersion,
|
|
||||||
_In_ DWORD dwFlags,
|
|
||||||
_In_ DWORD dwUIContextDataSize,
|
|
||||||
_In_count_(dwUIContextDataSize) const BYTE *pUIContextData,
|
|
||||||
_In_ const EAP_INTERACTIVE_UI_DATA *pEapInteractiveUIData,
|
|
||||||
_Out_ DWORD *pdwDataFromInteractiveUISize,
|
|
||||||
_Out_ BYTE **ppDataFromInteractiveUI,
|
|
||||||
_Out_ EAP_ERROR **ppEapError,
|
|
||||||
_Inout_ LPVOID *ppvReserved)
|
|
||||||
{
|
|
||||||
DWORD dwResult = ERROR_SUCCESS;
|
|
||||||
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
|
||||||
#ifdef _DEBUG
|
|
||||||
//Sleep(10000);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Parameter check
|
|
||||||
if (!ppEapError)
|
|
||||||
return dwResult = ERROR_INVALID_PARAMETER;
|
|
||||||
|
|
||||||
assert(!*ppEapError);
|
|
||||||
|
|
||||||
if (!pUIContextData && dwUIContextDataSize)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pEapConfigInputFieldArray is NULL.")));
|
|
||||||
else if (!pEapInteractiveUIData)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pEapInteractiveUIData is NULL.")));
|
|
||||||
else if (!pdwDataFromInteractiveUISize)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pdwDataFromInteractiveUISize is NULL.")));
|
|
||||||
else if (!ppDataFromInteractiveUI)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" ppDataFromInteractiveUI is NULL.")));
|
|
||||||
else {
|
|
||||||
UNREFERENCED_PARAMETER(ppvReserved);
|
|
||||||
|
|
||||||
try {
|
|
||||||
g_peer.query_ui_blob_from_interactive_ui_input_fields(dwVersion, dwFlags, dwUIContextDataSize, pUIContextData, pEapInteractiveUIData, pdwDataFromInteractiveUISize, ppDataFromInteractiveUI);
|
|
||||||
} catch (std::exception &err) {
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(err));
|
|
||||||
dwResult = (*ppEapError)->dwWinError;
|
|
||||||
} catch (...) {
|
|
||||||
dwResult = ERROR_INVALID_DATA;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return dwResult;
|
|
||||||
}
|
|
@ -1,418 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright 2015-2016 Amebis
|
|
||||||
Copyright 2016 GÉANT
|
|
||||||
|
|
||||||
This file is part of GÉANTLink.
|
|
||||||
|
|
||||||
GÉANTLink is free software: you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
GÉANTLink is distributed in the hope that it will be useful, but
|
|
||||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with GÉANTLink. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <StdAfx.h>
|
|
||||||
|
|
||||||
#pragma comment(lib, "msxml6.lib")
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
using namespace winstd;
|
|
||||||
|
|
||||||
|
|
||||||
#if EAPMETHOD_TYPE==21
|
|
||||||
#define _EAPMETHOD_PEER_UI eap::peer_ttls_ui
|
|
||||||
#else
|
|
||||||
#error Unknown EAP Method type.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
HANDLE g_act_ctx = NULL;
|
|
||||||
_EAPMETHOD_PEER_UI g_peer;
|
|
||||||
|
|
||||||
|
|
||||||
///
|
|
||||||
/// DLL main entry point
|
|
||||||
///
|
|
||||||
/// \sa [DllMain entry point](https://msdn.microsoft.com/en-us/library/windows/desktop/ms682583.aspx)
|
|
||||||
///
|
|
||||||
BOOL WINAPI DllMain(_In_ HINSTANCE hinstDLL, _In_ DWORD fdwReason, _In_ LPVOID lpvReserved)
|
|
||||||
{
|
|
||||||
UNREFERENCED_PARAMETER(lpvReserved);
|
|
||||||
|
|
||||||
if (fdwReason == DLL_PROCESS_ATTACH) {
|
|
||||||
#ifdef _DEBUG
|
|
||||||
//Sleep(10000);
|
|
||||||
#endif
|
|
||||||
g_peer.m_instance = hinstDLL;
|
|
||||||
|
|
||||||
#if _WIN32_WINNT >= _WIN32_WINNT_VISTA
|
|
||||||
// Declare our DllHost process as DPI-aware.
|
|
||||||
SetProcessDPIAware();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Save current activation context, as proper activation context is set at this time only (LoadLibrary() call).
|
|
||||||
GetCurrentActCtx(&g_act_ctx);
|
|
||||||
} else if (fdwReason == DLL_PROCESS_DETACH) {
|
|
||||||
if (g_act_ctx)
|
|
||||||
ReleaseActCtx(g_act_ctx);
|
|
||||||
|
|
||||||
// wxWidgets library has some global objects allocating data on heap in constructors,
|
|
||||||
// causing false-positive memory leak reports.
|
|
||||||
//assert(!_CrtDumpMemoryLeaks());
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Releases all memory associated with an opaque user interface context data buffer.
|
|
||||||
///
|
|
||||||
/// \sa [EapPeerFreeMemory function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363606.aspx)
|
|
||||||
///
|
|
||||||
VOID WINAPI EapPeerFreeMemory(_In_ void *pUIContextData)
|
|
||||||
{
|
|
||||||
event_fn_auto event_auto(g_peer.get_event_fn_auto(__FUNCTION__));
|
|
||||||
|
|
||||||
if (pUIContextData)
|
|
||||||
g_peer.free_memory((BYTE*)pUIContextData);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Releases error-specific memory allocated by the EAP peer method.
|
|
||||||
///
|
|
||||||
/// \sa [EapPeerFreeErrorMemory function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363605.aspx)
|
|
||||||
///
|
|
||||||
VOID WINAPI EapPeerFreeErrorMemory(_In_ EAP_ERROR *ppEapError)
|
|
||||||
{
|
|
||||||
event_fn_auto event_auto(g_peer.get_event_fn_auto(__FUNCTION__));
|
|
||||||
|
|
||||||
if (ppEapError)
|
|
||||||
g_peer.free_error_memory(ppEapError);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Converts XML into the configuration BLOB.
|
|
||||||
///
|
|
||||||
/// \sa [EapPeerConfigXml2Blob function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363602.aspx)
|
|
||||||
///
|
|
||||||
DWORD WINAPI EapPeerConfigXml2Blob(
|
|
||||||
_In_ DWORD dwFlags,
|
|
||||||
_In_ EAP_METHOD_TYPE eapMethodType,
|
|
||||||
_In_ IXMLDOMDocument2 *pConfigDoc,
|
|
||||||
_Out_ BYTE **pConnectionDataOut,
|
|
||||||
_Out_ DWORD *pdwConnectionDataOutSize,
|
|
||||||
_Out_ EAP_ERROR **ppEapError)
|
|
||||||
{
|
|
||||||
DWORD dwResult = ERROR_SUCCESS;
|
|
||||||
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
|
||||||
#ifdef _DEBUG
|
|
||||||
//Sleep(10000);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Parameter check
|
|
||||||
if (!ppEapError)
|
|
||||||
return dwResult = ERROR_INVALID_PARAMETER;
|
|
||||||
|
|
||||||
assert(!*ppEapError);
|
|
||||||
|
|
||||||
if (eapMethodType.eapType.type != EAPMETHOD_TYPE)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_NOT_SUPPORTED, wstring_printf(_T(__FUNCTION__) _T(" Input EAP type (%d) does not match the supported EAP type (%d)."), (int)eapMethodType.eapType.type, (int)EAPMETHOD_TYPE).c_str()));
|
|
||||||
else if (eapMethodType.dwAuthorId != 67532)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_NOT_SUPPORTED, wstring_printf(_T(__FUNCTION__) _T(" EAP author (%d) does not match the supported author (%d)."), (int)eapMethodType.dwAuthorId, (int)67532).c_str()));
|
|
||||||
else if (!pConfigDoc)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pConfigDoc is NULL.")));
|
|
||||||
else if (!pConnectionDataOut)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pConnectionDataOut is NULL.")));
|
|
||||||
else if (!pdwConnectionDataOutSize)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pdwConnectionDataOutSize is NULL.")));
|
|
||||||
else {
|
|
||||||
// Configure XML selection namespaces used.
|
|
||||||
pConfigDoc->setProperty(bstr(L"SelectionNamespaces"), variant(L"xmlns:eap-metadata=\"urn:ietf:params:xml:ns:yang:ietf-eap-metadata\" xmlns:eaphostconfig=\"http://www.microsoft.com/provisioning/EapHostConfig\""));
|
|
||||||
|
|
||||||
// <Config>
|
|
||||||
com_obj<IXMLDOMElement> pXmlElConfig;
|
|
||||||
if (FAILED(eapxml::select_element(pConfigDoc, bstr(L"//eaphostconfig:Config"), pXmlElConfig))) {
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" Error reading <Config> element.")));
|
|
||||||
return dwResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Load configuration.
|
|
||||||
try {
|
|
||||||
g_peer.config_xml2blob(dwFlags, pXmlElConfig, pConnectionDataOut, pdwConnectionDataOutSize);
|
|
||||||
} catch (std::exception &err) {
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(err));
|
|
||||||
dwResult = (*ppEapError)->dwWinError;
|
|
||||||
} catch (...) {
|
|
||||||
dwResult = ERROR_INVALID_DATA;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return dwResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Converts the configuration BLOB to XML.
|
|
||||||
///
|
|
||||||
/// The configuration BLOB is returned in the ppConnectionDataOut parameter of the EapPeerInvokeConfigUI function.
|
|
||||||
///
|
|
||||||
/// \sa [EapPeerConfigBlob2Xml function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363601.aspx)
|
|
||||||
///
|
|
||||||
DWORD WINAPI EapPeerConfigBlob2Xml(
|
|
||||||
_In_ DWORD dwFlags,
|
|
||||||
_In_ EAP_METHOD_TYPE eapMethodType,
|
|
||||||
_In_count_(dwConnectionDataSize) const BYTE *pConnectionData,
|
|
||||||
_In_ DWORD dwConnectionDataSize,
|
|
||||||
_Out_ IXMLDOMDocument2 **ppConfigDoc,
|
|
||||||
_Out_ EAP_ERROR **ppEapError)
|
|
||||||
{
|
|
||||||
DWORD dwResult = ERROR_SUCCESS;
|
|
||||||
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
|
||||||
#ifdef _DEBUG
|
|
||||||
//Sleep(10000);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Parameter check
|
|
||||||
if (!ppEapError)
|
|
||||||
return dwResult = ERROR_INVALID_PARAMETER;
|
|
||||||
|
|
||||||
assert(!*ppEapError);
|
|
||||||
|
|
||||||
if (eapMethodType.eapType.type != EAPMETHOD_TYPE)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_NOT_SUPPORTED, wstring_printf(_T(__FUNCTION__) _T(" Input EAP type (%d) does not match the supported EAP type (%d)."), (int)eapMethodType.eapType.type, (int)EAPMETHOD_TYPE).c_str()));
|
|
||||||
else if (eapMethodType.dwAuthorId != 67532)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_NOT_SUPPORTED, wstring_printf(_T(__FUNCTION__) _T(" EAP author (%d) does not match the supported author (%d)."), (int)eapMethodType.dwAuthorId, (int)67532).c_str()));
|
|
||||||
else if (!pConnectionData && dwConnectionDataSize)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pConnectionData is NULL.")));
|
|
||||||
else if (!ppConfigDoc)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" ppConfigDoc is NULL.")));
|
|
||||||
else {
|
|
||||||
HRESULT hr;
|
|
||||||
|
|
||||||
// Create configuration XML document.
|
|
||||||
com_obj<IXMLDOMDocument2> pConfigDoc;
|
|
||||||
if (FAILED(hr = pConfigDoc.create(CLSID_DOMDocument60, NULL, CLSCTX_INPROC_SERVER))) {
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = HRESULT_CODE(hr), _T(__FUNCTION__) _T(" Error creating XML document.")));
|
|
||||||
return dwResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
pConfigDoc->put_async(VARIANT_FALSE);
|
|
||||||
|
|
||||||
// Load empty XML configuration.
|
|
||||||
VARIANT_BOOL isSuccess = VARIANT_FALSE;
|
|
||||||
if (FAILED((hr = pConfigDoc->loadXML(L"<Config xmlns=\"http://www.microsoft.com/provisioning/EapHostConfig\"></Config>", &isSuccess)))) {
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = HRESULT_CODE(hr), _T(__FUNCTION__) _T(" Error loading XML document template.")));
|
|
||||||
return dwResult;
|
|
||||||
}
|
|
||||||
if (!isSuccess) {
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_XML_PARSE_ERROR, _T(__FUNCTION__) _T(" Loading XML template failed.")));
|
|
||||||
return dwResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Configure XML selection namespaces used.
|
|
||||||
pConfigDoc->setProperty(bstr(L"SelectionNamespaces"), variant(L"xmlns:eap-metadata=\"urn:ietf:params:xml:ns:yang:ietf-eap-metadata\" xmlns:eaphostconfig=\"http://www.microsoft.com/provisioning/EapHostConfig\""));
|
|
||||||
|
|
||||||
// Select <Config> node.
|
|
||||||
com_obj<IXMLDOMNode> pXmlElConfig;
|
|
||||||
if (FAILED(eapxml::select_node(pConfigDoc, bstr(L"eaphostconfig:Config"), pXmlElConfig))) {
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_NOT_FOUND, _T(__FUNCTION__) _T(" Error selecting <Config> element.")));
|
|
||||||
return dwResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Save configuration.
|
|
||||||
pConfigDoc->setProperty(bstr(L"SelectionNamespaces"), variant(L"xmlns:eap-metadata=\"urn:ietf:params:xml:ns:yang:ietf-eap-metadata\""));
|
|
||||||
try {
|
|
||||||
g_peer.config_blob2xml(dwFlags, pConnectionData, dwConnectionDataSize, pConfigDoc, pXmlElConfig);
|
|
||||||
} catch (std::exception &err) {
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(err));
|
|
||||||
return dwResult = (*ppEapError)->dwWinError;
|
|
||||||
} catch (...) {
|
|
||||||
return dwResult = ERROR_INVALID_DATA;
|
|
||||||
}
|
|
||||||
|
|
||||||
*ppConfigDoc = pConfigDoc.detach();
|
|
||||||
}
|
|
||||||
|
|
||||||
return dwResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Raises the EAP method's specific connection configuration user interface dialog on the client.
|
|
||||||
///
|
|
||||||
/// \sa [EapPeerInvokeConfigUI function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363614.aspx)
|
|
||||||
///
|
|
||||||
DWORD WINAPI EapPeerInvokeConfigUI(
|
|
||||||
_In_ const EAP_METHOD_TYPE *pEapType,
|
|
||||||
_In_ HWND hwndParent,
|
|
||||||
_In_ DWORD dwFlags,
|
|
||||||
_In_ DWORD dwConnectionDataInSize,
|
|
||||||
_In_count_(dwConnectionDataInSize) const BYTE *pConnectionDataIn,
|
|
||||||
_Out_ DWORD *pdwConnectionDataOutSize,
|
|
||||||
_Out_ BYTE **ppConnectionDataOut,
|
|
||||||
_Out_ EAP_ERROR **ppEapError)
|
|
||||||
{
|
|
||||||
UNREFERENCED_PARAMETER(dwFlags);
|
|
||||||
DWORD dwResult = ERROR_SUCCESS;
|
|
||||||
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
|
||||||
actctx_activator actctx(g_act_ctx);
|
|
||||||
#ifdef _DEBUG
|
|
||||||
//Sleep(10000);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Parameter check
|
|
||||||
if (!ppEapError)
|
|
||||||
return dwResult = ERROR_INVALID_PARAMETER;
|
|
||||||
|
|
||||||
assert(!*ppEapError);
|
|
||||||
|
|
||||||
if (!pEapType)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pEapType is NULL.")));
|
|
||||||
else if (pEapType->eapType.type != EAPMETHOD_TYPE)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_NOT_SUPPORTED, wstring_printf(_T(__FUNCTION__) _T(" Input EAP type (%d) does not match the supported EAP type (%d)."), (int)pEapType->eapType.type, (int)EAPMETHOD_TYPE).c_str()));
|
|
||||||
else if (pEapType->dwAuthorId != 67532)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_NOT_SUPPORTED, wstring_printf(_T(__FUNCTION__) _T(" EAP author (%d) does not match the supported author (%d)."), (int)pEapType->dwAuthorId, (int)67532).c_str()));
|
|
||||||
else if (!pConnectionDataIn && dwConnectionDataInSize)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pConnectionDataIn is NULL.")));
|
|
||||||
else if (!pdwConnectionDataOutSize)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pdwConnectionDataOutSize is NULL.")));
|
|
||||||
else if (!ppConnectionDataOut)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" ppConnectionDataOut is NULL.")));
|
|
||||||
else {
|
|
||||||
try {
|
|
||||||
g_peer.invoke_config_ui(hwndParent, pConnectionDataIn, dwConnectionDataInSize, ppConnectionDataOut, pdwConnectionDataOutSize);
|
|
||||||
} catch (std::exception &err) {
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(err));
|
|
||||||
dwResult = (*ppEapError)->dwWinError;
|
|
||||||
} catch (...) {
|
|
||||||
dwResult = ERROR_INVALID_DATA;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return dwResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Raises a custom interactive user interface dialog to obtain user identity information for the EAP method on the client.
|
|
||||||
///
|
|
||||||
/// \sa [EapPeerInvokeIdentityUI function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363615.aspx)
|
|
||||||
///
|
|
||||||
DWORD WINAPI EapPeerInvokeIdentityUI(
|
|
||||||
_In_ const EAP_METHOD_TYPE *pEapType,
|
|
||||||
_In_ DWORD dwFlags,
|
|
||||||
_In_ HWND hwndParent,
|
|
||||||
_In_ DWORD dwConnectionDataSize,
|
|
||||||
_In_count_(dwConnectionDataSize) const BYTE *pConnectionData,
|
|
||||||
_In_ DWORD dwUserDataSize,
|
|
||||||
_In_count_(dwUserDataSize) const BYTE *pUserData,
|
|
||||||
_Out_ DWORD *pdwUserDataOutSize,
|
|
||||||
_Out_ BYTE **ppUserDataOut,
|
|
||||||
_Out_ LPWSTR *ppwszIdentity,
|
|
||||||
_Out_ EAP_ERROR **ppEapError)
|
|
||||||
{
|
|
||||||
DWORD dwResult = ERROR_SUCCESS;
|
|
||||||
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
|
||||||
actctx_activator actctx(g_act_ctx);
|
|
||||||
#ifdef _DEBUG
|
|
||||||
//Sleep(10000);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Parameter check
|
|
||||||
if (!ppEapError)
|
|
||||||
dwResult = ERROR_INVALID_PARAMETER;
|
|
||||||
|
|
||||||
assert(!*ppEapError);
|
|
||||||
|
|
||||||
if (!pEapType)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pEapType is NULL.")));
|
|
||||||
else if (pEapType->eapType.type != EAPMETHOD_TYPE)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_NOT_SUPPORTED, wstring_printf(_T(__FUNCTION__) _T(" Input EAP type (%d) does not match the supported EAP type (%d)."), (int)pEapType->eapType.type, (int)EAPMETHOD_TYPE).c_str()));
|
|
||||||
else if (pEapType->dwAuthorId != 67532)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_NOT_SUPPORTED, wstring_printf(_T(__FUNCTION__) _T(" EAP author (%d) does not match the supported author (%d)."), (int)pEapType->dwAuthorId, (int)67532).c_str()));
|
|
||||||
else if (!pConnectionData && dwConnectionDataSize)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pConnectionData is NULL.")));
|
|
||||||
else if (!pUserData && dwUserDataSize)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pUserData is NULL.")));
|
|
||||||
else if (!pdwUserDataOutSize)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pdwUserDataOutSize is NULL.")));
|
|
||||||
else if (!ppUserDataOut)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" ppUserDataOut is NULL.")));
|
|
||||||
else if (!ppwszIdentity)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" ppwszIdentity is NULL.")));
|
|
||||||
else {
|
|
||||||
try {
|
|
||||||
g_peer.invoke_identity_ui(hwndParent, dwFlags, pConnectionData, dwConnectionDataSize, pUserData, dwUserDataSize, ppUserDataOut, pdwUserDataOutSize, ppwszIdentity);
|
|
||||||
} catch (std::exception &err) {
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(err));
|
|
||||||
dwResult = (*ppEapError)->dwWinError;
|
|
||||||
} catch (...) {
|
|
||||||
dwResult = ERROR_INVALID_DATA;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return dwResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Raises a custom interactive user interface dialog for the EAP method on the client.
|
|
||||||
///
|
|
||||||
/// \sa [EapPeerInvokeInteractiveUI function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363616.aspx)
|
|
||||||
///
|
|
||||||
DWORD WINAPI EapPeerInvokeInteractiveUI(
|
|
||||||
_In_ const EAP_METHOD_TYPE *pEapType,
|
|
||||||
_In_ HWND hwndParent,
|
|
||||||
_In_ DWORD dwUIContextDataSize,
|
|
||||||
_In_count_(dwUIContextDataSize) const BYTE *pUIContextData,
|
|
||||||
_Out_ DWORD *pdwDataFromInteractiveUISize,
|
|
||||||
_Out_ BYTE **ppDataFromInteractiveUI,
|
|
||||||
_Out_ EAP_ERROR **ppEapError)
|
|
||||||
{
|
|
||||||
DWORD dwResult = ERROR_SUCCESS;
|
|
||||||
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
|
||||||
actctx_activator actctx(g_act_ctx);
|
|
||||||
#ifdef _DEBUG
|
|
||||||
//Sleep(10000);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Parameter check
|
|
||||||
if (!ppEapError)
|
|
||||||
return dwResult = ERROR_INVALID_PARAMETER;
|
|
||||||
|
|
||||||
assert(!*ppEapError);
|
|
||||||
|
|
||||||
if (!pEapType)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pEapType is NULL.")));
|
|
||||||
else if (pEapType->eapType.type != EAPMETHOD_TYPE)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_NOT_SUPPORTED, wstring_printf(_T(__FUNCTION__) _T(" Input EAP type (%d) does not match the supported EAP type (%d)."), (int)pEapType->eapType.type, (int)EAPMETHOD_TYPE).c_str()));
|
|
||||||
else if (pEapType->dwAuthorId != 67532)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_NOT_SUPPORTED, wstring_printf(_T(__FUNCTION__) _T(" EAP author (%d) does not match the supported author (%d)."), (int)pEapType->dwAuthorId, (int)67532).c_str()));
|
|
||||||
else if (!pUIContextData && dwUIContextDataSize)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pUIContextData is NULL.")));
|
|
||||||
else if (!pdwDataFromInteractiveUISize)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pdwDataFromInteractiveUISize is NULL.")));
|
|
||||||
else if (!ppDataFromInteractiveUI)
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" ppDataFromInteractiveUI is NULL.")));
|
|
||||||
else {
|
|
||||||
try {
|
|
||||||
g_peer.invoke_interactive_ui(hwndParent, pUIContextData, dwUIContextDataSize, ppDataFromInteractiveUI, pdwDataFromInteractiveUISize);
|
|
||||||
} catch (std::exception &err) {
|
|
||||||
g_peer.log_error(*ppEapError = g_peer.make_error(err));
|
|
||||||
dwResult = (*ppEapError)->dwWinError;
|
|
||||||
} catch (...) {
|
|
||||||
dwResult = ERROR_INVALID_DATA;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return dwResult;
|
|
||||||
}
|
|
@ -1,24 +1,10 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2015-2016 Amebis
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
Copyright 2016 GÉANT
|
Copyright © 2015-2022 Amebis
|
||||||
|
Copyright © 2016 GÉANT
|
||||||
This file is part of GÉANTLink.
|
|
||||||
|
|
||||||
GÉANTLink is free software: you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
GÉANTLink is distributed in the hope that it will be useful, but
|
|
||||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with GÉANTLink. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "StdAfx.h"
|
#include "PCH.h"
|
||||||
#if defined(__WXMSW__)
|
#if defined(__WXMSW__)
|
||||||
#pragma comment(lib, "msi.lib")
|
#pragma comment(lib, "msi.lib")
|
||||||
#endif
|
#endif
|
||||||
@ -28,6 +14,7 @@
|
|||||||
// wxEventMonitorApp
|
// wxEventMonitorApp
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#pragma warning(suppress: 28251)
|
||||||
wxIMPLEMENT_APP(wxEventMonitorApp);
|
wxIMPLEMENT_APP(wxEventMonitorApp);
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,21 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2015-2016 Amebis
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
Copyright 2016 GÉANT
|
Copyright © 2015-2022 Amebis
|
||||||
|
Copyright © 2016 GÉANT
|
||||||
This file is part of GÉANTLink.
|
|
||||||
|
|
||||||
GÉANTLink is free software: you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
GÉANTLink is distributed in the hope that it will be useful, but
|
|
||||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with GÉANTLink. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
///
|
///
|
||||||
|
@ -1,24 +1,10 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2015-2018 Amebis
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
Copyright 2016 GÉANT
|
Copyright © 2015-2022 Amebis
|
||||||
|
Copyright © 2016 GÉANT
|
||||||
This file is part of GÉANTLink.
|
|
||||||
|
|
||||||
GÉANTLink is free software: you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
GÉANTLink is distributed in the hope that it will be useful, but
|
|
||||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with GÉANTLink. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "StdAfx.h"
|
#include "PCH.h"
|
||||||
|
|
||||||
#pragma comment(lib, "tdh.lib")
|
#pragma comment(lib, "tdh.lib")
|
||||||
#pragma comment(lib, "Ws2_32.lib")
|
#pragma comment(lib, "Ws2_32.lib")
|
||||||
@ -78,8 +64,8 @@ wxEventTraceProcessorThread::wxEventTraceProcessorThread(wxEvtHandler *parent, c
|
|||||||
for (size_t i = 0, i_end = sessions.GetCount(); i < i_end; i++) {
|
for (size_t i = 0, i_end = sessions.GetCount(); i < i_end; i++) {
|
||||||
// Open trace.
|
// Open trace.
|
||||||
tlf.LoggerName = const_cast<LPTSTR>((LPCTSTR)(sessions[i]));
|
tlf.LoggerName = const_cast<LPTSTR>((LPCTSTR)(sessions[i]));
|
||||||
event_trace trace;
|
event_trace trace(OpenTrace(&tlf));
|
||||||
if (!trace.create(&tlf)) {
|
if (!trace) {
|
||||||
wxLogError(_("Error opening event trace (error %u)."), GetLastError());
|
wxLogError(_("Error opening event trace (error %u)."), GetLastError());
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -132,11 +118,8 @@ VOID WINAPI wxEventTraceProcessorThread::EventRecordCallback(_In_ PEVENT_RECORD
|
|||||||
wxASSERT_MSG(pEvent->UserContext, wxT("thread is NULL"));
|
wxASSERT_MSG(pEvent->UserContext, wxT("thread is NULL"));
|
||||||
|
|
||||||
wxEventTraceProcessorThread *_this = ((wxEventTraceProcessorThread*)pEvent->UserContext);
|
wxEventTraceProcessorThread *_this = ((wxEventTraceProcessorThread*)pEvent->UserContext);
|
||||||
|
if (!_this || _this->TestDestroy())
|
||||||
if (_this->TestDestroy()) {
|
|
||||||
// Event processing is pending destruction.
|
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
_this->m_parent->QueueEvent(new wxETWEvent(wxEVT_ETW_EVENT, *pEvent));
|
_this->m_parent->QueueEvent(new wxETWEvent(wxEVT_ETW_EVENT, *pEvent));
|
||||||
}
|
}
|
||||||
@ -178,7 +161,7 @@ wxETWListCtrl::wxETWListCtrl(wxWindow *parent, wxWindowID id, const wxPoint& pos
|
|||||||
m_col_format_width[0] = 26;
|
m_col_format_width[0] = 26;
|
||||||
m_col_format_width[1] = 5;
|
m_col_format_width[1] = 5;
|
||||||
m_col_format_width[2] = 5;
|
m_col_format_width[2] = 5;
|
||||||
m_col_format_width[3] = std::max<int>(std::max<int>(_countof("EapHost"), _countof("Schannel")), _countof(PRODUCT_NAME_STR)) - 1;
|
m_col_format_width[3] = std::max<size_t>(std::max<size_t>(_countof("EapHost"), _countof("Schannel")), _countof(PRODUCT_NAME_STR)) - 1;
|
||||||
m_col_format_width[4] = 0;
|
m_col_format_width[4] = 0;
|
||||||
|
|
||||||
// Prepare all possible item attributes.
|
// Prepare all possible item attributes.
|
||||||
@ -219,7 +202,11 @@ wxETWListCtrl::wxETWListCtrl(wxWindow *parent, wxWindowID id, const wxPoint& pos
|
|||||||
properties->Wnode.BufferSize = ulSize;
|
properties->Wnode.BufferSize = ulSize;
|
||||||
properties->Wnode.Flags = WNODE_FLAG_TRACED_GUID;
|
properties->Wnode.Flags = WNODE_FLAG_TRACED_GUID;
|
||||||
properties->Wnode.ClientContext = 1; //QPC clock resolution
|
properties->Wnode.ClientContext = 1; //QPC clock resolution
|
||||||
CoCreateGuid(&(properties->Wnode.Guid));
|
HRESULT hr = CoCreateGuid(&(properties->Wnode.Guid));
|
||||||
|
if (FAILED(hr)) {
|
||||||
|
wxLogError(winstd::tstring_printf(wxT("error 0x%08x generating GUID"), hr).c_str());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
properties->LogFileMode = /*EVENT_TRACE_FILE_MODE_SEQUENTIAL |*/ EVENT_TRACE_REAL_TIME_MODE;
|
properties->LogFileMode = /*EVENT_TRACE_FILE_MODE_SEQUENTIAL |*/ EVENT_TRACE_REAL_TIME_MODE;
|
||||||
properties->MaximumFileSize = 1; // 1 MB
|
properties->MaximumFileSize = 1; // 1 MB
|
||||||
properties->LoggerNameOffset = sizeof(EVENT_TRACE_PROPERTIES);
|
properties->LoggerNameOffset = sizeof(EVENT_TRACE_PROPERTIES);
|
||||||
@ -607,33 +594,34 @@ wxString wxETWListCtrl::OnGetItemText(const winstd::event_rec &rec, long column)
|
|||||||
// Get event meta-info.
|
// Get event meta-info.
|
||||||
unique_ptr<TRACE_EVENT_INFO> info;
|
unique_ptr<TRACE_EVENT_INFO> info;
|
||||||
ULONG ulResult;
|
ULONG ulResult;
|
||||||
if ((ulResult = TdhGetEventInformation((PEVENT_RECORD)&rec, 0, NULL, info)) == ERROR_SUCCESS) {
|
if ((ulResult = TdhGetEventInformation((PEVENT_RECORD)&rec, 0, NULL, info)) != ERROR_SUCCESS)
|
||||||
if (info->DecodingSource != DecodingSourceWPP) {
|
return tstring_printf(_T("(Error getting event information (error %u))"), ulResult).c_str();
|
||||||
if (rec.EventHeader.Flags & EVENT_HEADER_FLAG_STRING_ONLY) {
|
|
||||||
// This is a string-only event. Print it.
|
|
||||||
return reinterpret_cast<LPCWSTR>(rec.UserData);
|
|
||||||
} else {
|
|
||||||
// This is not a string-only event. Prepare parameters.
|
|
||||||
|
|
||||||
BYTE nPtrSize = (rec.EventHeader.Flags & EVENT_HEADER_FLAG_32_BIT_HEADER) ? 4 : 8;
|
if (info->DecodingSource != DecodingSourceWPP) {
|
||||||
vector<tstring> props;
|
if (rec.EventHeader.Flags & EVENT_HEADER_FLAG_STRING_ONLY) {
|
||||||
vector<DWORD_PTR> props_msg;
|
// This is a string-only event. Print it.
|
||||||
props.reserve(info->TopLevelPropertyCount);
|
return reinterpret_cast<LPCWSTR>(rec.UserData);
|
||||||
props_msg.reserve(info->TopLevelPropertyCount);
|
} else {
|
||||||
for (ULONG i = 0; i < info->TopLevelPropertyCount; i++) {
|
// This is not a string-only event. Prepare parameters.
|
||||||
props.push_back(std::move(PropertyToString((PEVENT_RECORD)&rec, info.get(), i, NULL, 0, nPtrSize)));
|
|
||||||
props_msg.push_back((DWORD_PTR)props[i].c_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (info->EventMessageOffset) {
|
BYTE nPtrSize = (rec.EventHeader.Flags & EVENT_HEADER_FLAG_32_BIT_HEADER) ? 4 : 8;
|
||||||
// Format the message.
|
vector<tstring> props;
|
||||||
return wstring_msg(0, reinterpret_cast<LPCTSTR>(reinterpret_cast<LPCBYTE>(info.get()) + info->EventMessageOffset), props_msg.data()).c_str();
|
vector<DWORD_PTR> props_msg;
|
||||||
}
|
props.reserve(info->TopLevelPropertyCount);
|
||||||
|
props_msg.reserve(info->TopLevelPropertyCount);
|
||||||
|
for (ULONG i = 0; i < info->TopLevelPropertyCount; i++) {
|
||||||
|
props.push_back(std::move(PropertyToString((PEVENT_RECORD)&rec, info.get(), i, NULL, 0, nPtrSize)));
|
||||||
|
props_msg.push_back((DWORD_PTR)props[i].c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (info->EventMessageOffset) {
|
||||||
|
// Format the message.
|
||||||
|
return wstring_msg(0, reinterpret_cast<LPCTSTR>(reinterpret_cast<LPCBYTE>(info.get()) + info->EventMessageOffset), props_msg.data()).c_str();
|
||||||
}
|
}
|
||||||
} else if (info->EventMessageOffset) {
|
|
||||||
// This is a WPP event.
|
|
||||||
return reinterpret_cast<LPCWSTR>(reinterpret_cast<LPCBYTE>(info.get()) + info->EventMessageOffset);
|
|
||||||
}
|
}
|
||||||
|
} else if (info->EventMessageOffset) {
|
||||||
|
// This is a WPP event.
|
||||||
|
return reinterpret_cast<LPCWSTR>(reinterpret_cast<LPCBYTE>(info.get()) + info->EventMessageOffset);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -776,13 +764,13 @@ static tstring MapToString(_In_ const EVENT_MAP_INFO *pMapInfo, _In_ ULONG ulDat
|
|||||||
((pMapInfo->Flag & EVENTMAP_INFO_FLAG_WBEM_VALUEMAP ) && (pMapInfo->Flag & ~EVENTMAP_INFO_FLAG_WBEM_VALUEMAP) != EVENTMAP_INFO_FLAG_WBEM_FLAG))
|
((pMapInfo->Flag & EVENTMAP_INFO_FLAG_WBEM_VALUEMAP ) && (pMapInfo->Flag & ~EVENTMAP_INFO_FLAG_WBEM_VALUEMAP) != EVENTMAP_INFO_FLAG_WBEM_FLAG))
|
||||||
{
|
{
|
||||||
if ((pMapInfo->Flag & EVENTMAP_INFO_FLAG_WBEM_NO_MAP) == EVENTMAP_INFO_FLAG_WBEM_NO_MAP)
|
if ((pMapInfo->Flag & EVENTMAP_INFO_FLAG_WBEM_NO_MAP) == EVENTMAP_INFO_FLAG_WBEM_NO_MAP)
|
||||||
return tstring_printf(_T("%ls"), (PBYTE)pMapInfo + pMapInfo->MapEntryArray[ulData].OutputOffset);
|
return tstring_printf(_T("%ls"), (LPCWSTR)((PBYTE)pMapInfo + pMapInfo->MapEntryArray[ulData].OutputOffset));
|
||||||
else {
|
else {
|
||||||
for (ULONG i = 0; ; i++) {
|
for (ULONG i = 0; ; i++) {
|
||||||
if (i >= pMapInfo->EntryCount)
|
if (i >= pMapInfo->EntryCount)
|
||||||
return tstring_printf(_T("%lu"), ulData);
|
return tstring_printf(_T("%lu"), ulData);
|
||||||
else if (pMapInfo->MapEntryArray[i].Value == ulData)
|
else if (pMapInfo->MapEntryArray[i].Value == ulData)
|
||||||
return tstring_printf(_T("%ls"), (PBYTE)pMapInfo + pMapInfo->MapEntryArray[i].OutputOffset);
|
return tstring_printf(_T("%ls"), (LPCWSTR)((PBYTE)pMapInfo + pMapInfo->MapEntryArray[i].OutputOffset));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (
|
} else if (
|
||||||
@ -817,7 +805,7 @@ static tstring DataToString(_In_ USHORT InType, _In_ USHORT OutType, _In_count_(
|
|||||||
case TDH_INTYPE_UNICODESTRING:
|
case TDH_INTYPE_UNICODESTRING:
|
||||||
case TDH_INTYPE_NONNULLTERMINATEDSTRING:
|
case TDH_INTYPE_NONNULLTERMINATEDSTRING:
|
||||||
case TDH_INTYPE_UNICODECHAR:
|
case TDH_INTYPE_UNICODECHAR:
|
||||||
return tstring_printf(_T("%.*ls"), nDataSize/sizeof(WCHAR), pData);
|
return tstring_printf(_T("%.*ls"), (unsigned int)(nDataSize/sizeof(WCHAR)), (LPCWSTR)pData);
|
||||||
|
|
||||||
case TDH_INTYPE_ANSISTRING:
|
case TDH_INTYPE_ANSISTRING:
|
||||||
case TDH_INTYPE_NONNULLTERMINATEDANSISTRING:
|
case TDH_INTYPE_NONNULLTERMINATEDANSISTRING:
|
||||||
@ -918,6 +906,7 @@ static tstring DataToString(_In_ USHORT InType, _In_ USHORT OutType, _In_count_(
|
|||||||
case TDH_INTYPE_BINARY:
|
case TDH_INTYPE_BINARY:
|
||||||
switch (OutType) {
|
switch (OutType) {
|
||||||
case TDH_OUTTYPE_IPV6: {
|
case TDH_OUTTYPE_IPV6: {
|
||||||
|
#pragma warning(suppress: 6387) // ntdll.dll *must* exist.
|
||||||
auto RtlIpv6AddressToString = (LPTSTR(NTAPI*)(const IN6_ADDR*, LPTSTR))GetProcAddress(GetModuleHandle(_T("ntdll.dll")),
|
auto RtlIpv6AddressToString = (LPTSTR(NTAPI*)(const IN6_ADDR*, LPTSTR))GetProcAddress(GetModuleHandle(_T("ntdll.dll")),
|
||||||
#ifdef _UNICODE
|
#ifdef _UNICODE
|
||||||
"RtlIpv6AddressToStringW"
|
"RtlIpv6AddressToStringW"
|
||||||
@ -945,8 +934,12 @@ static tstring DataToString(_In_ USHORT InType, _In_ USHORT OutType, _In_count_(
|
|||||||
case TDH_INTYPE_GUID: {
|
case TDH_INTYPE_GUID: {
|
||||||
assert(nDataSize >= sizeof(GUID));
|
assert(nDataSize >= sizeof(GUID));
|
||||||
WCHAR szGuid[39];
|
WCHAR szGuid[39];
|
||||||
StringFromGUID2(*(GUID*)pData, szGuid, _countof(szGuid));
|
if (StringFromGUID2(*(GUID*)pData, szGuid, _countof(szGuid)))
|
||||||
return tstring_printf(_T("%ls"), szGuid);
|
return tstring_printf(_T("%ls"), szGuid);
|
||||||
|
else {
|
||||||
|
assert(0);
|
||||||
|
return _T("(GUID)");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
case TDH_INTYPE_POINTER:
|
case TDH_INTYPE_POINTER:
|
||||||
@ -995,7 +988,7 @@ static tstring DataToString(_In_ USHORT InType, _In_ USHORT OutType, _In_count_(
|
|||||||
// 32-bit computer and 16 bytes on a 64-bit computer.
|
// 32-bit computer and 16 bytes on a 64-bit computer.
|
||||||
// Doubling the pointer size handles both cases.
|
// Doubling the pointer size handles both cases.
|
||||||
assert(nDataSize >= (SIZE_T)nPtrSize * 2);
|
assert(nDataSize >= (SIZE_T)nPtrSize * 2);
|
||||||
return (PULONG)pData > 0 ? DataToString(TDH_INTYPE_SID, OutType, pData + nPtrSize * 2, nDataSize - nPtrSize * 2, pMapInfo, nPtrSize) : _T("(WBEM SID)");
|
return (PULONG)pData > 0 ? DataToString(TDH_INTYPE_SID, OutType, pData + (SIZE_T)nPtrSize * 2, nDataSize - (SIZE_T)nPtrSize * 2, pMapInfo, nPtrSize) : _T("(WBEM SID)");
|
||||||
|
|
||||||
case TDH_INTYPE_SID: {
|
case TDH_INTYPE_SID: {
|
||||||
assert(nDataSize >= sizeof(SID));
|
assert(nDataSize >= sizeof(SID));
|
||||||
@ -1027,7 +1020,7 @@ static ULONG GetArraySize(PEVENT_RECORD pEvent, PTRACE_EVENT_INFO pInfo, ULONG i
|
|||||||
ULONG ulResult;
|
ULONG ulResult;
|
||||||
|
|
||||||
// Get array count property.
|
// Get array count property.
|
||||||
PROPERTY_DATA_DESCRIPTOR data_desc = { (ULONGLONG)(reinterpret_cast<LPBYTE>(pInfo) + pInfo->EventPropertyInfoArray[pInfo->EventPropertyInfoArray[i].countPropertyIndex].NameOffset), ULONG_MAX };
|
PROPERTY_DATA_DESCRIPTOR data_desc = { (ULONGLONG)pInfo + pInfo->EventPropertyInfoArray[pInfo->EventPropertyInfoArray[i].countPropertyIndex].NameOffset, ULONG_MAX };
|
||||||
vector<unsigned char> count;
|
vector<unsigned char> count;
|
||||||
if ((ulResult = TdhGetProperty(pEvent, 0, NULL, 1, &data_desc, count)) != ERROR_SUCCESS)
|
if ((ulResult = TdhGetProperty(pEvent, 0, NULL, 1, &data_desc, count)) != ERROR_SUCCESS)
|
||||||
return ulResult;
|
return ulResult;
|
||||||
@ -1053,7 +1046,7 @@ static tstring PropertyToString(PEVENT_RECORD pEvent, PTRACE_EVENT_INFO pInfo, U
|
|||||||
// Get the size of the array if the property is an array.
|
// Get the size of the array if the property is an array.
|
||||||
ULONG ulArraySize = 0;
|
ULONG ulArraySize = 0;
|
||||||
if ((ulResult = GetArraySize(pEvent, pInfo, ulPropIndex, &ulArraySize)) != ERROR_SUCCESS)
|
if ((ulResult = GetArraySize(pEvent, pInfo, ulPropIndex, &ulArraySize)) != ERROR_SUCCESS)
|
||||||
return tstring_printf(_T("(Error getting array size (error %u))"), ulResult);;
|
return tstring_printf(_T("(Error getting array size (error %u))"), ulResult);
|
||||||
|
|
||||||
tstring out;
|
tstring out;
|
||||||
bool out_nonfirst = false;
|
bool out_nonfirst = false;
|
||||||
@ -1067,7 +1060,7 @@ static tstring PropertyToString(PEVENT_RECORD pEvent, PTRACE_EVENT_INFO pInfo, U
|
|||||||
if (out_nonfirst) out += _T(", "); else out_nonfirst = true;
|
if (out_nonfirst) out += _T(", "); else out_nonfirst = true;
|
||||||
out += _T('(');
|
out += _T('(');
|
||||||
for (USHORT j = pInfo->EventPropertyInfoArray[ulPropIndex].structType.StructStartIndex, usLastMember = pInfo->EventPropertyInfoArray[ulPropIndex].structType.StructStartIndex + pInfo->EventPropertyInfoArray[ulPropIndex].structType.NumOfStructMembers; j < usLastMember; j++) {
|
for (USHORT j = pInfo->EventPropertyInfoArray[ulPropIndex].structType.StructStartIndex, usLastMember = pInfo->EventPropertyInfoArray[ulPropIndex].structType.StructStartIndex + pInfo->EventPropertyInfoArray[ulPropIndex].structType.NumOfStructMembers; j < usLastMember; j++) {
|
||||||
out += tstring_printf(_T("%ls: "), reinterpret_cast<LPBYTE>(pInfo) + pInfo->EventPropertyInfoArray[j].NameOffset);
|
out += tstring_printf(_T("%ls: "), (LPCWSTR)(reinterpret_cast<LPBYTE>(pInfo) + pInfo->EventPropertyInfoArray[j].NameOffset));
|
||||||
out += PropertyToString(pEvent, pInfo, j, reinterpret_cast<LPWSTR>(reinterpret_cast<LPBYTE>(pInfo) + pInfo->EventPropertyInfoArray[ulPropIndex].NameOffset), k, nPtrSize);
|
out += PropertyToString(pEvent, pInfo, j, reinterpret_cast<LPWSTR>(reinterpret_cast<LPBYTE>(pInfo) + pInfo->EventPropertyInfoArray[ulPropIndex].NameOffset), k, nPtrSize);
|
||||||
}
|
}
|
||||||
out += _T(')');
|
out += _T(')');
|
||||||
@ -1086,12 +1079,12 @@ static tstring PropertyToString(PEVENT_RECORD pEvent, PTRACE_EVENT_INFO pInfo, U
|
|||||||
// The first descriptor in the array identifies the name of the structure and the second
|
// The first descriptor in the array identifies the name of the structure and the second
|
||||||
// descriptor defines the member of the structure whose data you want to retrieve.
|
// descriptor defines the member of the structure whose data you want to retrieve.
|
||||||
PROPERTY_DATA_DESCRIPTOR data_desc[2] = {
|
PROPERTY_DATA_DESCRIPTOR data_desc[2] = {
|
||||||
{ (ULONGLONG)pStructureName , ulStructIndex },
|
{ (ULONGLONG)pStructureName , ulStructIndex },
|
||||||
{ (ULONGLONG)(reinterpret_cast<LPBYTE>(pInfo) + pInfo->EventPropertyInfoArray[ulPropIndex].NameOffset), k }
|
{ (ULONGLONG)pInfo + pInfo->EventPropertyInfoArray[ulPropIndex].NameOffset, k }
|
||||||
};
|
};
|
||||||
ulResult = TdhGetProperty(pEvent, 0, NULL, _countof(data_desc), data_desc, data);
|
ulResult = TdhGetProperty(pEvent, 0, NULL, _countof(data_desc), data_desc, data);
|
||||||
} else {
|
} else {
|
||||||
PROPERTY_DATA_DESCRIPTOR data_desc = { (ULONGLONG)(reinterpret_cast<LPBYTE>(pInfo) + pInfo->EventPropertyInfoArray[ulPropIndex].NameOffset), k };
|
PROPERTY_DATA_DESCRIPTOR data_desc = { (ULONGLONG)pInfo + pInfo->EventPropertyInfoArray[ulPropIndex].NameOffset, k };
|
||||||
ulResult = TdhGetProperty(pEvent, 0, NULL, 1, &data_desc, data);
|
ulResult = TdhGetProperty(pEvent, 0, NULL, 1, &data_desc, data);
|
||||||
}
|
}
|
||||||
if (ulResult == ERROR_EVT_INVALID_EVENT_DATA) {
|
if (ulResult == ERROR_EVT_INVALID_EVENT_DATA) {
|
||||||
|
@ -1,21 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2015-2016 Amebis
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
Copyright 2016 GÉANT
|
Copyright © 2015-2022 Amebis
|
||||||
|
Copyright © 2016 GÉANT
|
||||||
This file is part of GÉANTLink.
|
|
||||||
|
|
||||||
GÉANTLink is free software: you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
GÉANTLink is distributed in the hope that it will be useful, but
|
|
||||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with GÉANTLink. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <wx/event.h>
|
#include <wx/event.h>
|
||||||
@ -45,6 +31,7 @@ class wxPersistentETWListCtrl;
|
|||||||
#include <wx/persist/window.h>
|
#include <wx/persist/window.h>
|
||||||
#include <wx/thread.h>
|
#include <wx/thread.h>
|
||||||
|
|
||||||
|
#include <stdex/vector_queue.hpp>
|
||||||
#include <WinStd/ETW.h>
|
#include <WinStd/ETW.h>
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
@ -150,7 +137,7 @@ protected:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
/// \cond internal
|
/// \cond internal
|
||||||
static VOID WINAPI EventRecordCallback(PEVENT_RECORD pEvent);
|
static VOID WINAPI EventRecordCallback(_In_ PEVENT_RECORD pEvent);
|
||||||
/// \endcond
|
/// \endcond
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@ -168,7 +155,7 @@ protected:
|
|||||||
///
|
///
|
||||||
/// Functor for GUID comparison
|
/// Functor for GUID comparison
|
||||||
///
|
///
|
||||||
struct less_guid : public std::binary_function<GUID, GUID, bool>
|
struct less_guid
|
||||||
{
|
{
|
||||||
///
|
///
|
||||||
/// Compares two GUIDs
|
/// Compares two GUIDs
|
||||||
@ -321,8 +308,8 @@ protected:
|
|||||||
guidset m_sources; ///< Set of enabled sources
|
guidset m_sources; ///< Set of enabled sources
|
||||||
|
|
||||||
wxListItemAttr m_item_attr[2][4]; ///< Current item attributes
|
wxListItemAttr m_item_attr[2][4]; ///< Current item attributes
|
||||||
winstd::vector_queue<winstd::event_rec> m_rec_db; ///< Event record database
|
stdex::vector_queue<winstd::event_rec> m_rec_db; ///< Event record database
|
||||||
winstd::vector_queue<size_t> m_rec_idx; ///< Event record database indices of shown records
|
stdex::vector_queue<size_t> m_rec_idx; ///< Event record database indices of shown records
|
||||||
|
|
||||||
size_t m_col_format_width[5]; ///< Column widths for pre-formatted row display (0 = unlimited)
|
size_t m_col_format_width[5]; ///< Column widths for pre-formatted row display (0 = unlimited)
|
||||||
};
|
};
|
||||||
|
@ -1,17 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ImportGroup Label="PropertySheets" />
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup>
|
|
||||||
<OutDir>..\output\$(Platform).$(Configuration)\</OutDir>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup>
|
|
||||||
<ClCompile>
|
|
||||||
<AdditionalIncludeDirectories>..\lib\Events\build\temp\Events.$(Platform).$(Configuration).$(PlatformToolset);..\lib\WinStd\include;..\lib\wxExtend\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup />
|
|
||||||
</Project>
|
|
Binary file not shown.
@ -1,4 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
<ProjectConfiguration Include="Debug|ARM64">
|
<ProjectConfiguration Include="Debug|ARM64">
|
||||||
@ -28,104 +28,42 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<PropertyGroup Label="Globals">
|
<PropertyGroup Label="Globals">
|
||||||
<ProjectGuid>{E0D0725B-B2FC-4225-9481-CA9B1B6306F2}</ProjectGuid>
|
<ProjectGuid>{E0D0725B-B2FC-4225-9481-CA9B1B6306F2}</ProjectGuid>
|
||||||
<Keyword>Win32Proj</Keyword>
|
|
||||||
<RootNamespace>EventMonitor</RootNamespace>
|
<RootNamespace>EventMonitor</RootNamespace>
|
||||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
<PropertyGroup Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Label="Configuration" Condition="'$(Configuration)'=='Debug'">
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
<PropertyGroup Label="Configuration" Condition="'$(Configuration)'=='Release'">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
<PropertyGroup Label="Configuration" Condition="'$(Platform)'=='ARM64'">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
<ImportGroup Label="ExtensionSettings">
|
<ImportGroup Label="ExtensionSettings" />
|
||||||
</ImportGroup>
|
<ImportGroup Label="PropertySheets">
|
||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
<Import Project="..\include\$(Platform).props" />
|
<Import Project="..\include\$(Platform).props" />
|
||||||
<Import Project="..\include\$(Configuration).props" />
|
<Import Project="..\include\$(Configuration).props" />
|
||||||
<Import Project="EventMonitor.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\include\$(Platform).props" />
|
|
||||||
<Import Project="..\include\$(Configuration).props" />
|
|
||||||
<Import Project="EventMonitor.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\include\$(Platform).props" />
|
|
||||||
<Import Project="..\include\$(Configuration).props" />
|
|
||||||
<Import Project="EventMonitor.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\include\$(Platform).props" />
|
|
||||||
<Import Project="..\include\$(Configuration).props" />
|
|
||||||
<Import Project="EventMonitor.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\include\$(Platform).props" />
|
|
||||||
<Import Project="..\include\$(Configuration).props" />
|
|
||||||
<Import Project="EventMonitor.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\include\$(Platform).props" />
|
|
||||||
<Import Project="..\include\$(Configuration).props" />
|
|
||||||
<Import Project="EventMonitor.props" />
|
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
<PropertyGroup Label="UserMacros" />
|
<PropertyGroup Label="UserMacros" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
|
<PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
|
<OutDir>..\output\$(Platform).$(Configuration)\</OutDir>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" />
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
|
<ItemDefinitionGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
|
<ClCompile>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" />
|
<AdditionalIncludeDirectories>..\lib\Events\build\temp\Events.$(Platform).$(Configuration).$(PlatformToolset);..\lib\WinStd\include;..\lib\stdex\include;..\lib\wxExtend\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
|
</ClCompile>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
|
<Link>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" />
|
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
|
</Link>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" />
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ResourceCompile Include="EventMonitor.rc" />
|
<ResourceCompile Include="EventMonitor.rc" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
@ -134,7 +72,7 @@
|
|||||||
<ClInclude Include="ETWLog.h" />
|
<ClInclude Include="ETWLog.h" />
|
||||||
<ClInclude Include="Frame.h" />
|
<ClInclude Include="Frame.h" />
|
||||||
<ClInclude Include="LogPanel.h" />
|
<ClInclude Include="LogPanel.h" />
|
||||||
<ClInclude Include="StdAfx.h" />
|
<ClInclude Include="PCH.h" />
|
||||||
<ClInclude Include="res\wxEventMonitor_UI.h" />
|
<ClInclude Include="res\wxEventMonitor_UI.h" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@ -142,13 +80,8 @@
|
|||||||
<ClCompile Include="ETWLog.cpp" />
|
<ClCompile Include="ETWLog.cpp" />
|
||||||
<ClCompile Include="Frame.cpp" />
|
<ClCompile Include="Frame.cpp" />
|
||||||
<ClCompile Include="LogPanel.cpp" />
|
<ClCompile Include="LogPanel.cpp" />
|
||||||
<ClCompile Include="StdAfx.cpp">
|
<ClCompile Include="PCH.cpp">
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
|
<PrecompiledHeader>Create</PrecompiledHeader>
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">Create</PrecompiledHeader>
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">Create</PrecompiledHeader>
|
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="res\wxEventMonitor_UI.cpp" />
|
<ClCompile Include="res\wxEventMonitor_UI.cpp" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
@ -156,10 +89,7 @@
|
|||||||
<ProjectReference Include="..\lib\Events\build\Events.vcxproj">
|
<ProjectReference Include="..\lib\Events\build\Events.vcxproj">
|
||||||
<Project>{d63f24bd-92a0-4d6b-8b69-ed947e4d2b1b}</Project>
|
<Project>{d63f24bd-92a0-4d6b-8b69-ed947e4d2b1b}</Project>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\lib\WinStd\build\WinStd-15.0.vcxproj">
|
<ProjectReference Include="..\lib\wxExtend\build\wxExtendLib.vcxproj">
|
||||||
<Project>{47399d91-7eb9-41de-b521-514ba5db0c43}</Project>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\lib\wxExtend\build\wxExtendLib-15.0.vcxproj">
|
|
||||||
<Project>{d3e29951-d9f5-486d-a167-20ae8e90b1fa}</Project>
|
<Project>{d3e29951-d9f5-486d-a167-20ae8e90b1fa}</Project>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
@ -194,6 +124,7 @@
|
|||||||
<POCompile Include="locale\pt_PT.po" />
|
<POCompile Include="locale\pt_PT.po" />
|
||||||
<POCompile Include="locale\ru_RU.po" />
|
<POCompile Include="locale\ru_RU.po" />
|
||||||
<POCompile Include="locale\sk_SK.po" />
|
<POCompile Include="locale\sk_SK.po" />
|
||||||
|
<POCompile Include="locale\ro_RO.po" />
|
||||||
<POCompile Include="locale\sl_SI.po" />
|
<POCompile Include="locale\sl_SI.po" />
|
||||||
<POCompile Include="locale\sr_RS.po" />
|
<POCompile Include="locale\sr_RS.po" />
|
||||||
<POCompile Include="locale\sv_SE.po" />
|
<POCompile Include="locale\sv_SE.po" />
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Filter Include="Source Files">
|
<Filter Include="Source Files">
|
||||||
@ -24,7 +24,7 @@
|
|||||||
</ResourceCompile>
|
</ResourceCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="StdAfx.h">
|
<ClInclude Include="PCH.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="App.h">
|
<ClInclude Include="App.h">
|
||||||
@ -44,7 +44,7 @@
|
|||||||
</ClInclude>
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="StdAfx.cpp">
|
<ClCompile Include="PCH.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="App.cpp">
|
<ClCompile Include="App.cpp">
|
||||||
@ -75,6 +75,9 @@
|
|||||||
</None>
|
</None>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<POCompile Include="locale\ro_RO.po">
|
||||||
|
<Filter>Resource Files\Localization</Filter>
|
||||||
|
</POCompile>
|
||||||
<POCompile Include="locale\sl_SI.po">
|
<POCompile Include="locale\sl_SI.po">
|
||||||
<Filter>Resource Files\Localization</Filter>
|
<Filter>Resource Files\Localization</Filter>
|
||||||
</POCompile>
|
</POCompile>
|
||||||
|
@ -1,24 +1,10 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2015-2016 Amebis
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
Copyright 2016 GÉANT
|
Copyright © 2015-2022 Amebis
|
||||||
|
Copyright © 2016 GÉANT
|
||||||
This file is part of GÉANTLink.
|
|
||||||
|
|
||||||
GÉANTLink is free software: you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
GÉANTLink is distributed in the hope that it will be useful, but
|
|
||||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with GÉANTLink. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "StdAfx.h"
|
#include "PCH.h"
|
||||||
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
@ -47,14 +33,9 @@ wxEventMonitorFrame::wxEventMonitorFrame(wxWindow* parent, wxWindowID id, const
|
|||||||
wxString prod_status_bar;
|
wxString prod_status_bar;
|
||||||
prod_status_bar.Printf(_("Toggles display of %s records"), wxT(PRODUCT_NAME_STR));
|
prod_status_bar.Printf(_("Toggles display of %s records"), wxT(PRODUCT_NAME_STR));
|
||||||
|
|
||||||
winstd::library lib_comres;
|
winstd::library lib_comres(LoadLibraryEx(_T("comres.dll"), NULL, LOAD_LIBRARY_AS_DATAFILE | LOAD_LIBRARY_AS_IMAGE_RESOURCE));
|
||||||
lib_comres.load(_T("comres.dll"), NULL, LOAD_LIBRARY_AS_DATAFILE | LOAD_LIBRARY_AS_IMAGE_RESOURCE);
|
winstd::library lib_ieframe(LoadLibraryEx(_T("ieframe.dll"), NULL, LOAD_LIBRARY_AS_DATAFILE | LOAD_LIBRARY_AS_IMAGE_RESOURCE));
|
||||||
|
winstd::library lib_shell32(LoadLibraryEx(_T("shell32.dll"), NULL, LOAD_LIBRARY_AS_DATAFILE | LOAD_LIBRARY_AS_IMAGE_RESOURCE));
|
||||||
winstd::library lib_ieframe;
|
|
||||||
lib_ieframe.load(_T("ieframe.dll"), NULL, LOAD_LIBRARY_AS_DATAFILE | LOAD_LIBRARY_AS_IMAGE_RESOURCE);
|
|
||||||
|
|
||||||
winstd::library lib_shell32;
|
|
||||||
lib_shell32.load(_T("shell32.dll"), NULL, LOAD_LIBRARY_AS_DATAFILE | LOAD_LIBRARY_AS_IMAGE_RESOURCE);
|
|
||||||
|
|
||||||
wxSize size_menu(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON));
|
wxSize size_menu(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON));
|
||||||
wxSize size_tool(size_menu);
|
wxSize size_tool(size_menu);
|
||||||
|
@ -1,27 +1,13 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2015-2016 Amebis
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
Copyright 2016 GÉANT
|
Copyright © 2015-2022 Amebis
|
||||||
|
Copyright © 2016 GÉANT
|
||||||
This file is part of GÉANTLink.
|
|
||||||
|
|
||||||
GÉANTLink is free software: you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
GÉANTLink is distributed in the hope that it will be useful, but
|
|
||||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with GÉANTLink. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class wxEventMonitorFrame;
|
class wxEventMonitorFrame;
|
||||||
class wxPersistentEventMonitorFrame;
|
class wxPersistentEventMonitorFrame;
|
||||||
|
|
||||||
#pragma once;
|
#pragma once
|
||||||
|
|
||||||
#include "LogPanel.h"
|
#include "LogPanel.h"
|
||||||
|
|
||||||
@ -34,6 +20,9 @@ class wxPersistentEventMonitorFrame;
|
|||||||
|
|
||||||
#include <WinStd/Win.h>
|
#include <WinStd/Win.h>
|
||||||
|
|
||||||
|
#pragma warning(push)
|
||||||
|
#pragma warning(disable: 26444)
|
||||||
|
|
||||||
|
|
||||||
/// \addtogroup EventMonitor
|
/// \addtogroup EventMonitor
|
||||||
/// @{
|
/// @{
|
||||||
@ -173,3 +162,5 @@ inline wxPersistentObject *wxCreatePersistentObject(wxEventMonitorFrame *wnd)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
|
|
||||||
|
#pragma warning(pop)
|
||||||
|
@ -1,24 +1,10 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2015-2016 Amebis
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
Copyright 2016 GÉANT
|
Copyright © 2015-2022 Amebis
|
||||||
|
Copyright © 2016 GÉANT
|
||||||
This file is part of GÉANTLink.
|
|
||||||
|
|
||||||
GÉANTLink is free software: you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
GÉANTLink is distributed in the hope that it will be useful, but
|
|
||||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with GÉANTLink. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "StdAfx.h"
|
#include "PCH.h"
|
||||||
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -1,21 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2015-2016 Amebis
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
Copyright 2016 GÉANT
|
Copyright © 2015-2022 Amebis
|
||||||
|
Copyright © 2016 GÉANT
|
||||||
This file is part of GÉANTLink.
|
|
||||||
|
|
||||||
GÉANTLink is free software: you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
GÉANTLink is distributed in the hope that it will be useful, but
|
|
||||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with GÉANTLink. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class wxEventMonitorLogPanel;
|
class wxEventMonitorLogPanel;
|
||||||
|
Binary file not shown.
7
EventMonitor/PCH.cpp
Normal file
7
EventMonitor/PCH.cpp
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
/*
|
||||||
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
Copyright © 2015-2022 Amebis
|
||||||
|
Copyright © 2016 GÉANT
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "PCH.h"
|
39
EventMonitor/PCH.h
Normal file
39
EventMonitor/PCH.h
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
/*
|
||||||
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
Copyright © 2015-2022 Amebis
|
||||||
|
Copyright © 2016 GÉANT
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "App.h"
|
||||||
|
#include "ETWLog.h"
|
||||||
|
#include "Frame.h"
|
||||||
|
#include "LogPanel.h"
|
||||||
|
|
||||||
|
#include "../lib/EAPBase_UI/include/EAP_UI.h"
|
||||||
|
|
||||||
|
#include "../include/Version.h"
|
||||||
|
|
||||||
|
#include <wxex/common.h>
|
||||||
|
#include <wxex/object.h>
|
||||||
|
#include <wxex/persist/auimanager.h>
|
||||||
|
|
||||||
|
#include <WinStd/COM.h>
|
||||||
|
#include <WinStd/ETW.h>
|
||||||
|
#include <WinStd/Win.h>
|
||||||
|
|
||||||
|
#include <Windows.h>
|
||||||
|
#include <Msi.h>
|
||||||
|
#include <tchar.h>
|
||||||
|
|
||||||
|
#include <in6addr.h>
|
||||||
|
#include <MSTcpIP.h>
|
||||||
|
#include <Sddl.h>
|
||||||
|
#include <tchar.h>
|
||||||
|
|
||||||
|
#include <utility>
|
||||||
|
#include <vector>
|
||||||
|
#include <set>
|
||||||
|
|
||||||
|
#include <EventsETW.h> // Must include after <Windows.h>
|
@ -1,21 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright 2015-2016 Amebis
|
|
||||||
Copyright 2016 GÉANT
|
|
||||||
|
|
||||||
This file is part of GÉANTLink.
|
|
||||||
|
|
||||||
GÉANTLink is free software: you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
GÉANTLink is distributed in the hope that it will be useful, but
|
|
||||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with GÉANTLink. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "StdAfx.h"
|
|
@ -1,53 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright 2015-2016 Amebis
|
|
||||||
Copyright 2016 GÉANT
|
|
||||||
|
|
||||||
This file is part of GÉANTLink.
|
|
||||||
|
|
||||||
GÉANTLink is free software: you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
GÉANTLink is distributed in the hope that it will be useful, but
|
|
||||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with GÉANTLink. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "App.h"
|
|
||||||
#include "ETWLog.h"
|
|
||||||
#include "Frame.h"
|
|
||||||
#include "LogPanel.h"
|
|
||||||
|
|
||||||
#include "../lib/EAPBase_UI/include/EAP_UI.h"
|
|
||||||
|
|
||||||
#include "../include/Version.h"
|
|
||||||
|
|
||||||
#include <wxex/common.h>
|
|
||||||
#include <wxex/object.h>
|
|
||||||
#include <wxex/persist/auimanager.h>
|
|
||||||
|
|
||||||
#include <WinStd/COM.h>
|
|
||||||
#include <WinStd/ETW.h>
|
|
||||||
#include <WinStd/Win.h>
|
|
||||||
|
|
||||||
#include <Windows.h>
|
|
||||||
#include <Msi.h>
|
|
||||||
#include <tchar.h>
|
|
||||||
|
|
||||||
#include <in6addr.h>
|
|
||||||
#include <MSTcpIP.h>
|
|
||||||
#include <Sddl.h>
|
|
||||||
#include <tchar.h>
|
|
||||||
|
|
||||||
#include <utility>
|
|
||||||
#include <vector>
|
|
||||||
#include <set>
|
|
||||||
|
|
||||||
#include <EventsETW.h> // Must include after <Windows.h>
|
|
@ -2,335 +2,219 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: EventMonitor\n"
|
"Project-Id-Version: EventMonitor\n"
|
||||||
"POT-Creation-Date: 2017-02-02 18:14+0100\n"
|
"POT-Creation-Date: 2019-08-12 14:04+0200\n"
|
||||||
"PO-Revision-Date: 2016-06-02 12:27+0200\n"
|
"PO-Revision-Date: 2016-06-02 12:27+0200\n"
|
||||||
"Last-Translator: Simon Rozman <simon.rozman@amebis.si>\n"
|
"Last-Translator: Simon Rozman <simon.rozman@amebis.si>\n"
|
||||||
"Language-Team: Amebis, d. o. o., Kamnik <info@amebis.si>\n"
|
"Language-Team: Amebis, d. o. o., Kamnik <info@amebis.si>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: Poedit 1.8.11\n"
|
"X-Generator: Poedit 2.2.3\n"
|
||||||
"X-Poedit-Basepath: ../../..\n"
|
"X-Poedit-Basepath: ..\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
"Language: en_US\n"
|
|
||||||
"X-Poedit-SourceCharset: UTF-8\n"
|
"X-Poedit-SourceCharset: UTF-8\n"
|
||||||
"X-Poedit-KeywordsList: _\n"
|
"X-Poedit-KeywordsList: _\n"
|
||||||
"X-Poedit-SearchPath-0: master/EventMonitor\n"
|
"X-Poedit-SearchPath-0: .\n"
|
||||||
"X-Poedit-SearchPath-1: ver1.1/EventMonitor\n"
|
|
||||||
"X-Poedit-SearchPath-2: ver1.0/EventMonitor\n"
|
|
||||||
|
|
||||||
#: master/EventMonitor/App.cpp:61 ver1.0/EventMonitor/App.cpp:61
|
#: App.cpp:61 Frame.h:75 MSIBuild/en_US.ARM64.Release.Feature-2.idtx:4
|
||||||
#: ver1.1/EventMonitor/App.cpp:61 master/EventMonitor/Frame.h:75
|
#: MSIBuild/en_US.Win32.Release.Feature-2.idtx:4
|
||||||
#: ver1.0/EventMonitor/Frame.h:75 ver1.1/EventMonitor/Frame.h:75
|
#: MSIBuild/en_US.x64.Release.Feature-2.idtx:4
|
||||||
#: master/EventMonitor/MSIBuild/en_US.Win32.Debug.Feature-2.idtx:4
|
|
||||||
#: master/EventMonitor/MSIBuild/en_US.Win32.Release.Feature-2.idtx:4
|
|
||||||
#: master/EventMonitor/MSIBuild/en_US.x64.Debug.Feature-2.idtx:4
|
|
||||||
#: master/EventMonitor/MSIBuild/en_US.x64.Release.Feature-2.idtx:4
|
|
||||||
#: ver1.0/EventMonitor/MSIBuild/en_US.Win32.Debug.Feature-2.idtx:4
|
|
||||||
#: ver1.0/EventMonitor/MSIBuild/en_US.Win32.Release.Feature-2.idtx:4
|
|
||||||
#: ver1.0/EventMonitor/MSIBuild/en_US.x64.Debug.Feature-2.idtx:4
|
|
||||||
#: ver1.0/EventMonitor/MSIBuild/en_US.x64.Release.Feature-2.idtx:4
|
|
||||||
#: ver1.1/EventMonitor/MSIBuild/en_US.Win32.Debug.Feature-2.idtx:4
|
|
||||||
#: ver1.1/EventMonitor/MSIBuild/en_US.Win32.Release.Feature-2.idtx:4
|
|
||||||
#: ver1.1/EventMonitor/MSIBuild/en_US.x64.Debug.Feature-2.idtx:4
|
|
||||||
#: ver1.1/EventMonitor/MSIBuild/en_US.x64.Release.Feature-2.idtx:4
|
|
||||||
msgid "Event Monitor"
|
msgid "Event Monitor"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/ETWLog.cpp:83 ver1.0/EventMonitor/ETWLog.cpp:83
|
#: ETWLog.cpp:83
|
||||||
#: ver1.1/EventMonitor/ETWLog.cpp:83
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error opening event trace (error %u)."
|
msgid "Error opening event trace (error %u)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/ETWLog.cpp:171 ver1.0/EventMonitor/ETWLog.cpp:171
|
#: ETWLog.cpp:171
|
||||||
#: ver1.1/EventMonitor/ETWLog.cpp:171
|
|
||||||
msgid "Time"
|
msgid "Time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/ETWLog.cpp:172 ver1.0/EventMonitor/ETWLog.cpp:172
|
#: ETWLog.cpp:172
|
||||||
#: ver1.1/EventMonitor/ETWLog.cpp:172
|
|
||||||
msgid "PID"
|
msgid "PID"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/ETWLog.cpp:173 ver1.0/EventMonitor/ETWLog.cpp:173
|
#: ETWLog.cpp:173
|
||||||
#: ver1.1/EventMonitor/ETWLog.cpp:173
|
|
||||||
msgid "TID"
|
msgid "TID"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/ETWLog.cpp:174 ver1.0/EventMonitor/ETWLog.cpp:174
|
#: ETWLog.cpp:174
|
||||||
#: ver1.1/EventMonitor/ETWLog.cpp:174
|
|
||||||
msgid "Source"
|
msgid "Source"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/ETWLog.cpp:175 ver1.0/EventMonitor/ETWLog.cpp:175
|
#: ETWLog.cpp:175
|
||||||
#: ver1.1/EventMonitor/ETWLog.cpp:175
|
|
||||||
msgid "Event"
|
msgid "Event"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/ETWLog.cpp:232 ver1.0/EventMonitor/ETWLog.cpp:232
|
#: ETWLog.cpp:232
|
||||||
#: ver1.1/EventMonitor/ETWLog.cpp:232
|
|
||||||
msgid "Access denied creating event session: you need administrative privileges (Run As Administrator) or be a member of Performance Log Users group to start event tracing session."
|
msgid "Access denied creating event session: you need administrative privileges (Run As Administrator) or be a member of Performance Log Users group to start event tracing session."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/ETWLog.cpp:235 ver1.0/EventMonitor/ETWLog.cpp:235
|
#: ETWLog.cpp:235
|
||||||
#: ver1.1/EventMonitor/ETWLog.cpp:235
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "The %s event session already exists."
|
msgid "The %s event session already exists."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/ETWLog.cpp:239 ver1.0/EventMonitor/ETWLog.cpp:239
|
#: ETWLog.cpp:239
|
||||||
#: ver1.1/EventMonitor/ETWLog.cpp:239
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error creating event session (error %u)."
|
msgid "Error creating event session (error %u)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/ETWLog.cpp:255 master/EventMonitor/ETWLog.cpp:271
|
#: ETWLog.cpp:255 ETWLog.cpp:271 ETWLog.cpp:285
|
||||||
#: master/EventMonitor/ETWLog.cpp:285 ver1.0/EventMonitor/ETWLog.cpp:255
|
|
||||||
#: ver1.0/EventMonitor/ETWLog.cpp:271 ver1.0/EventMonitor/ETWLog.cpp:285
|
|
||||||
#: ver1.1/EventMonitor/ETWLog.cpp:255 ver1.1/EventMonitor/ETWLog.cpp:271
|
|
||||||
#: ver1.1/EventMonitor/ETWLog.cpp:285
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error enabling %s event provider (error %u)."
|
msgid "Error enabling %s event provider (error %u)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/Frame.cpp:48 master/EventMonitor/Frame.cpp:108
|
#: Frame.cpp:48 Frame.cpp:108 Frame.cpp:113 Frame.cpp:168 Frame.cpp:170
|
||||||
#: master/EventMonitor/Frame.cpp:113 master/EventMonitor/Frame.cpp:168
|
|
||||||
#: master/EventMonitor/Frame.cpp:170 ver1.0/EventMonitor/Frame.cpp:48
|
|
||||||
#: ver1.0/EventMonitor/Frame.cpp:108 ver1.0/EventMonitor/Frame.cpp:113
|
|
||||||
#: ver1.0/EventMonitor/Frame.cpp:168 ver1.0/EventMonitor/Frame.cpp:170
|
|
||||||
#: ver1.1/EventMonitor/Frame.cpp:48 ver1.1/EventMonitor/Frame.cpp:108
|
|
||||||
#: ver1.1/EventMonitor/Frame.cpp:113 ver1.1/EventMonitor/Frame.cpp:168
|
|
||||||
#: ver1.1/EventMonitor/Frame.cpp:170
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Toggles display of %s records"
|
msgid "Toggles display of %s records"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/Frame.cpp:65 ver1.0/EventMonitor/Frame.cpp:65
|
#: Frame.cpp:65
|
||||||
#: ver1.1/EventMonitor/Frame.cpp:65
|
|
||||||
msgid "E&xit"
|
msgid "E&xit"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/Frame.cpp:65 ver1.0/EventMonitor/Frame.cpp:65
|
#: Frame.cpp:65
|
||||||
#: ver1.1/EventMonitor/Frame.cpp:65
|
|
||||||
msgid "Quits this program"
|
msgid "Quits this program"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/Frame.cpp:69 ver1.0/EventMonitor/Frame.cpp:69
|
#: Frame.cpp:69
|
||||||
#: ver1.1/EventMonitor/Frame.cpp:69
|
|
||||||
msgid "&Program"
|
msgid "&Program"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/Frame.cpp:73 ver1.0/EventMonitor/Frame.cpp:73
|
#: Frame.cpp:73
|
||||||
#: ver1.1/EventMonitor/Frame.cpp:73
|
|
||||||
msgid "&Copy"
|
msgid "&Copy"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/Frame.cpp:73 master/EventMonitor/Frame.cpp:154
|
#: Frame.cpp:73 Frame.cpp:154
|
||||||
#: ver1.0/EventMonitor/Frame.cpp:73 ver1.0/EventMonitor/Frame.cpp:154
|
|
||||||
#: ver1.1/EventMonitor/Frame.cpp:73 ver1.1/EventMonitor/Frame.cpp:154
|
|
||||||
msgid "Copies selected records to clipboard"
|
msgid "Copies selected records to clipboard"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/Frame.cpp:78 ver1.0/EventMonitor/Frame.cpp:78
|
#: Frame.cpp:78
|
||||||
#: ver1.1/EventMonitor/Frame.cpp:78
|
|
||||||
msgid "Copy A&ll"
|
msgid "Copy A&ll"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/Frame.cpp:78 master/EventMonitor/Frame.cpp:156
|
#: Frame.cpp:78 Frame.cpp:156
|
||||||
#: ver1.0/EventMonitor/Frame.cpp:78 ver1.0/EventMonitor/Frame.cpp:156
|
|
||||||
#: ver1.1/EventMonitor/Frame.cpp:78 ver1.1/EventMonitor/Frame.cpp:156
|
|
||||||
msgid "Copies all records to clipboard (including hidden)"
|
msgid "Copies all records to clipboard (including hidden)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/Frame.cpp:83 master/EventMonitor/Frame.cpp:158
|
#: Frame.cpp:83 Frame.cpp:158
|
||||||
#: ver1.0/EventMonitor/Frame.cpp:83 ver1.0/EventMonitor/Frame.cpp:158
|
|
||||||
#: ver1.1/EventMonitor/Frame.cpp:83 ver1.1/EventMonitor/Frame.cpp:158
|
|
||||||
msgid "Clear"
|
msgid "Clear"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/Frame.cpp:83 master/EventMonitor/Frame.cpp:158
|
#: Frame.cpp:83 Frame.cpp:158
|
||||||
#: ver1.0/EventMonitor/Frame.cpp:83 ver1.0/EventMonitor/Frame.cpp:158
|
|
||||||
#: ver1.1/EventMonitor/Frame.cpp:83 ver1.1/EventMonitor/Frame.cpp:158
|
|
||||||
msgid "Clears all records from the log"
|
msgid "Clears all records from the log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/Frame.cpp:90 ver1.0/EventMonitor/Frame.cpp:90
|
#: Frame.cpp:90
|
||||||
#: ver1.1/EventMonitor/Frame.cpp:90
|
|
||||||
msgid "Select &All"
|
msgid "Select &All"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/Frame.cpp:90 ver1.0/EventMonitor/Frame.cpp:90
|
#: Frame.cpp:90
|
||||||
#: ver1.1/EventMonitor/Frame.cpp:90
|
|
||||||
msgid "Selects all visible records"
|
msgid "Selects all visible records"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/Frame.cpp:94 ver1.0/EventMonitor/Frame.cpp:94
|
#: Frame.cpp:94
|
||||||
#: ver1.1/EventMonitor/Frame.cpp:94
|
|
||||||
msgid "Select &None"
|
msgid "Select &None"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/Frame.cpp:94 ver1.0/EventMonitor/Frame.cpp:94
|
#: Frame.cpp:94
|
||||||
#: ver1.1/EventMonitor/Frame.cpp:94
|
|
||||||
msgid "Clears record selection"
|
msgid "Clears record selection"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/Frame.cpp:97 master/EventMonitor/Frame.cpp:142
|
#: Frame.cpp:97 Frame.cpp:142
|
||||||
#: ver1.0/EventMonitor/Frame.cpp:97 ver1.0/EventMonitor/Frame.cpp:142
|
|
||||||
#: ver1.1/EventMonitor/Frame.cpp:97 ver1.1/EventMonitor/Frame.cpp:142
|
|
||||||
msgid "&Edit"
|
msgid "&Edit"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/Frame.cpp:101 ver1.0/EventMonitor/Frame.cpp:101
|
#: Frame.cpp:101
|
||||||
#: ver1.1/EventMonitor/Frame.cpp:101
|
|
||||||
msgid "Auto &Scroll"
|
msgid "Auto &Scroll"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/Frame.cpp:101 master/EventMonitor/Frame.cpp:164
|
#: Frame.cpp:101 Frame.cpp:164
|
||||||
#: ver1.0/EventMonitor/Frame.cpp:101 ver1.0/EventMonitor/Frame.cpp:164
|
|
||||||
#: ver1.1/EventMonitor/Frame.cpp:101 ver1.1/EventMonitor/Frame.cpp:164
|
|
||||||
msgid "Automatically scrolls to the most recent records as they come-in"
|
msgid "Automatically scrolls to the most recent records as they come-in"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/Frame.cpp:123 master/EventMonitor/Frame.cpp:176
|
#: Frame.cpp:123 Frame.cpp:176
|
||||||
#: ver1.0/EventMonitor/Frame.cpp:123 ver1.0/EventMonitor/Frame.cpp:176
|
|
||||||
#: ver1.1/EventMonitor/Frame.cpp:123 ver1.1/EventMonitor/Frame.cpp:176
|
|
||||||
msgid "Verbose"
|
msgid "Verbose"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/Frame.cpp:123 master/EventMonitor/Frame.cpp:176
|
#: Frame.cpp:123 Frame.cpp:176
|
||||||
#: ver1.0/EventMonitor/Frame.cpp:123 ver1.0/EventMonitor/Frame.cpp:176
|
|
||||||
#: ver1.1/EventMonitor/Frame.cpp:123 ver1.1/EventMonitor/Frame.cpp:176
|
|
||||||
msgid "Displays all levels of records"
|
msgid "Displays all levels of records"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/Frame.cpp:127 master/EventMonitor/Frame.cpp:178
|
#: Frame.cpp:127 Frame.cpp:178
|
||||||
#: ver1.0/EventMonitor/Frame.cpp:127 ver1.0/EventMonitor/Frame.cpp:178
|
|
||||||
#: ver1.1/EventMonitor/Frame.cpp:127 ver1.1/EventMonitor/Frame.cpp:178
|
|
||||||
msgid "Informational"
|
msgid "Informational"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/Frame.cpp:127 master/EventMonitor/Frame.cpp:178
|
#: Frame.cpp:127 Frame.cpp:178
|
||||||
#: ver1.0/EventMonitor/Frame.cpp:127 ver1.0/EventMonitor/Frame.cpp:178
|
|
||||||
#: ver1.1/EventMonitor/Frame.cpp:127 ver1.1/EventMonitor/Frame.cpp:178
|
|
||||||
msgid "Displays all records up to informational level"
|
msgid "Displays all records up to informational level"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/Frame.cpp:131 master/EventMonitor/Frame.cpp:180
|
#: Frame.cpp:131 Frame.cpp:180
|
||||||
#: ver1.0/EventMonitor/Frame.cpp:131 ver1.0/EventMonitor/Frame.cpp:180
|
|
||||||
#: ver1.1/EventMonitor/Frame.cpp:131 ver1.1/EventMonitor/Frame.cpp:180
|
|
||||||
msgid "Warning"
|
msgid "Warning"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/Frame.cpp:131 master/EventMonitor/Frame.cpp:180
|
#: Frame.cpp:131 Frame.cpp:180
|
||||||
#: ver1.0/EventMonitor/Frame.cpp:131 ver1.0/EventMonitor/Frame.cpp:180
|
|
||||||
#: ver1.1/EventMonitor/Frame.cpp:131 ver1.1/EventMonitor/Frame.cpp:180
|
|
||||||
msgid "Displays all records up to warning level"
|
msgid "Displays all records up to warning level"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/Frame.cpp:135 master/EventMonitor/Frame.cpp:182
|
#: Frame.cpp:135 Frame.cpp:182
|
||||||
#: ver1.0/EventMonitor/Frame.cpp:135 ver1.0/EventMonitor/Frame.cpp:182
|
|
||||||
#: ver1.1/EventMonitor/Frame.cpp:135 ver1.1/EventMonitor/Frame.cpp:182
|
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/Frame.cpp:135 master/EventMonitor/Frame.cpp:182
|
#: Frame.cpp:135 Frame.cpp:182
|
||||||
#: ver1.0/EventMonitor/Frame.cpp:135 ver1.0/EventMonitor/Frame.cpp:182
|
|
||||||
#: ver1.1/EventMonitor/Frame.cpp:135 ver1.1/EventMonitor/Frame.cpp:182
|
|
||||||
msgid "Displays error level records only"
|
msgid "Displays error level records only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/Frame.cpp:142 master/EventMonitor/Frame.cpp:146
|
#: Frame.cpp:142 Frame.cpp:146
|
||||||
#: ver1.0/EventMonitor/Frame.cpp:142 ver1.0/EventMonitor/Frame.cpp:146
|
|
||||||
#: ver1.1/EventMonitor/Frame.cpp:142 ver1.1/EventMonitor/Frame.cpp:146
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s toolbar"
|
msgid "%s toolbar"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/Frame.cpp:142 master/EventMonitor/Frame.cpp:146
|
#: Frame.cpp:142 Frame.cpp:146
|
||||||
#: ver1.0/EventMonitor/Frame.cpp:142 ver1.0/EventMonitor/Frame.cpp:146
|
|
||||||
#: ver1.1/EventMonitor/Frame.cpp:142 ver1.1/EventMonitor/Frame.cpp:146
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Toggles display of %s toolbar"
|
msgid "Toggles display of %s toolbar"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/Frame.cpp:142 master/EventMonitor/Frame.cpp:146
|
#: Frame.cpp:142 Frame.cpp:146 Frame.cpp:185
|
||||||
#: master/EventMonitor/Frame.cpp:185 ver1.0/EventMonitor/Frame.cpp:142
|
|
||||||
#: ver1.0/EventMonitor/Frame.cpp:146 ver1.0/EventMonitor/Frame.cpp:185
|
|
||||||
#: ver1.1/EventMonitor/Frame.cpp:142 ver1.1/EventMonitor/Frame.cpp:146
|
|
||||||
#: ver1.1/EventMonitor/Frame.cpp:185
|
|
||||||
msgid "View"
|
msgid "View"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/Frame.cpp:146 master/EventMonitor/Frame.cpp:149
|
#: Frame.cpp:146 Frame.cpp:149
|
||||||
#: ver1.0/EventMonitor/Frame.cpp:146 ver1.0/EventMonitor/Frame.cpp:149
|
|
||||||
#: ver1.1/EventMonitor/Frame.cpp:146 ver1.1/EventMonitor/Frame.cpp:149
|
|
||||||
msgid "&View"
|
msgid "&View"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/Frame.cpp:154 ver1.0/EventMonitor/Frame.cpp:154
|
#: Frame.cpp:154
|
||||||
#: ver1.1/EventMonitor/Frame.cpp:154
|
|
||||||
msgid "Copy"
|
msgid "Copy"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/Frame.cpp:156 ver1.0/EventMonitor/Frame.cpp:156
|
#: Frame.cpp:156
|
||||||
#: ver1.1/EventMonitor/Frame.cpp:156
|
|
||||||
msgid "Copy All"
|
msgid "Copy All"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/Frame.cpp:161 ver1.0/EventMonitor/Frame.cpp:161
|
#: Frame.cpp:161
|
||||||
#: ver1.1/EventMonitor/Frame.cpp:161
|
|
||||||
msgid "Edit"
|
msgid "Edit"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/Frame.cpp:164 ver1.0/EventMonitor/Frame.cpp:164
|
#: Frame.cpp:164
|
||||||
#: ver1.1/EventMonitor/Frame.cpp:164
|
|
||||||
msgid "Auto Scroll"
|
msgid "Auto Scroll"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/Frame.cpp:189 ver1.0/EventMonitor/Frame.cpp:189
|
#: Frame.cpp:189
|
||||||
#: ver1.1/EventMonitor/Frame.cpp:189
|
|
||||||
msgid "Trace Log"
|
msgid "Trace Log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/MSIBuild/en_US.Win32.Debug.Feature-2.idtx:4
|
#: MSIBuild/en_US.ARM64.Release.Feature-2.idtx:4
|
||||||
#: master/EventMonitor/MSIBuild/en_US.Win32.Debug.Shortcut-2.idtx:4
|
#: MSIBuild/en_US.ARM64.Release.Shortcut-2.idtx:4
|
||||||
#: master/EventMonitor/MSIBuild/en_US.Win32.Release.Feature-2.idtx:4
|
#: MSIBuild/en_US.Win32.Release.Feature-2.idtx:4
|
||||||
#: master/EventMonitor/MSIBuild/en_US.Win32.Release.Shortcut-2.idtx:4
|
#: MSIBuild/en_US.Win32.Release.Shortcut-2.idtx:4
|
||||||
#: master/EventMonitor/MSIBuild/en_US.x64.Debug.Feature-2.idtx:4
|
#: MSIBuild/en_US.x64.Release.Feature-2.idtx:4
|
||||||
#: master/EventMonitor/MSIBuild/en_US.x64.Debug.Shortcut-2.idtx:4
|
#: MSIBuild/en_US.x64.Release.Shortcut-2.idtx:4
|
||||||
#: master/EventMonitor/MSIBuild/en_US.x64.Release.Feature-2.idtx:4
|
|
||||||
#: master/EventMonitor/MSIBuild/en_US.x64.Release.Shortcut-2.idtx:4
|
|
||||||
#: ver1.0/EventMonitor/MSIBuild/en_US.Win32.Debug.Feature-2.idtx:4
|
|
||||||
#: ver1.0/EventMonitor/MSIBuild/en_US.Win32.Debug.Shortcut-2.idtx:4
|
|
||||||
#: ver1.0/EventMonitor/MSIBuild/en_US.Win32.Release.Feature-2.idtx:4
|
|
||||||
#: ver1.0/EventMonitor/MSIBuild/en_US.Win32.Release.Shortcut-2.idtx:4
|
|
||||||
#: ver1.0/EventMonitor/MSIBuild/en_US.x64.Debug.Feature-2.idtx:4
|
|
||||||
#: ver1.0/EventMonitor/MSIBuild/en_US.x64.Debug.Shortcut-2.idtx:4
|
|
||||||
#: ver1.0/EventMonitor/MSIBuild/en_US.x64.Release.Feature-2.idtx:4
|
|
||||||
#: ver1.0/EventMonitor/MSIBuild/en_US.x64.Release.Shortcut-2.idtx:4
|
|
||||||
#: ver1.1/EventMonitor/MSIBuild/en_US.Win32.Debug.Feature-2.idtx:4
|
|
||||||
#: ver1.1/EventMonitor/MSIBuild/en_US.Win32.Debug.Shortcut-2.idtx:4
|
|
||||||
#: ver1.1/EventMonitor/MSIBuild/en_US.Win32.Release.Feature-2.idtx:4
|
|
||||||
#: ver1.1/EventMonitor/MSIBuild/en_US.Win32.Release.Shortcut-2.idtx:4
|
|
||||||
#: ver1.1/EventMonitor/MSIBuild/en_US.x64.Debug.Feature-2.idtx:4
|
|
||||||
#: ver1.1/EventMonitor/MSIBuild/en_US.x64.Debug.Shortcut-2.idtx:4
|
|
||||||
#: ver1.1/EventMonitor/MSIBuild/en_US.x64.Release.Feature-2.idtx:4
|
|
||||||
#: ver1.1/EventMonitor/MSIBuild/en_US.x64.Release.Shortcut-2.idtx:4
|
|
||||||
msgid "Real-time display of internal events"
|
msgid "Real-time display of internal events"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: master/EventMonitor/MSIBuild/en_US.Win32.Debug.Shortcut-2.idtx:4
|
#: MSIBuild/en_US.ARM64.Release.Shortcut-2.idtx:4
|
||||||
#: master/EventMonitor/MSIBuild/en_US.Win32.Release.Shortcut-2.idtx:4
|
#: MSIBuild/en_US.Win32.Release.Shortcut-2.idtx:4
|
||||||
#: master/EventMonitor/MSIBuild/en_US.x64.Debug.Shortcut-2.idtx:4
|
#: MSIBuild/en_US.x64.Release.Shortcut-2.idtx:4
|
||||||
#: master/EventMonitor/MSIBuild/en_US.x64.Release.Shortcut-2.idtx:4
|
|
||||||
#: ver1.0/EventMonitor/MSIBuild/en_US.Win32.Debug.Shortcut-2.idtx:4
|
|
||||||
#: ver1.0/EventMonitor/MSIBuild/en_US.Win32.Release.Shortcut-2.idtx:4
|
|
||||||
#: ver1.0/EventMonitor/MSIBuild/en_US.x64.Debug.Shortcut-2.idtx:4
|
|
||||||
#: ver1.0/EventMonitor/MSIBuild/en_US.x64.Release.Shortcut-2.idtx:4
|
|
||||||
#: ver1.1/EventMonitor/MSIBuild/en_US.Win32.Debug.Shortcut-2.idtx:4
|
|
||||||
#: ver1.1/EventMonitor/MSIBuild/en_US.Win32.Release.Shortcut-2.idtx:4
|
|
||||||
#: ver1.1/EventMonitor/MSIBuild/en_US.x64.Debug.Shortcut-2.idtx:4
|
|
||||||
#: ver1.1/EventMonitor/MSIBuild/en_US.x64.Release.Shortcut-2.idtx:4
|
|
||||||
msgid "EVENTM~1|GÉANTLink Event Monitor"
|
msgid "EVENTM~1|GÉANTLink Event Monitor"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user