Commit d308eba0 authored by Łukasz Nowak's avatar Łukasz Nowak

caddy-frontend/test: Assert data sent to nodes from root

parent c9e44430
......@@ -102,6 +102,10 @@ TEST_IP = os.environ['SLAPOS_TEST_IPV4']
DNS_CACHE = {}
def unicode_escape(s):
return s.encode('unicode_escape').decode()
def add_custom_dns(domain, port, ip):
port = int(port)
key = (domain, port)
......@@ -412,6 +416,75 @@ class TestDataMixin(object):
self.assertTestData(
runtime_data, data_replacement_dict=data_replacement_dict)
def _updateDataReplacementDict(self, data_replacement_dict):
pass
def test00cluster_request_instance_parameter_dict(self):
# test00 name chosen to be run as first test
cluster_request_parameter_list = []
data_replacement_dict = {}
computer = self.slap._slap.registerComputer('local')
# state of parameters of all instances
for partition in computer.getComputerPartitionList():
if partition.getState() == 'destroyed':
continue
parameter_dict = partition.getInstanceParameterDict()
if '_' in parameter_dict:
# deserialize for pretty printing only, and keep in mind
# that slave-kedifa-information content is string, so exactly it's
# sent like this to the real master
parameter_dict['_'] = json.loads(parameter_dict['_'])
parameter_dict['timestamp'] = '@@TIMESTAMP@@'
cluster_request_parameter_list.append(parameter_dict)
# XXX: Dirty decode/encode/decode...?
data_replacement_dict = {
'@@_ipv4_address@@': self._ipv4_address,
'@@_ipv6_address@@': self._ipv6_address,
'@@_server_http_port@@': str(self._server_http_port),
'@@_server_https_auth_port@@': str(self._server_https_auth_port),
'@@_server_https_port@@': str(self._server_https_port),
'@@_server_netloc_a_http_port@@': str(self._server_netloc_a_http_port),
'@@_server_netloc_b_http_port@@': str(self._server_netloc_b_http_port),
'@@another_server_ca.certificate_pem@@': unicode_escape(
self.another_server_ca.certificate_pem.decode()),
'@@another_server_ca.certificate_pem_double@@': unicode_escape(
unicode_escape(self.another_server_ca.certificate_pem.decode())),
'@@getSoftwareURL@@': self.getSoftwareURL(),
'@@test_server_ca.certificate_pem@@': unicode_escape(
self.test_server_ca.certificate_pem.decode()),
'@@test_server_ca.certificate_pem_double@@': unicode_escape(
unicode_escape(self.test_server_ca.certificate_pem.decode())),
}
# support slave-less test cases
if getattr(self, 'getSlaveConnectionParameterDictDict', None) is not None:
for reference, value in self.getSlaveConnectionParameterDictDict(
).items():
data_replacement_dict[
'@@%s_key-generate-auth-url@@' % reference] = value[
'key-generate-auth-url'].split('/')[-2]
data_replacement_dict[
'@@%s_key-upload-url@@' % reference] = value[
'key-generate-auth-url'].split('/')[-1]
connection_parameter_dict = self.requestDefaultInstance(
).getConnectionParameterDict()
data_replacement_dict[
'@@master-key-download-url_endpoint@@'] = connection_parameter_dict[
'master-key-generate-auth-url'].split('/')[-2]
data_replacement_dict['@@monitor-password@@'] = connection_parameter_dict[
'monitor-setup-url'].split('=')[-1]
json_data = json.dumps(
cluster_request_parameter_list, indent=2,
# keys are sorted, even after deserializing, in order to have
# stable information about the sent parameters between runs
sort_keys=True
)
# again some mangling -- allow subclasses to update on need
self._updateDataReplacementDict(data_replacement_dict)
self.assertTestData(json_data, data_replacement_dict=data_replacement_dict)
def fakeHTTPSResult(domain, path, port=HTTPS_PORT,
headers=None, cookies=None, source_ip=SOURCE_IP):
......@@ -1281,6 +1354,18 @@ class SlaveHttpFrontendTestCase(HttpFrontendTestCase):
).getConnectionParameterDict())
return parameter_dict_list
@classmethod
def getSlaveConnectionParameterDictDict(cls):
parameter_dict_dict = {}
for slave_reference, partition_parameter_kw in list(
cls.getSlaveParameterDictDict().items()):
parameter_dict_dict[slave_reference] = cls.requestSlaveInstance(
partition_reference=slave_reference,
partition_parameter_kw=partition_parameter_kw,
).getConnectionParameterDict()
return parameter_dict_dict
@classmethod
def untilSlavePartitionReady(cls):
# all on-watch services shall not be exited
......@@ -4908,6 +4993,17 @@ class TestSlaveSlapOSMasterCertificateCompatibilityOverrideMaster(
cls._fetchKedifaCaucaseCaCertificateFile(parameter_dict)
# Do not upload certificates for the master partition
def _updateDataReplacementDict(self, data_replacement_dict):
local_replacement_dict = {
'@@certificate_pem@@': unicode_escape(self.certificate_pem.decode()),
'@@key_pem@@': unicode_escape(self.key_pem.decode()),
}
for key in list(local_replacement_dict.keys()):
new_key = ''.join([key[:-2], '_double', '@@'])
local_replacement_dict[new_key] = unicode_escape(
local_replacement_dict[key])
data_replacement_dict.update(**local_replacement_dict)
@classmethod
def getInstanceParameterDict(cls):
return {
......@@ -4970,6 +5066,50 @@ class TestSlaveSlapOSMasterCertificateCompatibilityOverrideMaster(
class TestSlaveSlapOSMasterCertificateCompatibility(
SlaveHttpFrontendTestCase, TestDataMixin):
def _updateDataReplacementDict(self, data_replacement_dict):
local_replacement_dict = {
'@@certificate_pem@@': unicode_escape(self.certificate_pem.decode()),
'@@key_pem@@': unicode_escape(self.key_pem.decode()),
'@@ssl_from_slave_certificate_pem@@': unicode_escape(
self.ssl_from_slave_certificate_pem.decode()),
'@@ssl_from_slave_key_pem@@': unicode_escape(
self.ssl_from_slave_key_pem.decode()),
'@@customdomain_certificate_pem@@': unicode_escape(
self.customdomain_certificate_pem.decode()),
'@@customdomain_key_pem@@': unicode_escape(
self.customdomain_key_pem.decode()),
'@@ssl_from_slave_kedifa_overrides_key_pem@@': unicode_escape(
self.ssl_from_slave_kedifa_overrides_key_pem.decode()),
'@@ssl_from_slave_kedifa_overrides_certificate_pem@@': unicode_escape(
self.ssl_from_slave_kedifa_overrides_certificate_pem.decode()),
'@@customdomain_ca_certificate_pem@@': unicode_escape(
self.customdomain_ca_certificate_pem.decode()),
'@@customdomain_ca_key_pem@@': unicode_escape(
self.customdomain_ca_key_pem.decode()),
'@@ca.certificate_pem@@': unicode_escape(
self.ca.certificate_pem.decode()),
'@@sslcacrtgarbage_ca_certificate_pem@@': unicode_escape(
self.sslcacrtgarbage_ca_certificate_pem.decode()),
'@@sslcacrtgarbage_ca_key_pem@@': unicode_escape(
self.sslcacrtgarbage_ca_key_pem.decode()),
'@@type_notebook_ssl_from_slave_certificate_pem@@': unicode_escape(
self.type_notebook_ssl_from_slave_certificate_pem.decode()),
'@@type_notebook_ssl_from_slave_key_pem@@': unicode_escape(
self.type_notebook_ssl_from_slave_key_pem.decode()),
'@@type_notebook_ssl_from_slave_kedifa_overrides_certificate_pem@@':
unicode_escape(
self.type_notebook_ssl_from_slave_kedifa_overrides_certificate_pem
.decode()),
'@@type_notebook_ssl_from_slave_kedifa_overrides_key_pem@@':
unicode_escape(
self.type_notebook_ssl_from_slave_kedifa_overrides_key_pem.decode()),
}
for key in list(local_replacement_dict.keys()):
new_key = ''.join([key[:-2], '_double', '@@'])
local_replacement_dict[new_key] = unicode_escape(
local_replacement_dict[key])
data_replacement_dict.update(**local_replacement_dict)
@classmethod
def setUpMaster(cls):
# run partition until AIKC finishes
......@@ -5582,6 +5722,17 @@ class TestSlaveSlapOSMasterCertificateCompatibilityUpdate(
cls._fetchKedifaCaucaseCaCertificateFile(parameter_dict)
# Do not upload certificates for the master partition
def _updateDataReplacementDict(self, data_replacement_dict):
local_replacement_dict = {
'@@certificate_pem@@': unicode_escape(self.certificate_pem.decode()),
'@@key_pem@@': unicode_escape(self.key_pem.decode()),
}
for key in list(local_replacement_dict.keys()):
new_key = ''.join([key[:-2], '_double', '@@'])
local_replacement_dict[new_key] = unicode_escape(
local_replacement_dict[key])
data_replacement_dict.update(**local_replacement_dict)
instance_parameter_dict = {
'domain': 'example.com',
'port': HTTPS_PORT,
......
[
{
"caucase_port": "15090",
"domain": "example.com",
"full_address_list": [],
"instance_title": "testing partition 0",
"ip_list": [
[
"T-0",
"@@_ipv4_address@@"
],
[
"T-0",
"@@_ipv6_address@@"
]
],
"kedifa_port": "15080",
"plain_http_port": "11080",
"port": "11443",
"root_instance_title": "testing partition 0",
"slap_computer_id": "local",
"slap_computer_partition_id": "T-0",
"slap_software_release_url": "@@getSoftwareURL@@",
"slap_software_type": "RootSoftwareInstance",
"slave_instance_list": [
{
"slap_software_type": "RootSoftwareInstance",
"slave_reference": "_enable-http2-default",
"slave_title": "_enable-http2-default"
},
{
"enable-http2": "false",
"slap_software_type": "RootSoftwareInstance",
"slave_reference": "_enable-http2-false",
"slave_title": "_enable-http2-false"
},
{
"enable-http2": "true",
"slap_software_type": "RootSoftwareInstance",
"slave_reference": "_enable-http2-true",
"slave_title": "_enable-http2-true"
},
{
"enable_cache": true,
"slap_software_type": "RootSoftwareInstance",
"slave_reference": "_dummy-cached",
"slave_title": "_dummy-cached",
"url": "http://@@_ipv4_address@@:@@_server_http_port@@/"
}
],
"timestamp": "@@TIMESTAMP@@"
},
{
"_": {
"caucase_port": "15090",
"cluster-identification": "testing partition 0",
"kedifa_port": "15080",
"monitor-cors-domains": "monitor.app.officejs.com",
"monitor-httpd-port": "8402",
"monitor-password": "@@monitor-password@@",
"monitor-username": "admin",
"slave-list": [
{
"enable_cache": true,
"slave_reference": "_dummy-cached",
"url": "http://@@_ipv4_address@@:@@_server_http_port@@/"
},
{
"slave_reference": "_enable-http2-default"
},
{
"enable-http2": "false",
"slave_reference": "_enable-http2-false"
},
{
"enable-http2": "true",
"slave_reference": "_enable-http2-true"
}
]
},
"full_address_list": [],
"instance_title": "kedifa",
"ip_list": [
[
"T-1",
"@@_ipv4_address@@"
],
[
"T-1",
"@@_ipv6_address@@"
]
],
"root_instance_title": "testing partition 0",
"slap_computer_id": "local",
"slap_computer_partition_id": "T-1",
"slap_software_release_url": "@@getSoftwareURL@@",
"slap_software_type": "kedifa",
"slave_instance_list": [],
"timestamp": "@@TIMESTAMP@@"
},
{
"_": {
"backend-client-caucase-url": "http://[@@_ipv6_address@@]:8990",
"cluster-identification": "testing partition 0",
"domain": "example.com",
"extra_slave_instance_list": "[{\"enable_cache\": true, \"slave_reference\": \"_dummy-cached\", \"url\": \"http://@@_ipv4_address@@:@@_server_http_port@@/\"}, {\"slave_reference\": \"_enable-http2-default\"}, {\"enable-http2\": \"false\", \"slave_reference\": \"_enable-http2-false\"}, {\"enable-http2\": \"true\", \"slave_reference\": \"_enable-http2-true\"}]",
"frontend-name": "caddy-frontend-1",
"kedifa-caucase-url": "http://[@@_ipv6_address@@]:15090",
"master-key-download-url": "https://[@@_ipv6_address@@]:15080/@@master-key-download-url_endpoint@@",
"monitor-cors-domains": "monitor.app.officejs.com",
"monitor-httpd-port": 8411,
"monitor-password": "@@monitor-password@@",
"monitor-username": "admin",
"plain_http_port": "11080",
"port": "11443",
"slave-kedifa-information": "{\"_dummy-cached\": {\"kedifa-caucase-url\": \"http://[@@_ipv6_address@@]:15090\", \"key-download-url\": \"https://[@@_ipv6_address@@]:15080/@@dummy-cached_key-generate-auth-url@@\", \"key-generate-auth-url\": \"https://[@@_ipv6_address@@]:15080/@@dummy-cached_key-generate-auth-url@@/@@enable-http2-default_key-upload-url@@\", \"key-upload-url\": \"https://[@@_ipv6_address@@]:15080/@@dummy-cached_key-generate-auth-url@@?auth=\"}, \"_enable-http2-default\": {\"kedifa-caucase-url\": \"http://[@@_ipv6_address@@]:15090\", \"key-download-url\": \"https://[@@_ipv6_address@@]:15080/@@enable-http2-default_key-generate-auth-url@@\", \"key-generate-auth-url\": \"https://[@@_ipv6_address@@]:15080/@@enable-http2-default_key-generate-auth-url@@/@@enable-http2-default_key-upload-url@@\", \"key-upload-url\": \"https://[@@_ipv6_address@@]:15080/@@enable-http2-default_key-generate-auth-url@@?auth=\"}, \"_enable-http2-false\": {\"kedifa-caucase-url\": \"http://[@@_ipv6_address@@]:15090\", \"key-download-url\": \"https://[@@_ipv6_address@@]:15080/@@enable-http2-false_key-generate-auth-url@@\", \"key-generate-auth-url\": \"https://[@@_ipv6_address@@]:15080/@@enable-http2-false_key-generate-auth-url@@/@@enable-http2-default_key-upload-url@@\", \"key-upload-url\": \"https://[@@_ipv6_address@@]:15080/@@enable-http2-false_key-generate-auth-url@@?auth=\"}, \"_enable-http2-true\": {\"kedifa-caucase-url\": \"http://[@@_ipv6_address@@]:15090\", \"key-download-url\": \"https://[@@_ipv6_address@@]:15080/@@enable-http2-true_key-generate-auth-url@@\", \"key-generate-auth-url\": \"https://[@@_ipv6_address@@]:15080/@@enable-http2-true_key-generate-auth-url@@/@@enable-http2-default_key-upload-url@@\", \"key-upload-url\": \"https://[@@_ipv6_address@@]:15080/@@enable-http2-true_key-generate-auth-url@@?auth=\"}}"
},
"full_address_list": [],
"instance_title": "caddy-frontend-1",
"ip_list": [
[
"T-2",
"@@_ipv4_address@@"
],
[
"T-2",
"@@_ipv6_address@@"
]
],
"root_instance_title": "testing partition 0",
"slap_computer_id": "local",
"slap_computer_partition_id": "T-2",
"slap_software_release_url": "@@getSoftwareURL@@",
"slap_software_type": "single-custom-personal",
"slave_instance_list": [],
"timestamp": "@@TIMESTAMP@@"
}
]
[
{
"caucase_port": "15090",
"domain": "example.com",
"full_address_list": [],
"global-disable-http2": "TrUe",
"instance_title": "testing partition 0",
"ip_list": [
[
"T-0",
"@@_ipv4_address@@"
],
[
"T-0",
"@@_ipv6_address@@"
]
],
"kedifa_port": "15080",
"plain_http_port": "11080",
"port": "11443",
"root_instance_title": "testing partition 0",
"slap_computer_id": "local",
"slap_computer_partition_id": "T-0",
"slap_software_release_url": "@@getSoftwareURL@@",
"slap_software_type": "RootSoftwareInstance",
"slave_instance_list": [
{
"slap_software_type": "RootSoftwareInstance",
"slave_reference": "_enable-http2-default",
"slave_title": "_enable-http2-default"
},
{
"enable-http2": "false",
"slap_software_type": "RootSoftwareInstance",
"slave_reference": "_enable-http2-false",
"slave_title": "_enable-http2-false"
},
{
"enable-http2": "true",
"slap_software_type": "RootSoftwareInstance",
"slave_reference": "_enable-http2-true",
"slave_title": "_enable-http2-true"
},
{
"enable_cache": true,
"slap_software_type": "RootSoftwareInstance",
"slave_reference": "_dummy-cached",
"slave_title": "_dummy-cached",
"url": "http://@@_ipv4_address@@:@@_server_http_port@@/"
}
],
"timestamp": "@@TIMESTAMP@@"
},
{
"_": {
"caucase_port": "15090",
"cluster-identification": "testing partition 0",
"kedifa_port": "15080",
"monitor-cors-domains": "monitor.app.officejs.com",
"monitor-httpd-port": "8402",
"monitor-password": "@@monitor-password@@",
"monitor-username": "admin",
"slave-list": [
{
"enable_cache": true,
"slave_reference": "_dummy-cached",
"url": "http://@@_ipv4_address@@:@@_server_http_port@@/"
},
{
"slave_reference": "_enable-http2-default"
},
{
"enable-http2": "false",
"slave_reference": "_enable-http2-false"
},
{
"enable-http2": "true",
"slave_reference": "_enable-http2-true"
}
]
},
"full_address_list": [],
"instance_title": "kedifa",
"ip_list": [
[
"T-1",
"@@_ipv4_address@@"
],
[
"T-1",
"@@_ipv6_address@@"
]
],
"root_instance_title": "testing partition 0",
"slap_computer_id": "local",
"slap_computer_partition_id": "T-1",
"slap_software_release_url": "@@getSoftwareURL@@",
"slap_software_type": "kedifa",
"slave_instance_list": [],
"timestamp": "@@TIMESTAMP@@"
},
{
"_": {
"backend-client-caucase-url": "http://[@@_ipv6_address@@]:8990",
"cluster-identification": "testing partition 0",
"domain": "example.com",
"extra_slave_instance_list": "[{\"enable_cache\": true, \"slave_reference\": \"_dummy-cached\", \"url\": \"http://@@_ipv4_address@@:@@_server_http_port@@/\"}, {\"slave_reference\": \"_enable-http2-default\"}, {\"enable-http2\": \"false\", \"slave_reference\": \"_enable-http2-false\"}, {\"enable-http2\": \"true\", \"slave_reference\": \"_enable-http2-true\"}]",
"frontend-name": "caddy-frontend-1",
"global-disable-http2": "TrUe",
"kedifa-caucase-url": "http://[@@_ipv6_address@@]:15090",
"master-key-download-url": "https://[@@_ipv6_address@@]:15080/@@master-key-download-url_endpoint@@",
"monitor-cors-domains": "monitor.app.officejs.com",
"monitor-httpd-port": 8411,
"monitor-password": "@@monitor-password@@",
"monitor-username": "admin",
"plain_http_port": "11080",
"port": "11443",
"slave-kedifa-information": "{\"_dummy-cached\": {\"kedifa-caucase-url\": \"http://[@@_ipv6_address@@]:15090\", \"key-download-url\": \"https://[@@_ipv6_address@@]:15080/@@dummy-cached_key-generate-auth-url@@\", \"key-generate-auth-url\": \"https://[@@_ipv6_address@@]:15080/@@dummy-cached_key-generate-auth-url@@/@@enable-http2-default_key-upload-url@@\", \"key-upload-url\": \"https://[@@_ipv6_address@@]:15080/@@dummy-cached_key-generate-auth-url@@?auth=\"}, \"_enable-http2-default\": {\"kedifa-caucase-url\": \"http://[@@_ipv6_address@@]:15090\", \"key-download-url\": \"https://[@@_ipv6_address@@]:15080/@@enable-http2-default_key-generate-auth-url@@\", \"key-generate-auth-url\": \"https://[@@_ipv6_address@@]:15080/@@enable-http2-default_key-generate-auth-url@@/@@enable-http2-default_key-upload-url@@\", \"key-upload-url\": \"https://[@@_ipv6_address@@]:15080/@@enable-http2-default_key-generate-auth-url@@?auth=\"}, \"_enable-http2-false\": {\"kedifa-caucase-url\": \"http://[@@_ipv6_address@@]:15090\", \"key-download-url\": \"https://[@@_ipv6_address@@]:15080/@@enable-http2-false_key-generate-auth-url@@\", \"key-generate-auth-url\": \"https://[@@_ipv6_address@@]:15080/@@enable-http2-false_key-generate-auth-url@@/@@enable-http2-default_key-upload-url@@\", \"key-upload-url\": \"https://[@@_ipv6_address@@]:15080/@@enable-http2-false_key-generate-auth-url@@?auth=\"}, \"_enable-http2-true\": {\"kedifa-caucase-url\": \"http://[@@_ipv6_address@@]:15090\", \"key-download-url\": \"https://[@@_ipv6_address@@]:15080/@@enable-http2-true_key-generate-auth-url@@\", \"key-generate-auth-url\": \"https://[@@_ipv6_address@@]:15080/@@enable-http2-true_key-generate-auth-url@@/@@enable-http2-default_key-upload-url@@\", \"key-upload-url\": \"https://[@@_ipv6_address@@]:15080/@@enable-http2-true_key-generate-auth-url@@?auth=\"}}"
},
"full_address_list": [],
"instance_title": "caddy-frontend-1",
"ip_list": [
[
"T-2",
"@@_ipv4_address@@"
],
[
"T-2",
"@@_ipv6_address@@"
]
],
"root_instance_title": "testing partition 0",
"slap_computer_id": "local",
"slap_computer_partition_id": "T-2",
"slap_software_release_url": "@@getSoftwareURL@@",
"slap_software_type": "single-custom-personal",
"slave_instance_list": [],
"timestamp": "@@TIMESTAMP@@"
}
]
[
{
"caucase_port": "15090",
"domain": "example.com",
"enable-http2-by-default": "false",
"full_address_list": [],
"instance_title": "testing partition 0",
"ip_list": [
[
"T-0",
"@@_ipv4_address@@"
],
[
"T-0",
"@@_ipv6_address@@"
]
],
"kedifa_port": "15080",
"plain_http_port": "11080",
"port": "11443",
"root_instance_title": "testing partition 0",
"slap_computer_id": "local",
"slap_computer_partition_id": "T-0",
"slap_software_release_url": "@@getSoftwareURL@@",
"slap_software_type": "RootSoftwareInstance",
"slave_instance_list": [
{
"slap_software_type": "RootSoftwareInstance",
"slave_reference": "_enable-http2-default",
"slave_title": "_enable-http2-default"
},
{
"enable-http2": "false",
"slap_software_type": "RootSoftwareInstance",
"slave_reference": "_enable-http2-false",
"slave_title": "_enable-http2-false"
},
{
"enable-http2": "true",
"slap_software_type": "RootSoftwareInstance",
"slave_reference": "_enable-http2-true",
"slave_title": "_enable-http2-true"
},
{
"enable_cache": true,
"slap_software_type": "RootSoftwareInstance",
"slave_reference": "_dummy-cached",
"slave_title": "_dummy-cached",
"url": "http://@@_ipv4_address@@:@@_server_http_port@@/"
}
],
"timestamp": "@@TIMESTAMP@@"
},
{
"_": {
"caucase_port": "15090",
"cluster-identification": "testing partition 0",
"kedifa_port": "15080",
"monitor-cors-domains": "monitor.app.officejs.com",
"monitor-httpd-port": "8402",
"monitor-password": "@@monitor-password@@",
"monitor-username": "admin",
"slave-list": [
{
"enable_cache": true,
"slave_reference": "_dummy-cached",
"url": "http://@@_ipv4_address@@:@@_server_http_port@@/"
},
{
"slave_reference": "_enable-http2-default"
},
{
"enable-http2": "false",
"slave_reference": "_enable-http2-false"
},
{
"enable-http2": "true",
"slave_reference": "_enable-http2-true"
}
]
},
"full_address_list": [],
"instance_title": "kedifa",
"ip_list": [
[
"T-1",
"@@_ipv4_address@@"
],
[
"T-1",
"@@_ipv6_address@@"
]
],
"root_instance_title": "testing partition 0",
"slap_computer_id": "local",
"slap_computer_partition_id": "T-1",
"slap_software_release_url": "@@getSoftwareURL@@",
"slap_software_type": "kedifa",
"slave_instance_list": [],
"timestamp": "@@TIMESTAMP@@"
},
{
"_": {
"backend-client-caucase-url": "http://[@@_ipv6_address@@]:8990",
"cluster-identification": "testing partition 0",
"domain": "example.com",
"enable-http2-by-default": "false",
"extra_slave_instance_list": "[{\"enable_cache\": true, \"slave_reference\": \"_dummy-cached\", \"url\": \"http://@@_ipv4_address@@:@@_server_http_port@@/\"}, {\"slave_reference\": \"_enable-http2-default\"}, {\"enable-http2\": \"false\", \"slave_reference\": \"_enable-http2-false\"}, {\"enable-http2\": \"true\", \"slave_reference\": \"_enable-http2-true\"}]",
"frontend-name": "caddy-frontend-1",
"kedifa-caucase-url": "http://[@@_ipv6_address@@]:15090",
"master-key-download-url": "https://[@@_ipv6_address@@]:15080/@@master-key-download-url_endpoint@@",
"monitor-cors-domains": "monitor.app.officejs.com",
"monitor-httpd-port": 8411,
"monitor-password": "@@monitor-password@@",
"monitor-username": "admin",
"plain_http_port": "11080",
"port": "11443",
"slave-kedifa-information": "{\"_dummy-cached\": {\"kedifa-caucase-url\": \"http://[@@_ipv6_address@@]:15090\", \"key-download-url\": \"https://[@@_ipv6_address@@]:15080/@@dummy-cached_key-generate-auth-url@@\", \"key-generate-auth-url\": \"https://[@@_ipv6_address@@]:15080/@@dummy-cached_key-generate-auth-url@@/@@enable-http2-default_key-upload-url@@\", \"key-upload-url\": \"https://[@@_ipv6_address@@]:15080/@@dummy-cached_key-generate-auth-url@@?auth=\"}, \"_enable-http2-default\": {\"kedifa-caucase-url\": \"http://[@@_ipv6_address@@]:15090\", \"key-download-url\": \"https://[@@_ipv6_address@@]:15080/@@enable-http2-default_key-generate-auth-url@@\", \"key-generate-auth-url\": \"https://[@@_ipv6_address@@]:15080/@@enable-http2-default_key-generate-auth-url@@/@@enable-http2-default_key-upload-url@@\", \"key-upload-url\": \"https://[@@_ipv6_address@@]:15080/@@enable-http2-default_key-generate-auth-url@@?auth=\"}, \"_enable-http2-false\": {\"kedifa-caucase-url\": \"http://[@@_ipv6_address@@]:15090\", \"key-download-url\": \"https://[@@_ipv6_address@@]:15080/@@enable-http2-false_key-generate-auth-url@@\", \"key-generate-auth-url\": \"https://[@@_ipv6_address@@]:15080/@@enable-http2-false_key-generate-auth-url@@/@@enable-http2-default_key-upload-url@@\", \"key-upload-url\": \"https://[@@_ipv6_address@@]:15080/@@enable-http2-false_key-generate-auth-url@@?auth=\"}, \"_enable-http2-true\": {\"kedifa-caucase-url\": \"http://[@@_ipv6_address@@]:15090\", \"key-download-url\": \"https://[@@_ipv6_address@@]:15080/@@enable-http2-true_key-generate-auth-url@@\", \"key-generate-auth-url\": \"https://[@@_ipv6_address@@]:15080/@@enable-http2-true_key-generate-auth-url@@/@@enable-http2-default_key-upload-url@@\", \"key-upload-url\": \"https://[@@_ipv6_address@@]:15080/@@enable-http2-true_key-generate-auth-url@@?auth=\"}}"
},
"full_address_list": [],
"instance_title": "caddy-frontend-1",
"ip_list": [
[
"T-2",
"@@_ipv4_address@@"
],
[
"T-2",
"@@_ipv6_address@@"
]
],
"root_instance_title": "testing partition 0",
"slap_computer_id": "local",
"slap_computer_partition_id": "T-2",
"slap_software_release_url": "@@getSoftwareURL@@",
"slap_software_type": "single-custom-personal",
"slave_instance_list": [],
"timestamp": "@@TIMESTAMP@@"
}
]
[
{
"caucase_port": "15090",
"domain": "example.com",
"enable-http2-by-default": "false",
"full_address_list": [],
"global-disable-http2": "TrUe",
"instance_title": "testing partition 0",
"ip_list": [
[
"T-0",
"@@_ipv4_address@@"
],
[
"T-0",
"@@_ipv6_address@@"
]
],
"kedifa_port": "15080",
"plain_http_port": "11080",
"port": "11443",
"root_instance_title": "testing partition 0",
"slap_computer_id": "local",
"slap_computer_partition_id": "T-0",
"slap_software_release_url": "@@getSoftwareURL@@",
"slap_software_type": "RootSoftwareInstance",
"slave_instance_list": [
{
"slap_software_type": "RootSoftwareInstance",
"slave_reference": "_enable-http2-default",
"slave_title": "_enable-http2-default"
},
{
"enable-http2": "false",
"slap_software_type": "RootSoftwareInstance",
"slave_reference": "_enable-http2-false",
"slave_title": "_enable-http2-false"
},
{
"enable-http2": "true",
"slap_software_type": "RootSoftwareInstance",
"slave_reference": "_enable-http2-true",
"slave_title": "_enable-http2-true"
},
{
"enable_cache": true,
"slap_software_type": "RootSoftwareInstance",
"slave_reference": "_dummy-cached",
"slave_title": "_dummy-cached",
"url": "http://@@_ipv4_address@@:@@_server_http_port@@/"
}
],