mirror of
https://github.com/ONLYOFFICE/document-server-integration.git
synced 2026-02-10 18:05:10 +08:00
58 lines
1.7 KiB
Ruby
58 lines
1.7 KiB
Ruby
#
|
|
# (c) Copyright Ascensio System SIA 2025
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
#
|
|
|
|
# frozen_string_literal: true
|
|
# typed: true
|
|
|
|
require 'sorbet-runtime'
|
|
require 'uri'
|
|
require_relative '../configuration/configuration'
|
|
|
|
# Class manages URI resolution, redirecting public URLs to private ones based on the configuration.
|
|
class ProxyManager
|
|
extend T::Sig
|
|
|
|
sig { params(config_manager: ConfigurationManager).void }
|
|
def initialize(config_manager:)
|
|
@config_manager = config_manager
|
|
end
|
|
|
|
sig { params(uri: URI::Generic).returns(URI::Generic) }
|
|
def resolve_uri(uri)
|
|
return uri unless refer_public_url(uri)
|
|
|
|
redirect_public_url(uri)
|
|
end
|
|
|
|
sig { params(uri: URI::Generic).returns(T::Boolean) }
|
|
private def refer_public_url(uri)
|
|
public_uri = @config_manager.document_server_public_uri
|
|
uri.scheme == public_uri.scheme &&
|
|
uri.host == public_uri.host &&
|
|
uri.port == public_uri.port
|
|
end
|
|
|
|
sig { params(uri: URI::Generic).returns(URI::Generic) }
|
|
private def redirect_public_url(uri)
|
|
private_uri = @config_manager.document_server_private_uri
|
|
redirected_uri = uri
|
|
redirected_uri.scheme = private_uri.scheme
|
|
redirected_uri.host = private_uri.host
|
|
redirected_uri.port = private_uri.port
|
|
redirected_uri
|
|
end
|
|
end
|