- Регистрация
- 10.09.2021
- Сообщения
- 1 447
- Благодарностей
- 823
- Баллы
- 113
Всем доброго времени суток.
Конкурсная работа будет состоять из 3х частей.
Объяснение, для чего вообще нужна эта панель.
Демонстрация.
Инструкция, как это всё запустить у себя.
Первая часть.
Во время работы с большим количеством физических устройств, прокси и разных проектов встал вопрос организации единого места хранения всей этой информации. Очевидным и лучшим средством является база данных, там можно и информации об устроствах записать сколько хочешь в удобном формате и заодно добавить статусы для работы в многопотоке. Ну и конечно всем этим управлять хотелось по человечески а не через sql запросы, в итоге была написана админ панель. Панель нужна для добавления информации о физических устройсвах, прокси и проектах в БД и удобного управления ими.Конкурсная работа будет состоять из 3х частей.
Объяснение, для чего вообще нужна эта панель.
Демонстрация.
Инструкция, как это всё запустить у себя.
Первая часть.
Вторая часть.
Сама панель состоит из 3х вкладок
Проекты
Тут осуществляется добавление и удаление ваших проектов, так же происходит автоматическая транслитерация названия, нужно это все для привязки добавленных телефонов и прокси к конкретным проектам что в дальнейшем позволяет получать прокси и устройства относящиеся к ним. Первый проект (Любой) это проект по умолчанию.
Телефоны
На этой вкладке происходит добавление устройств и управление ими. Следует обратить внимание на поле "Устройство ", сюда надо вписывать значение из поля "Устройство"в менеджере устройств ZDE, название тоже можете от туда взять, что бы не путаться. Тут так же можно увидеть текущий статус устройства (free или busy), статус нужен что бы другой поток не смог взять устройство которое уже занято. Нажав соответсвующую кнопку можно изменить статус устройства или перезагрузить его (у приложения есть свой adb сервер), при первой перезагрузке надо дать доступ на телефоне для отладки.
Прокси
Тут принцип такой же как у вкладки "Телефоны", добавление проксей с привязкой к проектам, в первую очередь заточено это под мобильные прокси, но можно и обычные добавить. Поля логин и пароль являются не обязательными для заполнения (для работы с прокси без авторизации), поле "url для смены ip" тоже не обязательное, если его не заполнить то очевидно что кнопка "сменить Ip" не будет работать.
В придачу я набросал шаблон с примерами кубиков для получения данных из БД куда мы все эти прокси и телефоны добавили. В нём используется библиотека System.Data.SqlClient, не забываем её из архива закинуть в ExternalAssemblies. Тут у нас созданы переменные для данных прокси и телефона.
Сделано 4 кубика, для основных действий
Тут мы передаем в метод название проекта (транслитерацию с вкладки "проекты" в админ панели) в данном случае указано "all", нам даст телефон у которого указано что он для любого проекта и сменит его статус в БД на busy. Указав название какого то конкретного проекта мы получим свободный телефон у которого указан "Любой" проект или тот который указан. После получения данные устройства попадут в переменные.
Кубик с прокси работает по такому же принципу как кубик с получение телефона, получаем свободную прокси для конкретного или любого проекта, и заполняем переменные проекта данными.
Ну и освобождение происходит так же через proxy_id.
Если вы умеете работать с 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.docker-compose -p admin_panel up -d
- Последняя команда, запускает контейнер с панелью и БД, может потребоваться время для её выполнения, там будут скачиваться образы.Панель и БД развернуты. Если в докере нажать на порт 8080 у контейнера zdeadminpanel, то откроется вкладка с панелью в браузере. Ну и естественно докер должен быть постоянно запущен в трее что бы это всё работало. Если у вас порт который я прописал (1436) для БД занят, можете открыть файл docker-compose.yml блокнотом и там этот порт исправить, так же надо будет в шаблоне порт в строке подключения изменить на тот что указали.
4) Скачать шаблон ZDE
На этом всё. Будут вопросы по развертыванию или использованию панели, пишите, постараюсь помочь.
Ну и голосовать не забывайте, если статья оказалась полезной для вас)
Последнее редактирование: