Cross Platform VPN Config Request - lmkelly/Autoguard GitHub Wiki
VPN Config Request Outline
Clients
Wireguard
Lightweight VPN protocol and open source client, will be used to receive config from the Backend implement it.
Cross-platform scripting Language
A scripting language which can be utilized on all applicable operating systems to collect information in the form of a configuration request to be sent to the backend.
Startup Script
A startup script which will help to facilitate the success of the main script by downloading the necessary libraries and creating directory structures as well as anything else needed to make the Main script function as intended on a specific operating system.
Windows/Mac/Linux
Because the startup script will have to run on multiple different operating systems it will need to be different for every operating system, the reason "Mac" is in orange is because I don't have access or expertise with automation on Mac devices so it may be out of the scope of my project because I'm working alone.
Main Script
The Main script may need to be tweaked slightly for every OS that it is being used on because of different directory structures, however for the most part it should function the same on all systems. It will be used to gather data from the users about their requirements for VPN connection and then send this info off to the backend where an admin can respond to it. The end goal would be to have this entire process automated somehow so it's seamless, however, because the requests need to be vetted some of the processes may need to be done by a person.
Wireguard Libraries
For the request to be sent back to the client and automatically configured into wireguard, there will need to be some kind of library linking the language used for scripting and the application.
GUI
A GUI would be optimal for the endgame of this project but it's most likely out of the scope, and the final product will be a executable script.
CLI
The executable script which runs the process.
Backend
Linux box
The backend will be run on a Linux box (most likely CentOS)
Server-side Script
A server side script with the function of responding to the clients request for config.
Automatic Response
This is almost certainly out of the scope of the project as I would need to find a way for authentication to happen without someone approving the request on the backend
Manual Response
The more likely outcome will be a manual response with VPN config by an admin.
OSTicket
OSTicket will be used to archive all the requests, this way the Admins can organize them and know which ones have been responded to and which haven't.
MySQL
The backbone for OSTicket will be a MySQL database.
Authentication/Encryption
I plan on using public/private keypairs to authenticate the transfer of all data between the client and the backend.
TLS Keypairs
The method of encryption I plan on using.