Compare commits
235 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 | |||
3396f9cf97 | |||
f6ce76d384 | |||
ee7a8ce6d1 | |||
a53ceba97e | |||
4d7538937b | |||
10297c7ab3 | |||
c7f1a66a4a | |||
c2426f26fd | |||
6069a25c75 | |||
f07eed7882 | |||
401b4cdc28 | |||
1879d00bf9 | |||
0602285220 | |||
1fe80bd0e0 | |||
b3e5c93f4b | |||
366e08899b | |||
d5142aaf15 | |||
0b3e340dbe | |||
b655bd7d0b | |||
daeca67bee | |||
d2b66563e1 | |||
0d21610322 | |||
f75e72757e | |||
2e81aee089 | |||
7a6b760845 |
5
.gitignore
vendored
5
.gitignore
vendored
@ -1,5 +1,2 @@
|
||||
/*.opensdf
|
||||
/*.suo
|
||||
/*.sdf
|
||||
/.vs
|
||||
/doc
|
||||
/ipch
|
||||
|
3
.gitmodules
vendored
3
.gitmodules
vendored
@ -7,3 +7,6 @@
|
||||
[submodule "lib/wxExtend"]
|
||||
path = lib/wxExtend
|
||||
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,6 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<?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>
|
||||
@ -9,6 +13,10 @@
|
||||
<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>
|
||||
@ -20,78 +28,46 @@
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{2D3CE079-7EB1-4F47-B79E-F0310671ECCB}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>CredWrite</RootNamespace>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<PropertyGroup Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Label="Configuration" Condition="'$(Configuration)'=='Debug'">
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PropertyGroup Label="Configuration" Condition="'$(Configuration)'=='Release'">
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PropertyGroup Label="Configuration" Condition="'$(Platform)'=='ARM64'">
|
||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<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="..\include\Win32.props" />
|
||||
<Import Project="..\include\Debug.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\x64.props" />
|
||||
<Import Project="..\include\Debug.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\Win32.props" />
|
||||
<Import Project="..\include\Release.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\x64.props" />
|
||||
<Import Project="..\include\Release.props" />
|
||||
<Import Project="CredWrite.props" />
|
||||
<Import Project="..\include\$(Platform).props" />
|
||||
<Import Project="..\include\$(Configuration).props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
|
||||
<PropertyGroup>
|
||||
<OutDir>..\output\$(Platform).$(Configuration)\</OutDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>..\lib\Events\build\temp\Events.$(Platform).$(Configuration).$(PlatformToolset);..\lib\WinStd\include;..\lib\stdex\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="StdAfx.h" />
|
||||
<ClInclude Include="PCH.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="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)'=='Release|x64'">Create</PrecompiledHeader>
|
||||
<ClCompile Include="PCH.cpp">
|
||||
<PrecompiledHeader>Create</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
@ -110,14 +86,10 @@
|
||||
<ProjectReference Include="..\lib\TLS\build\TLS.vcxproj">
|
||||
<Project>{4d40cb8a-812e-4f12-b23a-31af743878e8}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\lib\WinStd\build\WinStd.vcxproj">
|
||||
<Project>{47399d91-7eb9-41de-b521-514ba5db0c43}</Project>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="README.md" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
<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">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
@ -15,12 +15,12 @@
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="StdAfx.h">
|
||||
<ClInclude Include="PCH.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="StdAfx.cpp">
|
||||
<ClCompile Include="PCH.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Main.cpp">
|
||||
|
@ -1,29 +1,18 @@
|
||||
/*
|
||||
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/>.
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2022 Amebis
|
||||
Copyright © 2016 GÉANT
|
||||
*/
|
||||
|
||||
#include "StdAfx.h"
|
||||
#include "PCH.h"
|
||||
|
||||
using namespace std;
|
||||
using namespace stdex;
|
||||
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()
|
||||
@ -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(lpCmdLine);
|
||||
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;
|
||||
|
||||
int res = CredWrite();
|
||||
assert(!_CrtDumpMemoryLeaks());
|
||||
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
|
||||
Imports given credentials to Windows Credential Manager for GÉANTLink use
|
||||
# CredWrite
|
||||
|
||||
Imports given credentials to Windows Credential Manager for GÉANTLink use
|
||||
|
||||
## Usage
|
||||
|
||||
##Usage
|
||||
```
|
||||
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.
|
||||
|
||||
Return codes:
|
||||
### Return codes
|
||||
|
||||
- -1 = Invalid parameters
|
||||
- 0 = Success
|
||||
- 1 = Error parsing command line
|
||||
- 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
|
||||
# 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
|
||||
# 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
|
||||
# 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,40 +1,43 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="StdAfx.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="StdAfx.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\Main.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="EAPTTLS.rc">
|
||||
<Filter>Resource Files</Filter>
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\build\EAPMethod.def">
|
||||
<Filter>Source Files</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="PCH.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="PCH.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Main.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Register.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="res\EAPMethod.rc">
|
||||
<Filter>Resource Files</Filter>
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="EAPMethod.def">
|
||||
<Filter>Source Files</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
</Project>
|
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,136 +1,145 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files\Localization">
|
||||
<UniqueIdentifier>{e43059ae-37ac-4b28-84fb-18d1b3972b30}</UniqueIdentifier>
|
||||
<Extensions>po;pot</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="StdAfx.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="StdAfx.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\Main_UI.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="EAPTTLSUI.rc">
|
||||
<Filter>Resource Files</Filter>
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\build\EAPMethodUI.def">
|
||||
<Filter>Source Files</Filter>
|
||||
</None>
|
||||
<None Include="..\locale\EAPMethods.pot">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<POCompile Include="..\locale\sl_SI.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="..\locale\bg_BG.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="..\locale\ca_ES.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="..\locale\cs_CZ.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="..\locale\cy_UK.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="..\locale\de_DE.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="..\locale\el_GR.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="..\locale\es_ES.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="..\locale\eu_ES.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="..\locale\fi_FI.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="..\locale\fr_CA.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="..\locale\fr_FR.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="..\locale\gl_ES.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="..\locale\hr_HR.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="..\locale\hu_HU.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="..\locale\is_IS.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="..\locale\it_IT.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="..\locale\lt_LT.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="..\locale\nb_NO.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="..\locale\nl_NL.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="..\locale\pl_PL.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="..\locale\pt_PT.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="..\locale\ru_RU.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="..\locale\sk_SK.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="..\locale\sr_RS.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="..\locale\sv_SE.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="..\locale\tr_TR.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="..\locale\vi_VN.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="..\locale\ko_KR.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
</ItemGroup>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files\Localization">
|
||||
<UniqueIdentifier>{e43059ae-37ac-4b28-84fb-18d1b3972b30}</UniqueIdentifier>
|
||||
<Extensions>po;pot</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="PCH_UI.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="PCH_UI.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Main_UI.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Register_UI.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="res\EAPMethod_UI.rc">
|
||||
<Filter>Resource Files</Filter>
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="EAPMethod_UI.def">
|
||||
<Filter>Source Files</Filter>
|
||||
</None>
|
||||
<None Include="locale\EAPMethods.pot">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<POCompile Include="locale\ro_RO.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="locale\sl_SI.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="locale\bg_BG.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="locale\ca_ES.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="locale\cs_CZ.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="locale\cy_UK.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="locale\de_DE.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="locale\el_GR.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="locale\es_ES.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="locale\eu_ES.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="locale\fi_FI.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="locale\fr_CA.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="locale\fr_FR.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="locale\gl_ES.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="locale\hr_HR.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="locale\hu_HU.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="locale\is_IS.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="locale\it_IT.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="locale\lt_LT.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="locale\nb_NO.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="locale\nl_NL.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="locale\pl_PL.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="locale\pt_PT.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="locale\ru_RU.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="locale\sk_SK.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="locale\sr_RS.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="locale\sv_SE.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="locale\tr_TR.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="locale\vi_VN.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="locale\ko_KR.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="locale\et_EE.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
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,131 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<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|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>
|
||||
</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>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</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\Win32.props" />
|
||||
<Import Project="..\..\include\Debug.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\x64.props" />
|
||||
<Import Project="..\..\include\Debug.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\Win32.props" />
|
||||
<Import Project="..\..\include\Release.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\x64.props" />
|
||||
<Import Project="..\..\include\Release.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)'=='Release|Win32'" />
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
|
||||
<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)'=='Release|x64'">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.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,188 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<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|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>
|
||||
</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>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</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\Win32.props" />
|
||||
<Import Project="..\..\include\Debug.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\x64.props" />
|
||||
<Import Project="..\..\include\Debug.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\Win32.props" />
|
||||
<Import Project="..\..\include\Release.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\x64.props" />
|
||||
<Import Project="..\..\include\Release.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)'=='Release|Win32'" />
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
|
||||
<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)'=='Release|x64'">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.vcxproj">
|
||||
<Project>{47399d91-7eb9-41de-b521-514ba5db0c43}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\lib\wxExtend\build\wxExtendLib.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\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
@ -1,11 +1,13 @@
|
||||
# Translators:
|
||||
# Simon Rozman <simon@rozman.si>, 2018
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: EAPMethods\n"
|
||||
"POT-Creation-Date: 2018-06-20 15:30+0200\n"
|
||||
"PO-Revision-Date: 2016-06-02 12:27+0200\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2016\n"
|
||||
"PO-Revision-Date: 2016-08-25 06:18+0000\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2018\n"
|
||||
"Language-Team: Bulgarian (Bulgaria) (https://www.transifex.com/eduroam_devel/teams/11799/bg_BG/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -901,7 +903,7 @@ msgstr "Използвай &празна външна самоличност"
|
||||
#: master/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
|
||||
msgid "Ommit my user name and use @mydomain.org only"
|
||||
msgid "Omit my user name and use @mydomain.org only"
|
||||
msgstr "Пропусни моето потребителско име и използвай само @mydomain.org"
|
||||
|
||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,10 +1,13 @@
|
||||
# Translators:
|
||||
# Simon Rozman <simon@rozman.si>, 2017
|
||||
# Petr Adamec <p.b.adamec@gmail.com>, 2017
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: EAPMethods\n"
|
||||
"POT-Creation-Date: 2018-06-20 15:30+0200\n"
|
||||
"PO-Revision-Date: 2016-06-02 12:27+0200\n"
|
||||
"PO-Revision-Date: 2016-08-25 06:18+0000\n"
|
||||
"Last-Translator: Petr Adamec <p.b.adamec@gmail.com>, 2017\n"
|
||||
"Language-Team: Czech (Czech Republic) (https://www.transifex.com/eduroam_devel/teams/11799/cs_CZ/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@ -844,7 +847,7 @@ msgstr ""
|
||||
#: master/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
|
||||
msgid "Ommit my user name and use @mydomain.org only"
|
||||
msgid "Omit my user name and use @mydomain.org only"
|
||||
msgstr ""
|
||||
|
||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||
|
@ -1,11 +1,13 @@
|
||||
# Translators:
|
||||
# Simon Rozman <simon@rozman.si>, 2017
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: EAPMethods\n"
|
||||
"POT-Creation-Date: 2018-06-20 15:30+0200\n"
|
||||
"PO-Revision-Date: 2016-06-02 12:27+0200\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2016\n"
|
||||
"PO-Revision-Date: 2016-08-25 06:18+0000\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2017\n"
|
||||
"Language-Team: Welsh (https://www.transifex.com/eduroam_devel/teams/11799/cy/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -844,7 +846,7 @@ msgstr ""
|
||||
#: master/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
|
||||
msgid "Ommit my user name and use @mydomain.org only"
|
||||
msgid "Omit my user name and use @mydomain.org only"
|
||||
msgstr ""
|
||||
|
||||
#: 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
714
EAPMethods/locale/et_EE.po
Normal file
714
EAPMethods/locale/et_EE.po
Normal file
@ -0,0 +1,714 @@
|
||||
#
|
||||
# Translators:
|
||||
# Indrek Rokk <indrek.rokk@eenet.ee>, 2018
|
||||
# Simon Rozman <simon@rozman.si>, 2020
|
||||
# Anne M <anne@eenet.ee>, 2021
|
||||
#
|
||||
#, 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: Anne M <anne@eenet.ee>, 2021\n"
|
||||
"Language-Team: Estonian (https://www.transifex.com/eduroam_devel/teams/11799/et/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: et\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 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 ""
|
||||
"Kas oled kindel, et soovid %s teenusepakkuja seadistusest püsivalt "
|
||||
"eemaldada?"
|
||||
|
||||
#: lib/EAPBase_UI/include/EAP_UI.h:295
|
||||
msgid "Warning"
|
||||
msgstr "Hoiatus"
|
||||
|
||||
#: lib/EAPBase_UI/include/EAP_UI.h:381 lib/EAPBase_UI/res/wxEAP_UI.h:116
|
||||
msgid "EAP Credentials"
|
||||
msgstr "EAP kasutajakonto"
|
||||
|
||||
#: lib/EAPBase_UI/include/EAP_UI.h:725
|
||||
msgid "Provider Settings"
|
||||
msgstr "Teenusepakkuja seadistused"
|
||||
|
||||
#: lib/EAPBase_UI/include/EAP_UI.h:758 lib/EAPBase_UI/res/wxEAP_UI.cpp:229
|
||||
#, c-format
|
||||
msgid "%s User Credentials"
|
||||
msgstr "%s kasutajakonto andmed"
|
||||
|
||||
#: 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 ""
|
||||
"Viga kasutajakonto andmete kirjutamisel kasutajakonto halduris (Credential "
|
||||
"Manager): %hs (viga %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 "Kasutajakonto andmete kirjutamine ebaõnnestus"
|
||||
|
||||
#: lib/EAPBase_UI/include/EAP_UI.h:897
|
||||
#, c-format
|
||||
msgid "Deleting credentials failed (error %u)."
|
||||
msgstr "Kasutajakonto andmete kustutamine ebaõnnestus (viga %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 "(ei midagi)"
|
||||
|
||||
#: lib/EAPBase_UI/include/EAP_UI.h:928
|
||||
#, c-format
|
||||
msgid "(error %u)"
|
||||
msgstr "(viga %u)"
|
||||
|
||||
#: lib/EAPBase_UI/include/EAP_UI.h:932
|
||||
msgid "(error)"
|
||||
msgstr "(viga)"
|
||||
|
||||
#: lib/EAPBase_UI/include/EAP_UI.h:943 lib/EAPBase_UI/include/EAP_UI.h:952
|
||||
msgid "(blank ID)"
|
||||
msgstr "(tühi ID)"
|
||||
|
||||
#: lib/EAPBase_UI/include/EAP_UI.h:992
|
||||
msgid "&Remember"
|
||||
msgstr "&Jäta meelde"
|
||||
|
||||
#: lib/EAPBase_UI/include/EAP_UI.h:993
|
||||
msgid "Check if you would like to save credentials"
|
||||
msgstr "Linnuta, kui soovid kasutajakonto andmeid salvestada"
|
||||
|
||||
#: lib/EAPBase_UI/include/EAP_UI.h:1214
|
||||
msgid "(Your Organization)"
|
||||
msgstr "(Sinu asutus)"
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:37
|
||||
msgid "+"
|
||||
msgstr "+"
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:38
|
||||
msgid "Adds new provider"
|
||||
msgstr "Lisab uue teenusepakkuja"
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:42
|
||||
msgid "-"
|
||||
msgstr "-"
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:43
|
||||
msgid "Removes selected provider"
|
||||
msgstr "Eemaldab valitud teenusepakkuja"
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:47
|
||||
msgid "Advanced..."
|
||||
msgstr "Keerukam..."
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:48
|
||||
msgid "Opens dialog with provider settings"
|
||||
msgstr "Avab teenusepakkuja seadistuste dialoogi"
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:240
|
||||
msgid "Select the source where your credentials used to connect are stored."
|
||||
msgstr ""
|
||||
"Vali koht, kuhu Su ühendumiseks kasutatud kasutajakonto andmed on "
|
||||
"salvestatud."
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:250
|
||||
msgid "Use from Credential &Manager:"
|
||||
msgstr "Kasuta andmeid kasutajakontode hal&durist (Credential Manager):"
|
||||
|
||||
#: 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 ""
|
||||
"Vali see võimalus, kui soovid kasutada Windowsi kasutajakontode halduris "
|
||||
"(Windows Credential Manager) salvestatud kontoandmeid"
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:258
|
||||
msgid "Your present credentials stored in Windows Credential Manager"
|
||||
msgstr ""
|
||||
"Sinu praegused, Windowsi kasutajakontode halduris (Windows Credential "
|
||||
"Manager) salvestatud kontoandmed"
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:268
|
||||
msgid "Use from &profile configuration:"
|
||||
msgstr "Kasuta andmeid &profiili seadistusest:"
|
||||
|
||||
#: 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 ""
|
||||
"Vali see võimalus, kui soovid salvestada kasutajakonto andmed profiili "
|
||||
"seadistustesse."
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:276
|
||||
msgid "Profile configuration credentials"
|
||||
msgstr "Profiili seadistuse kasutajaandmed"
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:289
|
||||
msgid "&Clear Credentials"
|
||||
msgstr "&Kustuta kasutajakonto andmed"
|
||||
|
||||
#: 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 ""
|
||||
"Klõpsa. et kustutada oma andmed kasutajakonto haldurist.\n"
|
||||
"Märkus: Ühendumisel lastakse Sul sisestada kasutajakonto andmed."
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:294
|
||||
msgid "&Set Credentials..."
|
||||
msgstr "&Määra kasutajakonto andmed..."
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:295
|
||||
msgid "Click here to set or modify your credentials"
|
||||
msgstr "Klõpsa siin oma kasutajakonto andmete määramiseks või muutmiseks"
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:332
|
||||
msgid "User ID and Password"
|
||||
msgstr "Kasutaja ID ja parool"
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:342
|
||||
msgid "Please provide your user ID and password."
|
||||
msgstr "Palun sisesta oma kasutaja ID ja parool"
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:352 lib/EAPBase_UI/res/wxEAP_UI.cpp:416
|
||||
msgid "User ID:"
|
||||
msgstr "Kasutaja ID:"
|
||||
|
||||
#: 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 "Sisesta siin oma kasutajanimi (nimi@domeen.ee, DOMEEN\\kasutaja vmt)"
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:361
|
||||
msgid "Password:"
|
||||
msgstr "Parool:"
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:366
|
||||
msgid "Enter your password here"
|
||||
msgstr "Sisesta siin oma parool"
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:396
|
||||
msgid "User ID"
|
||||
msgstr "Kasutaja ID"
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:406
|
||||
msgid "Please provide your user ID."
|
||||
msgstr "Palun sisesta oma kasutaja ID (kasutajanimi)."
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:446
|
||||
msgid "Your Organization"
|
||||
msgstr "Sinu asutus"
|
||||
|
||||
#: 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 ""
|
||||
"Kirjelda oma asutust, et seadistada kasutajaviibad. Kui asutus on "
|
||||
"kirjeldatud, on lõppkasutajatel lihtsam programmi sõnumeid mõista ja neist "
|
||||
"juhinduda."
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:464
|
||||
msgid "Your organization &name:"
|
||||
msgstr "Sinu asutuse &nimi:"
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:469
|
||||
msgid ""
|
||||
"Your organization name as it will appear on helpdesk contact notifications"
|
||||
msgstr ""
|
||||
"Sinu asutuse nimi, mida näidatakse kasutajatoega kontakteerumise teadetes"
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:473
|
||||
msgid "(Keep it short, please)"
|
||||
msgstr "(Palun kirjuta lühidalt)"
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:483
|
||||
msgid "Helpdesk contact &information:"
|
||||
msgstr "Kasutajatoe k&ontaktteave:"
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:500
|
||||
msgid "Your helpdesk website address"
|
||||
msgstr "Sinu kasutajatoe veebiaadress"
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:511
|
||||
msgid "Your helpdesk e-mail address"
|
||||
msgstr "Sinu kasutajatoe e-posti aadress"
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:522
|
||||
msgid "Your helpdesk phone number"
|
||||
msgstr "Sinu kasutajatoe telefoninumber"
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:550
|
||||
msgid "Provider Unique Identifier"
|
||||
msgstr "Teenusepakkuja unikaalne identifikaator"
|
||||
|
||||
#: 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 ""
|
||||
"Määra oma asutusele unikaalne ID, et samu kontoandmeid saaks kasutada "
|
||||
"erinevatel võrguprofiilidel."
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:568
|
||||
msgid "&Namespace:"
|
||||
msgstr "&Nimeruum:"
|
||||
|
||||
#: 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 "Teenusepakkuja unikaalne &identifikaator:"
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:589
|
||||
msgid "Your organization ID to assign same credentials from other profiles"
|
||||
msgstr "Sinu asutuse ID, et määrata samu kontoandmeid teistelt profiilidelt"
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:614
|
||||
msgid "Configuration Lock"
|
||||
msgstr "Seadistuslukk"
|
||||
|
||||
#: 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 ""
|
||||
"Seadistuslukk ei lase lõppkasutajatel kogemata muudatusi teha. Kasutajad "
|
||||
"saavad ainult kasutajakontoandmeid sisestada."
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:632
|
||||
msgid ""
|
||||
"&Lock this configuration and prevent any further modification via user "
|
||||
"interface."
|
||||
msgstr ""
|
||||
"&Lukusta see seadistus ja hoia ära selle muutmine kasutajaliidese kaudu"
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:635
|
||||
msgid "(Warning: Once locked, you can not revert using this dialog!)"
|
||||
msgstr ""
|
||||
"(Hoiatus: Lukustamise järel ei saa Sa seda dialoogi kasutades tehtut tagasi "
|
||||
"pöörata!)"
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:700
|
||||
msgid "Identity"
|
||||
msgstr "Identiteet"
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:711
|
||||
msgid "Select the user ID supplicant introduces itself as to authenticator:"
|
||||
msgstr "Vali kasutajanimi, mida pistikprogramm autentijale näitab:"
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:718
|
||||
msgid "&True identity"
|
||||
msgstr "&Tõene identiteet"
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:719
|
||||
msgid "Use my true user name"
|
||||
msgstr "Kasuta mu tõest kasutajanime"
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:723
|
||||
msgid "Use &empty identity"
|
||||
msgstr "Kasuta t&ühja identiteeti"
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:724
|
||||
msgid "Omit my user name and use @mydomain.org only"
|
||||
msgstr "Jäta mu kasutajanimi ära ja kasuta ainult @minudomeeni"
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:731
|
||||
msgid "&Custom identity:"
|
||||
msgstr "Kohandatud &identiteet:"
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:732
|
||||
msgid "Specify custom identity"
|
||||
msgstr "Määra kohandatud identiteet"
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.cpp:737
|
||||
msgid "Custom identity to use"
|
||||
msgstr "Kohandatud identiteet kasutamiseks"
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.h:66
|
||||
msgid "EAP Connection Configuration"
|
||||
msgstr "EAP ühenduse seadistus"
|
||||
|
||||
#: lib/EAPBase_UI/res/wxEAP_UI.h:329
|
||||
msgid "EAP Identity Provider"
|
||||
msgstr "EAP identiteedipakkuja"
|
||||
|
||||
#: lib/EAPBase_UI/src/EAP_UI.cpp:103
|
||||
#, c-format
|
||||
msgid "%s Credentials"
|
||||
msgstr "%s kasutajakonto andmed"
|
||||
|
||||
#: lib/EAPBase_UI/src/EAP_UI.cpp:139
|
||||
#, c-format
|
||||
msgid "For additional help and instructions, please contact %s at:"
|
||||
msgstr "Abi ja juhendite saamiseks võta palun ühendust: %s "
|
||||
|
||||
#: lib/EAPBase_UI/src/EAP_UI.cpp:140
|
||||
msgid "your provider"
|
||||
msgstr "sinu teenusepakkuja"
|
||||
|
||||
#: lib/EAPBase_UI/src/EAP_UI.cpp:159
|
||||
msgid "Open the default web browser"
|
||||
msgstr "Ava vaikimisi määratud veebilehitseja"
|
||||
|
||||
#: lib/EAPBase_UI/src/EAP_UI.cpp:170
|
||||
msgid "Open your e-mail program"
|
||||
msgstr "Ava oma e-postiprogramm"
|
||||
|
||||
#: lib/EAPBase_UI/src/EAP_UI.cpp:181
|
||||
msgid "Dial the phone number"
|
||||
msgstr "Vali telefoninumber"
|
||||
|
||||
#: 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 omab selles seadistuses eelseatud osi, mis on juhuslike muudatuste eest "
|
||||
"kaitsmiseks lukustatud."
|
||||
|
||||
#: lib/EAPBase_UI/src/EAP_UI.cpp:204
|
||||
msgid "Your provider"
|
||||
msgstr "Sinu teenusepakkuja"
|
||||
|
||||
#: lib/EAPBase_UI/src/EAP_UI.cpp:225
|
||||
msgid "Previous attempt to connect reported invalid credentials."
|
||||
msgstr "Eelmine ühendumiskatse oli mittekehtivate kasutajakonto andmetega."
|
||||
|
||||
#: lib/EAPBase_UI/src/EAP_UI.cpp:226
|
||||
msgid "Previous attempt to connect reported your credentials expired."
|
||||
msgstr "Eelmise ühendumiskatse kohaselt olid su kasutajakonto andmed aegunud."
|
||||
|
||||
#: lib/EAPBase_UI/src/EAP_UI.cpp:227
|
||||
msgid ""
|
||||
"Previous attempt to connect reported your credentials are being changed."
|
||||
msgstr "Eelmise ühendumiskatse kohaselt on su kasutajakonto andmed muutmisel."
|
||||
|
||||
#: lib/EAPBase_UI/src/EAP_UI.cpp:228
|
||||
msgid "Previous attempt to connect failed."
|
||||
msgstr "Eelmine ühendumiskatse ebaõnnestus."
|
||||
|
||||
#: lib/EAPBase_UI/src/EAP_UI.cpp:229
|
||||
msgid "Please, make sure your credentials are correct, or try again later."
|
||||
msgstr ""
|
||||
"Palun veendu, et Su kasutajakonto andmed on korrektsed, või proovi hiljem "
|
||||
"uuesti."
|
||||
|
||||
#: 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 ""
|
||||
"%s versioon selles arvutis logib kasutajakonto andmeid nähtavalt ja lihtsalt"
|
||||
" loetavalt."
|
||||
|
||||
#: lib/EAPBase_UI/src/EAP_UI.cpp:251
|
||||
msgid "Please, reconsider necessity to enter your credentials."
|
||||
msgstr "Palun kaalu oma kasutajakonto andmete sisestamise vajalikkust."
|
||||
|
||||
#: lib/EapHost_UI/res/wxEapHost_UI.cpp:17
|
||||
msgid "Inner EAP Method"
|
||||
msgstr "Sisemine EAP meetod"
|
||||
|
||||
#: lib/EapHost_UI/res/wxEapHost_UI.cpp:28
|
||||
msgid "Select and configure inner EAP method"
|
||||
msgstr "Vali ja seadista sisemine EAP meetod"
|
||||
|
||||
#: lib/EapHost_UI/res/wxEapHost_UI.cpp:40
|
||||
msgid "&Settings"
|
||||
msgstr "&Seadistused"
|
||||
|
||||
#: lib/EapHost_UI/src/EapHost_UI.cpp:59
|
||||
#, c-format
|
||||
msgid "Enumerating EAP methods failed (error %u, %s, %s)."
|
||||
msgstr "EAP meetodite loetlemine ebaõnnestus (viga %u, %s, %s)."
|
||||
|
||||
#: lib/EapHost_UI/src/EapHost_UI.cpp:61
|
||||
#, c-format
|
||||
msgid "Enumerating EAP methods failed (error %u)."
|
||||
msgstr "EAP meetodite loetlemine ebaõnnestus (viga %u)."
|
||||
|
||||
#: lib/EapHost_UI/src/EapHost_UI.cpp:136
|
||||
#, c-format
|
||||
msgid "Configuring EAP method failed (error %u, %s, %s)."
|
||||
msgstr "EAP meetodi seadistamine ebaõnnestus (viga %u, %s, %s)."
|
||||
|
||||
#: lib/EapHost_UI/src/EapHost_UI.cpp:138
|
||||
#, c-format
|
||||
msgid "Configuring EAP method failed (error %u)."
|
||||
msgstr "EAP meetodi seadistamine ebaõnnestus (viga %u)."
|
||||
|
||||
#: lib/GTC_UI/include/GTC_UI.h:114 lib/GTC_UI/res/wxGTC_UI.cpp:16
|
||||
msgid "GTC Challenge"
|
||||
msgstr "GTC pretensioon"
|
||||
|
||||
#: lib/GTC_UI/res/wxGTC_UI.cpp:26
|
||||
msgid "Please provide your response."
|
||||
msgstr "Palun sisesta oma vastus."
|
||||
|
||||
#: lib/GTC_UI/res/wxGTC_UI.cpp:38
|
||||
msgid "Server challenge"
|
||||
msgstr "Serveri pretensioon"
|
||||
|
||||
#: lib/GTC_UI/res/wxGTC_UI.cpp:43
|
||||
msgid "Enter your response here"
|
||||
msgstr "Sisesta siin oma vastus."
|
||||
|
||||
#: lib/GTC_UI/res/wxGTC_UI.cpp:70
|
||||
msgid "EAP-GTC authentication &mode:"
|
||||
msgstr "EAP-GTC &autentimisrežiim:"
|
||||
|
||||
#: lib/GTC_UI/res/wxGTC_UI.cpp:75
|
||||
msgid "Select EAP-GTC authentication mode from the list"
|
||||
msgstr "Vali loetelust EAP-GTC autentimisrežiim"
|
||||
|
||||
#: lib/GTC_UI/src/GTC_UI.cpp:39
|
||||
msgid "Challenge/Response"
|
||||
msgstr "Pretensioon/Vastus"
|
||||
|
||||
#: lib/GTC_UI/src/GTC_UI.cpp:41
|
||||
msgid "Password"
|
||||
msgstr "Parool"
|
||||
|
||||
#: lib/GTC_UI/src/GTC_UI.cpp:119
|
||||
#, c-format
|
||||
msgid "%s Challenge"
|
||||
msgstr "%s pretensioon"
|
||||
|
||||
#: lib/MSCHAPv2_UI/src/MSCHAPv2_UI.cpp:33
|
||||
msgid "MSCHAPv2 User ID and Password"
|
||||
msgstr "MSCHAPv2 kasutajanimi ja parool"
|
||||
|
||||
#: lib/PAP_UI/src/PAP_UI.cpp:33
|
||||
msgid "PAP User ID and Password"
|
||||
msgstr "PAP kasutajanimi ja parool"
|
||||
|
||||
#: lib/TLS_UI/res/wxTLS_UI.cpp:17
|
||||
msgid "Server Trust"
|
||||
msgstr "Serveri usaldamine"
|
||||
|
||||
#: lib/TLS_UI/res/wxTLS_UI.cpp:28
|
||||
msgid "Describe the servers you trust to prevent man-in-the-middle attacks."
|
||||
msgstr "Loetle serverid, mida usaldad vahendusrünnete tõrjumiseks."
|
||||
|
||||
#: lib/TLS_UI/res/wxTLS_UI.cpp:35
|
||||
msgid "Acceptable Certificate Authorities:"
|
||||
msgstr "Lubatud sertifitseerimiskeskused:"
|
||||
|
||||
#: lib/TLS_UI/res/wxTLS_UI.cpp:40
|
||||
msgid ""
|
||||
"Server's certificate must be issued by one of certificate authorities listed"
|
||||
" here"
|
||||
msgstr ""
|
||||
"Serverisertifikaat peab olema väljastatud siin loetletud "
|
||||
"sertifitseerimiskeskuse poolt"
|
||||
|
||||
#: lib/TLS_UI/res/wxTLS_UI.cpp:47
|
||||
msgid "Add CA from Store..."
|
||||
msgstr "Lisa sertifikaadilaost CA..."
|
||||
|
||||
#: lib/TLS_UI/res/wxTLS_UI.cpp:48
|
||||
msgid ""
|
||||
"Adds a new certificate authority from the certificate store to the list"
|
||||
msgstr "Lisab sertikaadilaost nimekirja uue sertifitseerimiskeskuse"
|
||||
|
||||
#: lib/TLS_UI/res/wxTLS_UI.cpp:52
|
||||
msgid "Add CA from File..."
|
||||
msgstr "Lisa failist CA..."
|
||||
|
||||
#: lib/TLS_UI/res/wxTLS_UI.cpp:53
|
||||
msgid "Adds a new certificate authority from the file to the list"
|
||||
msgstr "Lisab failist nimekirja uue sertifitseerimiskeskuse"
|
||||
|
||||
#: lib/TLS_UI/res/wxTLS_UI.cpp:57
|
||||
msgid "&Remove CA"
|
||||
msgstr "Eemalda &CA"
|
||||
|
||||
#: lib/TLS_UI/res/wxTLS_UI.cpp:58
|
||||
msgid "Removes selected certificate authorities from the list"
|
||||
msgstr "Eemaldab valitud sertifitseerimiskeskused nimekirjast"
|
||||
|
||||
#: lib/TLS_UI/res/wxTLS_UI.cpp:71
|
||||
msgid "Acceptable server &names:"
|
||||
msgstr "Lubatud serveri&nimed:"
|
||||
|
||||
#: 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 ""
|
||||
"Semikoolonitega eraldatult nimekiri lubatud serverite FQDN nimedest; "
|
||||
"nimekontrolli vahelejätmiseks tühik; lubatud on Unicode märgistik"
|
||||
|
||||
#: lib/TLS_UI/res/wxTLS_UI.cpp:80
|
||||
msgid "(Example: foo.bar.com;server2.bar.com)"
|
||||
msgstr "(Näide: yks.näide.ee;2.teine.ee)"
|
||||
|
||||
#: lib/TLS_UI/res/wxTLS_UI.cpp:118 lib/TLS_UI/src/TLS_UI.cpp:400
|
||||
msgid "User Certificate"
|
||||
msgstr "Kasutaja sertifikaat"
|
||||
|
||||
#: lib/TLS_UI/res/wxTLS_UI.cpp:128
|
||||
msgid "Please select your &certificate to use for authentication."
|
||||
msgstr "Palun vali autentimiseks oma serti&fikaat"
|
||||
|
||||
#: lib/TLS_UI/res/wxTLS_UI.cpp:135
|
||||
msgid "Client certificate to use for authentication"
|
||||
msgstr "Autentimisel kasutatav kliendisertifikaat"
|
||||
|
||||
#: lib/TLS_UI/res/wxTLS_UI.cpp:142
|
||||
msgid "Custom &identity:"
|
||||
msgstr "Kohandatud &identiteet:"
|
||||
|
||||
#: 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 ""
|
||||
"Sinu identiteet (kasutajanimi@domeen), millega kirjutatakse üle "
|
||||
"sertifikaadis olev; kui jätad tühjaks, kasutatakse sertifikaadis olevat"
|
||||
|
||||
#: lib/TLS_UI/src/TLS_UI.cpp:118
|
||||
msgid "No certificate selected"
|
||||
msgstr "Sertifikaati ei ole valitud"
|
||||
|
||||
#: lib/TLS_UI/src/TLS_UI.cpp:118
|
||||
msgid "Validation conflict"
|
||||
msgstr "Valideerimiskonflikt"
|
||||
|
||||
#: lib/TLS_UI/src/TLS_UI.cpp:327
|
||||
msgid "Add Certificate"
|
||||
msgstr "Lisa sertifikaat"
|
||||
|
||||
#: lib/TLS_UI/src/TLS_UI.cpp:328
|
||||
msgid "Certificate Files (*.cer;*.crt;*.der;*.p7b;*.pem)"
|
||||
msgstr "Sertifikaadi failid (*.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 sertifikaadi failid (*.cer;*.crt;*.der;*.p7b;*.pem)"
|
||||
|
||||
#: lib/TLS_UI/src/TLS_UI.cpp:330
|
||||
msgid "PKCS #7 Certificate Files (*.p7b)"
|
||||
msgstr "PKCS #7 sertifikaadi failid (*.p7b)"
|
||||
|
||||
#: lib/TLS_UI/src/TLS_UI.cpp:331
|
||||
msgid "All Files (*.*)"
|
||||
msgstr "Kõik failid (*.*)"
|
||||
|
||||
#: lib/TLS_UI/src/TLS_UI.cpp:345
|
||||
#, c-format
|
||||
msgid "Invalid or unsupported certificate file %s"
|
||||
msgstr "Vigane või mittetoetatud sertifikaadifail %s"
|
||||
|
||||
#: lib/TLS_UI/src/TLS_UI.cpp:345
|
||||
msgid "Error"
|
||||
msgstr "Viga"
|
||||
|
||||
#: lib/TTLS_UI/src/Module.cpp:249
|
||||
#, c-format
|
||||
msgid "Invoking EAP identity UI failed (error %u, %s, %s)."
|
||||
msgstr "EAP identiteedi UI aktiveerimine ebaõnnestus (viga %u, %s, %s)."
|
||||
|
||||
#: lib/TTLS_UI/src/Module.cpp:252
|
||||
#, c-format
|
||||
msgid "Invoking EAP identity UI failed (error %u)."
|
||||
msgstr "EAP identiteedi UI aktiveerimine ebaõnnestus (viga %u)."
|
||||
|
||||
#: lib/TTLS_UI/src/Module.cpp:376
|
||||
#, c-format
|
||||
msgid "Invoking EAP interactive UI failed (error %u, %s, %s)."
|
||||
msgstr "EAP interaktiivse UI aktiveerimine ebaõnnestus (viga %u, %s, %s)."
|
||||
|
||||
#: lib/TTLS_UI/src/Module.cpp:379
|
||||
#, c-format
|
||||
msgid "Invoking EAP interactive UI failed (error %u)."
|
||||
msgstr "EAP interaktiivse UI aktiveerimine ebaõnnestus (viga %u)."
|
||||
|
||||
#: lib/TTLS_UI/src/TTLS_UI.cpp:37
|
||||
msgid "Outer Authentication"
|
||||
msgstr "Väline autentimine"
|
||||
|
||||
#: lib/TTLS_UI/src/TTLS_UI.cpp:50
|
||||
msgid "Inner Authentication"
|
||||
msgstr "Sisemine autentimine"
|
||||
|
||||
#: lib/TTLS_UI/src/TTLS_UI.cpp:56
|
||||
msgid "Select inner authentication method from the list"
|
||||
msgstr "Vali nimekirjast sisemise autentimise meetod"
|
||||
|
||||
#: 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 "Muud EAP meetodid..."
|
||||
|
||||
#: 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 "EAP-TTLS meetod"
|
||||
|
||||
#: 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 "EAP meetodid"
|
||||
|
||||
#: 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 "Moodulid individuaalsete EAP meetodite toeks"
|
@ -1,11 +1,13 @@
|
||||
# Translators:
|
||||
# Simon Rozman <simon@rozman.si>, 2017
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: EAPMethods\n"
|
||||
"POT-Creation-Date: 2018-06-20 15:30+0200\n"
|
||||
"PO-Revision-Date: 2016-06-02 12:27+0200\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2016\n"
|
||||
"PO-Revision-Date: 2016-08-25 06:18+0000\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2017\n"
|
||||
"Language-Team: Basque (Spain) (https://www.transifex.com/eduroam_devel/teams/11799/eu_ES/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -844,7 +846,7 @@ msgstr ""
|
||||
#: master/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
|
||||
msgid "Ommit my user name and use @mydomain.org only"
|
||||
msgid "Omit my user name and use @mydomain.org only"
|
||||
msgstr ""
|
||||
|
||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||
|
@ -1,11 +1,13 @@
|
||||
# Translators:
|
||||
# Simon Rozman <simon@rozman.si>, 2017
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: EAPMethods\n"
|
||||
"POT-Creation-Date: 2018-06-20 15:30+0200\n"
|
||||
"PO-Revision-Date: 2016-06-02 12:27+0200\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2016\n"
|
||||
"PO-Revision-Date: 2016-08-25 06:18+0000\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2017\n"
|
||||
"Language-Team: Finnish (Finland) (https://www.transifex.com/eduroam_devel/teams/11799/fi_FI/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -844,7 +846,7 @@ msgstr ""
|
||||
#: master/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
|
||||
msgid "Ommit my user name and use @mydomain.org only"
|
||||
msgid "Omit my user name and use @mydomain.org only"
|
||||
msgstr ""
|
||||
|
||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||
|
@ -1,11 +1,13 @@
|
||||
# Translators:
|
||||
# Simon Rozman <simon@rozman.si>, 2017
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: EAPMethods\n"
|
||||
"POT-Creation-Date: 2018-06-20 15:30+0200\n"
|
||||
"PO-Revision-Date: 2016-06-02 12:27+0200\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2016\n"
|
||||
"PO-Revision-Date: 2016-08-25 06:18+0000\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2017\n"
|
||||
"Language-Team: French (Canada) (https://www.transifex.com/eduroam_devel/teams/11799/fr_CA/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -844,7 +846,7 @@ msgstr ""
|
||||
#: master/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
|
||||
msgid "Ommit my user name and use @mydomain.org only"
|
||||
msgid "Omit my user name and use @mydomain.org only"
|
||||
msgstr ""
|
||||
|
||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||
|
@ -1,11 +1,13 @@
|
||||
# Translators:
|
||||
# Simon Rozman <simon@rozman.si>, 2017
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: EAPMethods\n"
|
||||
"POT-Creation-Date: 2018-06-20 15:30+0200\n"
|
||||
"PO-Revision-Date: 2016-06-02 12:27+0200\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2016\n"
|
||||
"PO-Revision-Date: 2016-08-25 06:18+0000\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2017\n"
|
||||
"Language-Team: French (France) (https://www.transifex.com/eduroam_devel/teams/11799/fr_FR/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -844,7 +846,7 @@ msgstr ""
|
||||
#: master/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
|
||||
msgid "Ommit my user name and use @mydomain.org only"
|
||||
msgid "Omit my user name and use @mydomain.org only"
|
||||
msgstr ""
|
||||
|
||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||
|
@ -1,11 +1,13 @@
|
||||
# Translators:
|
||||
# Simon Rozman <simon@rozman.si>, 2017
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: EAPMethods\n"
|
||||
"POT-Creation-Date: 2018-06-20 15:30+0200\n"
|
||||
"PO-Revision-Date: 2016-06-02 12:27+0200\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2016\n"
|
||||
"PO-Revision-Date: 2016-08-25 06:18+0000\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2017\n"
|
||||
"Language-Team: Galician (Spain) (https://www.transifex.com/eduroam_devel/teams/11799/gl_ES/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -844,7 +846,7 @@ msgstr ""
|
||||
#: master/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
|
||||
msgid "Ommit my user name and use @mydomain.org only"
|
||||
msgid "Omit my user name and use @mydomain.org only"
|
||||
msgstr ""
|
||||
|
||||
#: 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
@ -1,11 +1,13 @@
|
||||
# Translators:
|
||||
# Simon Rozman <simon@rozman.si>, 2017
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: EAPMethods\n"
|
||||
"POT-Creation-Date: 2018-06-20 15:30+0200\n"
|
||||
"PO-Revision-Date: 2016-06-02 12:27+0200\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2016\n"
|
||||
"PO-Revision-Date: 2016-08-25 06:18+0000\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2017\n"
|
||||
"Language-Team: Icelandic (https://www.transifex.com/eduroam_devel/teams/11799/is/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -844,7 +846,7 @@ msgstr ""
|
||||
#: master/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
|
||||
msgid "Ommit my user name and use @mydomain.org only"
|
||||
msgid "Omit my user name and use @mydomain.org only"
|
||||
msgstr ""
|
||||
|
||||
#: 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
@ -1,11 +1,13 @@
|
||||
# Translators:
|
||||
# Simon Rozman <simon@rozman.si>, 2017
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: EAPMethods\n"
|
||||
"POT-Creation-Date: 2018-06-20 15:30+0200\n"
|
||||
"PO-Revision-Date: 2016-06-02 12:27+0200\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2016\n"
|
||||
"PO-Revision-Date: 2016-08-25 06:18+0000\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2017\n"
|
||||
"Language-Team: Lithuanian (https://www.transifex.com/eduroam_devel/teams/11799/lt/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -880,7 +882,7 @@ msgstr "Naudoti &tuščią išorinę tapatybę"
|
||||
#: master/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
|
||||
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"
|
||||
|
||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,11 +1,13 @@
|
||||
# Translators:
|
||||
# Simon Rozman <simon@rozman.si>, 2017
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: EAPMethods\n"
|
||||
"POT-Creation-Date: 2018-06-20 15:30+0200\n"
|
||||
"PO-Revision-Date: 2016-06-02 12:27+0200\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2016\n"
|
||||
"PO-Revision-Date: 2016-08-25 06:18+0000\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2017\n"
|
||||
"Language-Team: Dutch (https://www.transifex.com/eduroam_devel/teams/11799/nl/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -844,7 +846,7 @@ msgstr ""
|
||||
#: master/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
|
||||
msgid "Ommit my user name and use @mydomain.org only"
|
||||
msgid "Omit my user name and use @mydomain.org only"
|
||||
msgstr ""
|
||||
|
||||
#: 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"
|
@ -1,11 +1,13 @@
|
||||
# Translators:
|
||||
# Simon Rozman <simon@rozman.si>, 2017
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: EAPMethods\n"
|
||||
"POT-Creation-Date: 2018-06-20 15:30+0200\n"
|
||||
"PO-Revision-Date: 2016-06-02 12:27+0200\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2016\n"
|
||||
"PO-Revision-Date: 2016-08-25 06:18+0000\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2017\n"
|
||||
"Language-Team: Russian (Russia) (https://www.transifex.com/eduroam_devel/teams/11799/ru_RU/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -844,7 +846,7 @@ msgstr ""
|
||||
#: master/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
|
||||
msgid "Ommit my user name and use @mydomain.org only"
|
||||
msgid "Omit my user name and use @mydomain.org only"
|
||||
msgstr ""
|
||||
|
||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||
|
@ -1,11 +1,13 @@
|
||||
# Translators:
|
||||
# Simon Rozman <simon@rozman.si>, 2017
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: EAPMethods\n"
|
||||
"POT-Creation-Date: 2018-06-20 15:30+0200\n"
|
||||
"PO-Revision-Date: 2016-06-02 12:27+0200\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2016\n"
|
||||
"PO-Revision-Date: 2016-08-25 06:18+0000\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2017\n"
|
||||
"Language-Team: Slovak (Slovakia) (https://www.transifex.com/eduroam_devel/teams/11799/sk_SK/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -844,7 +846,7 @@ msgstr ""
|
||||
#: master/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
|
||||
msgid "Ommit my user name and use @mydomain.org only"
|
||||
msgid "Omit my user name and use @mydomain.org only"
|
||||
msgstr ""
|
||||
|
||||
#: 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
@ -1,11 +1,13 @@
|
||||
# Translators:
|
||||
# Simon Rozman <simon@rozman.si>, 2017
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: EAPMethods\n"
|
||||
"POT-Creation-Date: 2018-06-20 15:30+0200\n"
|
||||
"PO-Revision-Date: 2016-06-02 12:27+0200\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2016\n"
|
||||
"PO-Revision-Date: 2016-08-25 06:18+0000\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2017\n"
|
||||
"Language-Team: Swedish (https://www.transifex.com/eduroam_devel/teams/11799/sv/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -844,7 +846,7 @@ msgstr ""
|
||||
#: master/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
|
||||
msgid "Ommit my user name and use @mydomain.org only"
|
||||
msgid "Omit my user name and use @mydomain.org only"
|
||||
msgstr ""
|
||||
|
||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,11 +1,13 @@
|
||||
# Translators:
|
||||
# Simon Rozman <simon@rozman.si>, 2017
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: EAPMethods\n"
|
||||
"POT-Creation-Date: 2018-06-20 15:30+0200\n"
|
||||
"PO-Revision-Date: 2016-06-02 12:27+0200\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2016\n"
|
||||
"PO-Revision-Date: 2016-08-25 06:18+0000\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2017\n"
|
||||
"Language-Team: Vietnamese (https://www.transifex.com/eduroam_devel/teams/11799/vi/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -844,7 +846,7 @@ msgstr ""
|
||||
#: master/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
|
||||
msgid "Ommit my user name and use @mydomain.org only"
|
||||
msgid "Omit my user name and use @mydomain.org only"
|
||||
msgstr ""
|
||||
|
||||
#: 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,413 +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;
|
||||
|
||||
// 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
|
||||
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/>.
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2022 Amebis
|
||||
Copyright © 2016 GÉANT
|
||||
*/
|
||||
|
||||
#include "StdAfx.h"
|
||||
#include "PCH.h"
|
||||
#if defined(__WXMSW__)
|
||||
#pragma comment(lib, "msi.lib")
|
||||
#endif
|
||||
@ -28,6 +14,7 @@
|
||||
// wxEventMonitorApp
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#pragma warning(suppress: 28251)
|
||||
wxIMPLEMENT_APP(wxEventMonitorApp);
|
||||
|
||||
|
||||
|
@ -1,21 +1,7 @@
|
||||
/*
|
||||
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/>.
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2022 Amebis
|
||||
Copyright © 2016 GÉANT
|
||||
*/
|
||||
|
||||
///
|
||||
|
@ -1,24 +1,10 @@
|
||||
/*
|
||||
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/>.
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2022 Amebis
|
||||
Copyright © 2016 GÉANT
|
||||
*/
|
||||
|
||||
#include "StdAfx.h"
|
||||
#include "PCH.h"
|
||||
|
||||
#pragma comment(lib, "tdh.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++) {
|
||||
// Open trace.
|
||||
tlf.LoggerName = const_cast<LPTSTR>((LPCTSTR)(sessions[i]));
|
||||
event_trace trace;
|
||||
if (!trace.create(&tlf)) {
|
||||
event_trace trace(OpenTrace(&tlf));
|
||||
if (!trace) {
|
||||
wxLogError(_("Error opening event trace (error %u)."), GetLastError());
|
||||
continue;
|
||||
}
|
||||
@ -132,11 +118,8 @@ VOID WINAPI wxEventTraceProcessorThread::EventRecordCallback(_In_ PEVENT_RECORD
|
||||
wxASSERT_MSG(pEvent->UserContext, wxT("thread is NULL"));
|
||||
|
||||
wxEventTraceProcessorThread *_this = ((wxEventTraceProcessorThread*)pEvent->UserContext);
|
||||
|
||||
if (_this->TestDestroy()) {
|
||||
// Event processing is pending destruction.
|
||||
if (!_this || _this->TestDestroy())
|
||||
return;
|
||||
}
|
||||
|
||||
_this->m_parent->QueueEvent(new wxETWEvent(wxEVT_ETW_EVENT, *pEvent));
|
||||
}
|
||||
@ -168,17 +151,17 @@ wxETWListCtrl::wxETWListCtrl(wxWindow *parent, wxWindowID id, const wxPoint& pos
|
||||
m_rec_idx(wxETWEVENT_RECORDS_MAX),
|
||||
wxListCtrl(parent, id, pos, size, style, validator, name)
|
||||
{
|
||||
this->AppendColumn(_("Time" ), wxLIST_FORMAT_LEFT, 160);
|
||||
this->AppendColumn(_("PID" ), wxLIST_FORMAT_LEFT, 50);
|
||||
this->AppendColumn(_("TID" ), wxLIST_FORMAT_LEFT, 50);
|
||||
this->AppendColumn(_("Source"), wxLIST_FORMAT_LEFT, 80);
|
||||
this->AppendColumn(_("Event" ), wxLIST_FORMAT_LEFT, 350);
|
||||
this->AppendColumn(_("Time" ), wxLIST_FORMAT_LEFT, FromDIP(160));
|
||||
this->AppendColumn(_("PID" ), wxLIST_FORMAT_LEFT, FromDIP( 50));
|
||||
this->AppendColumn(_("TID" ), wxLIST_FORMAT_LEFT, FromDIP( 50));
|
||||
this->AppendColumn(_("Source"), wxLIST_FORMAT_LEFT, FromDIP( 80));
|
||||
this->AppendColumn(_("Event" ), wxLIST_FORMAT_LEFT, FromDIP(350));
|
||||
|
||||
// Maximum expected column widths for pre-formatted row display
|
||||
m_col_format_width[0] = 26;
|
||||
m_col_format_width[1] = 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;
|
||||
|
||||
// Prepare all possible item attributes.
|
||||
@ -204,11 +187,11 @@ wxETWListCtrl::wxETWListCtrl(wxWindow *parent, wxWindowID id, const wxPoint& pos
|
||||
ULONG ulResult;
|
||||
for (unsigned int i = 0; ; i++) {
|
||||
//tstring log_file(tstring_printf(i ? _T("test.etl") : _T("test %u.etl"), i));
|
||||
tstring name(tstring_printf(i ? _T(PRODUCT_NAME_STR) _T(" Event Monitor Session %u") : _T(PRODUCT_NAME_STR) _T(" Event Monitor Session"), i));
|
||||
tstring session_name(tstring_printf(i ? _T(PRODUCT_NAME_STR) _T(" Event Monitor Session %u") : _T(PRODUCT_NAME_STR) _T(" Event Monitor Session"), i));
|
||||
|
||||
// Allocate session properties.
|
||||
ULONG
|
||||
ulSizeName = (ULONG)((name .length() + 1)*sizeof(TCHAR)),
|
||||
ulSizeName = (ULONG)((session_name.length() + 1)*sizeof(TCHAR)),
|
||||
//ulSizeLogFile = (ULONG)((log_file.length() + 1)*sizeof(TCHAR)),
|
||||
ulSize = sizeof(EVENT_TRACE_PROPERTIES) + ulSizeName /*+ ulSizeLogFile*/;
|
||||
unique_ptr<EVENT_TRACE_PROPERTIES> properties(reinterpret_cast<EVENT_TRACE_PROPERTIES*>(new char[ulSize]));
|
||||
@ -219,20 +202,24 @@ wxETWListCtrl::wxETWListCtrl(wxWindow *parent, wxWindowID id, const wxPoint& pos
|
||||
properties->Wnode.BufferSize = ulSize;
|
||||
properties->Wnode.Flags = WNODE_FLAG_TRACED_GUID;
|
||||
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->MaximumFileSize = 1; // 1 MB
|
||||
properties->LoggerNameOffset = sizeof(EVENT_TRACE_PROPERTIES);
|
||||
//properties->LogFileNameOffset = sizeof(EVENT_TRACE_PROPERTIES) + ulSizeName;
|
||||
//memcpy(reinterpret_cast<char*>(properties.get()) + properties->LogFileNameOffset, log_file.c_str(), ulSizeLogFile);
|
||||
|
||||
if ((ulResult = m_session.create(name.c_str(), properties.get())) == ERROR_SUCCESS) {
|
||||
if ((ulResult = m_session.create(session_name.c_str(), properties.get())) == ERROR_SUCCESS) {
|
||||
break;
|
||||
} else if (ulResult == ERROR_ACCESS_DENIED) {
|
||||
wxLogError(_("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."));
|
||||
return;
|
||||
} else if (ulResult == ERROR_ALREADY_EXISTS) {
|
||||
wxLogDebug(_("The %s event session already exists."), name);
|
||||
wxLogDebug(_("The %s event session already exists."), session_name);
|
||||
// Do not despair... Retry with a new session name and ID.
|
||||
continue;
|
||||
} else {
|
||||
@ -607,33 +594,34 @@ wxString wxETWListCtrl::OnGetItemText(const winstd::event_rec &rec, long column)
|
||||
// Get event meta-info.
|
||||
unique_ptr<TRACE_EVENT_INFO> info;
|
||||
ULONG ulResult;
|
||||
if ((ulResult = TdhGetEventInformation((PEVENT_RECORD)&rec, 0, NULL, info)) == ERROR_SUCCESS) {
|
||||
if (info->DecodingSource != DecodingSourceWPP) {
|
||||
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.
|
||||
if ((ulResult = TdhGetEventInformation((PEVENT_RECORD)&rec, 0, NULL, info)) != ERROR_SUCCESS)
|
||||
return tstring_printf(_T("(Error getting event information (error %u))"), ulResult).c_str();
|
||||
|
||||
BYTE nPtrSize = (rec.EventHeader.Flags & EVENT_HEADER_FLAG_32_BIT_HEADER) ? 4 : 8;
|
||||
vector<tstring> props;
|
||||
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->DecodingSource != DecodingSourceWPP) {
|
||||
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.
|
||||
|
||||
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();
|
||||
}
|
||||
BYTE nPtrSize = (rec.EventHeader.Flags & EVENT_HEADER_FLAG_32_BIT_HEADER) ? 4 : 8;
|
||||
vector<tstring> props;
|
||||
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))
|
||||
{
|
||||
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 {
|
||||
for (ULONG i = 0; ; i++) {
|
||||
if (i >= pMapInfo->EntryCount)
|
||||
return tstring_printf(_T("%lu"), 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 (
|
||||
@ -817,7 +805,7 @@ static tstring DataToString(_In_ USHORT InType, _In_ USHORT OutType, _In_count_(
|
||||
case TDH_INTYPE_UNICODESTRING:
|
||||
case TDH_INTYPE_NONNULLTERMINATEDSTRING:
|
||||
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_NONNULLTERMINATEDANSISTRING:
|
||||
@ -918,6 +906,7 @@ static tstring DataToString(_In_ USHORT InType, _In_ USHORT OutType, _In_count_(
|
||||
case TDH_INTYPE_BINARY:
|
||||
switch (OutType) {
|
||||
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")),
|
||||
#ifdef _UNICODE
|
||||
"RtlIpv6AddressToStringW"
|
||||
@ -945,8 +934,12 @@ static tstring DataToString(_In_ USHORT InType, _In_ USHORT OutType, _In_count_(
|
||||
case TDH_INTYPE_GUID: {
|
||||
assert(nDataSize >= sizeof(GUID));
|
||||
WCHAR szGuid[39];
|
||||
StringFromGUID2(*(GUID*)pData, szGuid, _countof(szGuid));
|
||||
return tstring_printf(_T("%ls"), szGuid);
|
||||
if (StringFromGUID2(*(GUID*)pData, szGuid, _countof(szGuid)))
|
||||
return tstring_printf(_T("%ls"), szGuid);
|
||||
else {
|
||||
assert(0);
|
||||
return _T("(GUID)");
|
||||
}
|
||||
}
|
||||
|
||||
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.
|
||||
// Doubling the pointer size handles both cases.
|
||||
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: {
|
||||
assert(nDataSize >= sizeof(SID));
|
||||
@ -1027,7 +1020,7 @@ static ULONG GetArraySize(PEVENT_RECORD pEvent, PTRACE_EVENT_INFO pInfo, ULONG i
|
||||
ULONG ulResult;
|
||||
|
||||
// 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;
|
||||
if ((ulResult = TdhGetProperty(pEvent, 0, NULL, 1, &data_desc, count)) != ERROR_SUCCESS)
|
||||
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.
|
||||
ULONG ulArraySize = 0;
|
||||
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;
|
||||
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;
|
||||
out += _T('(');
|
||||
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 += _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
|
||||
// descriptor defines the member of the structure whose data you want to retrieve.
|
||||
PROPERTY_DATA_DESCRIPTOR data_desc[2] = {
|
||||
{ (ULONGLONG)pStructureName , ulStructIndex },
|
||||
{ (ULONGLONG)(reinterpret_cast<LPBYTE>(pInfo) + pInfo->EventPropertyInfoArray[ulPropIndex].NameOffset), k }
|
||||
{ (ULONGLONG)pStructureName , ulStructIndex },
|
||||
{ (ULONGLONG)pInfo + pInfo->EventPropertyInfoArray[ulPropIndex].NameOffset, k }
|
||||
};
|
||||
ulResult = TdhGetProperty(pEvent, 0, NULL, _countof(data_desc), data_desc, data);
|
||||
} 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);
|
||||
}
|
||||
if (ulResult == ERROR_EVT_INVALID_EVENT_DATA) {
|
||||
|
@ -1,21 +1,7 @@
|
||||
/*
|
||||
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/>.
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2022 Amebis
|
||||
Copyright © 2016 GÉANT
|
||||
*/
|
||||
|
||||
#include <wx/event.h>
|
||||
@ -45,6 +31,7 @@ class wxPersistentETWListCtrl;
|
||||
#include <wx/persist/window.h>
|
||||
#include <wx/thread.h>
|
||||
|
||||
#include <stdex/vector_queue.hpp>
|
||||
#include <WinStd/ETW.h>
|
||||
|
||||
#include <memory>
|
||||
@ -150,7 +137,7 @@ protected:
|
||||
|
||||
private:
|
||||
/// \cond internal
|
||||
static VOID WINAPI EventRecordCallback(PEVENT_RECORD pEvent);
|
||||
static VOID WINAPI EventRecordCallback(_In_ PEVENT_RECORD pEvent);
|
||||
/// \endcond
|
||||
|
||||
protected:
|
||||
@ -168,7 +155,7 @@ protected:
|
||||
///
|
||||
/// Functor for GUID comparison
|
||||
///
|
||||
struct less_guid : public std::binary_function<GUID, GUID, bool>
|
||||
struct less_guid
|
||||
{
|
||||
///
|
||||
/// Compares two GUIDs
|
||||
@ -321,8 +308,8 @@ protected:
|
||||
guidset m_sources; ///< Set of enabled sources
|
||||
|
||||
wxListItemAttr m_item_attr[2][4]; ///< Current item attributes
|
||||
winstd::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<winstd::event_rec> m_rec_db; ///< Event record database
|
||||
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)
|
||||
};
|
||||
|
@ -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,6 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<?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>
|
||||
@ -9,6 +13,10 @@
|
||||
<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>
|
||||
@ -20,68 +28,42 @@
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{E0D0725B-B2FC-4225-9481-CA9B1B6306F2}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>EventMonitor</RootNamespace>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<PropertyGroup Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Label="Configuration" Condition="'$(Configuration)'=='Debug'">
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PropertyGroup Label="Configuration" Condition="'$(Configuration)'=='Release'">
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PropertyGroup Label="Configuration" Condition="'$(Platform)'=='ARM64'">
|
||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<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="..\include\Win32.props" />
|
||||
<Import Project="..\include\Debug.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\x64.props" />
|
||||
<Import Project="..\include\Debug.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\Win32.props" />
|
||||
<Import Project="..\include\Release.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\x64.props" />
|
||||
<Import Project="..\include\Release.props" />
|
||||
<Import Project="EventMonitor.props" />
|
||||
<Import Project="..\include\$(Platform).props" />
|
||||
<Import Project="..\include\$(Configuration).props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
|
||||
<PropertyGroup>
|
||||
<OutDir>..\output\$(Platform).$(Configuration)\</OutDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>..\lib\Events\build\temp\Events.$(Platform).$(Configuration).$(PlatformToolset);..\lib\WinStd\include;..\lib\stdex\include;..\lib\wxExtend\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="EventMonitor.rc" />
|
||||
</ItemGroup>
|
||||
@ -90,7 +72,7 @@
|
||||
<ClInclude Include="ETWLog.h" />
|
||||
<ClInclude Include="Frame.h" />
|
||||
<ClInclude Include="LogPanel.h" />
|
||||
<ClInclude Include="StdAfx.h" />
|
||||
<ClInclude Include="PCH.h" />
|
||||
<ClInclude Include="res\wxEventMonitor_UI.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
@ -98,11 +80,8 @@
|
||||
<ClCompile Include="ETWLog.cpp" />
|
||||
<ClCompile Include="Frame.cpp" />
|
||||
<ClCompile Include="LogPanel.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)'=='Release|x64'">Create</PrecompiledHeader>
|
||||
<ClCompile Include="PCH.cpp">
|
||||
<PrecompiledHeader>Create</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
<ClCompile Include="res\wxEventMonitor_UI.cpp" />
|
||||
</ItemGroup>
|
||||
@ -110,9 +89,6 @@
|
||||
<ProjectReference Include="..\lib\Events\build\Events.vcxproj">
|
||||
<Project>{d63f24bd-92a0-4d6b-8b69-ed947e4d2b1b}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\lib\WinStd\build\WinStd.vcxproj">
|
||||
<Project>{47399d91-7eb9-41de-b521-514ba5db0c43}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\lib\wxExtend\build\wxExtendLib.vcxproj">
|
||||
<Project>{d3e29951-d9f5-486d-a167-20ae8e90b1fa}</Project>
|
||||
</ProjectReference>
|
||||
@ -130,6 +106,7 @@
|
||||
<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" />
|
||||
@ -147,6 +124,7 @@
|
||||
<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" />
|
||||
|
@ -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">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
@ -24,7 +24,7 @@
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="StdAfx.h">
|
||||
<ClInclude Include="PCH.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="App.h">
|
||||
@ -44,7 +44,7 @@
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="StdAfx.cpp">
|
||||
<ClCompile Include="PCH.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="App.cpp">
|
||||
@ -75,6 +75,9 @@
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<POCompile Include="locale\ro_RO.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="locale\sl_SI.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
@ -162,5 +165,8 @@
|
||||
<POCompile Include="locale\ko_KR.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="locale\et_EE.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -1,24 +1,10 @@
|
||||
/*
|
||||
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/>.
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2022 Amebis
|
||||
Copyright © 2016 GÉANT
|
||||
*/
|
||||
|
||||
#include "StdAfx.h"
|
||||
#include "PCH.h"
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@ -26,10 +12,10 @@
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
wxEventMonitorFrame::wxEventMonitorFrame(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style, const wxString& name) :
|
||||
wxFrame(parent, id, title, pos, size, style, name)
|
||||
wxEventMonitorFrame::wxEventMonitorFrame(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, long style, const wxString& name) :
|
||||
wxFrame(parent, id, title, pos, parent->FromDIP(wxSize(600,400)), style, name)
|
||||
{
|
||||
this->SetSizeHints(wxSize(150,150), wxDefaultSize);
|
||||
this->SetSizeHints(FromDIP(wxSize(150,150)), wxDefaultSize);
|
||||
m_mgr.SetManagedWindow(this);
|
||||
m_mgr.SetFlags(wxAUI_MGR_DEFAULT);
|
||||
|
||||
@ -47,14 +33,9 @@ wxEventMonitorFrame::wxEventMonitorFrame(wxWindow* parent, wxWindowID id, const
|
||||
wxString prod_status_bar;
|
||||
prod_status_bar.Printf(_("Toggles display of %s records"), wxT(PRODUCT_NAME_STR));
|
||||
|
||||
winstd::library lib_comres;
|
||||
lib_comres.load(_T("comres.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);
|
||||
winstd::library lib_comres(LoadLibraryEx(_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));
|
||||
|
||||
wxSize size_menu(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON));
|
||||
wxSize size_tool(size_menu);
|
||||
|
@ -1,27 +1,13 @@
|
||||
/*
|
||||
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/>.
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2022 Amebis
|
||||
Copyright © 2016 GÉANT
|
||||
*/
|
||||
|
||||
class wxEventMonitorFrame;
|
||||
class wxPersistentEventMonitorFrame;
|
||||
|
||||
#pragma once;
|
||||
#pragma once
|
||||
|
||||
#include "LogPanel.h"
|
||||
|
||||
@ -34,6 +20,9 @@ class wxPersistentEventMonitorFrame;
|
||||
|
||||
#include <WinStd/Win.h>
|
||||
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable: 26444)
|
||||
|
||||
|
||||
/// \addtogroup EventMonitor
|
||||
/// @{
|
||||
@ -72,7 +61,7 @@ public:
|
||||
/// \param[in] style The window style. See `wxFrame` class description.
|
||||
/// \param[in] name The name of the window. This parameter is used to associate a name with the item, allowing the application user to set Motif resource values for individual windows.
|
||||
///
|
||||
wxEventMonitorFrame(wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Event Monitor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize(600,400), long style = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL, const wxString& name = wxT("EventMonitor"));
|
||||
wxEventMonitorFrame(wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Event Monitor"), const wxPoint& pos = wxDefaultPosition, long style = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL, const wxString& name = wxT("EventMonitor"));
|
||||
|
||||
///
|
||||
/// Destructor
|
||||
@ -173,3 +162,5 @@ inline wxPersistentObject *wxCreatePersistentObject(wxEventMonitorFrame *wnd)
|
||||
}
|
||||
|
||||
/// @}
|
||||
|
||||
#pragma warning(pop)
|
||||
|
@ -1,24 +1,10 @@
|
||||
/*
|
||||
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/>.
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2022 Amebis
|
||||
Copyright © 2016 GÉANT
|
||||
*/
|
||||
|
||||
#include "StdAfx.h"
|
||||
#include "PCH.h"
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
@ -1,21 +1,7 @@
|
||||
/*
|
||||
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/>.
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2022 Amebis
|
||||
Copyright © 2016 GÉANT
|
||||
*/
|
||||
|
||||
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>
|
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