Browse Source

Дописал генерацию ID и пароля. Добавлена функция проверки доступности прокси. Нужны функции для работы с INI-файлами.

master
cyrax 6 years ago
parent
commit
2df2d882fa
  1. 98
      LVNC-RS/IniFile.vb
  2. 1
      LVNC-RS/LVNC-RS.vbproj
  3. 65
      LVNC-RS/Services.vb
  4. 4
      LVNC-RS/frmLVNC-RS-Main.Designer.vb
  5. 31
      LVNC-RS/frmLVNC-RS-Main.vb

98
LVNC-RS/IniFile.vb

@ -0,0 +1,98 @@
Imports System.IO
Imports System.Runtime.InteropServices
Imports System.Text
Namespace Ini
Public Class IniFile
#Region "DLL Import"
''' <summary>
''' Записывает ключ в заданный раздел INI-файла.
''' </summary>
''' <param name="section">Имя раздела.</param>
''' <param name="key">Имя ключа.</param>
''' <param name="value">Значение ключа.</param>
''' <param name="filePath">Путь к INI-файлу.</param>
<DllImport("kernel32")>
Private Shared Function WritePrivateProfileString(ByVal section As String, ByVal key As String, ByVal value As String, ByVal filePath As String) As Long
End Function
''' <summary>
''' Считывает ключ заданного раздела INI-файла.
''' </summary>
''' <param name="section">Имя раздела.</param>
''' <param name="key">Имя ключа.</param>
''' <param name="[default]"></param>
''' <param name="retVal"></param>
''' <param name="size"></param>
''' <param name="filePath">Путь к INI-файлу.</param>
''' <remarks>С помощью конструктора записываем путь до файла и его имя. </remarks>
<DllImport("kernel32")>
Private Shared Function GetPrivateProfileString(ByVal section As String, ByVal key As String, ByVal [default] As String, ByVal retVal As StringBuilder, ByVal size As Integer, ByVal filePath As String) As Integer
End Function
#End Region '/DLL Import
#Region "Constructor"
''' <summary>
''' Имя файла.
''' </summary>
Private IniPath As String
''' <summary>
''' Читаем ini-файл и возвращаем значение указного ключа из заданной секции.
''' </summary>
''' <param name="iniPath"></param>
Public Sub New(ByVal iniPath As String)
Me.IniPath = New FileInfo(iniPath).FullName.ToString
End Sub
#End Region
#Region "INI-file Methods"
''' <summary>
''' Проверяет, что заданный ключ существует в INI-файле.
''' </summary>
''' <param name="section">Имя раздела.</param>
''' <param name="key">Имя ключа.</param>
Public Function KeyExists(ByVal section As String, ByVal key As String) As Boolean
Return (Me.ReadKey(section, key).Length > 0)
End Function
''' <summary>
''' Читает значение заданного ключа в заданном разделе INI-файла.
''' </summary>
''' <param name="section">Имя раздела.</param>
''' <param name="key">Имя ключа.</param>
Public Function ReadKey(ByVal section As String, ByVal key As String) As String
Dim retVal As New StringBuilder(&HFF)
IniFile.GetPrivateProfileString(section, key, "", retVal, &HFF, Me.IniPath)
Return retVal.ToString()
End Function
''' <summary>
''' Создаёт заданный ключ в заданном разделе. Если раздел не существует, он будет создан.
''' </summary>
''' <param name="section">Имя раздела.</param>
''' <param name="key">Имя ключа.</param>
''' <param name="value">Значение ключа. Если NULL, то ключ будет удалён. Если String.Empty, то присвоится пустое значение.</param>
Public Sub WriteKey(ByVal section As String, ByVal key As String, ByVal value As String)
IniFile.WritePrivateProfileString(section, key, value, Me.IniPath)
End Sub
''' <summary>
''' Удаляет заданный ключ из заданного раздела INI-файла.
''' </summary>
''' <param name="section">Имя раздела.</param>
''' <param name="key">Имя ключа.</param>
Public Sub DeleteKey(ByVal section As String, ByVal key As String)
Me.WriteKey(section, key, Nothing)
End Sub
''' <summary>
''' Удаляет заданный раздел INI-файла.
''' </summary>
''' <param name="section">Имя раздела.</param>
Public Sub DeleteSection(ByVal section As String)
Me.WriteKey(section, Nothing, Nothing)
End Sub
#End Region
End Class
End Namespace

1
LVNC-RS/LVNC-RS.vbproj

@ -91,6 +91,7 @@
<Import Include="System.Xml.Linq" />
</ItemGroup>
<ItemGroup>
<Compile Include="IniFile.vb" />
<Compile Include="frmLVNC-RS-Main.vb">
<SubType>Form</SubType>
</Compile>

65
LVNC-RS/Services.vb

@ -1,7 +1,13 @@
Module Services
Public sRunTimeDir As String = getRunTimeDir() & "\LVNC-RS"
Public sConfigFile As String = sRunTimeDir & "\lvnc-rs.ini"
Public lSupportID As Long = 0
Private sRunTimeDir As String = getRunTimeDir() & "\LVNC-RS"
Private oConfigFile As New Ini.IniFile(sRunTimeDir & "\lvnc-rs.ini")
Public sSupportID As String = String.Empty
Public sSupportPasswd As String = String.Empty
Public byProxyStatus As Byte = 0
Public sProxyHost As String = oConfigFile.ReadKey("repeater", "host")
Public sProxyPort As String = oConfigFile.ReadKey("repeater", "serverport")
Private aExecResources(,) As String = {
{"lvnc_rs_ini", "\lvnc_rs.ini"},
@ -72,7 +78,7 @@
Public Sub getSupportID()
Dim aNics() As Net.NetworkInformation.NetworkInterface = Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()
Dim sMAC As String = String.Empty
Dim lID As Long = 0
Dim iID As Integer = 0
For Each nic As Net.NetworkInformation.NetworkInterface In aNics
If (nic.NetworkInterfaceType = Net.NetworkInformation.NetworkInterfaceType.Ethernet Or
@ -91,17 +97,58 @@
Next i
Dim aMAC() = strBuilder.ToString.Split(":")
Dim n As Long = 0
Dim n As Integer = 0
For i As Integer = 0 To UBound(aMAC)
n = Convert.ToInt32(aMAC(i), 16)
Debug.Print(n)
lID = ((lID * 16) + n) Mod 99999999
iID = ((iID * 16) + n) Mod 99999999
If lID < 99999999 Then
lID = lID + 10000000
If iID < 99999999 Then
iID = iID + 10000000
End If
Next
lSupportID = lID
sSupportID = iID.ToString
End Sub
Public Sub getSupportPasswd()
Dim rndGen As New System.Random
sSupportPasswd = rndGen.Next(1000, 10000).ToString
End Sub
Public Sub checkProxy(ByRef sHost As String, ByRef sPort As String)
Dim hostEntry As Net.IPHostEntry
Dim ipAddress As Net.IPAddress
Dim epHost As Net.IPEndPoint
Dim socket As Net.Sockets.Socket
Try
hostEntry = Net.Dns.GetHostEntry(sHost)
Catch ex As Exception
byProxyStatus = 2
Exit Sub
End Try
If hostEntry.AddressList.Count > 0 Then
ipAddress = hostEntry.AddressList.FirstOrDefault
epHost = New Net.IPEndPoint(ipAddress, Convert.ToInt32(sPort))
socket = New Net.Sockets.Socket(Net.Sockets.AddressFamily.InterNetwork, Net.Sockets.SocketType.Stream, Net.Sockets.ProtocolType.Tcp)
Try
socket.Connect(epHost)
Catch ex As Exception
End Try
End If
If socket.Connected Then
byProxyStatus = 1
Else
byProxyStatus = 2
End If
socket.Disconnect(False)
End Sub
End Module

4
LVNC-RS/frmLVNC-RS-Main.Designer.vb

@ -132,7 +132,7 @@ Partial Class frmLVNCRSMain
'tsLabelSrvStatus
'
Me.tsLabelSrvStatus.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
Me.tsLabelSrvStatus.Margin = New System.Windows.Forms.Padding(0)
Me.tsLabelSrvStatus.Margin = New System.Windows.Forms.Padding(2, 0, 2, 0)
Me.tsLabelSrvStatus.Name = "tsLabelSrvStatus"
Me.tsLabelSrvStatus.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never
Me.tsLabelSrvStatus.Size = New System.Drawing.Size(0, 21)
@ -143,7 +143,7 @@ Partial Class frmLVNCRSMain
Me.tsButtonRunAs.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image
Me.tsButtonRunAs.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None
Me.tsButtonRunAs.ImageTransparentColor = System.Drawing.Color.Magenta
Me.tsButtonRunAs.Margin = New System.Windows.Forms.Padding(0, 0, 1, 0)
Me.tsButtonRunAs.Margin = New System.Windows.Forms.Padding(2, 0, 2, 0)
Me.tsButtonRunAs.Name = "tsButtonRunAs"
Me.tsButtonRunAs.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never
Me.tsButtonRunAs.Size = New System.Drawing.Size(23, 21)

31
LVNC-RS/frmLVNC-RS-Main.vb

@ -2,6 +2,8 @@
Private Sub frmLVNCRSMain_Load(sender As Object, e As EventArgs) Handles Me.Load
Services.checkRunTimeComponents()
Services.getSupportID()
Services.getSupportPasswd()
Services.checkProxy(Services.sProxyHost, Services.sProxyPort)
If My.User.IsInRole(ApplicationServices.BuiltInRole.Administrator) Then
tsButtonRunAs.Image = Global.LVNC_RS.My.Resources.is_admin_on
@ -9,7 +11,16 @@
tsButtonRunAs.Image = Global.LVNC_RS.My.Resources.is_admin_off
End If
txtLVNCSupportID.Text = Format(Services.lSupportID, "### ### ##0")
If Services.byProxyStatus = 1 Then
tsLabelSrvStatus.Image = Global.LVNC_RS.My.Resources.online
Else
tsLabelSrvStatus.Image = Global.LVNC_RS.My.Resources.offline
End If
txtLVNCSupportID.Text = Format(Convert.ToInt32(Services.sSupportID), "### ### ##0")
txtLVNCSupportPasswd.Text = Services.sSupportPasswd
tCheckTimer.Enabled = True
End Sub
Private Sub tsButtonRunAs_Click(sender As Object, e As EventArgs) Handles tsButtonRunAs.Click
@ -40,4 +51,22 @@
'
'Application.Exit()
End Sub
Private Sub frmLVNCRSMain_Shown(sender As Object, e As EventArgs) Handles Me.Shown
Me.Show()
Dim sProxy As String = "digital-freak.ru"
Dim sport As String = "5900"
Services.checkProxy(sProxy, sport)
End Sub
Private Sub tCheckTimer_Tick(sender As Object, e As EventArgs) Handles tCheckTimer.Tick
Services.checkProxy(Services.sProxyHost, Services.sProxyPort)
If Services.byProxyStatus = 1 Then
tsLabelSrvStatus.Image = Global.LVNC_RS.My.Resources.online
Else
tsLabelSrvStatus.Image = Global.LVNC_RS.My.Resources.offline
End If
End Sub
End Class

Loading…
Cancel
Save