* [ruby-core:118831] [Ruby master Feature#20673] Enable native SOCKS support by default
@ 2024-08-10 20:04 MatzFan (Brian Cohen) via ruby-core
2024-08-23 2:19 ` [ruby-core:118935] " znz (Kazuhiro NISHIYAMA) via ruby-core
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: MatzFan (Brian Cohen) via ruby-core @ 2024-08-10 20:04 UTC (permalink / raw)
To: ruby-core; +Cc: MatzFan (Brian Cohen)
Issue #20673 has been reported by MatzFan (Brian Cohen).
----------------------------------------
Feature #20673: Enable native SOCKS support by default
https://bugs.ruby-lang.org/issues/20673
* Author: MatzFan (Brian Cohen)
* Status: Open
----------------------------------------
I'd like to see future Rubies have native SOCKS support enabled by default.
Currently Rubies must be compiled with the `--enable-socks=true` option in order to provide access to the `SOCKSSocket` class, through which network connections may be made via the SOCKS protocol.
My proposal is simply to deprecate the `--enable-socks` option IFO of SOCKS support being enabled by default.
Use cases: To the best of my knowledge, the most commonly used SOCKS proxies are [Dante](https://www.inet.no/dante/) and [Tor](https://torproject.org). I know little of the former, but the latter is used as an anonymity tool. For example, the Tor Browser (based on Firefox) is built on the `tor` SOCKS proxy. Users wishing to make requests through the SOCKS protocol (through one of these proxies or otherwise) must compile their own Ruby with SOCKS enabled, or install Dante/Tor and make requests through these via another tool - e.g. a Selenium-driven browser, suitably configured. Alternatively, a lower level library like `cURL` can be utilized.
Discussion: Most users do not build their own Rubies, but instead use the standard Rubies available from Ruby managers like `rvm` or `rbenv` (in both production and CI environments). Users needing to use the SOCKS protocol natively with one of these Rubies are presently reliant on the [socksify](https://rubygems.org/gems/socksify) Ruby gem (> 60M downloads). Declaration: I am the gem's current maintainer. The gem was originally built to provide native SOCKS support to users of these 'standard' Rubies via patches to the `Net/HTTP` and other Ruby core libraries. The current gem patches the private method `Net::HTTP#connect` in order to achieve this. This is a brittle and highly undesirable state of affairs and all code built using `socksify` is of course subject to breakage with each new Ruby release. It is difficult to gauge the exact nature and extent of the user need, but of the 60M Socksify downloads 20M have taken place is the last few years since I became maintainer. I consider t
his a significant user base.
Many other languages provide native SOCKS support - e.g. Python has [PySocks](https://pypi.org/project/PySocks/).
Fundamentally, is there any reason NOT to enable SOCKS support - would it break anything? I'd dearly like to retire the Socksify 'hack' in due course and see Ruby join the list of languages that offer SOCKS support by default - in all future Rubies.
Many thanks for your consideration.
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/
^ permalink raw reply [flat|nested] 5+ messages in thread
* [ruby-core:118935] [Ruby master Feature#20673] Enable native SOCKS support by default
2024-08-10 20:04 [ruby-core:118831] [Ruby master Feature#20673] Enable native SOCKS support by default MatzFan (Brian Cohen) via ruby-core
@ 2024-08-23 2:19 ` znz (Kazuhiro NISHIYAMA) via ruby-core
2024-09-05 13:20 ` [ruby-core:119067] " nobu (Nobuyoshi Nakada) via ruby-core
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: znz (Kazuhiro NISHIYAMA) via ruby-core @ 2024-08-23 2:19 UTC (permalink / raw)
To: ruby-core; +Cc: znz (Kazuhiro NISHIYAMA)
Issue #20673 has been updated by znz (Kazuhiro NISHIYAMA).
Enabling SOCKS support depends `SOCKS_SERVER` too now, I think it is unusual.
So I agree to enable by default.
I created [a pull request](https://github.com/ruby/ruby/pull/11441).
But it cannot enable as before if building environment does not have socks library.
----------------------------------------
Feature #20673: Enable native SOCKS support by default
https://bugs.ruby-lang.org/issues/20673#change-109504
* Author: MatzFan (Brian Cohen)
* Status: Open
----------------------------------------
I'd like to see future Rubies have native SOCKS support enabled by default.
Currently Rubies must be compiled with the `--enable-socks=true` option in order to provide access to the `SOCKSSocket` class, through which network connections may be made via the SOCKS protocol.
My proposal is simply to deprecate the `--enable-socks` option IFO of SOCKS support being enabled by default.
Use cases: To the best of my knowledge, the most commonly used SOCKS proxies are [Dante](https://www.inet.no/dante/) and [Tor](https://torproject.org). I know little of the former, but the latter is used as an anonymity tool. For example, the Tor Browser (based on Firefox) is built on the `tor` SOCKS proxy. Users wishing to make requests through the SOCKS protocol (through one of these proxies or otherwise) must compile their own Ruby with SOCKS enabled, or install Dante/Tor and make requests through these via another tool - e.g. a Selenium-driven browser, suitably configured. Alternatively, a lower level library like `cURL` can be utilized.
Discussion: Most users do not build their own Rubies, but instead use the standard Rubies available from Ruby managers like `rvm` or `rbenv` (in both production and CI environments). Users needing to use the SOCKS protocol natively with one of these Rubies are presently reliant on the [socksify](https://rubygems.org/gems/socksify) Ruby gem (> 60M downloads). Declaration: I am the gem's current maintainer. The gem was originally built to provide native SOCKS support to users of these 'standard' Rubies via patches to the `Net/HTTP` and other Ruby core libraries. The current gem patches the private method `Net::HTTP#connect` in order to achieve this. This is a brittle and highly undesirable state of affairs and all code built using `socksify` is of course subject to breakage with each new Ruby release. It is difficult to gauge the exact nature and extent of the user need, but of the 60M Socksify downloads 20M have taken place is the last few years since I became maintainer. I consider t
his a significant user base.
Many other languages provide native SOCKS support - e.g. Python has [PySocks](https://pypi.org/project/PySocks/).
Fundamentally, is there any reason NOT to enable SOCKS support - would it break anything? I'd dearly like to retire the Socksify 'hack' in due course and see Ruby join the list of languages that offer SOCKS support by default - in all future Rubies.
Many thanks for your consideration.
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/
^ permalink raw reply [flat|nested] 5+ messages in thread
* [ruby-core:119067] [Ruby master Feature#20673] Enable native SOCKS support by default
2024-08-10 20:04 [ruby-core:118831] [Ruby master Feature#20673] Enable native SOCKS support by default MatzFan (Brian Cohen) via ruby-core
2024-08-23 2:19 ` [ruby-core:118935] " znz (Kazuhiro NISHIYAMA) via ruby-core
@ 2024-09-05 13:20 ` nobu (Nobuyoshi Nakada) via ruby-core
2024-09-05 14:36 ` [ruby-core:119068] " MatzFan (Brian Cohen) via ruby-core
2024-09-06 3:45 ` [ruby-core:119080] " nobu (Nobuyoshi Nakada) via ruby-core
3 siblings, 0 replies; 5+ messages in thread
From: nobu (Nobuyoshi Nakada) via ruby-core @ 2024-09-05 13:20 UTC (permalink / raw)
To: ruby-core; +Cc: nobu (Nobuyoshi Nakada)
Issue #20673 has been updated by nobu (Nobuyoshi Nakada).
At the developers' meeting, there was an opinion that we could drop the support for SOCKS if it works well with `socksify`.
----------------------------------------
Feature #20673: Enable native SOCKS support by default
https://bugs.ruby-lang.org/issues/20673#change-109649
* Author: MatzFan (Brian Cohen)
* Status: Open
----------------------------------------
I'd like to see future Rubies have native SOCKS support enabled by default.
Currently Rubies must be compiled with the `--enable-socks=true` option in order to provide access to the `SOCKSSocket` class, through which network connections may be made via the SOCKS protocol.
My proposal is simply to deprecate the `--enable-socks` option IFO of SOCKS support being enabled by default.
Use cases: To the best of my knowledge, the most commonly used SOCKS proxies are [Dante](https://www.inet.no/dante/) and [Tor](https://torproject.org). I know little of the former, but the latter is used as an anonymity tool. For example, the Tor Browser (based on Firefox) is built on the `tor` SOCKS proxy. Users wishing to make requests through the SOCKS protocol (through one of these proxies or otherwise) must compile their own Ruby with SOCKS enabled, or install Dante/Tor and make requests through these via another tool - e.g. a Selenium-driven browser, suitably configured. Alternatively, a lower level library like `cURL` can be utilized.
Discussion: Most users do not build their own Rubies, but instead use the standard Rubies available from Ruby managers like `rvm` or `rbenv` (in both production and CI environments). Users needing to use the SOCKS protocol natively with one of these Rubies are presently reliant on the [socksify](https://rubygems.org/gems/socksify) Ruby gem (> 60M downloads). Declaration: I am the gem's current maintainer. The gem was originally built to provide native SOCKS support to users of these 'standard' Rubies via patches to the `Net/HTTP` and other Ruby core libraries. The current gem patches the private method `Net::HTTP#connect` in order to achieve this. This is a brittle and highly undesirable state of affairs and all code built using `socksify` is of course subject to breakage with each new Ruby release. It is difficult to gauge the exact nature and extent of the user need, but of the 60M Socksify downloads 20M have taken place is the last few years since I became maintainer. I consider t
his a significant user base.
Many other languages provide native SOCKS support - e.g. Python has [PySocks](https://pypi.org/project/PySocks/).
Fundamentally, is there any reason NOT to enable SOCKS support - would it break anything? I'd dearly like to retire the Socksify 'hack' in due course and see Ruby join the list of languages that offer SOCKS support by default - in all future Rubies.
Many thanks for your consideration.
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/
^ permalink raw reply [flat|nested] 5+ messages in thread
* [ruby-core:119068] [Ruby master Feature#20673] Enable native SOCKS support by default
2024-08-10 20:04 [ruby-core:118831] [Ruby master Feature#20673] Enable native SOCKS support by default MatzFan (Brian Cohen) via ruby-core
2024-08-23 2:19 ` [ruby-core:118935] " znz (Kazuhiro NISHIYAMA) via ruby-core
2024-09-05 13:20 ` [ruby-core:119067] " nobu (Nobuyoshi Nakada) via ruby-core
@ 2024-09-05 14:36 ` MatzFan (Brian Cohen) via ruby-core
2024-09-06 3:45 ` [ruby-core:119080] " nobu (Nobuyoshi Nakada) via ruby-core
3 siblings, 0 replies; 5+ messages in thread
From: MatzFan (Brian Cohen) via ruby-core @ 2024-09-05 14:36 UTC (permalink / raw)
To: ruby-core; +Cc: MatzFan (Brian Cohen)
Issue #20673 has been updated by MatzFan (Brian Cohen).
@nobu there has perhaps been a misunderstanding. The `socksify` library works adequately for HTTP today, but it patches a private method in the `Net::HTTP` class. This makes any code built using `socksify` very fragile and potentially subject to breakage with each new Ruby release. It also no longer works for other protocols (e.g. FTP - [since Ruby 2.4](https://github.com/astro/socksify-ruby/issues/34)). The library is a hack and no substitute for the support for socks which Ruby can provide if the (currently non-default) `--enable-socks` compile option is used.
If Ruby developers feel that SOCKS support is not something the core language should provide, an alternative may be to make the relevant parts of the various network API's public (i.e. for each protocol that can be used with SOCKS). This way `socksify` or another library can be used to extend the language to provide SOCKS support properly, for those who require it.
----------------------------------------
Feature #20673: Enable native SOCKS support by default
https://bugs.ruby-lang.org/issues/20673#change-109650
* Author: MatzFan (Brian Cohen)
* Status: Open
----------------------------------------
I'd like to see future Rubies have native SOCKS support enabled by default.
Currently Rubies must be compiled with the `--enable-socks=true` option in order to provide access to the `SOCKSSocket` class, through which network connections may be made via the SOCKS protocol.
My proposal is simply to deprecate the `--enable-socks` option IFO of SOCKS support being enabled by default.
Use cases: To the best of my knowledge, the most commonly used SOCKS proxies are [Dante](https://www.inet.no/dante/) and [Tor](https://torproject.org). I know little of the former, but the latter is used as an anonymity tool. For example, the Tor Browser (based on Firefox) is built on the `tor` SOCKS proxy. Users wishing to make requests through the SOCKS protocol (through one of these proxies or otherwise) must compile their own Ruby with SOCKS enabled, or install Dante/Tor and make requests through these via another tool - e.g. a Selenium-driven browser, suitably configured. Alternatively, a lower level library like `cURL` can be utilized.
Discussion: Most users do not build their own Rubies, but instead use the standard Rubies available from Ruby managers like `rvm` or `rbenv` (in both production and CI environments). Users needing to use the SOCKS protocol natively with one of these Rubies are presently reliant on the [socksify](https://rubygems.org/gems/socksify) Ruby gem (> 60M downloads). Declaration: I am the gem's current maintainer. The gem was originally built to provide native SOCKS support to users of these 'standard' Rubies via patches to the `Net/HTTP` and other Ruby core libraries. The current gem patches the private method `Net::HTTP#connect` in order to achieve this. This is a brittle and highly undesirable state of affairs and all code built using `socksify` is of course subject to breakage with each new Ruby release. It is difficult to gauge the exact nature and extent of the user need, but of the 60M Socksify downloads 20M have taken place is the last few years since I became maintainer. I consider t
his a significant user base.
Many other languages provide native SOCKS support - e.g. Python has [PySocks](https://pypi.org/project/PySocks/).
Fundamentally, is there any reason NOT to enable SOCKS support - would it break anything? I'd dearly like to retire the Socksify 'hack' in due course and see Ruby join the list of languages that offer SOCKS support by default - in all future Rubies.
Many thanks for your consideration.
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/
^ permalink raw reply [flat|nested] 5+ messages in thread
* [ruby-core:119080] [Ruby master Feature#20673] Enable native SOCKS support by default
2024-08-10 20:04 [ruby-core:118831] [Ruby master Feature#20673] Enable native SOCKS support by default MatzFan (Brian Cohen) via ruby-core
` (2 preceding siblings ...)
2024-09-05 14:36 ` [ruby-core:119068] " MatzFan (Brian Cohen) via ruby-core
@ 2024-09-06 3:45 ` nobu (Nobuyoshi Nakada) via ruby-core
3 siblings, 0 replies; 5+ messages in thread
From: nobu (Nobuyoshi Nakada) via ruby-core @ 2024-09-06 3:45 UTC (permalink / raw)
To: ruby-core; +Cc: nobu (Nobuyoshi Nakada)
Issue #20673 has been updated by nobu (Nobuyoshi Nakada).
As for the current SOCKS support at least, if the necessary library and header are found `socket.so` uses SOCKS functions instead of standard socket functions, and the built `socket.so` cannot be loaded where SOCKS library is not installed.
This means "native SOCKS support enabled by default" requires platforms to support it (by default or optionally).
I looked for how to install SOCKS library/headers using package managers, but couldn't find it in Ubuntu, MacPorts, HomeBrew and vcpkg at least.
An alternative I thought out is to make `SOCKSSocket` class a separate extension library for libraries/users who want to use SOCKS.
MatzFan (Brian Cohen) wrote in #note-3:
> If Ruby developers feel that SOCKS support is not something the core language should provide, an alternative may be to make the relevant parts of the various network API's public (i.e. for each protocol that can be used with SOCKS). This way `socksify` or another library can be used to extend the language to provide SOCKS support properly, for those who require it.
It sounds a good way.
Could you make a draft?
----------------------------------------
Feature #20673: Enable native SOCKS support by default
https://bugs.ruby-lang.org/issues/20673#change-109664
* Author: MatzFan (Brian Cohen)
* Status: Open
----------------------------------------
I'd like to see future Rubies have native SOCKS support enabled by default.
Currently Rubies must be compiled with the `--enable-socks=true` option in order to provide access to the `SOCKSSocket` class, through which network connections may be made via the SOCKS protocol.
My proposal is simply to deprecate the `--enable-socks` option IFO of SOCKS support being enabled by default.
Use cases: To the best of my knowledge, the most commonly used SOCKS proxies are [Dante](https://www.inet.no/dante/) and [Tor](https://torproject.org). I know little of the former, but the latter is used as an anonymity tool. For example, the Tor Browser (based on Firefox) is built on the `tor` SOCKS proxy. Users wishing to make requests through the SOCKS protocol (through one of these proxies or otherwise) must compile their own Ruby with SOCKS enabled, or install Dante/Tor and make requests through these via another tool - e.g. a Selenium-driven browser, suitably configured. Alternatively, a lower level library like `cURL` can be utilized.
Discussion: Most users do not build their own Rubies, but instead use the standard Rubies available from Ruby managers like `rvm` or `rbenv` (in both production and CI environments). Users needing to use the SOCKS protocol natively with one of these Rubies are presently reliant on the [socksify](https://rubygems.org/gems/socksify) Ruby gem (> 60M downloads). Declaration: I am the gem's current maintainer. The gem was originally built to provide native SOCKS support to users of these 'standard' Rubies via patches to the `Net/HTTP` and other Ruby core libraries. The current gem patches the private method `Net::HTTP#connect` in order to achieve this. This is a brittle and highly undesirable state of affairs and all code built using `socksify` is of course subject to breakage with each new Ruby release. It is difficult to gauge the exact nature and extent of the user need, but of the 60M Socksify downloads 20M have taken place is the last few years since I became maintainer. I consider t
his a significant user base.
Many other languages provide native SOCKS support - e.g. Python has [PySocks](https://pypi.org/project/PySocks/).
Fundamentally, is there any reason NOT to enable SOCKS support - would it break anything? I'd dearly like to retire the Socksify 'hack' in due course and see Ruby join the list of languages that offer SOCKS support by default - in all future Rubies.
Many thanks for your consideration.
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2024-09-06 3:46 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-08-10 20:04 [ruby-core:118831] [Ruby master Feature#20673] Enable native SOCKS support by default MatzFan (Brian Cohen) via ruby-core
2024-08-23 2:19 ` [ruby-core:118935] " znz (Kazuhiro NISHIYAMA) via ruby-core
2024-09-05 13:20 ` [ruby-core:119067] " nobu (Nobuyoshi Nakada) via ruby-core
2024-09-05 14:36 ` [ruby-core:119068] " MatzFan (Brian Cohen) via ruby-core
2024-09-06 3:45 ` [ruby-core:119080] " nobu (Nobuyoshi Nakada) via ruby-core
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).