Exemple #1
0
        private void InitializeFile(ConfigurationPart part, IDictionary <string, string> query, string key)
        {
            FilePart filePart;
            int      id;

            var file = query[key] ?? "0";

            if (int.TryParse(file, out id))
            {
                if (id > 0)
                {
                    filePart = _fileService.Get(id) ?? CreateOutputFile(part);
                }
                else
                {
                    filePart = CreateOutputFile(part);
                }
            }
            else
            {
                if (file.IndexOfAny(Path.GetInvalidPathChars()) == -1 && _appDataFolder.FileExists(file))
                {
                    filePart = _fileService.Create(file);
                }
                else
                {
                    Logger.Error("File '{0}' passed into process is invalid!", file);
                    return;
                }
            }

            query[key] = filePart.FullPath;
        }
        public IEnumerable <Report> Fetch()
        {
            lock ( _synLock ) {
                if (!_appDataFolder.FileExists(_reportsFileName))
                {
                    yield break;
                }

                var text        = _appDataFolder.ReadFile(_reportsFileName);
                var xmlDocument = XDocument.Parse(text);
                var rootNode    = xmlDocument.Root;
                if (rootNode == null)
                {
                    yield break;
                }

                foreach (var reportNode in rootNode.Elements())
                {
                    var reader = new StringReader(reportNode.Value);
                    using (var xmlReader = XmlReader.Create(reader)) {
                        yield return((Report)_dataContractSerializer.ReadObject(xmlReader, true));
                    }
                }
            }
        }
Exemple #3
0
        public void Release()
        {
            _rwLock.EnterWriteLock();

            try
            {
                if (_released || !_appDataFolder.FileExists(_path))
                {
                    // nothing to do, might happen if re-granted, and already released
                    return;
                }

                _released = true;

                // check it has not been granted in the meantime
                var current = _appDataFolder.ReadFile(_path);
                if (current == _content)
                {
                    _appDataFolder.DeleteFile(_path);
                }
            }
            finally
            {
                _rwLock.ExitWriteLock();
            }
        }
        public void Monitor(Action <IVolatileToken> monitor)
        {
            if (!_appDataFolder.FileExists(fileName))
            {
                TouchFile();
            }

            monitor(_appDataFolder.WhenPathChanges(fileName));
        }
Exemple #5
0
        /// <summary>
        /// 监控动作。
        /// </summary>
        /// <param name="monitor">监控动作。</param>
        public void Monitor(Action <IVolatileToken> monitor)
        {
            if (!_appDataFolder.FileExists(FileName))
            {
                TouchFile();
            }

            Logger.Debug("监控虚拟路径 \"{0}\"", FileName);
            monitor(_appDataFolder.WhenPathChanges(FileName));
        }
Exemple #6
0
        public void Monitor(Action <IVolatileToken> monitor)
        {
            if (!_appDataFolder.FileExists(fileName))
            {
                TouchFile();
            }

            Logger.Debug("Monitoring virtual path \"{0}\"", fileName);
            monitor(_appDataFolder.WhenPathChanges(fileName));
        }
Exemple #7
0
        public void Remove(string key)
        {
            var hash = GetCacheItemFileHash(key);

            lock (String.Intern(hash)) {
                Retry(() => {
                    var filename = _appDataFolder.Combine(_metadata, hash);
                    if (_appDataFolder.FileExists(filename))
                    {
                        _appDataFolder.DeleteFile(filename);
                    }
                });

                Retry(() => {
                    var filename = _appDataFolder.Combine(_content, hash);
                    if (_appDataFolder.FileExists(filename))
                    {
                        _appDataFolder.DeleteFile(filename);
                    }
                });
            }
        }
