bool t_rpc_command_executor::print_peer_list() { cryptonote::COMMAND_RPC_GET_PEER_LIST::request req; cryptonote::COMMAND_RPC_GET_PEER_LIST::response res; std::string failure_message = "Couldn't retrieve peer list"; if (m_is_rpc) { if (!m_rpc_client->rpc_request(req, res, "/get_peer_list", failure_message.c_str())) { return false; } } else { if (!m_rpc_server->on_get_peer_list(req, res)) { tools::fail_msg_writer() << failure_message; return false; } } for (auto & peer : res.white_list) { print_peer("white", peer); } for (auto & peer : res.gray_list) { print_peer("gray", peer); } return true; }
static void display_states(const struct pfioc_states *ps, int verbose __unused, FILE* f) { struct pfsync_state *p = NULL; struct pfsync_state_peer *src, *dst; struct protoent *proto; int nb_states; int i; uint64_t id; p = ps->ps_states; nb_states = ps->ps_len / sizeof(struct pfsync_state); for (i = 0; i < nb_states; i++, p++) { fprintf(f, "state %s ", p->direction == PF_OUT ? "out" : "in"); fprintf(f, "on %s ", p->ifname); if ((proto = getprotobynumber(p->proto)) != NULL) fprintf(f, "proto %s ", proto->p_name); else fprintf(f, "proto %u ", p->proto); if (PF_ANEQ(&p->lan.addr, &p->gwy.addr, p->af) || (p->lan.port != p->gwy.port)) { char buf1[64], buf2[64], buf3[64]; fprintf(f, "from %s to %s using %s", print_host(&p->lan, p->af, buf1, sizeof(buf1)), print_host(&p->ext, p->af, buf2, sizeof(buf2)), print_host(&p->gwy, p->af, buf3, sizeof(buf3))); } else { char buf1[64], buf2[64]; fprintf(f, "from %s to %s", print_host(&p->lan, p->af, buf1, sizeof(buf1)), print_host(&p->ext, p->af, buf2, sizeof(buf2))); } memcpy(&id, p->id, sizeof(p->id)); fprintf(f, " id %" PRIu64 " cid %" PRIu32 " expire %" PRIu32 " timeout %" PRIu8, id , p->creatorid, p->expire, p->timeout); if (p->direction == PF_OUT) { src = &p->src; dst = &p->dst; } else { src = &p->dst; dst = &p->src; } fprintf(f, " src "); print_peer(src, p->proto, f); fprintf(f, " dst "); print_peer(dst, p->proto, f); fprintf(f, "\n"); } }
int main (int argc, char * argv[]){ bt_args_t bt_args; int i; parse_args(&bt_args, argc, argv); if(bt_args.verbose){ printf("Args:\n"); printf("verbose: %d\n",bt_args.verbose); printf("save_file: %s\n",bt_args.save_file); printf("log_file: %s\n",bt_args.log_file); printf("torrent_file: %s\n", bt_args.torrent_file); for(i=0;i<MAX_CONNECTIONS;i++){ if(bt_args.peers[i] != NULL) print_peer(bt_args.peers[i]); } } //read and parse the torrent file here if(bt_args.verbose){ // print out the torrent file arguments here } //main client loop printf("Starting Main Loop\n"); while(1){ //try to accept incoming connection from new peer //poll current peers for incoming traffic // write pieces to files // udpdate peers choke or unchoke status // responses to have/havenots/interested etc. //for peers that are not choked // request pieaces from outcoming traffic //check livelenss of peers and replace dead (or useless) peers //with new potentially useful peers //update peers, } return 0; }
void _connect_function(void *ptr) { thdata *data; data = ptr; int my_socket = create_socket(data->bt_peer_t->sockaddr); if (my_socket < 0) { drop_peer(data->bt_peer_t, data->bt_args); free(data->bt_peer_t); free(ptr); } else { data->bt_peer_t->socket_fd = my_socket; data->bt_peer_t->interested = 1; data->bt_peer_t->choked = -1; if (data->bt_args->verbose) print_peer(data->bt_peer_t); free(ptr); } }
int main (int argc, char * argv[]){ bt_args_t bt_args; be_node * node; // top node in the bencoding int i; bt_info_t* my_bt_info = malloc(sizeof(my_bt_info)); parse_args(&bt_args, argc, argv); // To compare with server response we need this bt_args.peers[1]->id //struct bt_handshake handshake; //char *str_handshake; if(bt_args.verbose){ printf("Args:\n"); printf("verbose: %d\n",bt_args.verbose); printf("save_file: %s\n",bt_args.save_file); printf("log_file: %s\n",bt_args.log_file); printf("torrent_file: %s\n", bt_args.torrent_file); for(i=0;i<MAX_CONNECTIONS;i++){ if(bt_args.peers[i] != NULL) print_peer(bt_args.peers[i]); } } //read and parse the torent file node = load_be_node(bt_args.torrent_file); //check_parse(bt_args.torrent_file); /* parseNode(node,0,my_bt_info); ///// Print the datat from the sturcure printf("my_bt_info->announce %s\n",my_bt_info->announce); printf("my_bt_info->name %s\n",my_bt_info->name); printf("my_bt_info->piece_length %i\n",my_bt_info->piece_length); printf("my_bt_info->length %i\n",my_bt_info->length); printf("my_bt_info->num_pieces %i\n",my_bt_info->num_pieces); */ bt_args.bt_info=malloc(sizeof(bt_info_t)); parseNode(node,0,bt_args.bt_info); printf("my_bt_info->announce %s\n",bt_args.bt_info->announce); printf("my_bt_info->name %s\n",bt_args.bt_info->name); printf("my_bt_info->piece_length %i\n",bt_args.bt_info->piece_length); printf("my_bt_info->length %i\n",bt_args.bt_info->length); printf("my_bt_info->num_pieces %i\n",bt_args.bt_info->num_pieces); // printf("my_bt_info->my_peiecehases %s\n",my_bt_info->my_peiecehases); //printf(" \n size : %d",sizeof(my_bt_info->my_peiecehases)); //be_dump(node); if(bt_args.verbose){ be_dump(node); } printf("bt_args.client value is %i \n :", bt_args.client); printf("\n\n\n seeder not started"); if(bt_args.client) { printf("Now as clien \n"); char * filenamew="TempTemp1.txt"; char* bitfilename= malloc(1000); //bitfilename=NULL; if (bt_args.save_file != NULL) { filenamew= bt_args.save_file; strcpy(bitfilename,filenamew); } strcat(bitfilename,"Restart.tmp"); printf("fielname for restart %s",bitfilename); intial_file_to_write(filenamew, bt_args.bt_info->length); client(&bt_args,my_bt_info,bitfilename); } if(bt_args.client==0) { printf("\n\n\n seeder started"); printf("\n\n\n seeder started"); seeder(&bt_args,&bt_args.bt_info); } /* //main client loop printf("Starting Main Loop\n"); while(1){ //try to accept incoming connection from new peer //poll current peers for incoming traffic // write pieces to files // udpdate peers choke or unchoke status // responses to have/havenots/interested etc. //for peers that are not choked // request pieaces from outcoming traffic //check livelenss of peers and replace dead (or useless) peers //with new potentially useful peers //update peers, }*/ return 0; }