void UTIL_LogToFile(char* szFileName, const char *fmt, ...)
{
    va_list			argptr;
    va_start ( argptr, fmt );
    vsnprintf ( g_szLogString, sizeof(g_szLogString), fmt, argptr );
    va_end   ( argptr );

    char* szFilePath = new char[strlen(GlobalVariables::g_szDLLDirPath) + 12 + 30 + 1];
    char* szLogFile = get_timestring("_%Y%m%d.log");
    sprintf(szFilePath, "%slogs/%s%s", (GlobalVariables::g_szDLLDirPath), szFileName, szLogFile);
    FILE* hFile = fopen(szFilePath, "a+");
    delete[] szFilePath;
    delete[] szLogFile;
    if(hFile == NULL)
    {
      char szError[256];
      sprintf(szError, "Error fopen: %s\n", strerror(errno));
      SERVER_PRINT(szError);
      clearerr(hFile);
      return;
    }
    
    fprintf(hFile, g_szLogString);
    if(ferror(hFile))
    {
      char szError[256];
      sprintf(szError, "Error fprintf: %s\n", strerror(errno));
      SERVER_PRINT(szError);
      clearerr(hFile);
      return;
    }
    fclose(hFile);

}
char* UTIL_GetLog(const char *fmt, ...)
{
    va_list			argptr;
    static char		temp[1024];

    va_start ( argptr, fmt );
    vsnprintf ( temp, sizeof(temp), fmt, argptr );
    va_end   ( argptr );

    char* szDateTime = get_timestring("%d\\%m\\%Y %X");
    sprintf(g_szLogString,"[Metamod Ultimate Unprecacher] [%s] : %s\n",szDateTime,temp);
    delete[] szDateTime;

    return str_copy(g_szLogString);
}
Exemple #3
0
/**
 * Seen
 **/
