19 #define JANUS_JSON_STRING JSON_STRING 20 #define JANUS_JSON_INTEGER JSON_INTEGER 21 #define JANUS_JSON_OBJECT JSON_OBJECT 23 #define JANUS_JSON_BOOL JSON_TRUE 24 #define JANUS_JSON_PARAM_REQUIRED 1 25 #define JANUS_JSON_PARAM_POSITIVE 2 26 #define JANUS_JSON_PARAM_NONEMPTY 4 50 char *
janus_string_replace(
char *message,
const char *old_string,
const char *new_string) G_GNUC_WARN_UNUSED_RESULT;
198 #define JANUS_VALIDATE_JSON_OBJECT_FORMAT(missing_format, invalid_format, obj, params, error_code, error_cause, log_error, missing_code, invalid_code) \ 202 for(i = 0; i < sizeof(params) / sizeof(struct janus_json_parameter); i++) { \ 203 json_t *val = json_object_get(obj, params[i].name); \ 205 if((params[i].flags & JANUS_JSON_PARAM_REQUIRED) != 0) { \ 206 error_code = (missing_code); \ 208 JANUS_LOG(LOG_ERR, missing_format "\n", params[i].name); \ 209 if(error_cause != NULL) \ 210 g_snprintf(error_cause, sizeof(error_cause), missing_format, params[i].name); \ 215 if(!janus_json_is_valid(val, params[i].jtype, params[i].flags)) { \ 216 error_code = (invalid_code); \ 217 char type_name[20]; \ 218 janus_get_json_type_name(params[i].jtype, params[i].flags, type_name); \ 220 JANUS_LOG(LOG_ERR, invalid_format "\n", params[i].name, type_name); \ 221 if(error_cause != NULL) \ 222 g_snprintf(error_cause, sizeof(error_cause), invalid_format, params[i].name, type_name); \ 236 #define JANUS_VALIDATE_JSON_OBJECT(obj, params, error_code, error_cause, log_error, missing_code, invalid_code) \ 237 JANUS_VALIDATE_JSON_OBJECT_FORMAT("Missing mandatory element (%s)", "Invalid element type (%s should be %s)", obj, params, error_code, error_cause, log_error, missing_code, invalid_code) 248 #define JANUS_CHECK_SECRET(secret, obj, member, error_code, error_cause, missing_code, invalid_code, unauthorized_code) \ 251 static struct janus_json_parameter secret_parameters[] = { \ 252 {member, JSON_STRING, JANUS_JSON_PARAM_REQUIRED} \ 254 JANUS_VALIDATE_JSON_OBJECT(obj, secret_parameters, error_code, error_cause, TRUE, missing_code, invalid_code); \ 255 if(error_code == 0 && !janus_strcmp_const_time((secret), json_string_value(json_object_get(obj, member)))) { \ 256 error_code = (unauthorized_code); \ 257 JANUS_LOG(LOG_ERR, "Unauthorized (wrong %s)\n", member); \ 258 if(error_cause != NULL) \ 259 g_snprintf(error_cause, sizeof(error_cause), "Unauthorized (wrong %s)", member); \ 302 uint16_t *picid, uint8_t *tl0picidx, uint8_t *tid, uint8_t *y, uint8_t *keyidx);
314 uint8_t fbit, pbit, dbit,
ubit, bbit, ebit;
337 void janus_set1(guint8 *data,
size_t i, guint8 val);
344 void janus_set2(guint8 *data,
size_t i, guint32 val);
351 void janus_set3(guint8 *data,
size_t i, guint32 val);
358 void janus_set4(guint8 *data,
size_t i, guint32 val);
370 size_t janus_gzip_compress(
int compression,
char *text,
size_t tlen,
char *compressed,
size_t zlen);
unsigned int flags
Definition: utils.h:31
void janus_set2(guint8 *data, size_t i, guint32 val)
Helper method to set two bytes at a memory position.
Definition: utils.c:1103
gsize janus_flags
Janus flags container.
Definition: utils.h:110
int janus_string_to_uint32(const char *str, uint32_t *num)
Helper method to convert a string to a uint32_t.
Definition: utils.c:158
struct json_t json_t
Definition: plugin.h:236
int janus_get_codec_pt(const char *sdp, const char *codec)
Ugly and dirty helper to quickly get the payload type associated with a codec in an SDP...
Definition: utils.c:292
guint64 janus_random_uint64(void)
Helper to generate random 64-bit unsigned integers (useful for Janus IDs)
Definition: utils.c:77
const char * janus_get_codec_from_pt(const char *sdp, int pt)
Ugly and dirty helper to quickly get the codec associated with a payload type in an SDP...
Definition: utils.c:381
int janus_pidfile_create(const char *file)
Create and lock a PID file.
Definition: utils.c:436
void janus_get_json_type_name(int jtype, unsigned int flags, char *type_name)
Creates a string describing the JSON type and constraint.
Definition: utils.c:543
int janus_vp9_parse_svc(char *buffer, int len, gboolean *found, janus_vp9_svc_info *info)
Helper method to parse a VP9 payload descriptor for SVC-related info (e.g., when SVC is enabled) ...
Definition: utils.c:954
int janus_string_to_uint16(const char *str, uint16_t *num)
Helper method to convert a string to a uint16_t.
Definition: utils.c:148
void janus_vp8_simulcast_context_reset(janus_vp8_simulcast_context *context)
Set (or reset) the context fields to their default values.
Definition: utils.c:917
int janus_mkdir(const char *dir, mode_t mode)
Helper to create a new directory, and recursively create parent directories if needed.
Definition: utils.c:265
gboolean janus_vp9_is_keyframe(const char *buffer, int len)
Helper method to check if a VP9 frame is a keyframe or not.
Definition: utils.c:699
gboolean janus_vp8_is_keyframe(const char *buffer, int len)
Helper method to check if a VP8 frame is a keyframe or not.
Definition: utils.c:623
void janus_flags_reset(janus_flags *flags)
Janus flags reset method.
Definition: utils.c:168
VP9 SVC info, as parsed from a payload descriptor.
Definition: utils.h:312
void janus_set4(guint8 *data, size_t i, guint32 val)
Helper method to set four bytes at a memory position.
Definition: utils.c:1114
VP8 simulcasting context, in order to make sure SSRC changes result in coherent picid/temporal level ...
Definition: utils.h:283
void janus_protected_folders_clear(void)
Cleanup the list of protected folder.
Definition: utils.c:536
const gchar * name
Definition: utils.h:29
gint64 janus_get_monotonic_time(void)
Helper to retrieve the system monotonic time, as Glib's g_get_monotonic_time may not be available (on...
Definition: utils.c:33
json_type jtype
Definition: utils.h:30
uint8_t ubit
Definition: utils.h:314
int janus_string_to_uint8(const char *str, uint8_t *num)
Helper method to convert a string to a uint8_t.
Definition: utils.c:138
gint64 janus_get_real_time(void)
Helper to retrieve the system real time, as Glib's g_get_real_time may not be available (only since 2...
Definition: utils.c:39
uint8_t last_tlzi
Definition: utils.h:285
struct janus_vp8_simulcast_context janus_vp8_simulcast_context
VP8 simulcasting context, in order to make sure SSRC changes result in coherent picid/temporal level ...
int temporal_layer
Definition: utils.h:313
void janus_set3(guint8 *data, size_t i, guint32 val)
Helper method to set three bytes at a memory position.
Definition: utils.c:1108
guint32 janus_random_uint32(void)
Helper to generate random 32-bit unsigned integers (useful for SSRCs, etc.)
Definition: utils.c:73
gboolean janus_flags_is_set(janus_flags *flags, gsize flag)
Janus flags check method.
Definition: utils.c:185
guint32 janus_push_bits(guint32 word, size_t num, guint32 val)
Helper method to push individual bits at the end of a word.
Definition: utils.c:1095
void janus_protected_folder_add(const char *folder)
Add a folder to the protected list (meaning we won't create files there, like recordings or pcap dump...
Definition: utils.c:495
gboolean janus_h264_is_keyframe(const char *buffer, int len)
Helper method to check if an H.264 frame is a keyframe or not.
Definition: utils.c:783
char * janus_string_replace(char *message, const char *old_string, const char *new_string) G_GNUC_WARN_UNUSED_RESULT
Helper to replace strings.
Definition: utils.c:194
gboolean janus_is_folder_protected(const char *path)
Check if the path points to a protected folder.
Definition: utils.c:503
int janus_pidfile_remove(void)
Unlock and remove a previously created PID file.
Definition: utils.c:475
void janus_flags_set(janus_flags *flags, gsize flag)
Janus flags set method.
Definition: utils.c:173
guint64 * janus_uint64_dup(guint64 num)
Helper to generate an allocated copy of a guint64 number.
Definition: utils.c:132
struct janus_vp9_svc_info janus_vp9_svc_info
VP9 SVC info, as parsed from a payload descriptor.
gboolean janus_is_true(const char *value)
Helper to parse yes/no|true/false configuration values.
Definition: utils.c:45
uint16_t last_picid
Definition: utils.h:284
void janus_flags_clear(janus_flags *flags, gsize flag)
Janus flags clear method.
Definition: utils.c:179
gboolean janus_strcmp_const_time(const void *str1, const void *str2)
Helper to compare strings in constant time.
Definition: utils.c:49
char * janus_random_uuid(void)
Helper to generate random UUIDs (needed by some plugins)
Definition: utils.c:93
void janus_vp8_simulcast_descriptor_update(char *buffer, int len, janus_vp8_simulcast_context *context, gboolean switched)
Use the context info to update the RTP header of a packet, if needed.
Definition: utils.c:929
size_t janus_gzip_compress(int compression, char *text, size_t tlen, char *compressed, size_t zlen)
Helper method to compress a string to gzip (using zlib)
Definition: utils.c:1122
int janus_vp8_parse_descriptor(char *buffer, int len, uint16_t *picid, uint8_t *tl0picidx, uint8_t *tid, uint8_t *y, uint8_t *keyidx)
Helper method to parse a VP8 payload descriptor for useful info (e.g., when simulcasting) ...
Definition: utils.c:816
void janus_set1(guint8 *data, size_t i, guint8 val)
Helper method to set one byte at a memory position.
Definition: utils.c:1099
gboolean janus_json_is_valid(json_t *val, json_type jtype, unsigned int flags)
Checks whether the JSON value matches the type and constraint.
Definition: utils.c:583