Exemple #8
0
        private ConfigurationCache ReadConfiguration(string hash)
        {
            if (!_hostEnvironment.IsFullTrust)
            {
                return(null);
            }

            var pathName = GetPathName(_shellSettings.Name);

            if (!_appDataFolder.FileExists(pathName))
            {
                return(null);
            }

            try
            {
                var formatter = new BinaryFormatter();
                using (var stream = _appDataFolder.OpenFile(pathName))
                {
                    // if the stream is empty, stop here
                    if (stream.Length == 0)
                    {
                        return(null);
                    }

                    var oldHash = (string)formatter.Deserialize(stream);
                    if (hash != oldHash)
                    {
                        Logger.Information("The cached NHibernate configuration is out of date. A new one will be re-generated.");
                        return(null);
                    }

                    var oldConfig = (Configuration)formatter.Deserialize(stream);

                    return(new ConfigurationCache
                    {
                        Hash = oldHash,
                        Configuration = oldConfig
                    });
                }
            }
            catch (Exception e)
            {
                for (var scan = e; scan != null; scan = scan.InnerException)
                {
                    Logger.Warning("Error reading the cached NHibernate configuration: {0}", scan.Message);
                }
                Logger.Information("A new one will be re-generated.");
                return(null);
            }
        }
Exemple #9
0
 /// <summary>
 /// Creates an empty cache file if it doesn't exist already
 /// </summary>
 private void VerifyCacheFile()
 {
     if (!_appDataFolder.FileExists(DescriptorCacheFileName))
     {
         var writer = new StringWriter();
         using (var xmlWriter = XmlWriter.Create(writer)) {
             xmlWriter.WriteStartDocument();
             xmlWriter.WriteStartElement("Tenants");
             xmlWriter.WriteEndElement();
             xmlWriter.WriteEndDocument();
         }
         _appDataFolder.CreateFile(DescriptorCacheFileName, writer.ToString());
     }
 }
Exemple #10
0
        private bool IsLockedImpl(string path)
        {
            if (_appDataFolder.FileExists(path))
            {
                var content = _appDataFolder.ReadFile(path);

                DateTime creationUtc;
                if (DateTime.TryParse(content, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal, out creationUtc))
                {
                    // if expired the file is not removed
                    // it should be automatically as there is a finalizer in LockFile
                    // or the next taker can do it, unless it also fails, again
                    return(creationUtc.ToUniversalTime().Add(Expiration) > _clock.UtcNow);
                }
            }

            return(false);
        }
