Jigsaw-Code / outline-sdk

SDK to build network tools based on Outline components.
https://getoutline.org/for-developers/
Apache License 2.0
300 stars 39 forks source link

Outline-cli does not support ssconf:// link #196

Open databasd opened 6 months ago

databasd commented 6 months ago

I've built outline-cli from source as described in the readme, however, I get the following error when providing `ssconf://' argument:

failed to create OutlineDevice: config must start with 'ss://'

Is support for this functionality coming soon?

jyyi1 commented 6 months ago

Hi @databasd , Outline CLI can't use "ssconf://" yet. We do plan to add support for it someday. You may also fork the project and contribute to the corresponding code to support this feature.

databasd commented 5 months ago

Hi. I would contribute but where is the reference code for parsing ssconf:// in the gui application ?

jyyi1 commented 5 months ago

Hi @databasd ,

Thanks for being willing to help! Our dynamic key parsing logic is implemented in TypeScript, and we need to convert it to Golang:

  1. Change ssconf://<my-dynamic-key> to HTTPS URL https://<my-dynamic-key>
  2. Fetch the HTTPS URL, you may use Golang's http package to accomplish that
  3. Process the response: 3a. If it's a static Outline key (starts with ss://), simple reuse the existing Go implementation for parsing it 3b. If it's a JSON object ({ "method": "...", "password": "...", "server": "...", "server_port": ..., "prefix": "..." }, where prefix is optional), you may either use json.Unmarshal to parse the object and construct the shadowsocksConfig object, or you may convert the JSON back into a static Outline key (ss://) and jump to step 3a.

Feel free to create a draft pull request to get the discussion started. We can work on the details together.

Please note that, you can start using your implementation even before the review is complete.

pmoieni commented 2 weeks ago

Hi @jyyi1 , opened a PR for this but I'd like to discuss the issues I'm currently facing