engage-engine 1.236.90760003 → 1.238.90780004

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.
@@ -2105,6 +2105,22 @@ namespace AppConfigurationObjects
2105
2105
  getOptional<NetworkAddress>("tx", p.tx, j);
2106
2106
  }
2107
2107
 
2108
+ /** @brief Enum describing restriction types. */
2109
+ typedef enum
2110
+ {
2111
+ /** @brief Registration for groups is allowed by default */
2112
+ graptPermissive = 0,
2113
+
2114
+ /** @brief Registration for groups is NOT allowed by default - requires definitive access through something like a whitelist*/
2115
+ graptStrict = 1
2116
+ } GroupRestrictionAccessPolicyType_t;
2117
+
2118
+ static bool isValidGroupRestrictionAccessPolicyType(GroupRestrictionAccessPolicyType_t t)
2119
+ {
2120
+ return (t == GroupRestrictionAccessPolicyType_t::graptPermissive ||
2121
+ t == GroupRestrictionAccessPolicyType_t::graptStrict );
2122
+ }
2123
+
2108
2124
  /** @brief Enum describing restriction types. */
2109
2125
  typedef enum
2110
2126
  {
@@ -2125,6 +2141,43 @@ namespace AppConfigurationObjects
2125
2141
  t == RestrictionType_t::rtBlacklist );
2126
2142
  }
2127
2143
 
2144
+ /** @brief Enum describing restriction element types. */
2145
+ typedef enum
2146
+ {
2147
+ /** @brief A literal group ID */
2148
+ retGroupId = 0,
2149
+
2150
+ /** @brief Elements are group ID regex patterns */
2151
+ retGroupIdPattern = 1,
2152
+
2153
+ /** @brief Elements are generic access tags regex patterns */
2154
+ retGenericAccessTagPattern = 2,
2155
+
2156
+ /** @brief Elements are X.509 certificate serial number regex patterns */
2157
+ retCertificateSerialNumberPattern = 3,
2158
+
2159
+ /** @brief Elements are X.509 certificate fingerprint regex patterns */
2160
+ retCertificateFingerprintPattern = 4,
2161
+
2162
+ /** @brief Elements are X.509 certificate subject regex patterns */
2163
+ retCertificateSubjectPattern = 5,
2164
+
2165
+ /** @brief Elements are X.509 certificate issuer regex patterns */
2166
+ retCertificateIssuerPattern = 6
2167
+ } RestrictionElementType_t;
2168
+
2169
+ static bool isValidRestrictionElementType(RestrictionElementType_t t)
2170
+ {
2171
+ return (t == RestrictionElementType_t::retGroupId ||
2172
+ t == RestrictionElementType_t::retGroupIdPattern ||
2173
+ t == RestrictionElementType_t::retGenericAccessTagPattern ||
2174
+ t == RestrictionElementType_t::retCertificateSerialNumberPattern ||
2175
+ t == RestrictionElementType_t::retCertificateFingerprintPattern ||
2176
+ t == RestrictionElementType_t::retCertificateSubjectPattern ||
2177
+ t == RestrictionElementType_t::retCertificateIssuerPattern);
2178
+ }
2179
+
2180
+
2128
2181
  //-----------------------------------------------------------
2129
2182
  JSON_SERIALIZED_CLASS(NetworkAddressRestrictionList)
2130
2183
  /**
@@ -2196,12 +2249,16 @@ namespace AppConfigurationObjects
2196
2249
  /** @brief Type indicating how the elements are to be treated **/
2197
2250
  RestrictionType_t type;
2198
2251
 
2252
+ /** @brief Type indicating what kind of data each element contains **/
2253
+ RestrictionElementType_t elementsType;
2254
+
2199
2255
  /** @brief List of elements */
2200
- std::vector<std::string> elements;
2256
+ std::vector<std::string> elements;
2201
2257
 
2202
2258
  StringRestrictionList()
