Opis projektu
Projekt składa się z SDK + aplikacji działającej na podstawie tego SDK, która pełni rolę serwera proxy/vpn oraz bezpośredniego serwera backconnect, do którego będzie podłączona aplikacja. Dzięki temu będzie można uzyskać dostęp do aplikacji w celu wyjścia do sieci z jego adresu IP, korzystając z różnych protokołów (HTTP/HTTPS Proxy, Socks5 Proxy (TCP/UDP), SSH Tunnel, ShadowSocks, Wire Guard VPN). W zasadzie będzie to warstwa pośrednia do połączenia z aplikacją.
Projekt składa się z następujących głównych jednostek:
1) SDK
2) Aplikacja
3) Serwer aplikacji
4) Główny serwer
5) Serwer backconnect (serwer proxy)
6) Panel administratora
Opis głównych jednostek
SDK - to biblioteka Kotlin dla aplikacji android z własnym uniwersalnym
API, które programiści, w tym my sami, będziemy mogli wdrażać w swoich aplikacjach, aby uruchomić proxy. Na przykład programista wdraża go w swojej aplikacji podczas inicjalizacji, podając unikalny identyfikator klienta i aplikacji (opisane również w punkcie główny serwer), a w zależności od ustawień w bazie danych naszego serwera kontrolnego będzie dostępna różna funkcjonalność. Podczas inicjalizacji tego SDK w parametrach musi być przekazywany identyfikator aplikacji i inne parametry, które są przechowywane w głównym serwerze w celu identyfikacji zabronionych proxy po stronie głównego serwera. Protokół, który powinien wspierać SDK z serwerem proxy - HTTP/HTTPS Proxy, Socks5 Proxy (TCP/UDP), SSH Tunnel, ShadowSocks, Wire Guard VPN.
Należy rozwiązać następujące kwestie podczas pracy SDK:
- aplikacja nie powinna łączyć się z serwerem proxy, jeśli na
telefonie uruchomiony jest VPN, powinno być czyste połączenie przez mobile lub WiFi
Aplikacja - powinna działać na podstawie SDK i serwera aplikacji, aby umożliwić użytkownikowi bezpośrednie zarabianie. Użytkownik będzie mógł stworzyć konto i uruchomić zarabianie na swoim urządzeniu, które będzie działać w tle, a przy połączeniu z jego proxy będzie otrzymywał za to pieniądze. Aplikacja powinna
współdziałać z serwerem aplikacji opisanym poniżej, a także być wspierana na wszystkich urządzeniach, w tym android TV. Wszystkie punkty opisane poniżej w podpunkcie serwer aplikacji powinny również mieć ta aplikacja.
Aplikacja powinna być napisana w języku Kotlin.
Aplikacja początkowo powinna wspierać następujące języki interfejsu:
- rosyjski
- angielski
- francuski
- niemiecki
- hiszpański
Każdy dodatkowy język powinien pojawiać się bez większych trudności, dodając plik z tłumaczeniami i przebudowując aplikację.
Autoryzacja zapytań w aplikacji będzie realizowana za pomocą pary tokenów:
● Token dostępu: standardowy token JWT - należy go przekazywać w każdym zapytaniu, gdzie wymagana jest autoryzacja zapytania w nagłówku (header) w takim formacie - Authorization: Bearer {JWT}
● Token odświeżania: losowy ciąg, który należy przekazywać w odpowiedniej metodzie API
Serwer aplikacji - ten serwer będzie bezpośrednio współdziałał z aplikacją, odpowiadając za rejestrację, autoryzację, wypłaty, a także dostarczanie treści, takich jak FAQ, wsparcie, wypłaty, wiadomości, wyświetlanie powiadomień.
Muszą być zrealizowane następujące metody API dla aplikacji:
- rejestracja z użyciem e-maila, który musi być potwierdzony dla
przyszłego logowania, a także z użyciem captcha (nie google, na przykład
cloudflare)
- logowanie do konta
- odzyskiwanie hasła z użyciem captcha (nie google, na przykład
cloudflare)
- główny ekran, włączanie/wyłączanie proxy, wyłączanie optymalizacji,
ustawienie zmiany adresu IP (na przykład przez asystenta głosowego)
- wiadomości lub wiadomości umieścić na głównym ekranie
- panel użytkownika
- FAQ
- wsparcie
- historia transakcji
- strona wypłat
- powiadomienia push, które administrator będzie mógł realizować przez
panel użytkownika
Dla panelu administratora muszą być zrealizowane następujące metody:
- lista użytkowników ze wszystkimi podstawowymi informacjami
- praca z FAQ (tworzenie, przeglądanie, usuwanie i edytowanie)
- praca z biletami (przeglądanie, korespondencja, zamykanie biletu, przeglądanie wszystkich biletów konkretnego użytkownika)
- praca z wypłatami (przeglądanie, potwierdzanie lub odrzucanie, przeglądanie wszystkich wypłat konkretnego użytkownika)
- przeglądanie połączeń (jeden użytkownik może mieć kilka telefonów i to w zasadzie połączenia wszystkich aplikacji z serwerami) i ich stan (przeglądanie wszystkich połączeń lub konkretnego użytkownika)
- przeglądanie historii połączeń i ich stan (przeglądanie wszystkich połączeń lub konkretnego użytkownika)
Serwer aplikacji - będzie współpracować z aplikacją i wspólnie z serwerem kontrolnym. Będzie realizować całą logikę opisaną powyżej, a także być punktem pośrednim do komunikacji z serwerem kontrolnym. W zasadzie na tym serwerze będzie baza użytkowników, historia zarobków, wypłat, metody API do uzyskiwania różnych informacji dla panelu administratora. Wszystkie pozostałe dane o połączeniu aplikacja będzie pobierać przez SDK z głównego serwera.
Główny serwer - to mózg systemu, który będzie współdziałał z SDK, serwerami proxy i klientami (którzy będą kupować proxy i administratorami).
Ze strony SDK przy zapytaniu o połączenie z serwerem proxy powinien on znajdować bardziej optymalny serwer proxy, używając danych GEO aplikacji i lokalizacji serwera proxy do połączenia z optymalnym serwerem proxy. Dla SDK muszą być zrealizowane niezbędne metody do prawidłowej współpracy.
Muszą być zrealizowane następujące metody API dla serwera kontrolnego:
1) dla kupujących proxy:
a) uzyskanie listy proxy
b) łączenie z proxy
c) rozłączanie proxy
d) uzyskanie stanu proxy (poniżej opisane obowiązkowe
parametry)
i) aktualny IP
ii) status połączenia
iii) wykorzystany ruch od momentu jego połączenia
e) zmiana adresu IP
2) dla panelu administratora:
a) uzyskanie listy wszystkich urządzeń online (z paginacją, ilością wszystkich proxy, id klienta, id aplikacji, adresem IP, parametrami GEO) (rola - admin)
b) uzyskanie listy historii wszystkich połączeń (rola - admin)
c) uzyskanie listy proxy konkretnego klienta (rola - klient)
d) uzyskanie listy historii połączeń z ilością
wykorzystanego ruchu proxy konkretnego klienta (rola -
klient)
e) uzyskanie statystyk dotyczących połączeń i wykorzystanego
ruchu konkretnego klienta (rola - klient)
f) metoda do rejestracji nowego użytkownika w systemie, z
podaniem e-maila, hasła, roli (rola - admin)
Kontynuacja w załączonym pliku.
Zadania można zmieniać i delegować (panel administracyjny)