Example #1
0
        static void UpdateDatabase()
        {
            // Update database
            Console.WriteLine();
            logger.Info("Updating database");

            var iCryptoService = AnonimizeProvider.GetInstance().GetCryptoService();

            logger.Warn($"CryptoService: {iCryptoService.GetType().Name}");

            if (iCryptoService is BaseSymmetricCryptoService cryptoService)
            {
                if (string.IsNullOrWhiteSpace(xConfig.Iv))
                {
                    logger.Warn("Using default Anonimize:Iv");
                }
                else
                {
                    logger.Warn($"Anonimize:Iv: '{xConfig.Iv}'");
                }

                if (string.IsNullOrWhiteSpace(xConfig.Key))
                {
                    logger.Warn("Using default Anonimize:Key");
                }
                else
                {
                    logger.Warn($"Anonimize:Key: '{xConfig.Key}'");
                }
            }

            logger.Warn("Connection: {0}", xConfig.ConnectionString);

            RunUpdateService(new DatabaseUpdateService(jConfig, xConfig));
        }
        public void ShouldProvideAnonimizeServiceSingleton()
        {
            var instance = AnonimizeProvider.GetInstance();

            Assert.IsNotNull(instance);

            var otherInstance = AnonimizeProvider.GetInstance();

            Assert.IsNotNull(otherInstance);

            Assert.AreEqual(instance, otherInstance, "Sequenced calls to {0}.{1} should provide the same {2}",
                            typeof(AnonimizeProvider).Name, nameof(AnonimizeProvider.GetInstance), typeof(Services.AnonimizeService).Name);
        }
Example #3
0
        public override void ReadXmlDocument()
        {
            base.ReadXmlDocument();

            connectionString = GetConnectionString(Document, CONNECTION_NAME);
            if (!connectionString.EndsWith(";", StringComparison.Ordinal))
            {
                connectionString += ";";
            }
            connectionString += CONNECTION_STRING_POSFIX;

            var anonimize   = AnonimizeProvider.GetInstance();
            var serviceName = GetAppSetting(Document, "Anonimize:CryptoService");

            if (!string.IsNullOrEmpty(serviceName))
            {
                serviceName = serviceName.ToUpperInvariant().Trim();

                if (serviceName.StartsWith("AES"))
                {
                    anonimize.SetCryptoService(new AesCryptoService());
                }
                else if (serviceName.StartsWith("TRIPLEDES"))
                {
                    anonimize.SetCryptoService(new TripleDESCryptoService());
                }
            }

            var iCryptoService = anonimize.GetCryptoService();

            if (iCryptoService is BaseSymmetricCryptoService cryptoService)
            {
                iv = GetAppSetting(Document, "Anonimize:Iv");
                if (!string.IsNullOrWhiteSpace(iv))
                {
                    cryptoService.SetIV(iv);
                }

                key = GetAppSetting(Document, "Anonimize:Key");
                if (!string.IsNullOrWhiteSpace(key))
                {
                    cryptoService.SetIV(key);
                }
            }
        }
Example #4
0
 public void Init()
 {
     anonimizeService = AnonimizeProvider.GetInstance();
 }
Example #5
0
        protected override bool UpdateTable(Table table)
        {
            if (!table.Columns.Any())
            {
                logger.Info("No columns for table `{0}`", table.Name);
                return(true);
            }

            var items = (IEnumerable <IDictionary <string, object> >)dbContext.ReadAll(table.NameSnakeCase);

            if (!items.Any())
            {
                logger.Info("No actions needed for table `{0}`", table.NameSnakeCase);
                return(true);
            }

            var modelItem = items.First();

            if (!modelItem.ContainsKey(table.PrimaryKey))
            {
                logger.Warn("Missing primary key `{0}` of table `{1}`", table.PrimaryKey, table.NameSnakeCase);
                return(false);
            }

            foreach (var column in table.Columns)
            {
                if (!modelItem.ContainsKey(column.Name))
                {
                    logger.Warn("Missing column `{0}` of table `{1}`", column.Name, table.NameSnakeCase);
                    return(false);
                }
            }

            var schemas = dbContext.GetTableSchema(table.NameSnakeCase).Where(q => q.RequiresUpdate());

            var columnsToAlter = new List <string>();

            foreach (var column in table.Columns)
            {
                if (schemas.Where(q => q.ColumnName == column.Name).Any())
                {
                    columnsToAlter.Add(column.Name);
                }
            }

            if (columnsToAlter.Any())
            {
                logger.Info($"Altering table `{table.NameSnakeCase}`");
                columnsToAlter.ForEach(column => logger.Info($"Altering column `{table.NameSnakeCase}`.`{column}`"));
                dbContext.AlterTable(table.NameSnakeCase, columnsToAlter);
            }


            logger.Info("Updating table `{0}` with total count of {1}", table.NameSnakeCase, items.Count());

            var anonimize     = AnonimizeProvider.GetInstance();
            var cryptoService = anonimize.GetCryptoService();

            foreach (var item in items)
            {
                logger.Debug("Anonimizing `{0}`.`{1}` = {2}", table.NameSnakeCase, table.PrimaryKey, item[table.PrimaryKey]);

                var primaryKey = new Tuple <string, int>(table.PrimaryKey, (int)item[table.PrimaryKey]);
                var columns    = new Dictionary <string, string>();

                foreach (var column in table.Columns)
                {
                    var updateColumn   = false;
                    var decryptedValue = item[column.Name];
                    var encryptedValue = (string)decryptedValue;

                    if (decryptedValue != null && !decryptedValue.IsEncrypted())
                    {
                        logger.Debug("Encrypting field {0}", column.Name);
                        encryptedValue = cryptoService.Encrypt(decryptedValue);
                        updateColumn   = true;
                    }
                    else if (decryptedValue == null)
                    {
                        logger.Debug("Field {0} is null", column.Name);
                    }
                    else
                    {
                        logger.Debug("Field {0} was previously encrypted", column.Name);
                    }

                    if (updateColumn)
                    {
                        columns.Add(column.Name, encryptedValue);
                    }
                }

                if (columns.Any())
                {
                    dbContext.Update(table.NameSnakeCase, columns, primaryKey);
                }
                else
                {
                    logger.Debug("No updates needed for `{0}`.`{1}` = {2}", table.NameSnakeCase, table.PrimaryKey, item[table.PrimaryKey]);
                }
            }

            return(true);
        }
Example #6
0
 protected AEncryptedType()
 {
     defaultType   = typeof(T);
     cryptoService = AnonimizeProvider.GetInstance().GetCryptoService();
 }
Example #7
0
 protected AEncryptedType()
 {
     cryptoService = AnonimizeProvider.GetInstance().GetCryptoService();
 }