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;
}
Esempio n. 2
0
File: pfs.c Progetto: ryo/netbsd-src
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");
    }
}
Esempio n. 3
0
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;
}
Esempio n. 4
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);
    }
}
Esempio n. 5
0
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;
}