char *do_seen(User * u, char *target)
{
    char *split1 = NULL;
    char *seenhost = NULL;
    char *seennick = NULL;
    char *seenuname = NULL;
    struct tm tm;
    char buf[255];
    int i;
    MYSQL_RES *mysql_res;
    char *sqltarget;
    char usrchans[1024] = "\0";
    time_t tsnow = time(NULL);
    MYSQL_RES *mysql_res2;
    MYSQL_ROW mysql_row2;
    char cmodep[32] = "\0";
    char cmodes[32] = "\0";
    char cmodeA[32] = "\0";
    char cmodeO[32] = "\0";
    char umodep[32] = "\0";
	char umodeQ[32] = "\0";
	char umodeI[32] = "\0";
    double ctsdiff;
    time_t time0 = time(NULL);
    time_t time1 = time(NULL);
	time_t tt = time(NULL);
    char *message;
	char *uname = NULL;
    message = malloc(1024);

    sqltarget = rdb_escape(rdb_escape(target));
    for (i = 0; sqltarget[i]; i++)
        if (sqltarget[i] == '*')
            sqltarget[i] = '%';
    seenhost = myStrGetToken(sqltarget, '@', 1);
    split1 = myStrGetToken(sqltarget, '@', 0);
    seennick = myStrGetToken(split1, '!', 0);
    seenuname = myStrGetToken(split1, '!', 1);
    if (seenhost == NULL)
        seenhost = (char *) "%";
    if (seennick == NULL)
        seennick = (char *) "%";
    if (seenuname == NULL)
        seenuname = (char *) "%";
    free(sqltarget);
	
	if (!strcmp(seennick, "%")) {
		uname = sstrdup("%");
	} else {	
		rdb_query(QUERY_LOW, "SELECT uname FROM %s WHERE nick LIKE \'%s\' ",
					  AliasesTable, seennick);
		mysql_res = mysql_store_result(mysql);
		if (mysql_res && mysql_num_rows(mysql_res)) {
			mysql_row = mysql_fetch_row(mysql_res);
			uname = rdb_escape(mysql_row[0]);
		}
	}
	
	if (uname) {
		rdb_query(QUERY_LOW,
              "SELECT %s.nickid, %s.nick, %s.hostname, %s.hiddenhostname, %s.username, UNIX_TIMESTAMP(%s.connecttime), %s.away, %s.awaymsg, %s.online, UNIX_TIMESTAMP(%s.lastquit), %s.lastquitmsg FROM %s,%s,%s WHERE %s.uname LIKE \"%s\" AND %s.nick = %s.nick AND %s.username LIKE \"%s\" AND (%s.hostname LIKE \"%s\" OR %s.hiddenhostname LIKE \"%s\") AND %s.server = %s.server AND %s.uline = \"0\" ORDER BY online,lastquit DESC, %s.connecttime ASC LIMIT 1;",
              UserTable, UserTable, UserTable, UserTable, UserTable,
              UserTable, UserTable, UserTable, UserTable, UserTable,
              UserTable, UserTable, ServerTable, AliasesTable,
              AliasesTable, uname, UserTable,
              AliasesTable, UserTable, seenuname, UserTable, seenhost,
              UserTable, seenhost, UserTable, ServerTable, ServerTable, UserTable);
		mysql_res = mysql_store_result(mysql);
	} else {
		rdb_query(QUERY_LOW,
              "SELECT %s.nickid, %s.nick, %s.hostname, %s.hiddenhostname, %s.username, UNIX_TIMESTAMP(%s.connecttime), %s.away, %s.awaymsg, %s.online, UNIX_TIMESTAMP(%s.lastquit), %s.lastquitmsg FROM %s,%s WHERE %s.nick LIKE \"%s\" AND %s.username LIKE \"%s\" AND (%s.hostname LIKE \"%s\" OR %s.hiddenhostname LIKE \"%s\") AND %s.server = %s.server AND %s.uline = \"0\" ORDER BY online,lastquit DESC, %s.connecttime ASC LIMIT 1;",
              UserTable, UserTable, UserTable, UserTable, UserTable,
              UserTable, UserTable, UserTable, UserTable, UserTable,
              UserTable, UserTable, ServerTable, UserTable, seennick,
              UserTable, seenuname, UserTable, seenhost,
              UserTable, seenhost, UserTable, ServerTable, ServerTable, UserTable);
		mysql_res = mysql_store_result(mysql);
	}

    if (mysql_num_rows(mysql_res) > 0) {
        SET_SEGV_LOCATION();
        while ((mysql_row = mysql_fetch_row(mysql_res)) != NULL) {
            double tsdiff;
            if (mysql_row[5] != NULL) { 
                time0 = atoi(mysql_row[5]); /* connect time */
            }
            if (mysql_row[9] != NULL) {   
                time1 = atoi(mysql_row[9]); /* quit time */
            }
            if (strlen(mysql_row[3]) <= 1)
                mysql_row[3] = mysql_row[2];    /* no vhost, so using real host */
            if (stricmp(mysql_row[8], "Y") == 0) {
                if (mysql_row[5] != NULL) {
					tt = atoi(mysql_row[5]);
					tm = *localtime(&tt);
                    strftime(buf, sizeof(buf), "%d.%m %H:%M", &tm);
                    mysql_row[5] = buf;
                }

                /* Display channels the user is in */
                /* check for ircd compatibility: chanmodes +AOsp and usermode +p */
                if (denora_cmode(CMODE_p) == 1)
                    sprintf(cmodep, "AND %s.mode_lp = 'N' ", ChanTable);
                if (denora_cmode(CMODE_s) == 1)
                    sprintf(cmodes, "AND %s.mode_ls = 'N' ", ChanTable);
                if (denora_cmode(CMODE_A) == 1)
                    sprintf(cmodeA, "AND %s.mode_ua = 'N' ", ChanTable);
                if (denora_cmode(CMODE_O) == 1)
                    sprintf(cmodeO, "AND %s.mode_uo = 'N' ", ChanTable);
                if (denora_umode(UMODE_p) == 1)
                    sprintf(umodep, "AND %s.mode_lp = 'N' ", UserTable);
				if (denora_get_ircd() == IRC_INSPIRCD11 || denora_get_ircd() == IRC_INSPIRCD12) {
					if (denora_umode(UMODE_Q) == 1)
						sprintf(umodeQ, "AND %s.mode_uq = 'N' ", UserTable);
					if (denora_umode(UMODE_I) == 1)
						sprintf(umodeI, "AND %s.mode_ui = 'N' ", UserTable);
				}
                rdb_query(QUERY_LOW,
                          "SELECT %s.channel FROM %s,%s,%s WHERE %s.nickid =%s AND %s.chanid = %s.chanid AND %s.nickid = %s.nickid %s%s%s%s%s%s%s ORDER BY %s.channel ASC",
                          ChanTable, ChanTable, UserTable, IsOnTable,
                          IsOnTable, mysql_row[0], ChanTable, IsOnTable,
                          UserTable, IsOnTable, cmodep, cmodes, cmodeA,
                          cmodeO, umodep, umodeQ, umodeI, ChanTable);
                mysql_res2 = mysql_store_result(mysql);
                while ((mysql_row2 = mysql_fetch_row(mysql_res2)) != NULL) {
                    strlcat(usrchans, mysql_row2[0], sizeof(usrchans));
                    strlcat(usrchans, " ", sizeof(usrchans));
                }
                mysql_free_result(mysql_res2);

                ctsdiff = difftime(tsnow, time0);       /* total online time */

                /* Prepare the reply for the user */
                if (stricmp(mysql_row[6], "N") == 0) {
                    if (strlen(usrchans) < 3) {
                        sprintf(message,
                                moduleGetLangString(u, SEEN_ONLINE),
                                mysql_row[1], mysql_row[4], mysql_row[3],
                                get_timestring(u, ctsdiff), mysql_row[5]);
                    } else {
                        sprintf(message,
                                moduleGetLangString(u, SEEN_ONLINEC),
                                mysql_row[1], mysql_row[4], mysql_row[3],
                                get_timestring(u, ctsdiff), mysql_row[5],
                                usrchans);
                    }
                } else {
                    if (strlen(usrchans) < 3) {
                        sprintf(message, moduleGetLangString(u, SEEN_AWAY),
                                mysql_row[1], mysql_row[4], mysql_row[3],
                                get_timestring(u, ctsdiff), mysql_row[5],
                                mysql_row[7]);
                    } else {
                        sprintf(message,
                                moduleGetLangString(u, SEEN_AWAYC),
                                mysql_row[1], mysql_row[4], mysql_row[3],
                                get_timestring(u, ctsdiff), mysql_row[5],
                                mysql_row[7], usrchans);
                    }
                }
            } else {
                double dtsdiff;
                if (mysql_row[9] != NULL && mysql_row[5] != NULL) {
					tt = atoi(mysql_row[9]);
					tm = *localtime(&tt);
                    strftime(buf, sizeof(buf), "%d.%m %H:%M", &tm);
                    mysql_row[9] = buf;
                    dtsdiff = difftime(tsnow, time1);   /* total offline time */
                    tsdiff = difftime(time1, time0);    /* total online time */
                    sprintf(message, moduleGetLangString(u, SEEN_OFFLINE),
                            mysql_row[1], mysql_row[4], mysql_row[3],
                            get_timestring(u, dtsdiff), mysql_row[9],
                            get_timestring(u, tsdiff), mysql_row[10]);
                } else {
                    sprintf(message, moduleGetLangString(u, SEEN_UNKNOWN),
                            mysql_row[1], mysql_row[4], mysql_row[3]);
                }
            }
        }
    } else {
        sprintf(message, moduleGetLangString(u, SEEN_EMPTY), target);
    }
    SET_SEGV_LOCATION();
    mysql_free_result(mysql_res);

    return message;
}
static void
set_device_ups_primary (CcPowerPanel *panel, GVariant *device)
{
  CcPowerPanelPrivate *priv = panel->priv;
  gchar *details = NULL;
  gchar *time_string = NULL;
  gdouble percentage;
  GtkWidget *widget;
  guint64 time;
  UpDeviceState state;

  /* set the device */
  g_variant_get (device,
                 "(susdut)",
                 NULL, /* object_path */
                 NULL, /* kind */
                 NULL, /* icon_name */
                 &percentage,
                 &state,
                 &time);

  /* set the percentage */
  gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (priv->levelbar_primary),
                           percentage / 100.0f);

  /* always show the warning */
  widget = WID ("image_primary_warning");
  gtk_widget_show (widget);

  /* set the description */
  if (time > 0)
    {
      time_string = get_timestring (time);
      switch (state)
        {
          case UP_DEVICE_STATE_DISCHARGING:
            if (percentage < 20)
              {
                /* TRANSLATORS: %1 is a time string, e.g. "1 hour 5 minutes" */
                details = g_strdup_printf(_("Caution low UPS, %s remaining"),
                                          time_string);
              }
            else
              {
                /* TRANSLATORS: %1 is a time string, e.g. "1 hour 5 minutes" */
                details = g_strdup_printf(_("Using UPS power - %s remaining"),
                                          time_string);
              }
            break;
          default:
            details = g_strdup_printf ("error: %s",
                                       up_device_state_to_string (state));
            break;
        }
    }
  else
    {
      switch (state)
        {
          case UP_DEVICE_STATE_DISCHARGING:
            if (percentage < 20)
              {
                /* TRANSLATORS: UPS battery */
                details = g_strdup(_("Caution low UPS"));
              }
            else
              {
                /* TRANSLATORS: UPS battery */
                details = g_strdup(_("Using UPS power"));
              }
            break;
          default:
            details = g_strdup_printf ("error: %s",
                                       up_device_state_to_string (state));
            break;
        }
    }
  if (details == NULL)
    goto out;
  widget = WID ("label_battery_primary");
  gtk_label_set_label (GTK_LABEL (widget), details);

  /* show the primary device */
  widget = WID ("box_primary");
  gtk_widget_show (widget);

  /* hide the addon device as extra UPS devices are not possible */
  widget = WID ("box_battery_addon");
  gtk_widget_hide (widget);
out:
  g_free (time_string);
  g_free (details);
}