Files
Nuvolar/Nuvolar.WIN.Company/WinApplication_DB.vb

151 lines
6.8 KiB
VB.net

Imports Microsoft.VisualBasic
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports DevExpress.ExpressApp.Win
Imports DevExpress.ExpressApp.Updating
Imports DevExpress.ExpressApp
Imports System.Configuration
Imports DevExpress.ExpressApp.Security
Imports Nuvolar.Module
Imports DevExpress.Persistent.BaseImpl
Imports Nuvolar.Module.Win
Imports DevExpress.Xpo
Imports DevExpress.Xpo.DB
Imports System.Net
Imports System.IO
Imports System.Text
Imports Newtonsoft.Json
Partial Public Class NuvolarWindowsFormsApplication
Inherits WinApplication
Implements IApplicationFactory
Friend WithEvents SystemModule1 As DevExpress.ExpressApp.SystemModule.SystemModule
Protected Overrides Sub ReadLastLogonParametersCore(ByVal storage As DevExpress.ExpressApp.Utils.SettingsStorage, ByVal logonObject As Object)
Dim standardLogonParameters As AuthenticationStandardLogonParameters = TryCast(logonObject, AuthenticationStandardLogonParameters)
If (standardLogonParameters IsNot Nothing) AndAlso String.IsNullOrEmpty(standardLogonParameters.UserName) Then
MyBase.ReadLastLogonParametersCore(storage, logonObject)
Try
'MsgBox(System.Configuration.ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString)
TryCast(logonObject, ChangeLogon).DBConnection = TryCast(storage, DevExpress.ExpressApp.Utils.SettingsStorageOnString).Values("\DBConnection")
TryCast(logonObject, ChangeLogon).SQLServer = TryCast(storage, DevExpress.ExpressApp.Utils.SettingsStorageOnString).Values("\SQLServer")
TryCast(logonObject, ChangeLogon).Company = TryCast(storage, DevExpress.ExpressApp.Utils.SettingsStorageOnString).Values("\Company")
Select Case TryCast(storage, DevExpress.ExpressApp.Utils.SettingsStorageOnString).Values("\SQLType")
Case "MSSQL"
TryCast(logonObject, ChangeLogon).SQLType = eSQLType.MSSQL
Case "PostgreSQL"
TryCast(logonObject, ChangeLogon).SQLType = eSQLType.PostgreSQL
Case "MySQL"
TryCast(logonObject, ChangeLogon).SQLType = eSQLType.MySQL
End Select
Catch
End Try
End If
End Sub
Protected Overrides Sub OnLoggingOn(ByVal args As LogonEventArgs)
Dim connstr As String = ""
Dim _ChangeLogon As ChangeLogon
MyBase.OnLoggingOn(args)
_ChangeLogon = TryCast(args.LogonParameters, ChangeLogon)
GLOBAL_Company = _ChangeLogon.Company
'Me.ConnectionString = GetConnectionGLOBAL()
Me.ConnectionString = GetSISSecurity()
SISGetInfoSSL()
Dim anm As System.Reflection.AssemblyName = System.Reflection.AssemblyName.GetAssemblyName(Application.StartupPath & "\Nuvolar.Module.dll")
GLOBAL_MainModuleVersion = anm.Version.ToString
GLOBAL_ConnectionString = connstr
GLOBAL_WINFormCaption = String.Format("Nuvolar Framework version: {0} [{1}]", Application.ProductVersion, anm.Version.ToString)
GLOBAL_WINFormCaption += String.Format(", ({0})", GLOBAL_Company_Info)
GLOBAL_ApplicationStartupPath = Application.StartupPath & "\"
End Sub
Protected Overrides Function OnLogonFailed(ByVal logonParameters As Object, ByVal e As Exception) As Boolean
If WinChangeDatabaseHelper.SkipLogonDialog Then
Return True
End If
Return MyBase.OnLogonFailed(logonParameters, e)
End Function
Public Shared Function CreateApplication() As NuvolarWindowsFormsApplication
Dim winApplication As New NuvolarWindowsFormsApplication
CType(winApplication.Security, SecurityBase).Authentication = New WinChangeDatabaseStandardAuthentication()
Return winApplication
End Function
Private Function IApplicationFactory_CreateApplication() As WinApplication Implements IApplicationFactory.CreateApplication
Return CreateApplication()
End Function
Protected Overrides Function GetModelAssemblyFilePath() As String
Return Nothing
End Function
Private Function GetSISSecurity() As String
Dim _ConnectionString As String = ""
Try
Dim _url = "http://ws2016dc.northeurope.cloudapp.azure.com:8089/SISSecuritySSL.ashx?id=" & UCase(GLOBAL_Company)
Dim _request As HttpWebRequest = TryCast(WebRequest.Create(_url), HttpWebRequest)
Dim _response As HttpWebResponse = TryCast(_request.GetResponse, HttpWebResponse)
Dim _reader As StreamReader = New StreamReader(_response.GetResponseStream())
_ConnectionString = _reader.ReadToEnd
_ConnectionString = Encoding.UTF8.GetString(Convert.FromBase64String(_ConnectionString))
_ConnectionString = AESDecrypt(_ConnectionString, "HrX12!!0Zm7764W2", "vXm657YS+!0@mmT")
Dim sArray() As String = _ConnectionString.Split(New Char() {";", "="}, StringSplitOptions.RemoveEmptyEntries)
If String.IsNullOrEmpty(sArray(1)) = False Then
Select Case UCase(sArray(1))
Case "MYSQL"
GLOBAL_SQLType = eSQLType.MySQL
Case "MSSQL"
GLOBAL_SQLType = eSQLType.MSSQL
Case "POSTGRESQL"
GLOBAL_SQLType = eSQLType.PostgreSQL
Case Else
GLOBAL_SQLType = eSQLType.MSSQL
End Select
End If
Catch ex As Exception
End Try
Return _ConnectionString
End Function
Private Sub SISGetInfoSSL()
Dim _InfoString As String = ""
Dim _GetInfoClass As New GetInfoClass
Try
Dim _url = "http://ws2016dc.northeurope.cloudapp.azure.com:8089/SISSecuritySSL.ashx?id=" & UCase(GLOBAL_Company)
Dim _request As HttpWebRequest = TryCast(WebRequest.Create(_url), HttpWebRequest)
Dim _response As HttpWebResponse = TryCast(_request.GetResponse, HttpWebResponse)
Dim _reader As StreamReader = New StreamReader(_response.GetResponseStream())
_InfoString = _reader.ReadToEnd
_InfoString = Encoding.UTF8.GetString(Convert.FromBase64String(_InfoString))
_InfoString = AESDecrypt(_InfoString, "HrX12!!0Zm7764W2", "vXm657YS+!0@mmT")
_GetInfoClass = JsonConvert.DeserializeObject(Of GetInfoClass)(_InfoString)
GLOBAL_Company_Info = String.Format("Server: {0}, Database: {1}", _GetInfoClass.SQLServer, _GetInfoClass.SQLDatabase)
GLOBAL_SQLType = _GetInfoClass.SQLType
Catch ex As Exception
End Try
End Sub
End Class
Public Class GetInfoClass
Property SQLType As eSQLType
Property SQLServer As String
Property SQLDatabase As String
End Class