Example #1
0
        private static RequestSender InitTcpSender(Settings settings)
        {
            string    ip = settings.SERVER_IP;
            TcpSender tcpClient;

            try
            {
                tcpClient = new TcpSender(ip, settings.CONTROL_TCP_PORT,
                                          settings.RESPOND_TIMEOUT);
            }
            catch
            {
                MessageBox.Show("Nepodařilo se zinicializovat síťovou komunikaci, program bude ukončen.", "Chyba", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(null);
            }
            var sender = new RequestSender(tcpClient);

            sender.NetProblem           += ProgramError;
            sender.UnrecognizedResponse += ProgramError;
            sender.CryptoError          += ProgramError;
            sender.Unauthorized         += ProgramError;
            sender.AccessDenied         += ProgramError;
            sender.CannotExecute        += ProgramError;
            sender.InvalidResponse      += ProgramError;

            MasterContainer.AddService(sender);

            return(sender);
        }
Example #2
0
        private static Playback InitPlayback(Settings settings)
        {
            Playback playback;

            try
            {
                playback = new Playback((int)settings.PLAYBACK_DEV_OUT);
                if (playback.OutDevNumber < 0 || playback.OutDevNumber > playback.OutputsCount)
                {
                    ProgramOutput.Error("Cannot initialize playback, invalid output device index. Index must be between 0 and {1}.", playback.OutputsCount);
                    return(null);
                }
            }
            catch (Exception ex)
            {
                ProgramOutput.Error("Cannot initialize playback audio output, error: {0}", ex.Message);
                return(null);
            }

            MasterContainer.AddService <Playback>(playback);

            ProgramOutput.Info("Playback initialized, output set to: device index = {0} - ({1}).", playback.OutDevNumber, playback.OutName);

            return(playback);
        }
Example #3
0
        private static SessionManager InitSessionManager()
        {
            var manager = new SessionManager();

            MasterContainer.AddService <SessionManager>(manager);

            return(manager);
        }
Example #4
0
        private static TcpServer InitTcpServer(Settings settings)
        {
            var server = new TcpServer((int)settings.CONTROL_TCP_PORT);

            MasterContainer.AddService <TcpServer>(server);
            ProgramOutput.Info("TCP socket initialized, ready on port {0}.", server.Port);

            return(server);
        }
Example #5
0
        static void Main()
        {
            using (Mutex mutex = new Mutex(false, "Global\\" + appGuid))
            {
                Application.EnableVisualStyles();

                if (!mutex.WaitOne(0, false))
                {
                    MessageBox.Show("Program již na tomto počítači běží!", "Upozornění", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return;
                }

                var settings = Settings.Default;
                var sender   = InitTcpSender(settings);
                if (sender == null)
                {
                    return;
                }

#if DEBUG
                // System.Threading.Thread.Sleep(3000);
#endif
                // Get server public key to encrypt exchange request by RSA
                sender.AsymetricCrypter = GetServerKey(settings, sender);
                if (sender.AsymetricCrypter == null)
                {
                    return;
                }
                // Do symetric AES key exchange with server for the rest of the session
                bool keyExchanged = ExchangeKey(sender);
                if (!keyExchanged)
                {
                    return;
                }

                var login = new LoginForm();
                login.ShowDialog();

                if (login.Result == AuthenticationResult.Granted)
                {
                    MasterContainer.AddService(login.User);
                    Application.Run(new MainForm());
                }

                try
                {
                    sender.SendGoodbye();
                }
                catch { }
                //}
            }
        }
Example #6
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);
        }
Example #7
0
        private static IBroadcastDatabase InitDatabase(Settings settings)
        {
            string connString = string.Format(settings.SQLITE_CONN_STRING, settings.DB_FILE);
            var    db         = new SQLiteConnection(connString);
            var    database   = new SQLiteDatabase(db, (int)settings.SCHEDULER_PADDING_START, (int)settings.SCHEDULER_PADDING_END);

            database.Open();
            //database.Add(new BroadcastInfo("Kaufmann", DateTime.Now.AddMinutes(3), new TimeSpan(0, 3, 0), BroadcastType.Reservation));
            //database.Add(new BroadcastInfo("Nosková", DateTime.Now.AddMinutes(7), new TimeSpan(0, 5, 0), BroadcastType.Reservation));
            MasterContainer.AddService <IBroadcastDatabase>(database);
            ProgramOutput.Info("Database connection to {0} is up.", settings.DB_FILE);

            return(database);
        }
Example #8
0
    //public IAudioCodec Codec { get; private set; }



    public override Response Execute()
    {
        var playback = MasterContainer.GetService <Playback>();
        var reciever = new LiveBroadcastReciever(RemoteIP, Port, new PcmCodec(), playback);

        MasterContainer.AddService(reciever);
        try
        {
            reciever.RecieveLiveBroadcast();
            return(new LiveBroadcastResponse(LiveBroadcastResults.Recieving));
        }
        catch (Exception ex)
        {
            reciever.Abort();
            return(new LiveBroadcastResponse(LiveBroadcastResults.Failed, ex.Message));
        }
    }
Example #9
0
        private static BroadcastScheduler InitScheduler(Settings settins, IBroadcastDatabase db, FileStore store, Playback playback)
        {
            BroadcastScheduler scheduler;

            try
            {
                scheduler = new BroadcastScheduler(db, store, playback, (int)settins.SCHEDULER_CHECK_INTERVAL);
            }
            catch
            {
                ProgramOutput.Error("Cannot initialize scheduler. Please check the scheduler parameters in config file.");
                return(null);
            }
            MasterContainer.AddService <BroadcastScheduler>(scheduler);

            return(scheduler);
        }
Example #10
0
        private static IAuthorizator InitAuthorizator(Settings settings)
        {
            // Init LDAP authorizator
            var authorizator = InitLdap(settings, delegate(LdapCredentials creds)
            {
#if DEBUG
                var auth = new DummyAuthorizator();
#else
                var auth = new LdapAuthorizator(creds);
                auth.Connect();
#endif

                return(auth);
            });

            var authorizatorCache = new AuthorizatorCache(authorizator, (int)settings.SECURITY_CACHE_EXPIRATION);

            MasterContainer.AddService <IAuthorizator>(authorizatorCache);

            // Load LDAP permission binding from def file
            var permissionCfgFile = Properties.Settings.Default.LDAP_PERMISSION_DEF_FILE;

            string[] permissionCfg;
            try
            {
                permissionCfg = File.ReadAllLines(permissionCfgFile);
            }
            catch (Exception ex)
            {
                ProgramOutput.Error("Cannot process LDAP permission binding file {0}, because of following reason:\r\n{1}", permissionCfgFile, ex.Message);
                return(null);
            }
            try
            {
                PermissionAttributeEditor.AddAttribFromConfig(permissionCfg, LdapAuthorizator.LDAP_GROUP_ATTRIBUTE,
                                                              (groupName) => groupName.ToString());
            }
            catch
            {
                ProgramOutput.Error("Cannot process LDAP permission binding file {0}. Invalid syntax.");
                return(null);
            }
            ProgramOutput.Error("Authorizator initialized, LDAP connection to {0} up.", authorizator.ConnectedServer);

            return(authorizatorCache);
        }
Example #11
0
        private static IAuthenticator InitAuthenticator(Settings settings)
        {
            var authenticator = InitLdap(settings, delegate(LdapCredentials creds)
            {
#if DEBUG
                var auth = new DummyAuthenticator();
#else
                var auth = new LdapAuthenticator(creds);
                auth.Connect();
#endif

                return(auth);
            });
            var authenticatorCache = new AuthenticatorCache(authenticator, (int)settings.SECURITY_CACHE_EXPIRATION);

            MasterContainer.AddService <IAuthenticator>(authenticatorCache);
            ProgramOutput.Info("Authenticator initialized, LDAP connection to {0} up.", authenticator.ConnectedServer);

            return(authenticatorCache);
        }
Example #12
0
        private static bool ExchangeKey(RequestSender sender)
        {
            var sessionCrypter = new AesCrypter();

            sender.SessionCrypter = sessionCrypter;
            MasterContainer.AddService <EncryptionProvider>(sessionCrypter);
            var keyExchange         = new KeyExchangeRequest(sessionCrypter.Key);
            var keyExchangeResponse = sender.SendAndRecieve <Response>(keyExchange);

            if (keyExchangeResponse == null)
            {
                MessageBox.Show("Server neodpověděl na požadavek pro výměnu symetrického klíče. Zkontrolujte síťové připojení.", "Chyba", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(false);
            }

            if (!keyExchangeResponse.Success)
            {
                MessageBox.Show("Nepodařilo se provést výměnu šifrovacího klíče se serverm. Spojení není bezpečné. Program bude ukončen.", "Chyba", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                return(false);
            }

            return(true);
        }
Example #13
0
        private static FileStore InitFileStore(Settings settings)
        {
            string    path = settings.FILE_STORE_ROOT;
            FileStore store;

            try
            {
                store = new FileStore(path);
            }
            catch (UnauthorizedAccessException)
            {
                ProgramOutput.Error("Cannot init audio file store at location {0}. Permission denied.", path);
                return(null);
            }
            catch
            {
                ProgramOutput.Error("Cannot init audio file store at location {0}. Please check that the path is valid.", path);
                return(null);
            }
            MasterContainer.AddService <FileStore>(store);
            ProgramOutput.Info("Audio file store set to location: {0}.", store.PathRoot);

            return(store);
        }