Form1.frm
上传用户:xhbjoy
上传日期:2015-10-26
资源大小:41k
文件大小:14k
源码类别:

Telnet客户端

开发平台:

C#

  1. VERSION 5.00
  2. Object = "{248DD890-BB45-11CF-9ABC-0080C7E7B78D}#1.0#0"; "MSWINSCK.OCX"
  3. Begin VB.Form Form1 
  4.    BackColor       =   &H00000000&
  5.    BorderStyle     =   1  'Fixed Single
  6.    Caption         =   "JOS 3 - 0 connection(s)"
  7.    ClientHeight    =   3420
  8.    ClientLeft      =   315
  9.    ClientTop       =   330
  10.    ClientWidth     =   6315
  11.    Icon            =   "Form1.frx":0000
  12.    LinkTopic       =   "Form1"
  13.    MaxButton       =   0   'False
  14.    ScaleHeight     =   3420
  15.    ScaleWidth      =   6315
  16.    Begin VB.CheckBox Check1 
  17.       Caption         =   "Check1"
  18.       Height          =   255
  19.       Left            =   1680
  20.       TabIndex        =   5
  21.       Top             =   5520
  22.       Visible         =   0   'False
  23.       Width           =   1815
  24.    End
  25.    Begin VB.ListBox console 
  26.       Appearance      =   0  'Flat
  27.       BackColor       =   &H00000000&
  28.       Enabled         =   0   'False
  29.       BeginProperty Font 
  30.          Name            =   "Courier New"
  31.          Size            =   8.25
  32.          Charset         =   0
  33.          Weight          =   700
  34.          Underline       =   0   'False
  35.          Italic          =   0   'False
  36.          Strikethrough   =   0   'False
  37.       EndProperty
  38.       ForeColor       =   &H00FF8080&
  39.       Height          =   3180
  40.       Left            =   120
  41.       TabIndex        =   4
  42.       Top             =   120
  43.       Width           =   6135
  44.    End
  45.    Begin VB.DriveListBox drives 
  46.       Height          =   315
  47.       Index           =   1
  48.       Left            =   1200
  49.       TabIndex        =   3
  50.       Top             =   1080
  51.       Width           =   2895
  52.    End
  53.    Begin VB.FileListBox files 
  54.       Height          =   1065
  55.       Index           =   1
  56.       Left            =   1080
  57.       TabIndex        =   2
  58.       Top             =   840
  59.       Width           =   2055
  60.    End
  61.    Begin VB.DirListBox folders 
  62.       Height          =   1215
  63.       Index           =   1
  64.       Left            =   1320
  65.       TabIndex        =   1
  66.       Top             =   600
  67.       Width           =   1935
  68.    End
  69.    Begin MSWinsockLib.Winsock acc 
  70.       Left            =   3240
  71.       Top             =   480
  72.       _ExtentX        =   741
  73.       _ExtentY        =   741
  74.       _Version        =   393216
  75.    End
  76.    Begin MSWinsockLib.Winsock pol 
  77.       Index           =   0
  78.       Left            =   1800
  79.       Top             =   840
  80.       _ExtentX        =   741
  81.       _ExtentY        =   741
  82.       _Version        =   393216
  83.    End
  84.    Begin VB.ListBox List1 
  85.       Height          =   1425
  86.       Left            =   360
  87.       TabIndex        =   0
  88.       Top             =   600
  89.       Width           =   3495
  90.    End
  91. End
  92. Attribute VB_Name = "Form1"
  93. Attribute VB_GlobalNameSpace = False
  94. Attribute VB_Creatable = False
  95. Attribute VB_PredeclaredId = True
  96. Attribute VB_Exposed = False
  97. 'The code for accepting connections is not mine!
  98. 'The rest is though...
  99. Private WaitText As String
  100. Private Sub acc_ConnectionRequest(ByVal requestID As Long)
  101. On Error Resume Next
  102. ' ***** Code for accepting multiple connections *****
  103. 'this is the big cheese! When someone tries to login, it will open a diffrent
  104. 'winsock and accept the connection! That way winsock1 keeps watching port 21
  105. i = i + 1 'adds one to make sure we dont get errors
  106. Load pol(i) 'load a new winsock control
  107. Load Form1.folders(i)
  108. Form1.folders(i).Path = RootDir
  109. Form1.files(i).Path = RootDir
  110. Load Form1.files(i)
  111. pol(i).Close 'close it cuz of errors
  112. pol(i).Accept requestID 'accept the connection
  113. acc.Close
  114. acc.Listen
  115. For scan = 1 To 35
  116.     If Ac_Name(scan) = Empty Then
  117.         refid = scan
  118.         Exit For
  119.     End If
  120. Next scan
  121. ' Too many users - cut them off
  122. 'If refid = 0 Then Exit Sub
  123. Ac_Name(refid) = "no user"
  124. Ac_Host(refid) = pol(i).RemoteHostIP
  125. Ac_What(refid) = "login"
  126. Ac_Sock(refid) = i
  127. JustFile(Form1.folders(refid).Path) = ""
  128. ConsolePrint pol(i).RemoteHostIP & " has connected"
  129. ' Atm only accepts one connection at a time
  130. SendFile "filesconnect.txt", refid
  131. Send Crt, refid
  132. Send ServerName & " login> ", refid
  133. Update
  134. End Sub
  135. Private Sub Command1_Click()
  136. pol(List1.ListIndex + 1).Close
  137. Update
  138. End Sub
  139. Private Sub Command4_Click()
  140. On Error Resume Next
  141. Dim TM As Single
  142. TM = InputBox("Shutdown in how many seconds?", "JOServer")
  143. BroadcastKillMessage TM
  144. End Sub
  145. Sub Update()
  146. List1.Clear
  147. For scan = 1 To 35
  148.     If Ac_Name(scan) <> Empty Then
  149.         If Ac_SuperUser(scan) = False Then
  150.             List1.AddItem Ac_Name(scan) & " - " & Ac_Host(scan)
  151.         Else
  152.             List1.AddItem "@" & Ac_Name(scan) & " - " & Ac_Host(scan)
  153.         End If
  154.         p = p + 1
  155.     End If
  156. Next scan
  157. Me.Caption = "JOS 3 - " & Trim(p) & " connection(s)"
  158. End Sub
  159. Private Sub Form_Load()
  160. acc.LocalPort = 23
  161. acc.Bind
  162. acc.Listen
  163. Crt = Chr(10) & Chr(13)
  164. End Sub
  165. Private Sub Form_Unload(Cancel As Integer)
  166. Dim TM As Single
  167. TM = InputBox("Shutdown in how many seconds?", "JOServer")
  168. BroadcastKillMessage TM
  169. Cancel = 1
  170. End Sub
  171. Private Sub pol_Close(Index As Integer)
  172. ' locate who index is assigned to
  173. For scan = 1 To 35
  174.     If Ac_Sock(scan) = Index Then
  175.         refid = scan
  176.         Exit For
  177.     End If
  178. Next scan
  179. ConsolePrint pol(Index) & "(" & Ac_Name(refid) & ") has disconnected."
  180. Ac_Name(refid) = Empty
  181. Ac_Input(refid) = Empty
  182. Ac_Host(refid) = Empty
  183. Ac_What(refid) = Empty
  184. Ac_Sock(refid) = Empty
  185. Ac_WFT(refid) = Empty
  186. Ac_RelDir(refid) = Empty
  187. pol(Index).Close
  188. Update
  189. End Sub
  190. Sub SendFile(ByVal filename As String, ByVal person As Integer)
  191. If InStr(1, filename, ":") Then
  192. Else
  193. filename = App.Path & "" & filename
  194. End If
  195. On Error GoTo ErrSpot
  196. Open filename For Input As #1
  197. Do
  198.     If EOF(1) Then Exit Do
  199.     Line Input #1, temp
  200.     Send temp & Chr(10) & Chr(13), person
  201. Loop
  202. Close #1
  203. ErrSpot:
  204. End Sub
  205. Sub Send(ByVal text As String, ByVal person As Integer)
  206. ' Simple send, sends text directly to whoever person
  207. ' person is an integer referring to the person
  208. On Error GoTo blah
  209. If Ac_Name(person) = "" Then Exit Sub
  210. pol(Ac_Sock(person)).SendData text
  211. blah:
  212. Exit Sub
  213. End Sub
  214. Private Sub pol_DataArrival(Index As Integer, ByVal bytesTotal As Long)
  215. pol(Index).GetData text, vbString
  216. ' find what index is assigned to
  217. For scan = 1 To 35
  218.     If Ac_Sock(scan) = Index Then
  219.         refid = scan
  220.         Exit For
  221.     End If
  222. Next scan
  223. stack = ""
  224. ' ?!
  225. If refid = 0 Then
  226.     pol(Index).Close
  227.     Exit Sub
  228. End If
  229. For H = 1 To Len(text)
  230.     pg = Mid(text, H, 1)
  231.     If pg = Chr(13) Then
  232.         
  233.         ' ---- Commands that can be used once logged in ----
  234.         If Ac_What(refid) = "prompt" Then
  235.             reason = "command not found"
  236.             Ac_Input(refid) = Trim(Ac_Input(refid))
  237.             Send Crt, 1
  238.             If Ac_Input(refid) = Empty Then goodcom = True
  239.                         
  240.             For scan = 1 To Len(Ac_Input(refid))
  241.                 If Mid(Ac_Input(refid), scan, 1) = " " Then
  242.                     i_command = Mid(Ac_Input(refid), 1, scan - 1)
  243.                     i_arg = Mid(Ac_Input(refid), scan + 1, 100)
  244.                     Exit For
  245.                 End If
  246.             Next scan
  247.             If i_command = "" Then i_command = Ac_Input(refid)
  248.             If Ac_WFT(refid) = True Then
  249.             WaitText = i_command & " " & i_arg
  250.             Else
  251.             goodcom = CommandParse(i_command, i_arg, True, refid)
  252.             End If
  253.             ' log 'em out
  254.             
  255.                         
  256.             ' shutdown
  257.                        
  258.             ' who
  259.                         
  260.             If goodcom = False Then
  261.                 stack = stack & vbCrLf & i_command & ": " & reason & Crt
  262.             End If
  263.             
  264.             Ac_Input(refid) = Empty
  265.             If Ac_WFT(refid) = False Then
  266.             stack = stack & Ac_Name(refid) & "@" & ServerName & " " & JustFile2(Form1.folders(refid).Path) & "> "
  267.             Send stack, refid
  268.             End If
  269.             Exit Sub
  270.         End If
  271.         
  272.         
  273.         If Ac_What(refid) = "login" Then
  274.             If Ac_Input(refid) = Empty Then
  275.                 stack = stack & Crt
  276.                 stack = stack & Crt
  277.                 stack = stack & ServerName & " login> "
  278.                 
  279.                 Send stack, refid
  280.                 Exit Sub
  281.             End If
  282.             Ac_Name(refid) = Ac_Input(refid)
  283.             Ac_Input(refid) = Empty
  284.             stack = stack & Crt
  285.             stack = stack & "Password: "
  286.             Ac_What(refid) = "password"
  287.             Send stack, refid
  288.             Exit Sub
  289.         End If
  290.         
  291.         If Ac_What(refid) = "password" Then
  292.             Open App.Path & "filesusers.txt" For Input As #1
  293.             Do
  294.                 If EOF(1) Then Exit Do
  295.                 Line Input #1, temp
  296.                 If Mid(temp, 1, 1) <> "#" Then
  297.                     G = 0
  298. rscan:
  299.                     For scan = 1 To Len(temp)
  300.                         If Mid(temp, scan, 1) = "," Then
  301.                             G = G + 1
  302.                             If G = 1 Then
  303.                                 load_name = Mid(temp, 1, scan - 1)
  304.                                 temp = Mid(temp, scan + 1, 100)
  305.                                 GoTo rscan
  306.                             End If
  307.                             If G = 2 Then
  308.                                 load_password = Mid(temp, 1, scan - 1)
  309.                                 temp = Mid(temp, scan + 1, 100)
  310.                                 GoTo rscan
  311.                             End If
  312.                             If G = 3 Then
  313.                                 load_su = Mid(temp, 1, scan - 1)
  314.                                 temp = Mid(temp, scan + 1, 100)
  315.                             End If
  316.                             
  317.                             If Check1.Value = False Then
  318.                             
  319.                                 If load_name = Ac_Name(refid) Then
  320.                                     If load_password = Ac_Input(refid) Then
  321.                                         stack = stack & Crt
  322.                                         stack = stack & "Login approved." & Crt & Crt
  323.                                         ConsolePrint pol(Index).RemoteHostIP & " validated as " & Ac_Name(refid)
  324.                                         stack = stack & Ac_Name(refid) & "@" & ServerName & " " & JustFile2(Form1.folders(refid).Path) & "> "
  325.                                         Ac_What(refid) = "prompt"
  326.                                         Ac_Input(refid) = Empty
  327.                                         Ac_SuperUser(refid) = False
  328.                                         If load_su = "1" Then
  329.                                             Ac_SuperUser(refid) = True
  330.                                         End If
  331.                                         
  332.                                         Close #1
  333.                                         Send stack, refid
  334.                                         Update
  335.                                         Exit Sub
  336.                                     End If
  337.                                     Ac_Input(refid) = Empty
  338.                                 End If
  339.                         Else
  340.                             Send "This server is currently not accepting connections", refid
  341.                             End If
  342.                         End If
  343.                     Next scan
  344.                 End If
  345.             Loop
  346.             Close #1
  347.             
  348.             Ac_Input(refid) = Empty
  349.             
  350.             
  351.             
  352.             stack = stack & Crt
  353.             stack = stack & "Login incorrect" & Crt & Crt
  354.             stack = stack & ServerName & " login>"
  355.             Send stack, refid
  356.             
  357.             Ac_What(refid) = "login"
  358.             Exit Sub
  359.         End If
  360.     End If
  361.     
  362.     
  363.     If pg = Chr(8) Then
  364.         If Ac_Input(refid) <> "" Then
  365.             Ac_Input(refid) = Mid(Ac_Input(refid), 1, Len(Ac_Input(refid)) - 1)
  366.             If Ac_What(refid) <> "password" Then
  367.                 Send Chr(8) & " " & Chr(8), refid
  368.             End If
  369.         End If
  370.         Exit Sub
  371.     End If
  372.     
  373.     If pg = Chr(21) Then
  374.         If Ac_Input(refid) <> "" Then
  375.             For G = 1 To Len(Ac_Input(refid))
  376.                 Send Chr(8) & " " & Chr(8), refid
  377.             Next G
  378.         End If
  379.         Ac_Input(refid) = ""
  380.         Exit Sub
  381.     End If
  382.     
  383.     
  384.     If Ac_What(refid) <> "password" Then
  385.         Send pg, refid
  386.     End If
  387.     If Ac_What(refid) = "wft" Then
  388.         WaitText = WaitText & text
  389.     End If
  390.     
  391.     Ac_Input(refid) = Ac_Input(refid) & pg
  392. Next H
  393. End Sub
  394. Private Sub pol_Error(Index As Integer, ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
  395. On Error Resume Next
  396. ' locate who index is assigned to
  397. For scan = 1 To 35
  398.     If Ac_Sock(scan) = Index Then
  399.         refid = scan
  400.         Exit For
  401.     End If
  402. Next scan
  403. Ac_Name(refid) = Empty
  404. Ac_Input(refid) = Empty
  405. Ac_Host(refid) = Empty
  406. Ac_What(refid) = Empty
  407. Ac_Sock(refid) = Empty
  408. Ac_RelDir(refid) = Empty
  409. pol(Index).Close
  410. Update
  411. End Sub
  412. Public Function WaitForText(refid) As String
  413. Ac_Input(refid) = ""
  414. Ac_WFT(refid) = True
  415. Do
  416. DoEvents
  417. Loop Until WaitText <> ""
  418. WaitForText = WaitText
  419. WaitText = ""
  420. Ac_WFT(refid) = False
  421. End Function
  422. Sub RootManPage(cmd As String)
  423. On Error Resume Next
  424. Dim TempVar As String
  425. Open "filesman" & cmd & ".txt" For Input As #1
  426. While EOF(1) = False
  427. Line Input #1, TempVar
  428. ConsolePrint TempVar
  429. Wend
  430. Close #1
  431. End Sub