Project Description
The project consists of an SDK + an application that operates based on this SDK, which acts as a proxy/VPN server, and a backconnect server to which the application will connect. Through it, access to the application for internet access with its IP address using multiple protocols (HTTP/HTTPS Proxy, Socks5 Proxy (TCP/UDP), SSH Tunnel, ShadowSocks, Wire Guard VPN) will be possible. Essentially, it will serve as a layer for connecting to the application.
The project consists of the following main entities:
1) SDK
2) Application
3) Application Server
4) Main Server
5) Backconnect Server (Proxy Server)
6) Admin Panel
Description of the main entities
SDK - is a Kotlin library for Android applications with its universal
API that developers, including ourselves, will be able to integrate into their applications to set up the proxy. For example, a developer integrates it into their application during initialization by specifying a unique client ID and application ID (also described in the main server section), and depending on the settings in the database of our control server, various functionalities will be available. During the initialization of this SDK, the application ID and other parameters stored in the main server for identifying prohibited proxies on the main server must be passed in the parameters. The protocols that the SDK must support with the proxy server are HTTP/HTTPS Proxy, Socks5 Proxy (TCP/UDP), SSH Tunnel, ShadowSocks, Wire Guard VPN.
The following points need to be addressed when working with the SDK:
- the application should not connect to the proxy server if a VPN is running on the phone; there should be a clean exit through mobile or WiFi.
The application - it should work based on the SDK and the application server to enable direct earnings for the user. They will be able to create an account and start earning on their device, which will run in the background, and when connecting to their proxy, they will earn money for it. The application must
interact with the application server described below, and it should be supported on all devices, including Android TV. All points described below in the application server subsection must also apply to this application.
The application must be written in Kotlin.
The application should initially support the following interface languages:
- Russian
- English
- French
- German
- Spanish
Additionally, any extra language should be added without much difficulty by adding a translation file and rebuilding the application.
Authorization requests in the application will be implemented using a pair of tokens:
● Access token: standard JWT token - it must be passed in every request where authorization is required in the header in the following format - Authorization: Bearer {JWT}
● Refresh token: a random string that must be passed in the corresponding API method.
The application server - this server will directly interact with the application, responsible for registration, authorization, payments, as well as delivering content such as FAQs, support, payments, news, and notifications.
The following API methods must be implemented for the application:
- registration using email, which must be confirmed for
future login, as well as using captcha (not Google, for example
Cloudflare)
- login to the account
- password recovery using captcha (not Google, for example
Cloudflare)
- main screen, enabling/disabling proxy, disabling optimization,
setting IP address change (as an option through a voice assistant)
- news or placing news on the main screen
- personal account
- FAQ
- support
- transaction history
- withdrawal page
- push notifications that can be sent by the administrator through
the personal account
For the admin panel, the following methods must be implemented:
- list of users with all main information
- working with FAQs (creating, viewing, deleting, and editing)
- working with tickets (viewing, correspondence, closing tickets, viewing all tickets of a specific user)
- working with withdrawals (viewing, confirming or rejecting, viewing all withdrawals of a specific user)
- viewing connections (one user can have multiple phones, and this essentially connects all applications to the servers) and their status (viewing all connections or a specific user)
- viewing connection history and their status (viewing all connections or a specific user)
The application server - will work with the application and together with the control server. It will implement all the logic described above and also serve as an intermediary point for communication with the control server. Essentially, this server will have a user database, earnings history, withdrawals, API methods for retrieving various information for the admin panel. All other connection data will be obtained by the application through the SDK from the main server.
The main server - is the brain of the system, which will interact with the SDK, proxy servers, and clients (who will purchase proxies and administrators).
From the SDK side, when requesting to connect to the proxy server, it must find the most optimal proxy server using the GEO data of the application and the location of the proxy server to connect to the optimal proxy server. Necessary methods must be implemented for the SDK for proper interaction.
The following API methods must be implemented for the control server:
1) for proxy buyers:
a) obtaining a list of proxies
b) connecting to proxies
c) disconnecting from proxies
d) obtaining the status of proxies (mandatory parameters are described below)
i) current IP
ii) connection status
iii) traffic used since connection
e) changing IP address
2) for the admin panel:
a) obtaining a list of all devices online (with pagination, total number of proxies, client ID, application ID, IP address, GEO parameters) (role - admin)
b) obtaining a list of all connection histories (role - admin)
c) obtaining a list of proxies for a specific client (role - client)
d) obtaining a list of connection histories with the amount of
traffic used by a specific client’s proxy (role - client)
e) obtaining statistics on connections and used
traffic for a specific client (role - client)
f) method for registering a new user in the system, specifying email, password, role (role - admin)
Continuation attached in the file.
Tasks can be changed and delegated (admin web panel)