2203
2259
  {
2204
2260
  type = RestrictionType_t::rtUndefined;
2261
+ elementsType = RestrictionElementType_t::retGroupId;
2205
2262
  clear();
2206
2263
  }
2207
2264
 
@@ -2215,6 +2272,7 @@ namespace AppConfigurationObjects
2215
2272
  {
2216
2273
  j = nlohmann::json{
2217
2274
  TOJSON_IMPL(type),
2275
+ TOJSON_IMPL(elementsType),
2218
2276
  TOJSON_IMPL(elements)
2219
2277
  };
2220
2278
  }
@@ -2222,6 +2280,7 @@ namespace AppConfigurationObjects
2222
2280
  {
2223
2281
  p.clear();
2224
2282
  getOptional<RestrictionType_t>("type", p.type, j, RestrictionType_t::rtUndefined);
2283
+ getOptional<RestrictionElementType_t>("elementsType", p.elementsType, j, RestrictionElementType_t::retGroupId);
2225
2284
  getOptional<std::vector<std::string>>("elements", p.elements, j);
2226
2285
  }
2227
2286
 
@@ -3879,6 +3938,44 @@ namespace AppConfigurationObjects
3879
3938
  ENGAGE_IGNORE_COMPILER_UNUSED_WARNING static const char *GROUP_DISCONNECTED_REASON_SECURITY_CLASSIFICATION_LEVEL_TOO_HIGH = "SecurityClassificationLevelTooHigh";
3880
3939
  /** @brief The Rallypoint has denied the registration for no specific reason **/
3881
3940
  ENGAGE_IGNORE_COMPILER_UNUSED_WARNING static const char *GROUP_DISCONNECTED_REASON_GENERAL_DENIAL = "GeneralDenial";