Exemple #11
0
        private bool IsLockedImpl(string path)
        {
            if (appDataFolder.FileExists(path))
            {
                var content = appDataFolder.ReadFile(path);

                DateTime creationUtc;
                if (DateTime.TryParse(content, out creationUtc))
                {
                    // if expired the file is not removed
                    // it should be automatically as there is a finalizer in LockFile
                    // or the next taker can do it, unless it also fails, again
                    return(creationUtc.Add(Expiration) > clock.UtcNow);
                }
            }

            return(false);
        }
 /// <summary>
 /// Creates an empty cache file if it doesn't exist already
 /// </summary>
 private void VerifyCacheFile()
 {
     if (!_appDataFolder.FileExists(DescriptorCacheFileName))
     {
         using (var writer = new StringWriter())
         {
             XmlWriterSettings settings = new XmlWriterSettings();
             settings.Encoding = Encoding.UTF8;
             using (var xmlWriter = XmlWriter.Create(writer, settings))
             {
                 xmlWriter.WriteStartDocument();
                 xmlWriter.WriteStartElement("Tenants");
                 xmlWriter.WriteEndElement();
                 xmlWriter.WriteEndDocument();
             }
             _appDataFolder.CreateFile(DescriptorCacheFileName, writer.ToString());
         }
     }
 }
        public IEnumerable <ReportEntry> Read()
        {
            if (!_appDataFolder.FileExists(_warmupReportPath))
            {
                yield break;
            }

            var warmupReportContent = _appDataFolder.ReadFile(_warmupReportPath);

            var doc = XDocument.Parse(warmupReportContent);

            foreach (var entryNode in doc.Root.Descendants("ReportEntry"))
            {
                yield return(new ReportEntry {
                    CreatedUtc = XmlConvert.ToDateTime(entryNode.Attribute("CreatedUtc").Value, XmlDateTimeSerializationMode.Utc),
                    Filename = entryNode.Attribute("Filename").Value,
                    RelativeUrl = entryNode.Attribute("RelativeUrl").Value,
                    StatusCode = Int32.Parse(entryNode.Attribute("StatusCode").Value)
                });
            }
        }
        public async Task <String> GetDataAsync(string blockName)
        {
            IAppDataFolder folder = _dataFolderFactory();
            string         file   = $@"DebugDistributedStore/{blockName}.txt";

            if (folder.FileExists(file))
            {
                string text = File.ReadAllText(file);
                return(await Task.FromResult(text));
            }
            else
            {
                using (var stream = File.Create(file))
                {
                    using (var streamWriter = new StreamWriter(stream))
                    {
                        streamWriter.Write(this.FirstCreationData);
                    }
                }
                return(await Task.FromResult(this.FirstCreationData));
            }
        }
        private string ReadFileSetting()
        {
            var content = "";

            _encryptionKeys = new Dictionary <string, string>();
            if (!_appDataFolder.FileExists(_filePath))
            {
                var key = "";
                content = "TheDefaultChannel" + ":" + key + Environment.NewLine;
                _encryptionKeys.Add("TheDefaultChannel", key);
                _appDataFolder.CreateFile(_filePath, content);
            }
            else
            {
                var filecontent = _appDataFolder.ReadFile(_filePath);
                var lines       = filecontent.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
                foreach (string line in lines)
                {
                    var keyval = line.Split(':');
                    if (keyval.Length > 1)
                    {
                        if (!string.IsNullOrEmpty(line.Substring(keyval[0].Length + 1).Trim()))
                        {
                            _encryptionKeys.Add(keyval[0], line.Substring(keyval[0].Length + 1).Trim());
                        }
                        else
                        {
                            _encryptionKeys.Add(keyval[0], "");
                        }
                    }
                }
                content = filecontent;
            }
            _lastWriteTimedUtc = _appDataFolder.GetFileLastWriteTimeUtc(_filePath);
            return(content);
        }
Exemple #16
0
        public bool AssemblyExists(string moduleName)
        {
            var path = PrecompiledAssemblyPath(moduleName);

            return(_appDataFolder.FileExists(path));
        }
