237 lines
7.9 KiB
VB.net
237 lines
7.9 KiB
VB.net
Imports System.IO
|
||
Imports UTS_Core.Security
|
||
|
||
Namespace UTSModule.License
|
||
|
||
''' <summary>
|
||
''' 类的作用:获取服务器信息
|
||
''' 创建人员:ML
|
||
''' Log编号:1
|
||
''' 修改描述:创建
|
||
''' 修改日期:2019-10-15
|
||
''' 修改人员:ML
|
||
''' </summary>
|
||
Public Class Server
|
||
|
||
''' <summary> Server文件字段枚举 </summary>
|
||
Private Enum ServerKeyEnum
|
||
|
||
''' <summary>客户名</summary>
|
||
VendorName
|
||
|
||
''' <summary>数据库服务器地址</summary>
|
||
DataSource
|
||
|
||
''' <summary>数据库服务器端口</summary>
|
||
DbPort
|
||
|
||
''' <summary>数据库名</summary>
|
||
Database
|
||
|
||
''' <summary>数据库用户名</summary>
|
||
DbUser
|
||
|
||
''' <summary>数据库用户密码</summary>
|
||
DbPassword
|
||
|
||
''' <summary>Ftp地址</summary>
|
||
FtpHost
|
||
|
||
''' <summary>Ftp端口</summary>
|
||
FtpPort
|
||
|
||
''' <summary>Ftp用户名</summary>
|
||
FtpUser
|
||
|
||
''' <summary>Ftp用户密码</summary>
|
||
FtpPassword
|
||
|
||
End Enum
|
||
|
||
''' <summary> Server文件校验返回枚举值</summary>
|
||
Public Enum ServerCheckCodeEnum
|
||
|
||
''' <summary>未找到Server</summary>
|
||
NoServer
|
||
|
||
''' <summary>无法打开Server</summary>
|
||
CantOpenServer
|
||
|
||
''' <summary>无效的Server</summary>
|
||
InvalidServer
|
||
|
||
''' <summary>校验通过</summary>
|
||
CheckPass
|
||
|
||
End Enum
|
||
|
||
''' <summary>存储Server校验返回值</summary>
|
||
Private _checkCode As ServerCheckCodeEnum
|
||
|
||
''' <summary>存储Server所有信息</summary>
|
||
Private _server As Dictionary(Of String, String)
|
||
|
||
''' <summary>服务器密钥</summary>
|
||
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*&(*&&^"
|
||
|
||
'''<summary>Server所有可用字段</summary>
|
||
Private ReadOnly _serverKey() As String = {"VendorName", "DataSource", "DataPort", "Database", "DbUser", "DbPassword", "FtpHost", "FtpPort", "FtpUser", "FtpPassword"}
|
||
|
||
''' <summary>
|
||
''' 获取客户名
|
||
''' </summary>
|
||
''' <returns>客户名</returns>
|
||
Public ReadOnly Property VendorName() As String
|
||
Get
|
||
Return _server.Item(_serverKey(ServerKeyEnum.VendorName))
|
||
End Get
|
||
End Property
|
||
|
||
''' <summary>
|
||
''' 获取服务器名
|
||
''' </summary>
|
||
''' <returns>服务器名</returns>
|
||
Public ReadOnly Property DataSource() As String
|
||
Get
|
||
Return _server.Item(_serverKey(ServerKeyEnum.DataSource))
|
||
End Get
|
||
End Property
|
||
|
||
''' <summary>
|
||
''' 获取服务器端口
|
||
''' </summary>
|
||
''' <returns>服务器端口</returns>
|
||
Public ReadOnly Property DatabasePort() As String
|
||
Get
|
||
Return _server.Item(_serverKey(ServerKeyEnum.DbPort))
|
||
End Get
|
||
End Property
|
||
|
||
''' <summary>
|
||
''' 获取数据库名
|
||
''' </summary>
|
||
''' <returns>数据库名</returns>
|
||
Public ReadOnly Property Database() As String
|
||
Get
|
||
Return _server.Item(_serverKey(ServerKeyEnum.Database))
|
||
End Get
|
||
End Property
|
||
|
||
''' <summary>
|
||
''' 获取数据库用户名
|
||
''' </summary>
|
||
''' <returns>数据库用户名</returns>
|
||
Public ReadOnly Property DatabaseUser() As String
|
||
Get
|
||
Return _server.Item(_serverKey(ServerKeyEnum.DbUser))
|
||
End Get
|
||
End Property
|
||
|
||
''' <summary>
|
||
''' 获取数据库用户密码
|
||
''' </summary>
|
||
''' <returns>数据库用户密码</returns>
|
||
Public ReadOnly Property DatabasePassword() As String
|
||
Get
|
||
Return _server.Item(_serverKey(ServerKeyEnum.DbPassword))
|
||
End Get
|
||
End Property
|
||
|
||
''' <summary>
|
||
''' 获取服务器端口
|
||
''' </summary>
|
||
''' <returns>服务器端口</returns>
|
||
Public ReadOnly Property FtpPort() As String
|
||
Get
|
||
Return _server.Item(_serverKey(ServerKeyEnum.FtpPort))
|
||
End Get
|
||
End Property
|
||
|
||
''' <summary>
|
||
''' 获取数据库名
|
||
''' </summary>
|
||
''' <returns>数据库名</returns>
|
||
Public ReadOnly Property FtpHost() As String
|
||
Get
|
||
Return _server.Item(_serverKey(ServerKeyEnum.FtpHost))
|
||
End Get
|
||
End Property
|
||
|
||
''' <summary>
|
||
''' 获取数据库用户名
|
||
''' </summary>
|
||
''' <returns>数据库用户名</returns>
|
||
Public ReadOnly Property FtpUser() As String
|
||
Get
|
||
Return _server.Item(_serverKey(ServerKeyEnum.FtpUser))
|
||
End Get
|
||
End Property
|
||
|
||
''' <summary>
|
||
''' 获取数据库用户密码
|
||
''' </summary>
|
||
''' <returns>数据库用户密码</returns>
|
||
Public ReadOnly Property FtpPassword() As String
|
||
Get
|
||
Return _server.Item(_serverKey(ServerKeyEnum.FtpPassword))
|
||
End Get
|
||
End Property
|
||
|
||
''' <summary>
|
||
''' 读取Server文件所有内容,并进行解密,将解密后的内容存入Server字典中
|
||
''' </summary>
|
||
''' <param name="serverPath">Server文件完整路径(含文件名)</param>
|
||
''' <returns>读取Server文件的状态</returns>
|
||
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
|
||
|
||
''' <summary>
|
||
''' 校验Server
|
||
''' </summary>
|
||
''' <param name="serverPath">Server文件完整路径(含文件名)</param>
|
||
''' <returns>校验是否通过</returns>
|
||
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 |