3941
+
3942
+ /** @brief The Rallypoint denied the registration request because the far-end's certificate does not have an access tag for the group **/
3943
+ ENGAGE_IGNORE_COMPILER_UNUSED_WARNING static const char *GROUP_DISCONNECTED_REASON_NO_ACCESS_TAG = "NoAccessTag";
3944
+ /** @brief The Rallypoint denied the registration request because the far-end's certificate does not have an access tag for the group **/
3945
+ ENGAGE_IGNORE_COMPILER_UNUSED_WARNING static const char *GROUP_DISCONNECTED_REASON_EXCLUDED_ACCESS_TAG = "ExcludedAccessTag";
3946
+ /** @brief The Rallypoint denied the registration request because the far-end's certificate does not have an an approved serial number **/
3947
+ ENGAGE_IGNORE_COMPILER_UNUSED_WARNING static const char *GROUP_DISCONNECTED_REASON_NO_SERIAL = "NoSerial";
3948
+ /** @brief The Rallypoint denied the registration request because the far-end's certificate serial number has been excluded **/
3949
+ ENGAGE_IGNORE_COMPILER_UNUSED_WARNING static const char *GROUP_DISCONNECTED_REASON_EXCLUDED_SERIAL = "ExcludedSerial";
3950
+ /** @brief The Rallypoint denied the registration request because the far-end's certificate does not have an an approved fingerprint **/
3951
+ ENGAGE_IGNORE_COMPILER_UNUSED_WARNING static const char *GROUP_DISCONNECTED_REASON_NO_FINGERPRINT = "NoFingerprint";
3952
+ /** @brief The Rallypoint denied the registration request because the far-end's certificate fingerprint has been excluded **/
3953
+ ENGAGE_IGNORE_COMPILER_UNUSED_WARNING static const char *GROUP_DISCONNECTED_REASON_EXCLUDED_FINGERPRINT = "ExcludedFingerprint";
3954
+ /** @brief The Rallypoint denied the registration request because the far-end's certificate does not have an an approved subject **/
3955
+ ENGAGE_IGNORE_COMPILER_UNUSED_WARNING static const char *GROUP_DISCONNECTED_REASON_NO_SUBJECT = "NoSubject";
3956
+ /** @brief The Rallypoint denied the registration request because the far-end's certificate subject has been excluded **/
3957
+ ENGAGE_IGNORE_COMPILER_UNUSED_WARNING static const char *GROUP_DISCONNECTED_REASON_EXCLUDED_SUBJECT = "ExcludedSubject";
3958
+ /** @brief The Rallypoint denied the registration request because the far-end's certificate does not have an an approved issuer **/
3959
+ ENGAGE_IGNORE_COMPILER_UNUSED_WARNING static const char *GROUP_DISCONNECTED_REASON_NO_ISSUER = "NoIssuer";
3960
+ /** @brief The Rallypoint denied the registration request because the far-end's certificate issuer has been excluded **/
3961
+ ENGAGE_IGNORE_COMPILER_UNUSED_WARNING static const char *GROUP_DISCONNECTED_REASON_EXCLUDED_ISSUER = "ExcludedIssuer";
3962
+ /** @brief The Rallypoint denied the registration request because the far-end does not appear in any whitelist criteria **/
3963
+ ENGAGE_IGNORE_COMPILER_UNUSED_WARNING static const char *GROUP_DISCONNECTED_REASON_NOT_ON_WHITELIST = "NotOnWhitelist";
3964
+ /** @brief The Rallypoint denied the registration request because the far-end does appears in blackist criteria **/
3965
+ ENGAGE_IGNORE_COMPILER_UNUSED_WARNING static const char *GROUP_DISCONNECTED_REASON_ON_BLACKLIST = "OnBlacklist";
3966
+
3967
+ /** @} */
3968
+
3969
+ /** @addtogroup OID IANA-type object identifiers
3970
+ *
3971
+ * Object Identifiers we commonly use
3972
+ *
3973
+ * @{
3974
+ */
3975
+ /** @brief Rally Tactical Systems' PEN as assigned by IANA */
3976
+ ENGAGE_IGNORE_COMPILER_UNUSED_WARNING static const char *OID_RTS_PEM = "58217";
3977
+ /** @brief The link to the Rallypoint is down */
3978
+ ENGAGE_IGNORE_COMPILER_UNUSED_WARNING static const char *OID_RTS_CERT_SUBJ_ACCESS_TAGS = "1.3.6.1.4.1.58217.1";
3882
3979
  /** @} */
3883
3980
 
3884
3981
 
@@ -7944,6 +8041,54 @@ namespace AppConfigurationObjects
7944
8041
  getOptional<std::vector<std::string>>("extraMeshes", p.extraMeshes, j);
7945
8042
  }
7946
8043
 
8044
+
8045
+ //-----------------------------------------------------------
8046
+ JSON_SERIALIZED_CLASS(RallypointExtendedGroupRestriction)
8047
+ /**
8048
+ * @brief Defines settings for Rallypoint extended group restrictions
8049
+ *
8050
+ * Example: @include[doc] examples/RallypointExtendedGroupRestriction.json
8051
+ *
8052
+ */
8053
+ class RallypointExtendedGroupRestriction : public ConfigurationObjectBase
8054
+ {
8055
+ IMPLEMENT_JSON_SERIALIZATION()
8056
+ IMPLEMENT_JSON_DOCUMENTATION(RallypointExtendedGroupRestriction)
8057
+
8058
+ public:
8059
+ /** @brief Group ID */
8060
+ std::string id;
8061
+
8062
+ /** @brief Restrictions */
8063
+ std::vector<StringRestrictionList> restrictions;
8064
+
8065
+ RallypointExtendedGroupRestriction()
8066
+ {
8067
+ clear();
8068
+ }
8069
+
8070
+ void clear()
8071
+ {
8072
+ id.clear();
8073
+ restrictions.clear();
8074
+ }
8075
+ };
8076
+
8077
+ static void to_json(nlohmann::json& j, const RallypointExtendedGroupRestriction& p)
8078
+ {
8079
+ j = nlohmann::json{
8080
+ TOJSON_IMPL(id),
8081
+ TOJSON_IMPL(restrictions)
8082
+ };
8083
+ }
8084
+ static void from_json(const nlohmann::json& j, RallypointExtendedGroupRestriction& p)
8085
+ {
8086
+ p.clear();
8087
+ getOptional<std::string>("id", p.id, j);
8088
+ getOptional<std::vector<StringRestrictionList>>("restrictions", p.restrictions, j);
8089
+ }
8090
+
8091
+
7947
8092
  //-----------------------------------------------------------
