Guest User

Untitled

a guest
Dec 15th, 2017
373
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.70 KB | None | 0 0
  1. namespace Server
  2. {
  3. public partial class Service1 : ServiceBase
  4. {
  5. private readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
  6. string flagFile = @"D:FlagFile\flag.txt";
  7. byte[] b1;// Buffer for reading data
  8. int bytesNum = 20;//Number of byts to readwrite since it's a flag.txt file we don't need too much byts
  9. TcpListener server;
  10. TcpClient client;
  11. const int PORT = 8100; //Set the selected port
  12. IPAddress localAddr = IPAddress.Parse("127.0.0.1");
  13. Thread incomingConnection, fileCheck;
  14.  
  15. public Service1()
  16. {
  17. InitializeComponent();
  18. }
  19.  
  20. protected override void OnStart(string[] args)
  21. {
  22. server = new TcpListener(localAddr, PORT);
  23. // Start listening for client requests.
  24. server.Start();
  25. log.Info("Server logged in");
  26. //This thread should go every X time to check if flag.txt and to delete it if exists
  27. fileCheck = new Thread(fileChecker);
  28. fileCheck.Start();
  29. incomingConnection = new Thread(inConnection);
  30. incomingConnection.Start();
  31. }
  32.  
  33. private void inConnection()
  34. {
  35. //Always listen for client
  36. while (true)
  37. {
  38. client = server.AcceptTcpClient();
  39. Stream s = client.GetStream();
  40. b1 = new byte[bytesNum];
  41. s.Read(b1, 0, b1.Length);
  42. log.Info("Server received file: ");
  43. File.WriteAllBytes(flagFile, b1); //server.Stop(); // client.Close();
  44. }
  45. }
  46.  
  47. //Sparete thread, his job is to alaways check the target folder
  48. public void fileChecker()
  49. {
  50. while (true)
  51. {
  52. Thread.Sleep(20000);
  53. if (File.Exists(flagFile))
  54. {
  55. File.Delete(flagFile);
  56. log.Info("Server deleted the flag file: ");
  57. }
  58. else
  59. {
  60. log.Warn("The file hasn't reached for a while!!!: ");
  61. //Send email and report the problem
  62. sendMail();
  63. break;
  64. }
  65. }
  66. }
  67.  
  68. private void sendMail()
  69. {
  70. SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
  71. client.EnableSsl = true;
  72. client.Timeout = 10000;
  73. client.DeliveryMethod = SmtpDeliveryMethod.Network;
  74. client.UseDefaultCredentials = false;
  75. client.Credentials = new NetworkCredential("examplename20@gmail.com", "examplename2099");
  76. MailMessage msg = new MailMessage();
  77. msg.To.Add("nehoraielbaz@gmail.com");
  78. msg.From = new MailAddress("examplename20@gmail.com");
  79. msg.Subject = "Flag file error";
  80. msg.Body = "Flag file hasn't reached for a while.";
  81. client.Send(msg);
  82. log.Info("Email sent to report the problem");
  83. }
  84.  
  85. protected override void OnStop()
  86. {
  87. log.Info("Server logged out");
  88. if (client != null)
  89. {
  90. client.GetStream().Close();
  91. client.Close();
  92. server.Stop();
  93. }
  94. incomingConnection.Abort();
  95. fileCheck.Abort();
  96. Environment.Exit(0);
  97. }
  98. }
  99. }
Add Comment
Please, Sign In to add comment