From b1c64c75b9610c7d18a6f623616139d944b8ab48 Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Thu, 15 Jun 2023 11:11:25 +0200 Subject: [PATCH] =?UTF-8?q?Projektdateien=20hinzuf=C3=BCgen.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BNSOnWeb.sln | 25 +++ BNSOnWeb/App.config | 22 ++ BNSOnWeb/BNSOnWeb.vbproj | 163 +++++++++++++++ BNSOnWeb/DigitalDataController.vb | 216 ++++++++++++++++++++ BNSOnWeb/Helpers.vb | 39 ++++ BNSOnWeb/My Project/Application.Designer.vb | 13 ++ BNSOnWeb/My Project/Application.myapp | 11 + BNSOnWeb/My Project/AssemblyInfo.vb | 35 ++++ BNSOnWeb/My Project/Resources.Designer.vb | 63 ++++++ BNSOnWeb/My Project/Resources.resx | 117 +++++++++++ BNSOnWeb/My Project/Settings.Designer.vb | 73 +++++++ BNSOnWeb/My Project/Settings.settings | 7 + BNSOnWeb/config.xml | 4 + 13 files changed, 788 insertions(+) create mode 100644 BNSOnWeb.sln create mode 100644 BNSOnWeb/App.config create mode 100644 BNSOnWeb/BNSOnWeb.vbproj create mode 100644 BNSOnWeb/DigitalDataController.vb create mode 100644 BNSOnWeb/Helpers.vb create mode 100644 BNSOnWeb/My Project/Application.Designer.vb create mode 100644 BNSOnWeb/My Project/Application.myapp create mode 100644 BNSOnWeb/My Project/AssemblyInfo.vb create mode 100644 BNSOnWeb/My Project/Resources.Designer.vb create mode 100644 BNSOnWeb/My Project/Resources.resx create mode 100644 BNSOnWeb/My Project/Settings.Designer.vb create mode 100644 BNSOnWeb/My Project/Settings.settings create mode 100644 BNSOnWeb/config.xml diff --git a/BNSOnWeb.sln b/BNSOnWeb.sln new file mode 100644 index 0000000..08505ea --- /dev/null +++ b/BNSOnWeb.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.33516.290 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "BNSOnWeb", "BNSOnWeb\BNSOnWeb.vbproj", "{189C7524-C87A-43A5-A2E5-DC3FADF6BA61}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {189C7524-C87A-43A5-A2E5-DC3FADF6BA61}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {189C7524-C87A-43A5-A2E5-DC3FADF6BA61}.Debug|Any CPU.Build.0 = Debug|Any CPU + {189C7524-C87A-43A5-A2E5-DC3FADF6BA61}.Release|Any CPU.ActiveCfg = Release|Any CPU + {189C7524-C87A-43A5-A2E5-DC3FADF6BA61}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {FF4776D9-4422-4288-A5E9-1FB6E312FF70} + EndGlobalSection +EndGlobal diff --git a/BNSOnWeb/App.config b/BNSOnWeb/App.config new file mode 100644 index 0000000..2845bf3 --- /dev/null +++ b/BNSOnWeb/App.config @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/BNSOnWeb/BNSOnWeb.vbproj b/BNSOnWeb/BNSOnWeb.vbproj new file mode 100644 index 0000000..0110f74 --- /dev/null +++ b/BNSOnWeb/BNSOnWeb.vbproj @@ -0,0 +1,163 @@ + + + + + Debug + AnyCPU + {189C7524-C87A-43A5-A2E5-DC3FADF6BA61} + Library + + + BNSOnWeb + BNSOnWeb + 512 + Windows + v4.6.2 + true + true + + + + AnyCPU + true + full + true + true + bin\Debug\ + BNSOnWeb.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + + + AnyCPU + pdbonly + false + true + true + bin\Release\ + BNSOnWeb.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + + + On + + + Binary + + + Off + + + On + + + + + + + + + + + + + + + + + + True + Application.myapp + True + + + True + True + Resources.resx + + + True + Settings.settings + True + + + + + VbMyResourcesResXFileCodeGenerator + Resources.Designer.vb + My.Resources + Designer + + + + + MyApplicationCodeGenerator + Application.Designer.vb + + + SettingsSingleFileGenerator + My + Settings.Designer.vb + + + + + + P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WINDREAMLib.dll + True + + + P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WMCNNCTDLLLib.dll + True + + + P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WMOBRWSLib.dll + True + + + P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WMOTOOLLib.dll + True + + + False + D:\ProgramFiles\windream\windream Web Service SDK\Libraries\3rdParty\Swashbuckle.Core.dll + + + + + + False + D:\ProgramFiles\windream\windream Web Service SDK\Libraries\3rdParty\System.Web.Http.dll + + + + False + D:\ProgramFiles\windream\windream Web Service SDK\Libraries\Windream\Windream.WebService.dll + + + False + D:\ProgramFiles\windream\windream Web Service SDK\Libraries\Windream\Windream.WebService.DTO.dll + + + False + D:\ProgramFiles\windream\windream Web Service SDK\Libraries\Windream\Windream.WebService.DTO.Impl.dll + + + False + D:\ProgramFiles\windream\windream Web Service SDK\Libraries\Windream\Windream.WebService.Impl.dll + + + False + D:\ProgramFiles\windream\windream Web Service SDK\Libraries\Windream\Windream.WebService.Logging.dll + + + False + D:\ProgramFiles\windream\windream Web Service SDK\Libraries\Windream\Windream.WebService.WebAPI.dll + + + + + PreserveNewest + + + + \ No newline at end of file diff --git a/BNSOnWeb/DigitalDataController.vb b/BNSOnWeb/DigitalDataController.vb new file mode 100644 index 0000000..fbb7d93 --- /dev/null +++ b/BNSOnWeb/DigitalDataController.vb @@ -0,0 +1,216 @@ +Imports System.Data +Imports System.Data.SqlClient +Imports System.Net +Imports System.Net.Http +Imports System.Net.Http.Headers +Imports System.Web.Http +Imports System.Xml +Imports Windream.WebService.Logging +Imports Windream.WebService.WebAPI.PlugIns +Imports WINDREAMLib +Imports WMCNNCTDLLLib +Imports WMOBRWSLib + +Public Class DigitalDataController + Inherits PlugInBaseController + + Private _session As IWMSession6 + Private ReadOnly _helper As Helpers + Private ReadOnly _logger As ILogging + Private ReadOnly _config As XmlDocument + + Public Overrides ReadOnly Property RoutesSettings As IEnumerable(Of RouteSettings) + Get + Return New List(Of RouteSettings) From { + New RouteSettings("DigitalDataController", "DigitalData/{action}/{id}", New With { + .id = RouteParameter.Optional, .controller = "DigitalData" + }) + } + End Get + End Property + + Public Sub New(pLogger As ILogging) + _logger = pLogger + _logger.Write("[INIT] Digital Data Controller wird geladen") + + _helper = New Helpers(_logger) + _config = _helper.GetConfig() + End Sub + + Private Function GetConnectionString() + Return _config?.DocumentElement.SelectSingleNode("/config/connectionString").InnerText + End Function + + ''' + ''' A simple example of a http-get service method implementation. + ''' + ''' windream Document-ID + ''' windream User-ID + ''' This method creates a nice greeting. + + Public Function BNSDownload( docId As Integer, userId As String) As HttpResponseMessage + Dim DT As New DataTable("DDRESULT") + Dim Domain, Username, Password As String + + _logger.Write($"[REQUEST] Anfrage von Benutzer-ID {userId} für Dokument-ID {docId}") + + Try + Using oConnection As New SqlConnection(GetConnectionString()) + Using oAdapter As New SqlDataAdapter($"SELECT DOMAIN, USERNAME, PW FROM TBDD_WEBSERVICE_USER_EX WHERE USERNAME_LINK = '{userId}'", oConnection) + oAdapter.Fill(DT) + End Using + End Using + + 'DT = _database.GetDatatable($"SELECT DOMAIN, USERNAME, PW FROM TBDD_WEBSERVICE_USER_EX WHERE USERNAME_LINK = '{userId}'") + Catch ex As Exception + _logger.Write("[DATABASE] Fehler beim Zugriff auf die Datenbank ") + _logger.WriteError(ex) + + Return CreateResponseMessage(Request, HttpStatusCode.InternalServerError) + End Try + + If DT.Rows.Count = 0 Then + _logger.Write($"[DATABASE] BenutzerID {userId} wurde nicht in der Datenbank gefunden.") + Return CreateResponseMessage(Request, $"Benutzer {userId} wurde nicht gefunden", HttpStatusCode.Unauthorized) + Else + Dim oRow As DataRow = DT.Rows.Item(0) + + Domain = oRow.Item("DOMAIN") + Username = oRow.Item("USERNAME") + Password = oRow.Item("PW") + + _logger.Write($"[DATABASE] BenutzerID {userId} wurde gefunden.") + End If + + Dim loggedIn As Boolean = CreateSessionForUser(Username, Password, Domain) + + If Not loggedIn Then + Return CreateResponseMessage(Request, $"Session für Benutzer {userId} konnte nicht aufgebaut werden. Weitere Informationen im Log", HttpStatusCode.BadRequest) + End If + Dim WMDoc As IWMObject7 + Dim WMStream As IWMStream + Dim fileContent As Byte() + + Try + WMDoc = _session.GetWMObjectById(WMEntity.WMEntityDocument, docId) + Catch ex As Exception + _logger.Write("[WINDREAM/GetWMObjectById] Ein Fehler beim Zugriff auf Windream ist aufgetreten ") + _logger.WriteError(ex) + _logger.Write($"[WINDREAM/Session] Session für Benutzer {Username} wird geschlossen") + _session.Logout() + + Return CreateResponseMessage(Request, "Document not found", HttpStatusCode.NotFound) + End Try + + Try + WMStream = WMDoc.OpenStream("BinaryObject", WMObjectStreamOpenMode.WMObjectStreamOpenModeRead) + fileContent = WMStream.Read(WMStream.GetSize()) + Catch ex As Exception + _logger.Write("[WINDREAM/OpenStream] Ein Fehler beim Zugriff auf Windream ist aufgetreten") + _logger.WriteError(ex) + _logger.Write($"[WINDREAM/Session] Session für Benutzer {Username} wird geschlossen") + _session.Logout() + + Return CreateResponseMessage(Request, HttpStatusCode.InternalServerError) + End Try + + _logger.Write($"[WINDREAM/Session] Session für Benutzer {Username} wird geschlossen") + _session.Logout() + + ' Gibt die Datei zum Download zurück + Return CreateFileResponseMessage(fileContent, WMDoc.aName) + End Function + + Private Function CreateFileResponseMessage(data As Byte(), filename As String) As HttpResponseMessage + _logger.Write($"[WINDREAM/Download] Datei {filename} wird für Download zur Verfügung gestellt") + Dim Res = New HttpResponseMessage With { + .StatusCode = HttpStatusCode.OK, + .Content = New ByteArrayContent(data) + } + Res.Content.Headers.ContentType = New MediaTypeHeaderValue("application/octet-stream") + Res.Content.Headers.ContentDisposition = New ContentDispositionHeaderValue("attachment") With { + .FileName = filename + } + Return Res + End Function + + Private Function CreateSessionForUser(username As String, password As String, domain As String) + Dim WMServerBrowser As New ServerBrowser() + Dim DMSServer As String + Dim Connect As IWMConnect2 + Dim Session As IWMSession6 + Dim User As WMOTOOLLib.WMUserIdentity + + Try + '' Get the current Windream Server + DMSServer = WMServerBrowser.GetCurrentServer() + Catch ex As Exception + _logger.Write($"[WINDREAM/ServerBrowser] DMS Server konnte nicht ausgelesen werden.") + _logger.WriteError(ex) + Return False + End Try + + Try + ' Create a User Object for Session + User = New WMOTOOLLib.WMUserIdentity With { + .aDomain = domain, + .aPassword = password, + .aUserName = username, + .aServerName = DMSServer + } + Catch ex As Exception + _logger.Write($"[WINDREAM/User] User Objekt konnte nicht erstellt werden.") + _logger.WriteError(ex) + Return False + End Try + + + _logger.Write("[WINDREAM/Session] Session wird aufgebaut") + _logger.Write($"[WINDREAM/Session] Username: {username}") + _logger.Write($"[WINDREAM/Session] Passwort: {password}") + _logger.Write($"[WINDREAM/Session] Domäne: {domain}") + _logger.Write($"[WINDREAM/Session] Windream Server: {DMSServer}") + + Try + ' Create Connect Object for Session + Connect = New WMConnect With { + .ModuleId = 9 + } + Catch ex As Exception + _logger.Write($"[WINDREAM/Connect] Connect Objekt konnte nicht erstellt werden.") + _logger.WriteError(ex) + Return False + End Try + + + Try + Session = Connect.Login(User) + _logger.Write($"[WINDREAM/Session] Session wurde aufgebaut") + + If Session.aLoggedin Then + _session = Session + + _logger.Write($"[WINDREAM/Session] Benutzer {username} ist eingeloggt") + Return True + Else + _logger.Write($"[WINDREAM/Session] Fehler beim Aufbau der Session. Benutzer {username} ist nicht eingeloggt!") + Return False + End If + Catch ex As Exception + _logger.Write($"[WINDREAM/Session] Fehler bei Login von Benutzer {username}!") + _logger.WriteError(ex) + + If Not IsNothing(Session) AndAlso Session.aLoggedin Then + _session = Session + _logger.Write($"[WINDREAM/Session] Benutzer {username} ist eingeloggt") + Return True + Else + _logger.Write($"[WINDREAM/Session] Fehler beim Aufbau der Session. Benutzer {username} ist nicht eingeloggt!") + _logger.WriteError(ex) + Return False + End If + End Try + End Function + + +End Class diff --git a/BNSOnWeb/Helpers.vb b/BNSOnWeb/Helpers.vb new file mode 100644 index 0000000..6b6fedf --- /dev/null +++ b/BNSOnWeb/Helpers.vb @@ -0,0 +1,39 @@ +Imports System.Reflection +Imports System.Xml +Imports Windream.WebService.Logging + +Public Class Helpers + Private _logger As ILogging + + Public Sub New(pLogger As ILogging) + _logger = pLogger + End Sub + + Private Function GetPluginPath() As String + Dim s = Assembly.GetExecutingAssembly().CodeBase + s = New Uri(s).AbsolutePath + s = Uri.UnescapeDataString(s) + s = IO.Path.GetFullPath(s) + s = IO.Path.GetDirectoryName(s) + + Return s + End Function + + Public Function GetConfig() As XmlDocument + Dim path As String = GetPluginPath() + Dim configFile = path & "\config.xml" + + _logger.Write($"[CONFIG] Lade Konfigurations Datei {configFile}", LogLevel.DEBUG) + + If IO.File.Exists(configFile) Then + Dim Doc As New XmlDocument() + Doc.Load(configFile) + + Return Doc + Else + _logger.Write($"[CONFIG] Konfigurations Datei {configFile} wurde NICHT gefunden!") + + Return Nothing + End If + End Function +End Class diff --git a/BNSOnWeb/My Project/Application.Designer.vb b/BNSOnWeb/My Project/Application.Designer.vb new file mode 100644 index 0000000..8ab460b --- /dev/null +++ b/BNSOnWeb/My Project/Application.Designer.vb @@ -0,0 +1,13 @@ +'------------------------------------------------------------------------------ +' +' Dieser Code wurde von einem Tool generiert. +' Laufzeitversion:4.0.30319.42000 +' +' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +' der Code erneut generiert wird. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + diff --git a/BNSOnWeb/My Project/Application.myapp b/BNSOnWeb/My Project/Application.myapp new file mode 100644 index 0000000..1243847 --- /dev/null +++ b/BNSOnWeb/My Project/Application.myapp @@ -0,0 +1,11 @@ + + + true + Form1 + false + 0 + true + 0 + 0 + true + diff --git a/BNSOnWeb/My Project/AssemblyInfo.vb b/BNSOnWeb/My Project/AssemblyInfo.vb new file mode 100644 index 0000000..43c69d6 --- /dev/null +++ b/BNSOnWeb/My Project/AssemblyInfo.vb @@ -0,0 +1,35 @@ +Imports System +Imports System.Reflection +Imports System.Runtime.InteropServices + +' Allgemeine Informationen über eine Assembly werden über die folgenden +' Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, +' die einer Assembly zugeordnet sind. + +' Werte der Assemblyattribute überprüfen + + + + + + + + + + +'Die folgende GUID wird für die typelib-ID verwendet, wenn dieses Projekt für COM verfügbar gemacht wird. + + +' Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: +' +' Hauptversion +' Nebenversion +' Buildnummer +' Revision +' +' Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden, +' indem Sie "*" wie unten gezeigt eingeben: +' + + + diff --git a/BNSOnWeb/My Project/Resources.Designer.vb b/BNSOnWeb/My Project/Resources.Designer.vb new file mode 100644 index 0000000..70e29fd --- /dev/null +++ b/BNSOnWeb/My Project/Resources.Designer.vb @@ -0,0 +1,63 @@ +'------------------------------------------------------------------------------ +' +' Dieser Code wurde von einem Tool generiert. +' Laufzeitversion:4.0.30319.42000 +' +' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +' der Code erneut generiert wird. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + +Imports System + +Namespace My.Resources + + 'Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert + '-Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert. + 'Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen + 'mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu. + ''' + ''' Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. + ''' + _ + Friend Module Resources + + Private resourceMan As Global.System.Resources.ResourceManager + + Private resourceCulture As Global.System.Globalization.CultureInfo + + ''' + ''' Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. + ''' + _ + Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager + Get + If Object.ReferenceEquals(resourceMan, Nothing) Then + Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("BNSOnWeb.Resources", GetType(Resources).Assembly) + resourceMan = temp + End If + Return resourceMan + End Get + End Property + + ''' + ''' Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle + ''' Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. + ''' + _ + Friend Property Culture() As Global.System.Globalization.CultureInfo + Get + Return resourceCulture + End Get + Set + resourceCulture = value + End Set + End Property + End Module +End Namespace diff --git a/BNSOnWeb/My Project/Resources.resx b/BNSOnWeb/My Project/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/BNSOnWeb/My Project/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/BNSOnWeb/My Project/Settings.Designer.vb b/BNSOnWeb/My Project/Settings.Designer.vb new file mode 100644 index 0000000..c8ecc32 --- /dev/null +++ b/BNSOnWeb/My Project/Settings.Designer.vb @@ -0,0 +1,73 @@ +'------------------------------------------------------------------------------ +' +' Dieser Code wurde von einem Tool generiert. +' Laufzeitversion:4.0.30319.42000 +' +' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +' der Code erneut generiert wird. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My + + _ + Partial Friend NotInheritable Class MySettings + Inherits Global.System.Configuration.ApplicationSettingsBase + + Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) + +#Region "Automatische My.Settings-Speicherfunktion" +#If _MyType = "WindowsForms" Then + Private Shared addedHandler As Boolean + + Private Shared addedHandlerLockObject As New Object + + _ + Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs) + If My.Application.SaveMySettingsOnExit Then + My.Settings.Save() + End If + End Sub +#End If +#End Region + + Public Shared ReadOnly Property [Default]() As MySettings + Get + +#If _MyType = "WindowsForms" Then + If Not addedHandler Then + SyncLock addedHandlerLockObject + If Not addedHandler Then + AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings + addedHandler = True + End If + End SyncLock + End If +#End If + Return defaultInstance + End Get + End Property + End Class +End Namespace + +Namespace My + + _ + Friend Module MySettingsProperty + + _ + Friend ReadOnly Property Settings() As Global.BNSOnWeb.My.MySettings + Get + Return Global.BNSOnWeb.My.MySettings.Default + End Get + End Property + End Module +End Namespace diff --git a/BNSOnWeb/My Project/Settings.settings b/BNSOnWeb/My Project/Settings.settings new file mode 100644 index 0000000..85b890b --- /dev/null +++ b/BNSOnWeb/My Project/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/BNSOnWeb/config.xml b/BNSOnWeb/config.xml new file mode 100644 index 0000000..1e07a63 --- /dev/null +++ b/BNSOnWeb/config.xml @@ -0,0 +1,4 @@ + + + Data Source=dub1sql202;Initial Catalog=DD_ECM;Persist Security Info=True;User ID=sa;Password=dd + \ No newline at end of file