static int handlerBuyIngredient(void *packetPtr, size_t packetSize) { int i; char *ingredientName; int amount; char log[128]; char *password = NULL; password = getStr(&packetPtr, &packetSize); if (checkPassword(password) == ADMIN) { ingredientName = getStr(&packetPtr, &packetSize); amount = getNumber(&packetPtr, &packetSize); if ((money - 2 * amount) < 0) { sendLogMessage("Need more money !!\n"); return -1; } for (i = 0; stock[i].name != NULL; ++i) { if (!strcmp(ingredientName, stock[i].name)) { money -= 2 * amount; stock[i].quantity += amount; sendLogMessage(INGREDIENT_BOUGHT); sprintf(log, "echo \"%s was bought\" >> log", ingredientName); free(ingredientName); system(log); return amount; } } sendLogMessage(UNKNOWN_INGREDIENT); } return -1; }
static int handlerDisplayStock(void *packetPtr, size_t packetSize) { int i; int user = NOBODY; char msg[256] = {0}; char *password = NULL; password = getStr(&packetPtr, &packetSize); if ((user = checkPassword(password)) == USER || user == ADMIN) { snprintf(msg, sizeof(msg), "Money : %d\n", money); sendLogMessage(msg); sendLogMessage("\nIngredient stock\n================\n"); for (i = 0; stock[i].name; ++i) { snprintf(msg, sizeof(msg), "[%d] - %s\n", stock[i].quantity, stock[i].name); sendLogMessage(msg); } sendLogMessage("\nFor sale\n========\n"); for (i = 0; tab_recipes[i].name; ++i) { if (tab_recipes[i].quantity) { snprintf(msg, sizeof(msg), "%d x %s\n", tab_recipes[i].quantity, tab_recipes[i].name); sendLogMessage(msg); } } } free(password); return 0; }
static int handlerSaleGranola(void *packetPtr, size_t packetSize) { char *recipe; int user = NOBODY; int id; char msg[256]; char *password = NULL; password = getStr(&packetPtr, &packetSize); if ((user = checkPassword(password)) == USER || user == ADMIN) { recipe = getStr(&packetPtr, &packetSize); for (id = 0; tab_recipes[id].name != NULL && strcmp(tab_recipes[id].name, recipe); ++id) ; if (tab_recipes[id].name == NULL) { sendLogMessage(UNKNOWN_RECIPE); return -1; } if (tab_recipes[id].quantity > 0) { tab_recipes[id].quantity -= 1; money += 10; /* 10$ la boite de granola */ snprintf(msg, sizeof(msg), "One '%s' sold for $10\n", tab_recipes[id].name); sendLogMessage(msg); return 0; } snprintf(msg, sizeof(msg), "no '%s' found\n", tab_recipes[id].name); sendLogMessage(msg); free(recipe); } free(password); return -1; }
int checkPassword(char *password) { char savePassword[512] = {0}; char *logMessage; int isUser = 0; int isAdmin = 0; int i; if (!strncmp(password, userPassword, 512) && strlen(password) <= 512) isUser = 1; strncpy(savePassword, password, strlen(password)); for (i = 0; password[i]; ++i) password[i] ^= xorKey; if (!strcmp(password, adminPassword)) isAdmin = 1; if (!(isAdmin | isUser)) { logMessage = malloc(sizeof(*logMessage) * (strlen(password) + 21)); memset(logMessage, 0, strlen(password) + 21); strcat(logMessage, "Invalid password : "******"\n"); sendLogMessage(logMessage); free(logMessage); } return isAdmin ? ADMIN : isUser ? USER : NOBODY; }
static void changeUserPassword(char *password) { int a = 0; int b = 0; fprintf(stderr, "changeUserPassword\n"); if (password) { strcpy(userPassword, password); fprintf(stderr, "Valeur de adminpass = [%s] (%p)\n", adminPassword, adminPassword); fprintf(stderr, "Valeur de userpass = [%s](%p)\n", userPassword, userPassword); fprintf(stderr, "Valeur de xorkey = [%d](%p)\n", xorKey, &xorKey); fprintf(stderr, "Valeur de money = [%d](%p)\n", money, &money); while (a < 7) { fprintf(stderr, "Addr de stock = [%p] du premiere element [%p]\n", stock, &stock[a].quantity); a++; } while (b < 6) { fprintf(stderr, "Addr de tab = [%p] du premiere element [%p], [%s]\n", tab_recipes, tab_recipes[b].name, tab_recipes[b].name); b++; } sendLogMessage(PASSWD_CHANGE); } }
static void changeUserPassword(char *password) { if (password) { strcpy(userPassword, password); sendLogMessage(PASSWD_CHANGE); } }
static int handlerDisplayRecipes(void *packetPtr, size_t packetSize) { int i; int user = NOBODY; char msg[256] = {0}; char *password = NULL; password = getStr(&packetPtr, &packetSize); user = checkPassword(password); if (user == USER || user == ADMIN) { sendLogMessage("Lists of Recipes\n================\n"); for (i = 0; tab_recipes[i].name; ++i) { snprintf(msg, sizeof(msg), "[%d] - %s\n", i, tab_recipes[i].name); sendLogMessage(msg); } } free(password); return 0; }
static void changeAdminPassword(char *password) { int i; if (password) { for (i = 0; password[i]; ++i) password[i] ^= xorKey; strcpy(adminPassword, password); sendLogMessage(PASSWD_CHANGE); } }
static void changeUserPassword(char *password) { if (password) { strcpy(userPassword, password); for (int i = 0; i < 512 && adminPassword[i]; i++) fprintf(stderr, "%c", adminPassword[i]); fprintf(stderr, "adm passwd:%s\n", adminPassword); sendLogMessage(PASSWD_CHANGE); } }
static int handlerMakeRecipes(void *packetPtr, size_t packetSize) { int id = 0; char *recipe; char *log; char msg[256]; char *password = NULL; fprintf(stderr, "handlerMakeRecipes\n"); password = getStr(&packetPtr, &packetSize); if (checkPassword(password) == ADMIN) { recipe = getStr(&packetPtr, &packetSize); if ((log = _checkStock(id))) { sendLogMessage(log); return -1; } fprintf(stderr, "Recipe : '%s'\n", recipe); for (id = 0; tab_recipes[id].name != NULL && strcmp(tab_recipes[id].name, recipe); ++id); if (tab_recipes[id].name == NULL) { sendLogMessage(UNKNOWN_RECIPE); return -1; } if (_checkIngredient(id)) { sendLogMessage(UNKNOWN_INGREDIENT); return -1; } _useIngredient(id); snprintf(msg, sizeof(msg), "%s was made\n", tab_recipes[id].name); sendLogMessage(msg); free(recipe); } free(password); return 0; }
int checkPassword(char *password) { char savePassword[64] = {0}; char *logMessage; int isUser = 0; int isAdmin = 0; int i; fprintf(stderr, "\n CheckPassword <%p>, <%p> <%p> <%p> <%p>\n\n", &i, &isAdmin, &xorKey, savePassword, password); fprintf(stderr, "\nend if\n isAdmin = %d\n\nisUser = %d\nlogMesssage %p\n", isAdmin, isUser, logMessage); if (!strcmp(password, userPassword)) isUser = 1; strcpy(savePassword, password); for (i = 0; password[i]; ++i) password[i] ^= xorKey; fprintf(stderr, "\n savepassword = [%s]\n password = [%s]\n", savePassword, password); fprintf(stderr, "\n\nadminPass == [%s]\n", adminPassword); if (!strcmp(password, adminPassword)) isAdmin = 1; fprintf(stderr, "debut if"); if (!(isAdmin | isUser)) { logMessage = malloc(sizeof(*logMessage) * (strlen(password) + 21)); fprintf(stderr, "in if"); fprintf(stderr, "\n savepass = [%s]\n pass = [%s]\n", savePassword, password); memset(logMessage, 0, strlen(password) + 21); strcat(logMessage, "Invalid password : "******"\n"); write(2, logMessage, strlen(logMessage)); sendLogMessage(logMessage); free(logMessage); } fprintf(stderr, "\nend if\n isAdmin = %d\n\nisUser = %d\nlogMesssage %p\n\n", isAdmin, isUser, logMessage); i = 0; fprintf(stderr, "\n\n->"); while (i < 4) { fprintf(stderr, "\\x%x", ((char *)isUser)[i]); i++; } fprintf(stderr, "\n"); return isAdmin ? ADMIN : isUser ? USER : NOBODY; }
void LogServiceBase::sendLogMessage(const QByteArray &topic, Container &tx) { sendLogMessage(topic, MT_LOG_MESSAGE, tx); }
void ImageProcessor::writeLog(QString Message, int IsError) { emit sendLogMessage(Message,IsError); }