Опис проекту
Проект являє собою SDK + додаток, що працює на основі цього SDK, який виступає в ролі проксі/vpn сервера, і безпосередньо backconnect сервера, до якого буде підключатися додаток. Через який можна буде отримати доступ до додатку для виходу в мережу з його ip адреси з використанням кількох протоколів (HTTP/HTTPS Proxy, Socks5 Proxy (TCP/UDP), SSH Tunnel, ShadowSocks, Wire Guard VPN). По суті, він буде прослойкою для підключення до додатку.
Проект складається з наступних основних сутностей:
1) SDK
2) Додаток
3) Сервер додатку
4) Main server (головний сервер)
5) Backconnect сервер (проксі сервер)
6) Кабінет адміністратора
Опис основних сутностей
SDK - це Kotlin бібліотека для android додатків з своїм універсальним
АПІ, яке розробники, в тому числі і ми самі, зможемо впроваджувати в свої додатки для підняття проксі. Наприклад, розробник впроваджує його в своє додаток при ініціалізації, вказуючи унікальний id клієнта і додатку (описано також в пункті головний сервер), і в залежності від налаштувань в базі даних нашого контрольного сервера буде доступний різний функціонал. При ініціалізації даного SDK в параметрах повинен передаватися id додатку та інші параметри, які зберігаються в головному сервері для ідентифікації заборонених проксі на стороні головного сервера. Протоколи, які повинні підтримувати SDK з проксі сервером - HTTP/HTTPS Proxy, Socks5 Proxy (TCP/UDP), SSH Tunnel, ShadowSocks, Wire Guard VPN.
Потрібно вирішити наступні моменти при роботі SDK:
- додаток не повинно підключатися до проксі сервера, якщо на
телефоні запущено VPN, повинен бути чистий вихід через mobile або WiFi
Додаток - воно повинно працювати на основі SDK і сервера додатку для можливості прямого заробітку користувачем. Він зможе створити акаунт і запускати заробіток на своєму пристрої, яке буде працювати у фоновому режимі, і при підключенні до його проксі він буде отримувати гроші за це. Додаток повинно
взаємодіяти з сервером додатку, описаним нижче, а також підтримуватися на всіх пристроях, включаючи android TV. Усі пункти, які описані нижче в підрозділі сервер додатку, повинні також мати і це додаток.
Додаток повинно бути написано на мові Kotlin.
Додаток спочатку повинно підтримувати наступні мови інтерфейсу:
- російська
- англійська
- французька
- німецька
- іспанська
Також будь-яка додаткова мова повинна з'являтися без особливих труднощів, додавши файл з перекладами і пересобравши додаток.
Авторизація запитів у додатку буде реалізована за допомогою пари токенів:
● Access token: стандартний JWT токен - його необхідно передавати в кожному запиті, де необхідна авторизація запиту в заголовку (header) в такому форматі - Authorization: Bearer {JWT}
● Refresh token: рандомна строка, яку необхідно передавати в відповідному методі API
Сервер додатку - цей сервер буде безпосередньо взаємодіяти з додатком, відповідати за реєстрацію, авторизацію, виплати, а також у віддачі контенту такого як FAQ, саппорт, виплат, новин, виводу сповіщень.
Повинні бути реалізовані наступні методи АПІ для додатку:
- реєстрація з використанням пошти, яка повинна підтвердитися для
майбутнього логіна, а також з використанням капчі (не google, наприклад
cloudflare)
- вхід в акаунт
- відновлення пароля з використанням капчі (не google, наприклад
cloudflare)
- головний екран, включення/вимкнення проксі, вимкнення оптимізації,
налаштування зміни ip адреси (як варіант через голосового помічника)
- новини або новини розмістити на головному екрані
- особистий кабінет
- FAQ
- саппорт
- історія транзакцій
- сторінка виводу коштів
- push-сповіщення, які можна буде зробити адміністратору через
особистий кабінет
Для кабінету адміністратора повинні бути реалізовані наступні методи:
- список користувачів з усією основною інформацією
- робота з faq (створення, перегляд, видалення та редагування)
- робота з тикетами (перегляд, переписка, закриття тикета, перегляд усіх тикетів конкретного користувача)
- робота з виводами (перегляд, підтвердження або відхилення, перегляд усіх виводів конкретного користувача)
- перегляд підключень (один користувач може мати кілька телефонів, і це по суті підключення всіх додатків до серверів) і їх стан (перегляд усіх підключень або конкретного користувача)
- перегляд історії підключень і їх стан (перегляд усіх підключень або конкретного користувача)
Сервер додатку - буде працювати з додатком і спільно з контрольним сервером. Буде реалізовувати всю логіку, описану вище, а також бути проміжною точкою для спілкування з контрольним сервером. По суті, на цьому сервері буде база користувачів, історія заробітку, виводів, методи АПІ для отримання різної інформації для кабінету адміністратора. Усі інші дані про підключення додаток буде брати через SDK від головного сервера.
Головний сервер - це мозок системи, який буде взаємодіяти з SDK, проксі серверами і клієнтами (які будуть купувати проксі і адміністратори).
З боку SDK при запиті на підключення до проксі серверу він повинен знаходити більш оптимальний проксі сервер, використовуючи ГЕО дані додатку і локації проксі сервера для підключення до оптимального проксі сервера. Для SDK повинні бути реалізовані необхідні методи для правильного взаємодії.
Повинні бути реалізовані наступні методи АПІ для контрольного сервера:
1) для покупців проксі:
a) отримання списку проксі
b) підключення проксі
c) відключення проксі
d) отримання стану проксі (нижче описані обов'язкові
параметри)
i) поточний ip
ii) статус підключення
iii) використаний трафік з моменту його підключення
e) зміна ip адреси
2) для кабінету адміністратора:
a) отримання списку всіх пристроїв в онлайні (з пагінацією, кількістю всіх проксі, id клієнта, id додатку, ip адресом, ГЕО параметрами) (роль - адмін)
b) отримання списку історії всіх підключень (роль - адмін)
c) отримання списку проксі конкретного клієнта (роль - клієнт)
d) отримання списку історії підключення з кількістю
використаного трафіку проксі конкретного клієнта (роль -
клієнт)
e) отримання статистики по підключенням і використаному
трафіку конкретного клієнта (роль - клієнт)
f) метод для реєстрації нового користувача в системі, з
вказівкою email, пароля, ролі (роль - адмін)
Продовження додано в файлі.
Завдання можна змінити і делегувати (веб панель адміністратора)