mirror of
https://github.com/Tha14/toxic.git
synced 2024-11-13 02:43:02 +01:00
add dhtstatus file
This commit is contained in:
parent
0ac97aa794
commit
1af9d84aad
@ -11,6 +11,7 @@ add_executable(${exe_name}
|
||||
windows.c
|
||||
prompt.c
|
||||
friendlist.c
|
||||
dhtstatus.c
|
||||
chat.c
|
||||
configdir.c)
|
||||
|
||||
|
89
dhtstatus.c
Normal file
89
dhtstatus.c
Normal file
@ -0,0 +1,89 @@
|
||||
#include "dhtstatus.h"
|
||||
#include "string.h"
|
||||
#include "../../core/network.h"
|
||||
#include "../../core/DHT.h"
|
||||
|
||||
typedef uint8_t ipbuf[3*4+3+1];
|
||||
static int num_selected = 0;
|
||||
|
||||
static void printip(ipbuf buf, IP ip)
|
||||
{
|
||||
sprintf((char*)buf, "%u.%u.%u.%u", ip.c[0], ip.c[1], ip.c[2], ip.c[3]);
|
||||
}
|
||||
|
||||
static void dhtstatus_onKey(ToxWindow *self, Messenger *m, int key)
|
||||
{
|
||||
switch(key) {
|
||||
case KEY_UP:
|
||||
case 'k':
|
||||
if (--num_selected < 0)
|
||||
num_selected = CLIENT_ID_SIZE-1;
|
||||
break;
|
||||
|
||||
case KEY_DOWN:
|
||||
case 'j':
|
||||
num_selected = (num_selected+1) % CLIENT_ID_SIZE;
|
||||
break;
|
||||
|
||||
case '\n':
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void dhtstatus_onDraw(ToxWindow *self)
|
||||
{
|
||||
Client_data * close_clientlist = DHT_get_close_list();
|
||||
curs_set(0);
|
||||
werase(self->window);
|
||||
|
||||
uint64_t now = unix_time();
|
||||
uint32_t i, j;
|
||||
ipbuf ipbuf;
|
||||
wprintw(self->window,"\n%llu ______________________ CLOSE LIST ________________________ ___ IP ADDR ___ _PRT_ LST PNG ____ SELF ____ _PRT_ LST\n\n", now);
|
||||
for(i = 0; i < CLIENT_ID_SIZE; i++) {
|
||||
Client_data * client = close_clientlist + i;
|
||||
if (i == num_selected) wattron(self->window, COLOR_PAIR(3));
|
||||
wprintw(self->window,"[%02i] ", i);
|
||||
uint16_t port = ntohs(client->ip_port.port);
|
||||
if(port) {
|
||||
for(j = 0; j < 32; j++)
|
||||
wprintw(self->window, "%02hhx", client->client_id[j]);
|
||||
|
||||
printip(ipbuf, client->ip_port.ip);
|
||||
wprintw(self->window, " %15s %5u ", ipbuf, port);
|
||||
wprintw(self->window, " %3llu ", now - client->timestamp);
|
||||
wprintw(self->window, " %3llu ", now - client->last_pinged);
|
||||
|
||||
port = ntohs(client->ret_ip_port.port);
|
||||
if(port) {
|
||||
printip(ipbuf, client->ret_ip_port.ip);
|
||||
wprintw(self->window, " %15s %5u %3llu", ipbuf, port, now - close_clientlist[i].ret_timestamp);
|
||||
}
|
||||
}
|
||||
wprintw(self->window, "\n");
|
||||
if (i == num_selected) wattroff(self->window, COLOR_PAIR(3));
|
||||
}
|
||||
|
||||
wrefresh(self->window);
|
||||
}
|
||||
|
||||
static void dhtstatus_onInit(ToxWindow *self, Messenger *m)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
ToxWindow new_dhtstatus()
|
||||
{
|
||||
ToxWindow ret;
|
||||
memset(&ret, 0, sizeof(ret));
|
||||
|
||||
ret.onKey = &dhtstatus_onKey;
|
||||
ret.onDraw = &dhtstatus_onDraw;
|
||||
ret.onInit = &dhtstatus_onInit;
|
||||
|
||||
strcpy(ret.title, "[dht status]");
|
||||
return ret;
|
||||
}
|
8
dhtstatus.h
Normal file
8
dhtstatus.h
Normal file
@ -0,0 +1,8 @@
|
||||
#ifndef _dhtstatus_h
|
||||
#define _dhtstatus_h
|
||||
|
||||
#include "windows.h"
|
||||
|
||||
ToxWindow new_dhtstatus();
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user