ZennoDroid Enterprise | Админ панель

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 447
Благодарностей
823
Баллы
113
Всем доброго времени суток.

Конкурсная работа будет состоять из 3х частей.


Объяснение, для чего вообще нужна эта панель.

Демонстрация.

Инструкция, как это всё запустить у себя.



Первая часть.
Во время работы с большим количеством физических устройств, прокси и разных проектов встал вопрос организации единого места хранения всей этой информации. Очевидным и лучшим средством является база данных, там можно и информации об устроствах записать сколько хочешь в удобном формате и заодно добавить статусы для работы в многопотоке. Ну и конечно всем этим управлять хотелось по человечески а не через sql запросы, в итоге была написана админ панель. Панель нужна для добавления информации о физических устройсвах, прокси и проектах в БД и удобного управления ими.


Вторая часть.

131079

Сама панель состоит из 3х вкладок

Проекты

131080

Тут осуществляется добавление и удаление ваших проектов, так же происходит автоматическая транслитерация названия, нужно это все для привязки добавленных телефонов и прокси к конкретным проектам что в дальнейшем позволяет получать прокси и устройства относящиеся к ним. Первый проект (Любой) это проект по умолчанию.

Телефоны

131081

На этой вкладке происходит добавление устройств и управление ими. Следует обратить внимание на поле "Устройство ", сюда надо вписывать значение из поля "Устройство"в менеджере устройств ZDE, название тоже можете от туда взять, что бы не путаться. Тут так же можно увидеть текущий статус устройства (free или busy), статус нужен что бы другой поток не смог взять устройство которое уже занято. Нажав соответсвующую кнопку можно изменить статус устройства или перезагрузить его (у приложения есть свой adb сервер), при первой перезагрузке надо дать доступ на телефоне для отладки.

Прокси

131088

Тут принцип такой же как у вкладки "Телефоны", добавление проксей с привязкой к проектам, в первую очередь заточено это под мобильные прокси, но можно и обычные добавить. Поля логин и пароль являются не обязательными для заполнения (для работы с прокси без авторизации), поле "url для смены ip" тоже не обязательное, если его не заполнить то очевидно что кнопка "сменить Ip" не будет работать.

В придачу я набросал шаблон с примерами кубиков для получения данных из БД куда мы все эти прокси и телефоны добавили. В нём используется библиотека System.Data.SqlClient, не забываем её из архива закинуть в ExternalAssemblies. Тут у нас созданы переменные для данных прокси и телефона.

131089

Сделано 4 кубика, для основных действий

131090
Кубик получения свободного телефона.

131091

Тут мы передаем в метод название проекта (транслитерацию с вкладки "проекты" в админ панели) в данном случае указано "all", нам даст телефон у которого указано что он для любого проекта и сменит его статус в БД на busy. Указав название какого то конкретного проекта мы получим свободный телефон у которого указан "Любой" проект или тот который указан. После получения данные устройства попадут в переменные.

131092
Переменная phone_Id это уникальный идентификатор из БД, он понадобится для освобождения телефона в следующем кубике.

131093

Кубик с прокси работает по такому же принципу как кубик с получение телефона, получаем свободную прокси для конкретного или любого проекта, и заполняем переменные проекта данными.

131094

131095

Ну и освобождение происходит так же через proxy_id.

131096

Если вы умеете работать с sql то вам этот шаблон и не пригодится, сможете сами набросать свои запросы, вот строка подключения.
Server=host.docker.internal,1436;Database=ZdeAdminPanel;User Id=sa;Password=Qwerty123;TrustServerCertificate=True;


C#:
public class Phone
{
    public int Id { get; set; }
    public string? Model { get; set; }
    public string? Device { get; set; }
    public string? Name { get; set; }
    public string? AndroidVersion { get; set; }
    public DateTime DateSetStatusBusy {  get; set; }
    public DateTime DateSetStatusFree {  get; set; }
    public DateTime DateLastReboot { get; set; }
    public string? Status { get; set; }
    [Required]
    [ForeignKey("Project")]
    public int ProjectId { get; set; }
    public virtual Project? Project { get; set; }

}

public class Project
{
    public int Id { get; set; }
    public string? Name { get; set; }
    public string? TransliterateName { get; set; }
}

public class Proxy
{
    public int Id { get; set; }
    public string? Type { get; set; }
    public string? IpPort { get; set; }
    public string? Login { get; set; }
    public string? Password { get; set; }
    public string? ChangeIpUrl { get; set; }
    public DateTime DateSetStatusBusy { get; set; }
    public DateTime DateSetStatusFree { get; set; }
    public DateTime DateLastChangeIp { get; set; }
    public string? Status { get; set; }
    public string? Country { get; set; }
    [Required]
    [ForeignKey("Project")]
    public int ProjectId { get; set; }

    public virtual Project? Project { get; set; }
}


Третья часть.

Ну а теперь расскажу как это всё поднять у себя.

1) Надо скачать и установить Docker Desktop, бесплатный тариф нам подходит, вникать и объяснять что это такое не буду, вкратце, это штука в которой можно поднимать контейнеры с приложениями, мы будем 2 контейнера поднимать, с самим веб приложением и с БД для него. Установка там не сложная, на крайний случай инструкций на ютубе много, у нас контейнеры с линуксом будут.

