public Startup(IConfiguration configuration) { Configuration = configuration; Username = Configuration.GetValue <string>("USERNAME"); Password = Configuration.GetValue <string>("PASSWORD"); BasePath = Configuration.GetValue <string>("BASE_PATH"); WebRoot = Configuration.GetValue <string>("WEB_ROOT"); ListenPort = Configuration.GetValue <int>("LISTEN_PORT", 50000); OutputDirectory = Configuration.GetValue <string>("OUTPUT_DIR"); SharedDirectory = Configuration.GetValue <string>("SHARED_DIR"); SharedCacheTTL = Configuration.GetValue <long>("SHARED_CACHE_TTL", 3600000); // 1 hour EnableDistributedNetwork = Configuration.GetValue <bool>("ENABLE_DNET", true); DistributedChildLimit = Configuration.GetValue <int>("DNET_CHILD_LIMIT", 10); DiagnosticLevel = Configuration.GetValue <DiagnosticLevel>("DIAGNOSTIC", DiagnosticLevel.Info); ConnectTimeout = Configuration.GetValue <int>("CONNECT_TIMEOUT", 5000); InactivityTimeout = Configuration.GetValue <int>("INACTIVITY_TIMEOUT", 15000); EnableSecurity = Configuration.GetValue <bool>("ENABLE_SECURITY", true); SecurityTokenTTL = Configuration.GetValue <int>("SECURITY_TOKEN_TTL", 604800000); // 7 days RoomMessageLimit = Configuration.GetValue <int>("ROOM_MESSAGE_LIMIT", 250); ReadBufferSize = Configuration.GetValue <int>("READ_BUFFER_SIZE", 16384); WriteBufferSize = Configuration.GetValue <int>("WRITE_BUFFER_SIZE", 16384); JwtSigningKey = new SymmetricSecurityKey(PBKDF2.GetKey(Password)); SharedFileCache = new SharedFileCache(SharedDirectory, SharedCacheTTL); }
/// <summary> /// Initializes a new instance of the <see cref="ShareService"/> class. /// </summary> /// <param name="optionsMonitor"></param> /// <param name="sharedFileCache"></param> public ShareService( IOptionsMonitor <Options> optionsMonitor, ISharedFileCache sharedFileCache = null) { Cache = sharedFileCache ?? new SharedFileCache(); Cache.StateMonitor.OnChange(cacheState => { var(previous, current) = cacheState; State.SetValue(state => state with { // scan is pending if faulted, or if state DIDN'T just transition from filling to not filling AND a scan was already pending ScanPending = current.Faulted || (!(previous.Filling && !current.Filling) && state.ScanPending), Scanning = current.Filling, Faulted = current.Faulted, ScanProgress = current.FillProgress, Directories = current.Directories, Files = current.Files, }); });
public Startup(IConfiguration configuration) { Configuration = configuration; Username = Configuration.GetValue <string>("USERNAME"); Password = Configuration.GetValue <string>("PASSWORD"); WebRoot = Configuration.GetValue <string>("WEBROOT"); ListenPort = Configuration.GetValue <int>("LISTEN_PORT", 50000); OutputDirectory = Configuration.GetValue <string>("OUTPUT_DIR"); SharedDirectory = Configuration.GetValue <string>("SHARED_DIR"); SharedCacheTTL = Configuration.GetValue <long>("SHARED_CACHE_TTL", 900000); // 15 minutes EnableDistributedNetwork = Configuration.GetValue <bool>("ENABLE_DNET", true); DistributedChildLimit = Configuration.GetValue <int>("DNET_CHILD_LIMIT", 10); DiagnosticLevel = Configuration.GetValue <DiagnosticLevel>("DIAGNOSTIC", DiagnosticLevel.Info); ConnectTimeout = Configuration.GetValue <int>("CONNECT_TIMEOUT", 5000); InactivityTimeout = Configuration.GetValue <int>("INACTIVITY_TIMEOUT", 15000); EnableSecurity = Configuration.GetValue <bool>("ENABLE_SECURITY", true); TokenTTL = Configuration.GetValue <int>("TOKEN_TTL", 86400000); // 24 hours JwtSigningKey = new SymmetricSecurityKey(PBKDF2.GetKey(Password)); SharedFileCache = new SharedFileCache(SharedDirectory, SharedCacheTTL); }