An ASP.NET Core application to host your own private small-scale upload system. You can upload your files and share them with customers, friends, etc...
Built-in data retention. Secure. Fast.
To build the project ensure you have:
- .NET Core 2.2 SDK installed
- Node.js 8.0 or higher installed and in PATH
- Powershell 4 or higher
To build the project simply run:
build
If you want to publish for a platform (win10-x64 for instance), run:
build --target=Publish-Win10
To query for build targets:
build --showdescription
To deploy the application, take the published files and install them under IIS or run the IFS.Web
executable directly.
Ensure to give the application pool permissions to load its user profile.
In appsettings.json
you can configure various settings, for instance where files are stored.
The application supports simple static authentication for upload and administration using a predefined password in the configuration file, or you can use OpenID Connect so users can login using authentication systems like AD FS.
For both authentication systems you can set a help text in the LoginHelpText
setting.
There are two settings under the /Authentication/Static
node:
Passphrase
: Used for uploads.Administration
:UserName
andPassword
for the administration console.
Connect to an OpenID / OAuth provider like AD FS.
Settings under the /Authentication/OpenIdConnect
node: ClientSecret
, ClientId
, MetadataAddress
, Authority
, Enable
.
In your OpenID server configure <url>/oidc_sigin_admin
and <url>/oidc_sigin_upload
as login urls.
Roles:
RoleClaims
: For each role in the system (currently only Administrator
), two keys:
ClaimType
: The type of claim sent by the OpenID server.Value
: The contents of the claim to match and assign the given role to.
Additional claims:
ClaimMapping
: To allow IFS to pre-fill some information you can enter the claims sent by the OpenID server.
Email
: Claim type for pre-filling the e-mail address.Value
: Claim type for pre-filling the sender display name.
The system can lock users out which attempt too many logins or enter too many wrong passwords in file downloads. This currently works on IP address.
Settings under Fail2Ban
:
DebounceTime
: A time string: the time after a IP-based lock-out is reset.MaximumAttempts
: The number of password attempts until the ban is enforced for the duration ofDebounceTime
.
Configure where and how the uploaded files are stored.
Settings under FileStore
:
StorageDirectory
: The directory where the files and their metadata is placed.MaximumFileSize
: The maximum uploadable file size in MB. If IFS is hosted behind IIS you can't set this higher then 4096 MB. This is an IIS limitation.