void load_key(){ FILE *data_file = NULL; if ((data_file = fopen("data","r"))) { //load keys fseek(data_file, 0, SEEK_END); int size = ftell(data_file); fseek(data_file, 0, SEEK_SET); uint8_t data[size]; if(fread(data, sizeof(uint8_t), size, data_file) != size){ printf("Error reading data file\nExiting.\n"); exit(1); } Messenger_load(data, size); } else { //else save new keys int size = Messenger_size(); uint8_t data[size]; Messenger_save(data); data_file = fopen("data","w"); if(fwrite(data, sizeof(uint8_t), size, data_file) != size){ printf("Error writing data file\nExiting.\n"); exit(1); } } fclose(data_file); }
/* * Store Messenger to given location * Return 0 stored successfully * Return 1 malloc failed * Return 2 opening path failed * Return 3 fwrite failed */ int store_data(Messenger *m, char *path) { if (f_loadfromfile == 0) /*If file loading/saving is disabled*/ return 0; FILE *fd; size_t len; uint8_t *buf; len = Messenger_size(m); buf = malloc(len); if (buf == NULL) { return 1; } Messenger_save(m, buf); fd = fopen(path, "w"); if (fd == NULL) { free(buf); return 2; } if (fwrite(buf, len, 1, fd) != 1) { free(buf); fclose(fd); return 3; } free(buf); fclose(fd); return 0; }
void load_key() { FILE *data_file = NULL; data_file = fopen("data","r"); if (data_file) { fseek(data_file, 0, SEEK_END); int size = ftell(data_file); fseek(data_file, 0, SEEK_SET); uint8_t data[size]; if (fread(data, sizeof(uint8_t), size, data_file) != size) { printf("\n[i] Could not read the data file. Exiting."); exit(1); } Messenger_load(data, size); } else { int size = Messenger_size(); uint8_t data[size]; Messenger_save(data); data_file = fopen("data", "w"); if (fwrite(data, sizeof(uint8_t), size, data_file) != size) { printf("\n[i] Could not write data to file. Exiting."); exit(1); } } fclose(data_file); }
static void load_data(char *path) { FILE *fd; size_t len; uint8_t *buf; if ((fd = fopen(path, "r")) != NULL) { fseek(fd, 0, SEEK_END); len = ftell(fd); fseek(fd, 0, SEEK_SET); buf = malloc(len); if (buf == NULL) { fprintf(stderr, "malloc() failed.\n"); fclose(fd); endwin(); exit(1); } if (fread(buf, len, 1, fd) != 1){ fprintf(stderr, "fread() failed.\n"); free(buf); fclose(fd); endwin(); exit(1); } Messenger_load(buf, len); } else { len = Messenger_size(); buf = malloc(len); if (buf == NULL) { fprintf(stderr, "malloc() failed.\n"); endwin(); exit(1); } Messenger_save(buf); fd = fopen(path, "w"); if (fd == NULL) { fprintf(stderr, "fopen() failed.\n"); free(buf); endwin(); exit(1); } if (fwrite(buf, len, 1, fd) != 1){ fprintf(stderr, "fwrite() failed.\n"); free(buf); fclose(fd); endwin(); exit(1); } } free(buf); fclose(fd); }
void load_key(Messenger *m, char *path) { FILE *data_file = fopen(path, "r"); int size = 0; if (data_file) { //load keys fseek(data_file, 0, SEEK_END); size = ftell(data_file); rewind(data_file); uint8_t data[size]; if (fread(data, sizeof(uint8_t), size, data_file) != size) { fputs("[!] could not read data file! exiting...\n", stderr); goto FILE_ERROR; } Messenger_load(m, data, size); } else { //else save new keys int size = Messenger_size(m); uint8_t data[size]; Messenger_save(m, data); data_file = fopen(path, "w"); if (!data_file) { perror("[!] load_key"); exit(1); } if (fwrite(data, sizeof(uint8_t), size, data_file) != size) { fputs("[!] could not write data file! exiting...", stderr); goto FILE_ERROR; } } if (fclose(data_file) < 0) perror("[!] fclose failed"); return; FILE_ERROR: if (fclose(data_file) < 0) perror("[!] fclose failed"); exit(1); }
int main(int argc, char *argv[]) { if (argc < 4 && argc != 2) { printf("usage %s ip port public_key (of the DHT bootstrap node)\n or\n %s Save.bak\n", argv[0], argv[0]); exit(0); } m = initMessenger(); if ( !m ) { fputs("Failed to allocate messenger datastructure\n", stderr); exit(0); } if (argc > 3) { IP_Port bootstrap_ip_port; bootstrap_ip_port.port = htons(atoi(argv[2])); bootstrap_ip_port.ip.i = inet_addr(argv[1]); DHT_bootstrap(m->dht, bootstrap_ip_port, hex_string_to_bin(argv[3])); } else { FILE *file = fopen(argv[1], "rb"); if ( file == NULL ) { return 1; } int read; uint8_t buffer[128000]; read = fread(buffer, 1, 128000, file); printf("Messenger loaded: %i\n", Messenger_load(m, buffer, read)); fclose(file); } m_callback_friendrequest(m, print_request, NULL); m_callback_friendmessage(m, print_message, NULL); printf("OUR ID: "); uint32_t i; uint8_t address[FRIEND_ADDRESS_SIZE]; getaddress(m, address); for (i = 0; i < FRIEND_ADDRESS_SIZE; i++) { if (address[i] < 16) printf("0"); printf("%hhX", address[i]); } setname(m, (uint8_t *)"Anon", 5); char temp_id[128]; printf("\nEnter the address of the friend you wish to add (38 bytes HEX format):\n"); if (scanf("%s", temp_id) != 1) { return 1; } int num = m_addfriend(m, hex_string_to_bin(temp_id), (uint8_t *)"Install Gentoo", sizeof("Install Gentoo")); perror("Initialization"); while (1) { uint8_t name[128]; getname(m, num, name); printf("%s\n", name); m_sendmessage(m, num, (uint8_t *)"Test", 5); doMessenger(m); c_sleep(30); FILE *file = fopen("Save.bak", "wb"); if ( file == NULL ) { return 1; } uint8_t *buffer = malloc(Messenger_size(m)); Messenger_save(m, buffer); size_t write_result = fwrite(buffer, 1, Messenger_size(m), file); if (write_result < Messenger_size(m)) { return 1; } free(buffer); fclose(file); } cleanupMessenger(m); }
/* return size of the messenger data (for saving). */ uint32_t tox_size(void *tox) { Messenger *m = tox; return Messenger_size(m); }
int main(int argc, char *argv[]) { /* let user override default by cmdline */ uint8_t ipv6enabled = TOX_ENABLE_IPV6_DEFAULT; /* x */ int argvoffset = cmdline_parsefor_ipv46(argc, argv, &ipv6enabled); if (argvoffset < 0) exit(1); /* with optional --ipvx, now it can be 1-4 arguments... */ if ((argc != argvoffset + 2) && (argc != argvoffset + 4)) { printf("Usage: %s [--ipv4|--ipv6] ip port public_key (of the DHT bootstrap node)\n", argv[0]); printf("or\n"); printf(" %s [--ipv4|--ipv6] Save.bak (to read Save.bak as state file)\n", argv[0]); exit(0); } m = initMessenger(ipv6enabled); if ( !m ) { fputs("Failed to allocate messenger datastructure\n", stderr); exit(0); } if (argc == argvoffset + 4) { uint16_t port = htons(atoi(argv[argvoffset + 2])); uint8_t *bootstrap_key = hex_string_to_bin(argv[argvoffset + 3]); int res = DHT_bootstrap_from_address(m->dht, argv[argvoffset + 1], ipv6enabled, port, bootstrap_key); free(bootstrap_key); if (!res) { printf("Failed to convert \"%s\" into an IP address. Exiting...\n", argv[argvoffset + 1]); exit(1); } } else { FILE *file = fopen(argv[argvoffset + 1], "rb"); if ( file == NULL ) { printf("Failed to open \"%s\" - does it exist?\n", argv[argvoffset + 1]); return 1; } int read; uint8_t buffer[128000]; read = fread(buffer, 1, 128000, file); printf("Messenger loaded: %i\n", Messenger_load(m, buffer, read)); fclose(file); } m_callback_friendrequest(m, print_request, NULL); m_callback_friendmessage(m, print_message, NULL); printf("OUR ID: "); uint32_t i; uint8_t address[FRIEND_ADDRESS_SIZE]; getaddress(m, address); for (i = 0; i < FRIEND_ADDRESS_SIZE; i++) { if (address[i] < 16) printf("0"); printf("%hhX", address[i]); } setname(m, (uint8_t *)"Anon", 5); char temp_id[128]; printf("\nEnter the address of the friend you wish to add (38 bytes HEX format):\n"); if (scanf("%s", temp_id) != 1) { return 1; } int num = m_addfriend(m, hex_string_to_bin(temp_id), (uint8_t *)"Install Gentoo", sizeof("Install Gentoo")); perror("Initialization"); while (1) { uint8_t name[128]; getname(m, num, name); printf("%s\n", name); m_sendmessage(m, num, (uint8_t *)"Test", 5); doMessenger(m); c_sleep(30); FILE *file = fopen("Save.bak", "wb"); if ( file == NULL ) { return 1; } uint8_t *buffer = malloc(Messenger_size(m)); Messenger_save(m, buffer); size_t write_result = fwrite(buffer, 1, Messenger_size(m), file); if (write_result < Messenger_size(m)) { return 1; } free(buffer); fclose(file); } cleanupMessenger(m); }