2025-12-11 10:06:44 +08:00
|
|
|
|
Imports Newtonsoft.Json
|
|
|
|
|
|
|
|
|
|
|
|
Public Class BFrmLogin
|
|
|
|
|
|
|
|
|
|
|
|
' TODO: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>룬<EFBFBD><EBA3AC>ʹ<EFBFBD><CAB9><EFBFBD>ṩ<EFBFBD><E1B9A9><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤
|
|
|
|
|
|
' (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://go.microsoft.com/fwlink/?LinkId=35339)<29><>
|
|
|
|
|
|
' <20><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɸ<EFBFBD><C9B8>ӵ<EFBFBD><D3B5><EFBFBD>ǰ<EFBFBD>̵߳<DFB3><CCB5><EFBFBD><EFBFBD>壬<EFBFBD><E5A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ:
|
|
|
|
|
|
' My.User.CurrentPrincipal = CustomPrincipal
|
|
|
|
|
|
' <20><><EFBFBD><EFBFBD> CustomPrincipal <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4> IPrincipal ʵ<>֡<EFBFBD>
|
|
|
|
|
|
' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>My.User <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CustomPrincipal <20><><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD>װ<EFBFBD>ı<EFBFBD>ʶ<EFBFBD><CAB6>Ϣ
|
|
|
|
|
|
' <20><><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
''' <summary><3E>Ƿ<EFBFBD><C7B7><EFBFBD>ס<EFBFBD><D7A1><EFBFBD><EFBFBD></summary>
|
|
|
|
|
|
Private _isRecordPassWord As Boolean
|
|
|
|
|
|
|
|
|
|
|
|
''' <summary><3E>Ƿ<EFBFBD><C7B7>Զ<EFBFBD><D4B6><EFBFBD>¼</summary>
|
|
|
|
|
|
Private _isAutoLogin As Boolean
|
|
|
|
|
|
|
|
|
|
|
|
''' <summary><3E>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ڵ<EFBFBD>¼<EFBFBD><C2BC></summary>
|
|
|
|
|
|
Private _isLogging As Boolean
|
|
|
|
|
|
|
|
|
|
|
|
''' <summary><3E><>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD></summary>
|
|
|
|
|
|
Private _appid As Integer = 6 'BLV_Studio = 6
|
|
|
|
|
|
'CSerialConfigTools = 1
|
|
|
|
|
|
'Face server = 2
|
|
|
|
|
|
'auth server = 3
|
|
|
|
|
|
'blv_oa.com = 4
|
|
|
|
|
|
'RCU_MAC binding = 5
|
|
|
|
|
|
'BLV_Studio = 6
|
|
|
|
|
|
|
|
|
|
|
|
Private Sub FrmLogin_Load(sender As Object, e As EventArgs) Handles Me.Load
|
|
|
|
|
|
LoadSettings()
|
|
|
|
|
|
|
|
|
|
|
|
Try
|
|
|
|
|
|
TxtUserName.ForeColor = Color.FromArgb(0, 155, 134)
|
|
|
|
|
|
TxtUserName.Text = Aes128.DecryptStr(My.Settings.UserAccount, Aes128.ServerAesKey)
|
|
|
|
|
|
Catch ex As Exception
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
' TxtUserName.Text = String.Empty
|
|
|
|
|
|
End Try
|
|
|
|
|
|
|
|
|
|
|
|
Try
|
|
|
|
|
|
|
|
|
|
|
|
TxtPwd.ForeColor = Color.FromArgb(0, 155, 134)
|
|
|
|
|
|
TxtPwd.Text = Aes128.DecryptStr(My.Settings.UserPassword, Aes128.ServerAesKey)
|
|
|
|
|
|
Catch ex As Exception
|
|
|
|
|
|
|
|
|
|
|
|
'TxtPwd.Text = String.Empty
|
|
|
|
|
|
End Try
|
|
|
|
|
|
TxtUserName_Leave(Nothing, Nothing)
|
|
|
|
|
|
TxtPwd_Leave(Nothing, Nothing)
|
|
|
|
|
|
ChkAutoLogin.Checked = _isAutoLogin
|
|
|
|
|
|
ChkRecordPwd.Checked = _isRecordPassWord
|
|
|
|
|
|
|
|
|
|
|
|
Text = $"{Application.ProductName} {Application.ProductVersion}"
|
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
|
|
Private Sub LoginForm_Shown(sender As Object, e As EventArgs) Handles Me.Shown
|
|
|
|
|
|
If _isAutoLogin Then
|
|
|
|
|
|
TmrAutoLogin.Start()
|
|
|
|
|
|
End If
|
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
|
|
Private Sub FrmLogin_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
|
|
|
|
|
|
SaveSettings()
|
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
|
|
Private Sub BtnLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnLogin.Click
|
|
|
|
|
|
CloseAutoLogin()
|
|
|
|
|
|
If _isLogging Then Return
|
|
|
|
|
|
_isLogging = True
|
|
|
|
|
|
BtnLogin.BackgroundImage = BLV_Studio.My.Resources.Resources._6
|
|
|
|
|
|
|
|
|
|
|
|
Dim user As String = TxtUserName.Text
|
|
|
|
|
|
Dim pwd As String = TxtPwd.Text
|
|
|
|
|
|
Try
|
|
|
|
|
|
CheckUserAccount(user)
|
|
|
|
|
|
CheckUserPassword(pwd)
|
|
|
|
|
|
Dim login As LoginReturn = GetAccountAuth(user, pwd, _appid)
|
|
|
|
|
|
|
|
|
|
|
|
'<27><>ʾ
|
|
|
|
|
|
Dim frm As New FrmMain
|
|
|
|
|
|
frm.Account = user
|
|
|
|
|
|
frm.Pawss = pwd
|
|
|
|
|
|
frm.AccountAuth = login.Data
|
|
|
|
|
|
frm.Show()
|
|
|
|
|
|
|
|
|
|
|
|
'<27>رմ<D8B1><D5B4><EFBFBD>
|
|
|
|
|
|
Me.Close()
|
|
|
|
|
|
Catch ex As Exception
|
|
|
|
|
|
MsgBox(ex.Message, MsgBoxStyle.OkOnly, "<EFBFBD><EFBFBD>¼ʧ<EFBFBD><EFBFBD>")
|
|
|
|
|
|
BtnLogin.BackgroundImage = BLV_Studio.My.Resources.Resources._5
|
|
|
|
|
|
End Try
|
|
|
|
|
|
|
|
|
|
|
|
_isLogging = False
|
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
|
|
Private Function GetAccountAuth(user As String, pwd As String, appid As Integer) As LoginReturn
|
2026-01-05 11:03:10 +08:00
|
|
|
|
Dim jsonString As String = HttpMothod.PostData("http://auth.blv-oa.com/OTApi/Login", $"Uid={user}&Pwd={pwd}&appid={_appid}")
|
2025-12-11 10:06:44 +08:00
|
|
|
|
If String.IsNullOrWhiteSpace(jsonString) Then Throw New Exception($"<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD>쳣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա")
|
|
|
|
|
|
|
|
|
|
|
|
Dim login As LoginReturn = JsonConvert.DeserializeObject(Of LoginReturn)(jsonString)
|
|
|
|
|
|
If login Is Nothing Then Throw New Exception($"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>Ȩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>!")
|
|
|
|
|
|
|
|
|
|
|
|
If login.Status <> 200 Then Throw New Exception($"Status: {login.Status} Msg:{login.Message}")
|
|
|
|
|
|
|
|
|
|
|
|
Return login
|
|
|
|
|
|
End Function
|
|
|
|
|
|
|
|
|
|
|
|
Private Sub BtnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCancel.Click
|
|
|
|
|
|
Me.Close()
|
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
''' <summary><3E><>ס<EFBFBD><D7A1><EFBFBD>븴ѡ<EBB8B4><D1A1>״̬<D7B4>Ĵ<DEB8><C4B4><EFBFBD><EFBFBD>¼<EFBFBD></summary>
|
|
|
|
|
|
Private Sub ChkKeepPwd_CheckedChanged(sender As Object, e As EventArgs) Handles ChkRecordPwd.CheckedChanged
|
|
|
|
|
|
_isRecordPassWord = ChkRecordPwd.Checked
|
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
|
|
''' <summary><3E>Զ<EFBFBD><D4B6><EFBFBD>¼<EFBFBD><C2BC>ѡ<EFBFBD><D1A1>״̬<D7B4>Ĵ<DEB8><C4B4><EFBFBD><EFBFBD>¼<EFBFBD></summary>
|
|
|
|
|
|
Private Sub Chk_AutoLogin_CheckedChanged(sender As Object, e As EventArgs) Handles ChkAutoLogin.CheckedChanged
|
|
|
|
|
|
_isAutoLogin = ChkAutoLogin.Checked
|
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
|
|
Private Sub TxtPwd_TextChanged(sender As Object, e As EventArgs) Handles TxtUserName.TextChanged, TxtPwd.TextChanged
|
|
|
|
|
|
CloseAutoLogin()
|
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
|
|
Private Sub LoginForm_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
|
|
|
|
|
|
SaveSettings()
|
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
|
|
Private Sub TmrAutoLogin_Tick(sender As Object, e As EventArgs) Handles TmrAutoLogin.Tick
|
|
|
|
|
|
If String.IsNullOrEmpty(TxtUserName.Text) Then Return
|
|
|
|
|
|
|
|
|
|
|
|
' BtnLogin.PerformClick()
|
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Private Sub CheckUserAccount(userAccount As String)
|
|
|
|
|
|
If String.IsNullOrWhiteSpace(userAccount) Then
|
|
|
|
|
|
Throw New Exception($"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD>˺<EFBFBD>!")
|
|
|
|
|
|
End If
|
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
|
|
Private Sub CheckUserPassword(userPassword As String)
|
|
|
|
|
|
If String.IsNullOrWhiteSpace(userPassword) Then
|
|
|
|
|
|
Throw New Exception($"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!")
|
|
|
|
|
|
End If
|
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
''' <summary><3E><>ȡSetting<6E>еĻ<D0B5><C4BB><EFBFBD><EFBFBD><EFBFBD></summary>
|
|
|
|
|
|
Private Sub LoadSettings()
|
|
|
|
|
|
My.Settings.Reload() '<27><>ȡSetting<6E>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
_isAutoLogin = False ' My.Settings.IsAutoLogin
|
|
|
|
|
|
_isRecordPassWord = My.Settings.IsRecordPassWord
|
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
|
|
''' <summary><3E><><EFBFBD><EFBFBD>Setting<6E>еĻ<D0B5><C4BB><EFBFBD><EFBFBD><EFBFBD></summary>
|
|
|
|
|
|
Private Sub SaveSettings()
|
|
|
|
|
|
My.Settings.IsAutoLogin = _isAutoLogin
|
|
|
|
|
|
My.Settings.IsRecordPassWord = _isRecordPassWord
|
|
|
|
|
|
|
|
|
|
|
|
If _isRecordPassWord Then
|
|
|
|
|
|
My.Settings.UserAccount = Aes128.EncryptStr(TxtUserName.Text, Aes128.ServerAesKey)
|
|
|
|
|
|
My.Settings.UserPassword = Aes128.EncryptStr(TxtPwd.Text, Aes128.ServerAesKey)
|
|
|
|
|
|
Else
|
|
|
|
|
|
My.Settings.UserAccount = String.Empty
|
|
|
|
|
|
My.Settings.UserPassword = String.Empty
|
|
|
|
|
|
End If
|
|
|
|
|
|
My.Settings.Save()
|
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Private Sub CloseAutoLogin()
|
|
|
|
|
|
If TmrAutoLogin.Enabled Then
|
|
|
|
|
|
TmrAutoLogin.Stop()
|
|
|
|
|
|
Text = $"{My.Application.Info.ProductName} Login [Auto Login Cancelled...]"
|
|
|
|
|
|
End If
|
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Private Sub TxtPwd_Enter(sender As Object, e As EventArgs) Handles TxtPwd.Enter
|
|
|
|
|
|
If (TxtPwd.Text.Trim().Equals("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")) Then
|
|
|
|
|
|
TxtPwd.Text = ""
|
|
|
|
|
|
End If
|
|
|
|
|
|
|
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
|
|
Private Sub TxtUserName_Enter(sender As Object, e As EventArgs) Handles TxtUserName.Enter
|
|
|
|
|
|
If (TxtUserName.Text.Trim().Equals("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˺<EFBFBD>")) Then
|
|
|
|
|
|
TxtUserName.Text = ""
|
|
|
|
|
|
End If
|
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
|
|
Private Sub TxtUserName_Leave(sender As Object, e As EventArgs) Handles TxtUserName.Leave
|
|
|
|
|
|
'TxtUserName.ForeColor = Color.Black
|
|
|
|
|
|
If (String.IsNullOrWhiteSpace(TxtUserName.Text)) Then
|
|
|
|
|
|
TxtUserName.ForeColor = Color.FromArgb(0, 155, 134)
|
|
|
|
|
|
TxtUserName.Text = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˺<EFBFBD>"
|
|
|
|
|
|
End If
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
|
|
Private Sub TxtPwd_Leave(sender As Object, e As EventArgs) Handles TxtPwd.Leave
|
|
|
|
|
|
'TxtPwd.ForeColor = Color.Black
|
|
|
|
|
|
TxtPwd.PasswordChar = "*"
|
|
|
|
|
|
If (String.IsNullOrWhiteSpace(TxtPwd.Text)) OrElse TxtUserName.Text.Trim().Equals("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˺<EFBFBD>") Then
|
|
|
|
|
|
TxtPwd.ForeColor = Color.FromArgb(0, 155, 134)
|
|
|
|
|
|
TxtPwd.PasswordChar = String.Empty
|
|
|
|
|
|
TxtPwd.Text = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
|
|
|
|
|
|
|
|
|
|
|
|
End If
|
|
|
|
|
|
End Sub
|
|
|
|
|
|
End Class
|