Outline-client: Connect Outline Server to my own Client Side Application.

Created on 25 May 2020  路  3Comments  路  Source: Jigsaw-Code/outline-client

Describe the issue
I have built my own client side app using Flutter. I have also built a server on GCP using Outline Manager. But now I want to connect my own client app with server to provide VPN services. So, how can I do that? (I hope I can bypass the ACCESS KEY as I don't want to implement it)
Would building a REST API be useful here?
What I actually want is that my client app (which is made using Flutter) should be able to connect to the Server hosted on GCP.

Environment

  • OS: Windows 10 Pro (for developing), Android & iOS (client side app), GCP (for hosting the server)
  • Yarn version: 1.22.4
  • Node.js version: v10.16.3
  • Development: Android Studio (Flutter)
  • I have also downloaded the Outline Server repo and Outline Client repo (In case if needed)

Additional context
I would appreciate if helped. Sorry, for noob issue. But after all, every mistake is a new experience. If any other things, documents are required, you can surely request for it.

Most helpful comment

For Android, starting from https://github.com/Jigsaw-Code/outline-client/issues/786#issuecomment-628041867 the call path goes:

  • outline_server.ts passes actions to the outline plugin,
  • which are received in OutlinePlugin.java
  • which calls down to VpnTunnelService.java
  • which calls down to Shadowsocks.java
  • which starts/stops a process using libss-local.so

You might want to call Shadowsocks.java yourself, but you will need to pass it a config, like VpnTunnelService.java does.

Alternatively you could copy Shadowsocks.java and make your own version.

If Flutter cannot call into java classes, then you'll need to do what Shadowsocks.java does, but in Flutter code. (Specifically: start a process by executing libss-local.so with some arguments.)

All 3 comments

For Android, starting from https://github.com/Jigsaw-Code/outline-client/issues/786#issuecomment-628041867 the call path goes:

  • outline_server.ts passes actions to the outline plugin,
  • which are received in OutlinePlugin.java
  • which calls down to VpnTunnelService.java
  • which calls down to Shadowsocks.java
  • which starts/stops a process using libss-local.so

You might want to call Shadowsocks.java yourself, but you will need to pass it a config, like VpnTunnelService.java does.

Alternatively you could copy Shadowsocks.java and make your own version.

If Flutter cannot call into java classes, then you'll need to do what Shadowsocks.java does, but in Flutter code. (Specifically: start a process by executing libss-local.so with some arguments.)

Thanks for the help @joeytwiddle But I actually, I don't have much experience in solving such types of problems. So, I just came on a conclusion that editing the front-end will be a much easier and a convenient solution.
So, before starting up with the editing, I thought of building the android app. But I am getting an error with code 127. I have opened an issue on it, so could you please help me with that?

Issue: here

Also, just wanted to ask that when we build the app (let's say for android), on opening the app we get the option to input the ACCESS KEY. So, how can I remove that part and make a drop down menu instead which directly connects to the server.
In short, I mean that even if I get an ACCESS KEY while creating a server in the Outline Manager; just to bypass the ACCESS KEY, do I have to implement it inside the code? Or do something else?

Thanks for helping me out this far :)

Read what the current app does when the users adds a new ss key. (Hint: It adds a new server to the server store.)

Do that with your own code instead. Then you can remove the existing access key UI, because you are doing it automatically.


The current app shows a list of servers as big circles/logos.

You can remove that code, and use similar code to display the list of servers in a small menu instead.

Was this page helpful?
0 / 5 - 0 ratings