From 5441562e11933d5a7213c450c63a6cbaf1c68c4b Mon Sep 17 00:00:00 2001 From: Oliver Hunt Date: Sat, 13 Jul 2013 18:31:16 +0100 Subject: Added ncurses tox client --- testing/nTox.c | 195 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ testing/nTox.h | 21 +++++++ 2 files changed, 216 insertions(+) create mode 100644 testing/nTox.c create mode 100644 testing/nTox.h (limited to 'testing') diff --git a/testing/nTox.c b/testing/nTox.c new file mode 100644 index 00000000..8d2ec1dd --- /dev/null +++ b/testing/nTox.c @@ -0,0 +1,195 @@ +#include "nTox.h" +char lines[HISTORY][STRING_LENGTH]; +char line[STRING_LENGTH]; +int x,y; + +void new_lines(char *line) +{ + int i; + for (i = HISTORY-1; i > 0; i--) { + strcpy(lines[i],lines[i-1]); + } + strcpy(lines[0],line); +} + +unsigned char * hex_string_to_bin(char hex_string[]) +{ + unsigned char * val = malloc(strlen(hex_string)); + char * pos = hex_string; + int i=0; + while(i < strlen(hex_string)) + { + sscanf(pos,"%2hhx",&val[i]); + pos+=2; + i++; + } + return val; +} + +void line_eval(char lines[HISTORY][STRING_LENGTH], char *line) +{ + if (line[0] == '/') { + if (line[1] == 'f') { // add friend command: /f ID + int i; + char temp_id[128]; + for (i=0; i<128; i++) { + temp_id[i] = line[i+3]; + } + int num = m_addfriend(hex_string_to_bin(temp_id), (uint8_t*)"Install Gentoo", sizeof("Install Gentoo")); + char numstring[100]; + sprintf(numstring, "%d", num); + new_lines(numstring); + do_refresh(); + } else if (line[1] == 'd') { + doMessenger(); + } else if (line[1] == 'm') { //message command: /m friendnumber messsage + int i; + int len = strlen(line); + char numstring[len-3]; + char message[len-3]; + for (i=0; i 0) { + output[i] = '\n'; + } + } +} + +int count_lines(char *string) +{ + int len = strlen(string); + int i; + int count = 1; + for (i=0; i < len; i++) { + if (string[i] == '\n') { + count++; + } + } + return count; +} + +char *appender(char *str, const char c) +{ + int len = strlen(str); + if (len < STRING_LENGTH) { + str[len + 1] = str[len]; + str[len] = c; + } + return str; +} + +void do_refresh() +{ + int i; + int count=0; + int l; + char wrap_output[STRING_LENGTH]; + for (i=0; i> "); + printw(line); + clrtoeol(); + refresh(); +} +void print_request(uint8_t * public_key, uint8_t * data, uint16_t length) +{ + new_lines("Friend request"); + do_refresh(); + if(memcmp(data , "Install Gentoo", sizeof("Install Gentoo")) == 0 ) + //if the request contained the message of peace the person is obviously a friend so we add him. + { + new_lines("Friend request accepted."); + do_refresh(); + m_addfriend_norequest(public_key); + } +} +void print_message(int friendnumber, uint8_t * string, uint16_t length) +{ + new_lines("Message received"); + do_refresh(); + m_sendmessage(friendnumber, (uint8_t*)"Test1", 6); +} +int main(int argc, char *argv[]) +{ + int c; + initMessenger(); + m_callback_friendrequest(print_request); + m_callback_friendmessage(print_message); + char idstring0[200]; + char idstring1[32][5]; + char idstring2[32][5]; + uint32_t i; + for(i = 0; i < 32; i++) + { + if(self_public_key[i] < 16) { + strcpy(idstring1[i],"0"); + } else { + strcpy(idstring1[i], ""); + } + sprintf(idstring2[i], "%hhX",self_public_key[i]); + } + strcpy(idstring0,"Your ID is: "); + for(i=0; i<32; i++) { + strcat(idstring0,idstring1[i]); + strcat(idstring0,idstring2[i]); + } + initscr(); + noecho(); + raw(); + getmaxyx(stdscr,y,x); + new_lines(idstring0); + do_refresh(); + strcpy(line, ""); + while((c=getch())!=27) { + getmaxyx(stdscr,y,x); + if (c == '\n') { + line_eval(lines, line); + strcpy(line, ""); + } else if (c == 127) { + line[strlen(line)-1] = '\0'; + } else if (isalnum(c) || ispunct(c) || c == ' ') { + strcpy(line,appender(line, (char) c)); + } + do_refresh(); + } + endwin(); + return 0; +} diff --git a/testing/nTox.h b/testing/nTox.h new file mode 100644 index 00000000..fea735db --- /dev/null +++ b/testing/nTox.h @@ -0,0 +1,21 @@ +#ifndef NTOX_H +#define NTOX_H + +#include +#include +#include +#include +#include +#include +#include "../core/Messenger.h" +#define STRING_LENGTH 256 +#define HISTORY 50 + +void new_lines(char *line); +void line_eval(char lines[HISTORY][STRING_LENGTH], char *line); +void wrap(char output[STRING_LENGTH], char input[STRING_LENGTH], int line_width) ; +int count_lines(char *string) ; +char *appender(char *str, const char c); +void do_refresh(); + +#endif -- cgit v1.2.3