package tcp
- Alphabetic
- Public
- All
Type Members
- class KvTcpServiceDataStoreDataStore extends TcpServiceDataStore with RedisLikeStore[TcpService]
- case class RunningServer(port: Int, oldService: TcpService, binding: Future[ServerBinding]) extends Product with Serializable
- class RunningServers extends AnyRef
- case class SniSettings(enabled: Boolean, forwardIfNoMatch: Boolean, forwardsTo: TcpTarget = ...) extends Product with Serializable
- class TcpEngineProvider extends AnyRef
- class TcpProxy extends AnyRef
- case class TcpRule(domain: String, targets: Seq[TcpTarget]) extends Product with Serializable
-
case class
TcpService(id: String = IdGenerator.token, name: String = "TCP Proxy", description: String = "A TCP Proxy", enabled: Boolean, tls: TlsMode, sni: SniSettings, clientAuth: ClientAuth, port: Int, interface: String = "0.0.0.0", rules: Seq[TcpRule], tags: Seq[String], metadata: Map[String, String], location: EntityLocation = otoroshi.models.EntityLocation()) extends EntityLocationSupport with Product with Serializable
- [x] TCP service can be disabled - [x] TCP service without sni is defined on a port and forwards to targets - [x] Target can define their own dns resolving - [x] TCP service can match a sni domain for a same port (need to catch sni name per request) - [x] TCP service can forward non matching request to local http server (only for sni request) - [x] TCP service can be exposed over tls using dyn tls stuff - [x] TCP service can passthrough tls – [x] TCP service can specify if it needs or wants mtls – [x] Passthrough + SNI - [x] rules if no sni matching, then only one Tcp service can exists with a specific port number if sni matching, then multiple Tcp services can exists with a the port number if sni matching, then all Tcp services using the same port number must have the same Tls mode - [x] We need a new datastore for tcp services - [x] We need to include tcp services in backup/restore - [x] We need a new admin api for tcp services - [x] We need a new UI for tcp services - [x] We need to wire routexxx functions to the new datastore - [x] We need to generate access events - [x] A job will request all tcp services with unique ports and stats tcp server.
- [x] TCP service can be disabled - [x] TCP service without sni is defined on a port and forwards to targets - [x] Target can define their own dns resolving - [x] TCP service can match a sni domain for a same port (need to catch sni name per request) - [x] TCP service can forward non matching request to local http server (only for sni request) - [x] TCP service can be exposed over tls using dyn tls stuff - [x] TCP service can passthrough tls – [x] TCP service can specify if it needs or wants mtls – [x] Passthrough + SNI - [x] rules if no sni matching, then only one Tcp service can exists with a specific port number if sni matching, then multiple Tcp services can exists with a the port number if sni matching, then all Tcp services using the same port number must have the same Tls mode - [x] We need a new datastore for tcp services - [x] We need to include tcp services in backup/restore - [x] We need a new admin api for tcp services - [x] We need a new UI for tcp services - [x] We need to wire routexxx functions to the new datastore - [x] We need to generate access events - [x] A job will request all tcp services with unique ports and stats tcp server. Servers will be shut down with otoroshi app - [ ] add api in swagger when feature is ready - [ ] support ClientConfig for tcp - [ ] support ClientValidator for tcp - [ ] support IpFiltering - [ ] support healthCheck for tcp (+UI) - [ ] support snowMonkey for tcp - [ ] support live metrics (+UI) - [ ] support analytics in UI (metrics + events)
- sealed trait TcpServiceDataStore extends BasicStore[TcpService]
- case class TcpTarget(host: String, ip: Option[String], port: Int, tls: Boolean) extends Product with Serializable
- sealed trait TlsMode extends AnyRef