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