first commit
81
.gitignore
vendored
Normal file
@@ -0,0 +1,81 @@
|
||||
# --------------------------------------------------------------------------------------------------
|
||||
# Core Visual Studio / .NET build outputs
|
||||
# --------------------------------------------------------------------------------------------------
|
||||
bin/
|
||||
obj/
|
||||
[Bb]uild/
|
||||
[Dd]ebug*/
|
||||
[Rr]elease*/
|
||||
x64/
|
||||
x86/
|
||||
[Aa][Rr][Mm]/
|
||||
[Aa][Rr][Mm]64/
|
||||
_ReSharper.*/
|
||||
*.user
|
||||
*.userosscache
|
||||
*.suo
|
||||
*.cache
|
||||
*.pdb
|
||||
*.mpdb
|
||||
*.opendb
|
||||
*.VC.db
|
||||
*.vscode/
|
||||
|
||||
# --------------------------------------------------------------------------------------------------
|
||||
# Package artefacts (NuGet, npm, etc.)
|
||||
# --------------------------------------------------------------------------------------------------
|
||||
/packages/
|
||||
*.nupkg
|
||||
*.snupkg
|
||||
*.nuspec
|
||||
package-lock.json
|
||||
packages.config
|
||||
npm-debug.log*
|
||||
yarn-error.log
|
||||
|
||||
# --------------------------------------------------------------------------------------------------
|
||||
# TFS / TFVC specific files and folders
|
||||
# --------------------------------------------------------------------------------------------------
|
||||
$tf/
|
||||
*$tf/
|
||||
*.tf
|
||||
*.tfs
|
||||
.tfignore
|
||||
|
||||
# --------------------------------------------------------------------------------------------------
|
||||
# IDE tooling and workspace settings
|
||||
# --------------------------------------------------------------------------------------------------
|
||||
.vs/
|
||||
.vscode/
|
||||
*.swp
|
||||
*.sln.docstates
|
||||
*.VC.VC.opendb
|
||||
.idea/
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
# --------------------------------------------------------------------------------------------------
|
||||
# Test results and profiling data
|
||||
# --------------------------------------------------------------------------------------------------
|
||||
[Tt]est[Rr]esult*/
|
||||
[Bb]uild[Ll]og.*
|
||||
*.trx
|
||||
*.coverage
|
||||
*.coveragexml
|
||||
*.opencover.xml
|
||||
*.dotCover
|
||||
BenchmarkDotNet.Artifacts/
|
||||
|
||||
# --------------------------------------------------------------------------------------------------
|
||||
# Miscellaneous recommended ignores
|
||||
# --------------------------------------------------------------------------------------------------
|
||||
_UpgradeReport_Files/
|
||||
Backup*/
|
||||
UpgradeLog*.XML
|
||||
*.tmp
|
||||
*.temp
|
||||
*.log
|
||||
*.bak
|
||||
*.orig
|
||||
*.scc
|
||||
|
||||
189
C4IT_DataHistoryProvider.sln
Normal file
@@ -0,0 +1,189 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.5.33424.131
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "F4SD-Cockpit-Collector", "C4IT_DataHistoryProvider_Test\F4SD-Cockpit-Collector.csproj", "{5F839FF6-3EBC-438F-8775-7F6A25402E66}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "F4SD-Cockpit-Server", "C4IT_DataHistoryProvider_Base\F4SD-Cockpit-Server.csproj", "{49452FC2-05CE-4077-8B40-8ADF5ECA212E}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Common", "_Common", "{14C4E5AA-A188-439F-B91D-5788FD16C166}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
CommonAssemblyAttributes.cs = CommonAssemblyAttributes.cs
|
||||
CommonAssemblyInfo.cs = CommonAssemblyInfo.cs
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "F4SD-Cockpit-WebService", "F4SDwebService\F4SD-Cockpit-WebService.csproj", "{ABB7E086-1062-439F-BA05-04F9D287D550}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{5F839FF6-3EBC-438F-8775-7F6A25402E66} = {5F839FF6-3EBC-438F-8775-7F6A25402E66}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "F4SD-Cockpit-ConfigLoader", "F4SD-Cockpit-ConfigLoader\F4SD-Cockpit-ConfigLoader.csproj", "{BC84E4DD-8D84-481F-9F1E-685AFC15D1E8}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "F4SD-Cockpit-ServerCore", "F4SD-Cockpit-ServerCore\F4SD-Cockpit-ServerCore.csproj", "{BF34B6EE-7B3B-847D-20CD-5FF43F93CB6B}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Debug-Demo|Any CPU = Debug-Demo|Any CPU
|
||||
Debug-Demo|x64 = Debug-Demo|x64
|
||||
Debug-Demo|x86 = Debug-Demo|x86
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
Release-Demo|Any CPU = Release-Demo|Any CPU
|
||||
Release-Demo|x64 = Release-Demo|x64
|
||||
Release-Demo|x86 = Release-Demo|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{5F839FF6-3EBC-438F-8775-7F6A25402E66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{5F839FF6-3EBC-438F-8775-7F6A25402E66}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{5F839FF6-3EBC-438F-8775-7F6A25402E66}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{5F839FF6-3EBC-438F-8775-7F6A25402E66}.Debug|x64.Build.0 = Debug|x64
|
||||
{5F839FF6-3EBC-438F-8775-7F6A25402E66}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{5F839FF6-3EBC-438F-8775-7F6A25402E66}.Debug|x86.Build.0 = Debug|x86
|
||||
{5F839FF6-3EBC-438F-8775-7F6A25402E66}.Debug-Demo|Any CPU.ActiveCfg = Debug-Demo|Any CPU
|
||||
{5F839FF6-3EBC-438F-8775-7F6A25402E66}.Debug-Demo|Any CPU.Build.0 = Debug-Demo|Any CPU
|
||||
{5F839FF6-3EBC-438F-8775-7F6A25402E66}.Debug-Demo|x64.ActiveCfg = Debug-Demo|x64
|
||||
{5F839FF6-3EBC-438F-8775-7F6A25402E66}.Debug-Demo|x64.Build.0 = Debug-Demo|x64
|
||||
{5F839FF6-3EBC-438F-8775-7F6A25402E66}.Debug-Demo|x86.ActiveCfg = Debug-Demo|x86
|
||||
{5F839FF6-3EBC-438F-8775-7F6A25402E66}.Debug-Demo|x86.Build.0 = Debug-Demo|x86
|
||||
{5F839FF6-3EBC-438F-8775-7F6A25402E66}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{5F839FF6-3EBC-438F-8775-7F6A25402E66}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{5F839FF6-3EBC-438F-8775-7F6A25402E66}.Release|x64.ActiveCfg = Release|x64
|
||||
{5F839FF6-3EBC-438F-8775-7F6A25402E66}.Release|x64.Build.0 = Release|x64
|
||||
{5F839FF6-3EBC-438F-8775-7F6A25402E66}.Release|x86.ActiveCfg = Release|x86
|
||||
{5F839FF6-3EBC-438F-8775-7F6A25402E66}.Release|x86.Build.0 = Release|x86
|
||||
{5F839FF6-3EBC-438F-8775-7F6A25402E66}.Release-Demo|Any CPU.ActiveCfg = Release-Demo|Any CPU
|
||||
{5F839FF6-3EBC-438F-8775-7F6A25402E66}.Release-Demo|Any CPU.Build.0 = Release-Demo|Any CPU
|
||||
{5F839FF6-3EBC-438F-8775-7F6A25402E66}.Release-Demo|x64.ActiveCfg = Release-Demo|x64
|
||||
{5F839FF6-3EBC-438F-8775-7F6A25402E66}.Release-Demo|x64.Build.0 = Release-Demo|x64
|
||||
{5F839FF6-3EBC-438F-8775-7F6A25402E66}.Release-Demo|x86.ActiveCfg = Release-Demo|x86
|
||||
{5F839FF6-3EBC-438F-8775-7F6A25402E66}.Release-Demo|x86.Build.0 = Release-Demo|x86
|
||||
{49452FC2-05CE-4077-8B40-8ADF5ECA212E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{49452FC2-05CE-4077-8B40-8ADF5ECA212E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{49452FC2-05CE-4077-8B40-8ADF5ECA212E}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{49452FC2-05CE-4077-8B40-8ADF5ECA212E}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{49452FC2-05CE-4077-8B40-8ADF5ECA212E}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{49452FC2-05CE-4077-8B40-8ADF5ECA212E}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{49452FC2-05CE-4077-8B40-8ADF5ECA212E}.Debug-Demo|Any CPU.ActiveCfg = Debug-Demo|Any CPU
|
||||
{49452FC2-05CE-4077-8B40-8ADF5ECA212E}.Debug-Demo|Any CPU.Build.0 = Debug-Demo|Any CPU
|
||||
{49452FC2-05CE-4077-8B40-8ADF5ECA212E}.Debug-Demo|x64.ActiveCfg = Debug-Demo|Any CPU
|
||||
{49452FC2-05CE-4077-8B40-8ADF5ECA212E}.Debug-Demo|x64.Build.0 = Debug-Demo|Any CPU
|
||||
{49452FC2-05CE-4077-8B40-8ADF5ECA212E}.Debug-Demo|x86.ActiveCfg = Debug-Demo|Any CPU
|
||||
{49452FC2-05CE-4077-8B40-8ADF5ECA212E}.Debug-Demo|x86.Build.0 = Debug-Demo|Any CPU
|
||||
{49452FC2-05CE-4077-8B40-8ADF5ECA212E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{49452FC2-05CE-4077-8B40-8ADF5ECA212E}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{49452FC2-05CE-4077-8B40-8ADF5ECA212E}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{49452FC2-05CE-4077-8B40-8ADF5ECA212E}.Release|x64.Build.0 = Release|Any CPU
|
||||
{49452FC2-05CE-4077-8B40-8ADF5ECA212E}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{49452FC2-05CE-4077-8B40-8ADF5ECA212E}.Release|x86.Build.0 = Release|Any CPU
|
||||
{49452FC2-05CE-4077-8B40-8ADF5ECA212E}.Release-Demo|Any CPU.ActiveCfg = Release-Demo|Any CPU
|
||||
{49452FC2-05CE-4077-8B40-8ADF5ECA212E}.Release-Demo|Any CPU.Build.0 = Release-Demo|Any CPU
|
||||
{49452FC2-05CE-4077-8B40-8ADF5ECA212E}.Release-Demo|x64.ActiveCfg = Release-Demo|Any CPU
|
||||
{49452FC2-05CE-4077-8B40-8ADF5ECA212E}.Release-Demo|x64.Build.0 = Release-Demo|Any CPU
|
||||
{49452FC2-05CE-4077-8B40-8ADF5ECA212E}.Release-Demo|x86.ActiveCfg = Release-Demo|Any CPU
|
||||
{49452FC2-05CE-4077-8B40-8ADF5ECA212E}.Release-Demo|x86.Build.0 = Release-Demo|Any CPU
|
||||
{ABB7E086-1062-439F-BA05-04F9D287D550}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{ABB7E086-1062-439F-BA05-04F9D287D550}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{ABB7E086-1062-439F-BA05-04F9D287D550}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{ABB7E086-1062-439F-BA05-04F9D287D550}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{ABB7E086-1062-439F-BA05-04F9D287D550}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{ABB7E086-1062-439F-BA05-04F9D287D550}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{ABB7E086-1062-439F-BA05-04F9D287D550}.Debug-Demo|Any CPU.ActiveCfg = Debug-Demo|Any CPU
|
||||
{ABB7E086-1062-439F-BA05-04F9D287D550}.Debug-Demo|Any CPU.Build.0 = Debug-Demo|Any CPU
|
||||
{ABB7E086-1062-439F-BA05-04F9D287D550}.Debug-Demo|x64.ActiveCfg = Debug-Demo|Any CPU
|
||||
{ABB7E086-1062-439F-BA05-04F9D287D550}.Debug-Demo|x64.Build.0 = Debug-Demo|Any CPU
|
||||
{ABB7E086-1062-439F-BA05-04F9D287D550}.Debug-Demo|x86.ActiveCfg = Debug-Demo|Any CPU
|
||||
{ABB7E086-1062-439F-BA05-04F9D287D550}.Debug-Demo|x86.Build.0 = Debug-Demo|Any CPU
|
||||
{ABB7E086-1062-439F-BA05-04F9D287D550}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{ABB7E086-1062-439F-BA05-04F9D287D550}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{ABB7E086-1062-439F-BA05-04F9D287D550}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{ABB7E086-1062-439F-BA05-04F9D287D550}.Release|x64.Build.0 = Release|Any CPU
|
||||
{ABB7E086-1062-439F-BA05-04F9D287D550}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{ABB7E086-1062-439F-BA05-04F9D287D550}.Release|x86.Build.0 = Release|Any CPU
|
||||
{ABB7E086-1062-439F-BA05-04F9D287D550}.Release-Demo|Any CPU.ActiveCfg = Release-Demo|Any CPU
|
||||
{ABB7E086-1062-439F-BA05-04F9D287D550}.Release-Demo|Any CPU.Build.0 = Release-Demo|Any CPU
|
||||
{ABB7E086-1062-439F-BA05-04F9D287D550}.Release-Demo|x64.ActiveCfg = Release-Demo|Any CPU
|
||||
{ABB7E086-1062-439F-BA05-04F9D287D550}.Release-Demo|x64.Build.0 = Release-Demo|Any CPU
|
||||
{ABB7E086-1062-439F-BA05-04F9D287D550}.Release-Demo|x86.ActiveCfg = Release-Demo|Any CPU
|
||||
{ABB7E086-1062-439F-BA05-04F9D287D550}.Release-Demo|x86.Build.0 = Release-Demo|Any CPU
|
||||
{BC84E4DD-8D84-481F-9F1E-685AFC15D1E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BC84E4DD-8D84-481F-9F1E-685AFC15D1E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BC84E4DD-8D84-481F-9F1E-685AFC15D1E8}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{BC84E4DD-8D84-481F-9F1E-685AFC15D1E8}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{BC84E4DD-8D84-481F-9F1E-685AFC15D1E8}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{BC84E4DD-8D84-481F-9F1E-685AFC15D1E8}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{BC84E4DD-8D84-481F-9F1E-685AFC15D1E8}.Debug-Demo|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BC84E4DD-8D84-481F-9F1E-685AFC15D1E8}.Debug-Demo|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BC84E4DD-8D84-481F-9F1E-685AFC15D1E8}.Debug-Demo|x64.ActiveCfg = Debug|Any CPU
|
||||
{BC84E4DD-8D84-481F-9F1E-685AFC15D1E8}.Debug-Demo|x64.Build.0 = Debug|Any CPU
|
||||
{BC84E4DD-8D84-481F-9F1E-685AFC15D1E8}.Debug-Demo|x86.ActiveCfg = Debug|Any CPU
|
||||
{BC84E4DD-8D84-481F-9F1E-685AFC15D1E8}.Debug-Demo|x86.Build.0 = Debug|Any CPU
|
||||
{BC84E4DD-8D84-481F-9F1E-685AFC15D1E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{BC84E4DD-8D84-481F-9F1E-685AFC15D1E8}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{BC84E4DD-8D84-481F-9F1E-685AFC15D1E8}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{BC84E4DD-8D84-481F-9F1E-685AFC15D1E8}.Release|x64.Build.0 = Release|Any CPU
|
||||
{BC84E4DD-8D84-481F-9F1E-685AFC15D1E8}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{BC84E4DD-8D84-481F-9F1E-685AFC15D1E8}.Release|x86.Build.0 = Release|Any CPU
|
||||
{BC84E4DD-8D84-481F-9F1E-685AFC15D1E8}.Release-Demo|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{BC84E4DD-8D84-481F-9F1E-685AFC15D1E8}.Release-Demo|Any CPU.Build.0 = Release|Any CPU
|
||||
{BC84E4DD-8D84-481F-9F1E-685AFC15D1E8}.Release-Demo|x64.ActiveCfg = Release|Any CPU
|
||||
{BC84E4DD-8D84-481F-9F1E-685AFC15D1E8}.Release-Demo|x64.Build.0 = Release|Any CPU
|
||||
{BC84E4DD-8D84-481F-9F1E-685AFC15D1E8}.Release-Demo|x86.ActiveCfg = Release|Any CPU
|
||||
{BC84E4DD-8D84-481F-9F1E-685AFC15D1E8}.Release-Demo|x86.Build.0 = Release|Any CPU
|
||||
{BF34B6EE-7B3B-847D-20CD-5FF43F93CB6B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BF34B6EE-7B3B-847D-20CD-5FF43F93CB6B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BF34B6EE-7B3B-847D-20CD-5FF43F93CB6B}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{BF34B6EE-7B3B-847D-20CD-5FF43F93CB6B}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{BF34B6EE-7B3B-847D-20CD-5FF43F93CB6B}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{BF34B6EE-7B3B-847D-20CD-5FF43F93CB6B}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{BF34B6EE-7B3B-847D-20CD-5FF43F93CB6B}.Debug-Demo|Any CPU.ActiveCfg = Debug-Demo|Any CPU
|
||||
{BF34B6EE-7B3B-847D-20CD-5FF43F93CB6B}.Debug-Demo|Any CPU.Build.0 = Debug-Demo|Any CPU
|
||||
{BF34B6EE-7B3B-847D-20CD-5FF43F93CB6B}.Debug-Demo|x64.ActiveCfg = Debug-Demo|Any CPU
|
||||
{BF34B6EE-7B3B-847D-20CD-5FF43F93CB6B}.Debug-Demo|x64.Build.0 = Debug-Demo|Any CPU
|
||||
{BF34B6EE-7B3B-847D-20CD-5FF43F93CB6B}.Debug-Demo|x86.ActiveCfg = Debug-Demo|Any CPU
|
||||
{BF34B6EE-7B3B-847D-20CD-5FF43F93CB6B}.Debug-Demo|x86.Build.0 = Debug-Demo|Any CPU
|
||||
{BF34B6EE-7B3B-847D-20CD-5FF43F93CB6B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{BF34B6EE-7B3B-847D-20CD-5FF43F93CB6B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{BF34B6EE-7B3B-847D-20CD-5FF43F93CB6B}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{BF34B6EE-7B3B-847D-20CD-5FF43F93CB6B}.Release|x64.Build.0 = Release|Any CPU
|
||||
{BF34B6EE-7B3B-847D-20CD-5FF43F93CB6B}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{BF34B6EE-7B3B-847D-20CD-5FF43F93CB6B}.Release|x86.Build.0 = Release|Any CPU
|
||||
{BF34B6EE-7B3B-847D-20CD-5FF43F93CB6B}.Release-Demo|Any CPU.ActiveCfg = Release-Demo|Any CPU
|
||||
{BF34B6EE-7B3B-847D-20CD-5FF43F93CB6B}.Release-Demo|Any CPU.Build.0 = Release-Demo|Any CPU
|
||||
{BF34B6EE-7B3B-847D-20CD-5FF43F93CB6B}.Release-Demo|x64.ActiveCfg = Release-Demo|Any CPU
|
||||
{BF34B6EE-7B3B-847D-20CD-5FF43F93CB6B}.Release-Demo|x64.Build.0 = Release-Demo|Any CPU
|
||||
{BF34B6EE-7B3B-847D-20CD-5FF43F93CB6B}.Release-Demo|x86.ActiveCfg = Release-Demo|Any CPU
|
||||
{BF34B6EE-7B3B-847D-20CD-5FF43F93CB6B}.Release-Demo|x86.Build.0 = Release-Demo|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {85CDEBFC-EF58-4E0B-A503-95026F6AC2E1}
|
||||
EndGlobalSection
|
||||
GlobalSection(TeamFoundationVersionControl) = preSolution
|
||||
SccNumberOfProjects = 6
|
||||
SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C}
|
||||
SccTeamFoundationServer = https://consulting4it.visualstudio.com/
|
||||
SccProjectUniqueName0 = C4IT_DataHistoryProvider_Test\\F4SD-Cockpit-Collector.csproj
|
||||
SccProjectName0 = C4IT_DataHistoryProvider_Test
|
||||
SccLocalPath0 = C4IT_DataHistoryProvider_Test
|
||||
SccProjectUniqueName1 = F4SDwebService\\F4SD-Cockpit-WebService.csproj
|
||||
SccProjectName1 = F4SDwebService
|
||||
SccLocalPath1 = F4SDwebService
|
||||
SccProjectUniqueName2 = F4SD-Cockpit-ConfigLoader\\F4SD-Cockpit-ConfigLoader.csproj
|
||||
SccProjectName2 = F4SD-Cockpit-ConfigLoader
|
||||
SccLocalPath2 = F4SD-Cockpit-ConfigLoader
|
||||
SccLocalPath3 = .
|
||||
SccProjectUniqueName4 = C4IT_DataHistoryProvider_Base\\F4SD-Cockpit-Server.csproj
|
||||
SccProjectName4 = C4IT_DataHistoryProvider_Base
|
||||
SccLocalPath4 = C4IT_DataHistoryProvider_Base
|
||||
SccProjectUniqueName5 = F4SD-Cockpit-ServerCore\\F4SD-Cockpit-ServerCore.csproj
|
||||
SccProjectName5 = F4SD-Cockpit-ServerCore
|
||||
SccLocalPath5 = F4SD-Cockpit-ServerCore
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
BIN
C4IT_DataHistoryProvider_Base/C4IT_2016.ico
Normal file
|
After Width: | Height: | Size: 470 KiB |
356
C4IT_DataHistoryProvider_Base/F4SD-Cockpit-Server.csproj
Normal file
@@ -0,0 +1,356 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{49452FC2-05CE-4077-8B40-8ADF5ECA212E}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>C4IT_DataHistoryProvider_Base</RootNamespace>
|
||||
<AssemblyName>F4SD-Cockpit-Server</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<TargetFrameworkProfile />
|
||||
<SccProjectName>SAK</SccProjectName>
|
||||
<SccLocalPath>SAK</SccLocalPath>
|
||||
<SccAuxPath>SAK</SccAuxPath>
|
||||
<SccProvider>SAK</SccProvider>
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>TRACE;DEBUG;VITALSIGN_MONITORING</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<NoWarn>MSB3305</NoWarn>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<NoWarn>MSB3305</NoWarn>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ApplicationIcon>C4IT_2016.ico</ApplicationIcon>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release-Demo|AnyCPU'">
|
||||
<OutputPath>bin\Release-Demo\</OutputPath>
|
||||
<DefineConstants>TRACE;DEMOLICENSE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<NoWarn>MSB3305</NoWarn>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<LangVersion>7.3</LangVersion>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug-Demo|AnyCPU'">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>bin\Debug-Demo\</OutputPath>
|
||||
<DefineConstants>TRACE;DEBUG;DEMOLICENSE</DefineConstants>
|
||||
<NoWarn>MSB3305</NoWarn>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<LangVersion>7.3</LangVersion>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="MaterialIcons, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\MaterialIcons.1.0.3\lib\MaterialIcons.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=9.0.0.7, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.9.0.7\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Bcl.TimeProvider, Version=9.0.0.7, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Bcl.TimeProvider.9.0.7\lib\net462\Microsoft.Bcl.TimeProvider.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Extensions.DependencyInjection.Abstractions, Version=9.0.0.7, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Extensions.DependencyInjection.Abstractions.9.0.7\lib\net462\Microsoft.Extensions.DependencyInjection.Abstractions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Extensions.Logging.Abstractions, Version=9.0.0.7, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Extensions.Logging.Abstractions.9.0.7\lib\net462\Microsoft.Extensions.Logging.Abstractions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.IdentityModel.Abstractions, Version=8.13.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.IdentityModel.Abstractions.8.13.0\lib\net472\Microsoft.IdentityModel.Abstractions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.IdentityModel.JsonWebTokens, Version=8.13.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.IdentityModel.JsonWebTokens.8.13.0\lib\net472\Microsoft.IdentityModel.JsonWebTokens.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.IdentityModel.Logging, Version=8.13.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.IdentityModel.Logging.8.13.0\lib\net472\Microsoft.IdentityModel.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.IdentityModel.Tokens, Version=8.13.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.IdentityModel.Tokens.8.13.0\lib\net472\Microsoft.IdentityModel.Tokens.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Web.Administration, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>.\Microsoft.Web.Administration.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Buffers, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Buffers.4.6.1\lib\net462\System.Buffers.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Diagnostics.DiagnosticSource, Version=9.0.0.7, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.9.0.7\lib\net462\System.Diagnostics.DiagnosticSource.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.DirectoryServices" />
|
||||
<Reference Include="System.DirectoryServices.AccountManagement" />
|
||||
<Reference Include="System.DirectoryServices.Protocols" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.IdentityModel.Tokens.Jwt, Version=8.13.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IdentityModel.Tokens.Jwt.8.13.0\lib\net472\System.IdentityModel.Tokens.Jwt.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.Pipelines, Version=9.0.0.7, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.Pipelines.9.0.7\lib\net462\System.IO.Pipelines.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Memory, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Memory.4.6.3\lib\net462\System.Memory.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Numerics" />
|
||||
<Reference Include="System.Numerics.Vectors, Version=4.1.6.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Numerics.Vectors.4.6.1\lib\net462\System.Numerics.Vectors.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.1.2\lib\net462\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Text.Encodings.Web, Version=9.0.0.7, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Text.Encodings.Web.9.0.7\lib\net462\System.Text.Encodings.Web.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Text.Json, Version=9.0.0.7, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Text.Json.9.0.7\lib\net462\System.Text.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.4.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.6.3\lib\net462\System.Threading.Tasks.Extensions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="..\..\C4IT FASD\_Common\C4IT.F4SD.GlobalConfig.cs">
|
||||
<Link>Common\C4IT.F4SD.GlobalConfig.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\C4IT FASD\_Common\C4IT.F4SD.HealthCardConfig.cs">
|
||||
<Link>Common\C4IT.F4SD.HealthCardConfig.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\C4IT FASD\_Common\C4IT.F4SD.MenuItem.cs">
|
||||
<Link>Common\C4IT.F4SD.MenuItem.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\C4IT FASD\_Common\C4IT.FASD.Base.cs">
|
||||
<Link>Common\C4IT.FASD.Base.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\C4IT FASD\_Common\C4IT.FASD.Communication.Agent.cs">
|
||||
<Link>Common\C4IT.FASD.Communication.Agent.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\C4IT FASD\_Common\C4IT.FASD.ConfigBase.cs">
|
||||
<Link>Common\C4IT.FASD.ConfigBase.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\C4IT FASD\_Common\C4IT.FASD.CopyTemplatesConfig.cs">
|
||||
<Link>Common\C4IT.FASD.CopyTemplatesConfig.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\C4IT FASD\_Common\C4IT.FASD.IconConfig.cs">
|
||||
<Link>Common\C4IT.FASD.IconConfig.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\C4IT FASD\_Common\C4IT.FASD.MenuSectionConfig.cs">
|
||||
<Link>Common\C4IT.FASD.MenuSectionConfig.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\C4IT FASD\_Common\C4IT.FASD.QuickActionConfig.cs">
|
||||
<Link>Common\C4IT.FASD.QuickActionConfig.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\C4IT FASD\_Common\C4IT.FASD.Security.cs">
|
||||
<Link>Common\C4IT.FASD.Security.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\Common Code\Configuration\C4IT.Configuration.ConfigHelper.cs">
|
||||
<Link>Common\C4IT.Configuration.ConfigHelper.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\Common Code\FileImport\C4IT.FileImport.CsvFile.cs">
|
||||
<Link>Common\C4IT.FileImport.CsvFile.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\Common Code\Http\C4IT.HTTP.HttpApiBase.cs">
|
||||
<Link>Common\C4IT.HTTP.HttpApiBase.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\Common Code\Http\C4IT.HttpHelper.cs">
|
||||
<Link>Common\C4IT.HttpHelper.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\Common Code\Licensing\C4IT.Licensing.LicenseBase.cs">
|
||||
<Link>Common\C4IT.Licensing.LicenseBase.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\Common Code\Logging\C4IT.Logging.LogManager.cs">
|
||||
<Link>Common\C4IT.Logging.LogManager.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\Common Code\Logging\C4IT.Logging.LogNetwork.cs">
|
||||
<Link>Common\C4IT.Logging.LogNetwork.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\Common Code\Logging\C4IT.Logging.LogPerformance.cs">
|
||||
<Link>Common\C4IT.Logging.LogPerformance.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\Common Code\MsCloud\C4IT.MsGraph.Base.cs">
|
||||
<Link>Common\C4IT.MsGraph.Base.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\Common Code\MultiLanguage\C4IT.MultiLanguage.MultiLanguageSupport.cs">
|
||||
<Link>Common\C4IT.MultiLanguage.MultiLanguageSupport.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\Common Code\Security\C4IT.Security.Base32.cs">
|
||||
<Link>Common\C4IT.Security.Base32.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\Common Code\Security\C4IT.Security.Credential.cs">
|
||||
<Link>Common\C4IT.Security.Credential.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\Common Code\Security\C4IT.Security.SecurePassword.cs">
|
||||
<Link>Common\C4IT.Security.SecurePassword.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\Common Code\XML\C4IT.XML.ConfigParsing.cs">
|
||||
<Link>Common\C4IT.XML.ConfigParsing.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\Common Code\XML\C4IT.XML.Credentials.cs">
|
||||
<Link>Common\C4IT.XML.Credentials.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\Matrix42\M42CommonCode\M42WebClient\C4IT.Matrix42.WebClient.cs">
|
||||
<Link>Common\C4IT.Matrix42.WebClient.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\NexThink\NxCommonCode\NXQL\C4IT.Nexthink.NXQL.cs">
|
||||
<Link>Common\C4IT.Nexthink.NXQL.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\NexThink\NxCommonCode\NXQL\C4IT.Nexthink.NxqlOrchestration.cs">
|
||||
<Link>Common\C4IT.Nexthink.NxqlOrchestration.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\CommonAssemblyAttributes.cs">
|
||||
<Link>Common\CommonAssemblyAttributes.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\CommonAssemblyInfo.cs">
|
||||
<Link>Properties\CommonAssemblyInfo.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\F4SD-Cockpit-ServerCore\Common\C4IT.FASD.Communication.Citrix.cs">
|
||||
<Link>Common\C4IT.FASD.Communication.Citrix.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\F4SD-Cockpit-ServerCore\ConfigCache.cs">
|
||||
<Link>ConfigCache.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\F4SD-Cockpit-ServerCore\DataHistoryCollector.cs">
|
||||
<Link>DataHistoryCollector.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\F4SD-Cockpit-ServerCore\DataHistoryCollectorActiveDirectory.cs">
|
||||
<Link>DataHistoryCollectorActiveDirectory.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\F4SD-Cockpit-ServerCore\DataHistoryCollectorCitrix.cs">
|
||||
<Link>DataHistoryCollectorCitrix.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\F4SD-Cockpit-ServerCore\DataHistoryCollectorClientAgent.cs">
|
||||
<Link>DataHistoryCollectorClientAgent.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\F4SD-Cockpit-ServerCore\DataHistoryCollectorM42Wpm.cs">
|
||||
<Link>DataHistoryCollectorM42Wpm.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\F4SD-Cockpit-ServerCore\DataHistoryCollectorNxql.cs">
|
||||
<Link>DataHistoryCollectorNxql.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\F4SD-Cockpit-ServerCore\DataHistoryCollectorSearchTaskCache.cs">
|
||||
<Link>DataHistoryCollectorSearchTaskCache.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\F4SD-Cockpit-ServerCore\DataHistoryCollectorTokenCache.cs">
|
||||
<Link>DataHistoryCollectorTokenCache.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\F4SD-Cockpit-ServerCore\DataHistoryConfigActiveDirectory.cs">
|
||||
<Link>DataHistoryConfigActiveDirectory.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\F4SD-Cockpit-ServerCore\DataHistoryConfigCitrix.cs">
|
||||
<Link>DataHistoryConfigCitrix.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\F4SD-Cockpit-ServerCore\DataHistoryConfigClientAgent.cs">
|
||||
<Link>DataHistoryConfigClientAgent.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\F4SD-Cockpit-ServerCore\DataHistoryConfigClusters.cs">
|
||||
<Link>DataHistoryConfigClusters.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\F4SD-Cockpit-ServerCore\DataHistoryConfigDbConnection.cs">
|
||||
<Link>DataHistoryConfigDbConnection.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\F4SD-Cockpit-ServerCore\DataHistoryConfigGolabalParameters.cs">
|
||||
<Link>DataHistoryConfigGolabalParameters.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\F4SD-Cockpit-ServerCore\DataHistoryConfigInfrastructure.cs">
|
||||
<Link>DataHistoryConfigInfrastructure.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\F4SD-Cockpit-ServerCore\DataHistoryConfigM42Wpm.cs">
|
||||
<Link>DataHistoryConfigM42Wpm.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\F4SD-Cockpit-ServerCore\DataHistoryConfigNexthink.cs">
|
||||
<Link>DataHistoryConfigNexthink.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\F4SD-Cockpit-ServerCore\DataHistorySqlHelper.cs">
|
||||
<Link>DataHistorySqlHelper.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\F4SD-Cockpit-ServerCore\DataSources\ISearchResultRelationProvider.cs">
|
||||
<Link>DataSources\ISearchResultRelationProvider.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\F4SD-Cockpit-ServerCore\F4SDConfigGlobalParametersXml.cs">
|
||||
<Link>F4SDConfigGlobalParametersXml.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\F4SD-Cockpit-ServerCore\F4SD_License.cs">
|
||||
<Link>F4SD_License.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\F4SD-Cockpit-ServerCore\IisConfigHelper.cs">
|
||||
<Link>IisConfigHelper.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\F4SD-Cockpit-ServerCore\Services\IStagedRelationService.cs">
|
||||
<Link>Services\IStagedRelationService.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\F4SD-Cockpit-ServerCore\Services\StagedRelationService.cs">
|
||||
<Link>Services\StagedRelationService.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\F4SD-Cockpit-ServerCore\SuccessorCache.cs">
|
||||
<Link>SuccessorCache.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="app.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="C4IT_2016.ico" />
|
||||
<Content Include="Microsoft.Web.Administration.dll">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<COMReference Include="ActiveDs">
|
||||
<Guid>{97D25DB0-0363-11CF-ABC4-02608C9E7553}</Guid>
|
||||
<VersionMajor>1</VersionMajor>
|
||||
<VersionMinor>0</VersionMinor>
|
||||
<Lcid>0</Lcid>
|
||||
<WrapperTool>tlbimp</WrapperTool>
|
||||
<Isolated>False</Isolated>
|
||||
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||
</COMReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<Target Name="AfterBuild">
|
||||
<Message Text="Start to publish component" Importance="high" />
|
||||
<RemoveDir Directories="$(ProjectDir)Publish" ContinueOnError="true" />
|
||||
<Exec Command="md "$(ProjectDir)Publish"" ContinueOnError="true" WorkingDirectory="." />
|
||||
<Exec Command="xcopy.exe /Y "$(ProjectDir)$(OutputPath)$(AssemblyName).dll" "$(ProjectDir)Publish"" ContinueOnError="false" WorkingDirectory="." />
|
||||
</Target>
|
||||
<Import Project="..\packages\System.ValueTuple.4.6.1\build\net471\System.ValueTuple.targets" Condition="Exists('..\packages\System.ValueTuple.4.6.1\build\net471\System.ValueTuple.targets')" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\System.ValueTuple.4.6.1\build\net471\System.ValueTuple.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\System.ValueTuple.4.6.1\build\net471\System.ValueTuple.targets'))" />
|
||||
</Target>
|
||||
</Project>
|
||||
@@ -0,0 +1,10 @@
|
||||
""
|
||||
{
|
||||
"FILE_VERSION" = "9237"
|
||||
"ENLISTMENT_CHOICE" = "NEVER"
|
||||
"PROJECT_FILE_RELATIVE_PATH" = ""
|
||||
"NUMBER_OF_EXCLUDED_FILES" = "0"
|
||||
"ORIGINAL_PROJECT_FILE_PATH" = ""
|
||||
"NUMBER_OF_NESTED_PROJECTS" = "0"
|
||||
"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER"
|
||||
}
|
||||
BIN
C4IT_DataHistoryProvider_Base/Microsoft.Web.Administration.dll
Normal file
7
C4IT_DataHistoryProvider_Base/Properties/AssemblyInfo.cs
Normal file
@@ -0,0 +1,7 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
[assembly: AssemblyTitle("F4SD Cockpit Server base library")]
|
||||
[assembly: ComVisible(false)]
|
||||
[assembly: Guid("49452fc2-05ce-4077-8b40-8adf5eca212e")]
|
||||
BIN
C4IT_DataHistoryProvider_Base/Publish/F4SD-Cockpit-Server.dll
Normal file
55
C4IT_DataHistoryProvider_Base/app.config
Normal file
@@ -0,0 +1,55 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<runtime>
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.5.0" newVersion="4.0.5.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Text.Encodings.Web" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.2.4.0" newVersion="4.2.4.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.5.0" newVersion="4.0.5.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-6.0.3.0" newVersion="6.0.3.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.1.6.0" newVersion="4.1.6.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Microsoft.Bcl.TimeProvider" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Microsoft.Extensions.Logging.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
</configuration>
|
||||
58
C4IT_DataHistoryProvider_Test/App.config
Normal file
@@ -0,0 +1,58 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
|
||||
</startup>
|
||||
<runtime>
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.5.0" newVersion="4.0.5.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Text.Encodings.Web" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.2.4.0" newVersion="4.2.4.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.5.0" newVersion="4.0.5.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-6.0.3.0" newVersion="6.0.3.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.1.6.0" newVersion="4.1.6.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Microsoft.Bcl.TimeProvider" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Microsoft.Extensions.Logging.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
</configuration>
|
||||
@@ -0,0 +1,44 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<F4SD-CopyTemplate-Configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="F4SD-CopyTemplate-Configuration.xsd">
|
||||
<CopyTemplates Default="Ticket-Information">
|
||||
<CopyTemplate Name="Ticket-Information">
|
||||
<Name Lang="DE">Ticket-Information</Name>
|
||||
<Description Lang="EN">Transfers the relevant information for ticket creation to the clipboard.</Description>
|
||||
<Description Lang="DE">Überträgt die relevanten Informationen für eine Ticket Erstellung in den Zwischenspeicher.</Description>
|
||||
<Icon Name="misc_ticket" IconType="intern"/>
|
||||
<CopyContent Format="UNICODE">%DeviceName.Label% %DeviceName.Value%
|
||||
%UserFullName.Label% %UserFullName.Value%
|
||||
%UserAccount.Label% %UserAccount.Value%
|
||||
%DeviceModel.Label% %DeviceModel.Value%
|
||||
%OsInfo.Label% %OsInfo.Value%
|
||||
%IpAddress.Label% %IpAddress.Value%
|
||||
%LastBoot.Label% %LastBoot.Value%
|
||||
%LastSeen.Label% %LastSeen.Value%</CopyContent>
|
||||
<CopyContent Format="HTML"><table border="1" cellpadding="5,1,5,1"><tbody>
|
||||
<tr><td><em>%DeviceName.Label%</em></td><td style="color: #0000ff;">%DeviceName.Value%</td></tr>
|
||||
<tr><td><em>%UserFullName.Label%</em></td><td>%UserFullName.Value%</td></tr>
|
||||
<tr><td><em>%UserAccount.Label%</em></td><td>%UserAccount.Value%</td></tr>
|
||||
<tr><td><em>%OsInfo.Label%</em></td><td>%OsInfo.Value%</td></tr>
|
||||
<tr><td><em>%IpAddress.Label%</em></td><td>%IpAddress.Value%</td></tr>
|
||||
<tr><td><em>%LastBoot.Label%</em></td><td>%LastBoot.Value%</td></tr>
|
||||
<tr><td><em>%LastSeen.Label%</em></td><td>%LastSeen.Value%</td></tr>
|
||||
</tbody></table></CopyContent>
|
||||
</CopyTemplate>
|
||||
<CopyTemplate Name="Computer name">
|
||||
<Name Lang="DE">Computer Name</Name>
|
||||
<Section>DemoActions</Section>
|
||||
<Icon Name="misc_computer" IconType="intern"/>
|
||||
<CopyContent Format="UNICODE">%DeviceName.Value%</CopyContent>
|
||||
</CopyTemplate>
|
||||
<CopyTemplate Name="User name">
|
||||
<Name Lang="DE">Anwendername</Name>
|
||||
<Icon Name="misc_user" IconType="intern"/>
|
||||
<CopyContent Format="UNICODE">%UserFullName.Value%</CopyContent>
|
||||
</CopyTemplate>
|
||||
<CopyTemplate Name="User account">
|
||||
<Name Lang="DE">Anwender Account</Name>
|
||||
<Icon Name="misc_user" IconType="intern"/>
|
||||
<CopyContent Format="UNICODE">%UserAccount.Value%</CopyContent>
|
||||
</CopyTemplate>
|
||||
</CopyTemplates>
|
||||
</F4SD-CopyTemplate-Configuration>
|
||||
@@ -0,0 +1,118 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
|
||||
|
||||
<xs:simpleType name="CopyTemplateFormatTypeEnum">
|
||||
<xs:restriction base="xs:NCName">
|
||||
<xs:enumeration value="HTML"/>
|
||||
<xs:enumeration value="UNICODE"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="LanguageId">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[A-Z]{2}" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="IconTypes">
|
||||
<xs:restriction base="xs:NCName">
|
||||
<xs:enumeration value="material" />
|
||||
<xs:enumeration value="intern" />
|
||||
<xs:enumeration value="byImage" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:element name="F4SD-CopyTemplate-Configuration">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="CopyTemplates" minOccurs="1" maxOccurs="1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="CopyTemplates">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="CopyTemplate" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Default" type="xs:string" use="optional"/>
|
||||
</xs:complexType>
|
||||
<xs:key name ="CopyTemplateId">
|
||||
<xs:selector xpath ="./CopyTemplate"/>
|
||||
<xs:field xpath ="@Name"/>
|
||||
</xs:key>
|
||||
<xs:keyref name="CopyTemplateKeyRef" refer="CopyTemplateId">
|
||||
<xs:selector xpath="."/>
|
||||
<xs:field xpath="@Default"/>
|
||||
</xs:keyref>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="CopyTemplate">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="Name" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element ref="Section" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element ref="Description" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element ref="Icon" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element ref="CopyContent" minOccurs="1" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Name" type="xs:string" use="optional"/>
|
||||
<xs:attribute name="Section" type="xs:NCName" use="optional"/>
|
||||
<xs:attribute name="Description" type="xs:string" use="optional"/>
|
||||
<xs:attribute name="HiddenInTicketDialog" type="xs:boolean" use="optional" default="false"/>
|
||||
<!-- visibility controlling attributes -->
|
||||
<xs:attribute name="Hidden" type="xs:boolean" use="optional" default="false"/>
|
||||
<xs:attribute name="IsVisibleByParameter" type="xs:string" use="optional" />
|
||||
<xs:attribute name="RequiredRoles" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:list itemType="xs:NCName" />
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Name">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="Lang" type="LanguageId" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Section">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:NCName" />
|
||||
</xs:simpleType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Icon">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="Name" type="xs:NCName" use="required" />
|
||||
<xs:attribute name="IconType" type="IconTypes" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Description">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="Lang" type="LanguageId" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="CopyContent">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="Format" type="CopyTemplateFormatTypeEnum" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,430 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
|
||||
|
||||
<xs:simpleType name="InformationClassEnum">
|
||||
<xs:restriction base="xs:NCName">
|
||||
<xs:enumeration value="User"/>
|
||||
<xs:enumeration value="Computer"/>
|
||||
<xs:enumeration value="Ticket"/>
|
||||
<xs:enumeration value="VirtualSession"/>
|
||||
<xs:enumeration value="MobileDevice"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="OriginEnum">
|
||||
<xs:restriction base="xs:NCName">
|
||||
<xs:enumeration value="Main"/>
|
||||
<xs:enumeration value="NexthinkNxql"/>
|
||||
<xs:enumeration value="ActiveDirectory"/>
|
||||
<xs:enumeration value="AzureAD"/>
|
||||
<xs:enumeration value="F4sdAgent"/>
|
||||
<xs:enumeration value="M42Wpm"/>
|
||||
<xs:enumeration value="Intune"/>
|
||||
<xs:enumeration value="Citrix"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="TableTypeEnum">
|
||||
<xs:restriction base="xs:NCName">
|
||||
<xs:enumeration value="Static"/>
|
||||
<xs:enumeration value="History"/>
|
||||
<xs:enumeration value="HistoryEvents"/>
|
||||
<xs:enumeration value="Events"/>
|
||||
<xs:enumeration value="Selection"/>
|
||||
<xs:enumeration value="StaticDetails"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="TableCachedEnum">
|
||||
<xs:restriction base="xs:NCName">
|
||||
<xs:enumeration value="Default"/>
|
||||
<xs:enumeration value="Yes"/>
|
||||
<xs:enumeration value="No"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="StaticSourceTypeEnum">
|
||||
<xs:restriction base="xs:NCName">
|
||||
<xs:enumeration value="Query"/>
|
||||
<xs:enumeration value="Static"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="TableColumnTypeEnum">
|
||||
<xs:restriction base="xs:NCName">
|
||||
<xs:enumeration value="string"/>
|
||||
<xs:enumeration value="guid"/>
|
||||
<xs:enumeration value="int"/>
|
||||
<xs:enumeration value="bigint"/>
|
||||
<xs:enumeration value="float"/>
|
||||
<xs:enumeration value="datetime"/>
|
||||
<xs:enumeration value="version"/>
|
||||
<xs:enumeration value="md5"/>
|
||||
<xs:enumeration value="sid"/>
|
||||
<xs:enumeration value="ipv4"/>
|
||||
<xs:enumeration value="ipv6"/>
|
||||
<xs:enumeration value="text"/>
|
||||
<xs:enumeration value="boolean"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="TableColumnCharCaseEnum">
|
||||
<xs:restriction base="xs:NCName">
|
||||
<xs:enumeration value="none"/>
|
||||
<xs:enumeration value="lower"/>
|
||||
<xs:enumeration value="upper"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="AggregationEnum">
|
||||
<xs:restriction base="xs:NCName">
|
||||
<xs:enumeration value="first"/>
|
||||
<xs:enumeration value="min"/>
|
||||
<xs:enumeration value="max"/>
|
||||
<xs:enumeration value="sum"/>
|
||||
<xs:enumeration value="average"/>
|
||||
<xs:enumeration value="count"/>
|
||||
<xs:enumeration value="valuecount"/>
|
||||
<xs:enumeration value="latestValue"/>
|
||||
<xs:enumeration value="latestTime"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="M42PickupSortEnum">
|
||||
<xs:restriction base="xs:NCName">
|
||||
<xs:enumeration value="byPosition"/>
|
||||
<xs:enumeration value="byName"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="guid">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="ColumnList">
|
||||
<xs:list itemType="xs:NCName"/>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:element name="F4SD-DataClusters-Configuration">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="InformationClasses" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element ref="DataCluster" minOccurs="1" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:key name="TableId">
|
||||
<xs:selector xpath="./DataCluster/Table"/>
|
||||
<xs:field xpath="@Name"/>
|
||||
</xs:key>
|
||||
|
||||
<xs:unique name="UniqueTables">
|
||||
<xs:selector xpath="./DataCluster/Table"/>
|
||||
<xs:field xpath="@Name"/>
|
||||
</xs:unique>
|
||||
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="InformationClasses">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="InformationClass" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="InformationClass">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="InformationClass-Column" minOccurs="1" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Name" type="xs:NCName" use="required"/>
|
||||
<xs:attribute name="Description" type="xs:string" use="optional"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:complexType name="TableColumnBaseType">
|
||||
<xs:choice>
|
||||
<xs:element ref="DataCategories" minOccurs="0" maxOccurs="1" />
|
||||
</xs:choice>
|
||||
<xs:attribute name="Name" type="xs:NCName" use="required"/>
|
||||
<xs:attribute name="Type" use="required" type="TableColumnTypeEnum"/>
|
||||
<xs:attribute name="Cardinal" type="xs:int" use="optional"/>
|
||||
<xs:attribute name="Default" type="xs:string" use="optional"/>
|
||||
<xs:attribute name="CharCase" type="TableColumnCharCaseEnum" use="optional"/>
|
||||
<xs:attribute name="Description" type="xs:string" use="optional"/>
|
||||
<xs:attribute name="DisplayName" type="xs:string" use="optional"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="DataCategories">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="Category" minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:string" />
|
||||
</xs:simpleType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="InformationClass-Column">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="TableColumnBaseType">
|
||||
<xs:attribute name="Index" type="xs:boolean" use="optional"/>
|
||||
<xs:attribute name="Search" type="xs:boolean" use="optional"/>
|
||||
<xs:attribute name="Reverse" type="xs:boolean" use="optional"/>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="DataCluster">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:choice maxOccurs="unbounded" minOccurs="1">
|
||||
<xs:element ref="Table"/>
|
||||
<xs:element ref="JoinedTable"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Name" type="xs:NCName" use="required"/>
|
||||
<xs:attribute name="Origin" use="required" type="OriginEnum"/>
|
||||
<xs:attribute name="InformationClass" type="InformationClassEnum" use="required"/>
|
||||
<xs:attribute name="Description" type="xs:string" use="optional"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:complexType name="TableBaseType">
|
||||
<xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element ref="Nexthink-NXQL-Template" maxOccurs="1" minOccurs="0"/>
|
||||
<xs:element ref="Matrix42-Pickup-Template" maxOccurs="1" minOccurs="0"/>
|
||||
<xs:element ref="Matrix42-DataQueryItems-Template" maxOccurs="1" minOccurs="0"/>
|
||||
</xs:choice>
|
||||
<xs:element ref="Table-Columns" maxOccurs="1" minOccurs="1"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Name" type="xs:NCName" use="required"/>
|
||||
<xs:attribute name="Description" type="xs:string" use="optional"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="Table">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="TableBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element ref="AdditionalTableName" maxOccurs="unbounded" minOccurs="0"/>
|
||||
<xs:element ref="AutoCreate-Historic-Table" maxOccurs="unbounded" minOccurs="0"/>
|
||||
<xs:element ref="Table-Reference" maxOccurs="unbounded" minOccurs="0"/>
|
||||
<xs:element ref="Table-Index" maxOccurs="unbounded" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="SourceName" type="xs:string" use="optional"/>
|
||||
<xs:attribute name="Type" type="TableTypeEnum" use="required"/>
|
||||
<xs:attribute name="Key" type="ColumnList" use="required"/>
|
||||
<xs:attribute name="Cached" type="TableCachedEnum" use="optional"/>
|
||||
<xs:attribute name="EventTimeCol" type="xs:NCName" use="optional"/>
|
||||
<xs:attribute name="LateDelivery" type="xs:boolean" use="optional"/>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:keyref name="TableJoinToRef" refer="TableId">
|
||||
<xs:selector xpath="."/>
|
||||
<xs:field xpath="@JoinTo"/>
|
||||
</xs:keyref>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="JoinedTable">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="SubTable" maxOccurs="unbounded" minOccurs="1"/>
|
||||
<xs:element ref="Table-Reference" maxOccurs="unbounded" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Name" type="xs:NCName" use="required"/>
|
||||
<xs:attribute name="Type" type="TableTypeEnum" use="required"/>
|
||||
<xs:attribute name="Cached" type="TableCachedEnum" use="optional"/>
|
||||
<xs:attribute name="Key" type="ColumnList" use="required"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="SubTable">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="TableBaseType">
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="AdditionalTableName">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="Name" type="xs:NCName" use="required"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="AutoCreate-Historic-Table">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="Name" type="xs:NCName" use="required"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Nexthink-NXQL-Template">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="Limit" type="xs:unsignedLong" use="optional"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Matrix42-Pickup-Template">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="PickupName" type="xs:string" use="required"/>
|
||||
<xs:attribute name="FilteredGroup" type="xs:positiveInteger" use="optional"/>
|
||||
<xs:attribute name="Sorting" type="M42PickupSortEnum" use="optional"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Matrix42-DataQueryItems-Template">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="EntityClassName" type="xs:NCName" use="required"/>
|
||||
<xs:attribute name="EntityTypeNames" type="ColumnList" use="required"/>
|
||||
<xs:attribute name="OrderBy" type="xs:string " use="optional"/>
|
||||
<xs:attribute name="WhereExpression" type="xs:string " use="optional"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Table-Columns">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:choice maxOccurs="unbounded" minOccurs="1">
|
||||
<xs:element ref="Table-Column"/>
|
||||
<xs:element ref="Table-Column-Computation"/>
|
||||
<xs:element ref="Table-Column-NxtCompute"/>
|
||||
<xs:element ref="Table-Column-NxtCategory"/>
|
||||
<xs:element ref="Table-Column-NxtScore"/>
|
||||
<xs:element ref="Table-Column-NxtAction"/>
|
||||
<xs:element ref="Table-Column-NxtCampaign"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:unique name="UniqueTableColumns">
|
||||
<xs:selector xpath="./Table-Column"/>
|
||||
<xs:field xpath="@Name"/>
|
||||
</xs:unique>
|
||||
</xs:element>
|
||||
|
||||
<xs:complexType name="TableColumnType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="TableColumnBaseType">
|
||||
<xs:attribute name="SourceType" use="optional" type="StaticSourceTypeEnum"/>
|
||||
<xs:attribute name="SourceName" type="xs:string" use="optional"/>
|
||||
<xs:attribute name="SourceTable" type="xs:string" use="optional"/>
|
||||
<xs:attribute name="SourceJsonField" type="xs:string" use="optional"/>
|
||||
<xs:attribute name="SourceJsonColumn" type="xs:nonNegativeInteger" use="optional"/>
|
||||
<xs:attribute name="Aggregation" type="AggregationEnum" use="optional"/>
|
||||
<xs:attribute name="FillEmptyEntries" type="xs:boolean" use="optional"/>
|
||||
<xs:attribute name="LateDelivery" type="xs:boolean" use="optional"/>
|
||||
<xs:attribute name="IsWritable" type="xs:boolean" use="optional"/>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="Table-Column" type="TableColumnType"/>
|
||||
|
||||
<xs:element name="Table-Column-NxtCompute" type="TableColumnType"/>
|
||||
|
||||
<xs:element name="Table-Column-NxtCategory" type="TableColumnType"/>
|
||||
|
||||
<xs:element name="Table-Column-NxtScore">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="TableColumnBaseType">
|
||||
<xs:attribute name="ScoreName" type="xs:string" use="required"/>
|
||||
<xs:attribute name="ValueName" type="xs:string" use="required"/>
|
||||
<xs:attribute name="ScoreID" type="guid" use="optional"/>
|
||||
<xs:attribute name="ValueID" type="guid" use="optional"/>
|
||||
<xs:attribute name="Payload" type="xs:boolean" use="optional"/>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Table-Column-NxtAction">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="TableColumnBaseType">
|
||||
<xs:attribute name="ActionName" type="xs:string" use="required"/>
|
||||
<xs:attribute name="ValueName" type="xs:string" use="required"/>
|
||||
<xs:attribute name="ActionID" type="guid" use="optional"/>
|
||||
<xs:attribute name="ValueID" type="guid" use="optional"/>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Table-Column-NxtCampaign">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="TableColumnBaseType">
|
||||
<xs:attribute name="CampaignName" type="xs:string" use="required"/>
|
||||
<xs:attribute name="ValueName" type="xs:string" use="required"/>
|
||||
<xs:attribute name="CampaignID" type="guid" use="optional"/>
|
||||
<xs:attribute name="ValueID" type="xs:int" use="optional"/>
|
||||
<xs:attribute name="AsText" type="xs:boolean" use="optional"/>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Table-Column-Computation">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="TableColumnBaseType">
|
||||
<xs:sequence>
|
||||
<xs:choice maxOccurs="1" minOccurs="1">
|
||||
<xs:element ref="Computation-LinearTransform"/>
|
||||
<xs:element ref="Computation-RegEx"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Computation-LinearTransform">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="Column" type="xs:NCName" use="required"/>
|
||||
<xs:attribute name="m" type="xs:float" use="required"/>
|
||||
<xs:attribute name="b" type="xs:float" use="required"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Computation-RegEx">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="Column" type="xs:NCName" use="required"/>
|
||||
<xs:attribute name="RegExFilter" type="xs:string" use="required"/>
|
||||
<xs:attribute name="Replacement" type="xs:string" use="optional"/>
|
||||
<xs:attribute name="AutoTrim" type="xs:boolean" use="optional"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Table-Index">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="Name" type="xs:NCName" use="required"/>
|
||||
<xs:attribute name="Columns" type="ColumnList" use="required"/>
|
||||
<xs:attribute name="Unique" type="xs:boolean" use="optional"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Table-Reference">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="ForeignTable" type="xs:NCName" use="required"/>
|
||||
<xs:attribute name="Columns" type="ColumnList" use="required"/>
|
||||
<xs:attribute name="ForeignIndex" type="xs:NCName" use="optional"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<F4SD-Global-Configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="F4SD-Global-Configuration.xsd">
|
||||
|
||||
<ShouldSkipSlimView Policy="Default" Value="true" />
|
||||
<SmallViewAlignment Policy="Default" Value="Right" />
|
||||
<FavouriteBarAlignment Policy="Default" Value="Right" />
|
||||
|
||||
<InformationClassSearchPriority Policy="Hidden">
|
||||
<InformationClass Type="User" />
|
||||
<InformationClass Type="Computer" />
|
||||
<InformationClass Type="VirtualSession" />
|
||||
<InformationClass Type="Ticket" />
|
||||
</InformationClassSearchPriority>
|
||||
|
||||
<TicketConfiguration>
|
||||
<DisableAutomaticTimeTracking Policy="Mandatory" Value="true" />
|
||||
<CompletitionPolicy Policy="Mandatory" Value="IfRequired" />
|
||||
<NotesMandatory Policy="Mandatory" Value="true" />
|
||||
<ShowOverview Policy="Mandatory" Value="true" />
|
||||
<OverviewPollingPersonal Policy="Mandatory" Value="10" />
|
||||
<OverviewPollingRole Policy="Mandatory" Value="5" />
|
||||
</TicketConfiguration>
|
||||
</F4SD-Global-Configuration>
|
||||
@@ -0,0 +1,156 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
|
||||
|
||||
<xs:simpleType name="InformationClassEnum">
|
||||
<xs:restriction base="xs:NCName">
|
||||
<xs:enumeration value="User"/>
|
||||
<xs:enumeration value="Computer"/>
|
||||
<xs:enumeration value="VirtualSession"/>
|
||||
<xs:enumeration value="Ticket"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="PolicyEnum">
|
||||
<xs:restriction base="xs:NCName">
|
||||
<xs:enumeration value="Default"/>
|
||||
<xs:enumeration value="Mandatory"/>
|
||||
<xs:enumeration value="Hidden"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="TicketCompletitionPolicyEnum">
|
||||
<xs:restriction base="xs:NCName">
|
||||
<xs:enumeration value="IfRequired"/>
|
||||
<xs:enumeration value="false"/>
|
||||
<xs:enumeration value="true"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="HorizontalAlignmentEnum">
|
||||
<xs:restriction base="xs:NCName">
|
||||
<xs:enumeration value="Default"/>
|
||||
<xs:enumeration value="Right"/>
|
||||
<xs:enumeration value="Center"/>
|
||||
<xs:enumeration value="Left"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:complexType name="StringNode">
|
||||
<xs:attribute name="Policy" type="PolicyEnum" use="required"/>
|
||||
<xs:attribute name="Value" type="xs:string" use="required"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="IntegerNode">
|
||||
<xs:attribute name="Policy" type="PolicyEnum" use="required"/>
|
||||
<xs:attribute name="Value" type="xs:integer" use="required"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="BoolNode">
|
||||
<xs:attribute name="Policy" type="PolicyEnum" use="required"/>
|
||||
<xs:attribute name="Value" type="xs:boolean" use="required"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="PolicyNode">
|
||||
<xs:attribute name="Policy" type="PolicyEnum" use="required"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="F4SD-Global-Configuration">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="ShouldSkipSlimView" minOccurs="0" maxOccurs="1">
|
||||
<xs:complexType><xs:complexContent><xs:extension base="BoolNode"></xs:extension></xs:complexContent></xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="SmallViewAlignment" minOccurs="0" maxOccurs="1">
|
||||
<xs:complexType> <xs:complexContent><xs:extension base="PolicyNode">
|
||||
<xs:attribute name="Value" type="HorizontalAlignmentEnum" use="required"/>
|
||||
</xs:extension></xs:complexContent></xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="FavouriteBarAlignment" minOccurs="0" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="PolicyNode">
|
||||
<xs:attribute name="Value" type="HorizontalAlignmentEnum" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element ref="InformationClassSearchPriority" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element ref="TicketConfiguration" minOccurs="0" maxOccurs="1"/>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="InformationClassSearchPriority">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="PolicyNode">
|
||||
<xs:sequence>
|
||||
<xs:element ref="InformationClass" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="InformationClass">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="Type" type="InformationClassEnum" use="required"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="TicketConfiguration">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="NotesMandatory" minOccurs="0" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BoolNode"></xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="DisableAutomaticTimeTracking" minOccurs="0" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BoolNode"></xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="CompletitionPolicy" minOccurs="0" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="PolicyNode">
|
||||
<xs:attribute name="Value" type="TicketCompletitionPolicyEnum" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="ShowOverview" minOccurs="0" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BoolNode"></xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="OverviewPollingPersonal" minOccurs="0" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="PolicyNode">
|
||||
<xs:attribute name="Value" type="xs:positiveInteger" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="OverviewPollingRole" minOccurs="0" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="PolicyNode">
|
||||
<xs:attribute name="Value" type="xs:positiveInteger" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<F4SD-Icon-Configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="F4SD-Icon-Configuration.xsd">
|
||||
<IconDefinitions>
|
||||
<IconDefinition-Image Name="TestImage" IconType="byImage">
|
||||
<IconImage SizeX="10" SizeY="10">iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKBAMAAAB/HNKOAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAGUExURf8AbgAAAJpakjMAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAaSURBVBjTY4ADARDBCCYFQCQjRAQLCQEMDAAQ+wCDR98HLQAAAABJRU5ErkJggg==</IconImage>
|
||||
<IconImage SizeX="20" SizeY="20">iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAANjgAADY4BAtAkWgAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xOdTWsmQAAAFwSURBVDhPY5CzydVStM+ZoGifNZMynDMBZBaDrEX8A0WHnP/UwCCzGEAMBfvsbbJWSVKUYJAZILMgBjpkr2WgEIDMGDgDgWqSFe2zTwAD/i7Qa3eA7AuKdllVksZpXFAlpBmo4JCVJ2+fZSBvl+MJZPsr2mXrAvVVgWioEtIMVLNPE1F0yL4GVDcNlDwU7HOuyNtlB0KlwYAkA0FA1SldGujdqQoOOfMU7fJMGUJDmaFSYECygQqOWfIgVynYZrrJ22U6QoXhgCQDFe0ym7DlDqg0GJBkoIJ91k2QOnQMlQYDVAPx5BQZi0JOsIH22V+AmnYDI+cckH4I0mdsnMYKU4ecU+6DGLgwMLlEggwERsYvIB8U00DDst+D5Z0y9ZDVAvF9wqWNbboZxMtgQyYB1W4AJpuLIANU7HNlEGqhpQ0xABaGQIM+QLwOdi1KGJIEwF4GGWaXvQgSjjnXKDYQZAA6hkqTDqhuIDEJGwIYGACByknB6/EnhgAAAABJRU5ErkJggg==</IconImage>
|
||||
<!--<IconImage SizeX="30" SizeY="30">iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeBAMAAADJHrORAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAGUExURQD//wAAALEGeLIAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABLSURBVCjPYyAPCAoKoHAZGBiRBMBsZD6cYEATJIEviMYXQFOOymcUROOia0dTj0VAgIADiHYw1GSEeeDAQ7YP6DpUB2O6lyzAwAAAsakB4ouF7nUAAAAASUVORK5CYII=</IconImage>-->
|
||||
<!--<IconImage SizeX="40" SizeY="40">iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAIAAAADnC86AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAL9SURBVFhH7ZdLaBNRFIb/mTxa+ohtfFRFxQbrq+haoaCgG0UXbqQ7V4IoqKCLghSX4kI3LgSh6kah6kJwKbhxValdKF0UFVubNpQ2zaOvZJ6eM7lJKprOnRmJiH6Em5szM/efc+65594op2z8EVTxXXf+HmHLgpZBdhimJiz+8CxcTGH0Kj5ewvxbYfGHN2Hbxvg9TD/Fwof6Ci9NYHoQtoFwDB2nhdEfHoQtE8kBFKb4oQ3HETso7P7wILz8Faln7G6kDdvOQY0Iuz9khS0DE/dZm56IH0HbIWEnbBMrUyjOcQbIIyVMI2aGMPWE3Y3GsfMiIq3VS4ufMNaP7JCwSCIlrM1j7Aa0WSghdJxBew8URVyyipxuqRfQM8Iiibsw5dTkQ8chG00JdF5BuFFcIrQ5pN/AXIKxKCySuAsXJpF8xJ6FmpG4jtY9wl5Cz0JL8ztZK8IiiYswTeG3ASx9BhTEe7DlLEd7NXoORo47ls7y8rgIU+IkH8PWEWnHrj5EYsJewcjCLPlqOq00awmbBr7cRmGa79p4AusOV3OqAq0iq8Ady+O+vpZwbhgzL2lINGxGVx/CUWFfjZ52gkx4FK55AinmMHQM+ffcbzmATSe5VCn0nipUmuaQUy5szL5GhnYLG103sbufU+HnqPySmsLjDzB6GXaR+0qYR3R65aY8OrtrcSdxDXtv8Z2SwjVD3bofzZ1QyMsGp6URQ+xxaVxyt/SpRFgEXJqaHhtF5N4hM8zpyhG2uJJQS5WZCmeFmVfIj/Br7biA7rsePA50yiSPR3qReg61EdvPo/sOVJoUOdbKalfMZeh57pAerfXfWUBcoMg7i1iJOvGnn9LawYQVx0mb884swHbSW5JAwqEm/hDkrpmvozBlu+qUM4qwpf2Q7a4ECzVRmlTylWqZl6UcVNhY4JZ2a9q+KuVMhqDCLft4DCpt648iXD6IyRBUmCor6akN7DHNt2TZIoL+P9ZySA1ykLf2Vo+eMgQV9k3grPbLf+G68a8JA98BgX8KuPKybbkAAAAASUVORK5CYII=</IconImage>-->
|
||||
</IconDefinition-Image>
|
||||
</IconDefinitions>
|
||||
</F4SD-Icon-Configuration>
|
||||
@@ -0,0 +1,73 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
|
||||
|
||||
<xs:simpleType name="LanguageId">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[A-Z]{2}" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="IconTypes">
|
||||
<xs:restriction base="xs:NCName">
|
||||
<xs:enumeration value="material" />
|
||||
<xs:enumeration value="intern" />
|
||||
<xs:enumeration value="byImage" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:complexType name="MultiLanguageEntry">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="Lang" type="LanguageId" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="F4SD-Icon-Configuration">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="IconDefinitions" minOccurs="1" maxOccurs="1" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="IconDefinitions">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="IconDefinition-Image" minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="IconDefinition-Image">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="IconImage" minOccurs="1" maxOccurs="unbounded" />
|
||||
<xs:element ref="Description" minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Name" type="xs:NCName" use="required" />
|
||||
<xs:attribute name="IconType" type="IconTypes" use="required" />
|
||||
<xs:attribute name="Description" type="IconTypes" use="optional" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Description">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="MultiLanguageEntry" />
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="IconImage">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="SizeX" type="xs:integer" />
|
||||
<xs:attribute name="SizeY" type="xs:integer" />
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,126 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<F4SD-Infrastructure-Configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="F4SD-Infrastructure-Configuration.xsd">
|
||||
<Credentials>
|
||||
<Credential Name="SQL" Domain="c4it" User="tusr_nxt_collector">vmmiabBaKKefRcRRwaKiJCLniIPEzOu+BGwMLrnlNq6jANT4P3Z0802c8XMxEQgxcITj9J3pb9uIGjZUM+nfM719dHbAmS3z6glAre0Wae+uIBTNbDpn3KVjkCJwbQsOk+yeRrGhWwuWAP7DCUYq9OyGd+DY7dYAF2qKFO7zaeo=</Credential>
|
||||
<Credential Name="SQLTest" Domain="" User="sa">WSof9/qG1DikRY7NLa1Bt5hYKQsm9YvNFXukg95J5OvCR/Z0c8U1bo+QvKLW+/K8L9wgVvVbyzJQiSYeWNktbdK5qMkcphw4mciJkLkzYyeRgx27Vr7KzBOlmK9JQ1Z0c40VebDzGOh6mB+s+STfOLp2Tseq5lcz9qf8oP6XlkM=</Credential>
|
||||
<!--qMfZiLQTbTdFmgusoJX4-->
|
||||
<Credential Name="NXT" Domain="" User="tusr_nxt_collector@c4it.intra">R0ICvoG+yjJFGXGgagNQbzAwcBacJr47wRHOIwYhBl/YGDmxpoRWrI1GZ9x1C7ofSqeE1UeZNHX/oqMo/04h+jfUrqk1QHo/6e43Lns1z7UVhWrzOlPSxYwCjv7e4+6wqTWTx6UNGR5jCeD/eHAXHW24dGu7mph9xhcB3VC1kRY=</Credential>
|
||||
<Credential Name="NXCLOUD" Domain="" User="sd002">ZLAAU+jFXU/+x9FVjx4EAZRnK/D+G/OpZGkn4ek56vhDUeoR5QnSAsNu/cMa1yM3Zxa3CgmSjUmpBy+X2gr1Vo8yAeLVhqI8k9hzev+/LhrinTZIqVZZ4CaA5TEiBuNAy2uB8WEkned6uh3hRyIVNavlfoO9sToZn8f+xn8NKrM=</Credential>
|
||||
<Credential Name="AGENTAPI" Domain="" User="management-client">gdZccNCwzFrAdA+qGOA9I9ChD8hJQq/4Xuc5iC2i2I+Rtp6KCRrlgqPU0Wn6zwQ8SKitRLUSeNCJcspzkpewfv0Lnb2VIDMhdDeA5zyxVss0dZqDrMgYRhZcT+odtFTX8GlWUTyqBSQpUh8YQYdggvFZkE5ZOTaFU6kqUoKAgcs=</Credential>
|
||||
<Credential Name="M42API-Demo" Domain="" User="F4SD API Access">a2btKvTS6UnTiD3vTaLX4JjQe3YB8iOpgqwDD3Imy9QzfIZwOBkKuI+jZDtea9VPpFsO6P7pVPmL5y3eZQpVe9oBlw74Ve0hMvX+RrNjAO5DINbBNG8JxZ4gPIMQsUnYVVkHH3pvoiJIJ8AlctQuMEQ2v2slnOvEhTMWiJF2vzQWPgY7vCu6hp92AJvalKIOmK6qT3u7gf45L06R16hpzxD73DbmYwEnMs1ZuF9e1NrLdXRBr+/m4/K8RneZf/hLnW70JJm1IfA/PEVYUEk5HG0fWZFTnsBI3xNXuxXg4OdiR/7Bcrmpj36ATEU6XfWnJBP5qZwhvNzIdMMcDLOnk52b56Szjr5wEOSJIvG93knmZJAFPDIqnRY9BLYtZb6rZ6sCpLMD7R97HKhUy0CFgNNY43CniAtIiARpnGFpdxPISSWeVFsqrckEDeya4hUpZQRUf7T53nTnOBFMuygDgWxfJnMxEl0tg6m5kfAhkguyFDRueA/XkSs0bXQ8xuERBZpKCWA7TJZnMbljK9G22VMYPFCJbB8hHkBjW49wsM8rF0MAS2KvweJdvFjclhqRNSH6sXHKTh4r870YYhYXNnrqobikmP81ZCoq6avKH10/1UPJJAQjBT4MwM488M7TfPv4q9l0ezi7v91fnl2MORRlZljoQ57ao6flIf/KCgQhxl20PtYPz4TcRU/onZ5OKRDXEgaWpkJZkt4ZZX2NgjIvEI8wTEATY3Eu2dBOKeWKD7jwhkPJtnRka8+miNSFanhwJ78WjIx1B/s9jMJ2njCMAzsabjVDMZPwedXigz67zcSl3NnCg4ycCukPnk/Vs2r90XjYKOCuvlU6CsTCeQLLX28Y2AaABY+7vQIEV3XPZVc4kimy6EEShfNZkkLNHQjoZqVXkFp8AKxWCZLzJOFyGFTAX0UqsN9O6soJ/rzAF68ByjYT2y9iggA8GDYUAHZxe0fX/b01+8D+I14c9qPctBaEPhJ2DjYOfJhKRglP1nkIX6U/wd0A19brME7fr50k/ndYpavzGOhVFHrcnxufn6CDJ9/8XeeQ3XdqHwCnYT4G0dUBDEQXcCGWJa0KVkefl4vW25A8Uz5aa4yQoOj7wsnJdLVoijClWEj4a7AWP1AaH9l+dQels1ek7nJ5M8BgjGK5QSSbSrgdNLVRTRZ8PxsSdSjs1tXpSZB6SfSIWW0l48HADpUdmJjr8RlARLvpeHJs+Sqw03TnAPZo+0NOrjrfFnH0UNCVcIaNYwunMhp76s77sUpmozOxL0s95hXNlGPRcJMF5kxTXzV5hbTFr0ZsG/33gmbup9Vo9OJza9EeSbQUZj26TWotabTFrrzU/OgboiHWUmXM9HSwrXatWsCjdOr602+Hve5eDcbYUMAWvXz77QfniJgj54dM4kdNRP3e4iWQRD/EW2crlacOPEyqCGYoHm+BlgtXg2IUUYxuqYJi3/RAn0TZzEKe9oDET2jc7RRRXUzglPVU6LPnw4qPbpu054GVDfddTvPthIPKBwyB21laqmFIDRCqkcmOuVuXBxhF5DLJh7dXl7Azo3X1R7sBhX3gFOynvbDYoGmxpxetR0rKxWP9toh/UPubuYYTtOeAuLGdhIFu9LdeV/LkRHeHlFgtaZjd/CmmHavRMiKs8rKlXCRQAJYIu6DzcDCjkDfOOhEKOoi9PVzCJsLahRmlsvty+bVrbgZwNJoBH9p50dx+5rw9diNKXJrY5zCl5YnacXDHQ7lY4VV8a0f7I3zGOffTYSbADOrQ+V35YQIkzQ8yBNTKHxkKUY+qR4YHkN5P3Wq/xhZkVwAO1UEMyjdZCyibAMnvNsGSZiZSvn1374ygn1xL/gKU7nGGh4xtBU3cCzHkxfWMSDmk3m9Gp7cdFd8/jr0TLaLT1roEO6/Btdwh17XSFU2xUQzYieMIESuZuO/NzEem0V8qtT7Jh3AkfXumzvhBysc2PG0/ydghgL8kO+42zU+bslPhk+hQ7w1UouGNhtMgMi31sjxizjoeS7z2v7qCmC8P9ho3Lsexxoefj/pJ3wgF</Credential>
|
||||
<!-- M42 API KEY: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1bmlxdWVfbmFtZSI6ImltYWdvdmVydW0uY29tXFx2dm9nZWwiLCJuYW1laWQiOiJpbWFnb3ZlcnVtLmNvbVxcdnZvZ2VsIiwiVXNlckZyYWdtZW50SWQiOiI3ZWRhYTljNy03YjMzLWU1MTEtODBmNi0wMDUwNTYyZjk1MTYiLCJpc3MiOiJodHRwczovL3N0cy5tYXRyaXg0Mi5jb20iLCJhdWQiOiJ1cm46bWF0cml4NDJBcGkiLCJleHAiOjIxNDc0ODM2MTIsIm5iZiI6MTY2NTU4Mzc3Mn0.MQntDtbSafCY42UDkyEHiSE8VLZX6B_EIkSg04wdrAc-->
|
||||
<Credential Name="M42API-Demo-Dieter" Domain="" User="F4SD API Access">QbduWLGx6U0/XFMzVkVF4UZGxLrCx3c/R+GpiRctqCbf1mLApqNxMrctKpdUjfSwW04UgCl+ERtERvkgr5gluxto+oY6AtmHhCdANU1ZpzAFObEhjxGA1rQGp4PRBcpLPVg3AyBw0mNv8GqrJSdt/+sDcQY7R405ZNMUaBGdkh6CxZNo8OFstpZ9Q4QlRljO9sh62uTMGTqPw+DCaJnFlcAvRMCas1oVJ4bUJ0ODiaBmjf7N9+aO1OnOFYK5XLnlyRvlBSNMPftjbQewA46efMe8kG1t50drtObXJLsQs/FM6BkmDzKlclG3crSPBWL6MH6QVhf/NDL/Spntxpu+o4a/cfR4BpIyZc/GnLnHDwCzCv7l5uLG+T8GXoFLTbjNTKpdSHFD3EZrOXs9BdFXHxCs2zHDtSZBhftzvDrzRUPyD0t9p6Q4FVT4KTv8QGPCFme+sYLy1I20n9QH4736Dvx0IZO6TBPZc7ryIjvChmWQojudhIz/eObraSsRI2DYfU5COLCESDKd4SwwyAHkwJmh1Qc1YMGBNv9mxOn6qbFk/HQ9me2VxVw1p+YwgFH7xcfWEpk3kyIBxGdDfAqzhWBirYjsFWDbSkRyloczdh8VI1A+51ABIBB9Bd1pMyDbXfZWi/UpIlLjRRJzdfwBJ0U/xlFS2BE5N7hmUOqFIMx+8ZSJoJ0NJLWcerVa6OA3P0IxZukyOxuW9GamX58jyNwdZVY5Mydit/8FS5d/v0JGdiK0EVdCj/snyflHeNukeOsy/lAfkjoX+lDX5/BN6cM+JJtWGoLPY6w5WdrNff/Y+8GzK3m5u2fz60Kfjbmh+X4jGA775xTEZoOsGHGU56WwdVixPQAJBQcQPyulf7I23mKQkOXBQiQi7405sBS0cEnuZdxpi6oBknDs5442P4GFHhNTL5zCRL34zUpSMxelETjKyqMuxsTs5+UFycEmLkgWw6Jxz9hc8uoWAaPkqlhMEJc9aae6z2b4EJr3guKkMOA5A1V8Y9x+rOQxTcCsFU6Sxk5PI4phlfU+yyhgcYtAI5bvNkAo02hBCYwZQdTsrBj/E4bqghwJs42QDYL3Y9etWFUgcDniKTsRN4ig9IWQcJL/VrpcAhWneC+Ih0etKX9YAFFdn1sXhLsamr0RSzP/g587XxdnTi8CYN7cijwNmzXCnNjJy5N55P1+dEKPSwoAcm2fh8oM8XPIV7CLpzt61Vb6CuT08jAWKYfq/gAHN/6KAxhZ7PcstYMkz5z4fieEfpto0yaz6GcAE5Y6SGOqz9P4fyCmxVj4yz4wwBi/QEyWCXeguQoIXgkWtaVm+iLuliMNV7BM1PkFNu/ugQqgqAU4yPd7Zr398aWi/Y77ESvtRylmanZB4yU2KmdTFUCYrFSOImyqe2hz4BcpQeQTCp95UNn/zQ3PdAFlkQM3mde0x0WoxNfQiA1jqOU7GOOzYngSvQNHh3VEno0X7wdzi9bVT2JkNvmGoipjRL6PabhzlphkosV+WuJSIk0xOZa2wGCGNPp92rD2f3YmLACTeYoyReb/C6NzVetroTgdVoULTVPf9nlM9P87tJZlLBQBAU5T4zbhjU4fCCdTSJnW/B2GntO5bioC3ngDCG95pgUjC0Wq8Yl7x+WjK5hBCBWYE8pTLF2pwlBE+xB8QZOM48gh/b23rGrhZMwxix62KgbSyIUvvPjrPwRc+2NMOP13UQe6RK28aomg1M6eqRIT04m4SUMVX4/vdUrqSmzX09FF/Eyw4PlRf5eazXswa6XL+cNiOL+hvnj0kpUgYO9tWRYJJ6UfXHQsVxwBsCjXjQUrvvDd5rNaKQRi68P96nMTNWLFK4nxuJVey1mBBJ2zpx+gCglwXyy+Q+egcQWmsnrus7EZ7VHhRUlg3j76MnMJSJR6SaBFRQQKjOWJxCA5sSVL8lCalojS8gReVqW44LzNAclVMBJtaCOnM9JIj9bq5av1DYxxrGrzNrKQMmSLFsCOlXhT42a89S+l7VzFMBH7YMypyczIEswUsTss4APTMa3fCv2CDZUY4W07ojMQINHqwCy5ip5X/9G19Y5/DY8mu+iu0wmE2VEWuwnRqYrtdAEYCXOpstWbVqkqPTL1O37FTBKvF+pMqiKv4l6tDl4vMoBPhhrByqa+nF92JnXecZoXKxlVz1ksiUH+7CR34EAmryG7nJGNATNvh9bc2oPcAIwdApflNFe8tEs=</Credential>
|
||||
<!-- M42 API KEY: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1bmlxdWVfbmFtZSI6ImltYWdvdmVydW0uY29tXFx3c21zZXJ2aWNlcyIsIm5hbWVpZCI6ImltYWdvdmVydW0uY29tXFx3c21zZXJ2aWNlcyIsIlVzZXJGcmFnbWVudElkIjoiYmZlY2IxOWUtY2MwOS1lNTExLWQzODAtMDA1MDU2MmY5NTE2IiwiaXNzIjoiaHR0cHM6Ly9zdHMubWF0cml4NDIuY29tIiwiYXVkIjoidXJuOm1hdHJpeDQyQXBpIiwiZXhwIjoyMTQ3NDgzNjA3LCJuYmYiOjE2ODMwMjI0MDd9.k4lcNXAHQfkRH28MVOZz6cONe794JoZW3wV9A0V7PAQ -->
|
||||
<Credential Name="AzureAccess" Domain="" User="a818cddc-4c80-4600-bd6d-2f25b65fb679">ZU68NkYtmNMVx9gQiACXzLKXrRT9PsxEtO5mYutTgPD5yX19EBPAy/lHY/7SD8Mqrhx4OWSsYKSg3Zc2E5PzVVm+9HGf68BnsUZqH0AMbh7F7R9cYumOTQ5g9d8KYyTXdpkHaqx+z/Oey/hE/Dbj0AT3p48/+DfpysgPWv8seh0CkewE9Sj7CPEitSxBdRi64L2W5BX6Mo/kkJKxolwY6qjSIFDES9IS5O0pXxVZ3P6N8jriMTuAobk3XSAg9m4l+JNvo7bt137s9dhNqqDVlpVNtcGLhiNlnOVmfCvps56LWu+yF0reqL6VxlSFmD418P2mvhQegVtR151J2QF6kA==</Credential>
|
||||
<Credential Name="AzureAccess_Dieter" Domain="" User="c1cf923b-f286-407b-ae4f-bf60c4c5a85a">BS5gl9Ch0SwtWg2DNwVaphKTtcIDH0KtLnDryUEb4MD+/9Wm8ox01MiB/PgnSQ1mj2RVOv+LPq8Ax7liwuou+BlJMyIM2Z0+V8dCif8zYS6Tnsk/fgv0yP0bvxk9GFOroW5amdQQTpMUEg3jIWwXqNRG0MHwKDwNS+PxqGjfcv9061Q2o1ZPDtkhaxpa+lpNzly6Vl4lyTpUI6aUaMaAETX/qrzB1TdxBBeJN5d7TLAUp5/qVX09Qsol8nC018KgtyI+q2ir1mqGLtmgzQaxpg4NBwStpjfSAHUezV80tGK+je5dVnYZrKuirSNY5l+f+PL5YdrGXxX0vAqAwgT2tw==</Credential>
|
||||
<Credential Name="CitrixAccess" Domain="" User="bd3b468a-8ea2-4e48-9c04-eece3ccda693">N/yOeyE/pc81TA36JWPWws+2tB3pIfteJZp0u/Ko9dKTUaOmJHuvL8qJ+C2cEth0XZC91V6rQQOyoC1bDfrgM7eRvGGn92T01YaVlMI1RPVy/r1OUOGRhCilE7jFoiuEYMxvXLCAOT02j0noNNZn2ko/ssG4scWIf0HHJr71kFE=</Credential>
|
||||
</Credentials>
|
||||
<DB-Connections>
|
||||
<SQL-Connection Name="DataHistoryDB" Credential="SQL" NativeAccount="false" Server="c4-sql03.c4it.intra" Database="C4-FASD-2.0-Dev" Timeout="60"/>
|
||||
<!--<SQL-Connection Name="F4SDAnalyticsDB" Credential="SQL" NativeAccount="false" Server="c4-sql03.c4it.intra" Database="C4-F4SD-Analytics" Timeout="60"/>-->
|
||||
<SQL-Connection Name="F4SDAnalyticsDB" Credential="SQLTest" NativeAccount="true" Server="localhost" Database="C4-F4SD-Analytics_Test2" Timeout="60"/>
|
||||
<!--<SQL-Connection Name="DataHistoryDB" Credential="SQL" NativeAccount="false" Server="localhost" Instance ="MSSQLSERVER17" Database="C4-FASD-2.0-Dev" Timeout="60"/>-->
|
||||
<!--<SQL-Connection Name="DataHistoryDB" Credential="SQL" NativeAccount="false" Server="localhost" Database="C4-FASD-2.0-Dev" Timeout="60"/>-->
|
||||
<SQL-Connection Name="ClientAgentDB" Credential="SQL" NativeAccount="false" Server="c4-sql03.c4it.intra" Database="c4it-fasd-prod-v2" Timeout="60"/>
|
||||
<!--<SQL-Connection Name="ClientAgentDB" Credential="SQL" NativeAccount="false" Server="localhost" Instance ="MSSQLSERVER17" Database="C4IT-F4SD-Agent" Timeout="60"/>-->
|
||||
</DB-Connections>
|
||||
<DataHistory-DB DB-Connection="DataHistoryDB" SearchForPhoneNumbers="true" SearchWithLike="true" DaysToCache="30">
|
||||
<Cleanup-Timeframe StartDay="Mon" StartTime="19:00" StopTime="05:00" Timezone="W. Europe Standard Time"/>
|
||||
<Cleanup-Timeframe StartDay="Tue" StartTime="19:00" StopTime="05:00" Timezone="W. Europe Standard Time"/>
|
||||
<Cleanup-Timeframe StartDay="Wed" StartTime="19:00" StopTime="05:00" Timezone="W. Europe Standard Time"/>
|
||||
<Cleanup-Timeframe StartDay="Thu" StartTime="19:00" StopTime="05:00" Timezone="W. Europe Standard Time"/>
|
||||
<Cleanup-Timeframe StartDay="Fri" StartTime="19:00" StopDay="Mon" StopTime="05:00" Timezone="W. Europe Standard Time"/>
|
||||
</DataHistory-DB>
|
||||
<F4SDAnalytics-DB EnableUserId="false" SessionTimeout = "60" CaseTimeout="2" SessionCheckInterval="20" CaseCheckInterval="1" DB-Connection="F4SDAnalyticsDB"/>
|
||||
<ClientAgent DB-Connection="ClientAgentDB" Server-Url="https://f4sd01.consulting4it.de/f4sdagent/server/" MaxDeviceAge="30" Organization="Consulting4IT" Api-Credential="AGENTAPI">
|
||||
<Scan-Timing ScanInterval="01:00" ScanOffset="20:05" Timezone="W. Europe Standard Time"/>
|
||||
<Local-Account-Assignment Domain="C4IT" RegExFilter="" AccountMask ="*" />
|
||||
<Local-Account-Assignment Domain="Training" RegExFilter="" AccountMask ="*" />
|
||||
</ClientAgent>
|
||||
<Active-Directory ScanPhoneNumbers ="true">
|
||||
<Scan-Timing ScanInterval="24:00" ScanOffset="00:10" Timezone="W. Europe Standard Time"/>
|
||||
<AD-Domains>
|
||||
<AD-Domain Name="C4IT" FQDN="c4it.intra" Credential="SQL">
|
||||
<AD-Server FQDN="c4-dc04.c4it.intra" UseSSL="true" Port="636"/>
|
||||
<AD-Server FQDN="c4-dc01.c4it.intra" UseSSL="true"/>
|
||||
</AD-Domain>
|
||||
<AD-Domain Name="Training" FQDN="training.local" Credential="SQL">
|
||||
<AD-Server FQDN="C4-SCHUL-DC01.Training.local" UseSSL="false"/>
|
||||
</AD-Domain>
|
||||
</AD-Domains>
|
||||
<AD-Scans>
|
||||
<AD-Scan Name="Employee" Type="User">
|
||||
<AD-Scan-Node AD-Domain="C4IT" Path="OU=Employees,OU=_Users" LDAP-Filter="" Filter-Property="distinguishedName" Wildcard-Filter="" RegEx-Filter="" />
|
||||
</AD-Scan>
|
||||
<AD-Scan Name="AdminUser" Type="User">
|
||||
<AD-Scan-Node AD-Domain="C4IT" Path="OU=C4IT-Admins,OU=_Users" LDAP-Filter="" RegEx-Filter=""/>
|
||||
</AD-Scan>
|
||||
<AD-Scan Name="C4itComputer" Type="Computer">
|
||||
<AD-Scan-Node AD-Domain="C4IT" Path="OU=Consulting4IT,OU=Clients,OU=_Computers" LDAP-Filter="" RegEx-Filter=""/>
|
||||
</AD-Scan>
|
||||
<AD-Scan Name="TelesalesComputer" Type="Computer">
|
||||
<AD-Scan-Node AD-Domain="C4IT" Path="OU=Telesales4U,OU=Clients,OU=_Computers" LDAP-Filter="" RegEx-Filter=""/>
|
||||
</AD-Scan>
|
||||
<AD-Scan Name="RemainingUser" Type="User">
|
||||
<AD-Scan-Node AD-Domain="C4IT" Path="" LDAP-Filter="" RegEx-Filter=""/>
|
||||
</AD-Scan>
|
||||
<AD-Scan Name="RemainingComputer" Type="Computer">
|
||||
<AD-Scan-Node AD-Domain="C4IT" Path="" LDAP-Filter="" RegEx-Filter=""/>
|
||||
</AD-Scan>
|
||||
<AD-Scan Name="TrainingUser" Type="User">
|
||||
<AD-Scan-Node AD-Domain="Training" Path="" LDAP-Filter="" Wildcard-Filter="" RegEx-Filter="" />
|
||||
</AD-Scan>
|
||||
<AD-Scan Name="TrainingComputer" Type="Computer">
|
||||
<AD-Scan-Node AD-Domain="Training" Path="" LDAP-Filter="" Wildcard-Filter="" RegEx-Filter="" />
|
||||
</AD-Scan>
|
||||
</AD-Scans>
|
||||
</Active-Directory>
|
||||
<Azure-AD>
|
||||
<Azure-Tenant Domain="c4it365.onmicrosoft.com" TenantID="8f773186-362b-4432-a3e9-d3ad4685f3f1" Credential="AzureAccess" ScanIntuneDevices = "true" WithMobileDevices="true"/>
|
||||
<!--<Azure-Tenant Domain="sd0024.onmicrosoft.com" TenantID="07362148-410e-4636-a9cb-795fba1a5452" Credential="AzureAccess_Dieter"/>-->
|
||||
</Azure-AD>
|
||||
<Matrix42-WPM Server="srvwsm001.imagoverum.com" Credential="M42API-Demo" ClosedTicketHistory="9999" DisplayName="M42 Demo server (imagoverum)" ApiTokenLifetime ="30 days" ActivityQueueFilter="ticketsAndListedQueues">
|
||||
<Matrix42-Ticket DisableAutomaticTimeTracking="1"
|
||||
ShowDocumentCaseDialog="ifRequired"/>
|
||||
<DisplayName Lang="DE">M42 Demo Server (Imagoverum)</DisplayName>
|
||||
<Queues>
|
||||
<Queue QueueName="HR" QueueID="2a7e8099-3d57-f011-1988-00155d320605" />
|
||||
<Queue QueueName="FM" QueueID="2a7a8099-3d47-f011-1988-00155d320505" />
|
||||
</Queues>
|
||||
</Matrix42-WPM>
|
||||
<!--<Matrix42-WPM Server="m42server.imagoverum.com" Credential="M42API-Demo-Dieter" ClosedTicketHistory="9999"/>-->
|
||||
<Nexthink>
|
||||
<Scan-Timing ScanInterval="24:00" ScanOffset="00:10" Timezone="W. Europe Standard Time"/>
|
||||
<!--
|
||||
<Nxt-Portal Name="NxtLocal" Address="c4-nexthink.c4it.intra" Credential="NXT" IsCloud="false">
|
||||
<Nxt-Engine Name="NEXThink" Address="10.33.1.65" Port="1671"/>
|
||||
</Nxt-Portal>
|
||||
-->
|
||||
<Nxt-Portal Name="NxtCloud" Address="c4it.demo.nexthink.cloud" Credential="NXCLOUD" IsCloud="true">
|
||||
<Nxt-Engine Name="engine-1" Address="c4it-engine-1.demo.nexthink.cloud" Port="443"/>
|
||||
</Nxt-Portal>
|
||||
</Nexthink>
|
||||
<Citrix>
|
||||
<Scan-Timing ScanInterval="24:00" ScanOffset="00:10" Timezone="W. Europe Standard Time"/>
|
||||
<Citrix-Tenant Domain="api.cloud.com" TenantID="7wxfk9afgnd7" InstanceID="07ac970e-8bde-454e-b14d-9c7f58cf8a8d" Credential="CitrixAccess"/>
|
||||
</Citrix>
|
||||
<Authorization>
|
||||
<Membership-Groups>
|
||||
<Membership-Groups-AD Domain="C4IT">
|
||||
<Membership-Group-AD Name="C4IT-F4SD-Users" Account="C4IT-F4SD-Users"/>
|
||||
<Membership-Group-AD Name="C4IT-F4SD-Admins" Account="C4IT-F4SD-Admins"/>
|
||||
</Membership-Groups-AD>
|
||||
<Membership-Groups-Matrix42>
|
||||
<Membership-Group-Matrix42 Name="M42_Incident_Management" RoleName="Incident Management" RoleID="2E9F1A61-17C4-42F3-9514-66B5C61E7E17"/>
|
||||
</Membership-Groups-Matrix42>
|
||||
</Membership-Groups>
|
||||
<Roles>
|
||||
<Role Name="Cockpit.User" Group="C4IT-F4SD-Users"/>
|
||||
<Role Name="Cockpit.Admin">
|
||||
<GroupRef Name="C4IT-F4SD-Admins"/>
|
||||
</Role>
|
||||
<Role Name="Cockpit.TicketAgent" Group="M42_Incident_Management"/>
|
||||
</Roles>
|
||||
</Authorization>
|
||||
</F4SD-Infrastructure-Configuration>
|
||||
|
||||
@@ -0,0 +1,708 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
|
||||
|
||||
<xs:simpleType name="BooleanTypeEnum">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="false"/>
|
||||
<xs:enumeration value="true"/>
|
||||
<xs:enumeration value="0"/>
|
||||
<xs:enumeration value="1"/>
|
||||
<xs:enumeration value="no"/>
|
||||
<xs:enumeration value="yes"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="AdScanTypeEnum">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="User"/>
|
||||
<xs:enumeration value="Computer"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="HourMinuteType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[0-9]{2}:[0-9]{2}"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="DayTypeEnum">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="Mon"/>
|
||||
<xs:enumeration value="Tue"/>
|
||||
<xs:enumeration value="Wed"/>
|
||||
<xs:enumeration value="Thu"/>
|
||||
<xs:enumeration value="Fri"/>
|
||||
<xs:enumeration value="Sat"/>
|
||||
<xs:enumeration value="Sun"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="guid">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="NameList">
|
||||
<xs:list itemType="xs:NCName"/>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="LdapFilterProperyEnum">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="commonName"/>
|
||||
<xs:enumeration value="distinguishedName"/>
|
||||
<xs:enumeration value="samAccountName"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="M42ApiTokenLifetime">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="30 days"/>
|
||||
<xs:enumeration value="90 days"/>
|
||||
<xs:enumeration value="180 days"/>
|
||||
<xs:enumeration value="1 year"/>
|
||||
<xs:enumeration value="never"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Matrix42-Ticket">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="30 days"/>
|
||||
<xs:enumeration value="90 days"/>
|
||||
<xs:enumeration value="180 days"/>
|
||||
<xs:enumeration value="1 year"/>
|
||||
<xs:enumeration value="never"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="TimezoneType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="Dateline Standard Time"/>
|
||||
<xs:enumeration value="UTC-11"/>
|
||||
<xs:enumeration value="Hawaiian Standard Time"/>
|
||||
<xs:enumeration value="Alaskan Standard Time"/>
|
||||
<xs:enumeration value="Pacific Standard Time (Mexico)"/>
|
||||
<xs:enumeration value="Pacific Standard Time"/>
|
||||
<xs:enumeration value="US Mountain Standard Time"/>
|
||||
<xs:enumeration value="Mountain Standard Time (Mexico)"/>
|
||||
<xs:enumeration value="Mountain Standard Time"/>
|
||||
<xs:enumeration value="Central Standard Time"/>
|
||||
<xs:enumeration value="Central Standard Time (Mexico)"/>
|
||||
<xs:enumeration value="Central America Standard Time"/>
|
||||
<xs:enumeration value="Canada Central Standard Time"/>
|
||||
<xs:enumeration value="SA Pacific Standard Time"/>
|
||||
<xs:enumeration value="Eastern Standard Time (Mexico)"/>
|
||||
<xs:enumeration value="Eastern Standard Time"/>
|
||||
<xs:enumeration value="US Eastern Standard Time"/>
|
||||
<xs:enumeration value="Venezuela Standard Time"/>
|
||||
<xs:enumeration value="Paraguay Standard Time"/>
|
||||
<xs:enumeration value="Atlantic Standard Time"/>
|
||||
<xs:enumeration value="Central Brazilian Standard Time"/>
|
||||
<xs:enumeration value="SA Western Standard Time"/>
|
||||
<xs:enumeration value="Newfoundland Standard Time"/>
|
||||
<xs:enumeration value="E. South America Standard Time"/>
|
||||
<xs:enumeration value="Argentina Standard Time"/>
|
||||
<xs:enumeration value="SA Eastern Standard Time"/>
|
||||
<xs:enumeration value="Greenland Standard Time"/>
|
||||
<xs:enumeration value="Montevideo Standard Time"/>
|
||||
<xs:enumeration value="Bahia Standard Time"/>
|
||||
<xs:enumeration value="Pacific SA Standard Time"/>
|
||||
<xs:enumeration value="UTC-02"/>
|
||||
<xs:enumeration value="Mid-Atlantic Standard Time"/>
|
||||
<xs:enumeration value="Azores Standard Time"/>
|
||||
<xs:enumeration value="Cape Verde Standard Time"/>
|
||||
<xs:enumeration value="Morocco Standard Time"/>
|
||||
<xs:enumeration value="GMT Standard Time"/>
|
||||
<xs:enumeration value="UTC"/>
|
||||
<xs:enumeration value="Greenwich Standard Time"/>
|
||||
<xs:enumeration value="W. Europe Standard Time"/>
|
||||
<xs:enumeration value="Central Europe Standard Time"/>
|
||||
<xs:enumeration value="Romance Standard Time"/>
|
||||
<xs:enumeration value="Central European Standard Time"/>
|
||||
<xs:enumeration value="W. Central Africa Standard Time"/>
|
||||
<xs:enumeration value="Namibia Standard Time"/>
|
||||
<xs:enumeration value="Jordan Standard Time"/>
|
||||
<xs:enumeration value="GTB Standard Time"/>
|
||||
<xs:enumeration value="Middle East Standard Time"/>
|
||||
<xs:enumeration value="Syria Standard Time"/>
|
||||
<xs:enumeration value="South Africa Standard Time"/>
|
||||
<xs:enumeration value="FLE Standard Time"/>
|
||||
<xs:enumeration value="Turkey Standard Time"/>
|
||||
<xs:enumeration value="Israel Standard Time"/>
|
||||
<xs:enumeration value="Egypt Standard Time"/>
|
||||
<xs:enumeration value="Kaliningrad Standard Time"/>
|
||||
<xs:enumeration value="E. Europe Standard Time"/>
|
||||
<xs:enumeration value="Libya Standard Time"/>
|
||||
<xs:enumeration value="Arabic Standard Time"/>
|
||||
<xs:enumeration value="Arab Standard Time"/>
|
||||
<xs:enumeration value="Belarus Standard Time"/>
|
||||
<xs:enumeration value="Russian Standard Time"/>
|
||||
<xs:enumeration value="E. Africa Standard Time"/>
|
||||
<xs:enumeration value="Iran Standard Time"/>
|
||||
<xs:enumeration value="Arabian Standard Time"/>
|
||||
<xs:enumeration value="Azerbaijan Standard Time"/>
|
||||
<xs:enumeration value="Caucasus Standard Time"/>
|
||||
<xs:enumeration value="Russia Time Zone 3"/>
|
||||
<xs:enumeration value="Mauritius Standard Time"/>
|
||||
<xs:enumeration value="Georgian Standard Time"/>
|
||||
<xs:enumeration value="Afghanistan Standard Time"/>
|
||||
<xs:enumeration value="West Asia Standard Time"/>
|
||||
<xs:enumeration value="Pakistan Standard Time"/>
|
||||
<xs:enumeration value="Ekaterinburg Standard Time"/>
|
||||
<xs:enumeration value="India Standard Time"/>
|
||||
<xs:enumeration value="Sri Lanka Standard Time"/>
|
||||
<xs:enumeration value="Nepal Standard Time"/>
|
||||
<xs:enumeration value="Central Asia Standard Time"/>
|
||||
<xs:enumeration value="Bangladesh Standard Time"/>
|
||||
<xs:enumeration value="N. Central Asia Standard Time"/>
|
||||
<xs:enumeration value="Myanmar Standard Time"/>
|
||||
<xs:enumeration value="SE Asia Standard Time"/>
|
||||
<xs:enumeration value="North Asia Standard Time"/>
|
||||
<xs:enumeration value="North Asia East Standard Time"/>
|
||||
<xs:enumeration value="Singapore Standard Time"/>
|
||||
<xs:enumeration value="China Standard Time"/>
|
||||
<xs:enumeration value="W. Australia Standard Time"/>
|
||||
<xs:enumeration value="Taipei Standard Time"/>
|
||||
<xs:enumeration value="Ulaanbaatar Standard Time"/>
|
||||
<xs:enumeration value="Yakutsk Standard Time"/>
|
||||
<xs:enumeration value="Tokyo Standard Time"/>
|
||||
<xs:enumeration value="Korea Standard Time"/>
|
||||
<xs:enumeration value="Cen. Australia Standard Time"/>
|
||||
<xs:enumeration value="AUS Central Standard Time"/>
|
||||
<xs:enumeration value="E. Australia Standard Time"/>
|
||||
<xs:enumeration value="AUS Eastern Standard Time"/>
|
||||
<xs:enumeration value="West Pacific Standard Time"/>
|
||||
<xs:enumeration value="Tasmania Standard Time"/>
|
||||
<xs:enumeration value="Magadan Standard Time"/>
|
||||
<xs:enumeration value="Vladivostok Standard Time"/>
|
||||
<xs:enumeration value="Central Pacific Standard Time"/>
|
||||
<xs:enumeration value="Russia Time Zone 10"/>
|
||||
<xs:enumeration value="Russia Time Zone 11"/>
|
||||
<xs:enumeration value="New Zealand Standard Time"/>
|
||||
<xs:enumeration value="Fiji Standard Time"/>
|
||||
<xs:enumeration value="UTC+12"/>
|
||||
<xs:enumeration value="Kamchatka Standard Time"/>
|
||||
<xs:enumeration value="Tonga Standard Time"/>
|
||||
<xs:enumeration value="Samoa Standard Time"/>
|
||||
<xs:enumeration value="Line Islands Standard Time"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="LanguageId">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[A-Z]{2}" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:complexType name="MultiLanguageEntry">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="Lang" type="LanguageId" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="DisplayName">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="MultiLanguageEntry" />
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="F4SD-Infrastructure-Configuration">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element ref="Credentials" maxOccurs="1" minOccurs="1"/>
|
||||
<xs:element ref="DB-Connections" maxOccurs="1" minOccurs="1"/>
|
||||
<xs:element ref="DataHistory-DB" maxOccurs="1" minOccurs="1"/>
|
||||
<xs:element ref="F4SDAnalytics-DB" maxOccurs="1" minOccurs="0"/>
|
||||
<xs:element ref="ClientAgent" maxOccurs="1" minOccurs="1"/>
|
||||
<xs:element ref="Active-Directory" maxOccurs="1" minOccurs="1"/>
|
||||
<xs:element ref="Azure-AD" maxOccurs="1" minOccurs="0"/>
|
||||
<xs:element ref="Matrix42-WPM" maxOccurs="1" minOccurs="0"/>
|
||||
<xs:element ref="Nexthink" maxOccurs="1" minOccurs="0"/>
|
||||
<xs:element ref="Citrix" maxOccurs="1" minOccurs="0"/>
|
||||
<xs:element ref="Authorization" maxOccurs="1" minOccurs="0"/>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
<xs:key name="CredentialId">
|
||||
<xs:selector xpath="./Credentials/*"/>
|
||||
<xs:field xpath="@Name"/>
|
||||
</xs:key>
|
||||
<xs:key name="DbConnectionId">
|
||||
<xs:selector xpath="./DB-Connections/*"/>
|
||||
<xs:field xpath="@Name"/>
|
||||
</xs:key>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Credentials">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="Credential" maxOccurs="unbounded" minOccurs="1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:unique name="UniqueCredentials">
|
||||
<xs:selector xpath="./*"/>
|
||||
<xs:field xpath="@Name"/>
|
||||
</xs:unique>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Credential">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="Name" type="xs:NCName" use="required"/>
|
||||
<xs:attribute name="User" type="xs:string" use="required"/>
|
||||
<xs:attribute name="Domain" type="xs:string" use="optional"/>
|
||||
<xs:attribute name="Description" type="xs:string" use="optional"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="DB-Connections">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="SQL-Connection" maxOccurs="unbounded" minOccurs="1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:unique name="UniqueSqlConnection">
|
||||
<xs:selector xpath="./*"/>
|
||||
<xs:field xpath="@Name"/>
|
||||
</xs:unique>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="SQL-Connection">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="Name" type="xs:NCName" use="required"/>
|
||||
<xs:attribute name="Credential" type="xs:NCName" use="required"/>
|
||||
<xs:attribute name="NativeAccount" type="BooleanTypeEnum" use="optional"/>
|
||||
<xs:attribute name="Server" type="xs:string" use="required"/>
|
||||
<xs:attribute name="Instance" type="xs:string" use="optional"/>
|
||||
<xs:attribute name="Database" type="xs:string" use="required"/>
|
||||
<xs:attribute name="Timeout" type="xs:nonNegativeInteger" use="optional"/>
|
||||
</xs:complexType>
|
||||
<xs:keyref name="SqlConnectionCredentialRef" refer="CredentialId">
|
||||
<xs:selector xpath="."/>
|
||||
<xs:field xpath="@Credential"/>
|
||||
</xs:keyref>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="F4SDAnalytics-DB">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="DB-Connection" type="xs:NCName" use="required"/>
|
||||
<xs:attribute name="EnableUserId" type="xs:boolean" use="optional"/>
|
||||
<xs:attribute name="SessionTimeout" type="xs:positiveInteger" use="optional" default="60"/>
|
||||
<xs:attribute name="CaseTimeout" type="xs:positiveInteger" use="optional" default="5"/>
|
||||
<xs:attribute name="SessionCheckInterval" type="xs:positiveInteger" use="optional" default="20"/>
|
||||
<xs:attribute name="CaseCheckInterval" type="xs:positiveInteger" use="optional" default="2"/>
|
||||
</xs:complexType>
|
||||
<xs:keyref name="F4SDAnalyticsDbSqlConnectionRef" refer="DbConnectionId">
|
||||
<xs:selector xpath="."/>
|
||||
<xs:field xpath="@DB-Connection"/>
|
||||
</xs:keyref>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="DataHistory-DB">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="Cleanup-Timeframe" maxOccurs="unbounded" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="DB-Connection" type="xs:NCName" use="required"/>
|
||||
<xs:attribute name="SearchForPhoneNumbers" type="xs:boolean" use="optional"/>
|
||||
<xs:attribute name="SearchWithLike" type="xs:boolean" use="optional"/>
|
||||
<xs:attribute name="DaysToCache" type="xs:positiveInteger" use="optional"/>
|
||||
</xs:complexType>
|
||||
<xs:keyref name="DataHistoryDbSqlConnectionRef" refer="DbConnectionId">
|
||||
<xs:selector xpath="."/>
|
||||
<xs:field xpath="@DB-Connection"/>
|
||||
</xs:keyref>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="ClientAgent">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="Scan-Timing" maxOccurs="1" minOccurs="0"/>
|
||||
<xs:element ref="Local-Account-Assignment" maxOccurs="unbounded" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="DB-Connection" type="xs:NCName" use="required"/>
|
||||
<xs:attribute name="Server-Url" type="xs:anyURI" use="required"/>
|
||||
<xs:attribute name="MaxDeviceAge" type="xs:nonNegativeInteger" use="required"/>
|
||||
<xs:attribute name="Organization" type="xs:string" use="required"/>
|
||||
<xs:attribute name="Api-Credential" type="xs:NCName" use="required"/>
|
||||
<xs:attribute name="Api-Path" type="xs:anyURI" use="optional"/>
|
||||
</xs:complexType>
|
||||
<xs:keyref name="ClientAgentDbSqlConnectionRef" refer="DbConnectionId">
|
||||
<xs:selector xpath="."/>
|
||||
<xs:field xpath="@DB-Connection"/>
|
||||
</xs:keyref>
|
||||
<xs:keyref name="ApiCredentialRef" refer="CredentialId">
|
||||
<xs:selector xpath="."/>
|
||||
<xs:field xpath="@Credential"/>
|
||||
</xs:keyref>
|
||||
</xs:element>
|
||||
|
||||
|
||||
<xs:element name="Local-Account-Assignment">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="Domain" type="xs:string" use="required"/>
|
||||
<xs:attribute name="RegExFilter" type="xs:string" use="optional"/>
|
||||
<xs:attribute name="AccountMask" type="xs:string" use="optional"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Azure-AD">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="Azure-Tenant" maxOccurs="unbounded" minOccurs="1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:unique name="UniqueTenants">
|
||||
<xs:selector xpath="./*"/>
|
||||
<xs:field xpath="@Domain"/>
|
||||
</xs:unique>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Azure-Tenant">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Domain" type="xs:string" use="required"/>
|
||||
<xs:attribute name="TenantID" type="guid" use="required"/>
|
||||
<xs:attribute name="Credential" type="xs:NCName" use="required"/>
|
||||
<xs:attribute name="ScanIntuneDevices" type="xs:boolean" use="optional"/>
|
||||
<xs:attribute name="WithMobileDevices" type="xs:boolean" use="optional"/>
|
||||
</xs:complexType>
|
||||
<xs:keyref name="AzureTenantCredentialRef" refer="CredentialId">
|
||||
<xs:selector xpath="."/>
|
||||
<xs:field xpath="@Credential"/>
|
||||
</xs:keyref>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Citrix">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="Scan-Timing" maxOccurs="1" minOccurs="0"/>
|
||||
<xs:element ref="Citrix-Tenant" maxOccurs="unbounded" minOccurs="1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:unique name="UniqueCitrixTenants">
|
||||
<xs:selector xpath="./*"/>
|
||||
<xs:field xpath="@Domain"/>
|
||||
</xs:unique>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Citrix-Tenant">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Domain" type="xs:string" use="required"/>
|
||||
<xs:attribute name="TenantID" type="xs:string" use="required"/>
|
||||
<xs:attribute name="InstanceID" type="guid" use="required"/>
|
||||
<xs:attribute name="Credential" type="xs:NCName" use="required"/>
|
||||
</xs:complexType>
|
||||
<xs:keyref name="CitrixTenantCredentialRef" refer="CredentialId">
|
||||
<xs:selector xpath="."/>
|
||||
<xs:field xpath="@Credential"/>
|
||||
</xs:keyref>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Active-Directory">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="Scan-Timing" maxOccurs="1" minOccurs="0"/>
|
||||
<xs:element ref="AD-Domains" maxOccurs="unbounded" minOccurs="0"/>
|
||||
<xs:element ref="AD-Scans" maxOccurs="unbounded" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="ScanPhoneNumbers" type="xs:boolean" use="optional"/>
|
||||
</xs:complexType>
|
||||
<xs:key name="AdDomainId">
|
||||
<xs:selector xpath="./AD-Domains/*"/>
|
||||
<xs:field xpath="@Name"/>
|
||||
</xs:key>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Scan-Timing">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="ScanInterval" type="HourMinuteType" use="required"/>
|
||||
<xs:attribute name="ScanOffset" type="HourMinuteType" use="optional"/>
|
||||
<xs:attribute name="Timezone" type="TimezoneType" use="optional"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Cleanup-Timeframe">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="StartDay" type="DayTypeEnum" use="required"/>
|
||||
<xs:attribute name="StartTime" type="HourMinuteType" use="required"/>
|
||||
<xs:attribute name="StopDay" type="DayTypeEnum" use="optional"/>
|
||||
<xs:attribute name="StopTime" type="HourMinuteType" use="required"/>
|
||||
<xs:attribute name="Timezone" type="TimezoneType" use="optional"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="AD-Domains">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="AD-Domain" maxOccurs="unbounded" minOccurs="1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:unique name="UniqueAdDomains">
|
||||
<xs:selector xpath="./*"/>
|
||||
<xs:field xpath="@Name"/>
|
||||
</xs:unique>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="AD-Domain">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="AD-Server" maxOccurs="unbounded" minOccurs="1"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Name" type="xs:NCName" use="required"/>
|
||||
<xs:attribute name="FQDN" type="xs:string" use="required"/>
|
||||
<xs:attribute name="Credential" type="xs:NCName" use="required"/>
|
||||
</xs:complexType>
|
||||
<xs:unique name="UniqueAdServers">
|
||||
<xs:selector xpath="./*"/>
|
||||
<xs:field xpath="@FQDN"/>
|
||||
</xs:unique>
|
||||
<xs:keyref name="AdDomainCredentialRef" refer="CredentialId">
|
||||
<xs:selector xpath="."/>
|
||||
<xs:field xpath="@Credential"/>
|
||||
</xs:keyref>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="AD-Server">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="FQDN" type="xs:string" use="required"/>
|
||||
<xs:attribute name="UseSSL" type="BooleanTypeEnum" use="required"/>
|
||||
<xs:attribute name="Port" type="xs:integer" use="optional"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="AD-Scans">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="AD-Scan" maxOccurs="unbounded" minOccurs="1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:unique name="UniqueAdScans">
|
||||
<xs:selector xpath="./*"/>
|
||||
<xs:field xpath="@Name"/>
|
||||
</xs:unique>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="AD-Scan">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="AD-Scan-Node" maxOccurs="unbounded" minOccurs="1"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Name" type="xs:NCName" use="optional"/>
|
||||
<xs:attribute name="Type" type="AdScanTypeEnum" use="optional"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="AD-Scan-Node">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="AD-Domain" type="xs:NCName" use="required"/>
|
||||
<xs:attribute name="Path" type="xs:string" use="required"/>
|
||||
<xs:attribute name="LDAP-Filter" type="xs:string" use="optional"/>
|
||||
<xs:attribute name="Filter-Property" type="LdapFilterProperyEnum" use="optional"/>
|
||||
<xs:attribute name="Wildcard-Filter" type="xs:string" use="optional"/>
|
||||
<xs:attribute name="RegEx-Filter" type="xs:string" use="optional"/>
|
||||
</xs:complexType>
|
||||
<xs:keyref name="AdScanNodeDomainRef" refer="AdDomainId">
|
||||
<xs:selector xpath="."/>
|
||||
<xs:field xpath="@AD-Domain"/>
|
||||
</xs:keyref>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Nexthink">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="Scan-Timing" maxOccurs="1" minOccurs="0"/>
|
||||
<xs:element ref="Nxt-Portal" maxOccurs="unbounded" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Nxt-Portal">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="Nxt-Engine" maxOccurs="unbounded" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Name" type="xs:NCName" use="required"/>
|
||||
<xs:attribute name="Address" type="xs:string" use="required"/>
|
||||
<xs:attribute name="Credential" type="xs:NCName" use="required"/>
|
||||
<xs:attribute name="IsCloud" type="BooleanTypeEnum" use="optional"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Nxt-Engine">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="Name" type="xs:NCName" use="required"/>
|
||||
<xs:attribute name="Address" type="xs:string" use="required"/>
|
||||
<xs:attribute name="Port" type="xs:nonNegativeInteger" use="optional"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:simpleType name="ShowDocumentCaseDialogOptions">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="always">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Immer fragen</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
<xs:enumeration value="ifRequired">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Fragen, wenn QuickAction und/oder Notizen vorhanden sind (Standard)</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
<xs:enumeration value="never">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Niemals fragen</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="ActivityQueueFilterOptions">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="showAll">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Alle anzeigen (Standard)</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
<xs:enumeration value="ticketsAndListedQueues">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Alle Tickets / Incidents ohne Queue oder mit angegebener Queue</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
<xs:enumeration value="onlyListedQueues">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Nur Tickets / Incidents mit angegebener Queue</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
<xs:enumeration value="onlyTickets">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Nur Tickets / Incidents</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:element name="Matrix42-Ticket">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="DisableAutomaticTimeTracking" type="xs:string" use="optional"/>
|
||||
<xs:attribute name="ShowDocumentCaseDialog" type="ShowDocumentCaseDialogOptions" use="optional" default="ifRequired"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="Queues">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="Queue" maxOccurs="unbounded" minOccurs="1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="Queue">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="QueueName" type="xs:string" use="required"/>
|
||||
<xs:attribute name="QueueID" type="guid" use="optional"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Matrix42-WPM">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="Matrix42-Ticket" minOccurs="0" maxOccurs="1" />
|
||||
<xs:element ref="DisplayName" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:element ref="Queues" maxOccurs="1" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Server" type="xs:string" use="required"/>
|
||||
<xs:attribute name="Credential" type="xs:NCName" use="required"/>
|
||||
<xs:attribute name="ClosedTicketHistory" type="xs:nonNegativeInteger" use="required"/>
|
||||
<xs:attribute name="DisplayName" type="xs:string" use="optional"/>
|
||||
<xs:attribute name="ApiTokenLifetime" type="M42ApiTokenLifetime" use="optional"/>
|
||||
<xs:attribute name="ActivityQueueFilter" type="ActivityQueueFilterOptions" use="optional" default="showAll"/>
|
||||
|
||||
</xs:complexType>
|
||||
<xs:keyref name="M42WpmCredentialRef" refer="CredentialId">
|
||||
<xs:selector xpath="."/>
|
||||
<xs:field xpath="@Credential"/>
|
||||
</xs:keyref>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Authorization">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="Membership-Groups" maxOccurs="1" minOccurs="0"/>
|
||||
<xs:element ref="Roles" maxOccurs="1" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Membership-Groups">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="Membership-Groups-AD" maxOccurs="unbounded" minOccurs="0"/>
|
||||
<xs:element ref="Membership-Groups-Matrix42" maxOccurs="unbounded" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Membership-Groups-AD">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="Membership-Group-AD" maxOccurs="unbounded" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Domain" type="xs:NCName" use="required"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Membership-Group-AD">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="Name" type="xs:NCName" use="required"/>
|
||||
<xs:attribute name="Account" type="xs:string" use="required"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Roles">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="Role" maxOccurs="unbounded" minOccurs="1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Role">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="GroupRef" maxOccurs="unbounded" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Name" type="xs:NCName" use="required"/>
|
||||
<xs:attribute name="Group" type="xs:NCName" use="optional"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="GroupRef">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="Name" type="xs:NCName" use="required"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Membership-Groups-Matrix42">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="Membership-Group-Matrix42" maxOccurs="unbounded" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Membership-Group-Matrix42">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="Name" type="xs:NCName" use="required"/>
|
||||
<xs:attribute name="RoleName" type="xs:string" use="required"/>
|
||||
<xs:attribute name="RoleID" type="guid" use="optional"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,67 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<F4SD-MenuSection-Configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="F4SD-MenuSection-Configuration.xsd">
|
||||
<Sections>
|
||||
|
||||
<Section TechName="Ticket" Name="Ticket" Description="Scripts dealing with tickets.">
|
||||
<Name Lang="DE">Ticket</Name>
|
||||
<Description Lang="DE">Skripte, die sich mit Tickets beschäftigen.</Description>
|
||||
<Icon Name="ic_mail" IconType="material"/>
|
||||
</Section>
|
||||
<Section TechName="Favourites" Name="Favourites">
|
||||
<Name Lang="DE">Favoriten</Name>
|
||||
<Icon Name="ic_star" IconType="material"/>
|
||||
</Section>
|
||||
<Section TechName="Communication" Name="Communication" Description="Quick Actions dealing with communication.">
|
||||
<Name Lang="DE">Kommunikation</Name>
|
||||
<Description Lang="DE">Quick Actions, die mit Kommunikation zu tun haben</Description>
|
||||
<Icon IconType="material" Name="ic_perm_phone_msg"/>
|
||||
</Section>
|
||||
<!-- <Section TechName="ActiveDirectory" Name="Active Directory" Description="Scripts dealing with the active directory.">
|
||||
<Name Lang="DE">Active Directory</Name>
|
||||
<Description Lang="DE">Skripte, die sich mit dem Active Directory beschäftigen.</Description>
|
||||
<Icon Name="misc_user" IconType="intern"/>
|
||||
</Section> -->
|
||||
<Section TechName="FastBoot" Name="Fast boot options" Description="Scripts dealing with the windows fast boot option.">
|
||||
<Name Lang="DE">Schnellstart Optionen</Name>
|
||||
<Description Lang="DE">Skripte, die die Windows Schnellstart Option betreffen.</Description>
|
||||
<Icon Name="ic_directions_run" IconType="material"/>
|
||||
</Section>
|
||||
<Section TechName="ClearCache" Name="Clear Cache" Description="Quick Actions for clearing cache.">
|
||||
<Name Lang="DE">Cache leeren</Name>
|
||||
<Description Lang="DE">Quick Actions um Caches zu leeren.</Description>
|
||||
<Icon IconType="material" Name="ic_delete_sweep"/>
|
||||
</Section>
|
||||
<Section TechName="GetInfo" Name="Obtain information" Description="Obtain further information about the computer.">
|
||||
<Name Lang="DE">Informationen einholen</Name>
|
||||
<Description Lang="DE">Weitere Informationen über den Computer einholen.</Description>
|
||||
<Icon IconType="material" Name="ic_add_to_photos"/>
|
||||
</Section>
|
||||
<Section TechName="Intune" Name="Intune">
|
||||
<Name Lang="DE">Intune</Name>
|
||||
<Icon IconType="material" Name="ic_assessment"/>
|
||||
</Section>
|
||||
<Section TechName="Citrix" Name="Citrix">
|
||||
<Name Lang="DE">Citrix</Name>
|
||||
<Icon IconType="material" Name="ic_assessment"/>
|
||||
</Section>
|
||||
<Section TechName="MobileDevice" Name="Mobil Device">
|
||||
<Name Lang="DE">Mobil Geräte</Name>
|
||||
<Icon IconType="material" Name="ic_assessment"/>
|
||||
</Section>
|
||||
<Section TechName="C4ITIntern" Name="C4IT internal" Description="Scripts for C4IT internal purposes.">
|
||||
<Name Lang="DE">C4IT Intern</Name>
|
||||
<Description Lang="DE">Skripte für den internen C4IT Gebrauch.</Description>
|
||||
<Icon IconType="intern" Name="misc_tool" />
|
||||
</Section>
|
||||
<Section TechName="TestSection" Name="Test" Description="Scripts that need testing for release.">
|
||||
<Name Lang="DE">Test</Name>
|
||||
<Description Lang="DE">Skripte, die für das nächste Release getestet werden.</Description>
|
||||
<Icon IconType="intern" Name="misc_tool"/>
|
||||
</Section>
|
||||
<Section TechName="Sandbox" Name="Quick Actions Sandbox" Description="Experimental scripts.">
|
||||
<Name Lang="DE">Quick Actions Sandbox</Name>
|
||||
<Description Lang="DE">Experimentelle Skripte.</Description>
|
||||
<Icon IconType="intern" Name="misc_tool"/>
|
||||
</Section>
|
||||
</Sections>
|
||||
</F4SD-MenuSection-Configuration>
|
||||
@@ -0,0 +1,88 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
|
||||
|
||||
<xs:simpleType name="LanguageId">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[A-Z]{2}" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="IconTypes">
|
||||
<xs:restriction base="xs:NCName">
|
||||
<xs:enumeration value="material" />
|
||||
<xs:enumeration value="intern" />
|
||||
<xs:enumeration value="byImage" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:element name="F4SD-MenuSection-Configuration">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="Sections" minOccurs="1" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Sections">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="Section" minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Section">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="Name" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:element ref="Description" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:element ref="Icon" minOccurs="0" maxOccurs="1" />
|
||||
</xs:sequence>
|
||||
|
||||
<xs:attribute name="TechName" type="xs:NCName" use="required" />
|
||||
<xs:attribute name="Name" type="xs:string" use="optional" />
|
||||
<xs:attribute name="Title" type="xs:string" use="optional" />
|
||||
<xs:attribute name="Description" type="xs:string" use="optional" />
|
||||
<!-- visibility controlling attributes -->
|
||||
<xs:attribute name="Hidden" type="xs:boolean" use="optional" default="false"/>
|
||||
<xs:attribute name="IsVisibleByParameter" type="xs:string" use="optional" />
|
||||
<xs:attribute name="RequiredRoles" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:list itemType="xs:NCName" />
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:complexType name="MultiLanguageEntry">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="Lang" type="LanguageId" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="Name">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="MultiLanguageEntry" />
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Description">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="MultiLanguageEntry" />
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Icon">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="Name" type="xs:NCName" use="required" />
|
||||
<xs:attribute name="IconType" type="IconTypes" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,664 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
|
||||
|
||||
<xs:simpleType name="guid">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="LanguageId">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[A-Z]{2}" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="IconTypes">
|
||||
<xs:restriction base="xs:NCName">
|
||||
<xs:enumeration value="material" />
|
||||
<xs:enumeration value="intern" />
|
||||
<xs:enumeration value="byImage" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="InformationClass">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="Main" />
|
||||
<xs:enumeration value="User" />
|
||||
<xs:enumeration value="Computer" />
|
||||
<xs:enumeration value="Ticket" />
|
||||
<xs:enumeration value="VirtuelSession" />
|
||||
<xs:enumeration value="MobileDevice" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="DisplayTypes">
|
||||
<xs:restriction base="xs:NCName">
|
||||
<xs:enumeration value="STRING" />
|
||||
<xs:enumeration value="INTEGER" />
|
||||
<xs:enumeration value="PERCENT" />
|
||||
<xs:enumeration value="PERCENT100" />
|
||||
<xs:enumeration value="TIME" />
|
||||
<xs:enumeration value="DATE" />
|
||||
<xs:enumeration value="DATETIME" />
|
||||
<xs:enumeration value="DURATION_DAY" />
|
||||
<xs:enumeration value="DURATION_HOUR" />
|
||||
<xs:enumeration value="DURATION_MILLI" />
|
||||
<xs:enumeration value="DURATION_DAY_SINCE_NOW" />
|
||||
<xs:enumeration value="BITS_PERSECOND" />
|
||||
<xs:enumeration value="BYTES" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="Browsers">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="Default" />
|
||||
<xs:enumeration value="Google Chrome" />
|
||||
<xs:enumeration value="Internet Explorer" />
|
||||
<xs:enumeration value="Microsoft Edge" />
|
||||
<xs:enumeration value="Mozilla Firefox" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="ResultTypes">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="Undefined" />
|
||||
<xs:enumeration value="Information" />
|
||||
<xs:enumeration value="Repair" />
|
||||
<xs:enumeration value="ExternalApplication" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="ExecutionTypes">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="Undefined" />
|
||||
<xs:enumeration value="LocalScript" />
|
||||
<xs:enumeration value="RemoteScript" />
|
||||
<xs:enumeration value="ExternalApplication" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="StateLevels">
|
||||
<xs:restriction base="xs:NCName">
|
||||
<xs:enumeration value="None" />
|
||||
<xs:enumeration value="Ok" />
|
||||
<xs:enumeration value="Warning" />
|
||||
<xs:enumeration value="Error" />
|
||||
<xs:enumeration value="Info" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="QuickActionSuccess">
|
||||
<xs:restriction base="xs:NCName">
|
||||
<xs:enumeration value="finished" />
|
||||
<xs:enumeration value="successfull" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:element name="F4SD-QuickAction-Configuration">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="Translations" minOccurs="0" maxOccurs="1" />
|
||||
<xs:element ref="QuickActions" minOccurs="1" maxOccurs="1" />
|
||||
<xs:element ref="QuickTips" minOccurs="0" maxOccurs="1" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Translations">
|
||||
<xs:complexType>
|
||||
<xs:choice maxOccurs="unbounded">
|
||||
<xs:element ref="Translator" minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Translator">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="DefaultTranslation" minOccurs="0" maxOccurs="1" />
|
||||
<xs:element ref="Translation" minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Name" type="xs:NCName" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="DefaultTranslation">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="Name" minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Name" type="xs:string" use="required" />
|
||||
<xs:attribute name="StateLevel" type="StateLevels" use="optional" default="None" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Translation">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="Name" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:element name="Value" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:string" />
|
||||
</xs:simpleType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Name" type="xs:string" use="required" />
|
||||
<xs:attribute name="StateLevel" type="StateLevels" use="optional" default="None" />
|
||||
</xs:complexType>
|
||||
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="QuickActions">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="QuickAction" minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="QuickAction" abstract="true" />
|
||||
|
||||
<xs:complexType name="QuickAction" abstract="true">
|
||||
<xs:sequence>
|
||||
<xs:element ref="Name" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element ref="Section" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element ref="Description" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element ref="AlternativeDescription" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element ref="Icon" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element ref="CheckNamedParameterValues" minOccurs="0" maxOccurs="1" />
|
||||
<xs:element ref="AdjustableParameters" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element ref="ColumnOutputFormattings" minOccurs="0" maxOccurs="1" />
|
||||
</xs:sequence>
|
||||
|
||||
<xs:attribute name="Id" type="guid" use="optional" />
|
||||
<xs:attribute name="Name" type="xs:string" use="required"/>
|
||||
<xs:attribute name="InformationClass" use="required">
|
||||
<xs:simpleType>
|
||||
<xs:list itemType="InformationClass" />
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="Description" type="xs:string" use="optional" />
|
||||
<xs:attribute name="Section" type="xs:NCName" use="optional" />
|
||||
<xs:attribute name="Params" type="xs:string" use="optional" />
|
||||
<xs:attribute name="CheckNamedParameter" type="xs:NCName" use="optional" />
|
||||
<xs:attribute name="CheckFilePath" type="xs:string" use="optional" />
|
||||
<xs:attribute name="CheckRegistryEntry" type="xs:string" use="optional" />
|
||||
<xs:attribute name="RunImmediate" type="xs:boolean" use="optional" />
|
||||
<xs:attribute name="ExecutionType" type="ExecutionTypes" use="optional" default="Undefined" />
|
||||
<xs:attribute name="ResultType" type="ResultTypes" use="optional" default="Undefined" />
|
||||
<!-- visibility controlling attributes -->
|
||||
<xs:attribute name="Hidden" type="xs:boolean" use="optional" default="false"/>
|
||||
<xs:attribute name="IsVisibleByParameter" type="xs:string" use="optional" />
|
||||
<xs:attribute name="RequiredRoles" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:list itemType="xs:NCName" />
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="QuickAction-Local" abstract="true">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="QuickAction">
|
||||
<xs:attribute name="RequireAdministrator" use="optional" />
|
||||
<xs:attribute name="StartWithAlternateCredentials" type="xs:boolean" use="optional" />
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="QuickAction-Local-Script" substitutionGroup="QuickAction">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="QuickAction-Local">
|
||||
<xs:sequence>
|
||||
<xs:element ref="Script" minOccurs="1" maxOccurs="1"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="QuickAction-Local-Cmd" substitutionGroup="QuickAction">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="QuickAction-Local">
|
||||
<xs:attribute name="Cmd" type="xs:string" use="required" />
|
||||
<xs:attribute name="DontUseShell" type="xs:boolean" use="required" />
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="QuickAction-Local-WebRequest" substitutionGroup="QuickAction">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="QuickAction-Local">
|
||||
<xs:sequence>
|
||||
<xs:element ref="QueryString" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element ref="QueryParameter" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Browser" type="Browsers" use="optional" default="Default" />
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="QuickAction-Server" substitutionGroup="QuickAction">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="QuickAction-Remote">
|
||||
<xs:attribute name="Category" use="optional" />
|
||||
<xs:attribute name="Action" use="optional" />
|
||||
<xs:attribute name="ParamaterType" use="optional" />
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="QuickActionMeasure">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="Name" minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Name" type="xs:string" use="required" />
|
||||
<xs:attribute name="MeasureId" type="xs:int" use="required" />
|
||||
<xs:attribute name="Display" type="DisplayTypes" use="optional" default="STRING" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="QuickActionMeasures">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="QuickActionMeasure" minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="QuickActionMeasureResult">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="Id" type="xs:positiveInteger" use="required" />
|
||||
<xs:attribute name="Value" type="xs:string" use="required" />
|
||||
<xs:attribute name="PostValue" type="xs:string" use="required"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="QuickActionMeasureResults">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="QuickActionMeasureResult" minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="QuickAction-Demo" substitutionGroup="QuickAction">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="QuickAction">
|
||||
<xs:sequence>
|
||||
<xs:element ref="DemoResult" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element ref="QuickActionMeasures" minOccurs="0" maxOccurs="1" />
|
||||
<xs:element ref="QuickActionMeasureResults" minOccurs="0" maxOccurs="1" />
|
||||
</xs:sequence>
|
||||
<xs:attribute name="SimulatedClientConnect" type="xs:nonNegativeInteger" use="optional" />
|
||||
<xs:attribute name="SimulatedRuntime" type="xs:nonNegativeInteger" use="optional" />
|
||||
<xs:attribute name="Type" type="ExecutionTypes" use="optional" />
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="DemoResult">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="Result" type="QuickActionSuccess" use="optional" />
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="QueryString">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="ParameterName" type="xs:NCName" use="optional" />
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="QueryParameter">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="Name" type="xs:string" use="required"/>
|
||||
<xs:attribute name="ParameterName" type="xs:NCName" use="optional" />
|
||||
<xs:attribute name="ValueRequired" type="xs:boolean" use="optional" default="false" />
|
||||
<xs:attribute name="UseHtmlValue" type="xs:boolean" use="optional" default="false" />
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:complexType name="QuickAction-Remote" abstract="true">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="QuickAction">
|
||||
<xs:sequence>
|
||||
<xs:element ref="QuickActionMeasures" minOccurs="0" maxOccurs="1" />
|
||||
</xs:sequence>
|
||||
<xs:attribute name="ScriptId" use="optional" />
|
||||
<xs:attribute name="ScriptName" use="optional" />
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="QuickAction-Remote-User" substitutionGroup="QuickAction">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="QuickAction-Remote">
|
||||
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="QuickAction-Remote-Computer" substitutionGroup="QuickAction">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="QuickAction-Remote">
|
||||
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="QuickAction-Chained" substitutionGroup="QuickAction">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="QuickAction">
|
||||
<xs:sequence>
|
||||
<xs:element ref="QuickAction-Reference" minOccurs="1" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="QuickAction-Reference">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="Name" type="xs:string" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:complexType name="MultiLanguageEntry">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="Lang" type="LanguageId" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="Name">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="MultiLanguageEntry" />
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Section">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:NCName" />
|
||||
</xs:simpleType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Description">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="MultiLanguageEntry" />
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="AlternativeDescription">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="MultiLanguageEntry" />
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Script">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="IsBase64" type="xs:boolean" use="optional" />
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Icon">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="IconType" type="IconTypes" use="required" />
|
||||
<xs:attribute name="Name" type="xs:string" use="required" />
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="CheckNamedParameterValues">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="CheckNamedParameterValue" minOccurs="1" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="CheckNamedParameterValue">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:string" />
|
||||
</xs:simpleType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="AdjustableParameters">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="AdjustableParameter" minOccurs="1" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="AdjustableParameter" abstract="true" />
|
||||
|
||||
<xs:complexType name="AdjustableParameter" abstract="true">
|
||||
<xs:sequence>
|
||||
<xs:element ref="Name" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element ref="Description" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Name" type="xs:string" use="required"/>
|
||||
<xs:attribute name="ParameterName" type="xs:NCName" use="required" />
|
||||
<xs:attribute name="IsOptional" type="xs:boolean" use="optional" default="false" />
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="AdjustableParameter-Boolean" substitutionGroup="AdjustableParameter">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="AdjustableParameter">
|
||||
<xs:attribute name="Default" type="xs:boolean" use="optional" default="false" />
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="AdjustableParameter-Numerical" substitutionGroup="AdjustableParameter">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="AdjustableParameter">
|
||||
<xs:attribute name="Default" type="xs:double" use="optional" default="0" />
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="AdjustableParameter-DropDown" substitutionGroup="AdjustableParameter">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="AdjustableParameter">
|
||||
<xs:sequence>
|
||||
<xs:element ref="AdjustableParameter-DropDownValue" minOccurs="1" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Default" type="xs:string" use="optional" />
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="AdjustableParameter-DropDownValue">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="AdjustableParameter-DropDownDisplayValue" minOccurs="1" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Value" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="AdjustableParameter-DropDownDisplayValue">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="MultiLanguageEntry" />
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="ColumnOutputFormattings">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="ColumnOutputFormatting" minOccurs="1" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="ShowAllOutputContent" type="xs:boolean" use="optional" default="false" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="ColumnOutputFormatting">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="Name" minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
<xs:attribute name="ValueName" type="xs:NCName" use="required" />
|
||||
<xs:attribute name="Name" type="xs:string" use="optional" />
|
||||
<xs:attribute name="Translation" type="xs:NCName" use="optional" />
|
||||
<xs:attribute name="Display" type="DisplayTypes" use="optional" />
|
||||
<xs:attribute name="Hidden" type="xs:boolean" use="optional" default="false" />
|
||||
<xs:attribute name="IsSecret" type="xs:boolean" use="optional" default="false" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="QuickTips">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="QuickTip" minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="QuickTip">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="Name" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:element ref="Section" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:element ref="Description" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:element ref="AlternativeDescription" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:element ref="Icon" minOccurs="0" maxOccurs="1" />
|
||||
<xs:element ref="QuickTipElements" minOccurs="1" maxOccurs="1" />
|
||||
</xs:sequence>
|
||||
|
||||
<xs:attribute name="Id" type="guid" use="optional" />
|
||||
<xs:attribute name="Name" type="xs:string" use="required" />
|
||||
<xs:attribute name="Description" type="xs:string" use="optional" />
|
||||
<xs:attribute name="Section" type="xs:NCName" use="optional" />
|
||||
<xs:attribute name="FixedSequence" type="xs:boolean" use="optional" />
|
||||
<xs:attribute name="InformationClass" use="required">
|
||||
<xs:simpleType>
|
||||
<xs:list itemType="InformationClass" />
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<!-- visibility controlling attributes -->
|
||||
<xs:attribute name="Hidden" type="xs:boolean" use="optional" default="false"/>
|
||||
<xs:attribute name="IsVisibleByParameter" type="xs:string" use="optional" />
|
||||
<xs:attribute name="RequiredRoles" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:list itemType="xs:NCName" />
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="QuickTipElements">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="QuickTipElement" minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="QuickTipElement" abstract="true" />
|
||||
|
||||
<xs:complexType name="QuickTipElement" abstract="true">
|
||||
<xs:sequence>
|
||||
<xs:element ref="Name" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:element ref="TextBlock" minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Name" type="xs:string" use="required" />
|
||||
<xs:attribute name="IsRequired" type="xs:boolean" use="optional" />
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="TextBlock">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="MultiLanguageEntry" />
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="TextElement" substitutionGroup="QuickTipElement">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="QuickTipElement" />
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="ManualStep" substitutionGroup="QuickTipElement">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="QuickTipElement">
|
||||
<xs:sequence>
|
||||
<xs:element ref="Icon" minOccurs="0" maxOccurs="1" />
|
||||
<xs:element ref="Summary" minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Summary">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="MultiLanguageEntry" />
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="AutomatedStep" substitutionGroup="QuickTipElement">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="QuickTipElement">
|
||||
<xs:attribute name="QuickAction" type="xs:string" use="required" />
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:schema>
|
||||
58
C4IT_DataHistoryProvider_Test/Config/LanguageDefinitions.xsd
Normal file
@@ -0,0 +1,58 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
|
||||
|
||||
<xs:simpleType name="LanguageId">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[A-Z]{2}|[.]" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:element name="UILanguage">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="UIImage" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element ref="UISubstitution" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element ref="UIItem" minOccurs="1" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="UIImage">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="Lang" type="LanguageId" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="UISubstitution">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="Language" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Lang" type="LanguageId" use="required"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="UIItem">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="Language" minOccurs="1" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Name" type="xs:NCName" use="required"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="Language">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="Lang" type="LanguageId" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
||||
2539
C4IT_DataHistoryProvider_Test/DataHistorySql.xml
Normal file
340
C4IT_DataHistoryProvider_Test/F4SD-Cockpit-Collector.csproj
Normal file
@@ -0,0 +1,340 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{5F839FF6-3EBC-438F-8775-7F6A25402E66}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<RootNamespace>C4IT_DataHistoryProvider_Test</RootNamespace>
|
||||
<AssemblyName>F4SD-Cockpit-Collector</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||
<Deterministic>false</Deterministic>
|
||||
<SccProjectName>SAK</SccProjectName>
|
||||
<SccLocalPath>SAK</SccLocalPath>
|
||||
<SccAuxPath>SAK</SccAuxPath>
|
||||
<SccProvider>SAK</SccProvider>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>TRACE;DEBUG</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release-Demo|AnyCPU'">
|
||||
<OutputPath>bin\Release-Demo\</OutputPath>
|
||||
<DefineConstants>TRACE;DEMOLICENSE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<LangVersion>7.3</LangVersion>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug-Demo|AnyCPU'">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>bin\Debug-Demo\</OutputPath>
|
||||
<DefineConstants>TRACE;DEBUG;DEMOLICENSE</DefineConstants>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<LangVersion>7.3</LangVersion>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ApplicationIcon>logo_FASD.ico</ApplicationIcon>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<OutputPath>bin\x64\Debug\</OutputPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<OutputPath>bin\x64\Release\</OutputPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release-Demo|x64'">
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<OutputPath>bin\x64\Release-Demo\</OutputPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug-Demo|x64'">
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<OutputPath>bin\x64\Debug-Demo\</OutputPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<OutputPath>bin\x86\Debug\</OutputPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<OutputPath>bin\x86\Release\</OutputPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release-Demo|x86'">
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<OutputPath>bin\x86\Release-Demo\</OutputPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug-Demo|x86'">
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<OutputPath>bin\x86\Debug-Demo\</OutputPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup />
|
||||
<PropertyGroup>
|
||||
<ApplicationManifest>app.manifest</ApplicationManifest>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="..\CommonAssemblyInfo.cs">
|
||||
<Link>Properties\CommonAssemblyInfo.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="ctrlActiveDirectory.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ctrlActiveDirectory.Designer.cs">
|
||||
<DependentUpon>ctrlActiveDirectory.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ctrlCleanup.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ctrlCleanup.Designer.cs">
|
||||
<DependentUpon>ctrlCleanup.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ctrlClientAgent.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ctrlClientAgent.Designer.cs">
|
||||
<DependentUpon>ctrlClientAgent.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ctrlM42Wpm.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ctrlM42Wpm.Designer.cs">
|
||||
<DependentUpon>ctrlM42Wpm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ctrlMainFunction.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ctrlMainFunction.Designer.cs">
|
||||
<DependentUpon>ctrlMainFunction.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ctrlNexthink.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ctrlNexthink.Designer.cs">
|
||||
<DependentUpon>ctrlNexthink.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ctrlProtocolBox.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ctrlProtocolBox.Designer.cs">
|
||||
<DependentUpon>ctrlProtocolBox.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ctrlF4SDAnalytics.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ctrlF4SDAnalytics.Designer.cs">
|
||||
<DependentUpon>ctrlF4SDAnalytics.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ctrlTestFunctions.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ctrlTestFunctions.Designer.cs">
|
||||
<DependentUpon>ctrlTestFunctions.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="frmMain2.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="frmMain2.Designer.cs">
|
||||
<DependentUpon>frmMain2.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="frmPasssword.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="frmPasssword.Designer.cs">
|
||||
<DependentUpon>frmPasssword.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="ctrlCitrix.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ctrlCitrix.Designer.cs">
|
||||
<DependentUpon>ctrlCitrix.cs</DependentUpon>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="ctrlActiveDirectory.resx">
|
||||
<DependentUpon>ctrlActiveDirectory.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="ctrlCleanup.resx">
|
||||
<DependentUpon>ctrlCleanup.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="ctrlClientAgent.resx">
|
||||
<DependentUpon>ctrlClientAgent.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="ctrlM42Wpm.resx">
|
||||
<DependentUpon>ctrlM42Wpm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="ctrlMainFunction.resx">
|
||||
<DependentUpon>ctrlMainFunction.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="ctrlNexthink.resx">
|
||||
<DependentUpon>ctrlNexthink.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="ctrlProtocolBox.resx">
|
||||
<DependentUpon>ctrlProtocolBox.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="ctrlF4SDAnalytics.resx">
|
||||
<DependentUpon>ctrlF4SDAnalytics.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="ctrlTestFunctions.resx">
|
||||
<DependentUpon>ctrlTestFunctions.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="frmMain2.resx">
|
||||
<DependentUpon>frmMain2.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="frmPasssword.resx">
|
||||
<DependentUpon>frmPasssword.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="Config\F4SD-Infrastructure-Configuration.xsd">
|
||||
<SubType>Designer</SubType>
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="..\..\C4IT FASD\_Common\XmlSchemas\F4SD-CopyTemplate-Configuration.xsd">
|
||||
<Link>Config\F4SD-CopyTemplate-Configuration.xsd</Link>
|
||||
<SubType>Designer</SubType>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="..\..\C4IT FASD\_Common\XmlSchemas\F4SD-HealthCard-Configuration.xsd">
|
||||
<Link>Config\F4SD-HealthCard-Configuration.xsd</Link>
|
||||
<SubType>Designer</SubType>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="..\..\C4IT FASD\_Common\XmlSchemas\F4SD-Icon-Configuration.xsd">
|
||||
<Link>Config\F4SD-Icon-Configuration.xsd</Link>
|
||||
<SubType>Designer</SubType>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="..\..\C4IT FASD\_Common\XmlSchemas\F4SD-MenuSection-Configuration.xsd">
|
||||
<Link>Config\F4SD-MenuSection-Configuration.xsd</Link>
|
||||
<SubType>Designer</SubType>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="..\..\C4IT FASD\_Common\XmlSchemas\F4SD-QuickAction-Configuration.xsd">
|
||||
<Link>Config\F4SD-QuickAction-Configuration.xsd</Link>
|
||||
<SubType>Designer</SubType>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="ctrlCitrix.resx">
|
||||
<DependentUpon>ctrlCitrix.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<None Include="app.manifest" />
|
||||
<EmbeddedResource Include="Config\F4SD-Global-Configuration.xsd">
|
||||
<SubType>Designer</SubType>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</EmbeddedResource>
|
||||
<None Include="packages.config" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="Config\F4SD-DataClusters-Configuration.xsd">
|
||||
<SubType>Designer</SubType>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="App.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Config\F4SD-CopyTemplate-Configuration.xml">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Config\F4SD-DataClusters-Configuration.xml">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Config\F4SD-Global-Configuration.xml">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Config\F4SD-HealthCard-Configuration.xml">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Config\F4SD-Icon-Configuration.xml">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Config\F4SD-Infrastructure-Configuration.xml">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Config\F4SD-MenuSection-Configuration.xml">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Config\F4SD-QuickAction-Configuration.xml">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Graphics\Error_24.png" />
|
||||
<Content Include="Graphics\OK_24.png" />
|
||||
<Content Include="Graphics\Warning_24.png" />
|
||||
<Content Include="License\F4SD_License.xml">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="logo_FASD.ico" />
|
||||
<None Include="Resources\Intrinsic_F4SD_License.xml" />
|
||||
<EmbeddedResource Include="DataHistorySql.xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\C4IT_DataHistoryProvider_Base\F4SD-Cockpit-Server.csproj">
|
||||
<Project>{49452fc2-05ce-4077-8b40-8adf5eca212e}</Project>
|
||||
<Name>F4SD-Cockpit-Server</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<PropertyGroup>
|
||||
<PreBuildEvent>
|
||||
copy "$(ProjectDir)..\..\C4IT FASD\_Common\XmlSchemas\*" "$(ProjectDir)Config"
|
||||
</PreBuildEvent>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,10 @@
|
||||
""
|
||||
{
|
||||
"FILE_VERSION" = "9237"
|
||||
"ENLISTMENT_CHOICE" = "NEVER"
|
||||
"PROJECT_FILE_RELATIVE_PATH" = ""
|
||||
"NUMBER_OF_EXCLUDED_FILES" = "0"
|
||||
"ORIGINAL_PROJECT_FILE_PATH" = ""
|
||||
"NUMBER_OF_NESTED_PROJECTS" = "0"
|
||||
"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER"
|
||||
}
|
||||
BIN
C4IT_DataHistoryProvider_Test/Graphics/Error_24.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
C4IT_DataHistoryProvider_Test/Graphics/OK_24.png
Normal file
|
After Width: | Height: | Size: 677 B |
BIN
C4IT_DataHistoryProvider_Test/Graphics/Warning_24.png
Normal file
|
After Width: | Height: | Size: 758 B |
12
C4IT_DataHistoryProvider_Test/License/F4SD_License.xml
Normal file
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<C4IT-License-Info Product="First Aid Service Desk (F4SD)" Id="776D99A6-D341-4B70-BA4B-2CC55B76A079">
|
||||
<License Id="FAE53860-0AE2-4A15-A5D5-7E56D4D29FDE" Revision="1.0" Type="PRODUCTIVE" Customer="Consulting4IT" CustomerId="A3A5E66E-6A91-44E2-9F3A-F04C67642BCB" StartDate="2024-12-01" EndDate="2025-12-31" Signature="SeNeSrKAq/rnvCVui7TMBHkTS4AnygizDBNdLe1w7EdMGaQ2xxTvOcsOrshwqznK/shgGvxofdux0YWV3XyxWeeGwfKqjPobWOnKhp5v3xfeVk+59dx29Yn3/4j+vcJrs8kBhOrZEAkeAHojFVZYsO/SbqWoOcqP5fDw673gjW8=">
|
||||
<License-Metrics Type="ManagedUsers" Count="10000" />
|
||||
<Modules>
|
||||
<Module Name="F4SD client agent connector" Id="F8A3284C-E481-4D08-A921-949D2EBD4E0B" />
|
||||
<Module Name="MS Active Directory connector" Id="B2D48023-56E8-44D5-AB77-BE1DCF4EA4EB" />
|
||||
<Module Name="Matrix42 WPM conntector" Id="9CE1A6BE-6A0C-4A27-94A5-44AB997B8E62" />
|
||||
<Module Name="Nexthink NXQL conntector" Id="51EA7764-3AD3-4F90-89DB-DEB0C60D655C" />
|
||||
</Modules>
|
||||
</License>
|
||||
</C4IT-License-Info>
|
||||
112
C4IT_DataHistoryProvider_Test/Program.cs
Normal file
@@ -0,0 +1,112 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Windows.Forms;
|
||||
using System.Diagnostics;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
using C4IT.Security;
|
||||
using C4IT.Logging;
|
||||
using C4IT.DataHistoryProvider;
|
||||
using C4IT.FASD.Security;
|
||||
using C4IT.FASD.Licensing;
|
||||
using System.Reflection;
|
||||
using static C4IT.Logging.cLogManager;
|
||||
using System.IO;
|
||||
|
||||
namespace C4IT_DataHistoryProvider_Test
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
public static frmMain2 mainForm;
|
||||
public static cDataHistoryCollector Collector = null;
|
||||
public static List<cDataHistoryInfoClassListEntry> UserList = null;
|
||||
static public Mutex AppMutex = null;
|
||||
|
||||
[STAThread]
|
||||
static void Main(string[] args)
|
||||
{
|
||||
// initialize the logging
|
||||
var LM = cLogManagerFile.Create(true, SubFolder: "Logs", DebugFlags: new List<string>() { "Performance", "ApiTiming" });
|
||||
cLogManager.DefaultLogger = LM.GetLogger();
|
||||
cLogManager.Instance = LM;
|
||||
cLogManager.DefaultLogger.LogAssemblyInfo();
|
||||
|
||||
if (LM.CheckDebugFlag("Performance"))
|
||||
{
|
||||
var FN = LM.GetLogFileName();
|
||||
var FN2 = Path.Combine(Path.GetDirectoryName(FN), Path.GetFileNameWithoutExtension(FN) + "-Perf.log");
|
||||
cPerformanceLogger.SetManager(cLogManagerFile.Create(FN2));
|
||||
}
|
||||
|
||||
DataHistorySqlHelper.LogSql = LM.CheckDebugFlag("ApiTiming");
|
||||
if (DataHistorySqlHelper.LogSql)
|
||||
DataHistorySqlHelper.SqlLogFileName = DataHistorySqlHelper.GetSqlLogFileName();
|
||||
|
||||
// initialize the password securitiy
|
||||
FasdSecurity.Init();
|
||||
|
||||
|
||||
// check this program is already started
|
||||
Assembly assembly = Assembly.GetExecutingAssembly();
|
||||
var ProductName = FileVersionInfo.GetVersionInfo(assembly.Location).ProductName;
|
||||
var attribute = (GuidAttribute)assembly.GetCustomAttributes(typeof(GuidAttribute), true)[0];
|
||||
var AssemblyGuid = attribute.Value;
|
||||
string MutexName = "Global\\" + ProductName + AssemblyGuid.ToString();
|
||||
try
|
||||
{
|
||||
AppMutex = new Mutex(false, MutexName);
|
||||
if (!AppMutex.WaitOne(0))
|
||||
{
|
||||
LogEntry("Application already started, exiting...", LogLevels.Info);
|
||||
AppMutex.Dispose();
|
||||
AppMutex = null;
|
||||
return;
|
||||
}
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogEntry("Cannot create application mutex, exiting...", LogLevels.Fatal);
|
||||
LogException(E);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// get the commandline command
|
||||
string Command = "";
|
||||
if ((args.Length > 0))
|
||||
Command = args[0].ToUpper();
|
||||
if (Command.StartsWith("/") || Command.StartsWith("-"))
|
||||
Command = Command.Remove(0, 1);
|
||||
|
||||
|
||||
// get the license file
|
||||
#if DEMOLICENSE
|
||||
var strLicPath = cF4SDLicense.GetProgramFolderLocation(Assembly.GetExecutingAssembly(), "..", "F4SD_License.xml");
|
||||
cF4SDLicense.Instance.LoadFromFile(strLicPath, false);
|
||||
if (!cF4SDLicense.Instance.IsValid)
|
||||
{
|
||||
cLogManager.DefaultLogger.LogEntry(LogLevels.Fatal, $"No valid license found, aborting...");
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
// start the application
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
|
||||
switch (Command)
|
||||
{
|
||||
case "PASSWORD":
|
||||
Application.Run(new frmPassword());
|
||||
break;
|
||||
default:
|
||||
mainForm = new frmMain2(Command == "COLLECT");
|
||||
Application.Run(mainForm);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
8
C4IT_DataHistoryProvider_Test/Properties/AssemblyInfo.cs
Normal file
@@ -0,0 +1,8 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
[assembly: AssemblyTitle("F4SD Cockpit Collector")]
|
||||
[assembly: ComVisible(false)]
|
||||
[assembly: Guid("5f839ff6-3ebc-438f-8775-7f6a25402e66")]
|
||||
|
||||
63
C4IT_DataHistoryProvider_Test/Properties/Resources.Designer.cs
generated
Normal file
@@ -0,0 +1,63 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace C4IT_DataHistoryProvider_Test.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("C4IT_DataHistoryProvider_Test.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
120
C4IT_DataHistoryProvider_Test/Properties/Resources.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
26
C4IT_DataHistoryProvider_Test/Properties/Settings.Designer.cs
generated
Normal file
@@ -0,0 +1,26 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace C4IT_DataHistoryProvider_Test.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default {
|
||||
get {
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
||||
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<C4IT-License-Info Product="First Aid Service Desk (F4SD)" Id="776D99A6-D341-4B70-BA4B-2CC55B76A079">
|
||||
<License Id="38EF5CD9-98E9-4B5B-B7EA-7BE6CBC2C883" Revision="1.0" Type="PRODUCTIVE" Customer="Intrinsic F4SD License" CustomerId="BF0B090F-EC5E-4F37-ADD2-3C8EA53BB1D5" Signature="l0pt5WlsKNdjXv5L7+V2uoz6r2NVgxRXM7Z4wOMEgR19T4xgpjKa4IZbQz45W4gVP9ZVSwipwz6AqskWEgZ7/s5IHXgDDb0l7rfHlAzcJuHEBW1T9iwCD8Huwc7ZhUds/OEg3r1iVlQCO0sy279lcA07d66j09mNhE2EP8rYF7c=">
|
||||
<License-Metrics Type="ManagedUsers" Count="10000" />
|
||||
<Modules>
|
||||
<Module Name="F4SD client agent connector" Id="F8A3284C-E481-4D08-A921-949D2EBD4E0B" />
|
||||
<Module Name="MS Active Directory connector" Id="B2D48023-56E8-44D5-AB77-BE1DCF4EA4EB" />
|
||||
</Modules>
|
||||
</License>
|
||||
</C4IT-License-Info>
|
||||
79
C4IT_DataHistoryProvider_Test/app.manifest
Normal file
@@ -0,0 +1,79 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
|
||||
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
|
||||
<security>
|
||||
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<!-- UAC Manifest Options
|
||||
If you want to change the Windows User Account Control level replace the
|
||||
requestedExecutionLevel node with one of the following.
|
||||
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
|
||||
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
|
||||
|
||||
Specifying requestedExecutionLevel element will disable file and registry virtualization.
|
||||
Remove this element if your application requires this virtualization for backwards
|
||||
compatibility.
|
||||
-->
|
||||
<!--<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />-->
|
||||
</requestedPrivileges>
|
||||
</security>
|
||||
</trustInfo>
|
||||
|
||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||
<application>
|
||||
<!-- A list of the Windows versions that this application has been tested on
|
||||
and is designed to work with. Uncomment the appropriate elements
|
||||
and Windows will automatically select the most compatible environment. -->
|
||||
|
||||
<!-- Windows Vista -->
|
||||
<!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
|
||||
|
||||
<!-- Windows 7 -->
|
||||
<!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
|
||||
|
||||
<!-- Windows 8 -->
|
||||
<!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
|
||||
|
||||
<!-- Windows 8.1 -->
|
||||
<!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
|
||||
|
||||
<!-- Windows 10 -->
|
||||
<!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->
|
||||
|
||||
</application>
|
||||
</compatibility>
|
||||
|
||||
<!-- Indicates that the application is DPI-aware and will not be automatically scaled by Windows at higher
|
||||
DPIs. Windows Presentation Foundation (WPF) applications are automatically DPI-aware and do not need
|
||||
to opt in. Windows Forms applications targeting .NET Framework 4.6 that opt into this setting, should
|
||||
also set the 'EnableWindowsFormsHighDpiAutoResizing' setting to 'true' in their app.config.
|
||||
|
||||
Makes the application long-path aware. See https://docs.microsoft.com/windows/win32/fileio/maximum-file-path-limitation -->
|
||||
<!--
|
||||
<application xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<windowsSettings>
|
||||
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
|
||||
<longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
|
||||
</windowsSettings>
|
||||
</application>
|
||||
-->
|
||||
|
||||
<!-- Enable themes for Windows common controls and dialogs (Windows XP and later) -->
|
||||
<!--
|
||||
<dependency>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity
|
||||
type="win32"
|
||||
name="Microsoft.Windows.Common-Controls"
|
||||
version="6.0.0.0"
|
||||
processorArchitecture="*"
|
||||
publicKeyToken="6595b64144ccf1df"
|
||||
language="*"
|
||||
/>
|
||||
</dependentAssembly>
|
||||
</dependency>
|
||||
-->
|
||||
|
||||
</assembly>
|
||||
163
C4IT_DataHistoryProvider_Test/ctrlActiveDirectory.Designer.cs
generated
Normal file
@@ -0,0 +1,163 @@
|
||||
|
||||
namespace C4IT_DataHistoryProvider_Test
|
||||
{
|
||||
partial class ctrlActiveDirectory
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.buttonScanAD = new System.Windows.Forms.Button();
|
||||
this.buttonRescan = new System.Windows.Forms.Button();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.textBoxScanLast = new System.Windows.Forms.TextBox();
|
||||
this.textBoxScanNext = new System.Windows.Forms.TextBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.panelScanNext = new System.Windows.Forms.Panel();
|
||||
this.buttonScanAzureAd = new System.Windows.Forms.Button();
|
||||
this.ctrlProtocolBox1 = new C4IT_DataHistoryProvider_Test.ctrlProtocolBox();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// buttonScanAD
|
||||
//
|
||||
this.buttonScanAD.Location = new System.Drawing.Point(24, 18);
|
||||
this.buttonScanAD.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.buttonScanAD.Name = "buttonScanAD";
|
||||
this.buttonScanAD.Size = new System.Drawing.Size(157, 51);
|
||||
this.buttonScanAD.TabIndex = 0;
|
||||
this.buttonScanAD.Text = "Scan Active Directory";
|
||||
this.buttonScanAD.UseVisualStyleBackColor = true;
|
||||
this.buttonScanAD.Click += new System.EventHandler(this.buttonScanAD_Click);
|
||||
//
|
||||
// buttonRescan
|
||||
//
|
||||
this.buttonRescan.Location = new System.Drawing.Point(189, 18);
|
||||
this.buttonRescan.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.buttonRescan.Name = "buttonRescan";
|
||||
this.buttonRescan.Size = new System.Drawing.Size(157, 51);
|
||||
this.buttonRescan.TabIndex = 1;
|
||||
this.buttonRescan.Text = "Full scan";
|
||||
this.buttonRescan.UseVisualStyleBackColor = true;
|
||||
this.buttonRescan.Click += new System.EventHandler(this.buttonRescan_Click);
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(22, 110);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(67, 16);
|
||||
this.label1.TabIndex = 4;
|
||||
this.label1.Text = "Last scan:";
|
||||
//
|
||||
// textBoxScanLast
|
||||
//
|
||||
this.textBoxScanLast.Location = new System.Drawing.Point(110, 107);
|
||||
this.textBoxScanLast.Name = "textBoxScanLast";
|
||||
this.textBoxScanLast.ReadOnly = true;
|
||||
this.textBoxScanLast.Size = new System.Drawing.Size(141, 22);
|
||||
this.textBoxScanLast.TabIndex = 5;
|
||||
//
|
||||
// textBoxScanNext
|
||||
//
|
||||
this.textBoxScanNext.Location = new System.Drawing.Point(393, 107);
|
||||
this.textBoxScanNext.Name = "textBoxScanNext";
|
||||
this.textBoxScanNext.ReadOnly = true;
|
||||
this.textBoxScanNext.Size = new System.Drawing.Size(141, 22);
|
||||
this.textBoxScanNext.TabIndex = 7;
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(294, 110);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(78, 16);
|
||||
this.label2.TabIndex = 6;
|
||||
this.label2.Text = "Target time:";
|
||||
//
|
||||
// panelScanNext
|
||||
//
|
||||
this.panelScanNext.Location = new System.Drawing.Point(540, 107);
|
||||
this.panelScanNext.Name = "panelScanNext";
|
||||
this.panelScanNext.Size = new System.Drawing.Size(26, 26);
|
||||
this.panelScanNext.TabIndex = 8;
|
||||
//
|
||||
// buttonScanAzureAd
|
||||
//
|
||||
this.buttonScanAzureAd.Location = new System.Drawing.Point(393, 18);
|
||||
this.buttonScanAzureAd.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.buttonScanAzureAd.Name = "buttonScanAzureAd";
|
||||
this.buttonScanAzureAd.Size = new System.Drawing.Size(157, 51);
|
||||
this.buttonScanAzureAd.TabIndex = 3;
|
||||
this.buttonScanAzureAd.Text = "Scan Azure AD only";
|
||||
this.buttonScanAzureAd.UseVisualStyleBackColor = true;
|
||||
this.buttonScanAzureAd.Visible = false;
|
||||
this.buttonScanAzureAd.Click += new System.EventHandler(this.buttonScanAzureAd_Click);
|
||||
//
|
||||
// ctrlProtocolBox1
|
||||
//
|
||||
this.ctrlProtocolBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ctrlProtocolBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.ctrlProtocolBox1.Location = new System.Drawing.Point(14, 148);
|
||||
this.ctrlProtocolBox1.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.ctrlProtocolBox1.Name = "ctrlProtocolBox1";
|
||||
this.ctrlProtocolBox1.Size = new System.Drawing.Size(1103, 195);
|
||||
this.ctrlProtocolBox1.TabIndex = 9;
|
||||
//
|
||||
// ctrlActiveDirectory
|
||||
//
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||
this.Controls.Add(this.buttonScanAzureAd);
|
||||
this.Controls.Add(this.panelScanNext);
|
||||
this.Controls.Add(this.textBoxScanNext);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.textBoxScanLast);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.buttonRescan);
|
||||
this.Controls.Add(this.buttonScanAD);
|
||||
this.Controls.Add(this.ctrlProtocolBox1);
|
||||
this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.Name = "ctrlActiveDirectory";
|
||||
this.Size = new System.Drawing.Size(962, 331);
|
||||
this.Load += new System.EventHandler(this.ctrlActiveDirectory_Load);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Button buttonScanAD;
|
||||
private System.Windows.Forms.Button buttonRescan;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.TextBox textBoxScanLast;
|
||||
private System.Windows.Forms.TextBox textBoxScanNext;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.Panel panelScanNext;
|
||||
private ctrlProtocolBox ctrlProtocolBox1;
|
||||
private System.Windows.Forms.Button buttonScanAzureAd;
|
||||
}
|
||||
}
|
||||
265
C4IT_DataHistoryProvider_Test/ctrlActiveDirectory.cs
Normal file
@@ -0,0 +1,265 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
using C4IT.Logging;
|
||||
using C4IT.XML;
|
||||
using C4IT.DataHistoryProvider;
|
||||
|
||||
using static C4IT.Logging.cLogManager;
|
||||
using C4IT.MsGraph;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System.Collections.ObjectModel;
|
||||
|
||||
namespace C4IT_DataHistoryProvider_Test
|
||||
{
|
||||
public partial class ctrlActiveDirectory : UserControl
|
||||
{
|
||||
public ctrlActiveDirectory()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private async void ctrlActiveDirectory_Load(object sender, EventArgs e)
|
||||
{
|
||||
panelScanNext.Height = textBoxScanNext.Height;
|
||||
panelScanNext.Top = textBoxScanNext.Top;
|
||||
|
||||
if (Program.Collector?.InfrastructureConfig?.AzureTenants != null && Program.Collector?.InfrastructureConfig?.AzureTenants.Count > 0)
|
||||
{
|
||||
buttonScanAzureAd.Visible = true;
|
||||
|
||||
}
|
||||
|
||||
if (Program.Collector?.InfrastructureConfig?.AzureTenants != null && Program.Collector?.InfrastructureConfig?.AzureTenants.Count > 0)
|
||||
{
|
||||
buttonScanAzureAd.Visible = true;
|
||||
|
||||
}
|
||||
|
||||
var _requestInfo = new cF4sdWebRequestInfo("ctrlActiveDirectory_Load", null);
|
||||
await checkScanTimesAsync(_requestInfo,1);
|
||||
}
|
||||
|
||||
private async Task checkScanTimesAsync(cF4sdWebRequestInfo requestInfo, int LogDeep)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
if (cPerformanceLogger.IsActive && requestInfo != null) { if (CM == null) CM = MethodBase.GetCurrentMethod(); cPerformanceLogger.LogPerformanceStart(LogDeep, CM, requestInfo.id, requestInfo.created); }
|
||||
var _startTime = DateTime.UtcNow;
|
||||
|
||||
try
|
||||
{
|
||||
var Col = Color.Transparent;
|
||||
textBoxScanLast.Text = "";
|
||||
textBoxScanNext.Text = "";
|
||||
|
||||
if (Program.Collector?.ActiveDirectory != null)
|
||||
{
|
||||
var scanInfo = await Program.Collector.ActiveDirectory.GetScanTimeInfoAsync(requestInfo, LogDeep+1, CancellationToken.None);
|
||||
|
||||
if (scanInfo?.NextScan is DateTime nextScan)
|
||||
{
|
||||
textBoxScanNext.Text = nextScan.ToLocalTime().ToString();
|
||||
if (scanInfo?.LastScan is DateTime lastScan)
|
||||
{
|
||||
textBoxScanLast.Text = lastScan.ToLocalTime().ToString();
|
||||
if (nextScan >= lastScan)
|
||||
Col = Color.Red;
|
||||
else
|
||||
Col = Color.Green;
|
||||
}
|
||||
else
|
||||
Col = Color.Red;
|
||||
}
|
||||
else
|
||||
{
|
||||
Col = Color.Red;
|
||||
if (scanInfo?.LastScan is DateTime lastScan)
|
||||
textBoxScanLast.Text = lastScan.ToLocalTime().ToString();
|
||||
}
|
||||
}
|
||||
|
||||
panelScanNext.BackColor = Col;
|
||||
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (cPerformanceLogger.IsActive && requestInfo != null) { cPerformanceLogger.LogPerformanceEnd(LogDeep, CM, requestInfo.id, requestInfo.created, _startTime); }
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
}
|
||||
|
||||
private async Task DoScan(bool Rescan, cF4sdWebRequestInfo requestInfo, int LogDeep)
|
||||
{
|
||||
if (Program.Collector == null || Program.Collector.ActiveDirectory == null)
|
||||
return;
|
||||
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
if (cPerformanceLogger.IsActive && requestInfo != null) { if (CM == null) CM = MethodBase.GetCurrentMethod(); cPerformanceLogger.LogPerformanceStart(LogDeep, CM, requestInfo.id, requestInfo.created); }
|
||||
var _startTime = DateTime.UtcNow;
|
||||
|
||||
try
|
||||
{
|
||||
Cursor = Cursors.WaitCursor;
|
||||
|
||||
ctrlProtocolBox1.ClearMessages();
|
||||
buttonScanAD.Enabled = false;
|
||||
|
||||
Program.mainForm.DisableAllTabPages(this);
|
||||
|
||||
Program.Collector.CleanupUiMessageHandler();
|
||||
Program.Collector.ProcessUiMessage += ctrlProtocolBox1.ProcessMessage;
|
||||
|
||||
var _requestInfo = new cF4sdWebRequestInfo("DoScanActiveDirectory", null);
|
||||
|
||||
await Program.Collector.ActiveDirectory.DoScanAsync(true, Rescan, _requestInfo, 1, CancellationToken.None);
|
||||
|
||||
await checkScanTimesAsync(requestInfo, LogDeep+1);
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
ctrlProtocolBox1.ProcessMessage("");
|
||||
Program.mainForm.EnableAllTabPages();
|
||||
buttonScanAD.Enabled = true;
|
||||
Cursor = Cursors.Default;
|
||||
|
||||
if (cPerformanceLogger.IsActive && requestInfo != null) { cPerformanceLogger.LogPerformanceEnd(LogDeep, CM, requestInfo.id, requestInfo.created, _startTime); }
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private async void buttonRescan_Click(object sender, EventArgs e)
|
||||
{
|
||||
var _requestInfo = new cF4sdWebRequestInfo("buttonRescan_Click", null);
|
||||
await DoScan(true, _requestInfo, 1);
|
||||
DoDeviceScanAzure(sender, e);
|
||||
}
|
||||
|
||||
private async void buttonScanAD_Click(object sender, EventArgs e)
|
||||
{
|
||||
var _requestInfo = new cF4sdWebRequestInfo("buttonScanAD_Click", null);
|
||||
await DoScan(false, _requestInfo, 1);
|
||||
DoDeviceScanAzure(sender,e);
|
||||
|
||||
}
|
||||
|
||||
private async void buttonScanAzureAd_Click(object sender, EventArgs e)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
|
||||
if (Program.Collector == null || Program.Collector.ActiveDirectory == null)
|
||||
return;
|
||||
|
||||
try
|
||||
{
|
||||
Cursor = Cursors.WaitCursor;
|
||||
|
||||
ctrlProtocolBox1.ClearMessages();
|
||||
buttonScanAD.Enabled = false;
|
||||
|
||||
Program.mainForm.DisableAllTabPages(this);
|
||||
|
||||
Program.Collector.CleanupUiMessageHandler();
|
||||
Program.Collector.ProcessUiMessage += ctrlProtocolBox1.ProcessMessage;
|
||||
|
||||
var _requestInfo = new cF4sdWebRequestInfo("buttonScanAzureAd_Click", null);
|
||||
await Program.Collector.ActiveDirectory.DoAzureScanAsync(_requestInfo, 1, CancellationToken.None);
|
||||
DoDeviceScanAzure(sender, e);
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
ctrlProtocolBox1.ProcessMessage("");
|
||||
Program.mainForm.EnableAllTabPages();
|
||||
buttonScanAD.Enabled = true;
|
||||
Cursor = Cursors.Default;
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
}
|
||||
|
||||
private async void DoDeviceScanAzure(object sender, EventArgs e)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
|
||||
if (Program.Collector == null || Program.Collector.ActiveDirectory == null)
|
||||
return;
|
||||
|
||||
try
|
||||
{
|
||||
Cursor = Cursors.WaitCursor;
|
||||
|
||||
Program.mainForm.DisableAllTabPages(this);
|
||||
|
||||
Program.Collector.CleanupUiMessageHandler();
|
||||
Program.Collector.ProcessUiMessage += ctrlProtocolBox1.ProcessMessage;
|
||||
|
||||
var _requestInfo = new cF4sdWebRequestInfo("DoDeviceScanAzure", null);
|
||||
await Program.Collector.ActiveDirectory.DoDeviceScanAzureAsync(_requestInfo, 1, CancellationToken.None);
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
ctrlProtocolBox1.ProcessMessage("");
|
||||
Program.mainForm.EnableAllTabPages();
|
||||
DoScanIntune(sender,e);
|
||||
Cursor = Cursors.Default;
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
}
|
||||
|
||||
private async void DoScanIntune(object sender, EventArgs e)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
|
||||
if (Program.Collector == null || Program.Collector.ActiveDirectory == null)
|
||||
return;
|
||||
|
||||
try
|
||||
{
|
||||
Cursor = Cursors.WaitCursor;
|
||||
|
||||
Program.mainForm.DisableAllTabPages(this);
|
||||
|
||||
Program.Collector.CleanupUiMessageHandler();
|
||||
Program.Collector.ProcessUiMessage += ctrlProtocolBox1.ProcessMessage;
|
||||
|
||||
var _requestInfo = new cF4sdWebRequestInfo("DoScanIntune", null);
|
||||
await Program.Collector.ActiveDirectory.DoScanIntuneAsync(null, 1, CancellationToken.None);
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
Program.mainForm.EnableAllTabPages();
|
||||
Cursor = Cursors.Default;
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
120
C4IT_DataHistoryProvider_Test/ctrlActiveDirectory.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
116
C4IT_DataHistoryProvider_Test/ctrlCitrix.Designer.cs
generated
Normal file
@@ -0,0 +1,116 @@
|
||||
namespace C4IT_DataHistoryProvider_Test
|
||||
{
|
||||
partial class ctrlCitrix
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.ctrlProtocolBox1 = new C4IT_DataHistoryProvider_Test.ctrlProtocolBox();
|
||||
this.buttonCheckConnection = new System.Windows.Forms.Button();
|
||||
this.btnGetUsers = new System.Windows.Forms.Button();
|
||||
this.btnGetSessions = new System.Windows.Forms.Button();
|
||||
this.btnScanUsers = new System.Windows.Forms.Button();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// ctrlProtocolBox1
|
||||
//
|
||||
this.ctrlProtocolBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ctrlProtocolBox1.Location = new System.Drawing.Point(22, 119);
|
||||
this.ctrlProtocolBox1.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.ctrlProtocolBox1.Name = "ctrlProtocolBox1";
|
||||
this.ctrlProtocolBox1.Size = new System.Drawing.Size(1057, 418);
|
||||
this.ctrlProtocolBox1.TabIndex = 13;
|
||||
//
|
||||
// buttonCheckConnection
|
||||
//
|
||||
this.buttonCheckConnection.Location = new System.Drawing.Point(22, 38);
|
||||
this.buttonCheckConnection.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6);
|
||||
this.buttonCheckConnection.Name = "buttonCheckConnection";
|
||||
this.buttonCheckConnection.Size = new System.Drawing.Size(210, 46);
|
||||
this.buttonCheckConnection.TabIndex = 14;
|
||||
this.buttonCheckConnection.Text = "Check Citrix connection";
|
||||
this.buttonCheckConnection.UseVisualStyleBackColor = true;
|
||||
this.buttonCheckConnection.Click += new System.EventHandler(this.buttonCheckConnection_Click);
|
||||
//
|
||||
// btnGetUsers
|
||||
//
|
||||
this.btnGetUsers.Location = new System.Drawing.Point(242, 38);
|
||||
this.btnGetUsers.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6);
|
||||
this.btnGetUsers.Name = "btnGetUsers";
|
||||
this.btnGetUsers.Size = new System.Drawing.Size(210, 46);
|
||||
this.btnGetUsers.TabIndex = 15;
|
||||
this.btnGetUsers.Text = "Get users";
|
||||
this.btnGetUsers.UseVisualStyleBackColor = true;
|
||||
this.btnGetUsers.Click += new System.EventHandler(this.btnGetUsers_Click);
|
||||
//
|
||||
// btnGetSessions
|
||||
//
|
||||
this.btnGetSessions.Location = new System.Drawing.Point(462, 38);
|
||||
this.btnGetSessions.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6);
|
||||
this.btnGetSessions.Name = "btnGetSessions";
|
||||
this.btnGetSessions.Size = new System.Drawing.Size(210, 46);
|
||||
this.btnGetSessions.TabIndex = 16;
|
||||
this.btnGetSessions.Text = "Get sessions";
|
||||
this.btnGetSessions.UseVisualStyleBackColor = true;
|
||||
this.btnGetSessions.Click += new System.EventHandler(this.btnGetSessions_Click);
|
||||
//
|
||||
// btnScanUsers
|
||||
//
|
||||
this.btnScanUsers.Location = new System.Drawing.Point(682, 38);
|
||||
this.btnScanUsers.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6);
|
||||
this.btnScanUsers.Name = "btnScanUsers";
|
||||
this.btnScanUsers.Size = new System.Drawing.Size(210, 46);
|
||||
this.btnScanUsers.TabIndex = 17;
|
||||
this.btnScanUsers.Text = "Scan Users";
|
||||
this.btnScanUsers.UseVisualStyleBackColor = true;
|
||||
this.btnScanUsers.Click += new System.EventHandler(this.btnScanUsers_Click);
|
||||
//
|
||||
// ctrlCitrix
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.btnScanUsers);
|
||||
this.Controls.Add(this.btnGetSessions);
|
||||
this.Controls.Add(this.btnGetUsers);
|
||||
this.Controls.Add(this.buttonCheckConnection);
|
||||
this.Controls.Add(this.ctrlProtocolBox1);
|
||||
this.Name = "ctrlCitrix";
|
||||
this.Size = new System.Drawing.Size(1137, 596);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private ctrlProtocolBox ctrlProtocolBox1;
|
||||
private System.Windows.Forms.Button buttonCheckConnection;
|
||||
private System.Windows.Forms.Button btnGetUsers;
|
||||
private System.Windows.Forms.Button btnGetSessions;
|
||||
private System.Windows.Forms.Button btnScanUsers;
|
||||
}
|
||||
}
|
||||
212
C4IT_DataHistoryProvider_Test/ctrlCitrix.cs
Normal file
@@ -0,0 +1,212 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using C4IT.DataHistoryProvider;
|
||||
using System.Reflection;
|
||||
using C4IT.Logging;
|
||||
|
||||
|
||||
using static C4IT.Logging.cLogManager;
|
||||
using System.Threading;
|
||||
namespace C4IT_DataHistoryProvider_Test
|
||||
{
|
||||
public partial class ctrlCitrix: UserControl
|
||||
{
|
||||
public ctrlCitrix()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private async void buttonCheckConnection_Click(object sender, EventArgs e)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
try
|
||||
{
|
||||
Cursor = Cursors.WaitCursor;
|
||||
|
||||
|
||||
|
||||
if (Program.Collector == null)
|
||||
return;
|
||||
|
||||
|
||||
Program.Collector.CleanupUiMessageHandler();
|
||||
Program.Collector.ProcessUiMessage += ctrlProtocolBox1.ProcessMessage;
|
||||
var _requestInfo = new cF4sdWebRequestInfo("btnConnectCitrix_Click", null);
|
||||
var tenants = Program.Collector.InfrastructureConfig.CitrixTenants?.Values;
|
||||
|
||||
|
||||
foreach (var Tenant in tenants)
|
||||
{
|
||||
var result = await Program.Collector.CitrixCollector.GetCitrixCommunicationForTenantAsync(Tenant.TenantID, false);
|
||||
if (result != null)
|
||||
{
|
||||
ctrlProtocolBox1.ProcessMessage($"Citrix connection for tenant {Tenant.TenantID} successful");
|
||||
}
|
||||
else
|
||||
{
|
||||
ctrlProtocolBox1.ProcessMessage($"Citrix connection for tenant {Tenant.TenantID} failed");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
Cursor = Cursors.Default;
|
||||
}
|
||||
}
|
||||
|
||||
public async void btnGetUsers_Click(object sender, EventArgs e)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
try
|
||||
{
|
||||
Cursor = Cursors.WaitCursor;
|
||||
|
||||
|
||||
|
||||
if (Program.Collector == null)
|
||||
return;
|
||||
|
||||
|
||||
Program.Collector.CleanupUiMessageHandler();
|
||||
Program.Collector.ProcessUiMessage += ctrlProtocolBox1.ProcessMessage;
|
||||
var _requestInfo = new cF4sdWebRequestInfo("btnConnectCitrix_Click", null);
|
||||
var tenants = Program.Collector.InfrastructureConfig.CitrixTenants?.Values;
|
||||
|
||||
|
||||
foreach (var Tenant in tenants)
|
||||
{
|
||||
var result = await Program.Collector.CitrixCollector.GetCitrixUsersAsync();
|
||||
if (result != null)
|
||||
{
|
||||
ctrlProtocolBox1.ProcessMessage($"Citrix connection for tenant {Tenant.TenantID} successful");
|
||||
}
|
||||
else
|
||||
{
|
||||
ctrlProtocolBox1.ProcessMessage($"Citrix connection for tenant {Tenant.TenantID} failed");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
Cursor = Cursors.Default;
|
||||
}
|
||||
}
|
||||
|
||||
public async void btnGetSessions_Click(object sender, EventArgs e)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
try
|
||||
{
|
||||
Cursor = Cursors.WaitCursor;
|
||||
|
||||
|
||||
|
||||
if (Program.Collector == null)
|
||||
return;
|
||||
|
||||
|
||||
Program.Collector.CleanupUiMessageHandler();
|
||||
Program.Collector.ProcessUiMessage += ctrlProtocolBox1.ProcessMessage;
|
||||
var _requestInfo = new cF4sdWebRequestInfo("btnGetSessions_Click", null);
|
||||
var tenants = Program.Collector.InfrastructureConfig.CitrixTenants?.Values;
|
||||
|
||||
|
||||
foreach (var Tenant in tenants)
|
||||
{
|
||||
var result = await Program.Collector.CitrixCollector.GetCitrixSessionsAsync();
|
||||
if (result != null)
|
||||
{
|
||||
ctrlProtocolBox1.ProcessMessage($"Citrix connection for tenant {Tenant.TenantID} successful");
|
||||
}
|
||||
else
|
||||
{
|
||||
ctrlProtocolBox1.ProcessMessage($"Citrix connection for tenant {Tenant.TenantID} failed");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
Cursor = Cursors.Default;
|
||||
}
|
||||
}
|
||||
|
||||
private async void btnScanUsers_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (Program.Collector == null || Program.Collector.ActiveDirectory == null)
|
||||
return;
|
||||
var requestInfo = new cF4sdWebRequestInfo("buttonUserCitrix_Click", null);
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
if (cPerformanceLogger.IsActive && requestInfo != null) { if (CM == null) CM = MethodBase.GetCurrentMethod(); cPerformanceLogger.LogPerformanceStart(1, CM, requestInfo.id, requestInfo.created); }
|
||||
var _startTime = DateTime.UtcNow;
|
||||
try
|
||||
{
|
||||
Cursor = Cursors.WaitCursor;
|
||||
|
||||
|
||||
|
||||
if (Program.Collector == null)
|
||||
return;
|
||||
|
||||
|
||||
Program.Collector.CleanupUiMessageHandler();
|
||||
Program.Collector.ProcessUiMessage += ctrlProtocolBox1.ProcessMessage;
|
||||
var _requestInfo = new cF4sdWebRequestInfo("btnScanUsers_Click", null);
|
||||
var tenants = Program.Collector.InfrastructureConfig.CitrixTenants?.Values;
|
||||
|
||||
|
||||
foreach (var Tenant in tenants)
|
||||
{
|
||||
var result = await Program.Collector.CitrixCollector.DoScanAsync(true, true, _requestInfo, 1, CancellationToken.None);
|
||||
if (result)
|
||||
{
|
||||
ctrlProtocolBox1.ProcessMessage($"Citrix connection for tenant {Tenant.TenantID} successful");
|
||||
}
|
||||
else
|
||||
{
|
||||
ctrlProtocolBox1.ProcessMessage($"Citrix connection for tenant {Tenant.TenantID} failed");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
Cursor = Cursors.Default;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
120
C4IT_DataHistoryProvider_Test/ctrlCitrix.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
142
C4IT_DataHistoryProvider_Test/ctrlCleanup.Designer.cs
generated
Normal file
@@ -0,0 +1,142 @@
|
||||
|
||||
namespace C4IT_DataHistoryProvider_Test
|
||||
{
|
||||
partial class ctrlCleanup
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.textBoxCleanupsCount = new System.Windows.Forms.TextBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.buttonDoCleanups = new System.Windows.Forms.Button();
|
||||
this.buttonScanCleanups = new System.Windows.Forms.Button();
|
||||
this.panelValidTime = new System.Windows.Forms.Panel();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.ctrlProtocolBox1 = new C4IT_DataHistoryProvider_Test.ctrlProtocolBox();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// textBoxCleanupsCount
|
||||
//
|
||||
this.textBoxCleanupsCount.Location = new System.Drawing.Point(186, 160);
|
||||
this.textBoxCleanupsCount.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.textBoxCleanupsCount.Name = "textBoxCleanupsCount";
|
||||
this.textBoxCleanupsCount.ReadOnly = true;
|
||||
this.textBoxCleanupsCount.Size = new System.Drawing.Size(85, 26);
|
||||
this.textBoxCleanupsCount.TabIndex = 10;
|
||||
this.textBoxCleanupsCount.Text = "-";
|
||||
this.textBoxCleanupsCount.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(35, 165);
|
||||
this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(140, 20);
|
||||
this.label1.TabIndex = 9;
|
||||
this.label1.Text = "Possible cleanups:";
|
||||
//
|
||||
// buttonDoCleanups
|
||||
//
|
||||
this.buttonDoCleanups.Enabled = false;
|
||||
this.buttonDoCleanups.Location = new System.Drawing.Point(285, 39);
|
||||
this.buttonDoCleanups.Margin = new System.Windows.Forms.Padding(6, 8, 6, 8);
|
||||
this.buttonDoCleanups.Name = "buttonDoCleanups";
|
||||
this.buttonDoCleanups.Size = new System.Drawing.Size(235, 79);
|
||||
this.buttonDoCleanups.TabIndex = 8;
|
||||
this.buttonDoCleanups.Text = "Do cleanups";
|
||||
this.buttonDoCleanups.UseVisualStyleBackColor = true;
|
||||
this.buttonDoCleanups.Click += new System.EventHandler(this.buttonDoCleanups_Click);
|
||||
//
|
||||
// buttonScanCleanups
|
||||
//
|
||||
this.buttonScanCleanups.Location = new System.Drawing.Point(37, 39);
|
||||
this.buttonScanCleanups.Margin = new System.Windows.Forms.Padding(6, 8, 6, 8);
|
||||
this.buttonScanCleanups.Name = "buttonScanCleanups";
|
||||
this.buttonScanCleanups.Size = new System.Drawing.Size(235, 79);
|
||||
this.buttonScanCleanups.TabIndex = 6;
|
||||
this.buttonScanCleanups.Text = "Scan for cleanups";
|
||||
this.buttonScanCleanups.UseVisualStyleBackColor = true;
|
||||
this.buttonScanCleanups.Click += new System.EventHandler(this.buttonScanCleanups_Click);
|
||||
//
|
||||
// panelValidTime
|
||||
//
|
||||
this.panelValidTime.Location = new System.Drawing.Point(403, 158);
|
||||
this.panelValidTime.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
|
||||
this.panelValidTime.Name = "panelValidTime";
|
||||
this.panelValidTime.Size = new System.Drawing.Size(29, 32);
|
||||
this.panelValidTime.TabIndex = 12;
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(317, 165);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(82, 20);
|
||||
this.label2.TabIndex = 11;
|
||||
this.label2.Text = "Valid time:";
|
||||
//
|
||||
// ctrlProtocolBox1
|
||||
//
|
||||
this.ctrlProtocolBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ctrlProtocolBox1.Location = new System.Drawing.Point(37, 239);
|
||||
this.ctrlProtocolBox1.Name = "ctrlProtocolBox1";
|
||||
this.ctrlProtocolBox1.Size = new System.Drawing.Size(895, 392);
|
||||
this.ctrlProtocolBox1.TabIndex = 13;
|
||||
//
|
||||
// ctrlCleanup
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.panelValidTime);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.textBoxCleanupsCount);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.buttonDoCleanups);
|
||||
this.Controls.Add(this.buttonScanCleanups);
|
||||
this.Controls.Add(this.ctrlProtocolBox1);
|
||||
this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.Name = "ctrlCleanup";
|
||||
this.Size = new System.Drawing.Size(969, 672);
|
||||
this.Load += new System.EventHandler(this.ctrlCleanup_Load);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.TextBox textBoxCleanupsCount;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Button buttonDoCleanups;
|
||||
private System.Windows.Forms.Button buttonScanCleanups;
|
||||
private System.Windows.Forms.Panel panelValidTime;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private ctrlProtocolBox ctrlProtocolBox1;
|
||||
}
|
||||
}
|
||||
109
C4IT_DataHistoryProvider_Test/ctrlCleanup.cs
Normal file
@@ -0,0 +1,109 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
using C4IT.Logging;
|
||||
using C4IT.XML;
|
||||
using C4IT.DataHistoryProvider;
|
||||
|
||||
using static C4IT.Logging.cLogManager;
|
||||
|
||||
namespace C4IT_DataHistoryProvider_Test
|
||||
{
|
||||
public partial class ctrlCleanup : UserControl
|
||||
{
|
||||
public ctrlCleanup()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void CheckInTime()
|
||||
{
|
||||
if (Program.Collector != null)
|
||||
{
|
||||
var InTime = Program.Collector.CheckCleanupTimeframes();
|
||||
if (InTime)
|
||||
panelValidTime.BackColor = Color.Green;
|
||||
else
|
||||
panelValidTime.BackColor = Color.Red;
|
||||
}
|
||||
}
|
||||
|
||||
private void ctrlCleanup_Load(object sender, EventArgs e)
|
||||
{
|
||||
CheckInTime();
|
||||
}
|
||||
|
||||
private async void buttonScanCleanups_Click(object sender, EventArgs e)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
try
|
||||
{
|
||||
if (Program.Collector == null)
|
||||
return;
|
||||
|
||||
Cursor = Cursors.WaitCursor;
|
||||
this.Enabled = false;
|
||||
textBoxCleanupsCount.Text = "-";
|
||||
|
||||
var _requestInfo = new cF4sdWebRequestInfo("buttonScanCleanups_Click", null);
|
||||
var res = await Program.Collector.CheckCleanup(_requestInfo, 1, CancellationToken.None);
|
||||
textBoxCleanupsCount.Text = res.ToString();
|
||||
buttonDoCleanups.Enabled = res > 0;
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
this.Enabled = true;
|
||||
Cursor = Cursors.Default;
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
}
|
||||
|
||||
private async void buttonDoCleanups_Click(object sender, EventArgs e)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
try
|
||||
{
|
||||
if (Program.Collector == null)
|
||||
return;
|
||||
|
||||
Cursor = Cursors.WaitCursor;
|
||||
this.Enabled = false;
|
||||
|
||||
var _requestInfo = new cF4sdWebRequestInfo("buttonDoCleanups_Click", null);
|
||||
var res = await Program.Collector.DoCleanup(true, _requestInfo, 1, CancellationToken.None);
|
||||
if (res < 0)
|
||||
ctrlProtocolBox1.ProcessMessage($"error while removing history scan data.");
|
||||
else
|
||||
ctrlProtocolBox1.ProcessMessage($"{res} history scans removed successful");
|
||||
|
||||
var res2 = await Program.Collector.CheckCleanup(_requestInfo, 1, CancellationToken.None);
|
||||
|
||||
textBoxCleanupsCount.Text = res2.ToString();
|
||||
buttonDoCleanups.Enabled = res2 > 0;
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
this.Enabled = true;
|
||||
Cursor = Cursors.Default;
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
120
C4IT_DataHistoryProvider_Test/ctrlCleanup.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
131
C4IT_DataHistoryProvider_Test/ctrlClientAgent.Designer.cs
generated
Normal file
@@ -0,0 +1,131 @@
|
||||
|
||||
namespace C4IT_DataHistoryProvider_Test
|
||||
{
|
||||
partial class ctrlClientAgent
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.buttonScanClientAgent = new System.Windows.Forms.Button();
|
||||
this.textBoxScanNext = new System.Windows.Forms.TextBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.textBoxScanLast = new System.Windows.Forms.TextBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.panelScanNext = new System.Windows.Forms.Panel();
|
||||
this.ctrlProtocolBox1 = new C4IT_DataHistoryProvider_Test.ctrlProtocolBox();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// buttonScanClientAgent
|
||||
//
|
||||
this.buttonScanClientAgent.Location = new System.Drawing.Point(24, 22);
|
||||
this.buttonScanClientAgent.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.buttonScanClientAgent.Name = "buttonScanClientAgent";
|
||||
this.buttonScanClientAgent.Size = new System.Drawing.Size(212, 51);
|
||||
this.buttonScanClientAgent.TabIndex = 3;
|
||||
this.buttonScanClientAgent.Text = "Scan client agent data";
|
||||
this.buttonScanClientAgent.UseVisualStyleBackColor = true;
|
||||
this.buttonScanClientAgent.Click += new System.EventHandler(this.buttonScanClientAgent_Click);
|
||||
//
|
||||
// textBoxScanNext
|
||||
//
|
||||
this.textBoxScanNext.Location = new System.Drawing.Point(391, 95);
|
||||
this.textBoxScanNext.Name = "textBoxScanNext";
|
||||
this.textBoxScanNext.ReadOnly = true;
|
||||
this.textBoxScanNext.Size = new System.Drawing.Size(141, 26);
|
||||
this.textBoxScanNext.TabIndex = 11;
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(292, 98);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(93, 20);
|
||||
this.label2.TabIndex = 10;
|
||||
this.label2.Text = "Target time:";
|
||||
//
|
||||
// textBoxScanLast
|
||||
//
|
||||
this.textBoxScanLast.Location = new System.Drawing.Point(108, 95);
|
||||
this.textBoxScanLast.Name = "textBoxScanLast";
|
||||
this.textBoxScanLast.ReadOnly = true;
|
||||
this.textBoxScanLast.Size = new System.Drawing.Size(141, 26);
|
||||
this.textBoxScanLast.TabIndex = 9;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(20, 98);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(82, 20);
|
||||
this.label1.TabIndex = 8;
|
||||
this.label1.Text = "Last scan:";
|
||||
//
|
||||
// panelScanNext
|
||||
//
|
||||
this.panelScanNext.Location = new System.Drawing.Point(542, 95);
|
||||
this.panelScanNext.Name = "panelScanNext";
|
||||
this.panelScanNext.Size = new System.Drawing.Size(26, 26);
|
||||
this.panelScanNext.TabIndex = 12;
|
||||
//
|
||||
// ctrlProtocolBox1
|
||||
//
|
||||
this.ctrlProtocolBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ctrlProtocolBox1.Location = new System.Drawing.Point(24, 144);
|
||||
this.ctrlProtocolBox1.Name = "ctrlProtocolBox1";
|
||||
this.ctrlProtocolBox1.Size = new System.Drawing.Size(893, 349);
|
||||
this.ctrlProtocolBox1.TabIndex = 13;
|
||||
//
|
||||
// ctrlClientAgent
|
||||
//
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||
this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
|
||||
this.Controls.Add(this.panelScanNext);
|
||||
this.Controls.Add(this.textBoxScanNext);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.textBoxScanLast);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.buttonScanClientAgent);
|
||||
this.Controls.Add(this.ctrlProtocolBox1);
|
||||
this.Name = "ctrlClientAgent";
|
||||
this.Size = new System.Drawing.Size(938, 519);
|
||||
this.Load += new System.EventHandler(this.ctrlClientAgent_Load);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
private System.Windows.Forms.Button buttonScanClientAgent;
|
||||
private System.Windows.Forms.TextBox textBoxScanNext;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.TextBox textBoxScanLast;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Panel panelScanNext;
|
||||
private ctrlProtocolBox ctrlProtocolBox1;
|
||||
}
|
||||
}
|
||||
129
C4IT_DataHistoryProvider_Test/ctrlClientAgent.cs
Normal file
@@ -0,0 +1,129 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
using C4IT.Logging;
|
||||
using C4IT.XML;
|
||||
using C4IT.DataHistoryProvider;
|
||||
|
||||
using static C4IT.Logging.cLogManager;
|
||||
|
||||
namespace C4IT_DataHistoryProvider_Test
|
||||
{
|
||||
public partial class ctrlClientAgent : UserControl
|
||||
{
|
||||
public ctrlClientAgent()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private async void ctrlClientAgent_Load(object sender, EventArgs e)
|
||||
{
|
||||
panelScanNext.Height = textBoxScanNext.Height;
|
||||
panelScanNext.Top = textBoxScanNext.Top;
|
||||
|
||||
var _requestInfo = new cF4sdWebRequestInfo("ctrlClientAgent_Load", null);
|
||||
await checkScanTimesAsync(_requestInfo, 1);
|
||||
}
|
||||
|
||||
private async Task checkScanTimesAsync(cF4sdWebRequestInfo requestInfo, int LogDeep)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
if (cPerformanceLogger.IsActive && requestInfo != null) { if (CM == null) CM = MethodBase.GetCurrentMethod(); cPerformanceLogger.LogPerformanceStart(LogDeep, CM, requestInfo.id, requestInfo.created); }
|
||||
var _startTime = DateTime.UtcNow;
|
||||
|
||||
try
|
||||
{
|
||||
var Col = Color.Transparent;
|
||||
textBoxScanLast.Text = "";
|
||||
textBoxScanNext.Text = "";
|
||||
|
||||
if (Program.Collector?.F4sdAgent != null)
|
||||
{
|
||||
var scanInfo = await Program.Collector.F4sdAgent.GetScanTimeInfoAsync(requestInfo, LogDeep+1, CancellationToken.None);
|
||||
|
||||
|
||||
if (scanInfo?.NextScan is DateTime nextScan)
|
||||
{
|
||||
textBoxScanNext.Text = nextScan.ToLocalTime().ToString();
|
||||
if (scanInfo?.LastScan is DateTime lastScan)
|
||||
{
|
||||
textBoxScanLast.Text = lastScan.ToLocalTime().ToString();
|
||||
if (nextScan >= lastScan)
|
||||
Col = Color.Red;
|
||||
else
|
||||
Col = Color.Green;
|
||||
}
|
||||
else
|
||||
Col = Color.Red;
|
||||
}
|
||||
else
|
||||
{
|
||||
Col = Color.Red;
|
||||
if (scanInfo?.LastScan is DateTime lastScan)
|
||||
textBoxScanLast.Text = lastScan.ToLocalTime().ToString();
|
||||
}
|
||||
}
|
||||
|
||||
panelScanNext.BackColor = Col;
|
||||
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (cPerformanceLogger.IsActive && requestInfo != null) { cPerformanceLogger.LogPerformanceEnd(LogDeep, CM, requestInfo.id, requestInfo.created, _startTime); }
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
}
|
||||
|
||||
private async void buttonScanClientAgent_Click(object sender, EventArgs e)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
|
||||
if (Program.Collector == null)
|
||||
return;
|
||||
|
||||
try
|
||||
{
|
||||
Cursor = Cursors.WaitCursor;
|
||||
|
||||
ctrlProtocolBox1.ClearMessages();
|
||||
buttonScanClientAgent.Enabled = false;
|
||||
|
||||
Program.mainForm.DisableAllTabPages(this);
|
||||
|
||||
Program.Collector.CleanupUiMessageHandler();
|
||||
Program.Collector.ProcessUiMessage += ctrlProtocolBox1.ProcessMessage;
|
||||
var _requestInfo = new cF4sdWebRequestInfo("buttonScanClientAgent_Click", null);
|
||||
await Program.Collector.F4sdAgent.DoScanAsync(true, true, _requestInfo, 1, CancellationToken.None);
|
||||
|
||||
await checkScanTimesAsync(_requestInfo, 1);
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
ctrlProtocolBox1.ProcessMessage("");
|
||||
Program.mainForm.EnableAllTabPages();
|
||||
buttonScanClientAgent.Enabled = true;
|
||||
Cursor = Cursors.Default;
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
120
C4IT_DataHistoryProvider_Test/ctrlClientAgent.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
222
C4IT_DataHistoryProvider_Test/ctrlF4SDAnalytics.Designer.cs
generated
Normal file
@@ -0,0 +1,222 @@
|
||||
namespace C4IT_DataHistoryProvider_Test
|
||||
{
|
||||
partial class ctrlF4SDAnalytics
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.btnCreateSession = new System.Windows.Forms.Button();
|
||||
this.btnCloseSession = new System.Windows.Forms.Button();
|
||||
this.TimerLabel = new System.Windows.Forms.Label();
|
||||
this.grpBoxCase = new System.Windows.Forms.GroupBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.btnStartCase = new System.Windows.Forms.Button();
|
||||
this.comboBoxUserSelect = new System.Windows.Forms.ComboBox();
|
||||
this.btnCloseCase = new System.Windows.Forms.Button();
|
||||
this.btnCancelCase = new System.Windows.Forms.Button();
|
||||
this.btnHoldCase = new System.Windows.Forms.Button();
|
||||
this.btnQAExecutions = new System.Windows.Forms.Button();
|
||||
this.grpBoxQA = new System.Windows.Forms.GroupBox();
|
||||
this.ctrlProtocolBox1 = new C4IT_DataHistoryProvider_Test.ctrlProtocolBox();
|
||||
this.grpBoxCase.SuspendLayout();
|
||||
this.grpBoxQA.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// btnCreateSession
|
||||
//
|
||||
this.btnCreateSession.Location = new System.Drawing.Point(26, 95);
|
||||
this.btnCreateSession.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.btnCreateSession.Name = "btnCreateSession";
|
||||
this.btnCreateSession.Size = new System.Drawing.Size(162, 33);
|
||||
this.btnCreateSession.TabIndex = 0;
|
||||
this.btnCreateSession.Text = "Create Session";
|
||||
this.btnCreateSession.UseVisualStyleBackColor = true;
|
||||
this.btnCreateSession.Click += new System.EventHandler(this.buttonCreateSession_Click);
|
||||
//
|
||||
// btnCloseSession
|
||||
//
|
||||
this.btnCloseSession.Location = new System.Drawing.Point(26, 133);
|
||||
this.btnCloseSession.Name = "btnCloseSession";
|
||||
this.btnCloseSession.Size = new System.Drawing.Size(162, 33);
|
||||
this.btnCloseSession.TabIndex = 5;
|
||||
this.btnCloseSession.Text = "Close Session";
|
||||
this.btnCloseSession.UseVisualStyleBackColor = true;
|
||||
this.btnCloseSession.Click += new System.EventHandler(this.buttonCloseSession_Click);
|
||||
//
|
||||
// TimerLabel
|
||||
//
|
||||
this.TimerLabel.Location = new System.Drawing.Point(0, 0);
|
||||
this.TimerLabel.Name = "TimerLabel";
|
||||
this.TimerLabel.Size = new System.Drawing.Size(100, 23);
|
||||
this.TimerLabel.TabIndex = 14;
|
||||
//
|
||||
// grpBoxCase
|
||||
//
|
||||
this.grpBoxCase.Controls.Add(this.label1);
|
||||
this.grpBoxCase.Controls.Add(this.btnStartCase);
|
||||
this.grpBoxCase.Controls.Add(this.comboBoxUserSelect);
|
||||
this.grpBoxCase.Controls.Add(this.btnCloseCase);
|
||||
this.grpBoxCase.Controls.Add(this.btnCancelCase);
|
||||
this.grpBoxCase.Controls.Add(this.btnHoldCase);
|
||||
this.grpBoxCase.Controls.Add(this.TimerLabel);
|
||||
this.grpBoxCase.Location = new System.Drawing.Point(218, 26);
|
||||
this.grpBoxCase.Name = "grpBoxCase";
|
||||
this.grpBoxCase.Size = new System.Drawing.Size(307, 183);
|
||||
this.grpBoxCase.TabIndex = 9;
|
||||
this.grpBoxCase.TabStop = false;
|
||||
this.grpBoxCase.Text = "Case";
|
||||
this.grpBoxCase.Visible = false;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(37, 23);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(39, 16);
|
||||
this.label1.TabIndex = 15;
|
||||
this.label1.Text = "User:";
|
||||
//
|
||||
// btnStartCase
|
||||
//
|
||||
this.btnStartCase.Location = new System.Drawing.Point(82, 48);
|
||||
this.btnStartCase.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.btnStartCase.Name = "btnStartCase";
|
||||
this.btnStartCase.Size = new System.Drawing.Size(107, 25);
|
||||
this.btnStartCase.TabIndex = 13;
|
||||
this.btnStartCase.Text = "Start";
|
||||
this.btnStartCase.UseVisualStyleBackColor = true;
|
||||
this.btnStartCase.Click += new System.EventHandler(this.btnStartCase_Click);
|
||||
//
|
||||
// comboBoxUserSelect
|
||||
//
|
||||
this.comboBoxUserSelect.FormattingEnabled = true;
|
||||
this.comboBoxUserSelect.Location = new System.Drawing.Point(82, 19);
|
||||
this.comboBoxUserSelect.Name = "comboBoxUserSelect";
|
||||
this.comboBoxUserSelect.Size = new System.Drawing.Size(191, 24);
|
||||
this.comboBoxUserSelect.TabIndex = 10;
|
||||
//
|
||||
// btnCloseCase
|
||||
//
|
||||
this.btnCloseCase.Location = new System.Drawing.Point(82, 135);
|
||||
this.btnCloseCase.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.btnCloseCase.Name = "btnCloseCase";
|
||||
this.btnCloseCase.Size = new System.Drawing.Size(107, 25);
|
||||
this.btnCloseCase.TabIndex = 12;
|
||||
this.btnCloseCase.Text = "Finish";
|
||||
this.btnCloseCase.UseVisualStyleBackColor = true;
|
||||
this.btnCloseCase.Click += new System.EventHandler(this.btnCloseCase_Click);
|
||||
//
|
||||
// btnCancelCase
|
||||
//
|
||||
this.btnCancelCase.Location = new System.Drawing.Point(82, 106);
|
||||
this.btnCancelCase.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.btnCancelCase.Name = "btnCancelCase";
|
||||
this.btnCancelCase.Size = new System.Drawing.Size(107, 25);
|
||||
this.btnCancelCase.TabIndex = 11;
|
||||
this.btnCancelCase.Text = "Cancel";
|
||||
this.btnCancelCase.UseVisualStyleBackColor = true;
|
||||
this.btnCancelCase.Click += new System.EventHandler(this.btnCancelCase_Click);
|
||||
//
|
||||
// btnHoldCase
|
||||
//
|
||||
this.btnHoldCase.Location = new System.Drawing.Point(82, 77);
|
||||
this.btnHoldCase.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.btnHoldCase.Name = "btnHoldCase";
|
||||
this.btnHoldCase.Size = new System.Drawing.Size(107, 25);
|
||||
this.btnHoldCase.TabIndex = 10;
|
||||
this.btnHoldCase.Text = "Hold";
|
||||
this.btnHoldCase.UseVisualStyleBackColor = true;
|
||||
this.btnHoldCase.Click += new System.EventHandler(this.btnHoldCase_Click);
|
||||
//
|
||||
// btnQAExecutions
|
||||
//
|
||||
this.btnQAExecutions.Location = new System.Drawing.Point(5, 28);
|
||||
this.btnQAExecutions.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.btnQAExecutions.Name = "btnQAExecutions";
|
||||
this.btnQAExecutions.Size = new System.Drawing.Size(162, 33);
|
||||
this.btnQAExecutions.TabIndex = 11;
|
||||
this.btnQAExecutions.Text = "Execution";
|
||||
this.btnQAExecutions.UseVisualStyleBackColor = true;
|
||||
this.btnQAExecutions.Click += new System.EventHandler(this.btnQAExecutions_Click);
|
||||
//
|
||||
// grpBoxQA
|
||||
//
|
||||
this.grpBoxQA.Controls.Add(this.btnQAExecutions);
|
||||
this.grpBoxQA.Location = new System.Drawing.Point(557, 26);
|
||||
this.grpBoxQA.Name = "grpBoxQA";
|
||||
this.grpBoxQA.Size = new System.Drawing.Size(171, 183);
|
||||
this.grpBoxQA.TabIndex = 12;
|
||||
this.grpBoxQA.TabStop = false;
|
||||
this.grpBoxQA.Text = "Quick Actions";
|
||||
|
||||
//
|
||||
// ctrlProtocolBox1
|
||||
//
|
||||
this.ctrlProtocolBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ctrlProtocolBox1.Location = new System.Drawing.Point(16, 225);
|
||||
this.ctrlProtocolBox1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.ctrlProtocolBox1.Name = "ctrlProtocolBox1";
|
||||
this.ctrlProtocolBox1.Size = new System.Drawing.Size(1103, 381);
|
||||
this.ctrlProtocolBox1.TabIndex = 4;
|
||||
//
|
||||
// ctrlF4SDAnalytics
|
||||
//
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||
this.Controls.Add(this.grpBoxQA);
|
||||
this.Controls.Add(this.grpBoxCase);
|
||||
this.Controls.Add(this.btnCloseSession);
|
||||
this.Controls.Add(this.btnCreateSession);
|
||||
this.Controls.Add(this.ctrlProtocolBox1);
|
||||
this.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.Name = "ctrlF4SDAnalytics";
|
||||
this.Size = new System.Drawing.Size(1177, 645);
|
||||
this.Load += new System.EventHandler(this.ctrlMainFunction_Load);
|
||||
this.grpBoxCase.ResumeLayout(false);
|
||||
this.grpBoxCase.PerformLayout();
|
||||
this.grpBoxQA.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Button btnCreateSession;
|
||||
private ctrlProtocolBox ctrlProtocolBox1;
|
||||
private System.Windows.Forms.Button btnCloseSession;
|
||||
private System.Windows.Forms.Label TimerLabel;
|
||||
private System.Windows.Forms.GroupBox grpBoxCase;
|
||||
private System.Windows.Forms.Button btnStartCase;
|
||||
private System.Windows.Forms.Button btnCloseCase;
|
||||
private System.Windows.Forms.Button btnCancelCase;
|
||||
private System.Windows.Forms.Button btnHoldCase;
|
||||
private System.Windows.Forms.ComboBox comboBoxUserSelect;
|
||||
private System.Windows.Forms.Button btnQAExecutions;
|
||||
private System.Windows.Forms.GroupBox grpBoxQA;
|
||||
private System.Windows.Forms.Label label1;
|
||||
}
|
||||
}
|
||||
415
C4IT_DataHistoryProvider_Test/ctrlF4SDAnalytics.cs
Normal file
@@ -0,0 +1,415 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using C4IT.DataHistoryProvider;
|
||||
using C4IT.FASD.Base;
|
||||
using C4IT.FASD.Licensing;
|
||||
using C4IT.Logging;
|
||||
using static C4IT.Logging.cLogManager;
|
||||
|
||||
namespace C4IT_DataHistoryProvider_Test
|
||||
{
|
||||
public partial class ctrlF4SDAnalytics : UserControl
|
||||
{
|
||||
Guid SessionId;
|
||||
Guid Userid = new Guid("7003cfbf-2841-454e-a4c7-2cff2eb45b23");
|
||||
Guid CaseId;
|
||||
|
||||
private System.Timers.Timer SessionCheck;
|
||||
private System.Timers.Timer CaseCheck;
|
||||
|
||||
public ctrlF4SDAnalytics()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private async void buttonCreateSession_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
try
|
||||
{
|
||||
Cursor = Cursors.WaitCursor;
|
||||
|
||||
ctrlProtocolBox1.ClearMessages();
|
||||
btnCreateSession.Enabled = false;
|
||||
if (Program.Collector == null)
|
||||
return;
|
||||
|
||||
if (Program.Collector.F4SDAnalyticsValid)
|
||||
{
|
||||
SessionId = Guid.NewGuid();
|
||||
var userSessions = new cF4SDUserSessionParameters();
|
||||
userSessions.SessionId = SessionId;
|
||||
userSessions.UserId = Userid;
|
||||
userSessions.SessionDate = DateTime.UtcNow;
|
||||
Program.Collector.CleanupUiMessageHandler();
|
||||
Program.Collector.ProcessUiMessage += ctrlProtocolBox1.ProcessMessage;
|
||||
var _requestInfo = new cF4sdWebRequestInfo("buttonCreateSession_Click", null);
|
||||
bool IsCreatet = await Program.Collector.CreateUserSessionAsync(userSessions, _requestInfo, 1, CancellationToken.None);
|
||||
|
||||
btnStartCase.Enabled = true;
|
||||
btnCloseSession.Enabled = true;
|
||||
grpBoxCase.Visible = true;
|
||||
btnCloseCase.Enabled = false;
|
||||
btnHoldCase.Enabled = false;
|
||||
btnCancelCase.Enabled = false;
|
||||
}
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
Cursor = Cursors.Default;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private async void buttonCloseSession_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
try
|
||||
{
|
||||
Cursor = Cursors.WaitCursor;
|
||||
|
||||
//btnInsertSession.Enabled = false;
|
||||
if (Program.Collector == null)
|
||||
return;
|
||||
|
||||
var _requestInfo = new cF4sdWebRequestInfo("buttonCloseSession_Click", null);
|
||||
|
||||
if (Program.Collector.F4SDAnalyticsValid && SessionId != null)
|
||||
{
|
||||
var userSessions = new cF4SDUserSessionParameters();
|
||||
userSessions.SessionId = SessionId;
|
||||
userSessions.SessionDate = DateTime.UtcNow;
|
||||
bool IsLoaded = await Program.Collector.CloseUserSessionAsync(userSessions, _requestInfo, 1, CancellationToken.None);
|
||||
btnCloseSession.Enabled = false;
|
||||
btnCreateSession.Enabled = true;
|
||||
grpBoxCase.Visible = false;
|
||||
grpBoxQA.Visible = false;
|
||||
|
||||
btnStartCase.Enabled = true;
|
||||
btnCloseCase.Enabled = false;
|
||||
btnHoldCase.Enabled = false;
|
||||
btnCancelCase.Enabled = false;
|
||||
comboBoxUserSelect.SelectedItem = null;
|
||||
}
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
Cursor = Cursors.Default;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private async void btnStartCase_Click(object sender, EventArgs e)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
try
|
||||
{
|
||||
Cursor = Cursors.WaitCursor;
|
||||
|
||||
if (Program.Collector == null)
|
||||
return;
|
||||
|
||||
var _requestInfo = new cF4sdWebRequestInfo("btnStartCase_Click", null);
|
||||
|
||||
if (Program.Collector.F4SDAnalyticsValid && SessionId != null)
|
||||
{
|
||||
|
||||
CaseId = Guid.NewGuid();
|
||||
var caseData = new cF4SDCaseParameters();
|
||||
caseData.SessionId = SessionId;
|
||||
caseData.CaseId = CaseId;
|
||||
caseData.UserId = Userid;
|
||||
if (comboBoxUserSelect.SelectedItem != null)
|
||||
{
|
||||
var RetVal = new List<cDataHistoryInfoClassListEntry>();
|
||||
var user = comboBoxUserSelect.SelectedItem;
|
||||
RetVal.Add((cDataHistoryInfoClassListEntry)user);
|
||||
caseData.UserId = RetVal[0].id;
|
||||
}
|
||||
|
||||
|
||||
bool IsLoaded = await Program.Collector.CreateCaseAsync(caseData, _requestInfo, 1, CancellationToken.None);
|
||||
btnStartCase.Enabled = false;
|
||||
grpBoxQA.Visible = true;
|
||||
btnCloseCase.Enabled = true;
|
||||
btnCancelCase.Enabled = true;
|
||||
btnHoldCase.Enabled = true;
|
||||
}
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
Cursor = Cursors.Default;
|
||||
}
|
||||
}
|
||||
|
||||
private async void btnCloseCase_Click(object sender, EventArgs e)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
try
|
||||
{
|
||||
Cursor = Cursors.WaitCursor;
|
||||
|
||||
//btnInsertSession.Enabled = false;
|
||||
if (Program.Collector == null)
|
||||
return;
|
||||
|
||||
var _requestInfo = new cF4sdWebRequestInfo("btnCloseCase_Click", null);
|
||||
|
||||
if (Program.Collector.F4SDAnalyticsValid && SessionId != null && CaseId != null)
|
||||
{
|
||||
var caseStatus = new cF4SDCaseTimeParameters();
|
||||
|
||||
caseStatus.CaseId = CaseId;
|
||||
caseStatus.StatusId = CaseStatus.Canceled;
|
||||
|
||||
bool IsLoaded = await Program.Collector.UpdateCaseStateAsync(caseStatus, _requestInfo, 1, CancellationToken.None);
|
||||
btnStartCase.Enabled = true;
|
||||
grpBoxQA.Visible = false;
|
||||
btnCloseCase.Enabled = false;
|
||||
btnCancelCase.Enabled = false;
|
||||
btnHoldCase.Enabled = false;
|
||||
comboBoxUserSelect.SelectedItem = null;
|
||||
}
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
Cursor = Cursors.Default;
|
||||
}
|
||||
}
|
||||
|
||||
private async void btnCancelCase_Click(object sender, EventArgs e)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
try
|
||||
{
|
||||
Cursor = Cursors.WaitCursor;
|
||||
|
||||
//btnInsertSession.Enabled = false;
|
||||
if (Program.Collector == null)
|
||||
return;
|
||||
|
||||
var _requestInfo = new cF4sdWebRequestInfo("btnCancelCase_Click", null);
|
||||
|
||||
if (Program.Collector.F4SDAnalyticsValid && SessionId != null && CaseId != null)
|
||||
{
|
||||
var caseStatus = new cF4SDCaseTimeParameters();
|
||||
|
||||
caseStatus.CaseId = CaseId;
|
||||
caseStatus.StatusId = CaseStatus.InProgress;
|
||||
|
||||
bool IsLoaded = await Program.Collector.UpdateCaseStateAsync(caseStatus, _requestInfo, 1, CancellationToken.None);
|
||||
btnStartCase.Enabled = true;
|
||||
grpBoxQA.Visible = false;
|
||||
btnCloseCase.Enabled = false;
|
||||
btnCancelCase.Enabled = false;
|
||||
btnHoldCase.Enabled = false;
|
||||
|
||||
comboBoxUserSelect.SelectedItem = null;
|
||||
|
||||
}
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
Cursor = Cursors.Default;
|
||||
}
|
||||
}
|
||||
|
||||
private async void btnHoldCase_Click(object sender, EventArgs e)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
try
|
||||
{
|
||||
Cursor = Cursors.WaitCursor;
|
||||
|
||||
//btnInsertSession.Enabled = false;
|
||||
if (Program.Collector == null)
|
||||
return;
|
||||
|
||||
var _requestInfo = new cF4sdWebRequestInfo("btnHoldCase_Click", null);
|
||||
|
||||
if (Program.Collector.F4SDAnalyticsValid && SessionId != null && CaseId != null)
|
||||
{
|
||||
|
||||
var caseStatus = new cF4SDCaseTimeParameters();
|
||||
caseStatus.CaseId = CaseId;
|
||||
|
||||
if (btnHoldCase.Text == "Hold")
|
||||
{
|
||||
btnHoldCase.Text = "Continue";
|
||||
caseStatus.StatusId = CaseStatus.Finished;
|
||||
grpBoxQA.Visible = false;
|
||||
btnCancelCase.Enabled = false;
|
||||
btnCloseCase.Enabled = false;
|
||||
}
|
||||
else if (btnHoldCase.Text == "Continue")
|
||||
{
|
||||
btnHoldCase.Text = "Hold";
|
||||
caseStatus.StatusId = CaseStatus.OnHold;
|
||||
grpBoxQA.Visible = true;
|
||||
btnCancelCase.Enabled = true;
|
||||
btnCloseCase.Enabled = true;
|
||||
}
|
||||
|
||||
|
||||
bool IsLoaded = await Program.Collector.UpdateCaseStateAsync(caseStatus, _requestInfo, 1, CancellationToken.None);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
Cursor = Cursors.Default;
|
||||
}
|
||||
}
|
||||
|
||||
private async void btnUpdateCaseState_Click(object sender, EventArgs e)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
try
|
||||
{
|
||||
Cursor = Cursors.WaitCursor;
|
||||
|
||||
//btnInsertSession.Enabled = false;
|
||||
if (Program.Collector == null)
|
||||
return;
|
||||
|
||||
var _requestInfo = new cF4sdWebRequestInfo("btnUpdateCaseState_Click", null);
|
||||
|
||||
if (Program.Collector.F4SDAnalyticsValid && SessionId != null && CaseId != null)
|
||||
{
|
||||
var caseStatus = new cF4SDCaseTimeParameters();
|
||||
|
||||
caseStatus.CaseId = CaseId;
|
||||
caseStatus.StatusId = CaseStatus.Canceled;
|
||||
|
||||
bool IsLoaded = await Program.Collector.UpdateCaseStateAsync(caseStatus, _requestInfo, 1, CancellationToken.None);
|
||||
btnStartCase.Enabled = true;
|
||||
btnCreateSession.Enabled = false;
|
||||
}
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
Cursor = Cursors.Default;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private async void btnQAExecutions_Click(object sender, EventArgs e)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
try
|
||||
{
|
||||
Cursor = Cursors.WaitCursor;
|
||||
|
||||
//btnInsertSession.Enabled = false;
|
||||
if (Program.Collector == null)
|
||||
return;
|
||||
|
||||
var _requestInfo = new cF4sdWebRequestInfo("btnQAExecutions_Click", null);
|
||||
|
||||
if (Program.Collector.F4SDAnalyticsValid && SessionId != null && CaseId != null)
|
||||
{
|
||||
var quickAction = new cF4SDQuickActionParameters();
|
||||
|
||||
quickAction.CaseId = CaseId;
|
||||
quickAction.QuickActionId = Guid.NewGuid();
|
||||
quickAction.Paramaters = null;
|
||||
quickAction.Result = null;
|
||||
quickAction.ErrorCode = 0;
|
||||
quickAction.ErrorDescription = null;
|
||||
quickAction.Start = DateTime.Now;
|
||||
quickAction.Finish = DateTime.Now;
|
||||
|
||||
await Program.Collector.ReportQuickActionExecutionAsync(quickAction, Program.Collector.F4SDAnalyticsDb.Connection, _requestInfo, 1, CancellationToken.None);
|
||||
await Program.Collector.ReportQuickActionExecutionAsync(quickAction, Program.Collector.InfrastructureConfig.HistoryDB.Connection, _requestInfo, 1, CancellationToken.None);
|
||||
|
||||
}
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
Cursor = Cursors.Default;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private async void ctrlMainFunction_Load(object sender, EventArgs e)
|
||||
{
|
||||
btnCloseSession.Enabled = false;
|
||||
grpBoxCase.Visible = false;
|
||||
grpBoxQA.Visible = false;
|
||||
|
||||
if (Program.mainForm == null)
|
||||
return;
|
||||
|
||||
var _requestInfo = new cF4sdWebRequestInfo("ctrlMainFunction_Load", null);
|
||||
|
||||
if (Program.UserList == null)
|
||||
Program.UserList = await Program.Collector.GetInfoClassListTest(C4IT.FASD.Base.enumFasdInformationClass.User, true, _requestInfo, 1, CancellationToken.None);
|
||||
|
||||
comboBoxUserSelect.Items.AddRange(Program.UserList.ToArray());
|
||||
SessionCheck = new System.Timers.Timer(60.0 * 1000 * Program.Collector.InfrastructureConfig.F4SDAnalyticsDB.SessionCheckInterval);
|
||||
SessionCheck.Elapsed += Program.Collector.CheckSessionsAsync;
|
||||
SessionCheck.Start();
|
||||
|
||||
CaseCheck = new System.Timers.Timer(60.0 * 1000 * Program.Collector.InfrastructureConfig.F4SDAnalyticsDB.CaseCheckInterval);
|
||||
CaseCheck.Elapsed += Program.Collector.CheckCasesAsync;
|
||||
CaseCheck.Start();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
120
C4IT_DataHistoryProvider_Test/ctrlF4SDAnalytics.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
231
C4IT_DataHistoryProvider_Test/ctrlM42Wpm.Designer.cs
generated
Normal file
@@ -0,0 +1,231 @@
|
||||
|
||||
namespace C4IT_DataHistoryProvider_Test
|
||||
{
|
||||
partial class ctrlM42Wpm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.buttonCheckConnection = new System.Windows.Forms.Button();
|
||||
this.comboBoxUserSelect = new System.Windows.Forms.ComboBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.buttonGetUserTickes = new System.Windows.Forms.Button();
|
||||
this.comboBoxTicket = new System.Windows.Forms.ComboBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.buttonUpdateSolution = new System.Windows.Forms.Button();
|
||||
this.ctrlProtocolBox1 = new C4IT_DataHistoryProvider_Test.ctrlProtocolBox();
|
||||
this.panelScanNext = new System.Windows.Forms.Panel();
|
||||
this.textBoxScanNext = new System.Windows.Forms.TextBox();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.textBoxScanLast = new System.Windows.Forms.TextBox();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.buttonScanM42 = new System.Windows.Forms.Button();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// buttonCheckConnection
|
||||
//
|
||||
this.buttonCheckConnection.Location = new System.Drawing.Point(36, 23);
|
||||
this.buttonCheckConnection.Margin = new System.Windows.Forms.Padding(6, 8, 6, 8);
|
||||
this.buttonCheckConnection.Name = "buttonCheckConnection";
|
||||
this.buttonCheckConnection.Size = new System.Drawing.Size(236, 58);
|
||||
this.buttonCheckConnection.TabIndex = 2;
|
||||
this.buttonCheckConnection.Text = "Check M42 WPM connection";
|
||||
this.buttonCheckConnection.UseVisualStyleBackColor = true;
|
||||
this.buttonCheckConnection.Click += new System.EventHandler(this.buttonCheckConnection_Click);
|
||||
//
|
||||
// comboBoxUserSelect
|
||||
//
|
||||
this.comboBoxUserSelect.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.comboBoxUserSelect.FormattingEnabled = true;
|
||||
this.comboBoxUserSelect.Location = new System.Drawing.Point(388, 38);
|
||||
this.comboBoxUserSelect.Name = "comboBoxUserSelect";
|
||||
this.comboBoxUserSelect.Size = new System.Drawing.Size(430, 28);
|
||||
this.comboBoxUserSelect.TabIndex = 8;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(318, 40);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(47, 20);
|
||||
this.label1.TabIndex = 7;
|
||||
this.label1.Text = "User:";
|
||||
//
|
||||
// buttonGetUserTickes
|
||||
//
|
||||
this.buttonGetUserTickes.Enabled = false;
|
||||
this.buttonGetUserTickes.Location = new System.Drawing.Point(836, 35);
|
||||
this.buttonGetUserTickes.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.buttonGetUserTickes.Name = "buttonGetUserTickes";
|
||||
this.buttonGetUserTickes.Size = new System.Drawing.Size(132, 32);
|
||||
this.buttonGetUserTickes.TabIndex = 6;
|
||||
this.buttonGetUserTickes.Text = "get tickets";
|
||||
this.buttonGetUserTickes.UseVisualStyleBackColor = true;
|
||||
this.buttonGetUserTickes.Click += new System.EventHandler(this.buttonGetUserTickes_Click);
|
||||
//
|
||||
// comboBoxTicket
|
||||
//
|
||||
this.comboBoxTicket.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.comboBoxTicket.FormattingEnabled = true;
|
||||
this.comboBoxTicket.Location = new System.Drawing.Point(388, 85);
|
||||
this.comboBoxTicket.Name = "comboBoxTicket";
|
||||
this.comboBoxTicket.Size = new System.Drawing.Size(430, 28);
|
||||
this.comboBoxTicket.TabIndex = 11;
|
||||
this.comboBoxTicket.SelectedValueChanged += new System.EventHandler(this.comboBoxTicket_SelectedValueChanged);
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(318, 85);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(55, 20);
|
||||
this.label2.TabIndex = 10;
|
||||
this.label2.Text = "Ticket:";
|
||||
//
|
||||
// buttonUpdateSolution
|
||||
//
|
||||
this.buttonUpdateSolution.Enabled = false;
|
||||
this.buttonUpdateSolution.Location = new System.Drawing.Point(836, 82);
|
||||
this.buttonUpdateSolution.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.buttonUpdateSolution.Name = "buttonUpdateSolution";
|
||||
this.buttonUpdateSolution.Size = new System.Drawing.Size(132, 32);
|
||||
this.buttonUpdateSolution.TabIndex = 9;
|
||||
this.buttonUpdateSolution.Text = "update solution";
|
||||
this.buttonUpdateSolution.UseVisualStyleBackColor = true;
|
||||
this.buttonUpdateSolution.Click += new System.EventHandler(this.buttonUpdateSolution_Click);
|
||||
//
|
||||
// ctrlProtocolBox1
|
||||
//
|
||||
this.ctrlProtocolBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ctrlProtocolBox1.Location = new System.Drawing.Point(36, 135);
|
||||
this.ctrlProtocolBox1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.ctrlProtocolBox1.Name = "ctrlProtocolBox1";
|
||||
this.ctrlProtocolBox1.Size = new System.Drawing.Size(1716, 522);
|
||||
this.ctrlProtocolBox1.TabIndex = 12;
|
||||
//
|
||||
// panelScanNext
|
||||
//
|
||||
this.panelScanNext.Location = new System.Drawing.Point(1660, 31);
|
||||
this.panelScanNext.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.panelScanNext.Name = "panelScanNext";
|
||||
this.panelScanNext.Size = new System.Drawing.Size(39, 40);
|
||||
this.panelScanNext.TabIndex = 18;
|
||||
//
|
||||
// textBoxScanNext
|
||||
//
|
||||
this.textBoxScanNext.Location = new System.Drawing.Point(1416, 80);
|
||||
this.textBoxScanNext.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.textBoxScanNext.Name = "textBoxScanNext";
|
||||
this.textBoxScanNext.ReadOnly = true;
|
||||
this.textBoxScanNext.Size = new System.Drawing.Size(210, 26);
|
||||
this.textBoxScanNext.TabIndex = 17;
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Location = new System.Drawing.Point(1312, 85);
|
||||
this.label3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(93, 20);
|
||||
this.label3.TabIndex = 16;
|
||||
this.label3.Text = "Target time:";
|
||||
//
|
||||
// textBoxScanLast
|
||||
//
|
||||
this.textBoxScanLast.Location = new System.Drawing.Point(1416, 35);
|
||||
this.textBoxScanLast.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.textBoxScanLast.Name = "textBoxScanLast";
|
||||
this.textBoxScanLast.ReadOnly = true;
|
||||
this.textBoxScanLast.Size = new System.Drawing.Size(210, 26);
|
||||
this.textBoxScanLast.TabIndex = 15;
|
||||
//
|
||||
// label4
|
||||
//
|
||||
this.label4.AutoSize = true;
|
||||
this.label4.Location = new System.Drawing.Point(1323, 40);
|
||||
this.label4.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(82, 20);
|
||||
this.label4.TabIndex = 14;
|
||||
this.label4.Text = "Last scan:";
|
||||
//
|
||||
// buttonScanM42
|
||||
//
|
||||
this.buttonScanM42.Location = new System.Drawing.Point(1071, 23);
|
||||
this.buttonScanM42.Margin = new System.Windows.Forms.Padding(6, 8, 6, 8);
|
||||
this.buttonScanM42.Name = "buttonScanM42";
|
||||
this.buttonScanM42.Size = new System.Drawing.Size(236, 58);
|
||||
this.buttonScanM42.TabIndex = 13;
|
||||
this.buttonScanM42.Text = "Cleanup API tokens";
|
||||
this.buttonScanM42.UseVisualStyleBackColor = true;
|
||||
this.buttonScanM42.Click += new System.EventHandler(this.buttonScanM42_Click);
|
||||
//
|
||||
// ctrlM42Wpm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.panelScanNext);
|
||||
this.Controls.Add(this.textBoxScanNext);
|
||||
this.Controls.Add(this.label3);
|
||||
this.Controls.Add(this.textBoxScanLast);
|
||||
this.Controls.Add(this.label4);
|
||||
this.Controls.Add(this.buttonScanM42);
|
||||
this.Controls.Add(this.comboBoxTicket);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.buttonUpdateSolution);
|
||||
this.Controls.Add(this.comboBoxUserSelect);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.buttonGetUserTickes);
|
||||
this.Controls.Add(this.buttonCheckConnection);
|
||||
this.Controls.Add(this.ctrlProtocolBox1);
|
||||
this.Name = "ctrlM42Wpm";
|
||||
this.Size = new System.Drawing.Size(1772, 672);
|
||||
this.Load += new System.EventHandler(this.ctrlM42Wpm_Load);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Button buttonCheckConnection;
|
||||
private System.Windows.Forms.ComboBox comboBoxUserSelect;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Button buttonGetUserTickes;
|
||||
private System.Windows.Forms.ComboBox comboBoxTicket;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.Button buttonUpdateSolution;
|
||||
private ctrlProtocolBox ctrlProtocolBox1;
|
||||
private System.Windows.Forms.Panel panelScanNext;
|
||||
private System.Windows.Forms.TextBox textBoxScanNext;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.TextBox textBoxScanLast;
|
||||
private System.Windows.Forms.Label label4;
|
||||
private System.Windows.Forms.Button buttonScanM42;
|
||||
}
|
||||
}
|
||||
312
C4IT_DataHistoryProvider_Test/ctrlM42Wpm.cs
Normal file
@@ -0,0 +1,312 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
using C4IT.Logging;
|
||||
using C4IT.XML;
|
||||
using C4IT.FASD.Base;
|
||||
using C4IT.DataHistoryProvider;
|
||||
|
||||
using static C4IT.Logging.cLogManager;
|
||||
|
||||
namespace C4IT_DataHistoryProvider_Test
|
||||
{
|
||||
public partial class ctrlM42Wpm : UserControl
|
||||
{
|
||||
public ctrlM42Wpm()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private async void ctrlM42Wpm_Load(object sender, EventArgs e)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
|
||||
if (Program.Collector == null)
|
||||
return;
|
||||
|
||||
try
|
||||
{
|
||||
Cursor = Cursors.WaitCursor;
|
||||
|
||||
ctrlProtocolBox1.ClearMessages();
|
||||
|
||||
Program.mainForm.DisableAllTabPages(this);
|
||||
|
||||
Program.Collector.CleanupUiMessageHandler();
|
||||
Program.Collector.ProcessUiMessage += ctrlProtocolBox1.ProcessMessage;
|
||||
|
||||
var _requestInfo = new cF4sdWebRequestInfo("ctrlM42Wpm_Load", null);
|
||||
|
||||
if (Program.UserList == null)
|
||||
Program.UserList = await Program.Collector.GetInfoClassListTest(C4IT.FASD.Base.enumFasdInformationClass.User, true, _requestInfo, 1, CancellationToken.None);
|
||||
|
||||
comboBoxUserSelect.Items.AddRange(Program.UserList.ToArray());
|
||||
|
||||
ctrlProtocolBox1.ProcessMessage("");
|
||||
|
||||
await checkScanTimesAsync(_requestInfo, 1);
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
ctrlProtocolBox1.ProcessMessage("");
|
||||
Program.mainForm.EnableAllTabPages();
|
||||
Cursor = Cursors.Default;
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
}
|
||||
|
||||
private async void buttonCheckConnection_Click(object sender, EventArgs e)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
|
||||
if (Program.Collector == null)
|
||||
return;
|
||||
|
||||
try
|
||||
{
|
||||
Cursor = Cursors.WaitCursor;
|
||||
|
||||
ctrlProtocolBox1.ClearMessages();
|
||||
buttonCheckConnection.Enabled = false;
|
||||
|
||||
Program.mainForm.DisableAllTabPages(this);
|
||||
|
||||
Program.Collector.CleanupUiMessageHandler();
|
||||
Program.Collector.ProcessUiMessage += ctrlProtocolBox1.ProcessMessage;
|
||||
|
||||
var res = await Program.Collector.M42WpmCollector.ValidateConnectionAsync(true, CancellationToken.None);
|
||||
|
||||
buttonGetUserTickes.Enabled = res;
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
ctrlProtocolBox1.ProcessMessage("");
|
||||
Program.mainForm.EnableAllTabPages();
|
||||
buttonCheckConnection.Enabled = true;
|
||||
Cursor = Cursors.Default;
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private class TicketEntry
|
||||
{
|
||||
public string Name;
|
||||
public Guid Id;
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return Name;
|
||||
}
|
||||
}
|
||||
|
||||
private async void buttonGetUserTickes_Click(object sender, EventArgs e)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
try
|
||||
{
|
||||
comboBoxTicket.Enabled = false;
|
||||
comboBoxTicket.Items.Clear();
|
||||
comboBoxTicket.SelectedItem = null;
|
||||
if (comboBoxUserSelect.SelectedItem == null || !(comboBoxUserSelect.SelectedItem is cDataHistoryInfoClassListEntry info))
|
||||
return;
|
||||
|
||||
var search = new List<cF4sdIdentityEntry>()
|
||||
{
|
||||
new cF4sdIdentityEntry()
|
||||
{
|
||||
Class = enumFasdInformationClass.User,
|
||||
Id = info.id,
|
||||
}
|
||||
};
|
||||
|
||||
ctrlProtocolBox1.ProcessMessage("");
|
||||
|
||||
var found = false;
|
||||
var userinfo = await Program.Collector.getConntectorIds(search, CancellationToken.None, null, 0);
|
||||
if (userinfo != null && userinfo.TryGetValue(enumFasdInformationClass.User, out var userids))
|
||||
{
|
||||
if (userids.sid != null)
|
||||
{
|
||||
var TicketList = await Program.Collector.M42WpmCollector.getTicketUsage(new List<cF4sdConnectorIds> { userids }, CancellationToken.None, null, 0);
|
||||
var Tickets = new List<TicketEntry>();
|
||||
if (TicketList != null && TicketList.Count > 0)
|
||||
{
|
||||
found = true;
|
||||
ctrlProtocolBox1.ProcessMessage($"{TicketList.Count} tickets found for user '{info.Name}':");
|
||||
foreach (var Entry in TicketList)
|
||||
{
|
||||
Tickets.Add(new TicketEntry() { Name = Entry.Name, Id = Entry.id });
|
||||
|
||||
ctrlProtocolBox1.ProcessMessage("");
|
||||
ctrlProtocolBox1.ProcessMessage($" {Entry.Name}:");
|
||||
|
||||
foreach (var Entry2 in Entry.Infos)
|
||||
{
|
||||
ctrlProtocolBox1.ProcessMessage($" {Entry2.Key}: {Entry2.Value}");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (Tickets.Count > 0)
|
||||
{
|
||||
comboBoxTicket.Items.AddRange(Tickets.ToArray());
|
||||
comboBoxTicket.Enabled = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!found)
|
||||
ctrlProtocolBox1.ProcessMessage($"no tickets found for user '{info.Name}'");
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
}
|
||||
|
||||
private void comboBoxTicket_SelectedValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
buttonUpdateSolution.Enabled = comboBoxTicket.SelectedItem != null;
|
||||
}
|
||||
|
||||
private async void buttonUpdateSolution_Click(object sender, EventArgs e)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
try
|
||||
{
|
||||
if (!(comboBoxTicket.SelectedItem is TicketEntry _ticket))
|
||||
return;
|
||||
|
||||
var _update = new cF4SDWriteParameters()
|
||||
{
|
||||
TableName = cDataHistoryCollectorM42Wpm.constTableNameTicketDetails,
|
||||
id = _ticket.Id,
|
||||
Values = new Dictionary<string, object>(1) { { "SolutionHtml", "Closed for F4SD testing purposes." } }
|
||||
};
|
||||
|
||||
var _res = await Program.Collector.WritePropertyAsync(_update, null, CancellationToken.None);
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
}
|
||||
|
||||
private async Task checkScanTimesAsync(cF4sdWebRequestInfo requestInfo, int LogDeep)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
if (cPerformanceLogger.IsActive && requestInfo != null) { if (CM == null) CM = MethodBase.GetCurrentMethod(); cPerformanceLogger.LogPerformanceStart(LogDeep, CM, requestInfo.id, requestInfo.created); }
|
||||
var _startTime = DateTime.UtcNow;
|
||||
|
||||
try
|
||||
{
|
||||
var Col = Color.Transparent;
|
||||
textBoxScanLast.Text = "";
|
||||
textBoxScanNext.Text = "";
|
||||
|
||||
if (Program.Collector.M42WpmCollector != null)
|
||||
{
|
||||
var scanInfo = await Program.Collector.M42WpmCollector.GetScanTimeInfoAsync(requestInfo, LogDeep + 1, CancellationToken.None);
|
||||
|
||||
if (scanInfo?.NextScan is DateTime nextScan)
|
||||
{
|
||||
textBoxScanNext.Text = nextScan.ToLocalTime().ToString();
|
||||
if (scanInfo?.LastScan is DateTime lastScan)
|
||||
{
|
||||
textBoxScanLast.Text = lastScan.ToLocalTime().ToString();
|
||||
if (nextScan >= lastScan)
|
||||
Col = Color.Red;
|
||||
else
|
||||
Col = Color.Green;
|
||||
}
|
||||
else
|
||||
Col = Color.Red;
|
||||
}
|
||||
else
|
||||
{
|
||||
Col = Color.Red;
|
||||
if (scanInfo?.LastScan is DateTime lastScan)
|
||||
textBoxScanLast.Text = lastScan.ToLocalTime().ToString();
|
||||
}
|
||||
}
|
||||
|
||||
panelScanNext.BackColor = Col;
|
||||
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (cPerformanceLogger.IsActive && requestInfo != null) { cPerformanceLogger.LogPerformanceEnd(LogDeep, CM, requestInfo.id, requestInfo.created, _startTime); }
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
}
|
||||
|
||||
private async void buttonScanM42_Click(object sender, EventArgs e)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
|
||||
if (Program.Collector == null)
|
||||
return;
|
||||
|
||||
try
|
||||
{
|
||||
Cursor = Cursors.WaitCursor;
|
||||
|
||||
ctrlProtocolBox1.ClearMessages();
|
||||
buttonScanM42.Enabled = false;
|
||||
|
||||
Program.mainForm.DisableAllTabPages(this);
|
||||
|
||||
Program.Collector.CleanupUiMessageHandler();
|
||||
Program.Collector.ProcessUiMessage += ctrlProtocolBox1.ProcessMessage;
|
||||
var _requestInfo = new cF4sdWebRequestInfo("DoScanM42Wpm", null);
|
||||
await Program.Collector.M42WpmCollector.DoScanAsync(true, true, _requestInfo, 1, CancellationToken.None);
|
||||
|
||||
await checkScanTimesAsync(_requestInfo, 1);
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
ctrlProtocolBox1.ProcessMessage("");
|
||||
Program.mainForm.EnableAllTabPages();
|
||||
buttonScanM42.Enabled = true;
|
||||
Cursor = Cursors.Default;
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
120
C4IT_DataHistoryProvider_Test/ctrlM42Wpm.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
106
C4IT_DataHistoryProvider_Test/ctrlMainFunction.Designer.cs
generated
Normal file
@@ -0,0 +1,106 @@
|
||||
|
||||
namespace C4IT_DataHistoryProvider_Test
|
||||
{
|
||||
partial class ctrlMainFunction
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.buttonLoad = new System.Windows.Forms.Button();
|
||||
this.buttonCheckDatabase = new System.Windows.Forms.Button();
|
||||
this.buttonValidateAgentDb = new System.Windows.Forms.Button();
|
||||
this.ctrlProtocolBox1 = new C4IT_DataHistoryProvider_Test.ctrlProtocolBox();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// buttonLoad
|
||||
//
|
||||
this.buttonLoad.Location = new System.Drawing.Point(16, 12);
|
||||
this.buttonLoad.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.buttonLoad.Name = "buttonLoad";
|
||||
this.buttonLoad.Size = new System.Drawing.Size(162, 33);
|
||||
this.buttonLoad.TabIndex = 0;
|
||||
this.buttonLoad.Text = "Load configuration";
|
||||
this.buttonLoad.UseVisualStyleBackColor = true;
|
||||
this.buttonLoad.Click += new System.EventHandler(this.buttonLoad_Click);
|
||||
//
|
||||
// buttonCheckDatabase
|
||||
//
|
||||
this.buttonCheckDatabase.Enabled = false;
|
||||
this.buttonCheckDatabase.Location = new System.Drawing.Point(182, 12);
|
||||
this.buttonCheckDatabase.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.buttonCheckDatabase.Name = "buttonCheckDatabase";
|
||||
this.buttonCheckDatabase.Size = new System.Drawing.Size(162, 33);
|
||||
this.buttonCheckDatabase.TabIndex = 2;
|
||||
this.buttonCheckDatabase.Text = "Check database";
|
||||
this.buttonCheckDatabase.UseVisualStyleBackColor = true;
|
||||
this.buttonCheckDatabase.Click += new System.EventHandler(this.buttonCheckDatabase_Click);
|
||||
//
|
||||
// buttonValidateAgentDb
|
||||
//
|
||||
this.buttonValidateAgentDb.Enabled = false;
|
||||
this.buttonValidateAgentDb.Location = new System.Drawing.Point(348, 12);
|
||||
this.buttonValidateAgentDb.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.buttonValidateAgentDb.Name = "buttonValidateAgentDb";
|
||||
this.buttonValidateAgentDb.Size = new System.Drawing.Size(162, 33);
|
||||
this.buttonValidateAgentDb.TabIndex = 3;
|
||||
this.buttonValidateAgentDb.Text = "Validate Agent DB";
|
||||
this.buttonValidateAgentDb.UseVisualStyleBackColor = true;
|
||||
this.buttonValidateAgentDb.Click += new System.EventHandler(this.buttonValidateAgentDb_Click);
|
||||
//
|
||||
// ctrlProtocolBox1
|
||||
//
|
||||
this.ctrlProtocolBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ctrlProtocolBox1.Location = new System.Drawing.Point(16, 58);
|
||||
this.ctrlProtocolBox1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.ctrlProtocolBox1.Name = "ctrlProtocolBox1";
|
||||
this.ctrlProtocolBox1.Size = new System.Drawing.Size(728, 274);
|
||||
this.ctrlProtocolBox1.TabIndex = 4;
|
||||
//
|
||||
// ctrlMainFunction
|
||||
//
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||
this.Controls.Add(this.buttonValidateAgentDb);
|
||||
this.Controls.Add(this.buttonCheckDatabase);
|
||||
this.Controls.Add(this.buttonLoad);
|
||||
this.Controls.Add(this.ctrlProtocolBox1);
|
||||
this.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.Name = "ctrlMainFunction";
|
||||
this.Size = new System.Drawing.Size(761, 349);
|
||||
this.Load += new System.EventHandler(this.ctrlMainFunction_Load);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Button buttonLoad;
|
||||
private System.Windows.Forms.Button buttonCheckDatabase;
|
||||
private System.Windows.Forms.Button buttonValidateAgentDb;
|
||||
private ctrlProtocolBox ctrlProtocolBox1;
|
||||
}
|
||||
}
|
||||
297
C4IT_DataHistoryProvider_Test/ctrlMainFunction.cs
Normal file
@@ -0,0 +1,297 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
using C4IT.Logging;
|
||||
using C4IT.XML;
|
||||
using C4IT.DataHistoryProvider;
|
||||
using C4IT.FASD.Licensing;
|
||||
|
||||
using static C4IT.Logging.cLogManager;
|
||||
using System.Collections.ObjectModel;
|
||||
|
||||
namespace C4IT_DataHistoryProvider_Test
|
||||
{
|
||||
public partial class ctrlMainFunction : UserControl
|
||||
{
|
||||
public ctrlMainFunction()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private async void ctrlMainFunction_Load(object sender, EventArgs e)
|
||||
{
|
||||
if (Program.mainForm == null)
|
||||
return;
|
||||
|
||||
Program.mainForm.RemoveAllTabPages(Program.mainForm.tabPageMain);
|
||||
|
||||
if (!Program.mainForm.CollectMode)
|
||||
return;
|
||||
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
try
|
||||
{
|
||||
Cursor = Cursors.WaitCursor;
|
||||
Program.Collector = null;
|
||||
|
||||
var _requestInfo = new cF4sdWebRequestInfo("ctrlMainFunction_Load", null);
|
||||
|
||||
buttonLoad.Visible = false;
|
||||
buttonCheckDatabase.Visible = false;
|
||||
buttonValidateAgentDb.Visible = false;
|
||||
|
||||
|
||||
var diff = ctrlProtocolBox1.Top - buttonLoad.Top;
|
||||
ctrlProtocolBox1.Top = buttonLoad.Top;
|
||||
ctrlProtocolBox1.Height += diff;
|
||||
ctrlProtocolBox1.ClearMessages();
|
||||
|
||||
cF4SDLicense.CheckLicense(null, null);
|
||||
var lstLicenseLog = cF4SDLicense.LogLicenseState();
|
||||
foreach (var _s in lstLicenseLog)
|
||||
ctrlProtocolBox1.ProcessMessage(_s);
|
||||
ctrlProtocolBox1.ProcessMessage("");
|
||||
if (!cF4SDLicense.Instance.IsValid)
|
||||
return;
|
||||
|
||||
var Collector = new cDataHistoryCollector(autoConnectionCheck: false, _requestInfo, 1);
|
||||
Collector.ProcessUiMessage += ctrlProtocolBox1.ProcessMessage;
|
||||
|
||||
var IsLoaded = await Collector.LoadConfigurationAsync(true, false, CancellationToken.None, _requestInfo, 1);
|
||||
if (!IsLoaded)
|
||||
return;
|
||||
|
||||
Collector.ValidateClientConfiguration();
|
||||
|
||||
var tabs = Program.mainForm.tabControlMain.TabPages.Cast<TabPage>().ToList();
|
||||
tabs.Remove(Program.mainForm.tabPageMain);
|
||||
foreach (var _entry in tabs)
|
||||
Program.mainForm.tabControlMain.TabPages.Remove(_entry);
|
||||
|
||||
var IsOk = await Collector.ValidateHistoryDatabasesAsync(false, CancellationToken.None, _requestInfo, 1);
|
||||
if (!IsOk)
|
||||
return;
|
||||
|
||||
await Task.Delay(1000);
|
||||
|
||||
await Collector.ValidateF4SDAnalyticsDBAsync(_requestInfo, 1, CancellationToken.None);
|
||||
await Collector.UpdateF4SDAnalyticsConfigInfosAsync(_requestInfo, 1, CancellationToken.None);
|
||||
|
||||
if (DateTime.Now.TimeOfDay >= TimeSpan.FromHours(22) || DateTime.Now.TimeOfDay < TimeSpan.FromHours(3))
|
||||
{
|
||||
await Collector.ValidateAgentDbUpdates(_requestInfo, 1, CancellationToken.None);
|
||||
}
|
||||
|
||||
if (Collector.F4sdAgent != null)
|
||||
{
|
||||
await Collector.F4sdAgent.DoScanAsync(false, false, _requestInfo, 1, CancellationToken.None);
|
||||
await Task.Delay(1000);
|
||||
}
|
||||
|
||||
|
||||
if (Collector.ActiveDirectory != null && await Collector.ActiveDirectory.DoScanAsync(false, false, _requestInfo, 1, CancellationToken.None))
|
||||
{
|
||||
await Task.Delay(1000);
|
||||
await Collector.F4sdAgent.DoScanAsync(true, false, _requestInfo, 1, CancellationToken.None);
|
||||
}
|
||||
await Task.Delay(1000);
|
||||
|
||||
if (Collector.NxqlCollector != null)
|
||||
{
|
||||
await Collector.NxqlCollector.DoScanAsync(false, false, _requestInfo, 1, CancellationToken.None);
|
||||
await Task.Delay(1000);
|
||||
}
|
||||
|
||||
if (Collector.M42WpmCollector != null)
|
||||
{
|
||||
await Collector.M42WpmCollector.DoScanAsync(false, false, _requestInfo, 1, CancellationToken.None);
|
||||
await Task.Delay(1000);
|
||||
}
|
||||
if (Collector.CitrixCollector != null)
|
||||
{
|
||||
await Collector.CitrixCollector.DoScanAsync(false, false, _requestInfo, 1, CancellationToken.None);
|
||||
await Task.Delay(1000);
|
||||
}
|
||||
await Collector.DoCleanup(false, _requestInfo, 1, CancellationToken.None);
|
||||
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
ctrlProtocolBox1.ProcessMessage("");
|
||||
|
||||
await Task.Delay(10000);
|
||||
|
||||
Cursor = Cursors.Default;
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
|
||||
Program.mainForm.Close();
|
||||
}
|
||||
}
|
||||
|
||||
private async void buttonLoad_Click(object sender, EventArgs e)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
try
|
||||
{
|
||||
Cursor = Cursors.WaitCursor;
|
||||
Program.Collector = null;
|
||||
|
||||
ctrlProtocolBox1.ClearMessages();
|
||||
buttonLoad.Enabled = false;
|
||||
buttonCheckDatabase.Enabled = false;
|
||||
|
||||
Program.mainForm.DisableAllTabPages(this);
|
||||
|
||||
cF4SDLicense.CheckLicense(null, null);
|
||||
var lstLicenseLog = cF4SDLicense.LogLicenseState();
|
||||
foreach (var _s in lstLicenseLog)
|
||||
ctrlProtocolBox1.ProcessMessage(_s);
|
||||
ctrlProtocolBox1.ProcessMessage("");
|
||||
|
||||
if (cF4SDLicense.Instance?.IsValid != true)
|
||||
return;
|
||||
|
||||
var Collector = new cDataHistoryCollector(autoConnectionCheck: false, null, 0);
|
||||
Collector.ProcessUiMessage += ctrlProtocolBox1.ProcessMessage;
|
||||
|
||||
var _requestInfo = new cF4sdWebRequestInfo("buttonLoad_Click", null);
|
||||
var IsLoaded = await Collector.LoadConfigurationAsync(true, true, CancellationToken.None, null, 0);
|
||||
|
||||
if (IsLoaded)
|
||||
{
|
||||
ctrlProtocolBox1.ProcessMessage("");
|
||||
|
||||
Collector.ValidateClientConfiguration();
|
||||
|
||||
buttonCheckDatabase.Enabled = true;
|
||||
Program.Collector = Collector;
|
||||
}
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
ctrlProtocolBox1.ProcessMessage("");
|
||||
buttonLoad.Enabled = true;
|
||||
Cursor = Cursors.Default;
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private async void buttonCheckDatabase_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (Program.Collector == null)
|
||||
return;
|
||||
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
try
|
||||
{
|
||||
Cursor = Cursors.WaitCursor;
|
||||
this.Enabled = false;
|
||||
|
||||
Program.Collector.CleanupUiMessageHandler();
|
||||
Program.Collector.ProcessUiMessage += ctrlProtocolBox1.ProcessMessage;
|
||||
|
||||
var _requestInfo = new cF4sdWebRequestInfo("buttonCheckDatabase_Click", null);
|
||||
var IsOk = await Program.Collector.ValidateHistoryDatabasesAsync(false, CancellationToken.None, _requestInfo, 0);
|
||||
|
||||
if (IsOk)
|
||||
{
|
||||
await Program.Collector.ValidateF4SDAnalyticsDBAsync(_requestInfo, 1, CancellationToken.None,true);
|
||||
await Program.Collector.UpdateF4SDAnalyticsConfigInfosAsync(_requestInfo, 1, CancellationToken.None);
|
||||
|
||||
buttonValidateAgentDb.Enabled = true;
|
||||
|
||||
Program.mainForm.RemoveAllTabPages(Program.mainForm.tabPageMain);
|
||||
|
||||
Program.mainForm.tabControlMain.TabPages.Add(Program.mainForm.tabPageAgent);
|
||||
|
||||
Program.mainForm.tabControlMain.TabPages.Add(Program.mainForm.tabPageActiveDirectory);
|
||||
|
||||
Program.mainForm.tabControlMain.TabPages.Add(Program.mainForm.tabPageCleanup);
|
||||
|
||||
Program.mainForm.tabControlMain.TabPages.Add(Program.mainForm.tabPageTest);
|
||||
|
||||
if (Program.Collector.InfrastructureConfig.F4SDAnalyticsDB != null)
|
||||
Program.mainForm.tabControlMain.TabPages.Add(Program.mainForm.tabPageF4SDAnalytics);
|
||||
|
||||
if (Program.Collector.CitrixCollector != null && Program.Collector.InfrastructureConfig.CitrixTenants?.Values != null)
|
||||
Program.mainForm.tabControlMain.TabPages.Add(Program.mainForm.tabPageCitrix);
|
||||
|
||||
if (Program.Collector.NxqlCollector != null && !Program.mainForm.tabControlMain.TabPages.Contains(Program.mainForm.tabPageNexthink))
|
||||
Program.mainForm.tabControlMain.TabPages.Insert(3, Program.mainForm.tabPageNexthink);
|
||||
|
||||
if (Program.Collector.M42WpmCollector != null && !Program.mainForm.tabControlMain.TabPages.Contains(Program.mainForm.tabPageM42WPM))
|
||||
Program.mainForm.tabControlMain.TabPages.Insert(3, Program.mainForm.tabPageM42WPM);
|
||||
|
||||
Program.mainForm.EnableAllTabPages();
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
ctrlProtocolBox1.ProcessMessage("");
|
||||
this.Enabled = true;
|
||||
Cursor = Cursors.Default;
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
private async void buttonValidateAgentDb_Click(object sender, EventArgs e)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
try
|
||||
{
|
||||
if (Program.Collector == null)
|
||||
return;
|
||||
|
||||
Cursor = Cursors.WaitCursor;
|
||||
this.Enabled = false;
|
||||
Program.mainForm.DisableAllTabPages(this);
|
||||
|
||||
Program.Collector.CleanupUiMessageHandler();
|
||||
Program.Collector.ProcessUiMessage += ctrlProtocolBox1.ProcessMessage;
|
||||
|
||||
var _requestInfo = new cF4sdWebRequestInfo("buttonValidateAgentDb_Click", null);
|
||||
|
||||
await Program.Collector.ValidateAgentDbUpdates(_requestInfo, 1, CancellationToken.None);
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
ctrlProtocolBox1.ProcessMessage("");
|
||||
this.Enabled = true;
|
||||
Program.mainForm.EnableAllTabPages();
|
||||
Cursor = Cursors.Default;
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
120
C4IT_DataHistoryProvider_Test/ctrlMainFunction.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
383
C4IT_DataHistoryProvider_Test/ctrlNexthink.Designer.cs
generated
Normal file
@@ -0,0 +1,383 @@
|
||||
|
||||
namespace C4IT_DataHistoryProvider_Test
|
||||
{
|
||||
partial class ctrlNexthink
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ctrlNexthink));
|
||||
this.buttonScanTableColumns = new System.Windows.Forms.Button();
|
||||
this.imageListStatus = new System.Windows.Forms.ImageList(this.components);
|
||||
this.buttonQueryData = new System.Windows.Forms.Button();
|
||||
this.panelScanNext = new System.Windows.Forms.Panel();
|
||||
this.textBoxScanNext = new System.Windows.Forms.TextBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.textBoxScanLast = new System.Windows.Forms.TextBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.tabControlResult = new System.Windows.Forms.TabControl();
|
||||
this.tabPageProtocol = new System.Windows.Forms.TabPage();
|
||||
this.tabPageQueryResult = new System.Windows.Forms.TabPage();
|
||||
this.splitContainerTableResult = new System.Windows.Forms.SplitContainer();
|
||||
this.treeViewValidationResult = new System.Windows.Forms.TreeView();
|
||||
this.splitContainerTableResultDetails = new System.Windows.Forms.SplitContainer();
|
||||
this.panelTableDetailsTop = new System.Windows.Forms.Panel();
|
||||
this.richTextBoxTableResult = new System.Windows.Forms.RichTextBox();
|
||||
this.panelTableDetailsBottom = new System.Windows.Forms.Panel();
|
||||
this.webBrowserTableResult = new System.Windows.Forms.WebBrowser();
|
||||
this.buttonRemoveScan = new System.Windows.Forms.Button();
|
||||
this.buttonTest = new System.Windows.Forms.Button();
|
||||
this.ctrlProtocolBox1 = new C4IT_DataHistoryProvider_Test.ctrlProtocolBox();
|
||||
this.tabControlResult.SuspendLayout();
|
||||
this.tabPageProtocol.SuspendLayout();
|
||||
this.tabPageQueryResult.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainerTableResult)).BeginInit();
|
||||
this.splitContainerTableResult.Panel1.SuspendLayout();
|
||||
this.splitContainerTableResult.Panel2.SuspendLayout();
|
||||
this.splitContainerTableResult.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainerTableResultDetails)).BeginInit();
|
||||
this.splitContainerTableResultDetails.Panel1.SuspendLayout();
|
||||
this.splitContainerTableResultDetails.Panel2.SuspendLayout();
|
||||
this.splitContainerTableResultDetails.SuspendLayout();
|
||||
this.panelTableDetailsTop.SuspendLayout();
|
||||
this.panelTableDetailsBottom.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// buttonScanTableColumns
|
||||
//
|
||||
this.buttonScanTableColumns.Location = new System.Drawing.Point(36, 28);
|
||||
this.buttonScanTableColumns.Margin = new System.Windows.Forms.Padding(6, 8, 6, 8);
|
||||
this.buttonScanTableColumns.Name = "buttonScanTableColumns";
|
||||
this.buttonScanTableColumns.Size = new System.Drawing.Size(236, 78);
|
||||
this.buttonScanTableColumns.TabIndex = 1;
|
||||
this.buttonScanTableColumns.Text = "Scan NXQL columns";
|
||||
this.buttonScanTableColumns.UseVisualStyleBackColor = true;
|
||||
this.buttonScanTableColumns.Click += new System.EventHandler(this.buttonScanTableColumns_Click);
|
||||
//
|
||||
// imageListStatus
|
||||
//
|
||||
this.imageListStatus.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageListStatus.ImageStream")));
|
||||
this.imageListStatus.TransparentColor = System.Drawing.Color.Transparent;
|
||||
this.imageListStatus.Images.SetKeyName(0, "OK_24.png");
|
||||
this.imageListStatus.Images.SetKeyName(1, "Warning_24.png");
|
||||
this.imageListStatus.Images.SetKeyName(2, "Error_24.png");
|
||||
//
|
||||
// buttonQueryData
|
||||
//
|
||||
this.buttonQueryData.Enabled = false;
|
||||
this.buttonQueryData.Location = new System.Drawing.Point(284, 28);
|
||||
this.buttonQueryData.Margin = new System.Windows.Forms.Padding(6, 8, 6, 8);
|
||||
this.buttonQueryData.Name = "buttonQueryData";
|
||||
this.buttonQueryData.Size = new System.Drawing.Size(236, 78);
|
||||
this.buttonQueryData.TabIndex = 3;
|
||||
this.buttonQueryData.Text = "Query NXQL data";
|
||||
this.buttonQueryData.UseVisualStyleBackColor = true;
|
||||
this.buttonQueryData.Click += new System.EventHandler(this.buttonQueryData_Click);
|
||||
//
|
||||
// panelScanNext
|
||||
//
|
||||
this.panelScanNext.Location = new System.Drawing.Point(750, 125);
|
||||
this.panelScanNext.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.panelScanNext.Name = "panelScanNext";
|
||||
this.panelScanNext.Size = new System.Drawing.Size(39, 40);
|
||||
this.panelScanNext.TabIndex = 13;
|
||||
//
|
||||
// textBoxScanNext
|
||||
//
|
||||
this.textBoxScanNext.Location = new System.Drawing.Point(514, 137);
|
||||
this.textBoxScanNext.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.textBoxScanNext.Name = "textBoxScanNext";
|
||||
this.textBoxScanNext.ReadOnly = true;
|
||||
this.textBoxScanNext.Size = new System.Drawing.Size(210, 26);
|
||||
this.textBoxScanNext.TabIndex = 12;
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(413, 140);
|
||||
this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(93, 20);
|
||||
this.label2.TabIndex = 11;
|
||||
this.label2.Text = "Target time:";
|
||||
//
|
||||
// textBoxScanLast
|
||||
//
|
||||
this.textBoxScanLast.Location = new System.Drawing.Point(123, 137);
|
||||
this.textBoxScanLast.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.textBoxScanLast.Name = "textBoxScanLast";
|
||||
this.textBoxScanLast.ReadOnly = true;
|
||||
this.textBoxScanLast.Size = new System.Drawing.Size(210, 26);
|
||||
this.textBoxScanLast.TabIndex = 10;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(33, 140);
|
||||
this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(82, 20);
|
||||
this.label1.TabIndex = 9;
|
||||
this.label1.Text = "Last scan:";
|
||||
//
|
||||
// tabControlResult
|
||||
//
|
||||
this.tabControlResult.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tabControlResult.Controls.Add(this.tabPageProtocol);
|
||||
this.tabControlResult.Controls.Add(this.tabPageQueryResult);
|
||||
this.tabControlResult.Location = new System.Drawing.Point(36, 189);
|
||||
this.tabControlResult.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.tabControlResult.Name = "tabControlResult";
|
||||
this.tabControlResult.SelectedIndex = 0;
|
||||
this.tabControlResult.Size = new System.Drawing.Size(981, 458);
|
||||
this.tabControlResult.TabIndex = 15;
|
||||
//
|
||||
// tabPageProtocol
|
||||
//
|
||||
this.tabPageProtocol.Controls.Add(this.ctrlProtocolBox1);
|
||||
this.tabPageProtocol.Location = new System.Drawing.Point(4, 29);
|
||||
this.tabPageProtocol.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.tabPageProtocol.Name = "tabPageProtocol";
|
||||
this.tabPageProtocol.Padding = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.tabPageProtocol.Size = new System.Drawing.Size(973, 425);
|
||||
this.tabPageProtocol.TabIndex = 1;
|
||||
this.tabPageProtocol.Text = "Protocol";
|
||||
this.tabPageProtocol.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// tabPageQueryResult
|
||||
//
|
||||
this.tabPageQueryResult.Controls.Add(this.splitContainerTableResult);
|
||||
this.tabPageQueryResult.Location = new System.Drawing.Point(4, 29);
|
||||
this.tabPageQueryResult.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.tabPageQueryResult.Name = "tabPageQueryResult";
|
||||
this.tabPageQueryResult.Padding = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.tabPageQueryResult.Size = new System.Drawing.Size(973, 425);
|
||||
this.tabPageQueryResult.TabIndex = 0;
|
||||
this.tabPageQueryResult.Text = "Query result";
|
||||
this.tabPageQueryResult.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// splitContainerTableResult
|
||||
//
|
||||
this.splitContainerTableResult.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainerTableResult.Location = new System.Drawing.Point(4, 5);
|
||||
this.splitContainerTableResult.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.splitContainerTableResult.Name = "splitContainerTableResult";
|
||||
//
|
||||
// splitContainerTableResult.Panel1
|
||||
//
|
||||
this.splitContainerTableResult.Panel1.Controls.Add(this.treeViewValidationResult);
|
||||
//
|
||||
// splitContainerTableResult.Panel2
|
||||
//
|
||||
this.splitContainerTableResult.Panel2.Controls.Add(this.splitContainerTableResultDetails);
|
||||
this.splitContainerTableResult.Size = new System.Drawing.Size(965, 415);
|
||||
this.splitContainerTableResult.SplitterDistance = 479;
|
||||
this.splitContainerTableResult.SplitterWidth = 9;
|
||||
this.splitContainerTableResult.TabIndex = 3;
|
||||
//
|
||||
// treeViewValidationResult
|
||||
//
|
||||
this.treeViewValidationResult.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.treeViewValidationResult.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.treeViewValidationResult.ImageIndex = 0;
|
||||
this.treeViewValidationResult.ImageList = this.imageListStatus;
|
||||
this.treeViewValidationResult.Indent = 28;
|
||||
this.treeViewValidationResult.ItemHeight = 28;
|
||||
this.treeViewValidationResult.Location = new System.Drawing.Point(0, 0);
|
||||
this.treeViewValidationResult.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.treeViewValidationResult.Name = "treeViewValidationResult";
|
||||
this.treeViewValidationResult.SelectedImageIndex = 0;
|
||||
this.treeViewValidationResult.Size = new System.Drawing.Size(479, 415);
|
||||
this.treeViewValidationResult.TabIndex = 0;
|
||||
this.treeViewValidationResult.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeViewValidationResult_AfterSelect);
|
||||
//
|
||||
// splitContainerTableResultDetails
|
||||
//
|
||||
this.splitContainerTableResultDetails.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainerTableResultDetails.Location = new System.Drawing.Point(0, 0);
|
||||
this.splitContainerTableResultDetails.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.splitContainerTableResultDetails.Name = "splitContainerTableResultDetails";
|
||||
this.splitContainerTableResultDetails.Orientation = System.Windows.Forms.Orientation.Horizontal;
|
||||
//
|
||||
// splitContainerTableResultDetails.Panel1
|
||||
//
|
||||
this.splitContainerTableResultDetails.Panel1.Controls.Add(this.panelTableDetailsTop);
|
||||
//
|
||||
// splitContainerTableResultDetails.Panel2
|
||||
//
|
||||
this.splitContainerTableResultDetails.Panel2.BackColor = System.Drawing.SystemColors.Window;
|
||||
this.splitContainerTableResultDetails.Panel2.Controls.Add(this.panelTableDetailsBottom);
|
||||
this.splitContainerTableResultDetails.Size = new System.Drawing.Size(477, 415);
|
||||
this.splitContainerTableResultDetails.SplitterDistance = 43;
|
||||
this.splitContainerTableResultDetails.SplitterWidth = 6;
|
||||
this.splitContainerTableResultDetails.TabIndex = 0;
|
||||
//
|
||||
// panelTableDetailsTop
|
||||
//
|
||||
this.panelTableDetailsTop.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.panelTableDetailsTop.Controls.Add(this.richTextBoxTableResult);
|
||||
this.panelTableDetailsTop.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.panelTableDetailsTop.Location = new System.Drawing.Point(0, 0);
|
||||
this.panelTableDetailsTop.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.panelTableDetailsTop.Name = "panelTableDetailsTop";
|
||||
this.panelTableDetailsTop.Size = new System.Drawing.Size(477, 43);
|
||||
this.panelTableDetailsTop.TabIndex = 1;
|
||||
//
|
||||
// richTextBoxTableResult
|
||||
//
|
||||
this.richTextBoxTableResult.BackColor = System.Drawing.SystemColors.Window;
|
||||
this.richTextBoxTableResult.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.richTextBoxTableResult.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.richTextBoxTableResult.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.richTextBoxTableResult.HideSelection = false;
|
||||
this.richTextBoxTableResult.Location = new System.Drawing.Point(0, 0);
|
||||
this.richTextBoxTableResult.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.richTextBoxTableResult.Name = "richTextBoxTableResult";
|
||||
this.richTextBoxTableResult.ReadOnly = true;
|
||||
this.richTextBoxTableResult.Size = new System.Drawing.Size(475, 41);
|
||||
this.richTextBoxTableResult.TabIndex = 0;
|
||||
this.richTextBoxTableResult.Text = "";
|
||||
//
|
||||
// panelTableDetailsBottom
|
||||
//
|
||||
this.panelTableDetailsBottom.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.panelTableDetailsBottom.Controls.Add(this.webBrowserTableResult);
|
||||
this.panelTableDetailsBottom.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.panelTableDetailsBottom.Location = new System.Drawing.Point(0, 0);
|
||||
this.panelTableDetailsBottom.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.panelTableDetailsBottom.Name = "panelTableDetailsBottom";
|
||||
this.panelTableDetailsBottom.Size = new System.Drawing.Size(477, 366);
|
||||
this.panelTableDetailsBottom.TabIndex = 1;
|
||||
//
|
||||
// webBrowserTableResult
|
||||
//
|
||||
this.webBrowserTableResult.AllowNavigation = false;
|
||||
this.webBrowserTableResult.AllowWebBrowserDrop = false;
|
||||
this.webBrowserTableResult.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.webBrowserTableResult.IsWebBrowserContextMenuEnabled = false;
|
||||
this.webBrowserTableResult.Location = new System.Drawing.Point(0, 0);
|
||||
this.webBrowserTableResult.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.webBrowserTableResult.MinimumSize = new System.Drawing.Size(30, 31);
|
||||
this.webBrowserTableResult.Name = "webBrowserTableResult";
|
||||
this.webBrowserTableResult.Size = new System.Drawing.Size(475, 364);
|
||||
this.webBrowserTableResult.TabIndex = 0;
|
||||
this.webBrowserTableResult.WebBrowserShortcutsEnabled = false;
|
||||
//
|
||||
// buttonRemoveScan
|
||||
//
|
||||
this.buttonRemoveScan.Enabled = false;
|
||||
this.buttonRemoveScan.Location = new System.Drawing.Point(532, 28);
|
||||
this.buttonRemoveScan.Margin = new System.Windows.Forms.Padding(6, 8, 6, 8);
|
||||
this.buttonRemoveScan.Name = "buttonRemoveScan";
|
||||
this.buttonRemoveScan.Size = new System.Drawing.Size(236, 78);
|
||||
this.buttonRemoveScan.TabIndex = 16;
|
||||
this.buttonRemoveScan.Text = "Remove last scan";
|
||||
this.buttonRemoveScan.UseVisualStyleBackColor = true;
|
||||
this.buttonRemoveScan.Click += new System.EventHandler(this.buttonRemoveScan_Click);
|
||||
//
|
||||
// buttonTest
|
||||
//
|
||||
this.buttonTest.Location = new System.Drawing.Point(780, 28);
|
||||
this.buttonTest.Margin = new System.Windows.Forms.Padding(6, 8, 6, 8);
|
||||
this.buttonTest.Name = "buttonTest";
|
||||
this.buttonTest.Size = new System.Drawing.Size(236, 78);
|
||||
this.buttonTest.TabIndex = 17;
|
||||
this.buttonTest.Text = "Test";
|
||||
this.buttonTest.UseVisualStyleBackColor = true;
|
||||
this.buttonTest.Click += new System.EventHandler(this.buttonTest_Click);
|
||||
//
|
||||
// ctrlProtocolBox1
|
||||
//
|
||||
this.ctrlProtocolBox1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.ctrlProtocolBox1.Location = new System.Drawing.Point(4, 5);
|
||||
this.ctrlProtocolBox1.Name = "ctrlProtocolBox1";
|
||||
this.ctrlProtocolBox1.Size = new System.Drawing.Size(965, 415);
|
||||
this.ctrlProtocolBox1.TabIndex = 16;
|
||||
//
|
||||
// ctrlNexthink
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.buttonTest);
|
||||
this.Controls.Add(this.buttonRemoveScan);
|
||||
this.Controls.Add(this.tabControlResult);
|
||||
this.Controls.Add(this.panelScanNext);
|
||||
this.Controls.Add(this.textBoxScanNext);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.textBoxScanLast);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.buttonQueryData);
|
||||
this.Controls.Add(this.buttonScanTableColumns);
|
||||
this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.Name = "ctrlNexthink";
|
||||
this.Size = new System.Drawing.Size(1040, 672);
|
||||
this.Load += new System.EventHandler(this.ctrlNexthink_Load);
|
||||
this.tabControlResult.ResumeLayout(false);
|
||||
this.tabPageProtocol.ResumeLayout(false);
|
||||
this.tabPageQueryResult.ResumeLayout(false);
|
||||
this.splitContainerTableResult.Panel1.ResumeLayout(false);
|
||||
this.splitContainerTableResult.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainerTableResult)).EndInit();
|
||||
this.splitContainerTableResult.ResumeLayout(false);
|
||||
this.splitContainerTableResultDetails.Panel1.ResumeLayout(false);
|
||||
this.splitContainerTableResultDetails.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainerTableResultDetails)).EndInit();
|
||||
this.splitContainerTableResultDetails.ResumeLayout(false);
|
||||
this.panelTableDetailsTop.ResumeLayout(false);
|
||||
this.panelTableDetailsBottom.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Button buttonScanTableColumns;
|
||||
private System.Windows.Forms.ImageList imageListStatus;
|
||||
private System.Windows.Forms.Button buttonQueryData;
|
||||
private System.Windows.Forms.Panel panelScanNext;
|
||||
private System.Windows.Forms.TextBox textBoxScanNext;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.TextBox textBoxScanLast;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.TabControl tabControlResult;
|
||||
private System.Windows.Forms.TabPage tabPageQueryResult;
|
||||
private System.Windows.Forms.SplitContainer splitContainerTableResult;
|
||||
private System.Windows.Forms.TreeView treeViewValidationResult;
|
||||
private System.Windows.Forms.SplitContainer splitContainerTableResultDetails;
|
||||
private System.Windows.Forms.Panel panelTableDetailsTop;
|
||||
private System.Windows.Forms.RichTextBox richTextBoxTableResult;
|
||||
private System.Windows.Forms.Panel panelTableDetailsBottom;
|
||||
private System.Windows.Forms.WebBrowser webBrowserTableResult;
|
||||
private System.Windows.Forms.TabPage tabPageProtocol;
|
||||
private System.Windows.Forms.Button buttonRemoveScan;
|
||||
private System.Windows.Forms.Button buttonTest;
|
||||
private ctrlProtocolBox ctrlProtocolBox1;
|
||||
}
|
||||
}
|
||||
418
C4IT_DataHistoryProvider_Test/ctrlNexthink.cs
Normal file
@@ -0,0 +1,418 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using System.IO;
|
||||
using System.Diagnostics;
|
||||
|
||||
using C4IT.Logging;
|
||||
using C4IT.DataHistoryProvider;
|
||||
|
||||
using static C4IT.Logging.cLogManager;
|
||||
|
||||
namespace C4IT_DataHistoryProvider_Test
|
||||
{
|
||||
public partial class ctrlNexthink : UserControl
|
||||
{
|
||||
private cNxqlColumnsValidationResult ValidationResults = null;
|
||||
|
||||
private bool isScanEnabled = false;
|
||||
private bool isColumnCheck = false;
|
||||
|
||||
|
||||
public ctrlNexthink()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
webBrowserTableResult.DocumentText = "<HTML></HTML>";
|
||||
}
|
||||
|
||||
private async void ctrlNexthink_Load(object sender, EventArgs e)
|
||||
{
|
||||
panelScanNext.Height = textBoxScanNext.Height;
|
||||
panelScanNext.Top = textBoxScanNext.Top;
|
||||
|
||||
var _requestInfo = new cF4sdWebRequestInfo("ctrlNexthink_Load", null);
|
||||
await checkScanTimesAsync(_requestInfo, 1);
|
||||
}
|
||||
|
||||
private void SetBrowserContent(string Content)
|
||||
{
|
||||
webBrowserTableResult.Navigate("about:blank");
|
||||
var doc = webBrowserTableResult.Document.OpenNew(true);
|
||||
if (string.IsNullOrWhiteSpace(Content))
|
||||
doc.Write("<HTML></HTML>");
|
||||
else
|
||||
doc.Write(Content);
|
||||
webBrowserTableResult.Refresh();
|
||||
}
|
||||
|
||||
private async void buttonScanTableColumns_Click(object sender, EventArgs e)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
try
|
||||
{
|
||||
Cursor = Cursors.WaitCursor;
|
||||
Program.mainForm.DisableAllTabPages(this);
|
||||
buttonScanTableColumns.Enabled = false;
|
||||
tabControlResult.SelectedIndex = 0;
|
||||
tabPageProtocol.Refresh();
|
||||
|
||||
ctrlProtocolBox1.ClearMessages();
|
||||
treeViewValidationResult.Nodes.Clear();
|
||||
richTextBoxTableResult.Text = "";
|
||||
SetBrowserContent(null);
|
||||
|
||||
var _requestInfo = new cF4sdWebRequestInfo("buttonScanTableColumns_Click", null);
|
||||
|
||||
Program.Collector.CleanupUiMessageHandler();
|
||||
Program.Collector.ProcessUiMessage += ctrlProtocolBox1.ProcessMessage;
|
||||
|
||||
var Validator = new cNxqlColumnValidator(Program.Collector);
|
||||
await Task.Run(async () =>
|
||||
{
|
||||
try
|
||||
{
|
||||
await Validator.DoValidationAsync(_requestInfo, 1, CancellationToken.None).ConfigureAwait(false);
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
});
|
||||
|
||||
TreeNode firstNode = null;
|
||||
TreeNode firstErrorNode = null;
|
||||
treeViewValidationResult.Nodes.Clear();
|
||||
foreach (var Portal in Validator.ValidationResults.Values)
|
||||
{
|
||||
var tn = new TreeNode($"{Portal.Portal.Name} ({Portal.Portal.Address})");
|
||||
treeViewValidationResult.Nodes.Add(tn);
|
||||
|
||||
foreach (var Table in Portal.TableResults.Values)
|
||||
{
|
||||
var tn2 = new TreeNode($"{Table.Table.Name}")
|
||||
{
|
||||
Tag = Table
|
||||
};
|
||||
tn.Nodes.Add(tn2);
|
||||
var isAllValid = true;
|
||||
foreach (var Column in Table.ColumnResults.Values)
|
||||
{
|
||||
isAllValid &= Column.IsValid;
|
||||
var sn = "";
|
||||
if (!string.IsNullOrEmpty(Column.Column.SourceTable))
|
||||
sn = $" ({Column.Column.SourceTable} {Column.Column.SourceName})";
|
||||
if (Column.Column.SourceName != Column.Column.Name)
|
||||
sn = $" ({Column.Column.SourceName})";
|
||||
var tn3 = new TreeNode($"{Column.Column.Name}{sn}")
|
||||
{
|
||||
Tag = Column
|
||||
};
|
||||
tn2.Nodes.Add(tn3);
|
||||
if (Column.IsValid)
|
||||
tn3.ImageIndex = 0;
|
||||
else
|
||||
{
|
||||
tn3.ImageIndex = 2;
|
||||
if (firstErrorNode == null)
|
||||
firstErrorNode = tn2;
|
||||
}
|
||||
tn3.SelectedImageIndex = tn3.ImageIndex;
|
||||
}
|
||||
if (Table.IsValid)
|
||||
{
|
||||
if (isAllValid)
|
||||
tn2.ImageIndex = 0;
|
||||
else
|
||||
{
|
||||
tn2.ImageIndex = 1;
|
||||
if (firstErrorNode == null)
|
||||
firstErrorNode = tn2;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
tn2.ImageIndex = 2;
|
||||
if (firstErrorNode == null)
|
||||
firstErrorNode = tn2;
|
||||
}
|
||||
tn2.SelectedImageIndex = tn2.ImageIndex;
|
||||
|
||||
if (!isAllValid)
|
||||
tn2.Expand();
|
||||
else
|
||||
tn2.Collapse();
|
||||
}
|
||||
tn.ImageIndex = -1;
|
||||
tn.SelectedImageIndex = -1;
|
||||
tn.Expand();
|
||||
if (firstNode == null)
|
||||
firstNode = tn;
|
||||
}
|
||||
|
||||
if (firstNode != null)
|
||||
firstNode.EnsureVisible();
|
||||
if (firstErrorNode != null)
|
||||
firstErrorNode.EnsureVisible();
|
||||
|
||||
ValidationResults = Validator.ValidationResults;
|
||||
isColumnCheck = true;
|
||||
|
||||
tabControlResult.SelectedIndex = 1;
|
||||
tabPageQueryResult.Refresh();
|
||||
|
||||
await checkScanTimesAsync(_requestInfo, 1);
|
||||
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
ctrlProtocolBox1.ProcessMessage("");
|
||||
this.Enabled = true;
|
||||
Program.mainForm.EnableAllTabPages();
|
||||
buttonScanTableColumns.Enabled = true;
|
||||
Cursor = Cursors.Default;
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
}
|
||||
|
||||
private void treeViewValidationResult_AfterSelect(object sender, TreeViewEventArgs e)
|
||||
{
|
||||
if (treeViewValidationResult.SelectedNode?.Tag is cNxqlTableValidationResult TableResult)
|
||||
{
|
||||
richTextBoxTableResult.Text = TableResult.NXQL;
|
||||
SetBrowserContent(TableResult.ErrorMessage);
|
||||
return;
|
||||
}
|
||||
|
||||
if (treeViewValidationResult.SelectedNode?.Tag is cNxqlColumnValidationResult ColumnResult)
|
||||
{
|
||||
richTextBoxTableResult.Text = ColumnResult.NXQL;
|
||||
SetBrowserContent(ColumnResult.ErrorMessage);
|
||||
return;
|
||||
}
|
||||
|
||||
richTextBoxTableResult.Text = "";
|
||||
SetBrowserContent(null);
|
||||
}
|
||||
|
||||
private async void buttonQueryData_Click(object sender, EventArgs e)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
try
|
||||
{
|
||||
if (ValidationResults == null)
|
||||
return;
|
||||
if (Program.Collector == null)
|
||||
return;
|
||||
|
||||
var _requestInfo = new cF4sdWebRequestInfo("buttonQueryData_Click", null);
|
||||
|
||||
Cursor = Cursors.WaitCursor;
|
||||
|
||||
ctrlProtocolBox1.ClearMessages();
|
||||
this.Enabled = false;
|
||||
SetBrowserContent(null);
|
||||
|
||||
tabControlResult.SelectedIndex = 0;
|
||||
|
||||
buttonQueryData.Enabled = false;
|
||||
buttonScanTableColumns.Enabled = false;
|
||||
buttonRemoveScan.Enabled = false;
|
||||
|
||||
Program.mainForm.DisableAllTabPages(this);
|
||||
|
||||
Program.Collector.CleanupUiMessageHandler();
|
||||
Program.Collector.ProcessUiMessage += ctrlProtocolBox1.ProcessMessage;
|
||||
|
||||
if (Program.Collector.NxqlCollector != null)
|
||||
{
|
||||
Program.Collector.NxqlCollector.LastValidationResults = ValidationResults;
|
||||
Application.DoEvents();
|
||||
await Program.Collector.NxqlCollector.DoScanAsync(true, false, _requestInfo, 1, CancellationToken.None, true);
|
||||
}
|
||||
|
||||
await checkScanTimesAsync(_requestInfo, 1);
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
this.Enabled = true;
|
||||
Program.mainForm.EnableAllTabPages();
|
||||
Cursor = Cursors.Default;
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private async Task checkScanTimesAsync(cF4sdWebRequestInfo requestInfo, int LogDeep)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
if (cPerformanceLogger.IsActive && requestInfo != null) { if (CM == null) CM = MethodBase.GetCurrentMethod(); cPerformanceLogger.LogPerformanceStart(LogDeep, CM, requestInfo.id, requestInfo.created); }
|
||||
var _startTime = DateTime.UtcNow;
|
||||
|
||||
try
|
||||
{
|
||||
var Col = Color.Transparent;
|
||||
textBoxScanLast.Text = "";
|
||||
textBoxScanNext.Text = "";
|
||||
|
||||
isScanEnabled = false;
|
||||
if (Program.Collector != null)
|
||||
{
|
||||
var scanInfo = await Program.Collector.NxqlCollector.GetScanTimeInfoAsync(requestInfo, LogDeep+1, CancellationToken.None);
|
||||
|
||||
if (scanInfo?.NextScan is DateTime nextScan)
|
||||
{
|
||||
textBoxScanNext.Text = nextScan.ToLocalTime().ToString();
|
||||
if (scanInfo?.LastScan is DateTime lastScan)
|
||||
{
|
||||
textBoxScanLast.Text = lastScan.ToLocalTime().ToString();
|
||||
if (nextScan >= lastScan)
|
||||
{
|
||||
Col = Color.Red;
|
||||
isScanEnabled = true;
|
||||
}
|
||||
else
|
||||
Col = Color.Green;
|
||||
}
|
||||
else
|
||||
{
|
||||
Col = Color.Red;
|
||||
isScanEnabled = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Col = Color.Red;
|
||||
isScanEnabled = true;
|
||||
if (scanInfo?.LastScan is DateTime lastScan)
|
||||
textBoxScanLast.Text = lastScan.ToLocalTime().ToString();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
panelScanNext.BackColor = Col;
|
||||
buttonQueryData.Enabled = isScanEnabled && isColumnCheck;
|
||||
buttonRemoveScan.Enabled = isColumnCheck;
|
||||
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (cPerformanceLogger.IsActive && requestInfo != null) { cPerformanceLogger.LogPerformanceEnd(LogDeep, CM, requestInfo.id, requestInfo.created, _startTime); }
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
}
|
||||
|
||||
private async Task DoScanAsync(bool Rescan)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
|
||||
if (Program.Collector == null)
|
||||
return;
|
||||
|
||||
try
|
||||
{
|
||||
Cursor = Cursors.WaitCursor;
|
||||
|
||||
ctrlProtocolBox1.ClearMessages();
|
||||
buttonQueryData.Enabled = false;
|
||||
buttonScanTableColumns.Enabled = false;
|
||||
buttonRemoveScan.Enabled = false;
|
||||
|
||||
Program.mainForm.DisableAllTabPages(this);
|
||||
|
||||
Program.Collector.CleanupUiMessageHandler();
|
||||
Program.Collector.ProcessUiMessage += ctrlProtocolBox1.ProcessMessage;
|
||||
var _requestInfo = new cF4sdWebRequestInfo("DoScanNexthink", null);
|
||||
await Program.Collector.NxqlCollector.DoScanAsync(true, Rescan, _requestInfo, 1, CancellationToken.None);
|
||||
|
||||
await checkScanTimesAsync(_requestInfo, 1);
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
ctrlProtocolBox1.ProcessMessage("");
|
||||
Program.mainForm.EnableAllTabPages();
|
||||
buttonQueryData.Enabled = isScanEnabled && isColumnCheck; ;
|
||||
buttonScanTableColumns.Enabled = true;
|
||||
Cursor = Cursors.Default;
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private async void buttonRemoveScan_Click(object sender, EventArgs e)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
try
|
||||
{
|
||||
Cursor = Cursors.WaitCursor;
|
||||
|
||||
ctrlProtocolBox1.ClearMessages();
|
||||
buttonQueryData.Enabled = false;
|
||||
buttonScanTableColumns.Enabled = false;
|
||||
buttonRemoveScan.Enabled = false;
|
||||
|
||||
Program.mainForm.DisableAllTabPages(this);
|
||||
|
||||
Program.Collector.CleanupUiMessageHandler();
|
||||
Program.Collector.ProcessUiMessage += ctrlProtocolBox1.ProcessMessage;
|
||||
|
||||
var _requestInfo = new cF4sdWebRequestInfo("buttonRemoveScan_Click", null);
|
||||
await Program.Collector.RemoveLastScanHistoryEntry("NxqlScan-all", _requestInfo, 1, CancellationToken.None);
|
||||
|
||||
await checkScanTimesAsync(_requestInfo, 1);
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
ctrlProtocolBox1.ProcessMessage("");
|
||||
Program.mainForm.EnableAllTabPages();
|
||||
buttonScanTableColumns.Enabled = true;
|
||||
Cursor = Cursors.Default;
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
}
|
||||
|
||||
private async void buttonTest_Click(object sender, EventArgs e)
|
||||
{
|
||||
var ColVaidation = new cNxqlColumnsValidationResult();
|
||||
await ColVaidation.LoadFromSqlAsync(Program.Collector, CancellationToken.None, null,0);
|
||||
|
||||
var NxqlCollector = new cNxqlDailyCollector(Program.Collector, ColVaidation);
|
||||
if (!Program.Collector.ClusterConfig.Tables.TryGetValue("nxt-device-apps-outlook", out var _tbl))
|
||||
return;
|
||||
|
||||
NxqlCollector.CreateJobs(new List<cDataHistoryConfigTable>(1) { _tbl }, DateTime.UtcNow.AddDays(-7), DateTime.UtcNow, "NEXThink", 11261, C4IT.FASD.Base.enumFasdInformationClass.Computer);
|
||||
|
||||
await NxqlCollector.Orchestrator.ProcessAsync(CancellationToken.None);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
272
C4IT_DataHistoryProvider_Test/ctrlNexthink.resx
Normal file
@@ -0,0 +1,272 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="imageListStatus.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<data name="imageListStatus.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAS
|
||||
IQAAAk1TRnQBSQFMAgEBAwEAAWABAAFgAQABGAEAARgBAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFg
|
||||
AwABGAMAAQEBAAEgBgABJDYAAwMBBAMdASgDKQE+AykBPgMdASgDAwEEoAAEAgMFAQYDCgENAw8BFAMT
|
||||
ARkDEwEaAxEBFgMLAQ4DBgEHBAKUAAQCAzMBUgFVAVcBVQG0AT4BewFaAfUBDAGmAUkB/wEMAaYBSQH/
|
||||
AQwBpgFJAf8BDAGmAUkB/wE/AXsBWgH1AVUBVwFVAbQDMwFSBAKMAAQBAwcBCQMUARsDJQE3AkEBQgFz
|
||||
A1EBngJVAVcBtANYAbcCUgFUAagDSAGEAy4BRwMXAR8DCQELBAKIAAMlATYBWwFfAVsB0AEMAaYBSQH/
|
||||
AQwBpgFJAf8BDAGmAUkB/wEMAaYBSQH/AQwBpgFJAf8BDAGmAUkB/wEMAaYBSQH/AQwBpgFJAf8BDAGm
|
||||
AUkB/wEMAaYBSQH/AVsBXwFbAdADJQE2GAADOgFgAU4CTwGXAU4CTwGXAU4CTwGXAU4CTwGXAU4CTwGX
|
||||
AU4CTwGXAU4CTwGXAU4CTwGXAU4CTwGXAU4CTwGXAU4CTwGXAU4CTwGXAU4CTwGXAU4CTwGXAU4CTwGX
|
||||
AU4CTwGXAU4CTwGXAU4CTwGXAU4CTwGXAU4CTwGXAzoBYBQAAwIBAwMPARQDLAFDA1UBrQI8AYMB9AIA
|
||||
AcAB/wIAAbgB/wIAAbQB/wIAAbMB/wIAAbYB/wIAAb0B/wIOAbcB/QJbAV0BzAM7AWMDEwEZAwQBBYAA
|
||||
AzsBZAEmAYkBTQH6AQwBpgFJAf8BDAGmAUkB/wEMAaYBSQH/AQwBpgFJAf8BDAGmAUkB/wEMAaYBSQH/
|
||||
AQwBpgFJAf8BDAGmAUkB/wEMAaYBSQH/AQwBpgFJAf8BDAGmAUkB/wEMAaYBSQH/ASYBiQFNAfoDOwFl
|
||||
FAABXAFgAWEB2QERAckB8wH/AREByQHzAf8BEQHJAfMB/wERAckB8wH/AREByQHzAf8BEQHJAfMB/wER
|
||||
AckB8wH/AREByQHzAf8BEQHJAfMB/wERAckB8wH/AREByQHzAf8BEQHJAfMB/wERAckB8wH/AREByQHz
|
||||
Af8BEQHJAfMB/wERAckB8wH/AREByQHzAf8BEQHJAfMB/wERAckB8wH/AREByQHzAf8BXAFgAWEB2RAA
|
||||
AwMBBAMTARoDRAF7AkUBgAHyAgABwQH/AgABtAH/AgABqgH/AgABpAH/AgABogH/AgABogH/AgABowH/
|
||||
AgABqAH/AgABsAH/AgABvAH/AgAByAH/AlUBVwGxAxwBJwMFAQZ4AAM6AWIBGwGYAV8B/gEMAaYBSQH/
|
||||
AQwBpgFJAf8BDAGmAUkB/wEMAaYBSQH/AQwBpgFJAf8BDAGmAUkB/wEMAaYBSQH/AQwBpgFJAf8BDAGm
|
||||
AUkB/wEMAaYBSQH/AQwBpgFJAf8BDAGmAUkB/wEMAaYBSQH/AQwBpgFJAf8BGAGOAVUB/gM7AWUQAAM6
|
||||
AWEBEgHJAfQB/wESAckB9AH/ARIByQH0Af8BEgHJAfQB/wESAckB9AH/ARIByQH0Af8BEgHJAfQB/wES
|
||||
AckB9AH/ARIByQH0Af8BGgGfAeQB/wEcAZYB4QH/ARMByAHzAf8BEgHJAfQB/wESAckB9AH/ARIByQH0
|
||||
Af8BEgHJAfQB/wESAckB9AH/ARIByQH0Af8BEgHJAfQB/wESAckB9AH/AzoBYQwABAIDEgEYA00BkwIC
|
||||
AasB/gIAAbcB/wIAAaoB/wIAAaQB/wEAAQQBpQH/AQABEgGpAf8BAAEdAa4B/wEAASMBsQH/AQABIwGx
|
||||
Af8BAAEYAa4B/wEAAQQBpwH/AgABpwH/AgABsgH/AgABvwH/AlsBXwHQAx0BKQMDAQRwAAMjATMBLwGR
|
||||
AWgB+QESAboBXgH/AQ8BsAFUAf8BDAGmAUkB/wEMAaYBSQH/AQwBpgFJAf8BKwGwAV8B/wEMAaYBSQH/
|
||||
AQwBpgFJAf8BDAGmAUkB/wEMAaYBSQH/AQwBpgFJAf8BDAGmAUkB/wEMAaYBSQH/AQwBpgFJAf8BDAGm
|
||||
AUkB/wEMAaYBSQH/ASYBiQFNAfoDJQE3DAAEAgFbAlwBywEUAcoB9AH/ARQBygH0Af8BFAHKAfQB/wEU
|
||||
AcoB9AH/ARQBygH0Af8BFAHKAfQB/wEUAcoB9AH/ARgBtAHuAf8CMgHZAf8CMgHZAf8BHQGeAekB/wEU
|
||||
AcoB9AH/ARQBygH0Af8BFAHKAfQB/wEUAcoB9AH/ARQBygH0Af8BFAHKAfQB/wEUAcoB9AH/AVsCXAHL
|
||||
BAIIAAQBAwwBDwNFAXwCAAG9Af8CAAGzAf8CAAGpAf8BAAECAagB/wEAARUBrgH/AQABJQG1Af8BAAEx
|
||||
AboB/wEAATsBvwH/AQABQgHCAf8BAAFHAcUB/wEAAUgBxQH/AQABQgHCAf8BAAEmAbcB/wIAAaoB/wIA
|
||||
Aa8B/wIAAboB/wJaAVsBxQMSARcEAmgABAIBWwJcAc0BEgG6AV4B/wESAboBXgH/ARIBugFeAf8BDwGw
|
||||
AVQB/wEMAaYBSQH/AYUBywGhAf8B6AHrAeYB/wFIAboBcwH/AQwBpgFJAf8BDAGmAUkB/wEMAaYBSQH/
|
||||
AQwBpgFJAf8BDAGmAUkB/wEMAaYBSQH/AQwBpgFJAf8BDAGmAUkB/wEMAaYBSQH/AQwBpgFJAf8BWwFf
|
||||
AVsB0AQCDAADKAE7ASEBswHdAf4BFQHLAfUB/wEVAcsB9QH/ARUBywH1Af8BFQHLAfUB/wEVAcsB9QH/
|
||||
ARUBywH1Af8BFwG/AfMB/wExAT8B3gH/ATMBOAHcAf8BGwGwAfAB/wEVAcsB9QH/ARUBywH1Af8BFQHL
|
||||
AfUB/wEVAcsB9QH/ARUBywH1Af8BFQHLAfUB/wEhAbMB3QH+AycBOgwAAwQBBQMpAT4CNAGBAfUCAAGz
|
||||
Af8CAAGsAf8BAAEGAa0B/wEAAR0BrgH/AS0BVAHCAf8BAAE4AbwB/wEAAUgByAH/AQABUwHOAf8BAAFa
|
||||
AdEB/wEAAV0B0gH/AQABWgHOAf8BDQFgAcsB/wEZAWABygH/AQABNQG+Af8BAAEBAa4B/wIAAbAB/wIA
|
||||
AbcB/wNIAYQDBgEIaAADMgFPARIBugFeAf8BEgG6AV4B/wESAboBXgH/ARIBugFeAf8BEgG6AV4B/wGJ
|
||||
AdMBqgH/Ae8B7QHrAf8B7wHtAesB/wHoAesB5gH/AUgBugFzAf8BDAGmAUkB/wEMAaYBSQH/AQwBpgFJ
|
||||
Af8BDAGmAUkB/wEMAaYBSQH/AQwBpgFJAf8BDAGmAUkB/wEMAaYBSQH/AQwBpgFJAf8BDAGmAUkB/wMz
|
||||
AVIQAAFTAlQBpgEWAcsB9gH/ARYBywH2Af8BFgHLAfYB/wEWAcsB9gH/ARYBywH2Af8BFgHLAfYB/wEW
|
||||
AcsB9gH/ARcBxAH1Af8BGAHBAfQB/wEWAcsB9gH/ARYBywH2Af8BFgHLAfYB/wEWAcsB9gH/ARYBywH2
|
||||
Af8BFgHLAfYB/wEWAcsB9gH/AVICUwGlDAAEAQMMAQ8CVQFXAbECAAGyAf8CAAGwAf8BAAEEAbAB/wEA
|
||||
ARoBqQH/AaQBswHfAf8B+gH7Af0B/wFIAYIBywH/AQABUgHGAf8BAAFoAdkB/wEAAXAB3QH/AQABawHW
|
||||
Af8BDQFnAccB/wHVAeQB9AH/AeIB6wH3Af8BGQFYAcAB/wEAASwBuwH/AgABsAH/AgABsgH/AkcBeAHx
|
||||
AxkBIwQBZAABVQJWAbABEgG6AV4B/wESAboBXgH/ARIBugFeAf8BEgG6AV4B/wGNAdwBswX/AfcB9gH1
|
||||
Af8B7wHtAesB/wHvAe0B6wH/AegB6wHmAf8BSQG6AXQB/wEMAaYBSQH/AQwBpgFJAf8BDAGmAUkB/wEM
|
||||
AaYBSQH/AQwBpgFJAf8BDAGmAUkB/wEMAaYBSQH/AQwBpgFJAf8BDAGmAUkB/wFVAlcBtBAAAxUBHQFC
|
||||
AYcBlwH1ARcBzAH2Af8BFwHMAfYB/wEXAcwB9gH/ARcBzAH2Af8BFwHMAfYB/wEXAcwB9gH/ARwBswHt
|
||||
Af8BHQGvAesB/wEXAcwB9gH/ARcBzAH2Af8BFwHMAfYB/wEXAcwB9gH/ARcBzAH2Af8BFwHMAfYB/wFD
|
||||
AYcBkgH0AxUBHQwABAIDIAEuAh4BjwH6AgABsAH/AgABswH/AQABGAGzAf8BUQFoAb4J/wH5AfsB/QH/
|
||||
AUgBiQHHAf8BAAFnAcsB/wEAAYEB2gH/AQ0BaAHAAf8B1QHkAfIJ/wG7AcoB5gH/AQABNgG0Af8BAAET
|
||||
AbsB/wIAAbEB/wIAAa8B/wNFAXwDAwEEYAADAwEEAUgBgAFgAfMBEgG6AV4B/wESAboBXgH/ARIBugFe
|
||||
Af8BjQHcAbMN/wH3AfYB9QH/Ae8B7QHrAf8B7wHtAesB/wHoAesB5gH/AUkBugF0Af8BDAGmAUkB/wEM
|
||||
AaYBSQH/AQwBpgFJAf8BDAGmAUkB/wEMAaYBSQH/AQwBpgFJAf8BDAGmAUkB/wEMAaYBSQH/AT4BewFa
|
||||
AfUDAwEEEAADRgF+ARgBzQH3Af8BGAHNAfcB/wEYAc0B9wH/ARgBzQH3Af8BGAHNAfcB/wEYAc0B9wH/
|
||||
ATEBWwHkAf8BNAFPAeIB/wEYAc0B9wH/ARgBzQH3Af8BGAHNAfcB/wEYAc0B9wH/ARgBzQH3Af8BGAHN
|
||||
AfcB/wNGAX4QAAMEAQUCQQFCAXMCAAGsAf8CAAGzAf8BAAELAb0B/wEAASsBxQH/AQABKwGqAf8BkAGj
|
||||
Ac0J/wH6AfsB/QH/AUcBiAG+Af8BDQFbAawB/wHVAeMB7wn/AdcB3wHtAf8BDgFFAawB/wEAAUABxwH/
|
||||
AQABKgHIAf8CAAG2Af8CAAGuAf8CWQFcAcYDBgEIYAADGwEmARIBugFeAf8BEgG6AV4B/wESAboBXgH/
|
||||
AY4B3AG0Ef8B/gH/Af4B/wH3AfYB9QH/Ae8B7QHrAf8B7wHtAesB/wHoAesB5gH/AUkBugF0Af8BDAGm
|
||||
AUkB/wEMAaYBSQH/AQwBpgFJAf8BDAGmAUkB/wEMAaYBSQH/AQwBpgFJAf8BDAGmAUkB/wEMAaYBSQH/
|
||||
Ax0BKRAAAwgBCgFdAWcBaQHhARkBzgH4Af8BGQHOAfgB/wEZAc4B+AH/ARkBzgH4Af8BGQHOAfgB/wE3
|
||||
AUoB5AH/AToBPwHjAf8BGQHNAfcB/wEZAc4B+AH/ARkBzgH4Af8BGQHOAfgB/wEZAc4B+AH/AV8BZgFo
|
||||
AeADBwEJEAADBgEHAlEBUgGkAgABrAH/AgABuAH/AQABGwHHAf8BAAE3AdEB/wEAAUcB0QH/AQABOQGp
|
||||
Af8BkAGhAccJ/wH6AfsB/QH/Ad4B5gHwCf8B1wHdAeoB/wEPAUIBogH/AQABSgHKAf8BAAFCAdQB/wEA
|
||||
AS0BzQH/AgABvQH/AgABsQH/Aj8BeAHzAwsBDmAAAygBPAESAboBXgH/ARIBugFeAf8BjQHcAbMR/wHH
|
||||
Ae4B2gH/AUIByQGIAf8B6gH5AfEB/wH3AfYB9QH/Ae8B7QHrAf8B7wHtAesB/wHoAesB5gH/AUkBugF0
|
||||
Af8BDAGmAUkB/wEMAaYBSQH/AQwBpgFJAf8BDAGmAUkB/wEMAaYBSQH/AQwBpgFJAf8BDAGmAUkB/wMp
|
||||
AT4UAAM2AVcBGgHOAfgB/wEaAc4B+AH/ARoBzgH4Af8BGgHOAfgB/wEaAc0B+AH/ATwBQgHlAf8CPQHl
|
||||
Af8BHAHGAfYB/wEaAc4B+AH/ARoBzgH4Af8BGgHOAfgB/wEaAc4B+AH/AzUBVhQAAwcBCQJZAVoBvwIA
|
||||
AasB/wIAAbkB/wEAASYBzAH/AQABPwHUAf8BAAFSAdoB/wEAAV4B2AH/AQABPQGiAf8BkAGbAb4R/wHX
|
||||
AdoB5gH/AQ8BOQGTAf8BAAFPAckB/wEAAUwB2AH/AQABOQHSAf8BAAElAcwB/wEAAQIBvwH/AgABsQH/
|
||||
AgABpQH/AxUBHWAAAygBPAESAboBXgH/ARIBugFeAf8BjQHcAbMN/wHHAe4B2gH/ARwBvQFlAf8BEgG6
|
||||
AV4B/wE3AcUBgQH/AeoB+QHxAf8B9wH2AfUB/wHvAe0B6wH/Ae8B7QHrAf8B6AHrAeYB/wFJAboBdAH/
|
||||
AQwBpgFJAf8BDAGmAUkB/wEMAaYBSQH/AQwBpgFJAf8BDAGmAUkB/wEMAaYBSQH/AykBPhQABAEBVwJa
|
||||
AcIBGwHPAfkB/wEbAc8B+QH/ARsBzwH5Af8BHAHLAfgB/wE/AUAB5gH/Aj8B5gH/ASEBugH1Af8BGwHP
|
||||
AfkB/wEbAc8B+QH/ARsBzwH5Af8DWQHBGAADBgEIAloBWwHFAgABqAH/AgABuQH/AQABKgHNAf8BAAFB
|
||||
AdUB/wEAAVQB2gH/AQABZAHfAf8BAAFaAcYB/wEOAScBcAH/Ae8B8AH1Df8BXQFlAZ4B/wEAATIBngH/
|
||||
AQABTwHWAf8BAAE/AdQB/wEAAS0BzgH/AQABGQHIAf8CAAG+Af8CAAGuAf8CAAGhAf8DGgEkYAADGwEm
|
||||
ARIBugFeAf8BEgG6AV4B/wESAboBXgH/AY0B3AGzBf8BxwHuAdoB/wEcAb0BZQH/ARIBugFeAf8BEgG6
|
||||
AV4B/wESAboBXgH/ATcBxQGBAf8B6gH5AfEB/wH3AfYB9QH/Ae8B7QHrAf8B7wHtAesB/wHoAesB5gH/
|
||||
AUkBugF0Af8BDAGmAUkB/wEMAaYBSQH/AQwBpgFJAf8BDAGmAUkB/wEMAaYBSQH/Ax0BKRgAAyMBMgE0
|
||||
AboB1QH9AR0B0AH5Af8BHQHQAfkB/wEgAcQB9wH/AkEB6AH/AkEB6AH/ASUBrwH0Af8BHQHQAfkB/wEd
|
||||
AdAB+QH/ASsBsgHIAfwDIgExGAADBAEFAlUBVwG0AgABowH/AgABtwH/AQABKAHMAf8BAAFAAdQB/wEA
|
||||
AVAB2QH/AQABVAHMAf8BEAE+AZoB/wHVAdkB5xH/AvoB/AH/AUkBXAGkAf8BAAEuAa8B/wEAATABzQH/
|
||||
AQABHQHKAf8BAAEKAcMB/wIAAbsB/wIAAasB/wIOAZwB/QMOARJgAAMDAQQBSAGAAWAB8wESAboBXgH/
|
||||
ARIBugFeAf8BEgG6AV4B/wFnAdQBoQH/ARwBvQFlAf8BEgG6AV4B/wESAboBXgH/ARIBugFeAf8BEgG6
|
||||
AV4B/wESAboBXgH/ATcBxQGBAf8B6gH5AfEB/wH3AfYB9QH/Ae8B7QHrAf8B7wHtAesB/wHoAesB5gH/
|
||||
AUkBugF0Af8BDAGmAUkB/wEMAaYBSQH/AQwBpgFJAf8BPgF7AVoB9QMDAQQcAAFPAlABmwEeAdAB+gH/
|
||||
AR4B0AH6Af8BIwG8AfcB/wJDAeoB/wJDAeoB/wEqAaUB9AH/AR4B0AH6Af8BHgHQAfoB/wFPAlABmxwA
|
||||
AwIBAwNLAY0CAAGeAf8CAAGzAf8BAAEcAcgB/wEGAUYB1QH/AREBUgHNAf8BHgFHAacB/wHXAdwB6gn/
|
||||
AdkB3wHsAf8BngGsAc8J/wL6AfwB/wFRAV8BrgH/AQ4BKQGyAf8BDAEgAcgB/wIAAcAB/wIAAbgB/wIA
|
||||
AaUB/wJZAWYB5QMEAQVkAAFVAlYBsAESAboBXgH/ARIBugFeAf8BEgG6AV4B/wESAboBXgH/ARIBugFe
|
||||
Af8BEgG6AV4B/wESAboBXgH/ARIBugFeAf8BEgG6AV4B/wESAboBXgH/ARIBugFeAf8BNwHFAYEB/wHq
|
||||
AfkB8QH/AfcB9gH1Af8B7wHtAesB/wHvAe0B6wH/AegB6wHmAf8BSQG6AXQB/wEMAaYBSQH/AQwBpgFJ
|
||||
Af8BVQJXAbQgAAMSARcBUgGBAYsB8QEfAdEB+wH/ASYBtgH3Af8CRQHsAf8CRQHsAf8BLQGgAfUB/wEf
|
||||
AdEB+wH/AU8BeQGCAfADEQEWHAAEAQMxAU0CAAGVAf8CAAGsAf8BFQElAcgB/wErAVYB0gH/AS8BUAG0
|
||||
Af8B2QHfAe4J/wHcAeIB8AH/AS8BVQGxAf8BHQFIAa8B/wGfAawB1Qn/AvoB/QH/AVwBYgG4Af8BJQEp
|
||||
AboB/wIpAcsB/wIAAbQB/wIAAZ0B/wNTAacEAmQAAzIBTwESAboBXgH/ARIBugFeAf8BEgG6AV4B/wES
|
||||
AboBXgH/ARIBugFeAf8BEgG6AV4B/wESAboBXgH/ARIBugFeAf8BEgG6AV4B/wESAboBXgH/ARIBugFe
|
||||
Af8BEgG6AV4B/wE3AcUBgQH/AeoB+QHxAf8B9wH2AfUB/wHvAe0B6wH/Ae8B7QHrAf8B6AHrAeYB/wE9
|
||||
AbYBbAH/AQwBpgFJAf8DMwFSJAADQgF0ASAB0gH7Af8BJgG+AfkB/wFGAUcB7gH/AkYB7gH/ASsBrAH3
|
||||
Af8BIAHSAfsB/wFBAkIBcyQAAwkBCwJZAWcB5gIAAaEB/wEVARcBvwH/AUABVwHPAf8BaAGFAcoB/wH7
|
||||
AfwB/gX/AeEB5QH0Af8BRQFkAcEB/wFAAWoB1QH/AUMBawHaAf8BNgFSAb8B/wGpAbEB3Qn/ArcB4AH/
|
||||
AjcBuwH/AjIBygH/AgABqgH/AgABkgH/AzEBTWgABAIBWwJcAc0BEgG6AV4B/wESAboBXgH/ARIBugFe
|
||||
Af8BEgG6AV4B/wESAboBXgH/ARIBugFeAf8BEgG6AV4B/wESAboBXgH/ARIBugFeAf8BEgG6AV4B/wES
|
||||
AboBXgH/ARIBugFeAf8BNwHFAYEB/wHqAfkB8QH/AfcB9gH1Af8B7wHtAesB/wG4AdsBxQH/ARUBqQFP
|
||||
Af8BWwFfAVsB0AQCJAADBQEGAVwBYAFhAdkBIQHTAfwB/wEwAaMB9wH/ATQBlAH2Af8BIgHQAfwB/wFc
|
||||
AWABYQHZAwUBBiQABAEDQgF1AgABlAH/AgABrAH/AVIBVwHUAf8BVAFoAdIB/wGOAZwB2wH/AeMB5gH2
|
||||
Af8BXwF0AdAB/wFYAXIB2QH/AV0BgAHgAf8BXQFyAd8B/wFbAWsB2gH/AVEBWQHKAf8BtwG4AeUB/wLG
|
||||
AeoB/wJRAcYB/wJaAdQB/wIXAbwB/wIAAZwB/wJdAV8BzgMDAQRsAAMjATMBLwGRAWgB+QESAboBXgH/
|
||||
ARIBugFeAf8BEgG6AV4B/wESAboBXgH/ARIBugFeAf8BEgG6AV4B/wESAboBXgH/ARIBugFeAf8BEgG6
|
||||
AV4B/wESAboBXgH/ARIBugFeAf8BEgG6AV4B/wE3AcUBgQH/AeoB+QHxAf8BvgHkAc4B/wEVAakBTwH/
|
||||
ASYBiQFNAfoDJQE2LAADMAFMASIB0wH8Af8BIgHTAfwB/wEiAdMB/AH/ASIB0wH8Af8DMAFMLAADBwEJ
|
||||
AlsBXQHPAgABmwH/Ah4BuwH/AXMBgQHdAf8BcAGFAd0B/wFxAYYB3AH/AXIBiAHfAf8BdAGJAeIB/wF0
|
||||
AYcB4QH/AXQBhAHgAf8BdAGAAeAB/wJzAd4B/wJvAdgB/wJvAdgB/wJyAdwB/wJNAc4B/wIAAaMB/wIa
|
||||
AYIB+wMnATp0AAM6AWIBHgGjAWoB/gESAboBXgH/ARIBugFeAf8BEgG6AV4B/wESAboBXgH/ARIBugFe
|
||||
Af8BEgG6AV4B/wESAboBXgH/ARIBugFeAf8BEgG6AV4B/wESAboBXgH/ARIBugFeAf8BEgG6AV4B/wEy
|
||||
AcQBcwH/ARsBvQFkAf8BGwGYAV8B/gM7AWQ0AANYAbgBIwHUAf0B/wEjAdQB/QH/A1gBuDQAAxwBJwJT
|
||||
AWUB6gIAAZwB/wI6AcIB/wKVAeIB/wGVAZcB5AH/AZUBlwHlAf8BlQGWAeUB/wKVAeUB/wKVAeUB/wKV
|
||||
AeUB/wKVAeUB/wKVAeQB/wKVAeMB/wJpAdUB/wIAAaYB/wIAAZAB/wI/AUABbgQBeAADOgFiAS8BkQFo
|
||||
AfkBEgG6AV4B/wESAboBXgH/ARIBugFeAf8BEgG6AV4B/wESAboBXgH/ARIBugFeAf8BEgG6AV4B/wES
|
||||
AboBXgH/ARIBugFeAf8BEgG6AV4B/wESAboBXgH/ARIBugFeAf8BLwGRAWgB+QM6AWI4AAMeASoBLwGn
|
||||
AcUB+wExAaUBvAH6Ax0BKTQABAEDIQEvAloBYgHiAgABmAH/AisBuAH/ApkB4AH/AqwB6QH/AqwB6QH/
|
||||
AqwB6gH/AqwB6gH/AqwB6QH/AqwB6QH/AqkB5gH/AlUByQH/AgABoAH/Ag4BegH8A0ABcQQBgAADIwEz
|
||||
AVsCXAHNARIBugFeAf8BEgG6AV4B/wESAboBXgH/ARIBugFeAf8BEgG6AV4B/wESAboBXgH/ARIBugFe
|
||||
Af8BEgG6AV4B/wESAboBXgH/ARIBugFeAf8BWwJcAc0DIwEzQAADNgFZAzYBWUAAAxEBFgJSAVQBqAIC
|
||||
AYAB/gIAAZ0B/wI6AbsB/wJyAdIB/wKZAd4B/wKeAeAB/wKKAdgB/wJSAcUB/wIOAaYB/wIAAZMB/wJb
|
||||
AV4B2QMrAUEEAYgABAIDMgFPAVUCVgGwAUgBgAFgAfMBEgG6AV4B/wESAboBXgH/ARIBugFeAf8BEgG6
|
||||
AV4B/wFIAYABYAHzAVUCVgGwAzIBTwQCkAAEAQMkATQCUAFRAZwCUwFlAekCAAGZAf8CAAGcAf8CAAGd
|
||||
Af8CAAGbAf8CJAGGAfkCWAFZAbsDOAFcAwUBBpwAAwMBBAMbASYDKQE9AykBPQMbASYDAwEEqAAEAgMW
|
||||
AR4DJwE6AykBPgMeASsDBgEIhAABQgFNAT4HAAE+AwABKAMAAWADAAEYAwABAQEAAQEFAAEgAQEWAAP/
|
||||
AQAB/wGBBP8B/gEAAX8DAAH8AQABPwP/AfgBAAEfAwAB+AEAAR8BgAEAAQEB8AEAAQ8DAAHwAQABDwGA
|
||||
AQABAQHgAQABBwMAAeABAAEHAYABAAEBAcABAAEDAwABwAEAAQMBgAEAAQEBgAEAAQEDAAGAAQABAQHA
|
||||
AQABAwGAAQABAQMAAYABAAEBAeABAAEHBgABgAEAAQEB4AEAAQcJAAHwAQABDwkAAfABAAEPCQAB+AEA
|
||||
AR8JAAH4AQABPwkAAfwBAAE/CQAB/gEAAX8GAAGAAQABAQH+AQABfwYAAYABAAEBAf8BAAH/AYABAAEB
|
||||
AwABgAEAAQEB/wEAAf8BgAEAAQEDAAHAAQABAwH/AYEB/wHAAQABAwMAAeABAAEHAf8BwwH/AeABAAED
|
||||
AwAB8AEAAQ8B/wHDAf8B4AEAAQcDAAH4AQABHwH/AecB/wH4AQABDwMAAfwBAAE/A/8B/AEAAT8DAAH/
|
||||
AYEF/wGBAf8DAAs=
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
60
C4IT_DataHistoryProvider_Test/ctrlProtocolBox.Designer.cs
generated
Normal file
@@ -0,0 +1,60 @@
|
||||
|
||||
namespace C4IT_DataHistoryProvider_Test
|
||||
{
|
||||
partial class ctrlProtocolBox
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.richTextBox1 = new System.Windows.Forms.RichTextBox();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// richTextBox1
|
||||
//
|
||||
this.richTextBox1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.richTextBox1.Location = new System.Drawing.Point(0, 0);
|
||||
this.richTextBox1.Name = "richTextBox1";
|
||||
this.richTextBox1.ReadOnly = true;
|
||||
this.richTextBox1.Size = new System.Drawing.Size(150, 150);
|
||||
this.richTextBox1.TabIndex = 0;
|
||||
this.richTextBox1.Text = "";
|
||||
//
|
||||
// ctrlProtocolBox
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.richTextBox1);
|
||||
this.Name = "ctrlProtocolBox";
|
||||
this.Load += new System.EventHandler(this.ctrlProtocolBox_Load);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.RichTextBox richTextBox1;
|
||||
}
|
||||
}
|
||||
76
C4IT_DataHistoryProvider_Test/ctrlProtocolBox.cs
Normal file
@@ -0,0 +1,76 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using System.Threading;
|
||||
|
||||
using C4IT.DataHistoryProvider;
|
||||
|
||||
namespace C4IT_DataHistoryProvider_Test
|
||||
{
|
||||
public partial class ctrlProtocolBox : UserControl
|
||||
{
|
||||
public ctrlProtocolBox()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public void ProcessMessage(string Message)
|
||||
{
|
||||
Invoke(new ThreadStart(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
lock (richTextBox1)
|
||||
{
|
||||
if (richTextBox1.Lines.Length > 512)
|
||||
{
|
||||
richTextBox1.ReadOnly = false;
|
||||
richTextBox1.Select(0, richTextBox1.GetFirstCharIndexFromLine(richTextBox1.Lines.Length - 512));
|
||||
richTextBox1.SelectedText = "";
|
||||
richTextBox1.ReadOnly = true;
|
||||
}
|
||||
richTextBox1.AppendText(Message);
|
||||
richTextBox1.AppendText(Environment.NewLine);
|
||||
Application.DoEvents();
|
||||
}
|
||||
}
|
||||
catch { }
|
||||
}));
|
||||
}
|
||||
|
||||
public void ProcessMessage(cDataHistoryUiStatusMessage Message)
|
||||
{
|
||||
string line = new string(' ', Message.Indent * 3) + Message.Message;
|
||||
ProcessMessage(line);
|
||||
}
|
||||
|
||||
public void ClearMessages()
|
||||
{
|
||||
Invoke(new ThreadStart(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
lock (richTextBox1)
|
||||
{
|
||||
richTextBox1.Text = "";
|
||||
Application.DoEvents();
|
||||
}
|
||||
}
|
||||
catch { }
|
||||
}));
|
||||
}
|
||||
|
||||
private void ctrlProtocolBox_Load(object sender, EventArgs e)
|
||||
{
|
||||
richTextBox1.HideSelection = false;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
120
C4IT_DataHistoryProvider_Test/ctrlProtocolBox.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
236
C4IT_DataHistoryProvider_Test/ctrlTestFunctions.Designer.cs
generated
Normal file
@@ -0,0 +1,236 @@
|
||||
|
||||
namespace C4IT_DataHistoryProvider_Test
|
||||
{
|
||||
partial class ctrlTestFunctions
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.buttonGetUserComputerActivities = new System.Windows.Forms.Button();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.comboBoxUserSelect = new System.Windows.Forms.ComboBox();
|
||||
this.comboBoxComputerSelect = new System.Windows.Forms.ComboBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.buttonComputerUserActivities = new System.Windows.Forms.Button();
|
||||
this.comboBoxTable = new System.Windows.Forms.ComboBox();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.buttonGetRawValues = new System.Windows.Forms.Button();
|
||||
this.comboBoxTickets = new System.Windows.Forms.ComboBox();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.buttonClear = new System.Windows.Forms.Button();
|
||||
this.checkBoxFiltered = new System.Windows.Forms.CheckBox();
|
||||
this.ctrlProtocolBox1 = new C4IT_DataHistoryProvider_Test.ctrlProtocolBox();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// buttonGetUserComputerActivities
|
||||
//
|
||||
this.buttonGetUserComputerActivities.Location = new System.Drawing.Point(554, 17);
|
||||
this.buttonGetUserComputerActivities.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.buttonGetUserComputerActivities.Name = "buttonGetUserComputerActivities";
|
||||
this.buttonGetUserComputerActivities.Size = new System.Drawing.Size(164, 32);
|
||||
this.buttonGetUserComputerActivities.TabIndex = 1;
|
||||
this.buttonGetUserComputerActivities.Text = "get related objects";
|
||||
this.buttonGetUserComputerActivities.UseVisualStyleBackColor = true;
|
||||
this.buttonGetUserComputerActivities.Click += new System.EventHandler(this.buttonGetUserComputerActivities_Click);
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(34, 22);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(47, 20);
|
||||
this.label1.TabIndex = 3;
|
||||
this.label1.Text = "User:";
|
||||
//
|
||||
// comboBoxUserSelect
|
||||
//
|
||||
this.comboBoxUserSelect.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.comboBoxUserSelect.FormattingEnabled = true;
|
||||
this.comboBoxUserSelect.Location = new System.Drawing.Point(106, 20);
|
||||
this.comboBoxUserSelect.Name = "comboBoxUserSelect";
|
||||
this.comboBoxUserSelect.Size = new System.Drawing.Size(430, 28);
|
||||
this.comboBoxUserSelect.TabIndex = 4;
|
||||
this.comboBoxUserSelect.SelectedValueChanged += new System.EventHandler(this.comboBoxUserSelect_SelectedValueChanged);
|
||||
//
|
||||
// comboBoxComputerSelect
|
||||
//
|
||||
this.comboBoxComputerSelect.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.comboBoxComputerSelect.FormattingEnabled = true;
|
||||
this.comboBoxComputerSelect.Location = new System.Drawing.Point(106, 68);
|
||||
this.comboBoxComputerSelect.Name = "comboBoxComputerSelect";
|
||||
this.comboBoxComputerSelect.Size = new System.Drawing.Size(430, 28);
|
||||
this.comboBoxComputerSelect.TabIndex = 7;
|
||||
this.comboBoxComputerSelect.SelectedValueChanged += new System.EventHandler(this.comboBoxComputerSelect_SelectedValueChanged);
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(16, 71);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(83, 20);
|
||||
this.label2.TabIndex = 6;
|
||||
this.label2.Text = "Computer:";
|
||||
//
|
||||
// buttonComputerUserActivities
|
||||
//
|
||||
this.buttonComputerUserActivities.Location = new System.Drawing.Point(554, 65);
|
||||
this.buttonComputerUserActivities.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.buttonComputerUserActivities.Name = "buttonComputerUserActivities";
|
||||
this.buttonComputerUserActivities.Size = new System.Drawing.Size(164, 32);
|
||||
this.buttonComputerUserActivities.TabIndex = 5;
|
||||
this.buttonComputerUserActivities.Text = "get related users";
|
||||
this.buttonComputerUserActivities.UseVisualStyleBackColor = true;
|
||||
this.buttonComputerUserActivities.Click += new System.EventHandler(this.buttonComputerUserActivities_Click);
|
||||
//
|
||||
// comboBoxTable
|
||||
//
|
||||
this.comboBoxTable.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.comboBoxTable.Enabled = false;
|
||||
this.comboBoxTable.FormattingEnabled = true;
|
||||
this.comboBoxTable.Location = new System.Drawing.Point(104, 120);
|
||||
this.comboBoxTable.Name = "comboBoxTable";
|
||||
this.comboBoxTable.Size = new System.Drawing.Size(430, 28);
|
||||
this.comboBoxTable.TabIndex = 11;
|
||||
this.comboBoxTable.SelectedValueChanged += new System.EventHandler(this.comboBoxTable_SelectedValueChanged);
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Location = new System.Drawing.Point(44, 123);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(52, 20);
|
||||
this.label3.TabIndex = 10;
|
||||
this.label3.Text = "Table:";
|
||||
//
|
||||
// buttonGetRawValues
|
||||
//
|
||||
this.buttonGetRawValues.Enabled = false;
|
||||
this.buttonGetRawValues.Location = new System.Drawing.Point(554, 118);
|
||||
this.buttonGetRawValues.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.buttonGetRawValues.Name = "buttonGetRawValues";
|
||||
this.buttonGetRawValues.Size = new System.Drawing.Size(164, 32);
|
||||
this.buttonGetRawValues.TabIndex = 9;
|
||||
this.buttonGetRawValues.Text = "get raw values";
|
||||
this.buttonGetRawValues.UseVisualStyleBackColor = true;
|
||||
this.buttonGetRawValues.Click += new System.EventHandler(this.buttonGetRawValues_Click);
|
||||
//
|
||||
// comboBoxTickets
|
||||
//
|
||||
this.comboBoxTickets.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.comboBoxTickets.FormattingEnabled = true;
|
||||
this.comboBoxTickets.Location = new System.Drawing.Point(834, 17);
|
||||
this.comboBoxTickets.Name = "comboBoxTickets";
|
||||
this.comboBoxTickets.Size = new System.Drawing.Size(236, 28);
|
||||
this.comboBoxTickets.TabIndex = 13;
|
||||
this.comboBoxTickets.SelectedValueChanged += new System.EventHandler(this.comboBoxTickets_SelectedValueChanged);
|
||||
//
|
||||
// label4
|
||||
//
|
||||
this.label4.AutoSize = true;
|
||||
this.label4.Location = new System.Drawing.Point(760, 22);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(63, 20);
|
||||
this.label4.TabIndex = 12;
|
||||
this.label4.Text = "Tickets:";
|
||||
//
|
||||
// buttonClear
|
||||
//
|
||||
this.buttonClear.Location = new System.Drawing.Point(834, 115);
|
||||
this.buttonClear.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.buttonClear.Name = "buttonClear";
|
||||
this.buttonClear.Size = new System.Drawing.Size(112, 35);
|
||||
this.buttonClear.TabIndex = 14;
|
||||
this.buttonClear.Text = "Clear";
|
||||
this.buttonClear.UseVisualStyleBackColor = true;
|
||||
this.buttonClear.Click += new System.EventHandler(this.buttonClear_Click);
|
||||
//
|
||||
// checkBoxFiltered
|
||||
//
|
||||
this.checkBoxFiltered.AutoSize = true;
|
||||
this.checkBoxFiltered.Checked = true;
|
||||
this.checkBoxFiltered.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.checkBoxFiltered.Location = new System.Drawing.Point(840, 67);
|
||||
this.checkBoxFiltered.Name = "checkBoxFiltered";
|
||||
this.checkBoxFiltered.Size = new System.Drawing.Size(175, 24);
|
||||
this.checkBoxFiltered.TabIndex = 15;
|
||||
this.checkBoxFiltered.Text = "Only with current use";
|
||||
this.checkBoxFiltered.UseVisualStyleBackColor = true;
|
||||
this.checkBoxFiltered.CheckedChanged += new System.EventHandler(this.checkBoxFiltered_CheckedChanged);
|
||||
//
|
||||
// ctrlProtocolBox1
|
||||
//
|
||||
this.ctrlProtocolBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ctrlProtocolBox1.Location = new System.Drawing.Point(9, 169);
|
||||
this.ctrlProtocolBox1.Name = "ctrlProtocolBox1";
|
||||
this.ctrlProtocolBox1.Size = new System.Drawing.Size(1068, 79);
|
||||
this.ctrlProtocolBox1.TabIndex = 16;
|
||||
//
|
||||
// ctrlTestFunctions
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.checkBoxFiltered);
|
||||
this.Controls.Add(this.buttonClear);
|
||||
this.Controls.Add(this.comboBoxTickets);
|
||||
this.Controls.Add(this.label4);
|
||||
this.Controls.Add(this.comboBoxTable);
|
||||
this.Controls.Add(this.label3);
|
||||
this.Controls.Add(this.buttonGetRawValues);
|
||||
this.Controls.Add(this.comboBoxComputerSelect);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.buttonComputerUserActivities);
|
||||
this.Controls.Add(this.comboBoxUserSelect);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.buttonGetUserComputerActivities);
|
||||
this.Controls.Add(this.ctrlProtocolBox1);
|
||||
this.Name = "ctrlTestFunctions";
|
||||
this.Size = new System.Drawing.Size(1088, 268);
|
||||
this.Load += new System.EventHandler(this.ctrlTestFunctions_Load);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Button buttonGetUserComputerActivities;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.ComboBox comboBoxUserSelect;
|
||||
private System.Windows.Forms.ComboBox comboBoxComputerSelect;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.Button buttonComputerUserActivities;
|
||||
private System.Windows.Forms.ComboBox comboBoxTable;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.Button buttonGetRawValues;
|
||||
private System.Windows.Forms.ComboBox comboBoxTickets;
|
||||
private System.Windows.Forms.Label label4;
|
||||
private System.Windows.Forms.Button buttonClear;
|
||||
private System.Windows.Forms.CheckBox checkBoxFiltered;
|
||||
private ctrlProtocolBox ctrlProtocolBox1;
|
||||
}
|
||||
}
|
||||
471
C4IT_DataHistoryProvider_Test/ctrlTestFunctions.cs
Normal file
@@ -0,0 +1,471 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
using C4IT.Logging;
|
||||
using C4IT.XML;
|
||||
using C4IT.DataHistoryProvider;
|
||||
using C4IT.FASD.Base;
|
||||
|
||||
using static C4IT.Logging.cLogManager;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using static C4IT.DataHistoryProvider.cNxqlDailyCollector;
|
||||
|
||||
namespace C4IT_DataHistoryProvider_Test
|
||||
{
|
||||
public partial class ctrlTestFunctions : UserControl
|
||||
{
|
||||
private readonly List<string> MessageLines = new List<string>();
|
||||
|
||||
public ctrlTestFunctions()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private async void ctrlTestFunctions_Load(object sender, EventArgs e)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
|
||||
if (Program.Collector == null)
|
||||
return;
|
||||
|
||||
try
|
||||
{
|
||||
Cursor = Cursors.WaitCursor;
|
||||
|
||||
ctrlProtocolBox1.ClearMessages();
|
||||
|
||||
Program.mainForm.DisableAllTabPages(this);
|
||||
|
||||
Program.Collector.CleanupUiMessageHandler();
|
||||
Program.Collector.ProcessUiMessage += ProcessMessage;
|
||||
|
||||
var _requestInfo = new cF4sdWebRequestInfo("ctrlTestFunctions_Load", null);
|
||||
await GetUsersAndComputersAsync(_requestInfo, 1);
|
||||
|
||||
if (Program.Collector.M42WpmCollector != null)
|
||||
await Program.Collector.M42WpmCollector.ValidateConnectionAsync(true, CancellationToken.None);
|
||||
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
ctrlProtocolBox1.ProcessMessage("");
|
||||
Program.mainForm.EnableAllTabPages();
|
||||
Cursor = Cursors.Default;
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
}
|
||||
|
||||
private async Task GetUsersAndComputersAsync(cF4sdWebRequestInfo requestInfo, int LogDeep)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
if (cPerformanceLogger.IsActive && requestInfo != null) { if (CM == null) CM = MethodBase.GetCurrentMethod(); cPerformanceLogger.LogPerformanceStart(LogDeep, CM, requestInfo.id, requestInfo.created); }
|
||||
var _startTime = DateTime.UtcNow;
|
||||
|
||||
try
|
||||
{
|
||||
Program.UserList = await Program.Collector.GetInfoClassListTest(C4IT.FASD.Base.enumFasdInformationClass.User, checkBoxFiltered.Checked, requestInfo, LogDeep+1, CancellationToken.None);
|
||||
|
||||
comboBoxUserSelect.Items.AddRange(Program.UserList.ToArray());
|
||||
ctrlProtocolBox1.ProcessMessage("");
|
||||
|
||||
var list = await Program.Collector.GetInfoClassListTest(C4IT.FASD.Base.enumFasdInformationClass.Computer, checkBoxFiltered.Checked, requestInfo, LogDeep+1, CancellationToken.None); ; ;
|
||||
comboBoxComputerSelect.Items.AddRange(list.ToArray());
|
||||
ctrlProtocolBox1.ProcessMessage("");
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (cPerformanceLogger.IsActive && requestInfo != null) { cPerformanceLogger.LogPerformanceEnd(LogDeep, CM, requestInfo.id, requestInfo.created, _startTime); }
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void ProcessMessage(cDataHistoryUiStatusMessage Message)
|
||||
{
|
||||
string line = new string(' ', Message.Indent * 3) + Message.Message;
|
||||
ctrlProtocolBox1.ProcessMessage(line);
|
||||
}
|
||||
|
||||
private async void buttonGetUserComputerActivities_Click(object sender, EventArgs e)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
try
|
||||
{
|
||||
if (!(comboBoxUserSelect.SelectedItem is cDataHistoryInfoClassListEntry Entry))
|
||||
return;
|
||||
|
||||
var RetVal = await Program.Collector.GetUsageFromAgentData(C4IT.FASD.Base.enumFasdInformationClass.User, new List<Guid>() { Entry.id }, 90, CancellationToken.None, null, 0);
|
||||
ctrlProtocolBox1.ProcessMessage("");
|
||||
if (RetVal == null || RetVal.Count == 0)
|
||||
ctrlProtocolBox1.ProcessMessage("no further information found.");
|
||||
else
|
||||
{
|
||||
comboBoxTickets.Items.Clear();
|
||||
ctrlProtocolBox1.ProcessMessage($"{RetVal.Count} related objects found:");
|
||||
foreach (var Entry2 in RetVal)
|
||||
{
|
||||
if (Entry2.Type == enumF4sdSearchResultClass.Ticket)
|
||||
comboBoxTickets.Items.Add(Entry2);
|
||||
ctrlProtocolBox1.ProcessMessage($" {Entry2.Type} {Entry2.Name} {{{Entry2.id}}}:");
|
||||
ctrlProtocolBox1.ProcessMessage($" LastUsed: {Entry2.LastUsed}");
|
||||
ctrlProtocolBox1.ProcessMessage($" Usage weight: {Entry2.UsingLevel}");
|
||||
foreach (var Entry3 in Entry2.Infos)
|
||||
ctrlProtocolBox1.ProcessMessage($" {Entry3.Key}: {Entry3.Value}");
|
||||
}
|
||||
if (comboBoxTickets.Items.Count > 0)
|
||||
comboBoxTickets.SelectedIndex = 0;
|
||||
}
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
}
|
||||
|
||||
private async void buttonComputerUserActivities_Click(object sender, EventArgs e)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
try
|
||||
{
|
||||
if (!(comboBoxComputerSelect.SelectedItem is cDataHistoryInfoClassListEntry Entry))
|
||||
return;
|
||||
|
||||
var RetVal = await Program.Collector.GetUsageFromAgentData(C4IT.FASD.Base.enumFasdInformationClass.Computer, new List<Guid>() { Entry.id }, 90, CancellationToken.None, null, 0);
|
||||
ctrlProtocolBox1.ProcessMessage("");
|
||||
if (RetVal == null || RetVal.Count == 0)
|
||||
ctrlProtocolBox1.ProcessMessage("no users found.");
|
||||
else
|
||||
{
|
||||
ctrlProtocolBox1.ProcessMessage($"{RetVal.Count} related users found:");
|
||||
foreach (var Entry2 in RetVal)
|
||||
{
|
||||
ctrlProtocolBox1.ProcessMessage($" {Entry2.Type} {Entry2.Name} {{{Entry2.id}}}:");
|
||||
ctrlProtocolBox1.ProcessMessage($" LastUsed: {Entry2.LastUsed}");
|
||||
ctrlProtocolBox1.ProcessMessage($" Usage weight: {Entry2.UsingLevel}");
|
||||
foreach (var Entry3 in Entry2.Infos)
|
||||
ctrlProtocolBox1.ProcessMessage($" {Entry3.Key}: {Entry3.Value}");
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
}
|
||||
|
||||
private void comboBoxUserSelect_SelectedValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
comboBoxTickets.Items.Clear();
|
||||
comboBoxTickets.SelectedItem = null;
|
||||
|
||||
GetTables();
|
||||
}
|
||||
|
||||
private void comboBoxComputerSelect_SelectedValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
GetTables();
|
||||
}
|
||||
|
||||
private void comboBoxTickets_SelectedValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
GetTables();
|
||||
}
|
||||
|
||||
private void GetTables()
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
try
|
||||
{
|
||||
bool HasUser = comboBoxUserSelect.SelectedItem != null;
|
||||
bool HasComputer = comboBoxComputerSelect.SelectedItem != null;
|
||||
bool HasTicket = comboBoxTickets.SelectedItem != null;
|
||||
|
||||
var Tables = new List<cDataHistoryConfigTable>();
|
||||
foreach (var table in Program.Collector.ClusterConfig.Tables.Values)
|
||||
{
|
||||
if ((HasUser && table.ParentCluster.InformationClass == C4IT.FASD.Base.enumFasdInformationClass.User) ||
|
||||
(HasComputer && table.ParentCluster.InformationClass == C4IT.FASD.Base.enumFasdInformationClass.Computer) ||
|
||||
(HasTicket && table.ParentCluster.InformationClass == C4IT.FASD.Base.enumFasdInformationClass.Ticket))
|
||||
{
|
||||
Tables.Add(table);
|
||||
}
|
||||
}
|
||||
|
||||
comboBoxTable.Items.Clear();
|
||||
if (Tables.Count == 0)
|
||||
{
|
||||
comboBoxTable.Enabled = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
comboBoxTable.Items.AddRange(Tables.ToArray());
|
||||
comboBoxTable.Enabled = true;
|
||||
}
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
}
|
||||
|
||||
private void comboBoxTable_SelectedValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
buttonGetRawValues.Enabled = comboBoxTable.SelectedItem != null;
|
||||
}
|
||||
|
||||
private void ListSelectionRecords(cF4SDHealthCardRawData.cHealthCardTable _tableResult, int Offset)
|
||||
{
|
||||
var _cnt = _tableResult.Columns.First().Value.Values.Count;
|
||||
for (int i = 0; i < _cnt; i++)
|
||||
{
|
||||
{
|
||||
var strLine = $"";
|
||||
foreach (var _col in _tableResult.Columns.Values)
|
||||
{
|
||||
if (strLine != "")
|
||||
strLine += " | ";
|
||||
else
|
||||
strLine = $"{i + Offset} : ";
|
||||
strLine += _col.Values[i]?.ToString();
|
||||
}
|
||||
ctrlProtocolBox1.ProcessMessage($" " + strLine);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private async void buttonGetRawValues_Click(object sender, EventArgs e)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
try
|
||||
{
|
||||
Cursor = Cursors.WaitCursor;
|
||||
this.Enabled = false;
|
||||
Application.DoEvents();
|
||||
|
||||
var Identities = new List<cF4sdIdentityEntry>();
|
||||
if (comboBoxComputerSelect.SelectedItem is cDataHistoryInfoClassListEntry ComputerEntry)
|
||||
Identities.Add(new cF4sdIdentityEntry() { Class = enumFasdInformationClass.Computer, Id = ComputerEntry.id });
|
||||
if (comboBoxUserSelect.SelectedItem is cDataHistoryInfoClassListEntry UserEntry)
|
||||
Identities.Add(new cF4sdIdentityEntry() { Class = enumFasdInformationClass.User, Id = UserEntry.id, AccountType = enumAccountType.AD });
|
||||
if (comboBoxTickets.SelectedItem is cF4sdApiSearchResultRelation TicketEntry)
|
||||
Identities.Add(new cF4sdIdentityEntry() { Class = enumFasdInformationClass.Ticket, Id = TicketEntry.id });
|
||||
if (!(comboBoxTable.SelectedItem is cDataHistoryConfigTable Table))
|
||||
return;
|
||||
|
||||
if (Identities.Count == 0 || comboBoxTable.SelectedItem == null)
|
||||
return;
|
||||
|
||||
ctrlProtocolBox1.ProcessMessage("");
|
||||
|
||||
if (Table.Type == eDataHistoryTableType.Events || Table.Type == eDataHistoryTableType.StaticDetails)
|
||||
{
|
||||
var Res = await Program.Collector.GetDetailsTableResultsAsync(new List<string>() { Table.Name }, Identities, DateTime.Now.Date.ToUniversalTime(), 90, CancellationToken.None, null,0);
|
||||
|
||||
if (Res == null || Res.Count == 0)
|
||||
{
|
||||
ctrlProtocolBox1.ProcessMessage("could not get a valid raw table");
|
||||
return;
|
||||
}
|
||||
|
||||
foreach (var _Table in Res)
|
||||
{
|
||||
ctrlProtocolBox1.ProcessMessage("");
|
||||
ctrlProtocolBox1.ProcessMessage($"resulting table name: {_Table.Name}");
|
||||
ctrlProtocolBox1.ProcessMessage(" the table is an event details table");
|
||||
|
||||
ctrlProtocolBox1.ProcessMessage("");
|
||||
var strCols = "";
|
||||
foreach (var strCol in _Table.Columns)
|
||||
{
|
||||
if (strCols != "")
|
||||
strCols += " | ";
|
||||
strCols += strCol;
|
||||
}
|
||||
ctrlProtocolBox1.ProcessMessage(" Event columns: " + strCols);
|
||||
|
||||
foreach (var _day in _Table.Values)
|
||||
{
|
||||
ctrlProtocolBox1.ProcessMessage($" Day {_day.Key}:");
|
||||
foreach (var _event in _day.Value)
|
||||
{
|
||||
var strLine = "";
|
||||
foreach (var val in _event)
|
||||
{
|
||||
if (strLine != "")
|
||||
strLine += " | ";
|
||||
strLine += (val != null) ? val.ToString() : null;
|
||||
}
|
||||
ctrlProtocolBox1.ProcessMessage($" " + strLine);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (Table.Type == eDataHistoryTableType.Selection)
|
||||
{
|
||||
var _Count = await Program.Collector.GetSelectionTableResultCountAsync(Table.Name, Identities, null, null, CancellationToken.None);
|
||||
if (_Count > 0)
|
||||
{
|
||||
var _tableResult = await Program.Collector.GetSelectionTableResultAsync(Table.Name, Identities, "", 15, 0, null, CancellationToken.None);
|
||||
if (_tableResult != null)
|
||||
{
|
||||
ctrlProtocolBox1.ProcessMessage("");
|
||||
ctrlProtocolBox1.ProcessMessage($"resulting table name: {_tableResult.Name}");
|
||||
ctrlProtocolBox1.ProcessMessage($" the table is a selection table, {_Count} entries determined.");
|
||||
|
||||
ctrlProtocolBox1.ProcessMessage("");
|
||||
var strCols = "";
|
||||
foreach (var strCol in _tableResult.Columns.Keys)
|
||||
{
|
||||
if (strCols != "")
|
||||
strCols += " | ";
|
||||
strCols += strCol;
|
||||
}
|
||||
ctrlProtocolBox1.ProcessMessage(" Columns: " + strCols);
|
||||
|
||||
ListSelectionRecords(_tableResult, 0);
|
||||
|
||||
if (_Count > 15)
|
||||
{
|
||||
_tableResult = await Program.Collector.GetSelectionTableResultAsync(Table.Name, Identities, "", 15, 1, null, CancellationToken.None);
|
||||
ctrlProtocolBox1.ProcessMessage("");
|
||||
ListSelectionRecords(_tableResult, 15);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var Res = await Program.Collector.GetTableResults(new List<string>() { Table.Name }, Identities, DateTime.Now.Date.ToUniversalTime(), 14, true, CancellationToken.None, null,0);
|
||||
|
||||
if (Res == null || Res.Tables.Count == 0)
|
||||
{
|
||||
ctrlProtocolBox1.ProcessMessage("could not get a valid raw table");
|
||||
return;
|
||||
}
|
||||
|
||||
foreach (var _Table in Res.Tables.Values)
|
||||
{
|
||||
ctrlProtocolBox1.ProcessMessage("");
|
||||
ctrlProtocolBox1.ProcessMessage($"resulting table name: {_Table.Name}");
|
||||
switch (_Table.TableType)
|
||||
{
|
||||
case eDataHistoryTableType.Static:
|
||||
ctrlProtocolBox1.ProcessMessage(" the table is static");
|
||||
break;
|
||||
case eDataHistoryTableType.History:
|
||||
ctrlProtocolBox1.ProcessMessage(" the table is historical");
|
||||
break;
|
||||
case eDataHistoryTableType.HistoryEvents:
|
||||
ctrlProtocolBox1.ProcessMessage(" the table is a historical event table");
|
||||
break;
|
||||
}
|
||||
|
||||
ctrlProtocolBox1.ProcessMessage("");
|
||||
ctrlProtocolBox1.ProcessMessage("Values:");
|
||||
foreach (var Entry in _Table.Columns.Values)
|
||||
{
|
||||
ctrlProtocolBox1.ProcessMessage($" [{Entry.ColumnName}]: {getValueString(Entry.Values)}");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
Cursor = Cursors.Default;
|
||||
this.Enabled = true;
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private string getValueString(List<object> Values)
|
||||
{
|
||||
var RetVal = "";
|
||||
if (Values != null && Values.Count > 0)
|
||||
foreach (var Entry in Values)
|
||||
{
|
||||
if (RetVal != "")
|
||||
RetVal += " | ";
|
||||
var val = Entry?.ToString();
|
||||
if (val != null && val.Length > 200)
|
||||
val = val.Substring(0, 197) + "...";
|
||||
RetVal += (Entry == null) ? "-" : val;
|
||||
}
|
||||
|
||||
return RetVal;
|
||||
}
|
||||
|
||||
private void buttonClear_Click(object sender, EventArgs e)
|
||||
{
|
||||
MessageLines.Clear();
|
||||
ctrlProtocolBox1.ClearMessages();
|
||||
}
|
||||
|
||||
private async void checkBoxFiltered_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
try
|
||||
{
|
||||
Cursor = Cursors.WaitCursor;
|
||||
this.Enabled = false;
|
||||
Application.DoEvents();
|
||||
|
||||
var _requestInfo = new cF4sdWebRequestInfo("checkBoxFiltered_CheckedChanged", null);
|
||||
await GetUsersAndComputersAsync(_requestInfo, 1);
|
||||
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
Cursor = Cursors.Default;
|
||||
this.Enabled = true;
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
120
C4IT_DataHistoryProvider_Test/ctrlTestFunctions.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
304
C4IT_DataHistoryProvider_Test/frmMain2.Designer.cs
generated
Normal file
@@ -0,0 +1,304 @@
|
||||
|
||||
namespace C4IT_DataHistoryProvider_Test
|
||||
{
|
||||
partial class frmMain2
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmMain2));
|
||||
this.tabControlMain = new System.Windows.Forms.TabControl();
|
||||
this.tabPageMain = new System.Windows.Forms.TabPage();
|
||||
this.ctrlMainFunction1 = new C4IT_DataHistoryProvider_Test.ctrlMainFunction();
|
||||
this.tabPageAgent = new System.Windows.Forms.TabPage();
|
||||
this.ctrlClientAgent1 = new C4IT_DataHistoryProvider_Test.ctrlClientAgent();
|
||||
this.tabPageActiveDirectory = new System.Windows.Forms.TabPage();
|
||||
this.ctrlActiveDirectory1 = new C4IT_DataHistoryProvider_Test.ctrlActiveDirectory();
|
||||
this.tabPageM42WPM = new System.Windows.Forms.TabPage();
|
||||
this.ctrlM42Wpm1 = new C4IT_DataHistoryProvider_Test.ctrlM42Wpm();
|
||||
this.tabPageNexthink = new System.Windows.Forms.TabPage();
|
||||
this.ctrlNexthink1 = new C4IT_DataHistoryProvider_Test.ctrlNexthink();
|
||||
this.tabPageCleanup = new System.Windows.Forms.TabPage();
|
||||
this.ctrlCleanup1 = new C4IT_DataHistoryProvider_Test.ctrlCleanup();
|
||||
this.tabPageTest = new System.Windows.Forms.TabPage();
|
||||
this.ctrlTestFunctions1 = new C4IT_DataHistoryProvider_Test.ctrlTestFunctions();
|
||||
this.tabPageF4SDAnalytics = new System.Windows.Forms.TabPage();
|
||||
this.ctrlF4SDAnalytics = new C4IT_DataHistoryProvider_Test.ctrlF4SDAnalytics();
|
||||
this.tabPageCitrix = new System.Windows.Forms.TabPage();
|
||||
this.ctrlCitrix = new C4IT_DataHistoryProvider_Test.ctrlCitrix();
|
||||
this.tabControlMain.SuspendLayout();
|
||||
this.tabPageMain.SuspendLayout();
|
||||
this.tabPageAgent.SuspendLayout();
|
||||
this.tabPageActiveDirectory.SuspendLayout();
|
||||
this.tabPageM42WPM.SuspendLayout();
|
||||
this.tabPageNexthink.SuspendLayout();
|
||||
this.tabPageCleanup.SuspendLayout();
|
||||
this.tabPageTest.SuspendLayout();
|
||||
this.tabPageF4SDAnalytics.SuspendLayout();
|
||||
this.tabPageCitrix.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// tabControlMain
|
||||
//
|
||||
this.tabControlMain.Controls.Add(this.tabPageMain);
|
||||
this.tabControlMain.Controls.Add(this.tabPageAgent);
|
||||
this.tabControlMain.Controls.Add(this.tabPageActiveDirectory);
|
||||
this.tabControlMain.Controls.Add(this.tabPageM42WPM);
|
||||
this.tabControlMain.Controls.Add(this.tabPageNexthink);
|
||||
this.tabControlMain.Controls.Add(this.tabPageCleanup);
|
||||
this.tabControlMain.Controls.Add(this.tabPageTest);
|
||||
this.tabControlMain.Controls.Add(this.tabPageF4SDAnalytics);
|
||||
this.tabControlMain.Controls.Add(this.tabPageCitrix);
|
||||
this.tabControlMain.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tabControlMain.Location = new System.Drawing.Point(0, 0);
|
||||
this.tabControlMain.Name = "tabControlMain";
|
||||
this.tabControlMain.SelectedIndex = 0;
|
||||
this.tabControlMain.Size = new System.Drawing.Size(1487, 1055);
|
||||
this.tabControlMain.TabIndex = 0;
|
||||
//
|
||||
// tabPageMain
|
||||
//
|
||||
this.tabPageMain.Controls.Add(this.ctrlMainFunction1);
|
||||
this.tabPageMain.Location = new System.Drawing.Point(4, 25);
|
||||
this.tabPageMain.Name = "tabPageMain";
|
||||
this.tabPageMain.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabPageMain.Size = new System.Drawing.Size(1479, 1026);
|
||||
this.tabPageMain.TabIndex = 1;
|
||||
this.tabPageMain.Text = "Main";
|
||||
this.tabPageMain.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// ctrlMainFunction1
|
||||
//
|
||||
this.ctrlMainFunction1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.ctrlMainFunction1.Location = new System.Drawing.Point(3, 3);
|
||||
this.ctrlMainFunction1.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.ctrlMainFunction1.Name = "ctrlMainFunction1";
|
||||
this.ctrlMainFunction1.Size = new System.Drawing.Size(1473, 1020);
|
||||
this.ctrlMainFunction1.TabIndex = 0;
|
||||
//
|
||||
// tabPageAgent
|
||||
//
|
||||
this.tabPageAgent.Controls.Add(this.ctrlClientAgent1);
|
||||
this.tabPageAgent.Location = new System.Drawing.Point(4, 25);
|
||||
this.tabPageAgent.Name = "tabPageAgent";
|
||||
this.tabPageAgent.Size = new System.Drawing.Size(1479, 1026);
|
||||
this.tabPageAgent.TabIndex = 2;
|
||||
this.tabPageAgent.Text = "F4SD Agent";
|
||||
this.tabPageAgent.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// ctrlClientAgent1
|
||||
//
|
||||
this.ctrlClientAgent1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
|
||||
this.ctrlClientAgent1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.ctrlClientAgent1.Enabled = false;
|
||||
this.ctrlClientAgent1.Location = new System.Drawing.Point(0, 0);
|
||||
this.ctrlClientAgent1.Name = "ctrlClientAgent1";
|
||||
this.ctrlClientAgent1.Size = new System.Drawing.Size(1479, 1026);
|
||||
this.ctrlClientAgent1.TabIndex = 0;
|
||||
//
|
||||
// tabPageActiveDirectory
|
||||
//
|
||||
this.tabPageActiveDirectory.Controls.Add(this.ctrlActiveDirectory1);
|
||||
this.tabPageActiveDirectory.Location = new System.Drawing.Point(4, 25);
|
||||
this.tabPageActiveDirectory.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.tabPageActiveDirectory.Name = "tabPageActiveDirectory";
|
||||
this.tabPageActiveDirectory.Size = new System.Drawing.Size(1479, 1026);
|
||||
this.tabPageActiveDirectory.TabIndex = 5;
|
||||
this.tabPageActiveDirectory.Text = "Active Directory";
|
||||
this.tabPageActiveDirectory.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// ctrlActiveDirectory1
|
||||
//
|
||||
this.ctrlActiveDirectory1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.ctrlActiveDirectory1.Enabled = false;
|
||||
this.ctrlActiveDirectory1.Location = new System.Drawing.Point(0, 0);
|
||||
this.ctrlActiveDirectory1.Margin = new System.Windows.Forms.Padding(6, 8, 6, 8);
|
||||
this.ctrlActiveDirectory1.Name = "ctrlActiveDirectory1";
|
||||
this.ctrlActiveDirectory1.Size = new System.Drawing.Size(1479, 1026);
|
||||
this.ctrlActiveDirectory1.TabIndex = 0;
|
||||
//
|
||||
// tabPageM42WPM
|
||||
//
|
||||
this.tabPageM42WPM.Controls.Add(this.ctrlM42Wpm1);
|
||||
this.tabPageM42WPM.Location = new System.Drawing.Point(4, 25);
|
||||
this.tabPageM42WPM.Name = "tabPageM42WPM";
|
||||
this.tabPageM42WPM.Size = new System.Drawing.Size(1479, 1026);
|
||||
this.tabPageM42WPM.TabIndex = 7;
|
||||
this.tabPageM42WPM.Text = "Matrix WPM";
|
||||
this.tabPageM42WPM.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// ctrlM42Wpm1
|
||||
//
|
||||
this.ctrlM42Wpm1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.ctrlM42Wpm1.Location = new System.Drawing.Point(0, 0);
|
||||
this.ctrlM42Wpm1.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.ctrlM42Wpm1.Name = "ctrlM42Wpm1";
|
||||
this.ctrlM42Wpm1.Size = new System.Drawing.Size(1479, 1026);
|
||||
this.ctrlM42Wpm1.TabIndex = 0;
|
||||
//
|
||||
// tabPageNexthink
|
||||
//
|
||||
this.tabPageNexthink.Controls.Add(this.ctrlNexthink1);
|
||||
this.tabPageNexthink.Location = new System.Drawing.Point(4, 25);
|
||||
this.tabPageNexthink.Name = "tabPageNexthink";
|
||||
this.tabPageNexthink.Size = new System.Drawing.Size(1479, 1026);
|
||||
this.tabPageNexthink.TabIndex = 3;
|
||||
this.tabPageNexthink.Text = "Nexthink";
|
||||
this.tabPageNexthink.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// ctrlNexthink1
|
||||
//
|
||||
this.ctrlNexthink1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.ctrlNexthink1.Enabled = false;
|
||||
this.ctrlNexthink1.Location = new System.Drawing.Point(0, 0);
|
||||
this.ctrlNexthink1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.ctrlNexthink1.Name = "ctrlNexthink1";
|
||||
this.ctrlNexthink1.Size = new System.Drawing.Size(1479, 1026);
|
||||
this.ctrlNexthink1.TabIndex = 0;
|
||||
//
|
||||
// tabPageCleanup
|
||||
//
|
||||
this.tabPageCleanup.Controls.Add(this.ctrlCleanup1);
|
||||
this.tabPageCleanup.Location = new System.Drawing.Point(4, 25);
|
||||
this.tabPageCleanup.Name = "tabPageCleanup";
|
||||
this.tabPageCleanup.Size = new System.Drawing.Size(1479, 1026);
|
||||
this.tabPageCleanup.TabIndex = 4;
|
||||
this.tabPageCleanup.Text = "DB Cleanup";
|
||||
this.tabPageCleanup.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// ctrlCleanup1
|
||||
//
|
||||
this.ctrlCleanup1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.ctrlCleanup1.Enabled = false;
|
||||
this.ctrlCleanup1.Location = new System.Drawing.Point(0, 0);
|
||||
this.ctrlCleanup1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.ctrlCleanup1.Name = "ctrlCleanup1";
|
||||
this.ctrlCleanup1.Size = new System.Drawing.Size(1479, 1026);
|
||||
this.ctrlCleanup1.TabIndex = 0;
|
||||
//
|
||||
// tabPageTest
|
||||
//
|
||||
this.tabPageTest.Controls.Add(this.ctrlTestFunctions1);
|
||||
this.tabPageTest.Location = new System.Drawing.Point(4, 25);
|
||||
this.tabPageTest.Name = "tabPageTest";
|
||||
this.tabPageTest.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabPageTest.Size = new System.Drawing.Size(1479, 1026);
|
||||
this.tabPageTest.TabIndex = 7;
|
||||
this.tabPageTest.Text = "Tests";
|
||||
this.tabPageTest.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// ctrlTestFunctions1
|
||||
//
|
||||
this.ctrlTestFunctions1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.ctrlTestFunctions1.Enabled = false;
|
||||
this.ctrlTestFunctions1.Location = new System.Drawing.Point(3, 3);
|
||||
this.ctrlTestFunctions1.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.ctrlTestFunctions1.Name = "ctrlTestFunctions1";
|
||||
this.ctrlTestFunctions1.Size = new System.Drawing.Size(1473, 1020);
|
||||
this.ctrlTestFunctions1.TabIndex = 0;
|
||||
//
|
||||
// tabPageF4SDAnalytics
|
||||
//
|
||||
this.tabPageF4SDAnalytics.Controls.Add(this.ctrlF4SDAnalytics);
|
||||
this.tabPageF4SDAnalytics.Location = new System.Drawing.Point(4, 25);
|
||||
this.tabPageF4SDAnalytics.Name = "tabPageF4SDAnalytics";
|
||||
this.tabPageF4SDAnalytics.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabPageF4SDAnalytics.Size = new System.Drawing.Size(1479, 1026);
|
||||
this.tabPageF4SDAnalytics.TabIndex = 6;
|
||||
this.tabPageF4SDAnalytics.Text = "F4SDAnalytics";
|
||||
this.tabPageF4SDAnalytics.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// ctrlF4SDAnalytics
|
||||
//
|
||||
this.ctrlF4SDAnalytics.Location = new System.Drawing.Point(0, 0);
|
||||
this.ctrlF4SDAnalytics.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.ctrlF4SDAnalytics.Name = "ctrlF4SDAnalytics";
|
||||
this.ctrlF4SDAnalytics.Size = new System.Drawing.Size(1177, 645);
|
||||
this.ctrlF4SDAnalytics.TabIndex = 0;
|
||||
//
|
||||
// tabPageCitrix
|
||||
//
|
||||
this.tabPageCitrix.Controls.Add(this.ctrlCitrix);
|
||||
this.tabPageCitrix.Location = new System.Drawing.Point(4, 25);
|
||||
this.tabPageCitrix.Name = "tabPageCitrix";
|
||||
this.tabPageCitrix.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabPageCitrix.Size = new System.Drawing.Size(1479, 1026);
|
||||
this.tabPageCitrix.TabIndex = 8;
|
||||
this.tabPageCitrix.Text = "Citrix";
|
||||
this.tabPageCitrix.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// ctrlF4SDAnalytics
|
||||
//
|
||||
this.ctrlCitrix.Location = new System.Drawing.Point(0, 0);
|
||||
this.ctrlCitrix.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.ctrlCitrix.Name = "ctrlCitrix";
|
||||
this.ctrlCitrix.Size = new System.Drawing.Size(1177, 645);
|
||||
this.ctrlCitrix.TabIndex = 0;
|
||||
//
|
||||
// frmMain2
|
||||
//
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||
this.ClientSize = new System.Drawing.Size(1487, 1055);
|
||||
this.Controls.Add(this.tabControlMain);
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.Name = "frmMain2";
|
||||
this.Text = "F4SD collector";
|
||||
this.tabControlMain.ResumeLayout(false);
|
||||
this.tabPageMain.ResumeLayout(false);
|
||||
this.tabPageAgent.ResumeLayout(false);
|
||||
this.tabPageActiveDirectory.ResumeLayout(false);
|
||||
this.tabPageM42WPM.ResumeLayout(false);
|
||||
this.tabPageNexthink.ResumeLayout(false);
|
||||
this.tabPageCleanup.ResumeLayout(false);
|
||||
this.tabPageTest.ResumeLayout(false);
|
||||
this.tabPageF4SDAnalytics.ResumeLayout(false);
|
||||
this.tabPageCitrix.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
private ctrlMainFunction ctrlMainFunction1;
|
||||
public ctrlActiveDirectory ctrlActiveDirectory1;
|
||||
private ctrlClientAgent ctrlClientAgent1;
|
||||
public ctrlTestFunctions ctrlTestFunctions1;
|
||||
public ctrlF4SDAnalytics ctrlF4SDAnalytics;
|
||||
public ctrlCitrix ctrlCitrix;
|
||||
public System.Windows.Forms.TabPage tabPageMain;
|
||||
private ctrlNexthink ctrlNexthink1;
|
||||
public System.Windows.Forms.TabControl tabControlMain;
|
||||
public System.Windows.Forms.TabPage tabPageNexthink;
|
||||
private ctrlCleanup ctrlCleanup1;
|
||||
private ctrlM42Wpm ctrlM42Wpm1;
|
||||
public System.Windows.Forms.TabPage tabPageM42WPM;
|
||||
public System.Windows.Forms.TabPage tabPageAgent;
|
||||
public System.Windows.Forms.TabPage tabPageCleanup;
|
||||
public System.Windows.Forms.TabPage tabPageActiveDirectory;
|
||||
public System.Windows.Forms.TabPage tabPageTest;
|
||||
public System.Windows.Forms.TabPage tabPageF4SDAnalytics;
|
||||
public System.Windows.Forms.TabPage tabPageCitrix;
|
||||
}
|
||||
}
|
||||
69
C4IT_DataHistoryProvider_Test/frmMain2.cs
Normal file
@@ -0,0 +1,69 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace C4IT_DataHistoryProvider_Test
|
||||
{
|
||||
public partial class frmMain2 : Form
|
||||
{
|
||||
public readonly bool CollectMode = false;
|
||||
|
||||
public frmMain2(bool CollectMode)
|
||||
{
|
||||
this.CollectMode = CollectMode;
|
||||
InitializeComponent();
|
||||
tabControlMain.TabPages.Remove(tabPageNexthink);
|
||||
tabControlMain.TabPages.Remove(tabPageM42WPM);
|
||||
}
|
||||
|
||||
|
||||
public void DisableAllTabPages(UserControl self)
|
||||
{
|
||||
foreach (var Entry in this.tabControlMain.TabPages)
|
||||
{
|
||||
if (!(Entry is TabPage TP))
|
||||
continue;
|
||||
|
||||
foreach (var Entry2 in TP.Controls)
|
||||
{
|
||||
if (!(Entry2 is UserControl UC))
|
||||
continue;
|
||||
|
||||
if (UC != self)
|
||||
UC.Enabled = false;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void RemoveAllTabPages(TabPage self)
|
||||
{
|
||||
this.tabControlMain.TabPages.Clear();
|
||||
this.tabControlMain.TabPages.Add(self);
|
||||
}
|
||||
|
||||
|
||||
public void EnableAllTabPages()
|
||||
{
|
||||
foreach (var Entry in this.tabControlMain.TabPages)
|
||||
{
|
||||
if (!(Entry is TabPage TP))
|
||||
continue;
|
||||
|
||||
foreach (var Entry2 in TP.Controls)
|
||||
{
|
||||
if (!(Entry2 is UserControl UC))
|
||||
continue;
|
||||
UC.Enabled = true;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
1207
C4IT_DataHistoryProvider_Test/frmMain2.resx
Normal file
138
C4IT_DataHistoryProvider_Test/frmPasssword.Designer.cs
generated
Normal file
@@ -0,0 +1,138 @@
|
||||
namespace C4IT.Security
|
||||
{
|
||||
partial class frmPassword
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmPassword));
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.txtPassword = new System.Windows.Forms.TextBox();
|
||||
this.butCopy = new System.Windows.Forms.Button();
|
||||
this.butCancel = new System.Windows.Forms.Button();
|
||||
this.chkShow = new System.Windows.Forms.CheckBox();
|
||||
this.butClean = new System.Windows.Forms.Button();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(20, 20);
|
||||
this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(201, 20);
|
||||
this.label1.TabIndex = 0;
|
||||
this.label1.Text = "Please enter the password:";
|
||||
//
|
||||
// txtPassword
|
||||
//
|
||||
this.txtPassword.Location = new System.Drawing.Point(24, 54);
|
||||
this.txtPassword.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.txtPassword.Name = "txtPassword";
|
||||
this.txtPassword.Size = new System.Drawing.Size(553, 26);
|
||||
this.txtPassword.TabIndex = 1;
|
||||
this.txtPassword.UseSystemPasswordChar = true;
|
||||
//
|
||||
// butCopy
|
||||
//
|
||||
this.butCopy.Location = new System.Drawing.Point(52, 165);
|
||||
this.butCopy.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.butCopy.Name = "butCopy";
|
||||
this.butCopy.Size = new System.Drawing.Size(172, 37);
|
||||
this.butCopy.TabIndex = 2;
|
||||
this.butCopy.Text = "Copy to clipboard";
|
||||
this.butCopy.UseVisualStyleBackColor = true;
|
||||
this.butCopy.Click += new System.EventHandler(this.butCopy_Click);
|
||||
//
|
||||
// butCancel
|
||||
//
|
||||
this.butCancel.Location = new System.Drawing.Point(428, 165);
|
||||
this.butCancel.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.butCancel.Name = "butCancel";
|
||||
this.butCancel.Size = new System.Drawing.Size(112, 37);
|
||||
this.butCancel.TabIndex = 3;
|
||||
this.butCancel.Text = "Close";
|
||||
this.butCancel.UseVisualStyleBackColor = true;
|
||||
this.butCancel.Click += new System.EventHandler(this.butCancel_Click);
|
||||
//
|
||||
// chkShow
|
||||
//
|
||||
this.chkShow.AutoSize = true;
|
||||
this.chkShow.Location = new System.Drawing.Point(46, 100);
|
||||
this.chkShow.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.chkShow.Name = "chkShow";
|
||||
this.chkShow.Size = new System.Drawing.Size(147, 24);
|
||||
this.chkShow.TabIndex = 4;
|
||||
this.chkShow.Text = "Show password";
|
||||
this.chkShow.UseVisualStyleBackColor = true;
|
||||
this.chkShow.CheckStateChanged += new System.EventHandler(this.chkShow_CheckStateChanged);
|
||||
//
|
||||
// butClean
|
||||
//
|
||||
this.butClean.Location = new System.Drawing.Point(240, 165);
|
||||
this.butClean.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.butClean.Name = "butClean";
|
||||
this.butClean.Size = new System.Drawing.Size(172, 37);
|
||||
this.butClean.TabIndex = 5;
|
||||
this.butClean.Text = "Cleanup clipboard";
|
||||
this.butClean.UseVisualStyleBackColor = true;
|
||||
this.butClean.Click += new System.EventHandler(this.butClean_Click);
|
||||
//
|
||||
// frmPassword
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(597, 223);
|
||||
this.Controls.Add(this.butClean);
|
||||
this.Controls.Add(this.chkShow);
|
||||
this.Controls.Add(this.butCancel);
|
||||
this.Controls.Add(this.butCopy);
|
||||
this.Controls.Add(this.txtPassword);
|
||||
this.Controls.Add(this.label1);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "frmPassword";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "Secure Password ";
|
||||
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.frmPassword_FormClosed);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.TextBox txtPassword;
|
||||
private System.Windows.Forms.Button butCopy;
|
||||
private System.Windows.Forms.Button butCancel;
|
||||
private System.Windows.Forms.CheckBox chkShow;
|
||||
private System.Windows.Forms.Button butClean;
|
||||
}
|
||||
}
|
||||
51
C4IT_DataHistoryProvider_Test/frmPasssword.cs
Normal file
@@ -0,0 +1,51 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
using C4IT.Security;
|
||||
|
||||
namespace C4IT.Security
|
||||
{
|
||||
public partial class frmPassword : Form
|
||||
{
|
||||
public frmPassword()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void chkShow_CheckStateChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (chkShow.Checked)
|
||||
txtPassword.UseSystemPasswordChar = false;
|
||||
else
|
||||
txtPassword.UseSystemPasswordChar = true;
|
||||
}
|
||||
|
||||
private void butCancel_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void butCopy_Click(object sender, EventArgs e)
|
||||
{
|
||||
string PW = cSecurePassword.Instance.Encode(txtPassword.Text);
|
||||
Clipboard.SetText(PW);
|
||||
}
|
||||
|
||||
private void butClean_Click(object sender, EventArgs e)
|
||||
{
|
||||
Clipboard.Clear();
|
||||
}
|
||||
|
||||
private void frmPassword_FormClosed(object sender, FormClosedEventArgs e)
|
||||
{
|
||||
Clipboard.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
8142
C4IT_DataHistoryProvider_Test/frmPasssword.resx
Normal file
BIN
C4IT_DataHistoryProvider_Test/logo_FASD.ico
Normal file
|
After Width: | Height: | Size: 63 KiB |
10
CommonAssemblyAttributes.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
using System;
|
||||
|
||||
[AttributeUsage(AttributeTargets.Assembly)]
|
||||
public class AssemblyMinClientVersion : Attribute
|
||||
{
|
||||
public string minClientVersion;
|
||||
|
||||
public AssemblyMinClientVersion() : this(string.Empty) { }
|
||||
public AssemblyMinClientVersion(string txt) { minClientVersion = txt; }
|
||||
}
|
||||
22
CommonAssemblyInfo.cs
Normal file
@@ -0,0 +1,22 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
#if DEMOLICENSE
|
||||
[assembly: AssemblyProduct("C4IT First Aid Service Desk (F4SD), Demo licensed")]
|
||||
#else
|
||||
[assembly: AssemblyProduct("C4IT First Aid Service Desk (F4SD)")]
|
||||
#endif
|
||||
|
||||
[assembly: AssemblyCompany("Consulting4IT GmbH, Germany")]
|
||||
[assembly: AssemblyCopyright("Copyright <20> 2025, Consulting4IT GmbH, Germany")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
[assembly: AssemblyInformationalVersion("2.6.0.14")]
|
||||
[assembly: AssemblyVersion("2.6.*")]
|
||||
|
||||
[assembly: AssemblyMinClientVersion("2.4.0.0")]
|
||||
|
||||
6
F4SD-Cockpit-ConfigLoader/App.config
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
|
||||
</startup>
|
||||
</configuration>
|
||||
9
F4SD-Cockpit-ConfigLoader/App.xaml
Normal file
@@ -0,0 +1,9 @@
|
||||
<Application x:Class="F4SD_Cockpit_ConfigLoader.App"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="clr-namespace:F4SD_Cockpit_ConfigLoader"
|
||||
StartupUri="MainWindow.xaml" Startup="Application_Startup">
|
||||
<Application.Resources>
|
||||
|
||||
</Application.Resources>
|
||||
</Application>
|
||||
80
F4SD-Cockpit-ConfigLoader/App.xaml.cs
Normal file
@@ -0,0 +1,80 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Configuration;
|
||||
using System.Data;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
using C4IT.Logging;
|
||||
|
||||
using Microsoft.Win32;
|
||||
|
||||
using static C4IT.Logging.cLogManager;
|
||||
|
||||
|
||||
namespace F4SD_Cockpit_ConfigLoader
|
||||
{
|
||||
public partial class App : Application
|
||||
{
|
||||
public const string constRegPath = "SOFTWARE\\Consulting4IT GmbH\\First Aid Service Desk\\ConfigLoaderDemo";
|
||||
public const string constRegValuePath = "ConfigFilesPath";
|
||||
|
||||
public static string ConfigFilesFolder = null;
|
||||
|
||||
private void Application_Startup(object sender, StartupEventArgs e)
|
||||
{
|
||||
// intialize the file based logging
|
||||
cLogManagerFile.CreateInstance(false);
|
||||
DefaultLogger.LogAssemblyInfo();
|
||||
|
||||
LoadConfig();
|
||||
}
|
||||
|
||||
private void LoadConfig()
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
try
|
||||
{
|
||||
// load the last used folder for the config files
|
||||
var _regKey = Registry.CurrentUser.OpenSubKey(constRegPath);
|
||||
if (_regKey != null)
|
||||
{
|
||||
var _strFolder = _regKey.GetValue(constRegValuePath).ToString();
|
||||
if (Directory.Exists(_strFolder))
|
||||
ConfigFilesFolder = _strFolder;
|
||||
}
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
}
|
||||
|
||||
public static void SaveConfigPath(string _path)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
try
|
||||
{
|
||||
var _regKey = Registry.CurrentUser.CreateSubKey(constRegPath, true);
|
||||
if (_regKey != null)
|
||||
_regKey.SetValue(constRegValuePath, _path, RegistryValueKind.String);
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
F4SD-Cockpit-ConfigLoader/Circle_animaited.gif
Normal file
|
After Width: | Height: | Size: 229 KiB |
199
F4SD-Cockpit-ConfigLoader/F4SD-Cockpit-ConfigLoader.csproj
Normal file
@@ -0,0 +1,199 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{BC84E4DD-8D84-481F-9F1E-685AFC15D1E8}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<RootNamespace>F4SD_Cockpit_ConfigLoader</RootNamespace>
|
||||
<AssemblyName>F4SD-Cockpit-ConfigLoader</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||
<Deterministic>false</Deterministic>
|
||||
<SccProjectName>SAK</SccProjectName>
|
||||
<SccLocalPath>SAK</SccLocalPath>
|
||||
<SccAuxPath>SAK</SccAuxPath>
|
||||
<SccProvider>SAK</SccProvider>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ApplicationIcon>logo_FASD.ico</ApplicationIcon>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="MaterialIcons, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\MaterialIcons.1.0.3\lib\MaterialIcons.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Xaml">
|
||||
<RequiredTargetFramework>4.0</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="WindowsBase" />
|
||||
<Reference Include="PresentationCore" />
|
||||
<Reference Include="PresentationFramework" />
|
||||
<Reference Include="XamlAnimatedGif, Version=2.0.0.0, Culture=neutral, PublicKeyToken=20a987d8023d9690, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\XamlAnimatedGif.2.3.1\lib\net45\XamlAnimatedGif.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ApplicationDefinition Include="App.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</ApplicationDefinition>
|
||||
<Page Include="MainWindow.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Compile Include="..\..\C4IT FASD\_Common\C4IT.F4SD.GlobalConfig.cs">
|
||||
<Link>Common\C4IT.F4SD.GlobalConfig.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\C4IT FASD\_Common\C4IT.F4SD.HealthCardConfig.cs">
|
||||
<Link>Common\C4IT.F4SD.HealthCardConfig.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\C4IT FASD\_Common\C4IT.F4SD.MenuItem.cs">
|
||||
<Link>Common\C4IT.F4SD.MenuItem.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\C4IT FASD\_Common\C4IT.FASD.Base.cs">
|
||||
<Link>Common\C4IT.FASD.Base.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\C4IT FASD\_Common\C4IT.FASD.ConfigBase.cs">
|
||||
<Link>Common\C4IT.FASD.ConfigBase.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\C4IT FASD\_Common\C4IT.FASD.CopyTemplatesConfig.cs">
|
||||
<Link>Common\C4IT.FASD.CopyTemplatesConfig.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\C4IT FASD\_Common\C4IT.FASD.IconConfig.cs">
|
||||
<Link>Common\C4IT.FASD.IconConfig.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\C4IT FASD\_Common\C4IT.FASD.MenuSectionConfig.cs">
|
||||
<Link>Common\C4IT.FASD.MenuSectionConfig.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\C4IT FASD\_Common\C4IT.FASD.QuickActionConfig.cs">
|
||||
<Link>Common\C4IT.FASD.QuickActionConfig.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\Common Code\Configuration\C4IT.Configuration.ConfigHelper.cs">
|
||||
<Link>Common\C4IT.Configuration.ConfigHelper.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\Common Code\Logging\C4IT.Logging.LogManager.cs">
|
||||
<Link>Common\C4IT.Logging.LogManager.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\Common Code\MultiLanguage\C4IT.MultiLanguage.MultiLanguageSupport.cs">
|
||||
<Link>Common\C4IT.MultiLanguage.MultiLanguageSupport.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\Common Code\XML\C4IT.XML.ConfigParsing.cs">
|
||||
<Link>Common\C4IT.XML.ConfigParsing.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\CommonAssemblyAttributes.cs">
|
||||
<Link>Common\CommonAssemblyAttributes.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\CommonAssemblyInfo.cs">
|
||||
<Link>Properties\CommonAssemblyInfo.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\F4SD-Cockpit-ServerCore\DataHistoryConfigClusters.cs">
|
||||
<Link>Common\DataHistoryConfigClusters.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="App.xaml.cs">
|
||||
<DependentUpon>App.xaml</DependentUpon>
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="MainWindow.xaml.cs">
|
||||
<DependentUpon>MainWindow.xaml</DependentUpon>
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Properties\AssemblyInfo.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="..\C4IT_DataHistoryProvider_Test\Config\F4SD-CopyTemplate-Configuration.xsd">
|
||||
<Link>Config\F4SD-CopyTemplate-Configuration.xsd</Link>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="..\C4IT_DataHistoryProvider_Test\Config\F4SD-DataClusters-Configuration.xsd">
|
||||
<Link>Config\F4SD-DataClusters-Configuration.xsd</Link>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="..\C4IT_DataHistoryProvider_Test\Config\F4SD-HealthCard-Configuration.xsd">
|
||||
<Link>Config\F4SD-HealthCard-Configuration.xsd</Link>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="..\C4IT_DataHistoryProvider_Test\Config\F4SD-Icon-Configuration.xsd">
|
||||
<Link>Config\F4SD-Icon-Configuration.xsd</Link>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="..\C4IT_DataHistoryProvider_Test\Config\F4SD-Infrastructure-Configuration.xsd">
|
||||
<Link>Config\F4SD-Infrastructure-Configuration.xsd</Link>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="..\C4IT_DataHistoryProvider_Test\Config\F4SD-MenuSection-Configuration.xsd">
|
||||
<Link>Config\F4SD-MenuSection-Configuration.xsd</Link>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="..\C4IT_DataHistoryProvider_Test\Config\F4SD-QuickAction-Configuration.xsd">
|
||||
<Link>Config\F4SD-QuickAction-Configuration.xsd</Link>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<None Include="packages.config" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="App.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Resource Include="logo_FASD.ico" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Resource Include="Circle_animaited.gif" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
@@ -0,0 +1,10 @@
|
||||
""
|
||||
{
|
||||
"FILE_VERSION" = "9237"
|
||||
"ENLISTMENT_CHOICE" = "NEVER"
|
||||
"PROJECT_FILE_RELATIVE_PATH" = ""
|
||||
"NUMBER_OF_EXCLUDED_FILES" = "0"
|
||||
"ORIGINAL_PROJECT_FILE_PATH" = ""
|
||||
"NUMBER_OF_NESTED_PROJECTS" = "0"
|
||||
"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER"
|
||||
}
|
||||
89
F4SD-Cockpit-ConfigLoader/MainWindow.xaml
Normal file
@@ -0,0 +1,89 @@
|
||||
<Window x:Class="F4SD_Cockpit_ConfigLoader.MainWindow"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:gif="https://github.com/XamlAnimatedGif/XamlAnimatedGif"
|
||||
xmlns:local="clr-namespace:F4SD_Cockpit_ConfigLoader"
|
||||
mc:Ignorable="d"
|
||||
Title="F4SD Configuration Loader Demo" Height="800" Width="1024" Icon="/logo_FASD.ico" Loaded="Window_Loaded">
|
||||
<Window.Resources>
|
||||
<Style x:Key="FocusVisual">
|
||||
<Setter Property="Control.Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate>
|
||||
<Rectangle Margin="2" StrokeDashArray="1 2" Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" SnapsToDevicePixels="true" StrokeThickness="1"/>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
<SolidColorBrush x:Key="Button.Static.Background" Color="#FFDDDDDD"/>
|
||||
<SolidColorBrush x:Key="Button.Static.Border" Color="#FF707070"/>
|
||||
<SolidColorBrush x:Key="Button.MouseOver.Background" Color="#FFBEE6FD"/>
|
||||
<SolidColorBrush x:Key="Button.MouseOver.Border" Color="#FF3C7FB1"/>
|
||||
<SolidColorBrush x:Key="Button.Pressed.Background" Color="#FFC4E5F6"/>
|
||||
<SolidColorBrush x:Key="Button.Pressed.Border" Color="#FF2C628B"/>
|
||||
<SolidColorBrush x:Key="Button.Disabled.Background" Color="#FFF4F4F4"/>
|
||||
<SolidColorBrush x:Key="Button.Disabled.Border" Color="#FFADB2B5"/>
|
||||
<SolidColorBrush x:Key="Button.Disabled.Foreground" Color="#FF838383"/>
|
||||
<Style x:Key="ButtonStyle1" TargetType="{x:Type Button}">
|
||||
<Setter Property="FocusVisualStyle" Value="{StaticResource FocusVisual}"/>
|
||||
<Setter Property="Background" Value="{StaticResource Button.Static.Background}"/>
|
||||
<Setter Property="BorderBrush" Value="{StaticResource Button.Static.Border}"/>
|
||||
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
|
||||
<Setter Property="BorderThickness" Value="1"/>
|
||||
<Setter Property="HorizontalContentAlignment" Value="Center"/>
|
||||
<Setter Property="VerticalContentAlignment" Value="Center"/>
|
||||
<Setter Property="Padding" Value="1"/>
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="{x:Type Button}">
|
||||
<Border x:Name="border" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" SnapsToDevicePixels="true" CornerRadius="4">
|
||||
<ContentPresenter x:Name="contentPresenter" Focusable="False" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
|
||||
</Border>
|
||||
<ControlTemplate.Triggers>
|
||||
<Trigger Property="IsDefaulted" Value="true">
|
||||
<Setter Property="BorderBrush" TargetName="border" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
|
||||
</Trigger>
|
||||
<Trigger Property="IsMouseOver" Value="true">
|
||||
<Setter Property="Background" TargetName="border" Value="{StaticResource Button.MouseOver.Background}"/>
|
||||
<Setter Property="BorderBrush" TargetName="border" Value="{StaticResource Button.MouseOver.Border}"/>
|
||||
</Trigger>
|
||||
<Trigger Property="IsPressed" Value="true">
|
||||
<Setter Property="Background" TargetName="border" Value="{StaticResource Button.Pressed.Background}"/>
|
||||
<Setter Property="BorderBrush" TargetName="border" Value="{StaticResource Button.Pressed.Border}"/>
|
||||
</Trigger>
|
||||
<Trigger Property="IsEnabled" Value="false">
|
||||
<Setter Property="Background" TargetName="border" Value="{StaticResource Button.Disabled.Background}"/>
|
||||
<Setter Property="BorderBrush" TargetName="border" Value="{StaticResource Button.Disabled.Border}"/>
|
||||
<Setter Property="TextElement.Foreground" TargetName="contentPresenter" Value="{StaticResource Button.Disabled.Foreground}"/>
|
||||
</Trigger>
|
||||
</ControlTemplate.Triggers>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
</Window.Resources>
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid Grid.Row="0" Margin="10,10,10,10">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Grid.Column="0">Path to configuration files:</TextBlock>
|
||||
<TextBox x:Name="textBoxConfigPath" x:FieldModifier="private" Text="" Grid.Column="1" Margin="10,0,0,0"/>
|
||||
<Button x:Name="buttonSelectConfigPath" x:FieldModifier="private" Content="..." Grid.Column="2" Margin="10,0,0,0" Width="30" Style="{DynamicResource ButtonStyle1}" Click="buttonSelectConfigPath_Click" />
|
||||
</Grid>
|
||||
<Button x:Name="buttonLoadConfigFiles" x:FieldModifier="private" Content="Load configuration files" Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,10,10,10" Padding="8,1,8,1" Style="{DynamicResource ButtonStyle1}" Click="buttonLoadConfigFiles_Click"/>
|
||||
<RichTextBox x:Name="rtbProtocol" x:FieldModifier="private" Grid.Row="2" IsReadOnly="True" Margin="10,10,10,10" FontSize="13"/>
|
||||
<Border x:Name="WaitingImage" x:FieldModifier="private" Grid.Row="2" HorizontalAlignment="Center" VerticalAlignment="Center" CornerRadius="30" Width="100" Height="100" Background="#848282" >
|
||||
<Image gif:AnimationBehavior.SourceUri="Circle_animaited.gif" gif:AnimationBehavior.RepeatBehavior="Forever" Width="80" Height="80" Stretch="UniformToFill"/>
|
||||
</Border>
|
||||
</Grid>
|
||||
</Window>
|
||||
255
F4SD-Cockpit-ConfigLoader/MainWindow.xaml.cs
Normal file
@@ -0,0 +1,255 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Forms;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
using Microsoft.Win32;
|
||||
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Window;
|
||||
|
||||
using C4IT.Logging;
|
||||
using C4IT.XML;
|
||||
using C4IT.FASD.Base;
|
||||
using C4IT.DataHistoryProvider;
|
||||
|
||||
using static C4IT.Logging.cLogManager;
|
||||
|
||||
namespace F4SD_Cockpit_ConfigLoader
|
||||
{
|
||||
public partial class MainWindow : Window
|
||||
{
|
||||
public MainWindow()
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
try
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void Window_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
try
|
||||
{
|
||||
WaitingImage.Visibility = Visibility.Collapsed;
|
||||
textBoxConfigPath.Text = App.ConfigFilesFolder;
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
}
|
||||
|
||||
private void buttonSelectConfigPath_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
try
|
||||
{
|
||||
var openFileDlg = new System.Windows.Forms.OpenFileDialog();
|
||||
openFileDlg.FileName = textBoxConfigPath.Text;
|
||||
openFileDlg.ValidateNames = false;
|
||||
openFileDlg.CheckFileExists = false;
|
||||
openFileDlg.CheckPathExists = true;
|
||||
openFileDlg.FileName = "select a folder.";
|
||||
var result = openFileDlg.ShowDialog();
|
||||
if (result is System.Windows.Forms.DialogResult.OK)
|
||||
{
|
||||
var _path = openFileDlg.FileName;
|
||||
_path = System.IO.Path.GetDirectoryName(_path);
|
||||
if (System.IO.Directory.Exists(_path))
|
||||
textBoxConfigPath.Text = _path;
|
||||
}
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void buttonLoadConfigFiles_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(textBoxConfigPath.Text))
|
||||
return;
|
||||
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
try
|
||||
{
|
||||
rtbProtocol.Document.Blocks.Clear();
|
||||
|
||||
var _path = textBoxConfigPath.Text;
|
||||
if (System.IO.Directory.Exists(_path))
|
||||
{
|
||||
App.SaveConfigPath(_path);
|
||||
AddProtocolText($"Loading configuration files from folder '{_path}'...", Colors.Blue);
|
||||
|
||||
LoadConfiguration(_path);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
AddProtocolText($"The path '{_path}' could not be found!", Colors.Red);
|
||||
rtbProtocol.AppendText("");
|
||||
}
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
}
|
||||
|
||||
private void AddProtocolText(string _text, Color _color)
|
||||
{
|
||||
try
|
||||
{
|
||||
var paragraph = new Paragraph();
|
||||
var run = new Run(_text)
|
||||
{
|
||||
Foreground = new SolidColorBrush(_color)
|
||||
};
|
||||
paragraph.Inlines.Add(run);
|
||||
rtbProtocol.Document.Blocks.Add(paragraph);
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
}
|
||||
|
||||
private void AddProtocol(List<cXmlParserNodeMessage> _parsingMessages)
|
||||
{
|
||||
foreach (var _msg in _parsingMessages)
|
||||
{
|
||||
var _strMsg = cXmlParser.GetMessageString(_msg);
|
||||
var _col = Colors.Black;
|
||||
switch (_msg.Level)
|
||||
{
|
||||
case LogLevels.Info:
|
||||
_col = Colors.Black;
|
||||
break;
|
||||
case LogLevels.Warning:
|
||||
_col = Colors.DarkOrange;
|
||||
break;
|
||||
case LogLevels.Error:
|
||||
_col = Colors.Red;
|
||||
break;
|
||||
case LogLevels.Fatal:
|
||||
_col = Colors.Purple;
|
||||
break;
|
||||
case LogLevels.Debug:
|
||||
_col = Colors.DarkGray;
|
||||
break;
|
||||
}
|
||||
AddProtocolText(" " + _strMsg, _col);
|
||||
}
|
||||
}
|
||||
|
||||
private void AddProtocolResult(cFasdBaseConfig _config, List<cXmlParserNodeMessage> _parsingMessages, string FileName)
|
||||
{
|
||||
AddProtocol(_parsingMessages);
|
||||
if (_config?.IsValid is true)
|
||||
{
|
||||
if (_parsingMessages?.Count >= 1)
|
||||
AddProtocolText($" Configuration file '{cDataHistoryConfigClusters.constFileNameF4sdConfig}' is valid but has some annotations!", Colors.DarkOrange);
|
||||
else
|
||||
AddProtocolText($" Configuration file '{cDataHistoryConfigClusters.constFileNameF4sdConfig}' is valid.", Colors.DarkGreen);
|
||||
}
|
||||
else
|
||||
AddProtocolText($" Configuration file '{cDataHistoryConfigClusters.constFileNameF4sdConfig}' has non trivial errors and is invalid!", Colors.Red);
|
||||
|
||||
rtbProtocol.AppendText("");
|
||||
}
|
||||
|
||||
private async void LoadConfiguration(string configPath)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
var _currentCursor = Cursor;
|
||||
try
|
||||
{
|
||||
Cursor = System.Windows.Input.Cursors.Wait;
|
||||
WaitingImage.Visibility = Visibility.Visible;
|
||||
buttonLoadConfigFiles.IsEnabled = false;
|
||||
buttonSelectConfigPath.IsEnabled = false;
|
||||
|
||||
List<cXmlParserNodeMessage> _parsingMessages = null;
|
||||
|
||||
// load and validate the data clusters configuration file
|
||||
var _cfgClusters = new cDataHistoryConfigClusters();
|
||||
AddProtocolText($" Loading and parsing configuration file '{_cfgClusters._fileNameConfig}'", Colors.Black);
|
||||
|
||||
await Task.Run(() =>
|
||||
{
|
||||
_cfgClusters.LoadFromFile(out _parsingMessages, Folder: configPath);
|
||||
});
|
||||
AddProtocolResult(_cfgClusters, _parsingMessages, _cfgClusters._fileNameConfig);
|
||||
|
||||
// load and validate the client configuration files
|
||||
var _Configs = new Dictionary<enumFasdConfigurationType, cFasdBaseConfig>();
|
||||
var _lst = Enum.GetValues(typeof(enumFasdConfigurationType)).Cast<enumFasdConfigurationType>();
|
||||
foreach (var _entry in _lst)
|
||||
{
|
||||
if (_entry != enumFasdConfigurationType.unknown)
|
||||
{
|
||||
var _cfg = cFasdBaseConfig.CreateConfigByType(_entry);
|
||||
if (_cfg != null)
|
||||
{
|
||||
AddProtocolText($" Loading and parsing configuration file '{_cfg._fileNameConfig}'", Colors.Black);
|
||||
await Task.Run(() =>
|
||||
{
|
||||
_cfg.LoadFromFile(out _parsingMessages, Folder: configPath);
|
||||
});
|
||||
AddProtocolResult(_cfg, _parsingMessages, _cfg._fileNameConfig);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
WaitingImage.Visibility = Visibility.Collapsed;
|
||||
buttonLoadConfigFiles.IsEnabled = true;
|
||||
buttonSelectConfigPath.IsEnabled = true;
|
||||
Cursor = _currentCursor;
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
9
F4SD-Cockpit-ConfigLoader/Properties/AssemblyInfo.cs
Normal file
@@ -0,0 +1,9 @@
|
||||
using System.Reflection;
|
||||
using System.Resources;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Windows;
|
||||
|
||||
[assembly: AssemblyTitle("F4SD Cockpit ConfigLoader Demo")]
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
71
F4SD-Cockpit-ConfigLoader/Properties/Resources.Designer.cs
generated
Normal file
@@ -0,0 +1,71 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace F4SD_Cockpit_ConfigLoader.Properties
|
||||
{
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources
|
||||
{
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager
|
||||
{
|
||||
get
|
||||
{
|
||||
if ((resourceMan == null))
|
||||
{
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("F4SD_Cockpit_ConfigLoader.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture
|
||||
{
|
||||
get
|
||||
{
|
||||
return resourceCulture;
|
||||
}
|
||||
set
|
||||
{
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
117
F4SD-Cockpit-ConfigLoader/Properties/Resources.resx
Normal file
@@ -0,0 +1,117 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
30
F4SD-Cockpit-ConfigLoader/Properties/Settings.Designer.cs
generated
Normal file
@@ -0,0 +1,30 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace F4SD_Cockpit_ConfigLoader.Properties
|
||||
{
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
|
||||
{
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default
|
||||
{
|
||||
get
|
||||
{
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
7
F4SD-Cockpit-ConfigLoader/Properties/Settings.settings
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
||||
BIN
F4SD-Cockpit-ConfigLoader/logo_FASD.ico
Normal file
|
After Width: | Height: | Size: 63 KiB |
@@ -0,0 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace C4IT.Configuration
|
||||
{
|
||||
}
|
||||
BIN
F4SD-Cockpit-ServerCore/C4IT_2016.ico
Normal file
|
After Width: | Height: | Size: 470 KiB |
240
F4SD-Cockpit-ServerCore/Common/C4IT.FASD.Communication.Citrix.cs
Normal file
@@ -0,0 +1,240 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using C4IT.HTTP;
|
||||
using C4IT.MsGraph;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using C4IT.Logging;
|
||||
using static C4IT.Logging.cLogManager;
|
||||
using C4IT.DataHistoryProvider;
|
||||
|
||||
namespace C4IT.FASD.Communication.Citrix
|
||||
{
|
||||
public class cCitrixCommunication : cHttpApiBase
|
||||
{
|
||||
public const int constMaxPageSize = 1000;
|
||||
public const string constCitrixBaseUrl = "https://api.cloud.com/{Request}";
|
||||
public const string constCitrixUserList = "monitorodata/Users?$top={top}&$skip={skip}&$select=Id,Sid,Upn,Domain&$filter=Domain ne ''";
|
||||
public const string constCitrixUserSessions = "monitorodata/Sessions?$filter=UserId eq {UserId} and (EndDate eq null or StartDate ge {MinStartDate})&$expand=Machine($select=Id,DnsName,Name)&$select=SessionKey,StartDate,EndDate,ConnectionState";
|
||||
|
||||
public cCitrixCommunication() : base("Citrix ID tenant", "https://api.cloud.com/cctrustoauth2/{Tenant}/tokens/clients", "Citrix Comunication")
|
||||
{
|
||||
KnownAutoRetryErrors.Add(HttpStatusCode.Forbidden);
|
||||
autoRetryCount = 2;
|
||||
autoRetryDelay = 100;
|
||||
}
|
||||
|
||||
private protected override List<KeyValuePair<string, string>> GetRequestHeaders(cOAuthLogonInfo privLogonInfo)
|
||||
{
|
||||
|
||||
return new List<KeyValuePair<string, string>>()
|
||||
{
|
||||
new KeyValuePair<string, string>("Authorization", $"CwsAuth Bearer={AccessToken}"),
|
||||
new KeyValuePair<string, string>("Citrix-CustomerId", privLogonInfo.Tenant),
|
||||
new KeyValuePair<string, string>("Citrix-InstanceId", privLogonInfo.InstanceId)
|
||||
};
|
||||
}
|
||||
public async Task<cCitrixResultBase> RequestAsync(string Request, eHttpMethod httpMethod = eHttpMethod.get, object JsonData = null, bool retryForbidden = false, string nameProperty = null, bool noAutoRelogon = false)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
try
|
||||
{
|
||||
|
||||
var strUrl = constCitrixBaseUrl;
|
||||
strUrl = strUrl.Replace("{Request}", Request);
|
||||
|
||||
var data = await privRequestAsync(strUrl, httpMethod, JsonData, retryForbidden, noAutoRelogon: noAutoRelogon);
|
||||
if (data == null)
|
||||
return null;
|
||||
|
||||
if (data is bool isValid)
|
||||
{
|
||||
if (isValid)
|
||||
return new cCitrixResultBase(null);
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
var RetVal = new cCitrixResultBase(data, nameProperty);
|
||||
return RetVal;
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
cLogManager.LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public async Task<cCitrixResultList> RequestListAsync(string Request, bool loadPaged = false, bool retryForbidden = false)
|
||||
{
|
||||
try
|
||||
{
|
||||
// get the request url
|
||||
|
||||
var strUrl = constCitrixBaseUrl;
|
||||
strUrl = strUrl.Replace("{Request}", Request);
|
||||
|
||||
var res = await privRequestAsync(strUrl, autoRetry: retryForbidden);
|
||||
if (res != null)
|
||||
{
|
||||
var RetVal = new cCitrixResultList(retryForbidden);
|
||||
RetVal.AddResult(res);
|
||||
if (!RetVal.hasRemaining || loadPaged)
|
||||
return RetVal;
|
||||
while (RetVal.hasRemaining)
|
||||
{
|
||||
if (!await RequestNextAsync(RetVal))
|
||||
return RetVal;
|
||||
}
|
||||
return RetVal;
|
||||
}
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
cLogManager.DefaultLogger.LogException(E);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public async Task<bool> RequestNextAsync(cCitrixResultList List)
|
||||
{
|
||||
try
|
||||
{
|
||||
var res = await privRequestAsync(List.NextResultUrl, autoRetry: List.retryForbidden);
|
||||
if (res != null)
|
||||
{
|
||||
List.AddResult(res);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
cLogManager.DefaultLogger.LogException(E);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public class cCitrixResultList : List<cCitrixResultBase>
|
||||
{
|
||||
public string NextResultUrl { get; private set; } = null;
|
||||
public bool retryForbidden { get; private set; } = false;
|
||||
|
||||
public cCitrixResultList(bool retryForbidden)
|
||||
{
|
||||
this.retryForbidden = retryForbidden;
|
||||
}
|
||||
|
||||
public bool hasRemaining
|
||||
{
|
||||
get
|
||||
{
|
||||
return !string.IsNullOrEmpty(NextResultUrl);
|
||||
}
|
||||
}
|
||||
|
||||
public void AddResult(dynamic Result)
|
||||
{
|
||||
try
|
||||
{
|
||||
NextResultUrl = null;
|
||||
|
||||
if (Result.TryGetValue("@odata.nextLink", out JToken JT))
|
||||
{
|
||||
var JO = (JValue)JT;
|
||||
|
||||
NextResultUrl = Result["@odata.nextLink"];
|
||||
}
|
||||
|
||||
if (Result.TryGetValue("value", out JToken JT2))
|
||||
{
|
||||
foreach (dynamic Entry in Result.value)
|
||||
try
|
||||
{
|
||||
var val = new cCitrixResultBase(Entry);
|
||||
this.Add(val);
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
cLogManager.DefaultLogger.LogException(E);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
cLogManager.DefaultLogger.LogException(E);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public class cCitrixResultBase
|
||||
{
|
||||
public string ID { get; private set; } = null;
|
||||
public string ODataId { get; private set; } = null;
|
||||
public string DisplayName { get; private set; } = null;
|
||||
|
||||
public string Context { get; private set; } = null;
|
||||
|
||||
public dynamic Result { get; private set; } = null;
|
||||
|
||||
public cCitrixResultBase(dynamic Result, string namePropery = null)
|
||||
{
|
||||
this.Result = Result;
|
||||
|
||||
try { ID = Result.Id; } catch { }
|
||||
;
|
||||
try
|
||||
{
|
||||
if (namePropery == null)
|
||||
namePropery = "displayName";
|
||||
if (Result.TryGetValue(namePropery, out JToken JT1))
|
||||
{
|
||||
var _ty = JT1.GetType().ToString();
|
||||
if (JT1 is JValue _jVal)
|
||||
DisplayName = _jVal.Value?.ToString();
|
||||
}
|
||||
else if (Result.TryGetValue("name", out JToken JT2))
|
||||
DisplayName = Result.name;
|
||||
}
|
||||
catch { }
|
||||
try { Context = Result["@odata.context"]; } catch { }
|
||||
ODataId = GetStringFromDynamic(Result, "@odata.id");
|
||||
if (string.IsNullOrEmpty(ODataId))
|
||||
ODataId = @"https://api.cloud.com/" + ID;
|
||||
}
|
||||
|
||||
public cCitrixResultBase(cCitrixResultBase Result)
|
||||
{
|
||||
if (Result == null)
|
||||
return;
|
||||
|
||||
this.Result = Result.Result;
|
||||
ID = Result.ID;
|
||||
ODataId = Result.ODataId;
|
||||
DisplayName = Result.DisplayName;
|
||||
Context = Result.Context;
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static string GetStringFromDynamic(dynamic O, string ProperyName)
|
||||
{
|
||||
try
|
||||
{
|
||||
return (string)O[ProperyName];
|
||||
}
|
||||
catch { }
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
134
F4SD-Cockpit-ServerCore/ConfigCache.cs
Normal file
@@ -0,0 +1,134 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Web;
|
||||
|
||||
using C4IT.FASD.Base;
|
||||
using C4IT.Logging;
|
||||
using C4IT.XML;
|
||||
|
||||
using static C4IT.Logging.cLogManager;
|
||||
|
||||
namespace C4IT.DataHistoryProvider
|
||||
{
|
||||
public class cConfigCacheEntry
|
||||
{
|
||||
public string FullPath { get; set; } = null;
|
||||
public DateTime TimeStamp { get; set; }
|
||||
public string Content { get; set; }
|
||||
|
||||
public static cConfigCacheEntry GetCacheEntry(enumFasdConfigurationType configType)
|
||||
{
|
||||
var output = new cConfigCacheEntry();
|
||||
|
||||
if (output.IsValidConfig(configType) && !string.IsNullOrEmpty(output.FullPath))
|
||||
{
|
||||
output.TimeStamp = File.GetLastWriteTimeUtc(output.FullPath);
|
||||
output.Content = File.ReadAllText(output.FullPath);
|
||||
return output;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public bool CheckIfNewerExists()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (string.IsNullOrEmpty(FullPath))
|
||||
return false;
|
||||
|
||||
if (File.GetLastWriteTimeUtc(FullPath) > TimeStamp)
|
||||
return true;
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private bool IsValidConfig(enumFasdConfigurationType configType)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
|
||||
try
|
||||
{
|
||||
var RetVal = cFasdBaseConfig.GetConfigByType(configType);
|
||||
if (RetVal != null && RetVal.IsValid)
|
||||
{
|
||||
FullPath = RetVal.FilePath;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static class cConfigCache
|
||||
{
|
||||
private static Dictionary<enumFasdConfigurationType, cConfigCacheEntry> Cache = new Dictionary<enumFasdConfigurationType, cConfigCacheEntry>();
|
||||
|
||||
public static cConfigCacheEntry Get(enumFasdConfigurationType configType)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
try
|
||||
{
|
||||
if (Cache.TryGetValue(configType, out var result))
|
||||
{
|
||||
if (!result.CheckIfNewerExists())
|
||||
return result;
|
||||
}
|
||||
|
||||
result = cConfigCacheEntry.GetCacheEntry(configType);
|
||||
|
||||
if (result != null)
|
||||
Cache[configType] = result;
|
||||
|
||||
return result;
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static void Initialize()
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
try
|
||||
{
|
||||
var _lst = Enum.GetValues(typeof(enumFasdConfigurationType)).Cast<enumFasdConfigurationType>();
|
||||
foreach (var _item in _lst)
|
||||
{
|
||||
if (_item != enumFasdConfigurationType.unknown)
|
||||
Get(_item);
|
||||
}
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||