Exemple #17
0
        /// <summary>
        /// 程序集是否存在。
        /// </summary>
        /// <param name="descriptor">程序集描述符。</param>
        /// <returns>true为存在,false为不存在。</returns>
        public bool AssemblyExists(AssemblyDescriptor descriptor)
        {
            var path = PrecompiledAssemblyPath(descriptor);

            return(_appDataFolder.FileExists(path));
        }
        public void EnsureGenerate()
        {
            var baseUrl = _orchardServices.WorkContext.CurrentSite.BaseUrl;
            var part    = _orchardServices.WorkContext.CurrentSite.As <WarmupSettingsPart>();

            // do nothing while the base url setting is not defined
            if (String.IsNullOrWhiteSpace(baseUrl))
            {
                return;
            }

            // prevent multiple appdomains from rebuilding the static page concurrently (e.g., command line)
            ILockFile lockFile = null;

            if (!_lockFileManager.TryAcquireLock(_lockFilename, ref lockFile))
            {
                return;
            }

            using (lockFile) {
                // check if we need to regenerate the pages by reading the last time it has been done
                // 1- if the warmup file doesn't exists, generate the pages
                // 2- otherwise, if the scheduled generation option is on, check if the delay is over
                if (_appDataFolder.FileExists(_warmupPath))
                {
                    try {
                        var warmupContent = _appDataFolder.ReadFile(_warmupPath);
                        var expired       = XmlConvert.ToDateTimeOffset(warmupContent).AddMinutes(part.Delay);
                        if (expired > _clock.UtcNow)
                        {
                            return;
                        }
                    }
                    catch {
                        // invalid file, delete continue processing
                        _appDataFolder.DeleteFile(_warmupPath);
                    }
                }

                // delete peviously generated pages, by reading the Warmup Report file
                try {
                    var encodedPrefix = WarmupUtility.EncodeUrl("http://www.");

                    foreach (var reportEntry in _reportManager.Read())
                    {
                        try {
                            // use FileName as the SiteBaseUrl could have changed in the meantime
                            var path = _appDataFolder.Combine(BaseFolder, reportEntry.Filename);
                            _appDataFolder.DeleteFile(path);

                            // delete the www-less version too if it's available
                            if (reportEntry.Filename.StartsWith(encodedPrefix, StringComparison.OrdinalIgnoreCase))
                            {
                                var filename = WarmupUtility.EncodeUrl("http://") + reportEntry.Filename.Substring(encodedPrefix.Length);
                                path = _appDataFolder.Combine(BaseFolder, filename);
                                _appDataFolder.DeleteFile(path);
                            }
                        }
                        catch (Exception e) {
                            Logger.Error(e, "Could not delete specific warmup file: ", reportEntry.Filename);
                        }
                    }
                }
                catch (Exception e) {
                    Logger.Error(e, "Could not read warmup report file");
                }

                var reportEntries = new List <ReportEntry>();

                if (!String.IsNullOrEmpty(part.Urls))
                {
                    // loop over every relative url to generate the contents
                    using (var urlReader = new StringReader(part.Urls)) {
                        string relativeUrl;
                        while (null != (relativeUrl = urlReader.ReadLine()))
                        {
                            if (String.IsNullOrWhiteSpace(relativeUrl))
                            {
                                continue;
                            }

                            string url = null;
                            relativeUrl = relativeUrl.Trim();

                            try {
                                url = VirtualPathUtility.RemoveTrailingSlash(baseUrl) + relativeUrl;
                                var filename = WarmupUtility.EncodeUrl(url.TrimEnd('/'));
                                var path     = _appDataFolder.Combine(BaseFolder, filename);

                                var download = _webDownloader.Download(url);

                                if (download != null)
                                {
                                    if (download.StatusCode == HttpStatusCode.OK)
                                    {
                                        // success
                                        _appDataFolder.CreateFile(path, download.Content);

                                        reportEntries.Add(new ReportEntry {
                                            RelativeUrl = relativeUrl,
                                            Filename    = filename,
                                            StatusCode  = (int)download.StatusCode,
                                            CreatedUtc  = _clock.UtcNow
                                        });

                                        // if the base url contains http://www, then also render the www-less one);

                                        if (url.StartsWith("http://www.", StringComparison.OrdinalIgnoreCase))
                                        {
                                            url      = "http://" + url.Substring("http://www.".Length);
                                            filename = WarmupUtility.EncodeUrl(url.TrimEnd('/'));
                                            path     = _appDataFolder.Combine(BaseFolder, filename);
                                            _appDataFolder.CreateFile(path, download.Content);
                                        }
                                    }
                                    else
                                    {
                                        reportEntries.Add(new ReportEntry {
                                            RelativeUrl = relativeUrl,
                                            Filename    = filename,
                                            StatusCode  = (int)download.StatusCode,
                                            CreatedUtc  = _clock.UtcNow
                                        });
                                    }
                                }
                                else
                                {
                                    // download failed
                                    reportEntries.Add(new ReportEntry {
                                        RelativeUrl = relativeUrl,
                                        Filename    = filename,
                                        StatusCode  = 0,
                                        CreatedUtc  = _clock.UtcNow
                                    });
                                }
                            }
                            catch (Exception e) {
                                Logger.Error(e, "Could not extract warmup page content for: ", url);
                            }
                        }
                    }
                }

                _reportManager.Create(reportEntries);

                // finally write the time the generation has been executed
                _appDataFolder.CreateFile(_warmupPath, XmlConvert.ToString(_clock.UtcNow, XmlDateTimeSerializationMode.Utc));
            }
        }
Exemple #19
0
 public void FileExistsReturnsFalseForNonExistingFile()
 {
     Assert.Equal(_appDataFolder.FileExists("notexisting"), false);
 }
 public void FileExistsReturnsFalseForNonExistingFile()
 {
     Assert.That(_appDataFolder.FileExists("notexisting"), Is.False);
 }