7948
8093
  JSON_SERIALIZED_CLASS(RallypointServer)
7949
8094
  /**
@@ -8056,6 +8201,12 @@ namespace AppConfigurationObjects
8056
8201
  /** @brief Group IDs to be restricted (inclusive or exclusive) */
8057
8202
  StringRestrictionList groupRestrictions;
8058
8203
 
8204
+ /** @brief The policy employed to allow group registration */
8205
+ GroupRestrictionAccessPolicyType_t groupRestrictionAccessPolicyType;
8206
+
8207
+ /** @brief Extended group restrictions */
8208
+ std::vector<RallypointExtendedGroupRestriction> extendedGroupRestrictions;
8209
+
8059
8210
  /** @brief Name to use for signalling a configuration check */
8060
8211
  std::string configurationCheckSignalName;
8061
8212
 
@@ -8159,6 +8310,8 @@ namespace AppConfigurationObjects
8159
8310
  websocket.clear();
8160
8311
  nsm.clear();
8161
8312
  advertising.clear();
8313
+ extendedGroupRestrictions.clear();
8314
+ groupRestrictionAccessPolicyType = GroupRestrictionAccessPolicyType_t::graptPermissive;
8162
8315
  }
8163
8316
  };
8164
8317
 
@@ -8212,7 +8365,9 @@ namespace AppConfigurationObjects
8212
8365
  TOJSON_IMPL(peerRtBehaviors),
8213
8366
  TOJSON_IMPL(websocket),
8214
8367
  TOJSON_IMPL(nsm),
8215
- TOJSON_IMPL(advertising)
8368
+ TOJSON_IMPL(advertising),
8369
+ TOJSON_IMPL(extendedGroupRestrictions),
8370
+ TOJSON_IMPL(groupRestrictionAccessPolicyType)
8216
8371
  };
8217
8372
  }
8218
8373
  static void from_json(const nlohmann::json& j, RallypointServer& p)
@@ -8266,6 +8421,8 @@ namespace AppConfigurationObjects
8266
8421
  getOptional<RallypointWebsocketSettings>("websocket", p.websocket, j);
8267
8422
  getOptional<NsmConfiguration>("nsm", p.nsm, j);
8268
8423
  getOptional<RallypointAdvertisingSettings>("advertising", p.advertising, j);
8424
+ getOptional<std::vector<RallypointExtendedGroupRestriction>>("extendedGroupRestrictions", p.extendedGroupRestrictions, j);
8425
+ getOptional<GroupRestrictionAccessPolicyType_t>("groupRestrictionAccessPolicyType", p.groupRestrictionAccessPolicyType, j, GroupRestrictionAccessPolicyType_t::graptPermissive);
8269
8426
  }
8270
8427
 
8271
8428
  //-----------------------------------------------------------
@@ -8703,6 +8860,53 @@ namespace AppConfigurationObjects
8703
8860
  getOptional<std::vector<CertStoreCertificateElement>>("certificates", p.certificates, j);
8704
8861
  }
8705
8862
 
