Esempio n. 1
0
/*
 * DAT format: "000.000.000.000 - 000.255.255.255 , 000 , invalid ip"
 * http://wiki.phoenixlabs.org/wiki/DAT_Format
 */
static bool
parseLine2 (const char * line, struct tr_ipv4_range * range)
{
  int unk;
  int a[4];
  int b[4];
  char str[32];
  tr_address addr;

  if (sscanf (line, "%3d.%3d.%3d.%3d - %3d.%3d.%3d.%3d , %3d , ",
              &a[0], &a[1], &a[2], &a[3],
              &b[0], &b[1], &b[2], &b[3],
              &unk) != 9)
    return false;

  tr_snprintf (str, sizeof (str), "%d.%d.%d.%d", a[0], a[1], a[2], a[3]);
  if (!tr_address_from_string (&addr, str))
    return false;
  range->begin = ntohl (addr.addr.addr4.s_addr);

  tr_snprintf (str, sizeof (str), "%d.%d.%d.%d", b[0], b[1], b[2], b[3]);
  if (!tr_address_from_string (&addr, str))
    return false;
  range->end = ntohl (addr.addr.addr4.s_addr);

  return true;
}
Esempio n. 2
0
/*
 * P2P plaintext format: "comment:x.x.x.x-y.y.y.y"
 * http://wiki.phoenixlabs.org/wiki/P2P_Format
 * http://en.wikipedia.org/wiki/PeerGuardian#P2P_plaintext_format
 */
static bool
parseLine1 (const char * line, struct tr_ipv4_range * range)
{
  char * walk;
  int b[4];
  int e[4];
  char str[64];
  tr_address addr;

  walk = strrchr (line, ':');
  if (!walk)
    return false;
  ++walk; /* walk past the colon */

  if (sscanf (walk, "%d.%d.%d.%d-%d.%d.%d.%d",
              &b[0], &b[1], &b[2], &b[3],
              &e[0], &e[1], &e[2], &e[3]) != 8)
    return false;

  tr_snprintf (str, sizeof (str), "%d.%d.%d.%d", b[0], b[1], b[2], b[3]);
  if (!tr_address_from_string (&addr, str))
    return false;
  range->begin = ntohl (addr.addr.addr4.s_addr);

  tr_snprintf (str, sizeof (str), "%d.%d.%d.%d", e[0], e[1], e[2], e[3]);
  if (!tr_address_from_string (&addr, str))
    return false;
  range->end = ntohl (addr.addr.addr4.s_addr);

  return true;
}
Esempio n. 3
0
int
main (void)
{
#if 0
    uint32_t           i;
    uint8_t            infohash[SHA_DIGEST_LENGTH];
    struct tr_address  addr;
    tr_piece_index_t   pieceCount = 1313;
    size_t             numwant;
    size_t             numgot;
    tr_piece_index_t pieces[] = { 1059, 431, 808, 1217, 287, 376, 1188, 353, 508 };
    tr_piece_index_t buf[16];

    for (i = 0; i < SHA_DIGEST_LENGTH; ++i)
        infohash[i] = 0xaa;
    tr_address_from_string (&addr, "80.4.4.200");

    numwant = 7;
    numgot = tr_generateAllowedSet (buf, numwant, pieceCount, infohash, &addr);
    check (numgot == numwant);
    for (i=0; i<numgot; ++i)
        check (buf[i] == pieces[i]);

    numwant = 9;
    numgot = tr_generateAllowedSet (buf, numwant, pieceCount, infohash, &addr);
    check (numgot == numwant);
    for (i=0; i<numgot; ++i)
        check (buf[i] == pieces[i]);
#endif

    return 0;
}
Esempio n. 4
0
static bool
address_is_blocked (tr_session * session, const char * address_str)
{
  struct tr_address addr;
  tr_address_from_string (&addr, address_str);
  return tr_sessionIsAddressBlocked (session, &addr);
}
static tr_pex*
listToPex (tr_variant * peerList, size_t * setme_len)
{
    size_t i;
    size_t n;
    const size_t len = tr_variantListSize (peerList);
    tr_pex * pex = tr_new0 (tr_pex, len);

    for (i=n=0; i<len; ++i)
    {
        int64_t port;
        const char * ip;
        tr_address addr;
        tr_variant * peer = tr_variantListChild (peerList, i);

        if (peer == NULL)
            continue;
        if (!tr_variantDictFindStr (peer, TR_KEY_ip, &ip, NULL))
            continue;
        if (!tr_address_from_string (&addr, ip))
            continue;
        if (!tr_variantDictFindInt (peer, TR_KEY_port, &port))
            continue;
        if ((port < 0) || (port > USHRT_MAX))
            continue;
        if (!tr_address_is_valid_for_peers (&addr, port))
            continue;

        pex[n].addr = addr;
        pex[n].port = htons ((uint16_t)port);
        ++n;
    }

    *setme_len = n;
    return pex;
}
Esempio n. 6
0
static int
testBlockList (void)
{
    const char * tmpfile_txt = TEMPFILE_TXT;
    const char * tmpfile_bin = TEMPFILE_BIN;
    struct tr_address addr;
    tr_blocklist * b;

    remove (tmpfile_txt);
    remove (tmpfile_bin);

    b = _tr_blocklistNew (tmpfile_bin, true);
    createTestBlocklist (tmpfile_txt);
    _tr_blocklistSetContent (b, tmpfile_txt);

    /* now run some tests */
    check (tr_address_from_string (&addr, "216.16.1.143"));
    check (!_tr_blocklistHasAddress (b, &addr));
    check (tr_address_from_string (&addr, "216.16.1.144"));
    check (_tr_blocklistHasAddress (b, &addr));
    check (tr_address_from_string (&addr, "216.16.1.145"));
    check (_tr_blocklistHasAddress (b, &addr));
    check (tr_address_from_string (&addr, "216.16.1.146"));
    check (_tr_blocklistHasAddress (b, &addr));
    check (tr_address_from_string (&addr, "216.16.1.147"));
    check (_tr_blocklistHasAddress (b, &addr));
    check (tr_address_from_string (&addr, "216.16.1.148"));
    check (_tr_blocklistHasAddress (b, &addr));
    check (tr_address_from_string (&addr, "216.16.1.149"));
    check (_tr_blocklistHasAddress (b, &addr));
    check (tr_address_from_string (&addr, "216.16.1.150"));
    check (_tr_blocklistHasAddress (b, &addr));
    check (tr_address_from_string (&addr, "216.16.1.151"));
    check (_tr_blocklistHasAddress (b, &addr));
    check (tr_address_from_string (&addr, "216.16.1.152"));
    check (!_tr_blocklistHasAddress (b, &addr));
    check (tr_address_from_string (&addr, "216.16.1.153"));
    check (!_tr_blocklistHasAddress (b, &addr));
    check (tr_address_from_string (&addr, "217.0.0.1"));
    check (!_tr_blocklistHasAddress (b, &addr));
    check (tr_address_from_string (&addr, "255.0.0.1"));

    /* cleanup */
    _tr_blocklistFree (b);
    remove (tmpfile_txt);
    remove (tmpfile_bin);
    return 0;
}
Esempio n. 7
0
int
main( void )
{
#ifndef WIN32
    const char *   tmpfile_txt = "/tmp/transmission-blocklist-test.txt";
    const char *   tmpfile_bin = "/tmp/transmission-blocklist-test.bin";
#else
    const char *   tmpfile_txt = "transmission-blocklist-test.txt";
    const char *   tmpfile_bin = "transmission-blocklist-test.bin";
#endif
    struct tr_address addr;
    int            test = 0;
    tr_blocklist * b;

    remove( tmpfile_txt );
    remove( tmpfile_bin );

    b = _tr_blocklistNew( tmpfile_bin, true );
    createTestBlocklist( tmpfile_txt );
    _tr_blocklistSetContent( b, tmpfile_txt );

    /* now run some tests */
    check( tr_address_from_string( &addr, "216.16.1.143" ) );
    check( !_tr_blocklistHasAddress( b, &addr ) );
    check( tr_address_from_string( &addr, "216.16.1.144" ) );
    check( _tr_blocklistHasAddress( b, &addr ) );
    check( tr_address_from_string( &addr, "216.16.1.145" ) );
    check( _tr_blocklistHasAddress( b, &addr ) );
    check( tr_address_from_string( &addr, "216.16.1.146" ) );
    check( _tr_blocklistHasAddress( b, &addr ) );
    check( tr_address_from_string( &addr, "216.16.1.147" ) );
    check( _tr_blocklistHasAddress( b, &addr ) );
    check( tr_address_from_string( &addr, "216.16.1.148" ) );
    check( _tr_blocklistHasAddress( b, &addr ) );
    check( tr_address_from_string( &addr, "216.16.1.149" ) );
    check( _tr_blocklistHasAddress( b, &addr ) );
    check( tr_address_from_string( &addr, "216.16.1.150" ) );
    check( _tr_blocklistHasAddress( b, &addr ) );
    check( tr_address_from_string( &addr, "216.16.1.151" ) );
    check( _tr_blocklistHasAddress( b, &addr ) );
    check( tr_address_from_string( &addr, "216.16.1.152" ) );
    check( !_tr_blocklistHasAddress( b, &addr ) );
    check( tr_address_from_string( &addr, "216.16.1.153" ) );
    check( !_tr_blocklistHasAddress( b, &addr ) );
    check( tr_address_from_string( &addr, "217.0.0.1" ) );
    check( !_tr_blocklistHasAddress( b, &addr ) );
    check( tr_address_from_string( &addr, "255.0.0.1" ) );

    /* cleanup */
    _tr_blocklistFree( b );
    remove( tmpfile_txt );
    remove( tmpfile_bin );
    return 0;
}