Skip to content

Commit 0c41916

Browse files
committed
feature: redirect all tcp
1 parent df3e895 commit 0c41916

File tree

1 file changed

+28
-31
lines changed
  • android_app/app/src/main/cpp

1 file changed

+28
-31
lines changed

android_app/app/src/main/cpp/tcp.c

Lines changed: 28 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -634,10 +634,7 @@ jboolean handle_tcp(const struct arguments *args,
634634
s->tcp.sent = 0;
635635
s->tcp.received = 0;
636636
s->tcp.connect_sent = TCP_CONNECT_NOT_SENT;
637-
if (rport == 80) {
638-
s->tcp.connect_sent = TCP_CONNECT_ESTABLISHED;
639-
}
640-
637+
641638
if (version == 4) {
642639
s->tcp.saddr.ip4 = (__be32) ip4->saddr;
643640
s->tcp.daddr.ip4 = (__be32) ip4->daddr;
@@ -649,7 +646,6 @@ jboolean handle_tcp(const struct arguments *args,
649646
s->tcp.source = tcphdr->source;
650647
s->tcp.dest = tcphdr->dest;
651648
s->tcp.state = TCP_LISTEN;
652-
// s->tcp.socks5 = SOCKS5_NONE;
653649
s->tcp.forward = NULL;
654650
s->next = NULL;
655651

@@ -713,36 +709,41 @@ jboolean handle_tcp(const struct arguments *args,
713709
goto free;
714710
}
715711
} else {
716-
if (rport == 443) {
712+
if (len > 0) {
713+
strcpy(cur->tcp.hostname, hostname);
714+
} else {
715+
struct sockaddr_in addr4;
716+
addr4.sin_family = AF_INET;
717+
addr4.sin_addr.s_addr = (__be32) cur->tcp.daddr.ip4;
718+
addr4.sin_port = cur->tcp.dest;
719+
lookup_hostname(&addr4, hostname, 512, 1);
720+
len = strlen(hostname);
717721
if (len > 0) {
718722
strcpy(cur->tcp.hostname, hostname);
719723
} else {
720-
struct sockaddr_in addr4;
721-
addr4.sin_family = AF_INET;
722-
addr4.sin_addr.s_addr = (__be32) cur->tcp.daddr.ip4;
723-
addr4.sin_port = cur->tcp.dest;
724-
lookup_hostname(&addr4, hostname, 512, 1);
725-
len = strlen(hostname);
726-
if (len > 0) {
727-
strcpy(cur->tcp.hostname, hostname);
728-
}
724+
inet_ntop(cur->version == 4 ? AF_INET : AF_INET6,
725+
cur->version == 4 ? &cur->tcp.daddr.ip4 : &cur->tcp.daddr.ip6,
726+
cur->tcp.hostname, sizeof(cur->tcp.hostname));
727+
len = strlen(cur->tcp.hostname);
729728
}
730-
if (cur->tcp.connect_sent == TCP_CONNECT_NOT_SENT) {
731-
if (len > 0) {
732-
char buffer[512];
733-
sprintf(buffer, "CONNECT %s:%d HTTP/1.0\r\n\r\n", cur->tcp.hostname, rport);
729+
}
730+
731+
if (cur->tcp.connect_sent == TCP_CONNECT_NOT_SENT) {
732+
if (len > 0) {
733+
char buffer[512];
734+
sprintf(buffer, "CONNECT %s:%d HTTP/1.0\r\n\r\n", cur->tcp.hostname, rport);
734735

735-
ssize_t sent = send(cur->socket, buffer, strlen(buffer), MSG_NOSIGNAL);
736-
if (sent < 0) {
737-
write_rst(args, &cur->tcp);
738-
} else {
739-
cur->tcp.connect_sent = TCP_CONNECT_SENT;
740-
cur->tcp.state = TCP_LISTEN;
741-
}
736+
ssize_t sent = send(cur->socket, buffer, strlen(buffer), MSG_NOSIGNAL);
737+
if (sent < 0) {
738+
write_rst(args, &cur->tcp);
739+
} else {
740+
cur->tcp.connect_sent = TCP_CONNECT_SENT;
741+
cur->tcp.state = TCP_LISTEN;
742742
}
743743
}
744744
}
745-
if (rport == 443 && cur->tcp.connect_sent != TCP_CONNECT_ESTABLISHED) {
745+
746+
if (cur->tcp.connect_sent != TCP_CONNECT_ESTABLISHED) {
746747
char session[250];
747748
sprintf(session,
748749
"%s %s loc %u rem %u acked %u",
@@ -755,7 +756,6 @@ jboolean handle_tcp(const struct arguments *args,
755756
goto free;
756757
}
757758

758-
759759
char session[250];
760760
sprintf(session,
761761
"%s %s loc %u rem %u acked %u",
@@ -970,9 +970,6 @@ int open_tcp_socket(const struct arguments *args,
970970
int version;
971971

972972
int rport = htons(cur->dest);
973-
if (rport != 80 && rport != 443) {
974-
redirect = NULL;
975-
}
976973

977974
if (redirect == NULL) {
978975
version = cur->version;

0 commit comments

Comments
 (0)