23-11-23
This commit is contained in:
parent
200d6058cf
commit
ee664f5512
@ -50,6 +50,7 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="DigitalDataController.vb" />
|
||||
<Compile Include="IUselessModel.vb" />
|
||||
<Compile Include="My Project\AssemblyInfo.vb" />
|
||||
<Compile Include="My Project\Application.Designer.vb">
|
||||
<AutoGen>True</AutoGen>
|
||||
@ -67,6 +68,7 @@
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
<Compile Include="ServiceRegistrator.vb" />
|
||||
<Compile Include="UselessModel.vb" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="My Project\Resources.resx">
|
||||
@ -95,14 +97,6 @@
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="DigitalData.Modules.Database, Version=2.3.3.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\DDModules\Database\bin\Debug\DigitalData.Modules.Database.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Logging, Version=2.6.2.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\DDModules\Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Interop.WINDREAMLib">
|
||||
<HintPath>P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WINDREAMLib.dll</HintPath>
|
||||
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||
@ -119,10 +113,7 @@
|
||||
<HintPath>P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WMOTOOLLib.dll</HintPath>
|
||||
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Practices.Unity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=6d32ff45e0ccc69f, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>D:\ProgramFiles\windream\windream Web Service SDK\Libraries\3rdParty\Microsoft.Practices.Unity.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Practices.Unity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=6d32ff45e0ccc69f" />
|
||||
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\NLog.5.0.5\lib\net46\NLog.dll</HintPath>
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
Imports DigitalData.Modules.Database
|
||||
Imports DigitalData.Modules.Logging
|
||||
Imports System.Collections.Generic
|
||||
Imports System.Collections.Generic
|
||||
Imports System.Data
|
||||
Imports System.Data.SqlClient
|
||||
Imports System.Net
|
||||
Imports System.Net.Http
|
||||
Imports System.Net.Http.Headers
|
||||
@ -12,6 +11,7 @@ Imports System.Web.Http
|
||||
Imports System.Web.Http.Controllers
|
||||
Imports System.Xml
|
||||
Imports Windream.WebService.Documents
|
||||
Imports Windream.WebService.Logging
|
||||
Imports Windream.WebService.WebAPI.PlugIns
|
||||
Imports WINDREAMLib
|
||||
Imports WMCNNCTDLLLib
|
||||
@ -22,14 +22,9 @@ Namespace Controllers
|
||||
Public Class DigitalDataController
|
||||
Inherits PlugInBaseController
|
||||
|
||||
Private ReadOnly _routesSettings As IEnumerable(Of RouteSettings)
|
||||
Private ReadOnly _docController As IDocumentsController
|
||||
Private _session As IWMSession6
|
||||
|
||||
Private ReadOnly _logConfig As LogConfig
|
||||
Private ReadOnly _logger As Logger
|
||||
|
||||
Private ReadOnly _database As MSSQLServer
|
||||
Private _logger As ILogging
|
||||
|
||||
''' <summary>
|
||||
''' Gets the routes settings for the controller.
|
||||
@ -40,61 +35,21 @@ Namespace Controllers
|
||||
''' </value>
|
||||
Public Overrides ReadOnly Property RoutesSettings As IEnumerable(Of RouteSettings)
|
||||
Get
|
||||
Return _routesSettings
|
||||
End Get
|
||||
End Property
|
||||
|
||||
|
||||
Public Overrides Function ExecuteAsync(controllerContext As HttpControllerContext, cancellationToken As CancellationToken) As Task(Of HttpResponseMessage)
|
||||
Return MyBase.ExecuteAsync(controllerContext, cancellationToken)
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Initializes a new instance of the <see cref="DigitalDataController"/> class.
|
||||
''' </summary>
|
||||
Sub New()
|
||||
MyBase.New()
|
||||
|
||||
Dim routesSettings As New List(Of RouteSettings) From {
|
||||
Return New List(Of RouteSettings) From {
|
||||
New RouteSettings("DigitalDataController", "DigitalData/{action}/{id}", New With {
|
||||
.id = RouteParameter.Optional, .controller = "DigitalData"
|
||||
})
|
||||
}
|
||||
_routesSettings = routesSettings
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Dim oLogPath = GetLogPath()
|
||||
_logConfig = New LogConfig(LogPath:=LogConfig.PathType.CustomPath, oLogPath)
|
||||
_logger = _logConfig.GetLogger()
|
||||
''' <summary>
|
||||
''' Initializes a new instance of the <see cref="DigitalDataController"/> class.
|
||||
''' </summary>
|
||||
Sub New(pLogger As ILogging)
|
||||
_logger = pLogger
|
||||
|
||||
'Dim config = New LoggingConfiguration()
|
||||
|
||||
'Dim fileTarget = New FileTarget() With {
|
||||
' .Name = "BNSPlugin",
|
||||
' .ArchiveEvery = FileArchivePeriod.Day,
|
||||
' .FileName = "D:/ProgramFiles/DigitalData/SERVICES/WMWebServiceBNS/Log/${date:format=yyyy-MM-dd}-WMWebServiceBNS.txt",
|
||||
' .Layout = "${longdate} || ${message}"
|
||||
'}
|
||||
|
||||
'config.AddTarget("file", fileTarget)
|
||||
|
||||
'Dim rule = New LoggingRule("*", LogLevel.Debug, fileTarget)
|
||||
'config.LoggingRules.Add(rule)
|
||||
|
||||
'LogManager.Configuration = config
|
||||
'_logger = LogManager.GetLogger("DigitalDataController")
|
||||
|
||||
Dim oConnectionString = GetConnectionString()
|
||||
|
||||
_logger.Info($"[DATABASE] Verbindung zu {oConnectionString}")
|
||||
|
||||
_database = New MSSQLServer(_logConfig, oConnectionString)
|
||||
|
||||
If _database.DBInitialized = False Then
|
||||
_logger.Info("[DATABASE] Die Verbindung zur Datenbank konnte nicht hergestellt werden.")
|
||||
Else
|
||||
_logger.Info("[DATABASE] Die Verbindung zur Datenbank wurde hergestellt.")
|
||||
End If
|
||||
_logger.Info("[INIT] Die Initialisierung wurde abgeschlossen.")
|
||||
_logger.Write("[INIT] Die Initialisierung wurde abgeschlossen.")
|
||||
End Sub
|
||||
|
||||
Private Function GetPluginPath()
|
||||
@ -117,7 +72,7 @@ Namespace Controllers
|
||||
|
||||
Return Doc
|
||||
Else
|
||||
_logger.Info($"[CONFIG] Konfigurations Datei {configFile} wurde NICHT gefunden!")
|
||||
_logger.Write($"[CONFIG] Konfigurations Datei {configFile} wurde NICHT gefunden!")
|
||||
|
||||
Return Nothing
|
||||
End If
|
||||
@ -134,17 +89,6 @@ Namespace Controllers
|
||||
End If
|
||||
End Function
|
||||
|
||||
Private Function GetLogPath() As String
|
||||
Dim oConfig = GetConfig()
|
||||
|
||||
If oConfig IsNot Nothing Then
|
||||
Dim oLogPath As String = oConfig.DocumentElement.SelectSingleNode("/config/logPath").InnerText
|
||||
Return oLogPath
|
||||
Else
|
||||
Return Nothing
|
||||
End If
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' A simple example of a http-get service method implementation.
|
||||
''' </summary>
|
||||
@ -153,31 +97,37 @@ Namespace Controllers
|
||||
''' <remarks>This method creates a nice greeting.</remarks>
|
||||
<HttpGet>
|
||||
Public Function BNSDownload(<FromUri> docId As Integer, <FromUri> userId As String) As HttpResponseMessage
|
||||
Dim DT As DataTable
|
||||
Dim DT As New DataTable("DDRESULT")
|
||||
Dim Domain, Username, Password As String
|
||||
|
||||
_logger.Info($"[REQUEST] Anfrage von Benutzer-ID {userId} für Dokument-ID {docId}")
|
||||
_logger.Write($"[REQUEST] Anfrage von Benutzer-ID {userId} für Dokument-ID {docId}")
|
||||
|
||||
Try
|
||||
DT = _database.GetDatatable($"SELECT DOMAIN, USERNAME, PW FROM TBDD_WEBSERVICE_USER_EX WHERE USERNAME_LINK = '{userId}'")
|
||||
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.Info("[DATABASE] Fehler beim Zugriff auf die Datenbank ")
|
||||
_logger.Info(ex.Message)
|
||||
_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.Info($"[DATABASE] BenutzerID {userId} wurde nicht in der Datenbank gefunden.")
|
||||
_logger.Write($"[DATABASE] BenutzerID {userId} wurde nicht in der Datenbank gefunden.")
|
||||
Return CreateResponseMessage(Request, $"Benutzer {userId} wurde nicht gefunden", HttpStatusCode.Unauthorized)
|
||||
Else
|
||||
Dim firstRow As DataRow = DT.Rows.Item(0)
|
||||
Dim oRow As DataRow = DT.Rows.Item(0)
|
||||
|
||||
Domain = firstRow.Item("DOMAIN")
|
||||
Username = firstRow.Item("USERNAME")
|
||||
Password = firstRow.Item("PW")
|
||||
Domain = oRow.Item("DOMAIN")
|
||||
Username = oRow.Item("USERNAME")
|
||||
Password = oRow.Item("PW")
|
||||
|
||||
_logger.Info($"[DATABASE] BenutzerID {userId} wurde gefunden.")
|
||||
_logger.Write($"[DATABASE] BenutzerID {userId} wurde gefunden.")
|
||||
End If
|
||||
|
||||
Dim loggedIn As Boolean = CreateSessionForUser(Username, Password, Domain)
|
||||
@ -194,9 +144,9 @@ Namespace Controllers
|
||||
Try
|
||||
WMDoc = _session.GetWMObjectById(WMEntity.WMEntityDocument, docId)
|
||||
Catch ex As Exception
|
||||
_logger.Info("[WINDREAM/GetWMObjectById] Ein Fehler beim Zugriff auf Windream ist aufgetreten ")
|
||||
_logger.Info(ex.Message)
|
||||
_logger.Info($"[WINDREAM/Session] Session für Benutzer {Username} wird geschlossen")
|
||||
_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)
|
||||
@ -206,15 +156,15 @@ Namespace Controllers
|
||||
WMStream = WMDoc.OpenStream("BinaryObject", WMObjectStreamOpenMode.WMObjectStreamOpenModeRead)
|
||||
fileContent = WMStream.Read(WMStream.GetSize())
|
||||
Catch ex As Exception
|
||||
_logger.Info("[WINDREAM/OpenStream] Ein Fehler beim Zugriff auf Windream ist aufgetreten")
|
||||
_logger.Info(ex.Message)
|
||||
_logger.Info($"[WINDREAM/Session] Session für Benutzer {Username} wird geschlossen")
|
||||
_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.Info($"[WINDREAM/Session] Session für Benutzer {Username} wird geschlossen")
|
||||
_logger.Write($"[WINDREAM/Session] Session für Benutzer {Username} wird geschlossen")
|
||||
_session.Logout()
|
||||
|
||||
' Gibt die Datei zum Download zurück
|
||||
@ -222,10 +172,11 @@ Namespace Controllers
|
||||
End Function
|
||||
|
||||
Private Function CreateFileResponseMessage(data As Byte(), filename As String) As HttpResponseMessage
|
||||
_logger.Info($"[WINDREAM/Download] Datei {filename} wird für Download zur Verfügung gestellt")
|
||||
Dim Res = New HttpResponseMessage()
|
||||
Res.StatusCode = HttpStatusCode.OK
|
||||
Res.Content = New ByteArrayContent(data)
|
||||
_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
|
||||
@ -244,66 +195,68 @@ Namespace Controllers
|
||||
'' Get the current Windream Server
|
||||
DMSServer = WMServerBrowser.GetCurrentServer()
|
||||
Catch ex As Exception
|
||||
_logger.Info($"[WINDREAM/ServerBrowser] DMS Server konnte nicht ausgelesen werden.")
|
||||
_logger.Info(ex.Message)
|
||||
_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()
|
||||
User.aDomain = domain
|
||||
User.aPassword = password
|
||||
User.aUserName = username
|
||||
User.aServerName = DMSServer
|
||||
User = New WMOTOOLLib.WMUserIdentity With {
|
||||
.aDomain = domain,
|
||||
.aPassword = password,
|
||||
.aUserName = username,
|
||||
.aServerName = DMSServer
|
||||
}
|
||||
Catch ex As Exception
|
||||
_logger.Info($"[WINDREAM/User] User Objekt konnte nicht erstellt werden.")
|
||||
_logger.Info(ex.Message)
|
||||
_logger.Write($"[WINDREAM/User] User Objekt konnte nicht erstellt werden.")
|
||||
_logger.WriteError(ex)
|
||||
Return False
|
||||
End Try
|
||||
|
||||
|
||||
_logger.Info("[WINDREAM/Session] Session wird aufgebaut")
|
||||
_logger.Info($"[WINDREAM/Session] Username: {username}")
|
||||
_logger.Info($"[WINDREAM/Session] Passwort: {password}")
|
||||
_logger.Info($"[WINDREAM/Session] Domäne: {domain}")
|
||||
_logger.Info($"[WINDREAM/Session] Windream Server: {DMSServer}")
|
||||
_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()
|
||||
Connect.ModuleId = 9
|
||||
Connect = New WMConnect With {
|
||||
.ModuleId = 9
|
||||
}
|
||||
Catch ex As Exception
|
||||
_logger.Info($"[WINDREAM/Connect] Connect Objekt konnte nicht erstellt werden.")
|
||||
_logger.Info(ex.Message)
|
||||
_logger.Write($"[WINDREAM/Connect] Connect Objekt konnte nicht erstellt werden.")
|
||||
_logger.WriteError(ex)
|
||||
Return False
|
||||
End Try
|
||||
|
||||
|
||||
Try
|
||||
Session = Connect.Login(User)
|
||||
_logger.Info($"[WINDREAM/Session] Session wurde aufgebaut")
|
||||
_logger.Write($"[WINDREAM/Session] Session wurde aufgebaut")
|
||||
|
||||
If Session.aLoggedin Then
|
||||
_session = Session
|
||||
|
||||
_logger.Info($"[WINDREAM/Session] Benutzer {username} ist eingeloggt")
|
||||
_logger.Write($"[WINDREAM/Session] Benutzer {username} ist eingeloggt")
|
||||
Return True
|
||||
Else
|
||||
_logger.Info($"[WINDREAM/Session] Fehler beim Aufbau der Session. Benutzer {username} ist nicht eingeloggt!")
|
||||
_logger.Write($"[WINDREAM/Session] Fehler beim Aufbau der Session. Benutzer {username} ist nicht eingeloggt!")
|
||||
Return False
|
||||
End If
|
||||
Catch ex As Exception
|
||||
_logger.Info($"[WINDREAM/Session] Fehler bei Login von Benutzer {username}!")
|
||||
_logger.Info(ex.Message)
|
||||
_logger.Write($"[WINDREAM/Session] Fehler bei Login von Benutzer {username}!")
|
||||
_logger.WriteError(ex)
|
||||
|
||||
If Not IsNothing(Session) AndAlso Session.aLoggedin Then
|
||||
_session = Session
|
||||
_logger.Info($"[WINDREAM/Session] Benutzer {username} ist eingeloggt")
|
||||
_logger.Write($"[WINDREAM/Session] Benutzer {username} ist eingeloggt")
|
||||
Return True
|
||||
Else
|
||||
_logger.Info($"[WINDREAM/Session] Fehler beim Aufbau der Session. Benutzer {username} ist nicht eingeloggt!")
|
||||
_logger.Info(ex.Message)
|
||||
_logger.Write($"[WINDREAM/Session] Fehler beim Aufbau der Session. Benutzer {username} ist nicht eingeloggt!")
|
||||
_logger.WriteError(ex)
|
||||
Return False
|
||||
End If
|
||||
End Try
|
||||
|
||||
3
DigitalDataBNSPlugin/IUselessModel.vb
Normal file
3
DigitalDataBNSPlugin/IUselessModel.vb
Normal file
@ -0,0 +1,3 @@
|
||||
Friend Interface IUselessModel
|
||||
Property Message As String
|
||||
End Interface
|
||||
@ -1,10 +1,10 @@
|
||||
Imports Microsoft.Practices.Unity
|
||||
Imports Microsoft.practices.unity
|
||||
Imports Windream.WebService.PlugIns
|
||||
|
||||
Public Class ServiceRegistrator
|
||||
Implements IServiceRegistrator
|
||||
|
||||
Public Sub RegisterServices(container As IUnityContainer) Implements IServiceRegistrator.RegisterServices
|
||||
' container.RegisterType(Of TInterface, TImpl)()
|
||||
container.RegisterType(Of IUselessModel, UselessModel)()
|
||||
End Sub
|
||||
End Class
|
||||
|
||||
5
DigitalDataBNSPlugin/UselessModel.vb
Normal file
5
DigitalDataBNSPlugin/UselessModel.vb
Normal file
@ -0,0 +1,5 @@
|
||||
Public Class UselessModel
|
||||
Implements IUselessModel
|
||||
|
||||
Public Property Message As String Implements IUselessModel.Message
|
||||
End Class
|
||||
Loading…
x
Reference in New Issue
Block a user