Class: SOCKSSocket
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
|
Class Chain:
|
|
|
Instance Chain:
|
|
| Inherits: |
TCPSocket
|
| Defined in: | ext/socket/sockssocket.c |
Overview
SOCKS is an Internet protocol that routes packets between a client and a server through a proxy server. SOCKS5, if supported, additionally provides authentication so only authorized users may access a server.
Class Attribute Summary
::BasicSocket - Inherited
| .do_not_reverse_lookup | Gets the global do_not_reverse_lookup flag. |
| .do_not_reverse_lookup= | Sets the global do_not_reverse_lookup flag. |
Class Method Summary
-
.new(host, port) ⇒ socket
constructor
Opens a SOCKS connection to
hostvia the SOCKS server.
::TCPSocket - Inherited
| .gethostbyname | Use Addrinfo.getaddrinfo instead. |
| .new | Opens a TCP connection to |
::IPSocket - Inherited
| .getaddress | Lookups the IP address of host. |
::BasicSocket - Inherited
| .for_fd | Returns a socket object which contains the file descriptor, fd. |
Instance Attribute Summary
::BasicSocket - Inherited
| #do_not_reverse_lookup | Gets the do_not_reverse_lookup flag of basicsocket. |
| #do_not_reverse_lookup= | Sets the do_not_reverse_lookup flag of basicsocket. |
Instance Method Summary
-
#close
Closes the SOCKS connection.
::IPSocket - Inherited
| #addr | Returns the local address as an array which contains address_family, port, hostname and numeric_address. |
| #inspect | Return a string describing this |
| #peeraddr | Returns the remote address as an array which contains address_family, port, hostname and numeric_address. |
| #recvfrom | Receives a message and return the message as a string and an address which the message come from. |
::BasicSocket - Inherited
| #close_read | Disallows further read using shutdown system call. |
| #close_write | Disallows further write using shutdown system call. |
| #connect_address | Returns an address of the socket suitable for connect in the local machine. |
| #getpeereid | Returns the user and group on the peer of the UNIX socket. |
| #getpeername | Returns the remote address of the socket as a sockaddr string. |
| #getsockname | Returns the local address of the socket as a sockaddr string. |
| #getsockopt | Gets a socket option. |
| #local_address | Returns an |
| #recv | Receives a message. |
| #recv_nonblock | Receives up to maxlen bytes from |
| #recvmsg | recvmsg receives a message using recvmsg(2) system call in blocking manner. |
| #recvmsg_nonblock | recvmsg receives a message using recvmsg(2) system call in non-blocking manner. |
| #remote_address | Returns an |
| #send | send mesg via basicsocket. |
| #sendmsg | sendmsg sends a message using sendmsg(2) system call in blocking manner. |
| #sendmsg_nonblock | sendmsg_nonblock sends a message using sendmsg(2) system call in non-blocking manner. |
| #setsockopt | Sets a socket option. |
| #shutdown | Calls shutdown(2) system call. |
| #__recvmsg, #__recvmsg_nonblock, #__sendmsg, #__sendmsg_nonblock, #read_nonblock, #write_nonblock, #__read_nonblock, #__recv_nonblock, #__write_nonblock | |
Constructor Details
.new(host, port) ⇒ socket
Opens a SOCKS connection to host via the SOCKS server.
The SOCKS server configuration varies by implementation
When using the Dante libsocks/libsocksd implementation it is configured as SOCKS_SERVER env var.
See: manpages.debian.org/testing/dante-client/socksify.1.en.html for full env variable support.
# File 'ext/socket/sockssocket.c', line 27
static VALUE
socks_init(VALUE sock, VALUE host, VALUE port)
{
static int init = 0;
if (init == 0) {
SOCKSinit("ruby");
init = 1;
}
return rsock_init_inetsock(sock, host, port, Qnil, Qnil, INET_SOCKS);
}
Instance Method Details
#close
Closes the SOCKS connection.
# File 'ext/socket/sockssocket.c', line 45
static VALUE
socks_s_close(VALUE sock)
{
rb_io_t *fptr;
GetOpenFile(sock, fptr);
shutdown(fptr->fd, 2);
return rb_io_close(sock);
}