yang-f / outline-shadowsocksconfig

Serialize Shadowsocks configuration data to and from SIP002 and legacy URI formats.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ShadowsocksConfig

Build Status

TypeScript library to store Shadowsocks configuration data as well as (de)serialize it to/from SIP002 and legacy base64 URIs. Node.js- and browser-friendly.

References

Fields, validation, and sanitization

Some fields are validated, normalized, and/or sanitized, but not all:

  • host
    • May be an IPv4, IPv6, or hostname.
    • IPv6 :: shorthand is not currently supported.
    • Unicode hostnames are converted to punycode.
    • Hostnames must begin with a character in the set [A-z0-9].
  • port
    • Must be an integer from 0 to 65535.
  • method
    • One of the values specified in shadowsocks_config.ts#METHODS.
  • tag *
    • Only URI encoded/decoded.
  • password *
  • extra *
    • Any additional configuration (e.g. timeout, SIP003 plugin, etc.) may be stored here.

* No sanitization is performed for these fields. Client code is responsible for sanitizing these values when received from untrusted input.

Usage

Please see test/unit/shadowsocks_config.spec.ts for example usage.

Development

First install yarn.

The Gulpfile itself is written in TypeScript. You can run the package script gulp to compile and run it on the fly:

yarn run gulp

Unit Tests

yarn run test

TypeScript Linting

yarn run gulp tslint

About

Serialize Shadowsocks configuration data to and from SIP002 and legacy URI formats.

License:Apache License 2.0


Languages

Language:TypeScript 100.0%