Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace Server
- {
- public partial class Service1 : ServiceBase
- {
- private readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
- string flagFile = @"D:FlagFile\flag.txt";
- byte[] b1;// Buffer for reading data
- int bytesNum = 20;//Number of byts to readwrite since it's a flag.txt file we don't need too much byts
- TcpListener server;
- TcpClient client;
- const int PORT = 8100; //Set the selected port
- IPAddress localAddr = IPAddress.Parse("127.0.0.1");
- Thread incomingConnection, fileCheck;
- public Service1()
- {
- InitializeComponent();
- }
- protected override void OnStart(string[] args)
- {
- server = new TcpListener(localAddr, PORT);
- // Start listening for client requests.
- server.Start();
- log.Info("Server logged in");
- //This thread should go every X time to check if flag.txt and to delete it if exists
- fileCheck = new Thread(fileChecker);
- fileCheck.Start();
- incomingConnection = new Thread(inConnection);
- incomingConnection.Start();
- }
- private void inConnection()
- {
- //Always listen for client
- while (true)
- {
- client = server.AcceptTcpClient();
- Stream s = client.GetStream();
- b1 = new byte[bytesNum];
- s.Read(b1, 0, b1.Length);
- log.Info("Server received file: ");
- File.WriteAllBytes(flagFile, b1); //server.Stop(); // client.Close();
- }
- }
- //Sparete thread, his job is to alaways check the target folder
- public void fileChecker()
- {
- while (true)
- {
- Thread.Sleep(20000);
- if (File.Exists(flagFile))
- {
- File.Delete(flagFile);
- log.Info("Server deleted the flag file: ");
- }
- else
- {
- log.Warn("The file hasn't reached for a while!!!: ");
- //Send email and report the problem
- sendMail();
- break;
- }
- }
- }
- private void sendMail()
- {
- SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
- client.EnableSsl = true;
- client.Timeout = 10000;
- client.DeliveryMethod = SmtpDeliveryMethod.Network;
- client.UseDefaultCredentials = false;
- client.Credentials = new NetworkCredential("examplename20@gmail.com", "examplename2099");
- MailMessage msg = new MailMessage();
- msg.To.Add("nehoraielbaz@gmail.com");
- msg.From = new MailAddress("examplename20@gmail.com");
- msg.Subject = "Flag file error";
- msg.Body = "Flag file hasn't reached for a while.";
- client.Send(msg);
- log.Info("Email sent to report the problem");
- }
- protected override void OnStop()
- {
- log.Info("Server logged out");
- if (client != null)
- {
- client.GetStream().Close();
- client.Close();
- server.Stop();
- }
- incomingConnection.Abort();
- fileCheck.Abort();
- Environment.Exit(0);
- }
- }
- }
Add Comment
Please, Sign In to add comment