Imports System.IO Imports UTS_Core.Security Namespace UTSModule.License ''' ''' 类的作用:获取服务器信息 ''' 创建人员:ML ''' Log编号:1 ''' 修改描述:创建 ''' 修改日期:2019-10-15 ''' 修改人员:ML ''' Public Class Server ''' Server文件字段枚举 Private Enum ServerKeyEnum ''' 客户名 VendorName ''' 数据库服务器地址 DataSource ''' 数据库服务器端口 DbPort ''' 数据库名 Database ''' 数据库用户名 DbUser ''' 数据库用户密码 DbPassword ''' Ftp地址 FtpHost ''' Ftp端口 FtpPort ''' Ftp用户名 FtpUser ''' Ftp用户密码 FtpPassword End Enum ''' Server文件校验返回枚举值 Public Enum ServerCheckCodeEnum ''' 未找到Server NoServer ''' 无法打开Server CantOpenServer ''' 无效的Server InvalidServer ''' 校验通过 CheckPass End Enum ''' 存储Server校验返回值 Private _checkCode As ServerCheckCodeEnum ''' 存储Server所有信息 Private _server As Dictionary(Of String, String) ''' 服务器密钥 Private ReadOnly _serverAesKey As String = "^5GHo96tr5ff&*Hphg7665^fyu&uOhj0j[0[(jOIhI&g77FgghO*hhHY8h(*H&-987OygO8yg*yS$&G&aG9*&6g96*&7^RA65s76r*&&G(*(7(Gyg7#7Ff7F*&(*&&^" '''Server所有可用字段 Private ReadOnly _serverKey() As String = {"VendorName", "DataSource", "DataPort", "Database", "DbUser", "DbPassword", "FtpHost", "FtpPort", "FtpUser", "FtpPassword"} ''' ''' 获取客户名 ''' ''' 客户名 Public ReadOnly Property VendorName() As String Get Return _server.Item(_serverKey(ServerKeyEnum.VendorName)) End Get End Property ''' ''' 获取服务器名 ''' ''' 服务器名 Public ReadOnly Property DataSource() As String Get Return _server.Item(_serverKey(ServerKeyEnum.DataSource)) End Get End Property ''' ''' 获取服务器端口 ''' ''' 服务器端口 Public ReadOnly Property DatabasePort() As String Get Return _server.Item(_serverKey(ServerKeyEnum.DbPort)) End Get End Property ''' ''' 获取数据库名 ''' ''' 数据库名 Public ReadOnly Property Database() As String Get Return _server.Item(_serverKey(ServerKeyEnum.Database)) End Get End Property ''' ''' 获取数据库用户名 ''' ''' 数据库用户名 Public ReadOnly Property DatabaseUser() As String Get Return _server.Item(_serverKey(ServerKeyEnum.DbUser)) End Get End Property ''' ''' 获取数据库用户密码 ''' ''' 数据库用户密码 Public ReadOnly Property DatabasePassword() As String Get Return _server.Item(_serverKey(ServerKeyEnum.DbPassword)) End Get End Property ''' ''' 获取服务器端口 ''' ''' 服务器端口 Public ReadOnly Property FtpPort() As String Get Return _server.Item(_serverKey(ServerKeyEnum.FtpPort)) End Get End Property ''' ''' 获取数据库名 ''' ''' 数据库名 Public ReadOnly Property FtpHost() As String Get Return _server.Item(_serverKey(ServerKeyEnum.FtpHost)) End Get End Property ''' ''' 获取数据库用户名 ''' ''' 数据库用户名 Public ReadOnly Property FtpUser() As String Get Return _server.Item(_serverKey(ServerKeyEnum.FtpUser)) End Get End Property ''' ''' 获取数据库用户密码 ''' ''' 数据库用户密码 Public ReadOnly Property FtpPassword() As String Get Return _server.Item(_serverKey(ServerKeyEnum.FtpPassword)) End Get End Property ''' ''' 读取Server文件所有内容,并进行解密,将解密后的内容存入Server字典中 ''' ''' Server文件完整路径(含文件名) ''' 读取Server文件的状态 Public Function ReadServerFile(ByVal serverPath As String) As ServerCheckCodeEnum Dim tmp As String Dim fm As FileStream Dim sr As StreamReader If File.Exists(serverPath) Then fm = New FileStream(serverPath, FileMode.Open) sr = New StreamReader(fm) _checkCode = ServerCheckCodeEnum.CheckPass _server = New Dictionary(Of String, String) Try tmp = Aes128.DecryptStr(sr.ReadToEnd, _serverAesKey) 'utf8解密字符串 ' tmp = ClsAes128.DecryptStr(sr.ReadToEnd, _serverAesKey, Unicode) 'Unicode解密字符串 Dim lines() As String = tmp.Split(Chr(13))‘回车切割 For i As Integer = 0 To lines.Length - 1 tmp = lines(i).Trim(Chr(10))'去除换行 Dim str As String() = tmp.Split("="c) If str.Length = 2 Then _server.Add(Trim(str(0)), Trim(str(1))) Debug.Print($"Keys : {_server.Keys.ElementAt(_server.Count - 1)} Value : {_server.Values.ElementAt(_server.Count - 1)}") Else _checkCode = ServerCheckCodeEnum.InvalidServer End If Next Catch ex As Exception _checkCode = ServerCheckCodeEnum.InvalidServer Finally fm.Dispose() sr.Close() End Try Else _checkCode = ServerCheckCodeEnum.NoServer End If Return _checkCode End Function ''' ''' 校验Server ''' ''' Server文件完整路径(含文件名) ''' 校验是否通过 Public Function CheckoutServer(ByVal serverPath As String) As ServerCheckCodeEnum If ReadServerFile(serverPath) = ServerCheckCodeEnum.CheckPass Then '校验厂商(根据是否存在厂商数据库校验) If My.Computer.Network.Ping(_server.Item(_serverKey(ServerKeyEnum.DataSource))) Then End If End If Return _checkCode End Function End Class End Namespace