예제 #1
0
파일: log.c 프로젝트: Hello71/umurmur
void Log_info_client(client_t *client, const char *logstring, ...)
{
	va_list argp;
	char buf[STRSIZE + 1];
	int offset = 0;

	if (termprint || logfile)
		offset = sprintf(buf, "INFO: ");

	va_start(argp, logstring);
	offset += vsnprintf(&buf[offset], STRSIZE - offset, logstring, argp);
	va_end(argp);

	char *clientAddressString = Util_clientAddressToString(client);
	offset += snprintf(&buf[offset], STRSIZE - offset, " - [%d] %s@%s:%d",
		client->sessionId,
		client->username == NULL ? "" : client->username,
		clientAddressString,
		Util_clientAddressToPortTCP(client));
	free(clientAddressString);

	if (termprint)
		fprintf(stderr, "%s\n", buf);
	else if (logfile)
		fprintf(logfile, "%s %s\n", timestring(), buf);
	else
		syslog(LOG_INFO, "%s", buf);
}
예제 #2
0
void Sharedmemory_update(void) 
{

  uint64_t now;
  unsigned int cc = 0;
  client_t *client_itr = NULL;

    memset( &shmptr->client[0], 0, shmptr->shmclient_size );
    shmptr->clientcount = Client_count();
    
      if( shmptr->clientcount )
      {
        Timer_init( &now );
          while( Client_iterate(&client_itr) != NULL )
          {                                                                                   
            if( client_itr->authenticated )
            {        
              channel_t *channel = client_itr->channel;
        
                strncpy( shmptr->client[cc].username, client_itr->username, 120 );
                strncpy( shmptr->client[cc].ipaddress, Util_clientAddressToString( client_itr ), INET6_ADDRSTRLEN - 1 );
                strncpy( shmptr->client[cc].channel, channel->name, 120 );
                
                strncpy( shmptr->client[cc].os, client_itr->os, 120 );
                strncpy( shmptr->client[cc].release, client_itr->release, 120 );
                strncpy( shmptr->client[cc].os_version, client_itr->os_version, 120 );
                
                shmptr->client[cc].tcp_port = Util_clientAddressToPortTCP( client_itr );
                shmptr->client[cc].udp_port = Util_clientAddressToPortUDP( client_itr );                
        
                shmptr->client[cc].online_secs = ( now - client_itr->connectTime ) / 1000000LL;
                shmptr->client[cc].idle_secs = ( now - client_itr->idleTime ) / 1000000LL;
                        
                shmptr->client[cc].bUDP  = client_itr->bUDP;
                shmptr->client[cc].deaf  = client_itr->deaf;
                shmptr->client[cc].mute  = client_itr->mute;
                shmptr->client[cc].bOpus  = client_itr->bOpus;
                shmptr->client[cc].self_deaf  = client_itr->self_deaf;
                shmptr->client[cc].self_mute  = client_itr->self_mute;
                shmptr->client[cc].recording  = client_itr->recording;
                shmptr->client[cc].authenticated  = client_itr->authenticated;
                
                shmptr->client[cc].availableBandwidth  = client_itr->availableBandwidth;
                
                shmptr->client[cc].UDPPingAvg = client_itr->UDPPingAvg;
                shmptr->client[cc].UDPPingVar = client_itr->UDPPingVar;
                shmptr->client[cc].TCPPingAvg = client_itr->TCPPingAvg;
                shmptr->client[cc].TCPPingVar = client_itr->TCPPingVar;
                
                shmptr->client[cc].isAdmin = client_itr->isAdmin;
                shmptr->client[cc].isSuppressed = client_itr->isSuppressed;
                
                shmptr->client[cc].UDPPackets = client_itr->UDPPackets;
                shmptr->client[cc].TCPPackets = client_itr->TCPPackets;
                
            }  
          cc++;     
        }
      } 
}