• XSS.stack #1 – первый литературный журнал от юзеров форума

Как реализовать коннект софта (c#) с сервером (php)

DeiTy

(L3) cache
Забанен
Регистрация
23.12.2018
Сообщения
282
Реакции
184
Депозит
0.001
Пожалуйста, обратите внимание, что пользователь заблокирован
Скрытый контент для зарегистрированных пользователей.

Ребят , возможно глупый вопрос но опыта подобного нету .
Допустим есть софт на шарпе , при первом запуске он посылает уникальный ключ на сервер и заносится в базу . Так я смотрю сколько копий софта было активировано / запущенно
Но как мне понять какие копии сейчас онлайн (запущенны) ?
(надеюсь смог донести суть вопроса)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Отсылать запрос каждые X минут/секунд с сигналом что бот онлайн
Если бот не отослал сигнал - бот мертв
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Отсылать запрос каждые X минут/секунд с сигналом что бот онлайн
Если бот не отослал сигнал - бот мертв
а как мне тогда выводить всех в таблице ? Ajax,om обновлять каждые 3 секунды ?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
а как мне тогда выводить всех в таблице ? Ajax,om обновлять каждые 3 секунды ?
Можно Аяксом, можно через через ещё что-либо, в зависимости от того, на чем ПУ
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Скрытое содержимое
это делается через websocket при отключении будет выполняться функция on.clouse так и поймешь
 
это делается через websocket при отключении будет выполняться функция on.clouse так и поймешь
Это не обязательно делается через WebSocket. К тому же для использования WebSocket нужна реализация этого протокола в виде либы или самому.

Но как мне понять какие копии сейчас онлайн (запущенны) ?
А все просто.
Представим, что у тебя есть 2 эндпоинта на бекенде в рамках этой задачи.
/POST url/report
/GET url/bots/:?:

Ты когда стучишь на сервер ботом на POST url/report, в момент обработки запроса сохраняй не только id бота но и создай для этого бота поле last_access, в котором будет храниться текущее серверное время. Это последнее посещение бота с таким id.
Таким образом каждая итерация отстука будет менять last_access на текущее время. Что если бот отвалится? Это поле прекратит обновляться.
Как проверить жив ли бот?
В обработчике эндпоинта /GET url/bots/:?: бери текущее серверное время и получай last_access поле у всех ботов(или у одного, если указал id), после этого считай дельту в секундах между текущим временем и last_access. Теперь предположение. Если бот запрограммирован стучать по эндпоинту репорта каждые 5 секунд, но дельта больше 10-15 секунд - делаем вывод, бот ушёл в offline. Ну и рисуем offline в таблице у бота. То есть проверка онлайн ли бот происходит на эндпоинте по получению списка ботов. При нужде, можно конечно сделать отдельный эндпоинт, который считает суммарно сколько ботов онлайн/оффлайн и обновляет их статус на основе дельты времени. Либо же ты можешь создать бекграунд таску, которая автоматически раз в какое то время делает все то, что описано выше, но без обязательного посещения какого либо эндпоинта.

Но супер-грамотным решением будет создание middleware декоратора с проверкой онлайн-офлайн для всех эндпоинтов, которые ответственны за взаимодействие с ботом. Таким образом , ты избежишь ситуаций с лишней ненужной нагрузкой в случае организации бекграунд чека(зачем просто так узнавать онлайн ли бот, это нужно делать только непосредственно перед взаимодействием с ним) и ситуаций, когда ты можешь создать случайно таск оффлайн боту, не обновив offline/online(делая обязательным посещение GET url/bots для обновления состояния ботов).
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
Реализовать эту задачу можно если твой софт будет раз в n минут отправлять на сервер определенный пакет данных, учитывая что в теме упоминается c# то для этого можно использовать методы asp.net web api.
Как выводить эти данные, очень много зависит от того где их выводить планируется, десктоп или консоль, браузер или файл.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
можно вообще делать это 2 раза при включении и выключении и то если надо тайминг считать, а так достаточно и одного раза через n минут после старта
 
Не забудь повесить всякие клауд флаеры на промежуточные домены.
т.к. как только "копия твоей программы" попадет на операционный стол реверсера - он выудит с нее айпи адрес.
так что промежуточный гейт, я считаю, должен быть в виде домена. домена за клаудом.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Не забудь повесить всякие клауд флаеры на промежуточные домены.
т.к. как только "копия твоей программы" попадет на операционный стол реверсера - он выудит с нее айпи адрес.
так что промежуточный гейт, я считаю, должен быть в виде домена. домена за клаудом.
Да если абузу кинут, клауд ее так же отошлет твоему хостеру. Но не все хостеры реагируют на это. Пару лет назад юзал домены от фринома, хост за 5$. Домены все побанили, серв до сих пор живой)) Хотя прошло суммарно около 50к логов на предатор. Домены менял раз в неделю, банили их где-то раз в месяц
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх