예제 #1
0
파일: main.c 프로젝트: EE-NovRain/tcpcopy
/*
 * two kinds of target formats:
 * 1) 192.168.0.1:80-192.168.0.2:8080
 * 2) 80-192.168.0.2:8080
 */
static int
parse_target(ip_port_pair_mapping_t *ip_port, char *addr)
{
    char   *seq, *addr1, *addr2;

    if ((seq = strchr(addr, '-')) == NULL) {
        tc_log_info(LOG_WARN, 0, "target \"%s\" is invalid", addr);
        return -1;
    } else {
        *seq = '\0';
    }

    addr1 = addr;
    addr2 = seq + 1;

    parse_ip_port_pair(addr1, &ip_port->online_ip, &ip_port->online_port);
    parse_ip_port_pair(addr2, &ip_port->target_ip, &ip_port->target_port);

    if (clt_settings.lo_tf_ip == 0) {
        clt_settings.lo_tf_ip = ip_port->online_ip;
    }

    *seq = '-';

    return 0;
}
예제 #2
0
파일: main.c 프로젝트: redface999/gryphon
/*
 * two kinds of target formats:
 * 1) 192.168.0.1:80-192.168.0.2:8080
 * 2) 80-192.168.0.2:8080
 */
static int
parse_target(ip_port_pair_mapping_t *ip_port, char *addr)
{
    char   *seq, *addr1, *addr2;

    if ((seq = strchr(addr, '-')) == NULL) {
        tc_log_info(LOG_WARN, 0, "target \"%s\" is invalid", addr);
        return -1;
    } else {
        *seq = '\0';
    }

    addr1 = addr;
    addr2 = seq + 1;

    parse_ip_port_pair(addr1, &ip_port->online_ip, &ip_port->online_port,
                       ip_port->src_mac);
    parse_ip_port_pair(addr2, &ip_port->target_ip, &ip_port->target_port,
                       ip_port->dst_mac);

    if (ip_port->target_ip == LOCALHOST) {
        clt_settings.target_localhost = 1;
        tc_log_info(LOG_WARN, 0, "target host is 127.0.0.1");
        tc_log_info(LOG_WARN, 0,
                    "only client requests from localhost are valid");
    }

    *seq = '-';

    return 0;
}
예제 #3
0
파일: main.c 프로젝트: atellwu/tcpcopy
/*
 * two kinds of target formats:
 * 1) 192.168.0.1:80-192.168.0.2:8080
 * 2) 80-192.168.0.2:8080
 */
static int
parse_target(ip_port_pair_mapping_t *ip_port, char *addr)
{
    char   *seq, *addr1, *addr2;

    if ((seq = strchr(addr, '-')) == NULL) {
        tc_log_info(LOG_WARN, 0, "target \"%s\" is invalid", addr);
        return -1;
    } else {
        *seq = '\0';
    }

    addr1 = addr;
    addr2 = seq + 1;

    parse_ip_port_pair(addr1, &ip_port->online_ip, &ip_port->online_port,
            ip_port->src_mac);
    parse_ip_port_pair(addr2, &ip_port->target_ip, &ip_port->target_port,
            ip_port->dst_mac);

    if (clt_settings.lo_tf_ip == 0) {
        clt_settings.lo_tf_ip = ip_port->online_ip;
    }

    if (ip_port->target_ip == LOCALHOST) {
        clt_settings.target_localhost = 1;
        tc_log_info(LOG_WARN, 0, "target host is 127.0.0.1");
        tc_log_info(LOG_WARN, 0, 
                "only client requests from localhost are valid");
    }

#if (TCPCOPY_PCAP)
    if (clt_settings.user_filter == NULL && ip_port->online_ip == 0) {
        if (ip_port->online_port == ip_port->target_port) 
        {
            tc_log_info(LOG_WARN, 0, "captured port and target port are equal");
            tc_log_info(LOG_WARN, 0, 
                    "choose a different port or set filter or set device");
        }
    }
#endif

    *seq = '-';

    return 0;
}
예제 #4
0
파일: main.c 프로젝트: leek2hu/wtcpcopy
/*
 * two kinds of target formats:
 * 1) 192.168.0.1:80-192.168.0.2:8080
 * 2) 80-192.168.0.2:8080
 */
static int
parse_target(transfer_map_t *ip_port, char *addr)
{
    char   *seq, *addr1, *addr2;

    if ((seq = strchr(addr, '-')) == NULL) {
        tc_log_info(LOG_WARN, 0, "target \"%s\" is invalid", addr);
        fprintf(stderr, "target \"%s\" is invalid\n", addr);
        return -1;
    } else {
        *seq = '\0';
    }

    addr1 = addr;
    addr2 = seq + 1;

    parse_ip_port_pair(addr1, &ip_port->online_ip, &ip_port->online_port,
            ip_port->src_mac);
    parse_ip_port_pair(addr2, &ip_port->target_ip, &ip_port->target_port,
            ip_port->dst_mac);

    if (ip_port->target_ip == LOCALHOST) {
        clt_settings.target_localhost = 1;
        tc_log_info(LOG_WARN, 0, "target host is 127.0.0.1");
    }

#if (TC_PCAP)
    if (clt_settings.user_filter == NULL && ip_port->online_ip == 0) {
        if (ip_port->online_port == ip_port->target_port)
        {
            tc_log_info(LOG_WARN, 0, "captured port and target port are equal");
            tc_log_info(LOG_ERR, 0,
                    "set pcap filter to capture online inbound packets");
            fprintf(stderr, "set -F argument to capture packets\n");
            return -1;
        }
    }
#endif

    *seq = '-';

    return 0;
}