Config

Tunnel

TunnelConfig

Tunnel è l'oggetto di livello superiore in una configurazione Outline. Specifica come deve essere configurata la VPN.

Formato: ExplicitTunnelConfig | LegacyShadowsocksConfig | LegacyShadowsocksURI

ExplicitTunnelConfig

Formato: struct

Campi:

  • transport (TransportConfig): il Transport da utilizzare per scambiare i pacchetti con la destinazione target.
  • error (struct): informazioni da comunicare all'utente in caso di errore del servizio (ad es. chiave scaduta, quota esaurita).
    • message (string): messaggio semplice da mostrare all'utente.
    • details (string): messaggio da mostrare quando l'utente apre i dettagli dell'errore. Utile per la risoluzione dei problemi.

I campi error e transport si escludono a vicenda.

Esempio riuscito:

transport:
  $type: tcpudp
  tcp:
    ...  # Stream Dialer for TCP
  udp:
    ...  # Packet Listener for UDP

Esempio di errore:

error:
  message: Quota exceeded
  details: Used 100GB out of 100GB

Transport

TransportConfig

Specifica come i pacchetti devono essere scambiati con la destinazione target.

Formato: Interface

Tipi di Interface supportati:

TCPUDPConfig

TCPUDPConfig consente di impostare strategie TCP e UDP separate.

Formato: struct

Campi:

Esempio di invio di TCP e UDP a endpoint diversi:

tcp:
  $type: shadowsocks
  endpoint: ss.example.com:80
  <<: &cipher
    cipher: chacha20-ietf-poly1305
    secret: SECRET
  prefix: "POST "

udp:
  $type: shadowsocks
  endpoint: ss.example.com:53
  <<: *cipher

Endpoint

Gli endpoint stabiliscono connessioni con un endpoint fisso. Sono preferibili ai dialer poiché consentono ottimizzazioni specifiche per gli endpoint. Esistono Stream Endpoint e Packet Endpoint.

EndpointConfig

Formato: string | Interface

L'endpoint string è l'indirizzo host:porta dell'endpoint selezionato. La connessione viene stabilita tramite il dialer predefinito.

Tipi di Interface supportati per Stream Endpoint e Packet Endpoint:

DialEndpointConfig

Stabilisce connessioni componendo un indirizzo fisso. Può essere dotato di un dialer, che consente la composizione delle strategie.

Formato: struct

Campi:

  • address (string): l'indirizzo dell'endpoint da comporre.
  • dialer (DialerConfig): il dialer da utilizzare per comporre l'indirizzo.

WebsocketEndpointConfig

Connessioni Stream e Packet dei Tunnel verso un endpoint tramite Websocket.

Per le connessioni Stream, ogni scrittura viene trasformata in un messaggio Websocket. Per le connessioni Packet, ogni pacchetto viene convertito in un messaggio Websocket.

Formato: struct

Campi:

  • url (string): l'URL per l'endpoint Websocket. Lo schema deve essere https o wss per Websocket su TLS e http o ws per Websocket con testo non crittografato.
  • endpoint (EndpointConfig): l'endpoint del server web a cui connettersi. Se assente, si connette all'indirizzo specificato nell'URL.

Dialer

I dialer stabiliscono connessioni in base all'indirizzo di un endpoint. Esistono Stream Dialer e Packet Dialer.

DialerConfig

Formato: null | Interface

Il dialer null (assente) indica il dialer predefinito, che utilizza connessioni TCP dirette per Stream e connessioni UDP dirette per Packet.

Tipi di Interface supportati per Stream Dialer e Packet Dialer:

Packet Listener

Un Packet Listener stabilisce una connessione Packet illimitata che può essere utilizzata per inviare pacchetti a più destinazioni.

PacketListenerConfig

Formato: null | Interface

Il Packet Listener null (assente) indica il Packet Listener predefinito, che è un Packet Listener UDP.

Tipi di Interface supportati:

Strategie

Shadowsocks

LegacyShadowsocksConfig

LegacyShadowsocksConfig rappresenta un Tunnel che utilizza Shadowsocks come Transport. Implementa il formato legacy per la compatibilità con le versioni precedenti.

Formato: struct

Campi:

Esempio:

server: example.com
server_port: 4321
method: chacha20-ietf-poly1305
password: SECRET
prefix: "POST "

LegacyShadowsocksURI

LegacyShadowsocksURI rappresenta un Tunnel che utilizza Shadowsocks come Transport. Implementa il formato URL legacy per la compatibilità con le versioni precedenti.

Formato: string

Consulta Formato LegacyShadowsocksURI e Schema URI SIP002. Non supportiamo i plug-in.

Esempio:

ss://chacha20-ietf-poly1305:SECRET@example.com:443?prefix=POST%20

ShadowsocksConfig

ShadowsocksConfig può rappresentare uno Stream Dialer o un Packet Dialer, così come un Packet Listener che utilizza Shadowsocks.

Formato: struct

Campi:

Esempio:

endpoint: example.com:80
cipher: chacha20-ietf-poly1305
secret: SECRET
prefix: "POST "

Meta definizioni

FirstSupportedConfig

Utilizza la prima configurazione supportata dall'applicazione. Questo è un modo per incorporare le nuove configurazioni mantenendo la compatibilità con quelle precedenti.

Formato: struct

Campi:

Esempio:

options:
  - $type: websocket
    url: wss://example.com/SECRET_PATH
  - ss.example.com:4321

Interface

Interface consente di scegliere una tra più implementazioni. Utilizza il campo $type per specificare il tipo rappresentato da Config.

Esempio:

$type: shadowsocks
endpoint: example.com:4321
cipher: chacha20-ietf-poly1305
secret: SECRET