Cross Platform VPN Config Request - lmkelly/Autoguard GitHub Wiki

cc0865f0f61511eabb6f09369c5986b0 map

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.