No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

FTP-DGAC-SYS.vb 19KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320
  1. Imports System.IO
  2. Imports System.Net.NetworkInformation
  3. Imports System.Net.Sockets
  4. Imports System.Text
  5. Public Class FTP_DGAC_SYS
  6. Dim FTP位置, file_name, strDirName As String
  7. Dim 刪除數, 位置1, 總數, N1, N2, N3, N4, N5, N6, N7 As Integer
  8. Dim Strs As String = Application.StartupPath
  9. Dim Str As String = Application.StartupPath
  10. Private Sub FTP_DGAC_SYS_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  11. Panel1.SendToBack() : 位置1 = -1
  12. 捷徑_dgv.RowsDefaultCellStyle.Font = New System.Drawing.Font("微軟正黑體", 7.6)
  13. 捷徑_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  14. 捷徑_dgv.ColumnHeadersHeight = 25 : 捷徑_dgv.AllowUserToAddRows = False
  15. 捷徑_dgv.RowTemplate.Height = 20 : 捷徑_dgv.Columns(0).FillWeight = 30
  16. 捷徑_dgv.Columns(0).ReadOnly = True
  17. 剔除清單_dgv.RowsDefaultCellStyle.Font = New System.Drawing.Font("微軟正黑體", 7.6)
  18. 剔除清單_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  19. 剔除清單_dgv.ColumnHeadersHeight = 25 : 剔除清單_dgv.AllowUserToAddRows = False
  20. 剔除清單_dgv.RowTemplate.Height = 20 : 剔除清單_dgv.Columns(0).FillWeight = 30
  21. 剔除清單_dgv.Columns(0).ReadOnly = True
  22. End Sub
  23. Private Sub FTP_DGAC_SYS_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
  24. SQL_連線字串_國外() : Dim ds1 As New DataSet
  25. 清單1_dgv.DataSource = Nothing : ds1.Clear()
  26. 清單1_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  27. 清單1_dgv.ColumnHeadersHeight = 25 : 清單1_dgv.AllowUserToAddRows = False : 清單1_dgv.RowTemplate.Height = 35
  28. SQL_伺服器檢測()
  29. da.Fill(ds1) : 清單1_dgv.DataSource = ds1.Tables(0) : conn.Close()
  30. For I As Integer = 0 To 清單1_dgv.Rows.Count - 1 : 清單1_dgv.Rows(I).Cells("次數").Value = "0" : Next
  31. '--------------自動循環---------------------------------------------------------------------
  32. If File.Exists(Strs & "\OPAUTO.CSV") Then : 自動循環_ch.Checked = True : Else : 自動循環_ch.Checked = False : End If
  33. '--------------類計數量---------------------------------------------------------------------
  34. If File.Exists(Str + "\DLNUD.CSV") Then
  35. Dim filereader = My.Computer.FileSystem.OpenTextFileReader(Str + "\DLNUD.CSV", System.Text.Encoding.Default)
  36. Dim Text As String = "" : Dim line As String = filereader.ReadLine()
  37. While Not (line Is Nothing) : Text = Text & line & vbCrLf : line = filereader.ReadLine() : End While : filereader.Close()
  38. 計數_nud.Value = Text
  39. Else
  40. 計數_nud.Value = 0
  41. End If
  42. '--------------FTP位置---------------------------------------------------------------------
  43. If File.Exists(Str + "\FTPLINE.CSV") Then
  44. Dim filereader = My.Computer.FileSystem.OpenTextFileReader(Str + "\FTPLINE.CSV", System.Text.Encoding.Default)
  45. Dim Text As String = "" : Dim line As String = filereader.ReadLine()
  46. While Not (line Is Nothing) : Text = Text & line & vbCrLf : line = filereader.ReadLine() : End While : filereader.Close()
  47. 計算分流1.Enabled = True : 計算分流2.Enabled = True : 停頓1.Enabled = True
  48. Else
  49. If FolderBrowserDialog1.ShowDialog = DialogResult.OK Then
  50. FTP位置 = FolderBrowserDialog1.SelectedPath
  51. Dim strDirName As String
  52. If File.Exists(Strs & "\FTPLINE.CSV") Then : File.Delete(Strs & "\FTPLINE.CSV") : End If
  53. strDirName = Strs & "\FTPLINE.CSV"
  54. Try
  55. Using fs As IO.FileStream = New IO.FileStream(strDirName, FileMode.Append)
  56. Using sw As StreamWriter = New StreamWriter(fs, Encoding.Default)
  57. Dim strd As String = FTP位置
  58. sw.WriteLine(strd) '插入一整行
  59. sw.Flush()
  60. End Using
  61. End Using
  62. Catch ex As Exception
  63. End Try
  64. 計算分流1.Enabled = True : 計算分流2.Enabled = True : 停頓1.Enabled = True
  65. Else
  66. MsgBox("請先選擇資料夾路徑!!")
  67. End If
  68. End If : 確定LINE伺服器開通() : 伺服器上線檢測開始() : 計算分流3.Enabled = True
  69. End Sub
  70. Private Sub FTP_DGAC_SYS_Closing(sender As Object, e As EventArgs) Handles MyBase.Closing
  71. If File.Exists(Strs & "\DLNUD.CSV") Then : File.Delete(Strs & "\DLNUD.CSV") : End If
  72. strDirName = Strs & "\DLNUD.CSV"
  73. Try
  74. Using fs As IO.FileStream = New IO.FileStream(strDirName, FileMode.Append)
  75. Using sw As StreamWriter = New StreamWriter(fs, Encoding.Default)
  76. Dim str As String
  77. str = 計數_nud.Value : sw.WriteLine(str) : sw.Flush()
  78. End Using
  79. End Using
  80. Catch ex As Exception
  81. End Try
  82. End Sub
  83. Private Sub 自動運行_Tick(sender As Object, e As EventArgs) Handles 自動運行.Tick
  84. 運行自動刪除()
  85. End Sub
  86. Private Sub 停頓1_Tick(sender As Object, e As EventArgs) Handles 停頓1.Tick
  87. If 自動循環_ch.Checked = True Then : 運行自動刪除() : 自動運行.Enabled = True : End If
  88. 停頓1.Enabled = False
  89. End Sub
  90. Dim 伺服器是否正常 As Boolean
  91. Private Sub 計算分流3_Tick(sender As Object, e As EventArgs) Handles 計算分流3.Tick
  92. If 伺服器是否正常 = True Then : 確定LINE伺服器開通() : 伺服器上線檢測開始() : Else : 計算分流3.Enabled = False : End If
  93. End Sub
  94. Private Sub 確定LINE伺服器開通()
  95. Dim ip As String = "106.1.49.218"
  96. Dim ports As String() = "2433".Split(","c)
  97. For Each portStr As String In ports : Dim port As Integer
  98. If Integer.TryParse(portStr.Trim(), port) Then
  99. Dim isPortOpen As Boolean = CheckPort(ip, port) : Dim result As String
  100. If isPortOpen = True Then : result = "LINE 訊息通知伺服器 正常" : Else : result = "LINE 訊息通知伺服器 異常" : End If
  101. If result = "LINE 訊息通知伺服器 正常" Then : 伺服器是否正常 = True : Else : 伺服器是否正常 = False : End If
  102. Else : 伺服器是否正常 = False : End If
  103. Next
  104. End Sub
  105. Private Sub 伺服器上線檢測開始()
  106. If 伺服器是否正常 = True Then
  107. Dim 伺服器 As String
  108. If File.Exists(Str + "\SERVERNAME.CSV") Then
  109. Dim filereader = My.Computer.FileSystem.OpenTextFileReader(Str + "\SERVERNAME.CSV", System.Text.Encoding.Default)
  110. Dim Text As String = "" : Dim line As String = filereader.ReadLine()
  111. While Not (line Is Nothing) : Text = Text & line : line = filereader.ReadLine() : End While : filereader.Close()
  112. 伺服器 = Text
  113. Else
  114. 伺服器 = ""
  115. End If
  116. For i As Integer = 0 To 清單1_dgv.Rows.Count - 1
  117. If 清單1_dgv.Rows(i).Cells("模式").Value.ToString <> "" Then
  118. Try
  119. IP位置 = 清單1_dgv.Rows(i).Cells("IP").Value.ToString & "," & 清單1_dgv.Rows(i).Cells("端口").Value.ToString
  120. 模式 = 清單1_dgv.Rows(i).Cells("模式").Value.ToString
  121. SQL_連線字串_檢測()
  122. ConnOpen_檢測() : SQL1 = "SELECT 確認 FROM 確認表" : CmdSet_For_dr()
  123. If dr.Read Then
  124. 清單1_dgv.Rows(i).Cells("次數").Value = "0"
  125. Else
  126. 清單1_dgv.Rows(i).Cells("次數").Value = "0"
  127. End If
  128. Catch ex As Exception
  129. 清單1_dgv.Rows(i).Cells("次數").Value = CInt(清單1_dgv.Rows(i).Cells("次數").Value) + 1
  130. If CInt(清單1_dgv.Rows(i).Cells("次數").Value.ToString) > 2 Then
  131. LIN訊息通知("CC259", "李協叡", 伺服器 & "]、[" & 清單1_dgv.Rows(i).Cells("名稱").Value.ToString, "連線異常")
  132. LIN訊息通知("CC259", "王詩文", 伺服器 & "]、[" & 清單1_dgv.Rows(i).Cells("名稱").Value.ToString, "連線異常")
  133. LIN訊息通知("CC259", "蘇秀虹", 伺服器 & "]、[" & 清單1_dgv.Rows(i).Cells("名稱").Value.ToString, "連線異常")
  134. End If
  135. End Try
  136. End If
  137. Next
  138. Else : 計算分流3.Enabled = False : End If
  139. End Sub
  140. Private Function CheckPort(host As String, port As Integer) As Boolean
  141. Try
  142. Using client As New TcpClient()
  143. Dim result = client.BeginConnect(host, port, Nothing, Nothing)
  144. Dim success = result.AsyncWaitHandle.WaitOne(TimeSpan.FromSeconds(3))
  145. If success Then : client.EndConnect(result) : Return True : End If
  146. End Using
  147. Catch ex As Exception
  148. End Try : Return False
  149. End Function
  150. Private Sub 計算分流1_Tick(sender As Object, e As EventArgs) Handles 計算分流1.Tick
  151. 計算分流1.Enabled = False
  152. If File.Exists(Str + "\FTPLINE.CSV") Then
  153. Dim filereader = My.Computer.FileSystem.OpenTextFileReader(Str + "\FTPLINE.CSV", System.Text.Encoding.Default)
  154. Dim line As String = filereader.ReadLine()
  155. While Not (line Is Nothing) : FTP位置 = line : line = filereader.ReadLine() : End While
  156. filereader.Close()
  157. End If
  158. FTP主要位置_tb.Text = FTP位置 : N1 = 0 : N2 = 0 : N3 = 0 : N4 = 0 : N5 = 0 : N6 = 0
  159. 路徑暫存1_cb.Items.Clear() : 路徑暫存2_cb.Items.Clear() : 路徑暫存3_cb.Items.Clear()
  160. 路徑暫存4_cb.Items.Clear() : 路徑暫存5_cb.Items.Clear() : 路徑暫存6_cb.Items.Clear()
  161. For Each foundFile As String In My.Computer.FileSystem.GetDirectories(FTP位置)
  162. 路徑暫存1_cb.Items.Add(foundFile) : N1 += 1
  163. Next
  164. For i = 1 To N1 : For Each foundFile As String In My.Computer.FileSystem.GetDirectories(路徑暫存1_cb.Items(i - 1).ToString)
  165. 路徑暫存2_cb.Items.Add(foundFile) : N2 += 1 : Next
  166. Next
  167. For i = 1 To N2 : For Each foundFile As String In My.Computer.FileSystem.GetDirectories(路徑暫存2_cb.Items(i - 1).ToString)
  168. 路徑暫存3_cb.Items.Add(foundFile) : N3 += 1 : Next
  169. Next
  170. For i = 1 To N3 : For Each foundFile As String In My.Computer.FileSystem.GetDirectories(路徑暫存3_cb.Items(i - 1).ToString)
  171. 路徑暫存4_cb.Items.Add(foundFile) : N4 += 1 : Next
  172. Next
  173. For i = 1 To N4 : For Each foundFile As String In My.Computer.FileSystem.GetDirectories(路徑暫存4_cb.Items(i - 1).ToString)
  174. 路徑暫存5_cb.Items.Add(foundFile) : N5 += 1 : Next
  175. Next
  176. For i = 1 To N5 : For Each foundFile As String In My.Computer.FileSystem.GetDirectories(路徑暫存5_cb.Items(i - 1).ToString)
  177. 路徑暫存6_cb.Items.Add(foundFile) : N6 += 1 : Next
  178. Next
  179. 總數 = N1 + N2 + N3 + N4 + N5 + N6
  180. If N6 > 0 Then : MsgBox("子資料夾可能不只有四級,層級不足!!") : End If
  181. For i As Integer = 0 To 捷徑_dgv.Rows.Count - 1 : 捷徑_dgv.Rows.RemoveAt(0) : Next
  182. For i As Integer = 0 To 總數 - 1 : 捷徑_dgv.Rows.Insert(0) : Next
  183. For i As Integer = 0 To N1 - 1
  184. 捷徑_dgv.Rows(i).Cells(0).Value = 路徑暫存1_cb.Items(i).ToString
  185. Next
  186. For i As Integer = N1 To N1 + N2 - 1
  187. 捷徑_dgv.Rows(i).Cells(0).Value = 路徑暫存2_cb.Items(i - N1).ToString
  188. Next
  189. For i As Integer = N1 + N2 To N1 + N2 + N3 - 1
  190. 捷徑_dgv.Rows(i).Cells(0).Value = 路徑暫存3_cb.Items(i - (N1 + N2)).ToString
  191. Next
  192. For i As Integer = N1 + N2 + N3 To N1 + N2 + N3 + N4 - 1
  193. 捷徑_dgv.Rows(i).Cells(0).Value = 路徑暫存4_cb.Items(i - (N1 + N2 + N3)).ToString
  194. Next
  195. For i As Integer = N1 + N2 + N3 + N4 To N1 + N2 + N3 + N4 + N5 - 1
  196. 捷徑_dgv.Rows(i).Cells(0).Value = 路徑暫存5_cb.Items(i - (N1 + N2 + N3 + N4)).ToString
  197. Next
  198. For i As Integer = N1 + N2 + N3 + N4 + N5 To N1 + N2 + N3 + N4 + N5 + N6 - 1
  199. 捷徑_dgv.Rows(i).Cells(0).Value = 路徑暫存6_cb.Items(i - (N1 + N2 + N3 + N4 + N5)).ToString
  200. Next
  201. End Sub
  202. Private Sub 計算分流2_Tick(sender As Object, e As EventArgs) Handles 計算分流2.Tick
  203. 計算分流2.Enabled = False
  204. N7 = 0
  205. If File.Exists(Str + "\FTPDELETE.CSV") Then
  206. Dim filereader = My.Computer.FileSystem.OpenTextFileReader(Str + "\FTPDELETE.CSV", System.Text.Encoding.Default)
  207. Dim line As String = filereader.ReadLine()
  208. While Not (line Is Nothing)
  209. line = filereader.ReadLine()
  210. If line Is Nothing Then : Else : 剔除清單_cb.Items.Add(line.ToString) : N7 += 1 : End If
  211. End While
  212. filereader.Close()
  213. End If
  214. If 剔除清單_dgv.Rows.Count > 1 Then
  215. For i As Integer = 0 To 剔除清單_dgv.Rows.Count - 1 : 剔除清單_dgv.Rows.RemoveAt(0) : Next
  216. End If
  217. If N7 > 1 Then
  218. For i As Integer = 0 To N7 - 1 : 剔除清單_dgv.Rows.Insert(0) : Next
  219. End If
  220. For i As Integer = 0 To N7 - 1
  221. 剔除清單_dgv.Rows(i).Cells(0).Value = 剔除清單_cb.Items(i).ToString
  222. Next
  223. End Sub
  224. Private Sub 剔除清單_dgv_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles 剔除清單_dgv.CellClick
  225. If e.RowIndex = -1 Then : Else : 位置1 = e.RowIndex : End If
  226. End Sub
  227. Private Sub 讀取料夾路徑_bt_Click(sender As Object, e As EventArgs) Handles 讀取料夾路徑_bt.Click
  228. If FolderBrowserDialog1.ShowDialog = DialogResult.OK Then
  229. FTP位置 = FolderBrowserDialog1.SelectedPath
  230. If File.Exists(Strs & "\FTPLINE.CSV") Then : File.Delete(Strs & "\FTPLINE.CSV") : End If
  231. strDirName = Strs & "\FTPLINE.CSV"
  232. Try
  233. Using fs As IO.FileStream = New IO.FileStream(strDirName, FileMode.Append)
  234. Using sw As StreamWriter = New StreamWriter(fs, Encoding.Default)
  235. Dim strd As String = FTP位置
  236. sw.WriteLine(strd) '插入一整行
  237. sw.Flush()
  238. End Using
  239. End Using
  240. Catch ex As Exception : End Try : 計算分流1.Enabled = True
  241. Else : MsgBox("請先選擇資料夾路徑!!") : End If
  242. End Sub
  243. Private Sub 加入剔除檔案_bt_Click(sender As Object, e As EventArgs) Handles 加入剔除檔案_bt.Click
  244. If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
  245. file_name = OpenFileDialog1.SafeFileName
  246. Else : file_name = "" : End If
  247. If file_name <> "" Then
  248. 剔除清單_dgv.Rows.Insert(0) : 剔除清單_dgv.Rows(0).Cells(0).Value = file_name
  249. Dim SELE As Boolean = False
  250. If 剔除清單_dgv.Rows.Count - 1 > 0 Then : SELE = True : End If
  251. If SELE = True Then : 剔除檔案存檔() : End If
  252. Else : End If
  253. End Sub
  254. Private Sub 刪除剔除檔案_bt_Click(sender As Object, e As EventArgs) Handles 刪除剔除檔案_bt.Click
  255. If 位置1 <> -1 And 位置1 > 剔除清單_dgv.Rows.Count Then : MsgBox("沒有選擇剃除檔案!!")
  256. Else : 剔除清單_dgv.Rows.Insert(位置1) : 位置1 = -1 : 剔除檔案存檔() : End If
  257. End Sub
  258. Private Sub 剔除檔案存檔()
  259. If File.Exists(Strs & "\FTPDELETE.CSV") Then : File.Delete(Strs & "\FTPDELETE.CSV") : End If
  260. strDirName = Strs & "\FTPDELETE.CSV"
  261. Try
  262. Using fs As IO.FileStream = New IO.FileStream(strDirName, FileMode.Append)
  263. Using sw As StreamWriter = New StreamWriter(fs, Encoding.Default)
  264. Dim str As String
  265. str = "******************" : sw.WriteLine(str)
  266. For I As Integer = 0 To 剔除清單_dgv.Rows.Count - 1
  267. str = 剔除清單_dgv.Rows(I).Cells(0).Value : sw.WriteLine(str) '插入一整行
  268. Next : sw.Flush()
  269. End Using
  270. End Using
  271. Catch ex As Exception
  272. End Try ': 計算分流2.Enabled = True
  273. End Sub
  274. Private Sub 自動循環_ch_CheckedChanged(sender As Object, e As EventArgs) Handles 自動循環_ch.Click
  275. If 自動循環_ch.Checked = False Then
  276. If File.Exists(Strs & "\OPAUTO.CSV") Then : File.Delete(Strs & "\OPAUTO.CSV") : End If
  277. Else
  278. If File.Exists(Strs & "\OPAUTO.CSV") Then : File.Delete(Strs & "\OPAUTO.CSV") : End If
  279. strDirName = Strs & "\OPAUTO.CSV"
  280. Try
  281. Using fs As IO.FileStream = New IO.FileStream(strDirName, FileMode.Append)
  282. Using sw As StreamWriter = New StreamWriter(fs, Encoding.Default)
  283. Dim str As String
  284. str = "******************" : sw.WriteLine(str) : sw.Flush()
  285. End Using
  286. End Using
  287. Catch ex As Exception : End Try
  288. End If
  289. End Sub
  290. Private Sub 運行自動刪除()
  291. If 捷徑_dgv.Rows.Count > 0 And 剔除清單_dgv.Rows.Count > 0 And FTP主要位置_tb.Text <> "" Then
  292. For ii As Integer = 0 To 剔除清單_dgv.Rows.Count - 1
  293. If File.Exists(FTP主要位置_tb.Text & "\" & 剔除清單_dgv.Rows(ii).Cells(0).Value.ToString) Then
  294. File.Delete(FTP主要位置_tb.Text & "\" & 剔除清單_dgv.Rows(ii).Cells(0).Value.ToString) : 刪除數 += 1
  295. End If
  296. Next
  297. For i As Integer = 0 To 捷徑_dgv.Rows.Count - 1
  298. For ii As Integer = 0 To 剔除清單_dgv.Rows.Count - 1
  299. If File.Exists(捷徑_dgv.Rows(i).Cells(0).Value.ToString & "\" & 剔除清單_dgv.Rows(ii).Cells(0).Value.ToString) Then
  300. File.Delete(捷徑_dgv.Rows(i).Cells(0).Value.ToString & "\" & 剔除清單_dgv.Rows(ii).Cells(0).Value.ToString) : 刪除數 += 1
  301. End If
  302. Next
  303. Next : 計數_nud.Value += 刪除數
  304. Else : MsgBox("系統基礎設定尚未完成!!") : End If
  305. If 自動循環_ch.Checked = True Then
  306. 通知_lb.Text = "☆☆☆☆☆☆☆☆☆☆ 已自動運行 ☆☆☆☆☆☆☆☆☆☆" : 通知_lb.ForeColor = Color.Green
  307. Else
  308. 通知_lb.Text = "☆☆☆☆☆☆☆☆☆☆ 未自動運行 ☆☆☆☆☆☆☆☆☆☆" : 通知_lb.ForeColor = Color.Red
  309. End If
  310. End Sub
  311. Private Sub 運行自動刪除_bt_Click(sender As Object, e As EventArgs) Handles 運行自動刪除_bt.Click
  312. If 自動循環_ch.Checked = True Then : 運行自動刪除() : 自動運行.Enabled = True : Else : 運行自動刪除() : MsgBox("可疑檔案刪除完成!!") : End If
  313. 確定LINE伺服器開通() : 伺服器上線檢測開始() : 計算分流3.Enabled = True
  314. End Sub
  315. Private Sub 計數歸零_bt_Click(sender As Object, e As EventArgs) Handles 計數歸零_bt.Click
  316. 計數_nud.Value = 0
  317. End Sub
  318. End Class