Skip to content

support socks proxy without password#1046

Closed
dna2github wants to merge 5 commits into
shadowsocks:masterfrom
dna2github:master
Closed

support socks proxy without password#1046
dna2github wants to merge 5 commits into
shadowsocks:masterfrom
dna2github:master

Conversation

@dna2github
Copy link
Copy Markdown

Type of changes

Put an x inside the [ ] that applies.

  • Bugfix
  • New feature
  • Translation
  • General refinement
  • Other:

Details

support socks proxy without password
    
    - modified ip-relay
    - socks proxy when no password
      - connect to socks proxy including ss-local
    - test on Huawei Honor 5A / Android 6.0

import third-party source code of ip-relay
    
    - sourceforge: https://sourceforge.net/projects/iprelay/
    - ip-relay: udp and tcp relay

@Mygod
Copy link
Copy Markdown
Contributor

Mygod commented Dec 30, 2016

I feel like @madeye is never going to approve this PR so I'm going to save my change requests for later. Thanks anyway.

@Mygod Mygod requested review from Mygod and madeye December 30, 2016 18:30
- modified ip-relay
- socks proxy when no password
  - connect to socks proxy including ss-local
- test on Huawei Honor 5A / Android 6.0
@dna2github
Copy link
Copy Markdown
Author

thx and just find a typo... would like to recreate one ... i will point out the typo in the commit

@Mygod
Copy link
Copy Markdown
Contributor

Mygod commented Dec 30, 2016

You can push more commits without creating a new PR as long as you push it to the same branch.

@dna2github dna2github reopened this Dec 30, 2016
- add send_traffic_stat to ip-relay
- correct traffic monitor
- test on Huawei Honor 5A + Hnor Tablet 2 / Android 6.0
@madeye
Copy link
Copy Markdown
Contributor

madeye commented Dec 31, 2016

HI @dna2github,

I think your changes are very useful: without password, shadowsocks-android will fall back to a simple socks5 proxy. This is really a clever approach.

But as you know, this project is designed for shadowsocks protocol. So, it's almost impossible for me to merge this change, as socks proxy is not encrypted and this approach would cause very serious security problem in some scenarios, e.g. a honeypot with unencrypted socks5 proxy claims it a shadowsocks service.

So, my suggestion is to keep your change as a fork. I'll keep this pull request open in case it's useful to someone.

BTW, I found you're quite familiar with our project and able to write both C and Scala (Awesome!). If possible, please keep sending us pull requests. There will be many changes for shadowsocks-android in the next year. I hope you can join us to improve the project.

Thanks,
Max

Copy link
Copy Markdown
Contributor

@madeye madeye left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The patch looks good. No comments from my side.

Copy link
Copy Markdown
Contributor

@Mygod Mygod left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You said you made changes to iprelay but you put everything in a single commit. Please create a separate repo, put original code as the first commit, your modified code as second commit, and use it as a submodule, just like our other native C libraries, so that other people can see what you did to iprelay without having to fire up a terminal and do a diff themselves.

@Mygod
Copy link
Copy Markdown
Contributor

Mygod commented Dec 31, 2016

@madeye Yes that's exactly what I thought.

@dna2github
Copy link
Copy Markdown
Author

dna2github commented Dec 31, 2016

thx all for your comments.

currently I have 3 commits and the first commit has the original ip-relay source code and modified ip-relay in the following commits. will create submodule for ip-relay when i have time.

Happy to join you folks :)
not very familiar with scala and just investigate into the project for one week. will learn more.

I have an idea to enhance ss-local.
to focus on shadowsocks protocol, i think one way can solve my problem described in this PR:
set up tcp/upd relay into ss-local, make a way to enable ss-local A connecting to ss-local B with password. add a switch on the ui to enable ss-local relay.
then, ss-server can start in subnet A; if one ss-local starts on a host with two nics (subset A and B available), another ss-local in subset B can have access to ss-server in subnet A.
but now we have ip-relay and we can do nothing on ss-local; instead, use ip-relay to route ss-local B in subnet B to ss-server in subset A directly. anyway, just leave this comment for someone who want to use shadowsocks in complex network config.