8863
+ //-----------------------------------------------------------
8864
+ JSON_SERIALIZED_CLASS(CertificateSubjectElement)
8865
+ /**
8866
+ * @brief Description of a certificate subject element
8867
+ *
8868
+ * Helper C++ class to serialize and de-serialize CertificateSubjectElement JSON
8869
+ *
8870
+ */
8871
+ class CertificateSubjectElement : public ConfigurationObjectBase
8872
+ {
8873
+ IMPLEMENT_JSON_SERIALIZATION()
8874
+ IMPLEMENT_JSON_DOCUMENTATION(CertificateSubjectElement)
8875
+
8876
+ public:
8877
+ /** @brief Name */
8878
+ std::string name;
8879
+
8880
+ /** @brief Value */
8881
+ std::string value;
8882
+
8883
+ CertificateSubjectElement()
8884
+ {
8885
+ clear();
8886
+ }
8887
+
8888
+ void clear()
8889
+ {
8890
+ name.clear();
8891
+ value.clear();
8892
+ }
8893
+ };
8894
+
8895
+ static void to_json(nlohmann::json& j, const CertificateSubjectElement& p)
8896
+ {
8897
+ j = nlohmann::json{
8898
+ TOJSON_IMPL(name),
8899
+ TOJSON_IMPL(value)
8900
+ };
8901
+ }
8902
+ static void from_json(const nlohmann::json& j, CertificateSubjectElement& p)
8903
+ {
8904
+ p.clear();
8905
+ getOptional<std::string>("name", p.name, j, EMPTY_STRING);
8906
+ getOptional<std::string>("value", p.value, j, EMPTY_STRING);
8907
+ }
8908
+
8909
+
8706
8910
  //-----------------------------------------------------------
8707
8911
  JSON_SERIALIZED_CLASS(CertificateDescriptor)
8708
8912
  /**
@@ -8741,6 +8945,9 @@ namespace AppConfigurationObjects
8741
8945
  /** @brief Fingerprint */
8742
8946
  std::string fingerprint;
8743
8947
 
8948
+ /** @brief Array of subject elements */
8949
+ std::vector<CertificateSubjectElement> subjectElements;
8950
+
8744
8951
  CertificateDescriptor()
8745
8952
  {
8746
8953
  clear();
@@ -8756,6 +8963,7 @@ namespace AppConfigurationObjects
8756
8963
  notAfter.clear();
8757
8964
  serial.clear();
8758
8965
  fingerprint.clear();
8966
+ subjectElements.clear();
8759
8967
  }
8760
8968
  };
8761
8969
 
@@ -8769,7 +8977,8 @@ namespace AppConfigurationObjects
8769
8977
  TOJSON_IMPL(notBefore),
8770
8978
  TOJSON_IMPL(notAfter),
8771
8979
  TOJSON_IMPL(serial),
8772
- TOJSON_IMPL(fingerprint)
8980
+ TOJSON_IMPL(fingerprint),
8981
+ TOJSON_IMPL(subjectElements)
8773
8982
  };
8774
8983
  }
8775
8984
  static void from_json(const nlohmann::json& j, CertificateDescriptor& p)
@@ -8783,6 +8992,7 @@ namespace AppConfigurationObjects
8783
8992
  getOptional<std::string>("notAfter", p.notAfter, j, EMPTY_STRING);
8784
8993
  getOptional<std::string>("serial", p.serial, j, EMPTY_STRING);
8785
8994
  getOptional<std::string>("fingerprint", p.fingerprint, j, EMPTY_STRING);
8995
+ getOptional<std::vector<CertificateSubjectElement>>("subjectElements", p.subjectElements, j);
8786
8996
  }
8787
8997
 
8788
8998
 
@@ -9,8 +9,11 @@
9
9
  #include <stdint.h>
10
10
 
11
11
  #if 1
12
- #include <cstddef>
13
- #include <cstdint>
12
+
13
+ #if !defined(__APPLE__)
14
+ #include <cstddef>
15
+ #include <cstdint>
16
+ #endif
14
17
 
15
18
  #ifdef WIN32
16
19
  #include <winsock2.h>
Binary file
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "engage-engine",
3
- "version": "1.236.90760003",
3
+ "version": "1.238.90780004",
4
4
  "description": "Use Engage to communicate with everyone, everywhere, from any device",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"