Пример #1
0
        public bool Validate(string filePathToValidate, string fileNameToValidateAgainst)
        {
            AppioLogger.Info(string.Format(LoggingText.ValidatingModel, filePathToValidate, fileNameToValidateAgainst));
            var xsdToValidateAgainst = _fileSystem.LoadTemplateFile(fileNameToValidateAgainst);
            var anyErrors            = true;

            var schema = XmlSchema.Read(new StringReader(xsdToValidateAgainst), null); // ValidationEventHandler == null, because xsd is provided by APPIO, so parsing it can't go wrong

            var schemaSet = new XmlSchemaSet();

            schemaSet.Add(schema);

            var streamToValidate = _fileSystem.ReadFile(filePathToValidate);
            var xmlReader        = XmlReader.Create(streamToValidate);
            var xDocument        = XDocument.Load(xmlReader);

            xDocument.Validate(schemaSet, (o, e) =>
            {
                AppioLogger.Error(string.Format(LoggingText.ValidationError, e.Message), e.Exception);
                anyErrors = false;
            });

            streamToValidate.Close();
            streamToValidate.Dispose();

            return(anyErrors);
        }
Пример #2
0
        public override void Generate(string appName, string filePrefix, uint keySize, uint days, string organization)
        {
            var openSSLConfigBuilder =
                new StringBuilder(_fileSystem.LoadTemplateFile(Resources.Resources.OpenSSLConfigTemplateFileName));

            openSSLConfigBuilder.Replace("$KEY_SIZE", keySize.ToString());
            openSSLConfigBuilder.Replace("$ORG_NAME", organization);
            openSSLConfigBuilder.Replace("$COMMON_NAME", appName);

            var certificateFolder     = _fileSystem.CombinePaths(appName, Constants.DirectoryName.Certificates);
            var certificateConfigPath = _fileSystem.CombinePaths(certificateFolder, Constants.FileName.CertificateConfig);

            try
            {
                _fileSystem.CreateDirectory(certificateFolder);
                _fileSystem.CreateFile(certificateConfigPath, openSSLConfigBuilder.ToString());
            }
            catch (Exception)
            {
                AppioLogger.Warn(string.Format(LoggingText.CertificateGeneratorFailureNonexistentDirectory, appName));
                return;
            }

            var separator = filePrefix == string.Empty ? "" : "_";

            try
            {
                _fileSystem.CallExecutable(Constants.ExecutableName.OpenSSL, certificateFolder, string.Format(Constants.ExternalExecutableArguments.OpenSSL, filePrefix + separator, days));
                _fileSystem.CallExecutable(Constants.ExecutableName.OpenSSL, certificateFolder, string.Format(Constants.ExternalExecutableArguments.OpenSSLConvertKeyFromPEM, filePrefix + separator + Constants.FileName.PrivateKeyPEM, filePrefix + separator + Constants.FileName.PrivateKeyDER));
            }
            catch (Exception)
            {
                AppioLogger.Warn(LoggingText.CertificateGeneratorFailureOpenSSLError);
            }

            _fileSystem.DeleteFile(_fileSystem.CombinePaths(certificateFolder, filePrefix + separator + Constants.FileName.PrivateKeyPEM));
            AppioLogger.Info(string.Format(LoggingText.CertificateGeneratorSuccess, filePrefix == string.Empty ? appName : appName + "/" + filePrefix));
        }