2) Скачать АРХИВ с панелью и файл для докера


3) Прописать команды в терминал докера, открывается терминал справа внизу

Set-Location -Path "F:\YandexDisk\ZennoLab\Конкурс\Панель" - Тут мы переходим в папку где лежит скачанный архив и yml файл, соответсвенно путь укажите свой.

docker load -i AdminPanel.tar - Эта команда импортирует образ панели в докер, после выполнения образ должен появиться на вкладке Images.

131099
docker-compose -p admin_panel up -d - Последняя команда, запускает контейнер с панелью и БД, может потребоваться время для её выполнения, там будут скачиваться образы.

131103

Панель и БД развернуты. Если в докере нажать на порт 8080 у контейнера zdeadminpanel, то откроется вкладка с панелью в браузере. Ну и естественно докер должен быть постоянно запущен в трее что бы это всё работало. Если у вас порт который я прописал (1436) для БД занят, можете открыть файл docker-compose.yml блокнотом и там этот порт исправить, так же надо будет в шаблоне порт в строке подключения изменить на тот что указали.


4)
Скачать шаблон ZDE



На этом всё. Будут вопросы по развертыванию или использованию панели, пишите, постараюсь помочь.
Ну и голосовать не забывайте, если статья оказалась полезной для вас)
 
Последнее редактирование:

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 890
Благодарностей
1 631
Баллы
113
Рекомендую прикрепить архив, вдруг со временем что-то случится с ссылкой.
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 874
Благодарностей
2 588
Баллы
113
А можно ли такую панельку запустить без Docker?
 

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 447
Благодарностей
823
Баллы
113
А можно ли такую панельку запустить без Docker?
Да способов много, как варик можно вот скачать ПАПКУ, в файле appsettings.json прописана строка подключения к БД, если mssql server установлен на компе то должно сработать без правки, запустить через ZDE_AdminPanel.exe, по умолчанию на 5000 порте будет висеть
 
  • Спасибо
Реакции: Dmitriy Ka и BAZAg

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 447
Благодарностей
823
Баллы
113

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
820
Благодарностей
567
Баллы
93
У меня после установки, докер установил нужные для себя компоненты. Теперь ZD сломался и не может запустить эмуляторы, ругается на Hyper-V, хотя он отключен.

UPD.
Менеджер LDPlayer починил, при запуске вышло уведомление, что система работает не так и предложил перенастроить. После перезагрузки, все заработало.

Но вопрос, что это было остается!
Отключение Hyper-V и Device Guard не помогало. Не понятно, что там включил Docker и что выключил LDPlayer.
 
Последнее редактирование:

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 447
Благодарностей
823
Баллы
113
У меня после установки, докер установил нужные для себя компоненты. Теперь ZD сломался и не может запустить эмуляторы, ругается на Hyper-V, хотя он отключен.

UPD.
Менеджер LDPlayer починил, при запуске вышло уведомление, что система работает не так и предложил перенастроить. После перезагрузки, все заработало.

Но вопрос, что это было остается!
Отключение Hyper-V и Device Guard не помогало. Не понятно, что там включил Docker и что выключил LDPlayer.
Странно, у меня подобного не происходило, готов предположить что это связано с виртуализацией, т.к по сути контейнеры это виртуалки, и т.к лд плеер тоже виртуализацию использует они там что-то не поделили

Отключение Hyper-V и Device Guard не помогало. Не понятно, что там включил Docker и что выключил LDPlayer.
А отключать скорее всего надо было WSL2 в настройках докера
 
Последнее редактирование:

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
820
Благодарностей
567
Баллы
93
Меня больше заинтересовала сама панель. Давно хочу научиться делать такие Вебморды!

Как я понял панель написана на ASP.Net. Была какая-то заготовка или полностью с нуля свое решение?

Что можешь посоветовать, чтобы что-то похожее реализовать(серия роликов или статьи)?
 

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 447
Благодарностей
823
Баллы
113
Меня больше заинтересовала сама панель. Давно хочу научиться делать такие Вебморды!

Как я понял панель написана на ASP.Net. Была какая-то заготовка или полностью с нуля свое решение?

Что можешь посоветовать, чтобы что-то похожее реализовать(серия роликов или статьи)?
да, это ASP.Net Core mvc приложение, с энвато элементс скачал bootstrap шаблон интерфейса который мне понравился и просто в проект его подкинул, а дальше уже логику писал и стили использовал которые хотелось. Из видео даже не знаю что порекомендовать, как минимум надо структуру MVC паттерна понимать и как там работа с контроллерами происходит, так же внедрение зависимостей (на эту тему много видео), а натянуть на всё это дело обертку в виде шаблона bootstrap пожалуй самое простое и к этому уже сам придешь как разберешься в работе внутрянки.


Я с написанием сайтов на .net по видосам этого дядьки знакомился https://www.flenov.info/plus/video/5?page=3
 
  • Спасибо
Реакции: Dmitriy Ka

Lest

Client
Регистрация
20.03.2020
Сообщения
86
Благодарностей
87
Баллы
18
Тема панелей очень интересна и не так много инфы про них на форуме. Думал как бы лучше сделать: через телегу, приложение на Qt или чём то подобном, приложение для телефона, но веб-приложение похоже лучше всего для этого подходит, нейронка скидывала код, там не так сложно как кажется.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)