-
-## 🔑 How to use API Key?
-
-### Create API Key
-
-1. To request an API Key, simply login to your WGDashboard, go to **Settings**, scroll to the very bottom. Click the **switch** on the right to enable API Key.
-2. Click the blur **Create** button, set an **expiry date** you want or **never expire**, then click **Done**.
-
-### Use API Key
-
-- Simply add `wg-dashboard-apikey` with the value of your API key into the HTTP Header.
-
-```javascript
-fetch('http://server:10086/api/handshake', {
- headers: {
- 'content-type': 'application/json',
- 'wg-dashboard-apikey': 'insert your api key here'
- },
- method: "GET"
-})
-```
-
-## API Endpoints
-
-### Handshake to Server
-
-This endpoint is designed for a simple handshake when using API key to connect. If `status` is `true` that means
-
-#### Request
-
-`GET /api/handshake`
-
-#### Response
-
-`200 - OK`
-
-```json
-{
- "data": null,
- "message": null,
- "status": true
-}
-```
-
-`401 - UNAUTHORIZED`
-
-```json
-{
- "data": null,
- "message": "Unauthorized access.",
- "status": false
-}
-```
-> Notice: this `401` response will return at all endpoint if your API Key or session is invalid.
-
-
-
-### Validate Authentication
-
-This endpoint if needed for non-cross-server access. This will check if the cookie on the client side is still valid on the server side.
-
-#### Request
-
-`GET /api/validateAuthentication`
-
-#### Response
-
-`200 - OK`
-
-Session is still valid
-
-```json
-{
- "data": null,
- "message": null,
- "status": true
-}
-```
-
-Session is invalid
-
-```json
-{
- "data": null,
- "message": "Invalid authentication.",
- "status": false
-}
-```
-
-
-### Authenticate
-
-This endpoint is dedicated for non-cross-server access. It is used to authenticate user's username, password and TOTP
-
-#### Request
-
-`POST /api/authenticate`
-
-##### Body Parameters
-
-```json
-{
- "username": "admin",
- "password": "admin",
- "totp": "123456"
-}
-```
-
-| Parameter | Type |
-|------------|--------|
-| `username` | string |
-| `password` | string |
-| `totp` | string |
-
-
-#### Response
-
-`200 - OK`
-
-If username, password and TOTP matched
-
-```json
-{
- "data": null,
- "message": null,
- "status": true
-}
-```
-
-If username, password or TOTP is not match
-
-```json
-{
- "data": null,
- "message": "Sorry, your username, password or OTP is incorrect.",
- "status": false
-}
-```
-
-
-
-### Sign Out
-
-To remove the current session on server side
-
-#### Request
-
-`GET /api/signout`
-
-#### Response
-
-`200 - OK`
-
-```json
-{
- "data": null,
- "message": null,
- "status": true
-}
-```
-
-
-### Get WireGuard Configurations
-
-To get all WireGuard configurations in `/etc/wireguard`
-
-#### Request
-
-`GET /api/getWireguardConfigurations`
-
-#### Response
-
-`200 - OK`
-
-```json
-{
- "data": [
- {
- "Address": "10.200.200.1/24",
- "ConnectedPeers": 0,
- "DataUsage": {
- "Receive": 0.1582,
- "Sent": 2.1012999999999997,
- "Total": 2.2595
- },
- "ListenPort": "51820",
- "Name": "wg0",
- "PostDown": "iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o enp0s1 -j MASQUERADE;",
- "PostUp": "iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o enp0s1 -j MASQUERADE;",
- "PreDown": "",
- "PreUp": "",
- "PrivateKey": "8DsSMli3okgUx5frKbFQ0fMW5ZMyqyxOdOW7+g21L18=",
- "PublicKey": "GQlGi8QJ93hWY7L2xlJyh+7S6+ekER9xP11T92T0O0Q=",
- "SaveConfig": true,
- "Status": false
- }
- ],
- "message": null,
- "status": true
-}
-```
-
-
-### Add WireGuard Configuration
-
-Add a new WireGuard Configuration
-
-#### Request
-
-`POST /api/addWireguardConfiguration`
-
-##### Body Parameters
-
-```json
-{
- "ConfigurationName": "wg0",
- "Address": "10.0.0.1/24",
- "ListenPort": 51820,
- "PrivateKey": "eJuuamCgakVs2xUZGHh/g7C6Oy89JGh7eE2jjEGbbFc=",
- "PublicKey": "3Ruirgw9qNRwNpBepkiVjjSe82tY+lDZr6WaFC4wO2g=",
- "PresharedKey": "GMMLKWdJlgsKVoR26BJPsNbDXyfILL+x1Nd6Ecmn4lg=",
- "PreUp": "",
- "PreDown": "iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o enp0s1 -j MASQUERADE;",
- "PostUp": "iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o enp0s1 -j MASQUERADE;",
- "PostDown": ""
-}
-```
-
-| Parameter | Type |
-|---------------------|--------|
-| `ConfigurationName` | string |
-| `Address` | string |
-| `ListenPort` | int |
-| `PrivateKey` | string |
-| `PublicKey` | string |
-| `PresharedKey` | string |
-| `PreUp` | string |
-| `PreDown` | string |
-| `PostUp` | string |
-| `PostDown` | string |
-
-#### Response
-
-`200 - OK`
-
-If everything is good
-
-```json
-{
- "data": null,
- "message": null,
- "status": true
-}
-```
-
-If the new configuration's `ConfigurationName` is already existed
-
-```json
-{
- "data": null,
- "message": "Already have a configuration with the name \"wg0\"",
- "status": false
-}
-```
-
-If the new configuration's `ListenPort` is used by another configuration
-
-```json
-{
- "data": null,
- "message": "Already have a configuration with the port \"51820\"",
- "status": false
-}
-```
-
-If the new configuration's `Address` is used by another configuration
-
-```json
-{
- "data": null,
- "message": "Already have a configuration with the address \"10.0.0.1/24\"",
- "status": false
-}
-```
-
-
-### Toggle WireGuard Configuration
-
-To turn on/off of a WireGuard Configuration
-
-#### Request
-
-`GET /api/toggleWireguardConfiguration/?configurationName=`
-
-##### Query String Parameter
-
-| Parameter | Type |
-|---------------------|--------|
-| `configurationName` | string |
-
-#### Response
-
-`200 - OK`
-
-If toggle is successful, server will return the current status in `status`: `true` or `false` indicating if the configuration is up or not.
-
-```json
-{
- "data": true,
- "message": null,
- "status": true
-}
-```
-
-If the `configurationName` provided does not exist
-
-```json
-{
- "data": null,
- "message": "Please provide a valid configuration name",
- "status": false
-}
-```
-
-
-
-### Get WGDashboard Configuration
-
-Get the WGDashboard Configuration, such as `dashboard_theme`...
-
-#### Request
-
-`GET /api/getDashboardConfiguration`
-
-#### Response
-
-`200 - OK`
-
-```json
-{
- "data": {
- "Account": {
- "enable_totp": false,
- "password": "some hashed value :(",
- "totp_verified": false,
- "username": "admin"
- },
- "Database": {
- "type": "sqlite"
- },
- "Other": {
- "welcome_session": false
- },
- "Peers": {
- "peer_display_mode": "grid",
- "peer_endpoint_allowed_ip": "0.0.0.0/0",
- "peer_global_dns": "1.1.1.1",
- "peer_keep_alive": "21",
- "peer_mtu": "1420",
- "remote_endpoint": "192.168.2.38"
- },
- "Server": {
- "app_ip": "0.0.0.0",
- "app_port": "10086",
- "app_prefix": "",
- "auth_req": true,
- "dashboard_api_key": true,
- "dashboard_refresh_interval": "5000",
- "dashboard_sort": "status",
- "dashboard_theme": "dark",
- "version": "v4.0",
- "wg_conf_path": "/etc/wireguard"
- }
- },
- "message": null,
- "status": true
-}
-```
-
-
-
-### Update WGDashboard Configuration Item
-
-Update the WGDashboard Configuration one at a time
-
-#### Request
-
-`POST /api/updateDashboardConfigurationItem`
-
-##### Body Parameters
-
-```json
-{
- "section": "Server",
- "key": "dashboard_theme",
- "value": "dark"
-}
-```
-| Parameter | Type | |
-|-----------|--------|----------------------------------------------------------|
-| `section` | string | Each section in the `wg-dashboard.ini` |
-| `key` | string | Each key/value pair under each in the `wg-dashboard.ini` |
-| `value` | string | Value for this key/value pair |
-
-
-#### Response
-
-`200 - OK`
-
-If update is success
-
-```json
-{
- "data": true,
- "message": null,
- "status": true
-}
-```
-
-If update failed
-
-```json
-{
- "data": true,
- "message": "Message related to the error will appear here",
- "status": false
-}
-```
-
-
-
-### Get WGDashboard API Keys
-
-Get a list of active API key in WGDashboard
-
-#### Request
-
-`GET /api/getDashboardAPIKeys`
-
-#### Response
-
-`200 - OK`
-
-If API Key function is enabled and there are active API keys
-
-> If `ExpiredAt` is `null`, that means this API key will never expire
-
-```json
-{
- "data": [
- {
- "CreatedAt": "2024-08-15 00:42:31",
- "ExpiredAt": null,
- "Key": "AXt1x3TZMukmA-eSnAyESy08I14n20boppSsknHOB-Y"
- },
- {
- "CreatedAt": "2024-08-14 22:50:44",
- "ExpiredAt": "2024-08-21 22:50:43",
- "Key": "ry0Suo0BrypSMzbq0C_TjkEcgrFHHj6UBZGmC2-KI2o"
- }
- ],
- "message": null,
- "status": true
-}
-```
-
-If API key function is disabled
-
-```json
-{
- "data": null,
- "message": "Dashboard API Keys function is disabled",
- "status": false
-}
-```
-
-
-
-### Add WGDashboard API Key
-
-Add a new API Key in WGDashboard
-
-#### Request
-
-`POST /api/newDashboardAPIKey`
-
-##### Body Parameters
-
-```json
-{
- "neverExpire": false,
- "ExpiredAt": "2024-12-31 16:00:00"
-}
-```
-| Parameter | Type | |
-|---------------|--------|-----------------------------------------------------------------------------------|
-| `neverExpire` | bool | If this is `false`, please specify a date in `ExpiredAt` |
-| `ExpiredAt` | string | If `neverExpire` is `true`, this can be omitted. Format is `YYYY-MM-DD hh:mm:ss`. |
-
-#### Response
-
-`200 - OK`
-
-If success, it will return the latest list of API Keys
-
-```json
-{
- "data": [
- {
- "CreatedAt": "2024-08-15 00:42:31",
- "ExpiredAt": null,
- "Key": "AXt1x3TZMukmA-eSnAyESy08I14n20boppSsknHOB-Y"
- },
- {
- "CreatedAt": "2024-08-14 22:50:44",
- "ExpiredAt": "2024-12-31 16:50:43",
- "Key": "ry0Suo0BrypSMzbq0C_TjkEcgrFHHj6UBZGmC2-KI2o"
- }
- ],
- "message": null,
- "status": true
-}
-```
-
-If API key function is disabled
-
-```json
-{
- "data": null,
- "message": "Dashboard API Keys function is disabled",
- "status": false
-}
-```
-
-
-
-### Endpoint
-
-Description
-
-#### Request
-
-`GET`
-
-#### Response
-
-`200 - OK`
-
-```json
-{
- "data": true,
- "message": null,
- "status": true
-}
-```
-
diff --git a/docs/changelogs.md b/docs/changelogs.md
deleted file mode 100644
index cb98d36..0000000
--- a/docs/changelogs.md
+++ /dev/null
@@ -1,105 +0,0 @@
-# ⏰ Changelogs of WGDashboard
-
-#### v3.0.0 - v3.0.6.2 - Jan 18, 2022
-
-- 🎉 **New Features**
- - **Moved from TinyDB to SQLite**: SQLite provide a better performance and loading speed when getting peers! Also avoided crashing the database due to **race condition**.
- - **Added Gunicorn WSGI Server**: This could provide more stable on handling HTTP request, and more flexibility in the future (such as HTTPS support). **BIG THANKS to @pgalonza :heart:**
- - **Add Peers by Bulk:** User can add peers by bulk, just simply set the amount and click add.
- - **Delete Peers by Bulk**: User can delete peers by bulk, without deleting peers one by one.
- - **Download Peers in Zip**: User can download all *downloadable* peers in a zip.
- - **Added Pre-shared Key to peers:** Now each peer can add with a pre-shared key to enhance security. Previously added peers can add the pre-shared key through the peer setting button.
- - **Redirect Back to Previous Page:** The dashboard will now redirect you back to your previous page if the current session got timed out and you need to sign in again.
- - **Added Some [🥘 Experimental Functions](#-experimental-functions)**
-
-- 🪚 **Bug Fixed**
- - [IP Sorting range issues #99](https://github.com/donaldzou/WGDashboard/issues/99) [❤️ @barryboom]
- - [INvalid character written to tunnel json file #108](https://github.com/donaldzou/WGDashboard/issues/108) [❤️ @ikidd]
- - [Add IPv6 #91](https://github.com/donaldzou/WGDashboard/pull/91) [❤️ @pgalonza]
- - [Added MTU and PersistentKeepalive to QR code and download files #112](https://github.com/donaldzou/WGDashboard/pull/112) [:heart: @reafian]
- - **And many other bugs provided by our beloved users** :heart:
-- **🧐 Other Changes**
- - **Key generating moved to front-end**: No longer need to use the server's WireGuard to generate keys, thanks to the `wireguard.js` from the [official repository](https://git.zx2c4.com/wireguard-tools/tree/contrib/keygen-html/wireguard.js)!
- - **Peer transfer calculation**: each peer will now show all transfer amount (previously was only showing transfer amount from the last configuration start-up).
- - **UI adjustment on running peers**: peers will have a new style indicating that it is running.
- - **`wgd.sh` finally can update itself**: So now user could update the whole dashboard from `wgd.sh`, with the `update` command.
- - **Minified JS and CSS files**: Although only a small changes on the file size, but I think is still a good practice to save a bit of bandwidth ;)
-
-*And many other small changes for performance and bug fixes! :laughing:*
-
-#### v2.3.1 - Sep 8, 2021
-
-- Updated dashboard's name to **WGDashboard**!!
-
-#### v2.3 - Sep 8, 2021
-
-- 🎉 **New Features**
- - **Update directly from `wgd.sh`:** Now you can update WGDashboard directly from the bash script.
- - **Displaying Peers:** You can switch the display mode between list and table in the configuration page.
-- 🪚 **Bug Fixed**
- - [Peer DNS Validation Fails #67](issues/67): Added DNS format check. [❤️ @realfian]
- - [configparser.NoSectionError: No section: 'Interface' #66](issues/66): Changed permission requirement for `etc/wireguard` from `744` to `755`. [❤️ @ramalmaty]
- - [Feature request: Interface not loading when information missing #73](issues/73): Fixed when Configuration Address and Listen Port is missing will crash the dashboard. [❤️ @js32]
- - [Remote Peer, MTU and PersistentKeepalives added #70](pull/70): Added MTU, remote peer and Persistent Keepalive. [❤️ @realfian]
- - [Fixes DNS check to support search domain #65](pull/65): Added allow input domain into DNS. [❤️@davejlong]
-- **🧐 Other Changes**
- - Moved Add Peer Button into the right bottom corner.
-
-#### v2.2.1 - Aug 16, 2021
-
-Bug Fixed:
-- Added support for full subnet on Allowed IP
-- Peer setting Save button
-
-#### v2.2 - Aug 14, 2021
-
-- 🎉 **New Features**
- - **Add new peers**: Now you can add peers directly on dashboard, it will generate a pair of private key and public key. You can also set its DNS, endpoint allowed IPs. Both can set a default value in the setting page. [❤️ in [#44](https://github.com/donaldzou/wireguard-dashboard/issues/44)]
- - **QR Code:** You can add the private key in peer setting of your existed peer to create a QR code. Or just create a new one, dashboard will now be able to auto generate a private key and public key ;) Don't worry, all keys will be generated on your machine, and **will delete all key files after they got generated**. [❤️ in [#29](https://github.com/donaldzou/wireguard-dashboard/issues/29)]
- - **Peer configuration file download:** Same as QR code, you now can download the peer configuration file, so you don't need to manually input all the details on the peer machine! [❤️ in [#40](https://github.com/donaldzou/wireguard-dashboard/issues/40)]
- - **Search peers**: You can now search peers by their name.
- - **Autostart on boot:** Added a tutorial on how to start the dashboard to on boot! Please read the [tutorial below](#autostart-wireguard-dashboard-on-boot). [❤️ in [#29](https://github.com/donaldzou/wireguard-dashboard/issues/29)]
- - **Click to copy**: You can now click and copy all peer's public key and configuration's public key.
- - ....
-- 🪚 **Bug Fixed**
- - When there are comments in the wireguard config file, will cause the dashboard to crash.
- - Used regex to search for config files.
-- **🧐 Other Changes**
- - Moved all external CSS and JavaScript file to local hosting (Except Bootstrap Icon, due to large amount of SVG files).
- - Updated Python dependencies
- - Flask: `v1.1.2 => v2.0.1`
- - Jinja: `v2.10.1 => v3.0.1`
- - icmplib: `v2.1.1 => v3.0.1`
- - Updated CSS/JS dependencies
- - Bootstrap: `v4.5.3 => v4.6.0`
- - UI adjustment
- - Adjusted how peers will display in larger screens, used to be 1 row per peer, now is 3 peers in 1 row.
-
-#### v2.1 - Jul 2, 2021
-
-- Added **Ping** and **Traceroute** tools!
-- Adjusted the calculation of data usage on each peers
-- Added refresh interval of the dashboard
-- Bug fixed when no configuration on fresh install ([#23](https://github.com/donaldzou/wireguard-dashboard/issues/23))
-- Fixed crash when too many peers ([#22](https://github.com/donaldzou/wireguard-dashboard/issues/22))
-
-#### v2.0 - May 5, 2021
-
-- Added login function to dashboard
- - ***I'm not using the most ideal way to store the username and password, feel free to provide a better way to do this if you any good idea!***
-- Added a config file to the dashboard
-- Dashboard config can be change within the **Setting** tab on the side bar
-- Adjusted UI
-- And much more!
-
-#### v1.1.2 - Apr 3, 2021
-
-- Resolved issue [#3](https://github.com/donaldzou/wireguard-dashboard/issues/3).
-
-#### v1.1.1 - Apr 2, 2021
-
-- Able to add a friendly name to each peer. Thanks [#2](https://github.com/donaldzou/wireguard-dashboard/issues/2) !
-
-#### v1.0 - Dec 27, 2020
-
-- Added the function to remove peers
\ No newline at end of file
diff --git a/src/templates/index.html b/src/templates/index.html
deleted file mode 100644
index 1becd16..0000000
--- a/src/templates/index.html
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
- WGDashboard
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file