This repository has been archived on 2025-11-27. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
AUTS_OLD/UTS_Core/UTSModule/License/Server.vb

237 lines
7.9 KiB
VB.net
Raw Normal View History

2024-03-11 16:32:52 +08:00
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