mirror of
https://github.com/ngrok/ngrok-api-ruby.git
synced 2026-06-16 16:54:38 +00:00
253 lines
11 KiB
Ruby
253 lines
11 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'ostruct'
|
|
|
|
module NgrokAPI
|
|
##
|
|
# Low-level api client for communicating with Ngrok's HTTP API.
|
|
# Use this object to instantiate your clients.
|
|
class Client
|
|
def initialize(api_key:, base_url: 'https://api.ngrok.com')
|
|
@client = NgrokAPI::HttpClient.new(api_key: api_key, base_url: base_url)
|
|
end
|
|
|
|
##
|
|
# Abuse Reports allow you to submit take-down requests for URLs hosted by
|
|
# ngrok that violate ngrok's terms of service.
|
|
#
|
|
# @return [NgrokAPI::Services::AbuseReportsClient]
|
|
def abuse_reports
|
|
@_abuse_reports ||= NgrokAPI::Services::AbuseReportsClient.new(client: @client)
|
|
end
|
|
|
|
def agent_ingresses
|
|
@_agent_ingresses ||= NgrokAPI::Services::AgentIngressesClient.new(client: @client)
|
|
end
|
|
|
|
##
|
|
# API Keys are used to authenticate to the [ngrok
|
|
# API](https://ngrok.com/docs/api#authentication). You may use the API itself
|
|
# to provision and manage API Keys but you'll need to provision your first API
|
|
# key from the [API Keys page](https://dashboard.ngrok.com/api/keys) on your
|
|
# ngrok.com dashboard.
|
|
#
|
|
# @return [NgrokAPI::Services::APIKeysClient]
|
|
def api_keys
|
|
@_api_keys ||= NgrokAPI::Services::APIKeysClient.new(client: @client)
|
|
end
|
|
|
|
##
|
|
# Certificate Authorities are x509 certificates that are used to sign other
|
|
# x509 certificates. Attach a Certificate Authority to the Mutual TLS module
|
|
# to verify that the TLS certificate presented by a client has been signed by
|
|
# this CA. Certificate Authorities are used only for mTLS validation only and
|
|
# thus a private key is not included in the resource.
|
|
#
|
|
# @return [NgrokAPI::Services::CertificateAuthoritiesClient]
|
|
def certificate_authorities
|
|
@_certificate_authorities ||= NgrokAPI::Services::CertificateAuthoritiesClient.new(client: @client)
|
|
end
|
|
|
|
##
|
|
# Tunnel Credentials are ngrok agent authtokens. They authorize the ngrok
|
|
# agent to connect the ngrok service as your account. They are installed with
|
|
# the `ngrok config add-authtoken` command or by specifying it in the `ngrok.yml`
|
|
# configuration file with the `authtoken` property.
|
|
#
|
|
# @return [NgrokAPI::Services::CredentialsClient]
|
|
def credentials
|
|
@_credentials ||= NgrokAPI::Services::CredentialsClient.new(client: @client)
|
|
end
|
|
|
|
##
|
|
# Endpoints provides an API for querying the endpoint objects
|
|
# which define what tunnel or edge is used to serve a hostport.
|
|
# Only active endpoints associated with a tunnel or backend are returned.
|
|
#
|
|
# @return [NgrokAPI::Services::EndpointsClient]
|
|
def endpoints
|
|
@_endpoints ||= NgrokAPI::Services::EndpointsClient.new(client: @client)
|
|
end
|
|
|
|
def event_destinations
|
|
@_event_destinations ||= NgrokAPI::Services::EventDestinationsClient.new(client: @client)
|
|
end
|
|
|
|
def event_subscriptions
|
|
@_event_subscriptions ||= NgrokAPI::Services::EventSubscriptionsClient.new(client: @client)
|
|
end
|
|
|
|
def event_sources
|
|
@_event_sources ||= NgrokAPI::Services::EventSourcesClient.new(client: @client)
|
|
end
|
|
|
|
##
|
|
# IP Policies are reusable groups of CIDR ranges with an `allow` or `deny`
|
|
# action. They can be attached to endpoints via the Endpoint Configuration IP
|
|
# Policy module. They can also be used with IP Restrictions to control source
|
|
# IP ranges that can start tunnel sessions and connect to the API and dashboard.
|
|
#
|
|
# @return [NgrokAPI::Services::IPPoliciesClient]
|
|
def ip_policies
|
|
@_ip_policies ||= NgrokAPI::Services::IPPoliciesClient.new(client: @client)
|
|
end
|
|
|
|
##
|
|
# IP Policy Rules are the IPv4 or IPv6 CIDRs entries that
|
|
# make up an IP Policy.
|
|
#
|
|
# @return [NgrokAPI::Services::IPPolicyRulesClient]
|
|
def ip_policy_rules
|
|
@_ip_policy_rules ||= NgrokAPI::Services::IPPolicyRulesClient.new(client: @client)
|
|
end
|
|
|
|
##
|
|
# An IP restriction is a restriction placed on the CIDRs that are allowed to
|
|
# initiate traffic to a specific aspect of your ngrok account. An IP
|
|
# restriction has a type which defines the ingress it applies to. IP
|
|
# restrictions can be used to enforce the source IPs that can make API
|
|
# requests, log in to the dashboard, start ngrok agents, and connect to your
|
|
# public-facing endpoints.
|
|
#
|
|
# @return [NgrokAPI::Services::IPRestrictionsClient]
|
|
def ip_restrictions
|
|
@_ip_restrictions ||= NgrokAPI::Services::IPRestrictionsClient.new(client: @client)
|
|
end
|
|
|
|
##
|
|
# Reserved Addresses are TCP addresses that can be used to listen for traffic.
|
|
# TCP address hostnames and ports are assigned by ngrok, they cannot be
|
|
# chosen.
|
|
#
|
|
# @return [NgrokAPI::Services::ReservedAddrsClient]
|
|
def reserved_addrs
|
|
@_reserved_addrs ||= NgrokAPI::Services::ReservedAddrsClient.new(client: @client)
|
|
end
|
|
|
|
##
|
|
# Reserved Domains are hostnames that you can listen for traffic on. Domains
|
|
# can be used to listen for http, https or tls traffic. You may use a domain
|
|
# that you own by creating a CNAME record specified in the returned resource.
|
|
# This CNAME record points traffic for that domain to ngrok's edge servers.
|
|
#
|
|
# @return [NgrokAPI::Services::ReservedDomainsClient]
|
|
def reserved_domains
|
|
@_reserved_domains ||= NgrokAPI::Services::ReservedDomainsClient.new(client: @client)
|
|
end
|
|
|
|
##
|
|
# An SSH Certificate Authority is a pair of an SSH Certificate and its private
|
|
# key that can be used to sign other SSH host and user certificates.
|
|
#
|
|
# @return [NgrokAPI::Services::SSHCertificateAuthoritiesClient]
|
|
def ssh_certificate_authorities
|
|
@_ssh_certificate_authorities ||= NgrokAPI::Services::SSHCertificateAuthoritiesClient.new(client: @client)
|
|
end
|
|
|
|
##
|
|
# SSH Credentials are SSH public keys that can be used to start SSH tunnels
|
|
# via the ngrok SSH tunnel gateway.
|
|
#
|
|
# @return [NgrokAPI::Services::SSHCredentialsClient]
|
|
def ssh_credentials
|
|
@_ssh_credentials ||= NgrokAPI::Services::SSHCredentialsClient.new(client: @client)
|
|
end
|
|
|
|
##
|
|
# SSH Host Certificates along with the corresponding private key allows an SSH
|
|
# server to assert its authenticity to connecting SSH clients who trust the
|
|
# SSH Certificate Authority that was used to sign the certificate.
|
|
#
|
|
# @return [NgrokAPI::Services::SSHHostCertificatesClient]
|
|
def ssh_host_certificates
|
|
@_ssh_host_certificates ||= NgrokAPI::Services::SSHHostCertificatesClient.new(client: @client)
|
|
end
|
|
|
|
##
|
|
# SSH User Certificates are presented by SSH clients when connecting to an SSH
|
|
# server to authenticate their connection. The SSH server must trust the SSH
|
|
# Certificate Authority used to sign the certificate.
|
|
#
|
|
# @return [NgrokAPI::Services::SSHUserCertificatesClient]
|
|
def ssh_user_certificates
|
|
@_ssh_user_certificates ||= NgrokAPI::Services::SSHUserCertificatesClient.new(client: @client)
|
|
end
|
|
|
|
##
|
|
# TLS Certificates are pairs of x509 certificates and their matching private
|
|
# key that can be used to terminate TLS traffic. TLS certificates are unused
|
|
# until they are attached to a Domain. TLS Certificates may also be
|
|
# provisioned by ngrok automatically for domains on which you have enabled
|
|
# automated certificate provisioning.
|
|
#
|
|
# @return [NgrokAPI::Services::TLSCertificatesClient]
|
|
def tls_certificates
|
|
@_tls_certificates ||= NgrokAPI::Services::TLSCertificatesClient.new(client: @client)
|
|
end
|
|
|
|
##
|
|
# Tunnel Sessions represent instances of ngrok agents or SSH reverse tunnel
|
|
# sessions that are running and connected to the ngrok service. Each tunnel
|
|
# session can include one or more Tunnels.
|
|
#
|
|
# @return [NgrokAPI::Services::TunnelSessionsClient]
|
|
def tunnel_sessions
|
|
@_tunnel_sessions ||= NgrokAPI::Services::TunnelSessionsClient.new(client: @client)
|
|
end
|
|
|
|
##
|
|
# Tunnels provide endpoints to access services exposed by a running ngrok
|
|
# agent tunnel session or an SSH reverse tunnel session.
|
|
#
|
|
# @return [NgrokAPI::Services::TunnelsClient]
|
|
def tunnels
|
|
@_tunnels ||= NgrokAPI::Services::TunnelsClient.new(client: @client)
|
|
end
|
|
|
|
def backends
|
|
ns = OpenStruct.new
|
|
ns.failover = NgrokAPI::Services::FailoverBackendsClient.new(client: @client)
|
|
ns.http_response = NgrokAPI::Services::HTTPResponseBackendsClient.new(client: @client)
|
|
ns.tunnel_group = NgrokAPI::Services::TunnelGroupBackendsClient.new(client: @client)
|
|
ns.weighted = NgrokAPI::Services::WeightedBackendsClient.new(client: @client)
|
|
|
|
ns
|
|
end
|
|
|
|
def edges
|
|
ns = OpenStruct.new
|
|
ns.https_routes = NgrokAPI::Services::EdgesHTTPSRoutesClient.new(client: @client)
|
|
ns.https = NgrokAPI::Services::EdgesHTTPSClient.new(client: @client)
|
|
ns.tcp = NgrokAPI::Services::EdgesTCPClient.new(client: @client)
|
|
ns.tls = NgrokAPI::Services::EdgesTLSClient.new(client: @client)
|
|
|
|
ns
|
|
end
|
|
|
|
def edge_modules
|
|
ns = OpenStruct.new
|
|
ns.https_edge_mutual_tls = NgrokAPI::Services::HTTPSEdgeMutualTLSModuleClient.new(client: @client)
|
|
ns.https_edge_tls_termination = NgrokAPI::Services::HTTPSEdgeTLSTerminationModuleClient.new(client: @client)
|
|
ns.https_edge_route_backend = NgrokAPI::Services::EdgeRouteBackendModuleClient.new(client: @client)
|
|
ns.https_edge_route_ip_restriction = NgrokAPI::Services::EdgeRouteIPRestrictionModuleClient.new(client: @client)
|
|
ns.https_edge_route_request_headers = NgrokAPI::Services::EdgeRouteRequestHeadersModuleClient.new(client: @client)
|
|
ns.https_edge_route_response_headers = NgrokAPI::Services::EdgeRouteResponseHeadersModuleClient.new(client: @client)
|
|
ns.https_edge_route_compression = NgrokAPI::Services::EdgeRouteCompressionModuleClient.new(client: @client)
|
|
ns.https_edge_route_circuit_breaker = NgrokAPI::Services::EdgeRouteCircuitBreakerModuleClient.new(client: @client)
|
|
ns.https_edge_route_webhook_verification = NgrokAPI::Services::EdgeRouteWebhookVerificationModuleClient.new(client: @client)
|
|
ns.https_edge_route_oauth = NgrokAPI::Services::EdgeRouteOAuthModuleClient.new(client: @client)
|
|
ns.https_edge_route_saml = NgrokAPI::Services::EdgeRouteSAMLModuleClient.new(client: @client)
|
|
ns.https_edge_route_oidc = NgrokAPI::Services::EdgeRouteOIDCModuleClient.new(client: @client)
|
|
ns.https_edge_route_websocket_tcp_converter = NgrokAPI::Services::EdgeRouteWebsocketTCPConverterModuleClient.new(client: @client)
|
|
ns.tcp_edge_backend = NgrokAPI::Services::TCPEdgeBackendModuleClient.new(client: @client)
|
|
ns.tcp_edge_ip_restriction = NgrokAPI::Services::TCPEdgeIPRestrictionModuleClient.new(client: @client)
|
|
ns.tls_edge_backend = NgrokAPI::Services::TLSEdgeBackendModuleClient.new(client: @client)
|
|
ns.tls_edge_ip_restriction = NgrokAPI::Services::TLSEdgeIPRestrictionModuleClient.new(client: @client)
|
|
ns.tls_edge_mutual_tls = NgrokAPI::Services::TLSEdgeMutualTLSModuleClient.new(client: @client)
|
|
ns.tls_edge_tls_termination = NgrokAPI::Services::TLSEdgeTLSTerminationModuleClient.new(client: @client)
|
|
|
|
ns
|
|
end
|
|
end
|
|
end
|