Esempio n. 1
0
        private static RsaCrpyter GetServerKey(Settings settings, RequestSender sender)
        {
            string storeFile = settings.FINGERPRINT_STORE_FILE;
            var    store     = new FingerprintStore(storeFile);

            var hello         = new HelloRequest();
            var helloResponse = sender.SendAndRecieve <HelloResponse>(hello);

            if (helloResponse == null)
            {
                MessageBox.Show("Server neodpověděl na požadavek pro zaslání veřejného klíče. Zkontrolujte síťové připojení.", "Chyba", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(null);
            }

            var assymetricCrypter = new RsaCrpyter(helloResponse.CrypterConfig);

            if (!store.IsKnownFingerprint(assymetricCrypter.KeyFingerprint))
            {
                string msg = string.Format("Server se představil veřejným klíčem\r\n{0}\r\nkterý zatím není v seznamu známých hostitelů. Pokud tomuto serveru důvěřujete, přejete si klíč do seznamu přidat?", store.PrintFingerprint(assymetricCrypter.KeyFingerprint));

                var result = MessageBox.Show(msg, "Upozornění", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation);
                if (result == DialogResult.Yes)
                {
                    store.AddFingerPrint(assymetricCrypter.KeyFingerprint);
                }
                else
                {
                    return(null);
                }
            }

            return(assymetricCrypter);
        }
Esempio n. 2
0
        public static void Run()
        {
            var settings = Settings.Default;

            // Initialization
            db = InitDatabase(settings); if (db == null)
            {
                return;
            }
            authenticator = InitAuthenticator(settings); if (authenticator == null)
            {
                return;
            }
            authorizator = InitAuthorizator(settings); if (authorizator == null)
            {
                return;
            }
            playback = InitPlayback(settings); if (playback == null)
            {
                return;
            }
            store = InitFileStore(settings); if (store == null)
            {
                return;
            }
            scheduler = InitScheduler(settings, db, store, playback); if (scheduler == null)
            {
                return;
            }
            crypter = InitCrypter(settings); if (crypter == null)
            {
                return;
            }
            sessions = InitSessionManager(); if (sessions == null)
            {
                return;
            }
            server = InitTcpServer(settings); if (server == null)
            {
                return;
            }
            reciever = InitReciever(settings, server, crypter, authenticator, authorizator); if (reciever == null)
            {
                return;
            }

            ProgramOutput.Info("SERVER INITIALIZATION COMPLETED SUCCESSFULLY !!!\r\n");

            // Start server
            scheduler.StartChecking();
            ProgramOutput.Info("Scheduler started.");

            server.StartListening();
            ProgramOutput.Info("Server is listening on TCP port {0}...", server.Port);
        }
Esempio n. 3
0
 public RequestReciever(TcpServer server, RsaCrpyter asymetricCrypter, IAuthenticator authenticator, IAuthorizator authorizator)
 {
     this.server                = server;
     this.asymetricCrypter      = asymetricCrypter;
     this.authenticator         = authenticator;
     this.authorizator          = authorizator;
     this.sessions              = new SessionManager();
     this.formatter             = new NetFormatter();
     server.ClientEstablishing += Server_ClientEstablishing;
     server.DataRecieved       += Server_DataRecieved;
 }
Esempio n. 4
0
        private static RsaCrpyter InitCrypter(Settings settings)
        {
            RsaCrpyter crypter = null;
            string     keyFile = settings.KEYS_FILE;

            if (File.Exists(keyFile))
            {
                string xml = null;
                try
                {
                    ProgramOutput.Info("Loading RSA key pair from file {0}...", keyFile);
                    xml = File.ReadAllText(keyFile);
                }
                catch
                {
                    ProgramOutput.Error("Error accessing RSA key file {0}. Please check permissions to this file.", keyFile);
                    Console.ReadKey(true);
                    return(null);
                }
                try
                {
                    crypter = new RsaCrpyter(xml);
                }
                catch
                {
                    ProgramOutput.Error("Error parsing RSA key file {0}. Maybe the file is corrupted or invalid format. Please delete the file to generate new RSA key pair.", keyFile);
                    Console.ReadKey(true);
                    return(null);
                }
            }
            else
            {
                ProgramOutput.Info("Generating new RSA key pair into file {0}...", keyFile);
                crypter = new RsaCrpyter();
                string xml = crypter.GetFullXmlConfig();
                try
                {
                    File.WriteAllText(keyFile, xml);
                }
                catch
                {
                    ProgramOutput.Error("Error accessing RSA key file {0}. Please check permissions to this file.", keyFile);
                    Console.ReadKey(true);
                    return(null);
                }
            }
            MasterContainer.AddService <RsaCrpyter>(crypter);
            ProgramOutput.Info("RSA crypto module successfuly initialized.");

            return(crypter);
        }
Esempio n. 5
0
        private static RequestReciever InitReciever(Settings settings, TcpServer server, RsaCrpyter crypter, IAuthenticator authenticator, IAuthorizator authorizator)
        {
            var reciever = new RequestReciever(server, crypter, authenticator, authorizator);

            reciever.NetProblem          += LogIncident;
            reciever.UnrecognizedRequest += LogIncident;
            reciever.Unauthorized        += LogIncident;
            reciever.AccessDenied        += LogIncident;
            reciever.ExecuteError        += LogIncident;
            reciever.InvalidResponse     += LogIncident;

            return(reciever);
        }