engage-engine 1.251.90910019 → 1.251.90910020
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/engage.cpp +22 -0
- package/include/ConfigurationObjects.h +231 -42
- package/include/EngageConstants.h +1 -1
- package/lib/darwin.arm64/libengage-shared.dylib +0 -0
- package/lib/darwin.arm64/rts-fips.dylib +0 -0
- package/lib/darwin.x64/libengage-shared.dylib +0 -0
- package/lib/darwin.x64/rts-fips.dylib +0 -0
- package/lib/linux.arm64/libengage-shared.so +0 -0
- package/lib/linux.arm64/rts-fips.so +0 -0
- package/lib/linux.x64/libengage-shared.so +0 -0
- package/lib/linux.x64/rts-fips.so +0 -0
- package/lib/win32.ia32/engage-shared.dll +0 -0
- package/lib/win32.ia32/rts-fips.dll +0 -0
- package/lib/win32.x64/engage-shared.dll +0 -0
- package/lib/win32.x64/rts-fips.dll +0 -0
- package/package.json +1 -1
package/engage.cpp
CHANGED
|
@@ -502,6 +502,10 @@ ENGAGE_CB_ID_PARAM(groupHealthReportFailed);
|
|
|
502
502
|
ENGAGE_CB_ID_PLUS_ONE_STRING_PARAM(groupStatsReport);
|
|
503
503
|
ENGAGE_CB_ID_PARAM(groupStatsReportFailed);
|
|
504
504
|
|
|
505
|
+
ENGAGE_CB_ID_PARAM(bridgeCreated)
|
|
506
|
+
ENGAGE_CB_ID_PARAM(bridgeCreateFailed)
|
|
507
|
+
ENGAGE_CB_ID_PARAM(bridgeDeleted)
|
|
508
|
+
|
|
505
509
|
void on_groupRxVolumeChanged(const char *id, int16_t leftLevelPerc, int16_t rightLevelPerc, const char * eventExtraJson)
|
|
506
510
|
{
|
|
507
511
|
CrossThreadCallbackWorker *cbw = getCallback("groupRxVolumeChanged");
|
|
@@ -661,6 +665,10 @@ NAN_METHOD(initialize)
|
|
|
661
665
|
ENGAGE_CB_TABLE_ENTRY(PFN_ENGAGE_GROUP_RX_VOLUME_CHANGED, groupRxVolumeChanged);
|
|
662
666
|
ENGAGE_CB_TABLE_ENTRY(PFN_ENGAGE_GROUP_RX_DTMF, groupRxDtmf);
|
|
663
667
|
|
|
668
|
+
ENGAGE_CB_TABLE_ENTRY(PFN_ENGAGE_BRIDGE_CREATED, bridgeCreated);
|
|
669
|
+
ENGAGE_CB_TABLE_ENTRY(PFN_ENGAGE_BRIDGE_CREATE_FAILED, bridgeCreateFailed);
|
|
670
|
+
ENGAGE_CB_TABLE_ENTRY(PFN_ENGAGE_BRIDGE_DELETED, bridgeDeleted);
|
|
671
|
+
|
|
664
672
|
engageRegisterEventCallbacks(&g_eventCallbacks);
|
|
665
673
|
|
|
666
674
|
NANRETI(engageInitialize(STRVAL(0), STRVAL(1), STRVAL(2)));
|
|
@@ -1214,6 +1222,17 @@ NAN_METHOD(endGroupPcmPowerTracking)
|
|
|
1214
1222
|
NANRETI(engageEndGroupPcmPowerTracking(STRVAL(0)));
|
|
1215
1223
|
}
|
|
1216
1224
|
|
|
1225
|
+
//--------------------------------------------------------
|
|
1226
|
+
NAN_METHOD(createBridge)
|
|
1227
|
+
{
|
|
1228
|
+
NANRETI(engageCreateBridge(STRVAL(0)));
|
|
1229
|
+
}
|
|
1230
|
+
|
|
1231
|
+
//--------------------------------------------------------
|
|
1232
|
+
NAN_METHOD(deleteBridge)
|
|
1233
|
+
{
|
|
1234
|
+
NANRETI(engageDeleteBridge(STRVAL(0)));
|
|
1235
|
+
}
|
|
1217
1236
|
|
|
1218
1237
|
//--------------------------------------------------------
|
|
1219
1238
|
NAN_MODULE_INIT(Init)
|
|
@@ -1297,6 +1316,9 @@ NAN_MODULE_INIT(Init)
|
|
|
1297
1316
|
|
|
1298
1317
|
ENGAGE_BINDING(beginGroupPcmPowerTracking);
|
|
1299
1318
|
ENGAGE_BINDING(endGroupPcmPowerTracking);
|
|
1319
|
+
|
|
1320
|
+
ENGAGE_BINDING(createBridge);
|
|
1321
|
+
ENGAGE_BINDING(deleteBridge);
|
|
1300
1322
|
}
|
|
1301
1323
|
|
|
1302
1324
|
NODE_MODULE(engage, Init)
|
|
@@ -2800,7 +2800,7 @@ namespace AppConfigurationObjects
|
|
|
2800
2800
|
std::vector<std::string> caCertificates;
|
|
2801
2801
|
|
|
2802
2802
|
/**
|
|
2803
|
-
* @brief [Optional, Default
|
|
2803
|
+
* @brief [Optional, Default 10000] Number of milliseconds that a transaction may take before the link is considered broken.
|
|
2804
2804
|
*/
|
|
2805
2805
|
int transactionTimeoutMs;
|
|
2806
2806
|
|
|
@@ -2815,6 +2815,14 @@ namespace AppConfigurationObjects
|
|
|
2815
2815
|
/** @brief [Optional] Tx options for the TCP link */
|
|
2816
2816
|
TcpNetworkTxOptions tcpTxOptions;
|
|
2817
2817
|
|
|
2818
|
+
/**
|
|
2819
|
+
* @brief [Optional] A user-defined string sent as the Server Name Indication (SNI) field in
|
|
2820
|
+
* the TLS setup. Be aware that this data is sent in the clear in the client hello message.
|
|
2821
|
+
*
|
|
2822
|
+
*/
|
|
2823
|
+
std::string sni;
|
|
2824
|
+
|
|
2825
|
+
|
|
2818
2826
|
Rallypoint()
|
|
2819
2827
|
{
|
|
2820
2828
|
clear();
|
|
@@ -2831,6 +2839,7 @@ namespace AppConfigurationObjects
|
|
|
2831
2839
|
disableMessageSigning = false;
|
|
2832
2840
|
connectionTimeoutSecs = 0;
|
|
2833
2841
|
tcpTxOptions.clear();
|
|
2842
|
+
sni.clear();
|
|
2834
2843
|
}
|
|
2835
2844
|
|
|
2836
2845
|
bool matches(const Rallypoint& other)
|
|
@@ -2893,6 +2902,18 @@ namespace AppConfigurationObjects
|
|
|
2893
2902
|
{
|
|
2894
2903
|
return false;
|
|
2895
2904
|
}
|
|
2905
|
+
if(connectionTimeoutSecs != other.connectionTimeoutSecs)
|
|
2906
|
+
{
|
|
2907
|
+
return false;
|
|
2908
|
+
}
|
|
2909
|
+
if(tcpTxOptions.priority != other.tcpTxOptions.priority)
|
|
2910
|
+
{
|
|
2911
|
+
return false;
|
|
2912
|
+
}
|
|
2913
|
+
if(sni.compare(other.sni) != 0)
|
|
2914
|
+
{
|
|
2915
|
+
return false;
|
|
2916
|
+
}
|
|
2896
2917
|
|
|
2897
2918
|
return true;
|
|
2898
2919
|
}
|
|
@@ -2910,7 +2931,8 @@ namespace AppConfigurationObjects
|
|
|
2910
2931
|
TOJSON_IMPL(transactionTimeoutMs),
|
|
2911
2932
|
TOJSON_IMPL(disableMessageSigning),
|
|
2912
2933
|
TOJSON_IMPL(connectionTimeoutSecs),
|
|
2913
|
-
TOJSON_IMPL(tcpTxOptions)
|
|
2934
|
+
TOJSON_IMPL(tcpTxOptions),
|
|
2935
|
+
TOJSON_IMPL(sni)
|
|
2914
2936
|
};
|
|
2915
2937
|
}
|
|
2916
2938
|
|
|
@@ -2927,6 +2949,7 @@ namespace AppConfigurationObjects
|
|
|
2927
2949
|
getOptional<bool>("disableMessageSigning", p.disableMessageSigning, j, false);
|
|
2928
2950
|
getOptional<int>("connectionTimeoutSecs", p.connectionTimeoutSecs, j, 0);
|
|
2929
2951
|
getOptional<TcpNetworkTxOptions>("tcpTxOptions", p.tcpTxOptions, j);
|
|
2952
|
+
getOptional<std::string>("sni", p.sni, j);
|
|
2930
2953
|
}
|
|
2931
2954
|
|
|
2932
2955
|
//-----------------------------------------------------------
|
|
@@ -2970,10 +2993,10 @@ namespace AppConfigurationObjects
|
|
|
2970
2993
|
/** @brief Seconds between switching to a new target */
|
|
2971
2994
|
int rolloverSecs;
|
|
2972
2995
|
|
|
2973
|
-
/** @brief [Optional, Default:
|
|
2996
|
+
/** @brief [Optional, Default: 5] Default connection timeout in seconds to any RP in the cluster */
|
|
2974
2997
|
int connectionTimeoutSecs;
|
|
2975
2998
|
|
|
2976
|
-
/** @brief [Optional, Default:
|
|
2999
|
+
/** @brief [Optional, Default: 10000] Default transaction time in milliseconds to any RP in the cluster */
|
|
2977
3000
|
int transactionTimeoutMs;
|
|
2978
3001
|
|
|
2979
3002
|
RallypointCluster()
|
|
@@ -2986,8 +3009,8 @@ namespace AppConfigurationObjects
|
|
|
2986
3009
|
connectionStrategy = csRoundRobin;
|
|
2987
3010
|
rallypoints.clear();
|
|
2988
3011
|
rolloverSecs = 10;
|
|
2989
|
-
connectionTimeoutSecs =
|
|
2990
|
-
transactionTimeoutMs =
|
|
3012
|
+
connectionTimeoutSecs = 5;
|
|
3013
|
+
transactionTimeoutMs = 10000;
|
|
2991
3014
|
}
|
|
2992
3015
|
};
|
|
2993
3016
|
|
|
@@ -3007,8 +3030,8 @@ namespace AppConfigurationObjects
|
|
|
3007
3030
|
getOptional<RallypointCluster::ConnectionStrategy_t>("connectionStrategy", p.connectionStrategy, RallypointCluster::ConnectionStrategy_t::csRoundRobin);
|
|
3008
3031
|
getOptional<std::vector<Rallypoint>>("rallypoints", p.rallypoints, j);
|
|
3009
3032
|
getOptional<int>("rolloverSecs", p.rolloverSecs, j, 10);
|
|
3010
|
-
getOptional<int>("connectionTimeoutSecs", p.connectionTimeoutSecs, j,
|
|
3011
|
-
getOptional<int>("transactionTimeoutMs", p.
|
|
3033
|
+
getOptional<int>("connectionTimeoutSecs", p.connectionTimeoutSecs, j, 5);
|
|
3034
|
+
getOptional<int>("transactionTimeoutMs", p.transactionTimeoutMs, j, 10000);
|
|
3012
3035
|
}
|
|
3013
3036
|
|
|
3014
3037
|
|
|
@@ -4022,6 +4045,9 @@ namespace AppConfigurationObjects
|
|
|
4022
4045
|
/** @brief [Optional, Default: 5] The minimum interval to send at to prevent network flooding */
|
|
4023
4046
|
int minIntervalSecs;
|
|
4024
4047
|
|
|
4048
|
+
/** @brief [Optional, Default: false] Instructs the Engage Engine reduce the immediacy of presence announcements wherever possible */
|
|
4049
|
+
bool reduceImmediacy;
|
|
4050
|
+
|
|
4025
4051
|
Presence()
|
|
4026
4052
|
{
|
|
4027
4053
|
clear();
|
|
@@ -4033,6 +4059,7 @@ namespace AppConfigurationObjects
|
|
|
4033
4059
|
intervalSecs = 30;
|
|
4034
4060
|
listenOnly = false;
|
|
4035
4061
|
minIntervalSecs = 5;
|
|
4062
|
+
reduceImmediacy = false;
|
|
4036
4063
|
}
|
|
4037
4064
|
};
|
|
4038
4065
|
|
|
@@ -4042,7 +4069,8 @@ namespace AppConfigurationObjects
|
|
|
4042
4069
|
TOJSON_IMPL(format),
|
|
4043
4070
|
TOJSON_IMPL(intervalSecs),
|
|
4044
4071
|
TOJSON_IMPL(listenOnly),
|
|
4045
|
-
TOJSON_IMPL(minIntervalSecs)
|
|
4072
|
+
TOJSON_IMPL(minIntervalSecs),
|
|
4073
|
+
TOJSON_IMPL(reduceImmediacy)
|
|
4046
4074
|
};
|
|
4047
4075
|
}
|
|
4048
4076
|
static void from_json(const nlohmann::json& j, Presence& p)
|
|
@@ -4052,6 +4080,7 @@ namespace AppConfigurationObjects
|
|
|
4052
4080
|
getOptional<int>("intervalSecs", p.intervalSecs, j, 30);
|
|
4053
4081
|
getOptional<bool>("listenOnly", p.listenOnly, j, false);
|
|
4054
4082
|
getOptional<int>("minIntervalSecs", p.minIntervalSecs, j, 5);
|
|
4083
|
+
getOptional<bool>("reduceImmediacy", p.reduceImmediacy, j, false);
|
|
4055
4084
|
}
|
|
4056
4085
|
|
|
4057
4086
|
|
|
@@ -4706,6 +4735,79 @@ namespace AppConfigurationObjects
|
|
|
4706
4735
|
FROMJSON_IMPL_SIMPLE(alias);
|
|
4707
4736
|
}
|
|
4708
4737
|
|
|
4738
|
+
//-----------------------------------------------------------
|
|
4739
|
+
JSON_SERIALIZED_CLASS(GroupBridgeTargetOutputDetail)
|
|
4740
|
+
/**
|
|
4741
|
+
* @brief Options for Source
|
|
4742
|
+
*
|
|
4743
|
+
* Helper C++ class to serialize and de-serialize GroupBridgeTargetOutputDetail JSON
|
|
4744
|
+
*
|
|
4745
|
+
* TODO: Complete this Class
|
|
4746
|
+
*
|
|
4747
|
+
* Example: @include[doc] examples/GroupBridgeTargetOutputDetail.json
|
|
4748
|
+
*
|
|
4749
|
+
* @see Group
|
|
4750
|
+
*/
|
|
4751
|
+
class GroupBridgeTargetOutputDetail : public ConfigurationObjectBase
|
|
4752
|
+
{
|
|
4753
|
+
IMPLEMENT_JSON_SERIALIZATION()
|
|
4754
|
+
IMPLEMENT_JSON_DOCUMENTATION(GroupBridgeTargetOutputDetail)
|
|
4755
|
+
|
|
4756
|
+
public:
|
|
4757
|
+
/** @brief Enum describing bridging operation mode types where applicable. */
|
|
4758
|
+
typedef enum
|
|
4759
|
+
{
|
|
4760
|
+
/** @brief Raw mode (default) - packet payloads are not accessed or modified and forwarded as raw packets. The
|
|
4761
|
+
* group must have a type of @ref gtRaw.
|
|
4762
|
+
*/
|
|
4763
|
+
bomRaw = 0,
|
|
4764
|
+
|
|
4765
|
+
/** @brief Audio payloads are transformed, headers are preserved, multiple parallel output streams are
|
|
4766
|
+
* possible/expected. The group must be gtAudio (type = 1).*/
|
|
4767
|
+
bomMultistream = 1,
|
|
4768
|
+
|
|
4769
|
+
/** @brief Audio payloads are mixed - output is anonymous (i.e. no metadata) if if the target group(s)
|
|
4770
|
+
* allow header extensions. The group must be gtAudio (type = 1)*/
|
|
4771
|
+
bomMixedStream = 2,
|
|
4772
|
+
} BridgingOpMode_t;
|
|
4773
|
+
|
|
4774
|
+
/** @brief [Optional] The output mode */
|
|
4775
|
+
BridgingOpMode_t mode;
|
|
4776
|
+
|
|
4777
|
+
/** @brief [Optional] Parameters to be applied when output is mixed (bomMixedStream) */
|
|
4778
|
+
AdvancedTxParams mixedStreamTxParams;
|
|
4779
|
+
|
|
4780
|
+
GroupBridgeTargetOutputDetail()
|
|
4781
|
+
{
|
|
4782
|
+
clear();
|
|
4783
|
+
}
|
|
4784
|
+
|
|
4785
|
+
void clear()
|
|
4786
|
+
{
|
|
4787
|
+
mode = BridgingOpMode_t::bomRaw;
|
|
4788
|
+
mixedStreamTxParams.clear();
|
|
4789
|
+
}
|
|
4790
|
+
|
|
4791
|
+
virtual void initForDocumenting()
|
|
4792
|
+
{
|
|
4793
|
+
clear();
|
|
4794
|
+
}
|
|
4795
|
+
};
|
|
4796
|
+
|
|
4797
|
+
static void to_json(nlohmann::json& j, const GroupBridgeTargetOutputDetail& p)
|
|
4798
|
+
{
|
|
4799
|
+
j = nlohmann::json{
|
|
4800
|
+
TOJSON_IMPL(mode),
|
|
4801
|
+
TOJSON_IMPL(mixedStreamTxParams)
|
|
4802
|
+
};
|
|
4803
|
+
}
|
|
4804
|
+
static void from_json(const nlohmann::json& j, GroupBridgeTargetOutputDetail& p)
|
|
4805
|
+
{
|
|
4806
|
+
p.clear();
|
|
4807
|
+
FROMJSON_IMPL_SIMPLE(mode);
|
|
4808
|
+
FROMJSON_IMPL_SIMPLE(mixedStreamTxParams);
|
|
4809
|
+
}
|
|
4810
|
+
|
|
4709
4811
|
//-----------------------------------------------------------
|
|
4710
4812
|
JSON_SERIALIZED_CLASS(Group)
|
|
4711
4813
|
/**
|
|
@@ -4740,23 +4842,6 @@ namespace AppConfigurationObjects
|
|
|
4740
4842
|
gtRaw = 3
|
|
4741
4843
|
} Type_t;
|
|
4742
4844
|
|
|
4743
|
-
|
|
4744
|
-
/** @brief Enum describing bridging operation mode types where applicable. */
|
|
4745
|
-
typedef enum
|
|
4746
|
-
{
|
|
4747
|
-
/** @brief Raw mode (default) - packet payloads are not accessed or modified and forwarded as raw packets */
|
|
4748
|
-
bomRaw = 0,
|
|
4749
|
-
|
|
4750
|
-
/** @brief Audio payloads are transformed, headers are preserved, multiple parallel output streams are possible/expected */
|
|
4751
|
-
bomPayloadTransformation = 1,
|
|
4752
|
-
|
|
4753
|
-
/** @brief Audio payloads are mixed - output is anonymous (i.e. no metadata) if if the target group(s) allow header extensions */
|
|
4754
|
-
bomAnonymousMixing = 2,
|
|
4755
|
-
|
|
4756
|
-
/** @brief The bridge performs language translations between groups */
|
|
4757
|
-
bomLanguageTranslation = 3
|
|
4758
|
-
} BridgingOpMode_t;
|
|
4759
|
-
|
|
4760
4845
|
/** @brief Enum describing the alias generation policy. */
|
|
4761
4846
|
typedef enum
|
|
4762
4847
|
{
|
|
@@ -4770,8 +4855,8 @@ namespace AppConfigurationObjects
|
|
|
4770
4855
|
/** @brief Specifies the group type (see @ref Type_t). */
|
|
4771
4856
|
Type_t type;
|
|
4772
4857
|
|
|
4773
|
-
/** @brief
|
|
4774
|
-
|
|
4858
|
+
/** @brief Output details for when the group is a target in a bridge (see @ref GroupBridgeTargetOutputDetail). */
|
|
4859
|
+
GroupBridgeTargetOutputDetail bridgeTargetOutputDetail;
|
|
4775
4860
|
|
|
4776
4861
|
/**
|
|
4777
4862
|
* @brief Unique identity for the group.
|
|
@@ -4937,7 +5022,7 @@ namespace AppConfigurationObjects
|
|
|
4937
5022
|
void clear()
|
|
4938
5023
|
{
|
|
4939
5024
|
type = gtUnknown;
|
|
4940
|
-
|
|
5025
|
+
bridgeTargetOutputDetail.clear();
|
|
4941
5026
|
id.clear();
|
|
4942
5027
|
name.clear();
|
|
4943
5028
|
spokenName.clear();
|
|
@@ -5014,7 +5099,7 @@ namespace AppConfigurationObjects
|
|
|
5014
5099
|
{
|
|
5015
5100
|
j = nlohmann::json{
|
|
5016
5101
|
TOJSON_IMPL(type),
|
|
5017
|
-
TOJSON_IMPL(
|
|
5102
|
+
TOJSON_IMPL(bridgeTargetOutputDetail),
|
|
5018
5103
|
TOJSON_IMPL(id),
|
|
5019
5104
|
TOJSON_IMPL(name),
|
|
5020
5105
|
TOJSON_IMPL(spokenName),
|
|
@@ -5106,7 +5191,7 @@ namespace AppConfigurationObjects
|
|
|
5106
5191
|
{
|
|
5107
5192
|
p.clear();
|
|
5108
5193
|
j.at("type").get_to(p.type);
|
|
5109
|
-
getOptional<
|
|
5194
|
+
getOptional<GroupBridgeTargetOutputDetail>("bridgeTargetOutputDetail", p.bridgeTargetOutputDetail, j);
|
|
5110
5195
|
j.at("id").get_to(p.id);
|
|
5111
5196
|
getOptional<std::string>("name", p.name, j);
|
|
5112
5197
|
getOptional<std::string>("spokenName", p.spokenName, j);
|
|
@@ -5724,7 +5809,9 @@ namespace AppConfigurationObjects
|
|
|
5724
5809
|
/** @brief List of group IDs to be included in the session */
|
|
5725
5810
|
std::vector<std::string> groups;
|
|
5726
5811
|
|
|
5727
|
-
/** @brief [Optional, Default: true] Enable the bridge
|
|
5812
|
+
/** @brief [Optional, Default: true] Enable the bridge
|
|
5813
|
+
* NOTE: this is only used bt EBS and is ignored when calling engageCreateBridge() is called
|
|
5814
|
+
*/
|
|
5728
5815
|
bool enabled;
|
|
5729
5816
|
|
|
5730
5817
|
Bridge()
|
|
@@ -8643,6 +8730,54 @@ namespace AppConfigurationObjects
|
|
|
8643
8730
|
}
|
|
8644
8731
|
|
|
8645
8732
|
|
|
8733
|
+
|
|
8734
|
+
|
|
8735
|
+
//-----------------------------------------------------------
|
|
8736
|
+
JSON_SERIALIZED_CLASS(NamedIdentity)
|
|
8737
|
+
/**
|
|
8738
|
+
* @brief Defines settings for a named identity
|
|
8739
|
+
*
|
|
8740
|
+
* Example: @include[doc] examples/NamedIdentity.json
|
|
8741
|
+
*
|
|
8742
|
+
*/
|
|
8743
|
+
class NamedIdentity : public ConfigurationObjectBase
|
|
8744
|
+
{
|
|
8745
|
+
IMPLEMENT_JSON_SERIALIZATION()
|
|
8746
|
+
IMPLEMENT_JSON_DOCUMENTATION(NamedIdentity)
|
|
8747
|
+
|
|
8748
|
+
public:
|
|
8749
|
+
/** @brief The identity name */
|
|
8750
|
+
std::string name;
|
|
8751
|
+
|
|
8752
|
+
/** @brief The identity certificate */
|
|
8753
|
+
SecurityCertificate certificate;
|
|
8754
|
+
|
|
8755
|
+
NamedIdentity()
|
|
8756
|
+
{
|
|
8757
|
+
clear();
|
|
8758
|
+
}
|
|
8759
|
+
|
|
8760
|
+
void clear()
|
|
8761
|
+
{
|
|
8762
|
+
name.clear();
|
|
8763
|
+
certificate.clear();
|
|
8764
|
+
}
|
|
8765
|
+
};
|
|
8766
|
+
|
|
8767
|
+
static void to_json(nlohmann::json& j, const NamedIdentity& p)
|
|
8768
|
+
{
|
|
8769
|
+
j = nlohmann::json{
|
|
8770
|
+
TOJSON_IMPL(name),
|
|
8771
|
+
TOJSON_IMPL(certificate)
|
|
8772
|
+
};
|
|
8773
|
+
}
|
|
8774
|
+
static void from_json(const nlohmann::json& j, NamedIdentity& p)
|
|
8775
|
+
{
|
|
8776
|
+
p.clear();
|
|
8777
|
+
getOptional<std::string>("name", p.name, j);
|
|
8778
|
+
getOptional<SecurityCertificate>("certificate", p.certificate, j);
|
|
8779
|
+
}
|
|
8780
|
+
|
|
8646
8781
|
//-----------------------------------------------------------
|
|
8647
8782
|
JSON_SERIALIZED_CLASS(RallypointExtendedGroupRestriction)
|
|
8648
8783
|
/**
|
|
@@ -8706,6 +8841,32 @@ namespace AppConfigurationObjects
|
|
|
8706
8841
|
IMPLEMENT_JSON_DOCUMENTATION(RallypointServer)
|
|
8707
8842
|
|
|
8708
8843
|
public:
|
|
8844
|
+
typedef enum
|
|
8845
|
+
{
|
|
8846
|
+
sptDefault = 0,
|
|
8847
|
+
sptCertificate = 1,
|
|
8848
|
+
sptCertPublicKey = 2,
|
|
8849
|
+
sptCertSubject = 3,
|
|
8850
|
+
sptCertIssuer = 4,
|
|
8851
|
+
sptCertFingerprint = 5,
|
|
8852
|
+
sptCertSerial = 6,
|
|
8853
|
+
sptSubjectC = 7,
|
|
8854
|
+
sptSubjectST = 8,
|
|
8855
|
+
sptSubjectL = 9,
|
|
8856
|
+
sptSubjectO = 10,
|
|
8857
|
+
sptSubjectOU = 11,
|
|
8858
|
+
sptSubjectCN = 12,
|
|
8859
|
+
sptIssuerC = 13,
|
|
8860
|
+
sptIssuerST = 14,
|
|
8861
|
+
sptIssuerL = 15,
|
|
8862
|
+
sptIssuerO = 16,
|
|
8863
|
+
sptIssuerOU = 17,
|
|
8864
|
+
sptIssuerCN = 18
|
|
8865
|
+
} StreamIdPrivacyType_t;
|
|
8866
|
+
|
|
8867
|
+
/** @brief [Optional, default sptDefault] Modes for stream ID transformation. */
|
|
8868
|
+
StreamIdPrivacyType_t streamIdPrivacyType;
|
|
8869
|
+
|
|
8709
8870
|
/** @brief [Optional] Settings for the FIPS crypto. */
|
|
8710
8871
|
FipsCryptoSettings fipsCrypto;
|
|
8711
8872
|
|
|
@@ -8880,6 +9041,9 @@ namespace AppConfigurationObjects
|
|
|
8880
9041
|
/** @brief [Optional] Low-level tuning */
|
|
8881
9042
|
TuningSettings tuning;
|
|
8882
9043
|
|
|
9044
|
+
/** @brief [Optional] List of additional named identities */
|
|
9045
|
+
std::vector<NamedIdentity> additionalIdentities;
|
|
9046
|
+
|
|
8883
9047
|
RallypointServer()
|
|
8884
9048
|
{
|
|
8885
9049
|
clear();
|
|
@@ -8945,6 +9109,8 @@ namespace AppConfigurationObjects
|
|
|
8945
9109
|
blockedDomains.clear();
|
|
8946
9110
|
extraDomains.clear();
|
|
8947
9111
|
tuning.clear();
|
|
9112
|
+
additionalIdentities.clear();
|
|
9113
|
+
streamIdPrivacyType = StreamIdPrivacyType_t::sptDefault;
|
|
8948
9114
|
}
|
|
8949
9115
|
};
|
|
8950
9116
|
|
|
@@ -9008,7 +9174,9 @@ namespace AppConfigurationObjects
|
|
|
9008
9174
|
TOJSON_IMPL(allowedDomains),
|
|
9009
9175
|
TOJSON_IMPL(blockedDomains),
|
|
9010
9176
|
TOJSON_IMPL(extraDomains),
|
|
9011
|
-
TOJSON_IMPL(tuning)
|
|
9177
|
+
TOJSON_IMPL(tuning),
|
|
9178
|
+
TOJSON_IMPL(additionalIdentities),
|
|
9179
|
+
TOJSON_IMPL(streamIdPrivacyType)
|
|
9012
9180
|
};
|
|
9013
9181
|
}
|
|
9014
9182
|
static void from_json(const nlohmann::json& j, RallypointServer& p)
|
|
@@ -9072,6 +9240,8 @@ namespace AppConfigurationObjects
|
|
|
9072
9240
|
getOptional<std::vector<std::string>>("blockedDomains", p.blockedDomains, j);
|
|
9073
9241
|
getOptional<std::vector<std::string>>("extraDomains", p.extraDomains, j);
|
|
9074
9242
|
getOptional<TuningSettings>("tuning", p.tuning, j);
|
|
9243
|
+
getOptional<std::vector<NamedIdentity>>("additionalIdentities", p.additionalIdentities, j);
|
|
9244
|
+
getOptional<RallypointServer::StreamIdPrivacyType_t>("streamIdPrivacyType", p.streamIdPrivacyType, j, RallypointServer::StreamIdPrivacyType_t::sptDefault);
|
|
9075
9245
|
}
|
|
9076
9246
|
|
|
9077
9247
|
//-----------------------------------------------------------
|
|
@@ -9609,6 +9779,9 @@ namespace AppConfigurationObjects
|
|
|
9609
9779
|
/** @brief Array of subject elements */
|
|
9610
9780
|
std::vector<CertificateSubjectElement> subjectElements;
|
|
9611
9781
|
|
|
9782
|
+
/** @brief Array of issuer elements */
|
|
9783
|
+
std::vector<CertificateSubjectElement> issuerElements;
|
|
9784
|
+
|
|
9612
9785
|
/** @brief PEM version of the certificate */
|
|
9613
9786
|
std::string certificatePem;
|
|
9614
9787
|
|
|
@@ -9631,6 +9804,7 @@ namespace AppConfigurationObjects
|
|
|
9631
9804
|
serial.clear();
|
|
9632
9805
|
fingerprint.clear();
|
|
9633
9806
|
subjectElements.clear();
|
|
9807
|
+
issuerElements.clear();
|
|
9634
9808
|
certificatePem.clear();
|
|
9635
9809
|
publicKeyPem.clear();
|
|
9636
9810
|
}
|
|
@@ -9648,6 +9822,7 @@ namespace AppConfigurationObjects
|
|
|
9648
9822
|
TOJSON_IMPL(serial),
|
|
9649
9823
|
TOJSON_IMPL(fingerprint),
|
|
9650
9824
|
TOJSON_IMPL(subjectElements),
|
|
9825
|
+
TOJSON_IMPL(issuerElements),
|
|
9651
9826
|
TOJSON_IMPL(certificatePem),
|
|
9652
9827
|
TOJSON_IMPL(publicKeyPem)
|
|
9653
9828
|
};
|
|
@@ -9666,6 +9841,7 @@ namespace AppConfigurationObjects
|
|
|
9666
9841
|
getOptional<std::string>("certificatePem", p.certificatePem, j, EMPTY_STRING);
|
|
9667
9842
|
getOptional<std::string>("publicKeyPem", p.publicKeyPem, j, EMPTY_STRING);
|
|
9668
9843
|
getOptional<std::vector<CertificateSubjectElement>>("subjectElements", p.subjectElements, j);
|
|
9844
|
+
getOptional<std::vector<CertificateSubjectElement>>("issuerElements", p.issuerElements, j);
|
|
9669
9845
|
}
|
|
9670
9846
|
|
|
9671
9847
|
|
|
@@ -9975,6 +10151,12 @@ namespace AppConfigurationObjects
|
|
|
9975
10151
|
|
|
9976
10152
|
/** @brief TX has ended with a failure */
|
|
9977
10153
|
txsTxEndedWithFailure = -10,
|
|
10154
|
+
|
|
10155
|
+
/** @brief Attempt to transmit on a bridged group that is not bomMultistream */
|
|
10156
|
+
txsBridgedButNotMultistream = -11,
|
|
10157
|
+
|
|
10158
|
+
/** @brief Transmission was automatically ended because the group became bridged on a non-multistream configuration */
|
|
10159
|
+
txsAutoEndedDueToNonMultistreamBridge = -12
|
|
9978
10160
|
} TxStatus_t;
|
|
9979
10161
|
|
|
9980
10162
|
/** @brief ID of the group */
|
|
@@ -11250,26 +11432,33 @@ namespace AppConfigurationObjects
|
|
|
11250
11432
|
IMPLEMENT_JSON_DOCUMENTATION(BridgingServerConfiguration)
|
|
11251
11433
|
|
|
11252
11434
|
public:
|
|
11253
|
-
/** @brief Enum describing the
|
|
11435
|
+
/** @brief Enum describing the default mode the bridging service runs in. Values of omRaw,
|
|
11436
|
+
* omMultistream, omAnonymousMixedStream all cause the service to force the
|
|
11437
|
+
* groups in a bridge to the appropriate type. A value of omADictatedByGroup prevents
|
|
11438
|
+
* the service from forcing the individual groups' "type" and "bom" values and
|
|
11439
|
+
* instead relies on the individual groups to be correctly defined in the configuration.
|
|
11440
|
+
*/
|
|
11254
11441
|
typedef enum
|
|
11255
11442
|
{
|
|
11256
|
-
/** @brief Raw mode (default) - packet payloads are not accessed or modified and forwarded as raw packets */
|
|
11443
|
+
/** @brief Raw mode (default) - packet payloads are not accessed or modified and forwarded as raw packets. */
|
|
11257
11444
|
omRaw = 0,
|
|
11258
11445
|
|
|
11259
|
-
/** @brief Audio payloads are transformed, headers are preserved, multiple parallel output streams are
|
|
11260
|
-
|
|
11446
|
+
/** @brief Audio payloads are transformed, headers are preserved, multiple parallel output streams are
|
|
11447
|
+
* possible/expected. In this mode all groups must be gtAudio (type = 1).*/
|
|
11448
|
+
omMultistream = 1,
|
|
11261
11449
|
|
|
11262
|
-
/** @brief Audio payloads are mixed - output is anonymous (i.e. no metadata)
|
|
11263
|
-
|
|
11450
|
+
/** @brief Audio payloads are mixed - output is anonymous (i.e. no metadata) even if the target group(s)
|
|
11451
|
+
* allow header extensions. In this mode all groups must be gtAudio (type = 1). */
|
|
11452
|
+
omMixedStream = 2,
|
|
11264
11453
|
|
|
11265
|
-
/** @brief
|
|
11266
|
-
|
|
11454
|
+
/** @brief Operation is dictated by the individual groups in the bridge */
|
|
11455
|
+
omADictatedByGroup = 3,
|
|
11267
11456
|
} OpMode_t;
|
|
11268
11457
|
|
|
11269
11458
|
/** @brief A unqiue identifier for the bridge server */
|
|
11270
11459
|
std::string id;
|
|
11271
11460
|
|
|
11272
|
-
/** @brief Specifies the operation mode (see @ref OpMode_t). */
|
|
11461
|
+
/** @brief Specifies the default operation mode (see @ref OpMode_t). */
|
|
11273
11462
|
OpMode_t mode;
|
|
11274
11463
|
|
|
11275
11464
|
/** @brief Number of seconds between checks to see if the service configuration has been updated. Default is 60.*/
|
|
@@ -27,7 +27,7 @@ static const size_t ENGAGE_MAX_CRYPTO_PASSWORD_BYTES = 256;
|
|
|
27
27
|
|
|
28
28
|
static const int ENGAGE_INVALID_IP_ADDRESS_FAMILY = -1;
|
|
29
29
|
|
|
30
|
-
static const size_t
|
|
30
|
+
static const size_t ENGAGE_MAX_OUTPUT_QUEUED_UDP_PACKETS = 1024;
|
|
31
31
|
|
|
32
32
|
static const size_t ENGAGE_MAX_IP_ADDR_SIZE = sizeof(struct sockaddr_in6);
|
|
33
33
|
static const size_t ENGAGE_MAX_ALIAS_SIZE = 16;
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED