Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 3
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;
}
Exemplo n.º 4
0
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;
}
Exemplo n.º 5
0
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);
  }
}
Exemplo n.º 6
0
static void
changeUserPassword(char *password)
{
  if (password) {
    strcpy(userPassword, password);
    sendLogMessage(PASSWD_CHANGE);
  }
}
Exemplo n.º 7
0
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;
}
Exemplo n.º 8
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);
  }
}
Exemplo n.º 9
0
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);
    }
}
Exemplo n.º 10
0
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;
}
Exemplo n.º 11
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;
}
Exemplo n.º 12
0
void LogServiceBase::sendLogMessage(const QByteArray &topic, Container &tx)
{
    sendLogMessage(topic, MT_LOG_MESSAGE, tx);
}
Exemplo n.º 13
0
void ImageProcessor::writeLog(QString Message, int IsError) {
  emit sendLogMessage(Message,IsError);
}