Compare commits

..

No commits in common. "5f4b3dc4677d2dc9dc87ae10f87f26bd1a55770f" and "da0011869dc037efb65f49257323f94a928ad1a0" have entirely different histories.

2 changed files with 161 additions and 373 deletions

View File

@ -15,9 +15,6 @@ All notable changes to this project will be documented in this file.
### Added ### Added
- Initial changelog following the keepachangelog.com format - Initial changelog following the keepachangelog.com format
### Changed
- Updated the way jilo-cli handles multiple options, added filtering conferences by time period
--- ---
## 0.1 - 2024-06-12 ## 0.1 - 2024-06-12

393
jilo-cli
View File

@ -7,8 +7,8 @@
# Command line interface (jilo-cli) # Command line interface (jilo-cli)
### ###
VERSION="0.1.1-dev" VERSION="0.1"
RELEASE_DATE="unreleased" RELEASE_DATE="2024-06-12"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" #" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" #"
@ -68,12 +68,11 @@ JOIN (
GROUP BY GROUP BY
conference_name conference_name
) AS name_counts ON c.conference_name = name_counts.conference_name ) AS name_counts ON c.conference_name = name_counts.conference_name
JOIN
conference_events ce ON c.conference_id = ce.conference_id
WHERE (ce.time >= '%s' AND ce.time <= '%s')
ORDER BY ORDER BY
c.id;" c.id;"
db_conferences_id_template="SELECT * FROM conferences WHERE conference_id='%s';"
db_conferences_name_template="SELECT * FROM conferences WHERE conference_name='%s';"
db_conference_events_template="SELECT * FROM conference_events WHERE conference_id='%s';"
db_conference_by_id_template=" db_conference_by_id_template="
SELECT SELECT
pe.time, pe.time,
@ -94,7 +93,6 @@ LEFT JOIN
participant_events pe ON p.endpoint_id = pe.participant_id participant_events pe ON p.endpoint_id = pe.participant_id
WHERE WHERE
c.conference_id = '%s' c.conference_id = '%s'
AND (pe.time >= '%s' AND pe.time <= '%s')
UNION UNION
@ -113,11 +111,9 @@ LEFT JOIN
conference_events ce ON c.conference_id = ce.conference_id conference_events ce ON c.conference_id = ce.conference_id
WHERE WHERE
c.conference_id = '%s' c.conference_id = '%s'
AND (event_time >= '%s' AND event_time <= '%s')
ORDER BY ORDER BY
pe.time;" pe.time;"
db_conference_by_name_template=" db_conference_by_name_template="
SELECT SELECT
pe.time, pe.time,
@ -138,7 +134,6 @@ LEFT JOIN
participant_events pe ON p.endpoint_id = pe.participant_id participant_events pe ON p.endpoint_id = pe.participant_id
WHERE WHERE
c.conference_name = '%s' c.conference_name = '%s'
AND (pe.time >= '%s' AND pe.time <= '%s')
UNION UNION
@ -157,23 +152,20 @@ LEFT JOIN
conference_events ce ON c.conference_id = ce.conference_id conference_events ce ON c.conference_id = ce.conference_id
WHERE WHERE
c.conference_name = '%s' c.conference_name = '%s'
AND (event_time >= '%s' AND event_time <= '%s')
ORDER BY ORDER BY
pe.time;" pe.time;"
## participant related ## participant related
db_participants_all_template=" db_participants_all_template="SELECT jitsi_component, endpoint_id, conference_id FROM participants ORDER BY id;"
SELECT DISTINCT db_participants_id_template="SELECT * FROM participants WHERE endpoint_id='%s';"
p.jitsi_component, p.endpoint_id, p.conference_id db_participant_events_template="SELECT * FROM participant_events WHERE participant_id='%s';"
FROM
participants p db_participants_endpoint_template="SELECT * FROM participants WHERE endpoint_id='%s';"
JOIN db_participants_conference_template="SELECT * FROM participants WHERE conference_id='%s';"
participant_events pe ON p.endpoint_id = pe.participant_id db_participants_statsid_template="SELECT * FROM participant_events WHERE event_type = 'stats_id' AND event_param LIKE '%%%s%%';"
WHERE db_participants_ip_template="SELECT * FROM participant_events WHERE event_type = 'pair selected' AND event_param='%s';"
pe.time >= '%s' AND pe.time <= '%s'
ORDER BY p.id;"
db_conference_by_participant_id_template=" db_conference_by_participant_id_template="
SELECT SELECT
@ -195,7 +187,6 @@ LEFT JOIN
participant_events pe ON p.endpoint_id = pe.participant_id participant_events pe ON p.endpoint_id = pe.participant_id
WHERE WHERE
p.endpoint_id = '%s' p.endpoint_id = '%s'
AND (pe.time >= '%s' AND pe.time <= '%s')
UNION UNION
@ -214,7 +205,6 @@ LEFT JOIN
conference_events ce ON c.conference_id = ce.conference_id conference_events ce ON c.conference_id = ce.conference_id
WHERE WHERE
participant_id = '%s' participant_id = '%s'
AND (event_time >= '%s' AND event_time <= '%s')
ORDER BY ORDER BY
pe.time;" pe.time;"
@ -238,8 +228,7 @@ LEFT JOIN
LEFT JOIN LEFT JOIN
participant_events pe ON p.endpoint_id = pe.participant_id participant_events pe ON p.endpoint_id = pe.participant_id
WHERE WHERE
c.conference_id = '%s' pe.event_param = '%s'
AND (pe.time >= '%s' AND pe.time <= '%s')
UNION UNION
@ -257,51 +246,7 @@ FROM
LEFT JOIN LEFT JOIN
conference_events ce ON c.conference_id = ce.conference_id conference_events ce ON c.conference_id = ce.conference_id
WHERE WHERE
ce.conference_id = '%s' event_param = '%s'
AND (event_time >= '%s' AND event_time <= '%s')
ORDER BY
pe.time;"
db_participant_by_conference_name_template="
SELECT
pe.time,
c.conference_id,
c.conference_name,
c.conference_host,
pe.loglevel,
pe.event_type,
p.endpoint_id AS participant_id,
pe.event_param
FROM
conferences c
LEFT JOIN
conference_events ce ON c.conference_id = ce.conference_id
LEFT JOIN
participants p ON c.conference_id = p.conference_id
LEFT JOIN
participant_events pe ON p.endpoint_id = pe.participant_id
WHERE
c.conference_name LIKE '%%%s%%'
AND (pe.time >= '%s' AND pe.time <= '%s')
UNION
SELECT
ce.time AS event_time,
c.conference_id,
c.conference_name,
c.conference_host,
ce.loglevel,
ce.conference_event AS event_type,
NULL AS participant_id,
ce.conference_param AS event_param
FROM
conferences c
LEFT JOIN
conference_events ce ON c.conference_id = ce.conference_id
WHERE c.conference_name LIKE '%%%s%%'
AND (event_time >= '%s' AND event_time <= '%s')
ORDER BY ORDER BY
pe.time;" pe.time;"
@ -326,7 +271,6 @@ LEFT JOIN
participant_events pe ON p.endpoint_id = pe.participant_id participant_events pe ON p.endpoint_id = pe.participant_id
WHERE WHERE
pe.event_type = 'stats_id' AND pe.event_param LIKE '%%%s%%' pe.event_type = 'stats_id' AND pe.event_param LIKE '%%%s%%'
AND (pe.time >= '%s' AND pe.time <= '%s')
UNION UNION
@ -345,7 +289,6 @@ LEFT JOIN
conference_events ce ON c.conference_id = ce.conference_id conference_events ce ON c.conference_id = ce.conference_id
WHERE WHERE
event_type = 'stats_id' AND event_param LIKE '%%%s%%' event_type = 'stats_id' AND event_param LIKE '%%%s%%'
AND (event_time >= '%s' AND event_time <= '%s')
ORDER BY ORDER BY
pe.time;" pe.time;"
@ -370,7 +313,6 @@ LEFT JOIN
participant_events pe ON p.endpoint_id = pe.participant_id participant_events pe ON p.endpoint_id = pe.participant_id
WHERE WHERE
pe.event_type = 'pair selected' AND pe.event_param = '%s' pe.event_type = 'pair selected' AND pe.event_param = '%s'
AND (pe.time >= '%s' AND pe.time <= '%s')
UNION UNION
@ -389,7 +331,6 @@ LEFT JOIN
conference_events ce ON c.conference_id = ce.conference_id conference_events ce ON c.conference_id = ce.conference_id
WHERE WHERE
event_type = 'pair selected' AND event_param = '%s' event_type = 'pair selected' AND event_param = '%s'
AND (event_time >= '%s' AND event_time <= '%s')
ORDER BY ORDER BY
pe.time;" pe.time;"
@ -439,14 +380,13 @@ ORDER BY
pe.time;" pe.time;"
help="Usage: help="Usage:
$0 [OPTION] $0 [OPTION]
Options: Options:
--conference|-c [conference ID or name] - show specific conference(s), all of empty --conference|-c [conference ID or name] - show specific conference(s), all of empty
--participant|-p [participant endpoint ID, conference ID, conference name, participant IP, or participant stats ID] - show specific participant(s), all if empty --participant|-p [participant endpoint ID, conference ID, participant IP, or participant stats ID] - show specific participant(s), all if empty
--time|-t - show stats for a time interval; can be use separately ot together with -c or -p --time|-t - show stats for a time interval
--verbose|-v - show more details, when available
--silent|-s - show less details, more suitable for scripting
--help|-h - show this help message --help|-h - show this help message
--version|-V - show version" --version|-V - show version"
@ -455,16 +395,6 @@ version="JILO Jitsi Logs Observer command line client
version $VERSION version $VERSION
released on $RELEASE_DATE" released on $RELEASE_DATE"
time_formats="Expected formats:
- exact times
YYYY-MM-DD, YYYY-MM, YYYY
- exact periods
YYYY-MM-DD:YYYY-MM-DD, YYYY-MM:YYYY-MM, YYYY:YYYY
- from begining to given time
:YYYY-MM-DD, :YYYY-MM, :YYYY
- from given time until end
YYYY-MM-DD:, YYYY-MM:, YYYY:"
### ###
@ -567,7 +497,15 @@ parse_time_range() {
until_time="9999-12-31" until_time="9999-12-31"
else else
echo -e "Invalid time range. $time_formats" >&2 echo -e "Invalid time range. Expected formats:
- exact times
YYYY-MM-DD, YYYY-MM, YYYY
- exact periods
YYYY-MM-DD:YYYY-MM-DD, YYYY-MM:YYYY-MM, YYYY:YYYY
- from begining to given time
:YYYY-MM-DD, :YYYY-MM, :YYYY
- from given time until end
YYYY-MM-DD:, YYYY-MM:, YYYY:" >&2
exit 1 exit 1
fi fi
@ -576,26 +514,17 @@ parse_time_range() {
### commandline options ### commandline options
cmd=""
conference_arg="" conference_arg=""
conference_option=false
participant_arg="" participant_arg=""
participant_option=false from_time=""
from_time="0000-00-00" until_time=""
until_time="9999-12-31"
time_option=false
time_range_specified=false time_range_specified=false
# display help if no arguments
if [[ $# -eq 0 ]]; then
echo -e "$help"
exit 0
fi
# then check all the options
while [[ $# -gt 0 ]]; do while [[ $# -gt 0 ]]; do
case "$1" in case "$1" in
-c | --conference ) -c | --conference )
conference_option=true cmd="--conference"
if [[ -n "$2" && "$2" != -* ]]; then if [[ -n "$2" && "$2" != -* ]]; then
conference_arg="$2" conference_arg="$2"
shift 2 shift 2
@ -604,7 +533,7 @@ while [[ $# -gt 0 ]]; do
fi fi
;; ;;
-p | --participant) -p | --participant)
participant_option=true cmd="--participant"
if [[ -n "$2" && "$2" != -* ]]; then if [[ -n "$2" && "$2" != -* ]]; then
participant_arg="$2" participant_arg="$2"
shift 2 shift 2
@ -613,23 +542,15 @@ while [[ $# -gt 0 ]]; do
fi fi
;; ;;
-t | --time) -t | --time)
time_option=true cmd="--time"
if [[ -n "$2" && "$2" != -* ]]; then if [[ -n "$2" && "$2" != -* ]]; then
parse_time_range "$2" parse_time_range "$2"
shift 2 shift 2
else else
echo "Option -t needs a time range argument. $time_formats" >&2 echo "Option -t needs time range argument in format 'from-time - until-time', YYYY-MM-DD - YYYY-MM-DD" >&2
exit 1 exit 1
fi fi
;; ;;
-v | --verbose)
verbose=true
shift
;;
-s | --silent)
silent=true
shift
;;
-h | --help) -h | --help)
echo -e "$help" echo -e "$help"
exit 0 exit 0
@ -646,34 +567,27 @@ while [[ $# -gt 0 ]]; do
esac esac
done done
if [[ "$conference_option" == true ]]; then case "$cmd" in
--conference)
# the argument to "--conference" can be either ID or name # the argument to "--conference" can be either ID or name
if [[ -n "$conference_arg" ]]; then if [[ -n "$conference_arg" ]]; then
# check for conferences match within a time period (or all if not period given) db_conferences_id=$(printf "$db_conferences_id_template" "$conference_arg")
db_conferences_id=$(printf "$db_conference_by_id_template" "$conference_arg" "$from_time" "$until_time" "$conference_arg" "$from_time" "$until_time") conferences_id=$(db_query "$db_conferences_id")
mapfile -t conferences_id < <(db_query "$db_conferences_id")
db_conferences_name=$(printf "$db_conference_by_name_template" "$conference_arg" "$from_time" "$until_time" "$conference_arg" "$from_time" "$until_time") db_conferences_name=$(printf "$db_conferences_name_template" "$conference_arg")
mapfile -t conferences_name < <(db_query "$db_conferences_name") conferences_name=$(db_query "$db_conferences_name")
# we check if the argument to "--conference" is a conference ID # we check if the argument to "--conference" is a conference ID
# conference ID is unique, so we show that conference # conference ID is unique, so we show that conference
if [[ "${#conferences_id[@]}" -gt 0 ]]; then if [[ -n "$conferences_id" ]]; then
db_conference=$(printf "$db_conference_by_id_template" "$conference_arg" "$conference_arg")
output="" mapfile -t conference_array < <(db_query "$db_conference")
# prepare the header # prepare the header
if [[ "$silent" != true ]]; then
header="\nConferences with ID matching \"$IMPORTANT_TEXT$conference_arg$NORMAL_TEXT\""
if [[ "$time_range_specified" == true ]]; then
header+=" for the time period \"$from_time - $until_time\""
fi
header+="\n"
echo -e "$header"
output="time\tconference ID\tconference name\tconference host\tloglevel\tparticipant ID\tevent\tparameter\n" output="time\tconference ID\tconference name\tconference host\tloglevel\tparticipant ID\tevent\tparameter\n"
fi
# prepare the formatted rows # prepare the formatted rows
for row in "${conferences_id[@]}"; do for row in "${conference_array[@]}"; do
IFS='|' read -r time conference_id conference_name conference_host loglevel event_type participant_id event_param <<< "$row" IFS='|' read -r time conference_id conference_name conference_host loglevel event_type participant_id event_param <<< "$row"
output+="$time\t$IMPORTANT_TEXT$conference_id$NORMAL_TEXT\t$conference_name\t$conference_host\t$loglevel\t$participant_id\t$event_type\t$event_param\n" output+="$time\t$IMPORTANT_TEXT$conference_id$NORMAL_TEXT\t$conference_name\t$conference_host\t$loglevel\t$participant_id\t$event_type\t$event_param\n"
done done
@ -682,21 +596,14 @@ if [[ "$conference_option" == true ]]; then
# then we check if the argument to "--conference" is a conference name # then we check if the argument to "--conference" is a conference name
# if so, we show all matching conferences (conference names are not unique) # if so, we show all matching conferences (conference names are not unique)
elif [[ "${#conferences_name[@]}" -gt 0 ]]; then elif [[ -n "$conferences_name" ]]; then
db_conference=$(printf "$db_conference_by_name_template" "$conference_arg" "$conference_arg")
mapfile -t conference_array < <(db_query "$db_conference")
output=""
# prepare the header # prepare the header
if [[ "$silent" != true ]]; then
header="\nConferences with names matching \"$IMPORTANT_TEXT$conference_arg$NORMAL_TEXT\""
if [[ "$time_range_specified" == true ]]; then
header+=" for the time period \"$from_time - $until_time\""
fi
header+="\n"
echo -e "$header"
output="time\tconf ID\tconf name\tconf host\tloglevel\tparticipant ID\tevent\tparameter\n" output="time\tconf ID\tconf name\tconf host\tloglevel\tparticipant ID\tevent\tparameter\n"
fi
# prepare the formatted rows # prepare the formatted rows
for row in "${conferences_name[@]}"; do for row in "${conference_array[@]}"; do
IFS='|' read -r time conference_id conference_name conference_host loglevel event_type participant_id event_param <<< "$row" IFS='|' read -r time conference_id conference_name conference_host loglevel event_type participant_id event_param <<< "$row"
output+="$time\t$conference_id\t$IMPORTANT_TEXT$conference_name$NORMAL_TEXT\t$conference_host\t$loglevel\t$participant_id\t$event_type\t$event_param\n" output+="$time\t$conference_id\t$IMPORTANT_TEXT$conference_name$NORMAL_TEXT\t$conference_host\t$loglevel\t$participant_id\t$event_type\t$event_param\n"
done done
@ -705,21 +612,12 @@ if [[ "$conference_option" == true ]]; then
# nothing found for neither conference ID or name # nothing found for neither conference ID or name
else else
if [[ "$silent" != true ]]; then
echo "No match found for \"$conference_arg\"" echo "No match found for \"$conference_arg\""
if [[ "$time_range_specified" == true ]]; then
echo "and time period $from_time - $until_time"
fi
fi
fi fi
exit 0 exit 0
else else
# if no argument is given, we show all the conferences # if no argument is given, we show all the conferences
db_conferences_all=$(printf "$db_conferences_all_formatted_template" "$from_time" "$until_time") mapfile -t conference_array < <(db_query "$db_conferences_all_formatted_template")
mapfile -t conference_array < <(db_query "$db_conferences_all")
# we only format the outrput if there are conferences to show
if [[ "${#conference_array[@]}" -gt 0 ]]; then
# prepare the header # prepare the header
output="component\tconference ID\tconference name\tname count\tconference host\n" output="component\tconference ID\tconference name\tname count\tconference host\n"
# prepare the formatted rows # prepare the formatted rows
@ -729,57 +627,33 @@ if [[ "$conference_option" == true ]]; then
done done
# output # output
echo -e "$output" | column -t -s $'\t' echo -e "$output" | column -t -s $'\t'
else
if [[ "$silent" != true ]]; then
echo -n "No conferences found"
if [[ "$time_range_specified" == true ]]; then
echo -n " for the time period \"$from_time - $until_time\""
fi
echo "."
fi
fi
exit 0 exit 0
fi fi
;;
elif [[ "$participant_option" == true ]]; then --participant)
# the argument to "--participant" can be endpointID, conferenceID, startsID, IP address
# the argument to "--participant" can be endpointID, conferenceID, conference name, startsID, IP address
# check for participants match within a time period (or all if period not given)
# we check for all ot them and show the matches # we check for all ot them and show the matches
## FIXME - we don't catch the case with no results found at all, no message is displayed if no results ## FIXME
if [[ -n "$participant_arg" ]]; then if [[ -n "$participant_arg" ]]; then
db_participants_endpoint=$(printf "$db_participants_endpoint_template" "$participant_arg")
participants_endpoint=$(db_query "$db_participants_endpoint")
db_participants_endpoint=$(printf "$db_conference_by_participant_id_template" "$participant_arg" "$from_time" "$until_time" "$participant_arg" "$from_time" "$until_time") db_participants_conference=$(printf "$db_participants_conference_template" "$participant_arg")
mapfile -t participants_endpoint < <(db_query "$db_participants_endpoint") participants_conference=$(db_query "$db_participants_conference")
db_participants_conference=$(printf "$db_participant_by_conference_id_template" "$participant_arg" "$from_time" "$until_time" "$participant_arg" "$from_time" "$until_time") db_participants_statsid=$(printf "$db_participants_statsid_template" "$participant_arg")
mapfile -t participants_conference < <(db_query "$db_participants_conference") participants_statsid=$(db_query "$db_participants_statsid")
db_participants_conference_name=$(printf "$db_participant_by_conference_name_template" "$participant_arg" "$from_time" "$until_time" "$participant_arg" "$from_time" "$until_time") db_participants_ip=$(printf "$db_participants_ip_template" "$participant_arg")
mapfile -t participants_conference_name < <(db_query "$db_participants_conference_name") participants_ip=$(db_query "$db_participants_ip")
db_participants_statsid=$(printf "$db_participant_by_stats_id_template" "$participant_arg" "$from_time" "$until_time" "$participant_arg" "$from_time" "$until_time") if [[ -n $participants_endpoint ]]; then
mapfile -t participants_statsid < <(db_query "$db_participants_statsid") db_participant=$(printf "$db_conference_by_participant_id_template" "$participant_arg" "$participant_arg")
mapfile -t conference_array < <(db_query "$db_participant")
db_participants_ip=$(printf "$db_participant_by_ip_template" "$participant_arg" "$from_time" "$until_time" "$participant_arg" "$from_time" "$until_time")
mapfile -t participants_ip < <(db_query "$db_participants_ip")
# match for participant endpoint_id
if [[ "${#participants_endpoint[@]}" -gt 0 ]]; then
output=""
# prepare the header # prepare the header
if [[ "$silent" != true ]]; then
header="\nParticipants with ID matching \"$IMPORTANT_TEXT$participant_arg$NORMAL_TEXT\""
if [[ "$time_range_specified" == true ]]; then
header+=" for the time period \"$from_time - $until_time\""
fi
header+="\n"
echo -e "$header"
output="time\tconference ID\tconference name\tconference host\tloglevel\tparticipant ID\tevent\tparameter\n" output="time\tconference ID\tconference name\tconference host\tloglevel\tparticipant ID\tevent\tparameter\n"
fi
# prepare the formatted rows # prepare the formatted rows
for row in "${participants_endpoint[@]}"; do for row in "${conference_array[@]}"; do
IFS='|' read -r time conference_id conference_name conference_host loglevel event_type participant_id event_param <<< "$row" IFS='|' read -r time conference_id conference_name conference_host loglevel event_type participant_id event_param <<< "$row"
output+="$time\t$conference_id\t$conference_name\t$conference_host\t$loglevel\t$IMPORTANT_TEXT$participant_id$NORMAL_TEXT\t$event_type\t$event_param\n" output+="$time\t$conference_id\t$conference_name\t$conference_host\t$loglevel\t$IMPORTANT_TEXT$participant_id$NORMAL_TEXT\t$event_type\t$event_param\n"
done done
@ -787,22 +661,13 @@ elif [[ "$participant_option" == true ]]; then
echo -e "$output" | column -t -s $'\t' echo -e "$output" | column -t -s $'\t'
fi fi
# match for conference_id the participant was in if [[ -n $participants_conference ]]; then
if [[ "${#participants_conference[@]}" -gt 0 ]]; then db_participant=$(printf "$db_participant_by_conference_id_template" "$participant_arg" "$participant_arg")
mapfile -t conference_array < <(db_query "$db_participant")
output=""
# prepare the header # prepare the header
if [[ "$silent" != true ]]; then output="time\tconference ID\tconference name\tconference host\tloglevel\tparticipant ID\tevent\tparameter\n"
header="\nParticipants in conferences with ID matching \"$IMPORTANT_TEXT$participant_arg$NORMAL_TEXT\""
if [[ "$time_range_specified" == true ]]; then
header+=" for the time period \"$from_time - $until_time\""
fi
header+="\n"
echo -e "$header"
output+="time\tconference ID\tconference name\tconference host\tloglevel\tparticipant ID\tevent\tparameter\n"
fi
# prepare the formatted rows # prepare the formatted rows
for row in "${participants_conference[@]}"; do for row in "${conference_array[@]}"; do
IFS='|' read -r time conference_id conference_name conference_host loglevel event_type participant_id event_param <<< "$row" IFS='|' read -r time conference_id conference_name conference_host loglevel event_type participant_id event_param <<< "$row"
output+="$time\t$IMPORTANT_TEXT$conference_id$NORMAL_TEXT\t$conference_name\t$conference_host\t$loglevel\t$participant_id\t$event_type\t$event_param\n" output+="$time\t$IMPORTANT_TEXT$conference_id$NORMAL_TEXT\t$conference_name\t$conference_host\t$loglevel\t$participant_id\t$event_type\t$event_param\n"
done done
@ -810,45 +675,13 @@ elif [[ "$participant_option" == true ]]; then
echo -e "$output" | column -t -s $'\t' echo -e "$output" | column -t -s $'\t'
fi fi
# match for conference_name the participant was in if [[ -n $participants_statsid ]]; then
if [[ "${#participants_conference_name[@]}" -gt 0 ]]; then db_participant=$(printf "$db_participant_by_stats_id_template" "$participant_arg" "$participant_arg")
mapfile -t conference_array < <(db_query "$db_participant")
output=""
# prepare the header # prepare the header
if [[ "$silent" != true ]]; then output="time\tconference ID\tconference name\tconference host\tloglevel\tparticipant ID\tevent\tparameter\n"
header="\nParticipants in conferences with name that include the string \"$IMPORTANT_TEXT$participant_arg$NORMAL_TEXT\""
if [[ "$time_range_specified" == true ]]; then
header+=" for the time period \"$from_time - $until_time\""
fi
header+="\n"
echo -e "$header"
output+="time\tconference ID\tconference name\tconference host\tloglevel\tparticipant ID\tevent\tparameter\n"
fi
# prepare the formatted rows # prepare the formatted rows
for row in "${participants_conference_name[@]}"; do for row in "${conference_array[@]}"; do
IFS='|' read -r time conference_id conference_name conference_host loglevel event_type participant_id event_param <<< "$row"
output+="$time\t$conference_id\t$IMPORTANT_TEXT$conference_name$NORMAL_TEXT\t$conference_host\t$loglevel\t$participant_id\t$event_type\t$event_param\n"
done
# output
echo -e "$output" | column -t -s $'\t'
fi
# match for participant stats_id
if [[ "${#participants_statsid[@]}" -gt 0 ]]; then
output=""
# prepare the header
if [[ "$silent" != true ]]; then
header="\nParticipants with stats ID that include the string \"$IMPORTANT_TEXT$participant_arg$NORMAL_TEXT\""
if [[ "$time_range_specified" == true ]]; then
header+=" for the time period \"$from_time - $until_time\""
fi
header+="\n"
echo -e "$header"
output+="time\tconference ID\tconference name\tconference host\tloglevel\tparticipant ID\tevent\tparameter\n"
fi
# prepare the formatted rows
for row in "${participants_statsid[@]}"; do
IFS='|' read -r time conference_id conference_name conference_host loglevel event_type participant_id event_param <<< "$row" IFS='|' read -r time conference_id conference_name conference_host loglevel event_type participant_id event_param <<< "$row"
output+="$time\t$conference_id\t$conference_name\t$conference_host\t$loglevel\t$participant_id\t$event_type\t$IMPORTANT_TEXT$event_param$NORMAL_TEXT\n" output+="$time\t$conference_id\t$conference_name\t$conference_host\t$loglevel\t$participant_id\t$event_type\t$IMPORTANT_TEXT$event_param$NORMAL_TEXT\n"
done done
@ -856,22 +689,13 @@ elif [[ "$participant_option" == true ]]; then
echo -e "$output" | column -t -s $'\t' echo -e "$output" | column -t -s $'\t'
fi fi
# match for participant IP if [[ -n $participants_ip ]]; then
if [[ "${#participants_ip[@]}" -gt 0 ]]; then db_participant=$(printf "$db_participant_by_ip_template" "$participant_arg" "$participant_arg")
mapfile -t conference_array < <(db_query "$db_participant")
output=""
# prepare the header # prepare the header
if [[ "$silent" != true ]]; then output="time\tconference ID\tconference name\tconference host\tloglevel\tparticipant ID\tevent\tparameter\n"
header="\nParticipants with IP address matching \"$IMPORTANT_TEXT$participant_arg$NORMAL_TEXT\""
if [[ "$time_range_specified" == true ]]; then
header+=" for the time period \"$from_time - $until_time\""
fi
header+="\n"
echo -e "$header"
output+="time\tconference ID\tconference name\tconference host\tloglevel\tparticipant ID\tevent\tparameter\n"
fi
# prepare the formatted rows # prepare the formatted rows
for row in "${participants_ip[@]}"; do for row in "${conference_array[@]}"; do
IFS='|' read -r time conference_id conference_name conference_host loglevel event_type participant_id event_param <<< "$row" IFS='|' read -r time conference_id conference_name conference_host loglevel event_type participant_id event_param <<< "$row"
output+="$time\t$conference_id\t$conference_name\t$conference_host\t$loglevel\t$participant_id\t$event_type\t$IMPORTANT_TEXT$event_param$NORMAL_TEXT\n" output+="$time\t$conference_id\t$conference_name\t$conference_host\t$loglevel\t$participant_id\t$event_type\t$IMPORTANT_TEXT$event_param$NORMAL_TEXT\n"
done done
@ -881,24 +705,10 @@ elif [[ "$participant_option" == true ]]; then
exit 0 exit 0
else else
db_participants_all=$(printf "$db_participants_all_template" )
# if no argument is given, we show all the participants
db_participants_all=$(printf "$db_participants_all_template" "$from_time" "$until_time")
mapfile -t participant_array < <(db_query "$db_participants_all") mapfile -t participant_array < <(db_query "$db_participants_all")
# we only format the outrput if there are conferences to show
if [[ "${#participant_array[@]}" -gt 0 ]]; then
output=""
# prepare the header # prepare the header
if [[ "$silent" != true ]]; then output="component\tparticipant ID\tconference ID\n"
header="\nAll participants"
if [[ "$time_range_specified" == true ]]; then
header+=" for the time period \"$IMPORTANT_TEXT$from_time - $until_time$NORMAL_TEXT\""
fi
header+="\n"
echo -e "$header"
output+="component\tparticipant ID\tconference ID\n"
fi
# prepare the formatted rows # prepare the formatted rows
for row in "${participant_array[@]}"; do for row in "${participant_array[@]}"; do
IFS='|' read -r jitsi_component endpoint_id conference_id <<< "$row" IFS='|' read -r jitsi_component endpoint_id conference_id <<< "$row"
@ -906,49 +716,30 @@ elif [[ "$participant_option" == true ]]; then
done done
# output # output
echo -e "$output" | column -t -s $'\t' echo -e "$output" | column -t -s $'\t'
else
if [[ "$silent" != true ]]; then
echo -n "No participants found"
if [[ "$time_range_specified" == true ]]; then
echo -n " for the time period \"$from_time - $until_time\""
fi
echo "."
fi
fi
exit 0 exit 0
fi fi
;;
elif [[ "$time_option" == true ]]; then --time)
if [[ "$time_range_specified" == true ]]; then if [[ "$time_range_specified" == true ]]; then
echo "Events in the period $from_time - $until_time"
db_events_time=$(printf "$db_events_by_period_template" "$from_time" "$until_time" "$from_time" "$until_time") db_events_time=$(printf "$db_events_by_period_template" "$from_time" "$until_time" "$from_time" "$until_time")
mapfile -t events_array < <(db_query "$db_events_time") mapfile -t events_array < <(db_query "$db_events_time")
if [[ "${#events_array[@]}" -gt 0 ]]; then
output=""
# prepare the header # prepare the header
if [[ "$silent" != true ]]; then
header="\nEvents in the period \"$IMPORTANT_TEXT$from_time - $until_time$NORMAL_TEXT\"\n"
output="time\tconference ID\tconference name\tconference host\tloglevel\tparticipant ID\tevent\tparameter\n" output="time\tconference ID\tconference name\tconference host\tloglevel\tparticipant ID\tevent\tparameter\n"
echo -e "$header"
fi
# prepare the formatted rows # prepare the formatted rows
for row in "${events_array[@]}"; do for row in "${events_array[@]}"; do
IFS='|' read -r time conference_id conference_name conference_host loglevel event_type participant_id event_param <<< "$row" IFS='|' read -r time conference_id conference_name conference_host loglevel event_type participant_id event_param <<< "$row"
output+="$IMPORTANT_TEXT$time$NORMAL_TEXT\t$conference_id\t$conference_name\t$conference_host\t$loglevel\t$event_type\t$participant_id\t$event_param\n" output+="$time\t$conference_id\t$conference_name\t$conference_host\t$loglevel\t$event_type\t$participant_id\t$event_param\n"
done done
# output # output
echo -e "$output" | column -t -s $'\t' echo -e "$output" | column -t -s $'\t'
else
if [[ "$silent" != true ]]; then
echo -n "No events found"
if [[ "$time_range_specified" == true ]]; then
echo -n " for the time period \"$from_time - $until_time\""
fi
echo "."
fi
fi
exit 0 exit 0
fi fi
;;
fi *)
echo -e "$help"
exit 1
;;
esac