|
|
|
@ -24,8 +24,8 @@ declarations. Update your hecking browser.
|
|
|
|
|
|
|
|
|
|
** Backend
|
|
|
|
|
*** Prerequisites
|
|
|
|
|
- .NET core 3.1
|
|
|
|
|
- Mariadb / mysql
|
|
|
|
|
- .NET Core 3.1
|
|
|
|
|
- MariaDB / MySQL
|
|
|
|
|
|
|
|
|
|
*** .NET dependancies
|
|
|
|
|
- Nito.AsyncEX
|
|
|
|
@ -33,38 +33,47 @@ declarations. Update your hecking browser.
|
|
|
|
|
- MySql.Data
|
|
|
|
|
- Microsoft.AspNetCore.Mvc.NewtonsoftJson
|
|
|
|
|
- Microsoft.AspNetCore.StaticFiles
|
|
|
|
|
- Microsoft.AspNetCore.Razor
|
|
|
|
|
- Microsoft.EntityFrameworkCore.SqlServer
|
|
|
|
|
- Microsoft.EntityFrameworkCore.Tools
|
|
|
|
|
- Microsoft.VisualStudio.Web.CodeGeneration.Design
|
|
|
|
|
- Magick.NET-Q8-AnyCPU
|
|
|
|
|
|
|
|
|
|
*** Setup
|
|
|
|
|
1. Install .NET
|
|
|
|
|
1. Install .NET Core
|
|
|
|
|
2. Clone and build the BantFlags solution.
|
|
|
|
|
3. Create the database using [[https://github.com/C-xC-c/BantFlags/blob/master/Environment/database.sql][database.sql]].
|
|
|
|
|
+ *Change the password*.
|
|
|
|
|
+ *Change the password*.
|
|
|
|
|
4. configure =BantFlags/appsettings.example.json= with your connection
|
|
|
|
|
string and webroot (where you'll serve the flags from *without a
|
|
|
|
|
trailing /*) and rename it to =appsettings.json=
|
|
|
|
|
+ The location of the BantFlags application and the served content
|
|
|
|
|
are not necessarly the same. If you leave it empty, or provide a
|
|
|
|
|
nonexistant path the application will look for the =wwwroot=
|
|
|
|
|
folder inside the working directory.
|
|
|
|
|
+ For example, you may place =BantFlags.dll= and
|
|
|
|
|
=appsettings.json= in =/etc/bantflags/= and point =webroot= at
|
|
|
|
|
=/var/www/html= and bantflags will server static content from
|
|
|
|
|
that directory, or leave =webroot= empty and bantflags will look
|
|
|
|
|
for static content in =/etc/bantflags/wwwroot=
|
|
|
|
|
5. Add flags to the backend either by querying the database directly
|
|
|
|
|
+ The location of the BantFlags application and the served content
|
|
|
|
|
are not necessarly the same. If you leave it empty, or provide a
|
|
|
|
|
nonexistant path the application will look for the =wwwroot=
|
|
|
|
|
folder inside the working directory.
|
|
|
|
|
+ For example, you may place =BantFlags.dll= and
|
|
|
|
|
=appsettings.json= in =/etc/bantflags/= and point =webroot= at
|
|
|
|
|
=/var/www/html= and bantflags will server static content from
|
|
|
|
|
that directory, or leave =webroot= empty and bantflags will look
|
|
|
|
|
for static content in =/etc/bantflags/wwwroot=
|
|
|
|
|
5. Create a folder called =keys= in the directory you will be hosting
|
|
|
|
|
bantflags from.
|
|
|
|
|
+ E.G. =/etc/bantflags/keys/=
|
|
|
|
|
+ ASP.NET Core uses some cryptic bullshit anti forgery token when
|
|
|
|
|
processing HTML forms, and it's unable to persistantly store the
|
|
|
|
|
decryption keys in memory on GNU + Linux. This directory will
|
|
|
|
|
store said keys when you or users upload flags to /upload. The
|
|
|
|
|
path is hardcoded to =AppDomain.CurrentDomain.BaseDirectory=,
|
|
|
|
|
I.E. wherever the program is.
|
|
|
|
|
6. Add flags to the backend either by querying the database directly
|
|
|
|
|
and placing images *with the same name* in ={webroot}/flags/= or
|
|
|
|
|
by using /upload.
|
|
|
|
|
6. Configure your webserver of choice to forward requests to kestral
|
|
|
|
|
+ [[https://github.com/C-xC-c/BantFlags/blob/master/Environment/nginx.conf][Example nginx config.]]
|
|
|
|
|
7. Run with =dotnet BantFlags.dll= or create a service to run it as a
|
|
|
|
|
7. Configure your webserver of choice to forward requests to kestral
|
|
|
|
|
+ [[https://github.com/C-xC-c/BantFlags/blob/master/Environment/nginx.conf][Example nginx config.]]
|
|
|
|
|
8. Run with =dotnet BantFlags.dll= or create a service to run it as a
|
|
|
|
|
daemon.
|
|
|
|
|
+ [[https://github.com/C-xC-c/BantFlags/blob/master/Environment/bantflags.service][Example systemd service.]]
|
|
|
|
|
8. ???
|
|
|
|
|
9. profit.
|
|
|
|
|
+ [[https://github.com/C-xC-c/BantFlags/blob/master/Environment/bantflags.service][Example systemd service.]]
|
|
|
|
|
9. ???
|
|
|
|
|
10. profit.
|
|
|
|
|
|
|
|
|
|
*** Database
|
|
|
|
|
Tables look like this:
|
|
|
|
@ -100,4 +109,4 @@ The API is 1:1 compatable with all previous versions of bantflags, but
|
|
|
|
|
also encodes a new =version= variable when getting flags which allows
|
|
|
|
|
for breaking changes in the script while the backend only sends data
|
|
|
|
|
it knows is parsable. See [[https://github.com/C-xC-c/BantFlags/tree/master/Docs/][Docs/{endpoint}]]
|
|
|
|
|
for version compatibility.
|
|
|
|
|
for version compatibility.
|
|
|
|
|