@tobyxdd
Copy link
Copy Markdown

tobyxdd commented Feb 16, 2017

Really nice approach! This will also enable the possibility to use existing shadowsock client on other machines in LAN or use other proxy tools that provide SOCKS5 protocol. Even it won't be approved I'm gonna merge and compile it for my self 😀

@shadowsocks shadowsocks locked and limited conversation to collaborators Jul 3, 2017
@madeye
Copy link
Copy Markdown
Contributor

madeye commented Jul 3, 2017

Locked as off-topic.

@Mygod
Copy link
Copy Markdown
Contributor

Mygod commented Jul 3, 2017

@madeye How about removing spam and unlock?

@shadowsocks shadowsocks deleted a comment from rekcahpercy Jul 3, 2017
@shadowsocks shadowsocks deleted a comment from CooperLuo Jul 3, 2017
@shadowsocks shadowsocks unlocked this conversation Jul 3, 2017
@madeye
Copy link
Copy Markdown
Contributor

madeye commented Jul 3, 2017

Unlocked after removing SPAMs.

@aeroxy
Copy link
Copy Markdown

aeroxy commented Dec 5, 2017

This is exactly what I am trying to do! Unfortunately the build failed:

Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=512m; support was removed in 8.0
[info] Loading settings from plugins.sbt ...
[info] Loading project definition from /shadowsocks-android/project
[info] Updating {file:/shadowsocks-android/project/}shadowsocks-android-build...
[warn]  module not found: org.scala-android#sbt-android;1.7.2
[warn] ==== typesafe-ivy-releases: tried
[warn]   https://repo.typesafe.com/typesafe/ivy-releases/org.scala-android/sbt-android/scala_2.12/sbt_1.0/1.7.2/ivys/ivy.xml
[warn] ==== sbt-plugin-releases: tried
[warn]   https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/org.scala-android/sbt-android/scala_2.12/sbt_1.0/1.7.2/ivys/ivy.xml
[warn] ==== local: tried
[warn]   /Users/a/.ivy2/local/org.scala-android/sbt-android/scala_2.12/sbt_1.0/1.7.2/ivys/ivy.xml
[warn] ==== public: tried
[warn]   https://repo1.maven.org/maven2/org/scala-android/sbt-android_2.12_1.0/1.7.2/sbt-android-1.7.2.pom
[warn] ==== local-preloaded-ivy: tried
[warn]   /Users/a/.sbt/preloaded/org.scala-android/sbt-android/1.7.2/ivys/ivy.xml
[warn] ==== local-preloaded: tried
[warn]   file:////Users/a/.sbt/preloaded/org/scala-android/sbt-android_2.12_1.0/1.7.2/sbt-android-1.7.2.pom
[warn]  module not found: com.timushev.sbt#sbt-updates;0.1.10
[warn] ==== typesafe-ivy-releases: tried
[warn]   https://repo.typesafe.com/typesafe/ivy-releases/com.timushev.sbt/sbt-updates/scala_2.12/sbt_1.0/0.1.10/ivys/ivy.xml
[warn] ==== sbt-plugin-releases: tried
[warn]   https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.timushev.sbt/sbt-updates/scala_2.12/sbt_1.0/0.1.10/ivys/ivy.xml
[warn] ==== local: tried
[warn]   /Users/a/.ivy2/local/com.timushev.sbt/sbt-updates/scala_2.12/sbt_1.0/0.1.10/ivys/ivy.xml
[warn] ==== public: tried
[warn]   https://repo1.maven.org/maven2/com/timushev/sbt/sbt-updates_2.12_1.0/0.1.10/sbt-updates-0.1.10.pom
[warn] ==== local-preloaded-ivy: tried
[warn]   /Users/a/.sbt/preloaded/com.timushev.sbt/sbt-updates/0.1.10/ivys/ivy.xml
[warn] ==== local-preloaded: tried
[warn]   file:////Users/a/.sbt/preloaded/com/timushev/sbt/sbt-updates_2.12_1.0/0.1.10/sbt-updates-0.1.10.pom
[warn]  module not found: net.virtual-void#sbt-dependency-graph;0.8.2
[warn] ==== typesafe-ivy-releases: tried
[warn]   https://repo.typesafe.com/typesafe/ivy-releases/net.virtual-void/sbt-dependency-graph/scala_2.12/sbt_1.0/0.8.2/ivys/ivy.xml
[warn] ==== sbt-plugin-releases: tried
[warn]   https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/net.virtual-void/sbt-dependency-graph/scala_2.12/sbt_1.0/0.8.2/ivys/ivy.xml
[warn] ==== local: tried
[warn]   /Users/a/.ivy2/local/net.virtual-void/sbt-dependency-graph/scala_2.12/sbt_1.0/0.8.2/ivys/ivy.xml
[warn] ==== public: tried
[warn]   https://repo1.maven.org/maven2/net/virtual-void/sbt-dependency-graph_2.12_1.0/0.8.2/sbt-dependency-graph-0.8.2.pom
[warn] ==== local-preloaded-ivy: tried
[warn]   /Users/a/.sbt/preloaded/net.virtual-void/sbt-dependency-graph/0.8.2/ivys/ivy.xml
[warn] ==== local-preloaded: tried
[warn]   file:////Users/a/.sbt/preloaded/net/virtual-void/sbt-dependency-graph_2.12_1.0/0.8.2/sbt-dependency-graph-0.8.2.pom
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: org.scala-android#sbt-android;1.7.2: not found
[warn]  :: com.timushev.sbt#sbt-updates;0.1.10: not found
[warn]  :: net.virtual-void#sbt-dependency-graph;0.8.2: not found
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn] 
[warn]  Note: Some unresolved dependencies have extra attributes.  Check that these dependencies exist with the requested attributes.
[warn]    org.scala-android:sbt-android:1.7.2 (scalaVersion=2.12, sbtVersion=1.0)
[warn]    com.timushev.sbt:sbt-updates:0.1.10 (scalaVersion=2.12, sbtVersion=1.0)
[warn]    net.virtual-void:sbt-dependency-graph:0.8.2 (scalaVersion=2.12, sbtVersion=1.0)
[warn] 
[warn]  Note: Unresolved dependencies path:
[warn]    org.scala-android:sbt-android:1.7.2 (scalaVersion=2.12, sbtVersion=1.0) (/shadowsocks-android/project/plugins.sbt#L1-2)
[warn]      +- default:shadowsocks-android-build:0.1-SNAPSHOT (scalaVersion=2.12, sbtVersion=1.0)
[warn]    com.timushev.sbt:sbt-updates:0.1.10 (scalaVersion=2.12, sbtVersion=1.0) (/shadowsocks-android/project/plugins.sbt#L3-4)
[warn]      +- default:shadowsocks-android-build:0.1-SNAPSHOT (scalaVersion=2.12, sbtVersion=1.0)
[warn]    net.virtual-void:sbt-dependency-graph:0.8.2 (scalaVersion=2.12, sbtVersion=1.0) (/shadowsocks-android/project/plugins.sbt#L5-6)
[warn]      +- default:shadowsocks-android-build:0.1-SNAPSHOT (scalaVersion=2.12, sbtVersion=1.0)
[error] sbt.librarymanagement.ResolveException: unresolved dependency: org.scala-android#sbt-android;1.7.2: not found
[error] unresolved dependency: com.timushev.sbt#sbt-updates;0.1.10: not found
[error] unresolved dependency: net.virtual-void#sbt-dependency-graph;0.8.2: not found
[error]   at sbt.internal.librarymanagement.IvyActions$.resolveAndRetrieve(IvyActions.scala:331)
[error]   at sbt.internal.librarymanagement.IvyActions$.$anonfun$updateEither$1(IvyActions.scala:205)
[error]   at sbt.internal.librarymanagement.IvySbt$Module.$anonfun$withModule$1(Ivy.scala:243)
[error]   at sbt.internal.librarymanagement.IvySbt.$anonfun$withIvy$1(Ivy.scala:204)
[error]   at sbt.internal.librarymanagement.IvySbt.sbt$internal$librarymanagement$IvySbt$$action$1(Ivy.scala:70)
[error]   at sbt.internal.librarymanagement.IvySbt$$anon$3.call(Ivy.scala:77)
[error]   at xsbt.boot.Locks$GlobalLock.withChannel$1(Locks.scala:95)
[error]   at xsbt.boot.Locks$GlobalLock.xsbt$boot$Locks$GlobalLock$$withChannelRetries$1(Locks.scala:80)
[error]   at xsbt.boot.Locks$GlobalLock$$anonfun$withFileLock$1.apply(Locks.scala:99)
[error]   at xsbt.boot.Using$.withResource(Using.scala:10)
[error]   at xsbt.boot.Using$.apply(Using.scala:9)
[error]   at xsbt.boot.Locks$GlobalLock.ignoringDeadlockAvoided(Locks.scala:60)
[error]   at xsbt.boot.Locks$GlobalLock.withLock(Locks.scala:50)
[error]   at xsbt.boot.Locks$.apply0(Locks.scala:31)
[error]   at xsbt.boot.Locks$.apply(Locks.scala:28)
[error]   at sbt.internal.librarymanagement.IvySbt.withDefaultLogger(Ivy.scala:77)
[error]   at sbt.internal.librarymanagement.IvySbt.withIvy(Ivy.scala:199)
[error]   at sbt.internal.librarymanagement.IvySbt.withIvy(Ivy.scala:196)
[error]   at sbt.internal.librarymanagement.IvySbt$Module.withModule(Ivy.scala:242)
[error]   at sbt.internal.librarymanagement.IvyActions$.updateEither(IvyActions.scala:190)
[error]   at sbt.librarymanagement.ivy.IvyDependencyResolution.update(IvyDependencyResolution.scala:20)
[error]   at sbt.librarymanagement.DependencyResolution.update(DependencyResolution.scala:56)
[error]   at sbt.internal.LibraryManagement$.resolve$1(LibraryManagement.scala:38)
[error]   at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$12(LibraryManagement.scala:91)
[error]   at sbt.util.Tracked$.$anonfun$lastOutput$1(Tracked.scala:68)
[error]   at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$19(LibraryManagement.scala:104)
[error]   at scala.util.control.Exception$Catch.apply(Exception.scala:224)
[error]   at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$11(LibraryManagement.scala:104)
[error]   at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$11$adapted(LibraryManagement.scala:87)
[error]   at sbt.util.Tracked$.$anonfun$inputChanged$1(Tracked.scala:149)
[error]   at sbt.internal.LibraryManagement$.cachedUpdate(LibraryManagement.scala:118)
[error]   at sbt.Classpaths$.$anonfun$updateTask$5(Defaults.scala:2356)
[error]   at scala.Function1.$anonfun$compose$1(Function1.scala:44)
[error]   at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:42)
[error]   at sbt.std.Transform$$anon$4.work(System.scala:64)
[error]   at sbt.Execute.$anonfun$submit$2(Execute.scala:257)
[error]   at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:16)
[error]   at sbt.Execute.work(Execute.scala:266)
[error]   at sbt.Execute.$anonfun$submit$1(Execute.scala:257)
[error]   at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:167)
[error]   at sbt.CompletionService$$anon$2.call(CompletionService.scala:32)
[error]   at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error]   at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[error]   at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error]   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[error]   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[error]   at java.lang.Thread.run(Thread.java:748)
[error] (*:update) sbt.librarymanagement.ResolveException: unresolved dependency: org.scala-android#sbt-android;1.7.2: not found
[error] unresolved dependency: com.timushev.sbt#sbt-updates;0.1.10: not found
[error] unresolved dependency: net.virtual-void#sbt-dependency-graph;0.8.2: not found
Project loading failed: (r)etry, (q)uit, (l)ast, or (i)gnore? i
[warn] Ignoring load failure: no project loaded.
[error] java.lang.RuntimeException: Session not initialized.
[error]   at scala.sys.package$.error(package.scala:27)
[error]   at sbt.Project$.$anonfun$getOrError$1(Project.scala:442)
[error]   at scala.Option.getOrElse(Option.scala:121)
[error]   at sbt.Project$.getOrError(Project.scala:442)
[error]   at sbt.Project$.session(Project.scala:448)
[error]   at sbt.Project$.extract(Project.scala:453)
[error]   at sbt.BuiltinCommands$.notifyUsersAboutShell(Main.scala:796)
[error]   at sbt.BuiltinCommands$.$anonfun$notifyUsersAboutShell$3(Main.scala:805)
[error]   at sbt.Command$.$anonfun$command$2(Command.scala:79)
[error]   at sbt.MainLoop$.processCommand(MainLoop.scala:121)
[error]   at sbt.MainLoop$.$anonfun$next$2(MainLoop.scala:105)
[error]   at sbt.State$$anon$1.runCmd$1(State.scala:227)
[error]   at sbt.State$$anon$1.process(State.scala:233)
[error]   at sbt.MainLoop$.$anonfun$next$1(MainLoop.scala:105)
[error]   at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:16)
[error]   at sbt.MainLoop$.next(MainLoop.scala:105)
[error]   at sbt.MainLoop$.run(MainLoop.scala:98)
[error]   at sbt.MainLoop$.$anonfun$runWithNewLog$1(MainLoop.scala:76)
[error]   at sbt.io.Using.apply(Using.scala:22)
[error]   at sbt.MainLoop$.runWithNewLog(MainLoop.scala:70)
[error]   at sbt.MainLoop$.runAndClearLast(MainLoop.scala:52)
[error]   at sbt.MainLoop$.runLoggedLoop(MainLoop.scala:37)
[error]   at sbt.MainLoop$.runLogged(MainLoop.scala:29)
[error]   at sbt.StandardMain$.runManaged(Main.scala:104)
[error]   at sbt.xMain.run(Main.scala:71)
[error]   at xsbt.boot.Launch$$anonfun$run$1.apply(Launch.scala:109)
[error]   at xsbt.boot.Launch$.withContextLoader(Launch.scala:128)
[error]   at xsbt.boot.Launch$.run(Launch.scala:109)
[error]   at xsbt.boot.Launch$$anonfun$apply$1.apply(Launch.scala:35)
[error]   at xsbt.boot.Launch$.launch(Launch.scala:117)
[error]   at xsbt.boot.Launch$.apply(Launch.scala:18)
[error]   at xsbt.boot.Boot$.runImpl(Boot.scala:41)
[error]   at xsbt.boot.Boot$.main(Boot.scala:17)
[error]   at xsbt.boot.Boot.main(Boot.scala)
[error] Session not initialized.
[error] Use 'last' for the full log.

@madeye madeye force-pushed the master branch 2 times, most recently from 9bf3bf4 to dbb02a8 Compare December 8, 2017 07:57
@ghost
Copy link
Copy Markdown

ghost commented Mar 26, 2019

this is one of the worst pull request i have seen for ss, it literally defeats the reason for creating ss in the first place why not just download any proxy application and work off that.

@Mygod
Copy link
Copy Markdown
Contributor

Mygod commented Apr 22, 2020

#2454 added support for plain method, consider using that for now.

@Mygod Mygod closed this Apr 22, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants