Slacktee added
This commit is contained in:
parent
1a2ac9d016
commit
d9fc50c65a
13
files/slacktee.conf
Normal file
13
files/slacktee.conf
Normal file
@ -0,0 +1,13 @@
|
||||
# ----------
|
||||
# Configuration
|
||||
# Describes the Incoming Webhook allowing you to post messages into Slack.
|
||||
# After the configuration, copy this file to /etc or your home directory.
|
||||
# NOTE : Please rename this file to '.slacktee', if you'd like to place this in your home directory.
|
||||
# ----------
|
||||
webhook_url="https://hooks.slack.com/services/{{ slack_token }}" # Incoming Webhooks integration URL. See https://my.slack.com/services/new/incoming-webhook
|
||||
upload_token="" # The user's API authentication token, only used for file uploads. See https://api.slack.com/#auth
|
||||
channel="technik" # Default channel to post messages. '#' is prepended, if it doesn't start with '#' or '@'.
|
||||
tmp_dir="/tmp" # Temporary file is created in this directory.
|
||||
username="slacktee" # Default username to post messages.
|
||||
icon="ghost" # Default emoji or a direct url to an image to post messages. You don't have to wrap emoji with ':'. See http://www.emoji-cheat-sheet.com.
|
||||
attachment="" # Default color of the attachments. If an empty string is specified, the attachments are not used.
|
13
files/slacktee.conf.j2
Normal file
13
files/slacktee.conf.j2
Normal file
@ -0,0 +1,13 @@
|
||||
# ----------
|
||||
# Configuration
|
||||
# Describes the Incoming Webhook allowing you to post messages into Slack.
|
||||
# After the configuration, copy this file to /etc or your home directory.
|
||||
# NOTE : Please rename this file to '.slacktee', if you'd like to place this in your home directory.
|
||||
# ----------
|
||||
webhook_url="https://hooks.slack.com/services/{{ slack_token }}" # Incoming Webhooks integration URL. See https://my.slack.com/services/new/incoming-webhook
|
||||
upload_token="" # The user's API authentication token, only used for file uploads. See https://api.slack.com/#auth
|
||||
channel="technik" # Default channel to post messages. '#' is prepended, if it doesn't start with '#' or '@'.
|
||||
tmp_dir="/tmp" # Temporary file is created in this directory.
|
||||
username="slacktee" # Default username to post messages.
|
||||
icon="ghost" # Default emoji or a direct url to an image to post messages. You don't have to wrap emoji with ':'. See http://www.emoji-cheat-sheet.com.
|
||||
attachment="" # Default color of the attachments. If an empty string is specified, the attachments are not used.
|
605
files/slacktee.sh
Normal file
605
files/slacktee.sh
Normal file
@ -0,0 +1,605 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# ----------
|
||||
# Default Configuration
|
||||
# ----------
|
||||
webhook_url="" # Incoming Webhooks integration URL
|
||||
upload_token="" # The user's API authentication token, only used for file uploads
|
||||
channel="general" # Default channel to post messages. '#' is prepended, if it doesn't start with '#' or '@'.
|
||||
tmp_dir="/tmp" # Temporary file is created in this directory.
|
||||
username="slacktee" # Default username to post messages.
|
||||
icon="ghost" # Default emoji to post messages. Don't wrap it with ':'. See http://www.emoji-cheat-sheet.com; can be a url too.
|
||||
attachment="" # Default color of the attachments. If an empty string is specified, the attachments are not used.
|
||||
|
||||
# ----------
|
||||
# Initialization
|
||||
# ----------
|
||||
me=$(basename "$0")
|
||||
title=""
|
||||
mode="buffering"
|
||||
link=""
|
||||
textWrapper="\`\`\`"
|
||||
parseMode=""
|
||||
fields=()
|
||||
# Since bash 3 doesn't support the associative array, we store colors and patterns separately
|
||||
cond_color_colors=()
|
||||
cond_color_patterns=()
|
||||
found_pattern_color=""
|
||||
# This color is used when 'attachment' is used without color specification
|
||||
internal_default_color="#C0C0C0"
|
||||
|
||||
# Since bash 3 doesn't support the associative array, we store prefixes and patterns separately
|
||||
cond_prefix_prefixes=()
|
||||
cond_prefix_patterns=()
|
||||
found_title_prefix=""
|
||||
|
||||
function show_help()
|
||||
{
|
||||
echo "usage: $me [options]"
|
||||
echo " options:"
|
||||
echo " -h, --help Show this help."
|
||||
echo " -n, --no-buffering Post input values without buffering."
|
||||
echo " -f, --file Post input values as a file."
|
||||
echo " -l, --link Add a URL link to the message."
|
||||
echo " -c, --channel channel_name Post input values to specified channel or user."
|
||||
echo " -u, --username user_name This username is used for posting."
|
||||
echo " -i, --icon emoji_name|url This icon is used for posting. You can use a word"
|
||||
echo " from http://www.emoji-cheat-sheet.com or a direct url to an image."
|
||||
echo " -t, --title title_string This title is added to posts."
|
||||
echo " -m, --message-formatting format Switch message formatting (none|link_names|full)."
|
||||
echo " See https://api.slack.com/docs/formatting for more details."
|
||||
echo " -p, --plain-text Don't surround the post with triple backticks."
|
||||
echo " -a, --attachment [color] Use attachment (richly-formatted message)"
|
||||
echo " Color can be 'good','warning','danger' or any hex color code (eg. #439FE0)"
|
||||
echo " See https://api.slack.com/docs/attachments for more details."
|
||||
echo " -e, --field title value Add a field to the attachment. You can specify this multiple times."
|
||||
echo " -s, --short-field title value Add a short field to the attachment. You can specify this multiple times."
|
||||
echo " -o, --cond-color color pattern Change the attachment color if the specified Regex pattern matches the input."
|
||||
echo " You can specify this multile times."
|
||||
echo " If more than one pattern matches, the latest matched pattern is used."
|
||||
echo " -d, --cond-prefix prefix pattern This prefix is added to the message, if the specified Regex pattern matches the input."
|
||||
echo " You can specify this multile times."
|
||||
echo " If more than one pattern matches, the latest matched pattern is used."
|
||||
echo " --config config_file Specify the location of the config file."
|
||||
echo " --setup Setup slacktee interactively."
|
||||
}
|
||||
|
||||
|
||||
|
||||
function send_message()
|
||||
{
|
||||
message="$1"
|
||||
|
||||
# Prepend the prefix to the message, if it's set
|
||||
if [[ -z $attachment && -n $found_pattern_prefix ]]; then
|
||||
message="$found_pattern_prefix$message"
|
||||
# Clear conditional prefix for the nest send
|
||||
found_pattern_prefix=""
|
||||
fi
|
||||
|
||||
escaped_message=$(echo "$textWrapper\n$message\n$textWrapper" | sed 's/"/\\"/g' | sed "s/'/\\'/g" )
|
||||
message_attr=""
|
||||
if [[ $message != "" ]]; then
|
||||
if [[ -n $attachment ]]; then
|
||||
|
||||
# Set message color
|
||||
message_color="$attachment"
|
||||
if [[ -n $found_pattern_color ]]; then
|
||||
message_color="$found_pattern_color"
|
||||
# Reset with the default color for the next send
|
||||
found_pattern_color="$attachment"
|
||||
fi
|
||||
|
||||
message_attr="\"attachments\": [{ \"color\": \"$message_color\", \"mrkdwn_in\": [\"text\", \"fields\"], \"text\": \"$escaped_message\" "
|
||||
|
||||
if [[ -n $found_pattern_prefix ]]; then
|
||||
title="$found_pattern_prefix $title"
|
||||
# Clear conditional prefix for the nest send
|
||||
found_pattern_prefix=""
|
||||
fi
|
||||
|
||||
if [[ -n $title ]]; then
|
||||
message_attr="$message_attr, \"title\": \"$title\" "
|
||||
fi
|
||||
|
||||
if [[ -n $link ]]; then
|
||||
message_attr="$message_attr, \"title_link\": \"$link\" "
|
||||
fi
|
||||
|
||||
if [[ $mode == "file" ]]; then
|
||||
fields+=("{\"title\": \"Access URL\", \"value\": \"$access_url\" }")
|
||||
fields+=("{\"title\": \"Download URL\", \"value\": \"$download_url\"}")
|
||||
fi
|
||||
|
||||
if [[ ${#fields[@]} != 0 ]]; then
|
||||
message_attr="$message_attr, \"fields\": ["
|
||||
for field in "${fields[@]}"; do
|
||||
message_attr="$message_attr $field,"
|
||||
done
|
||||
message_attr=${message_attr%?} # Remove last comma
|
||||
message_attr="$message_attr ]"
|
||||
fi
|
||||
|
||||
# Close attachment
|
||||
message_attr="$message_attr }], "
|
||||
else
|
||||
message_attr="\"text\": \"$escaped_message\","
|
||||
fi
|
||||
|
||||
icon_url=""
|
||||
icon_emoji=""
|
||||
if echo "$icon" | grep -q "^https\?://.*"; then
|
||||
icon_url="$icon"
|
||||
else
|
||||
icon_emoji=":$icon:"
|
||||
fi
|
||||
|
||||
json="{\"channel\": \"$channel\", \"username\": \"$username\", $message_attr \"icon_emoji\": \"$icon_emoji\", \"icon_url\": \"$icon_url\" $parseMode}"
|
||||
post_result=$(curl -X POST --data-urlencode "payload=$json" "$webhook_url" 2> /dev/null)
|
||||
exit_code=1
|
||||
if [[ $post_result == "ok" ]]; then
|
||||
exit_code=0
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
function process_line()
|
||||
{
|
||||
echo "$1"
|
||||
line="$(echo "$1" | sed $'s/\t/ /g')"
|
||||
|
||||
# Check the patterns of the conditional colors
|
||||
# If more than one pattern matches, the latest pattern is used
|
||||
if [[ ${#cond_color_patterns[@]} != 0 ]]; then
|
||||
for i in "${!cond_color_patterns[@]}"; do
|
||||
if [[ $line =~ ${cond_color_patterns[$i]} ]]; then
|
||||
found_pattern_color=${cond_color_colors[$i]}
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# Check the patterns of the conditional titles
|
||||
# If more than one pattern matches, the latest pattern is used
|
||||
if [[ ${#cond_prefix_patterns[@]} != 0 ]]; then
|
||||
for i in "${!cond_prefix_patterns[@]}"; do
|
||||
if [[ $line =~ ${cond_prefix_patterns[$i]} ]]; then
|
||||
found_pattern_prefix=${cond_prefix_prefixes[$i]}
|
||||
if [[ -n $attachment || $mode != "no-buffering" ]]; then
|
||||
# Append a line break to the prefix for better formatting
|
||||
found_pattern_prefix="$found_pattern_prefix\n"
|
||||
else
|
||||
# Append a space to the prefix for better formatting
|
||||
found_pattern_prefix="$found_pattern_prefix "
|
||||
fi
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
if [[ $mode == "no-buffering" ]]; then
|
||||
prefix=''
|
||||
if [[ -z $attachment ]]; then
|
||||
prefix=$title
|
||||
fi
|
||||
send_message "$prefix$line"
|
||||
elif [[ $mode == "file" ]]; then
|
||||
echo "$line" >> "$filename"
|
||||
else
|
||||
if [[ -z "$text" ]]; then
|
||||
text="$line"
|
||||
else
|
||||
text="$text\n$line"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
function setup()
|
||||
{
|
||||
if [[ -z "$HOME" ]]; then
|
||||
echo "\$HOME is not defined. Please set it first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
local_conf="$HOME/.slacktee"
|
||||
|
||||
if [[ -e "$local_conf" ]]; then
|
||||
echo ".slacktee is found in your home directory."
|
||||
read -p "Are you sure to overwrite it? [y/n] :" choice
|
||||
case "$choice" in
|
||||
y|Y )
|
||||
# Continue
|
||||
;;
|
||||
* )
|
||||
exit 0 # Abort
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Load current local config
|
||||
. $local_conf
|
||||
|
||||
# Start setup
|
||||
read -p "Incoming Webhook URL [$webhook_url]: " input_webhook_url
|
||||
if [[ -z "$input_webhook_url" ]]; then
|
||||
input_webhook_url=$webhook_url
|
||||
fi
|
||||
read -p "Upload Token [$upload_token]: " input_upload_token
|
||||
if [[ -z "$input_upload_token" ]]; then
|
||||
input_upload_token=$upload_token
|
||||
fi
|
||||
read -p "Temporary Directory [$tmp_dir]: " input_tmp_dir
|
||||
if [[ -z "$input_tmp_dir" ]]; then
|
||||
input_tmp_dir=$tmp_dir
|
||||
fi
|
||||
read -p "Default Channel [$channel]: " input_channel
|
||||
if [[ -z "$input_channel" ]]; then
|
||||
input_channel=$channel
|
||||
fi
|
||||
read -p "Default Username [$username]: " input_username
|
||||
if [[ -z "$input_username" ]]; then
|
||||
input_username=$username
|
||||
fi
|
||||
read -p "Default Icon: [$icon]: " input_icon
|
||||
if [[ -z "$input_icon" ]]; then
|
||||
input_icon=$icon
|
||||
fi
|
||||
read -p "Default color of the attachment. (empty string disables attachment) [$attachment]: " input_attachment
|
||||
if [[ -z "$input_attachment" ]]; then
|
||||
input_attachment=$attachment
|
||||
elif [[ $input_attachment == '""' || $input_attachment == "''" ]]; then
|
||||
input_attachment=""
|
||||
fi
|
||||
|
||||
cat <<- EOF | sed 's/^[[:space:]]*//' > "$local_conf"
|
||||
webhook_url="$input_webhook_url"
|
||||
upload_token="$input_upload_token"
|
||||
tmp_dir="$input_tmp_dir"
|
||||
channel="$input_channel"
|
||||
username="$input_username"
|
||||
icon="$input_icon"
|
||||
attachment="$input_attachment"
|
||||
EOF
|
||||
}
|
||||
|
||||
# ----------
|
||||
# Parse command line options
|
||||
# ----------
|
||||
OPTIND=1
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
opt="$1"
|
||||
shift
|
||||
|
||||
case "$opt" in
|
||||
-h|\?|--help)
|
||||
show_help
|
||||
exit 0
|
||||
;;
|
||||
-n|--no-buffering)
|
||||
mode="no-buffering"
|
||||
;;
|
||||
-f|--file)
|
||||
mode="file"
|
||||
;;
|
||||
-l|--link)
|
||||
link="$1"
|
||||
shift
|
||||
;;
|
||||
-c|--channel)
|
||||
opt_channel="$1"
|
||||
shift
|
||||
;;
|
||||
-u|--username)
|
||||
opt_username="$1"
|
||||
shift
|
||||
;;
|
||||
-i|--icon)
|
||||
opt_icon="$1"
|
||||
shift
|
||||
;;
|
||||
-t|--title)
|
||||
title="$1"
|
||||
shift
|
||||
;;
|
||||
-d|--cond-prefix)
|
||||
case "$1" in
|
||||
-*|'')
|
||||
# Found next command line option or empty. Error.
|
||||
echo "a prefix of the conditional title was not specified"
|
||||
show_help
|
||||
exit 1
|
||||
;;
|
||||
*)
|
||||
# Prefix should be found
|
||||
case "$2" in
|
||||
-*|'')
|
||||
# Found next command line option or empty. Error.
|
||||
echo "a pattern of the conditional title was not specified"
|
||||
show_help
|
||||
exit 1
|
||||
;;
|
||||
*)
|
||||
# Set the prefix and the pattern to arrays
|
||||
cond_prefix_prefixes+=("$1")
|
||||
cond_prefix_patterns+=("$2")
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
-m|--message-formatting)
|
||||
case "$1" in
|
||||
none)
|
||||
parseMode=', "parse": "none"'
|
||||
;;
|
||||
link_names)
|
||||
parseMode=', "link_names": "1"'
|
||||
;;
|
||||
full)
|
||||
parseMode=', "parse": "full"'
|
||||
;;
|
||||
*)
|
||||
echo "unknown message formatting option"
|
||||
show_help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
;;
|
||||
-p|--plain-text)
|
||||
textWrapper=""
|
||||
;;
|
||||
|
||||
-a|--attachment)
|
||||
case "$1" in
|
||||
-*|'')
|
||||
# Found next command line option
|
||||
opt_attachment="$internal_default_color" # Use default color
|
||||
;;
|
||||
\#*|good|warning|danger)
|
||||
# Found hex color code or predefined colors
|
||||
opt_attachment="$1"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
echo "unknown attachment color"
|
||||
show_help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
-o|--cond-color)
|
||||
case "$1" in
|
||||
-*|'')
|
||||
# Found next command line option or empty. Error.
|
||||
echo "a color of the conditional color was not specified"
|
||||
show_help
|
||||
exit 1
|
||||
;;
|
||||
\#*|good|warning|danger)
|
||||
# Found hex color code or predefined colors
|
||||
case "$2" in
|
||||
-*|'')
|
||||
# Found next command line option or empty. Error.
|
||||
echo "a pattern of the conditional color was not specified"
|
||||
show_help
|
||||
exit 1
|
||||
;;
|
||||
*)
|
||||
# Set the color and the pattern to arrays
|
||||
cond_color_colors+=("$1")
|
||||
cond_color_patterns+=("$2")
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*)
|
||||
echo "unknown attachment color $1"
|
||||
show_help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
-e|-s|--field|--short-field)
|
||||
case "$1" in
|
||||
-*|'')
|
||||
# Found next command line option or empty. Error.
|
||||
echo "field title was not specified"
|
||||
show_help
|
||||
exit 1
|
||||
;;
|
||||
*)
|
||||
case "$2" in
|
||||
-*|'')
|
||||
# Found next command line option or empty. Error.
|
||||
echo "field value was not specified"
|
||||
show_help
|
||||
exit 1
|
||||
;;
|
||||
*)
|
||||
if [[ $opt == "-s" || $opt == "--short-field" ]]; then
|
||||
fields+=("{\"title\": \"$1\", \"value\": \"$2\", \"short\": true}")
|
||||
else
|
||||
fields+=("{\"title\": \"$1\", \"value\": \"$2\"}")
|
||||
fi
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
esac
|
||||
;;
|
||||
--config)
|
||||
CUSTOM_CONFIG=$1
|
||||
shift
|
||||
;;
|
||||
--setup)
|
||||
setup
|
||||
exit 1
|
||||
;;
|
||||
*)
|
||||
echo "illegal option $opt"
|
||||
show_help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# ---------
|
||||
# Read in our configurations
|
||||
# ---------
|
||||
if [[ -e "/etc/slacktee.conf" ]]; then
|
||||
. /etc/slacktee.conf
|
||||
fi
|
||||
|
||||
if [[ -n "$HOME" && -e "$HOME/.slacktee" ]]; then
|
||||
. "$HOME/.slacktee"
|
||||
fi
|
||||
|
||||
if [[ -e "$CUSTOM_CONFIG" ]]; then
|
||||
. $CUSTOM_CONFIG
|
||||
fi
|
||||
|
||||
# Overwrite webhook_url if the environment variable SLACKTEE_WEBHOOK is set
|
||||
if [[ "$SLACKTEE_WEBHOOK" != "" ]]; then
|
||||
webhook_url="$SLACKTEE_WEBHOOK"
|
||||
fi
|
||||
|
||||
# Overwrite upload_token if the environment variable SLACKTEE_TOKEN is set
|
||||
if [[ "$SLACKTEE_TOKEN" != "" ]]; then
|
||||
upload_token="$SLACKTEE_TOKEN"
|
||||
fi
|
||||
|
||||
# Overwrite channel if it's specified in the command line option
|
||||
if [[ "$opt_channel" != "" ]]; then
|
||||
channel="$opt_channel"
|
||||
fi
|
||||
|
||||
# Overwrite username if it's specified in the command line option
|
||||
if [[ "$opt_username" != "" ]]; then
|
||||
username="$opt_username"
|
||||
fi
|
||||
|
||||
# Overwrite icon if it's specified in the command line option
|
||||
if [[ "$opt_icon" != "" ]]; then
|
||||
icon="$opt_icon"
|
||||
fi
|
||||
|
||||
# Overwrite attachment if it's specified in the command line option
|
||||
if [[ "$opt_attachment" != "" ]]; then
|
||||
attachment="$opt_attachment"
|
||||
fi
|
||||
|
||||
# Set the default color to attachment if it's still empty and the length of the cond_color_patterns is not 0
|
||||
if [[ -z $attachment ]] && [[ ${#cond_color_patterns[@]} != 0 ]]; then
|
||||
attachment="$internal_default_color"
|
||||
fi
|
||||
|
||||
# ----------
|
||||
# Validate configurations
|
||||
# ----------
|
||||
|
||||
if [[ $webhook_url == "" ]]; then
|
||||
echo "Please setup the webhook url of this incoming webhook integration."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ $upload_token == "" && $mode == "file" ]]; then
|
||||
echo "Please provide the authentication token for file uploads."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ $channel == "" ]]; then
|
||||
echo "Please specify a channel."
|
||||
exit 1
|
||||
elif [[ ( "$channel" != "#"* ) && ( "$channel" != "@"* ) ]]; then
|
||||
channel="#$channel"
|
||||
fi
|
||||
|
||||
if [[ -n "$icon" ]]; then
|
||||
icon=${icon#:} # remove leading ':'
|
||||
icon=${icon%:} # remove trailing ':'
|
||||
fi
|
||||
|
||||
# ----------
|
||||
# Start script
|
||||
# ----------
|
||||
|
||||
text=""
|
||||
if [[ -n "$title" || -n "$link" ]]; then
|
||||
# Use link as title, if title is not specified
|
||||
if [[ -z "$title" ]]; then
|
||||
title="$link"
|
||||
fi
|
||||
|
||||
# Add title to filename in the file mode
|
||||
if [[ "$mode" == "file" ]]; then
|
||||
filetitle=$(echo "$title"|sed 's/[ /:.]//g')
|
||||
filetitle="$filetitle-"
|
||||
fi
|
||||
|
||||
if [[ -z "$attachment" ]]; then
|
||||
if [[ "$mode" == "no-buffering" ]]; then
|
||||
if [[ -n "$link" ]]; then
|
||||
title="<$link|$title>: "
|
||||
else
|
||||
title="$title: "
|
||||
fi
|
||||
elif [[ "$mode" == "file" ]]; then
|
||||
if [[ -n "$link" ]]; then
|
||||
title="<$link|$title>"
|
||||
fi
|
||||
else
|
||||
if [[ -n "$link" ]]; then
|
||||
text="-- <$link|$title> --\n"
|
||||
else
|
||||
text="-- $title --\n"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
timestamp="$(date +'%m%d%Y-%H%M%S')"
|
||||
filename="$tmp_dir/$filetitle$$-$timestamp.log"
|
||||
|
||||
if [[ "$mode" == "file" ]]; then
|
||||
touch $filename
|
||||
fi
|
||||
|
||||
exit_code=0
|
||||
|
||||
while IFS='' read line; do
|
||||
process_line "$line"
|
||||
done
|
||||
if [[ -n $line ]]; then
|
||||
process_line "$line"
|
||||
fi
|
||||
|
||||
if [[ "$mode" == "buffering" ]]; then
|
||||
send_message "$text"
|
||||
elif [[ "$mode" == "file" ]]; then
|
||||
if [[ -s "$filename" ]]; then
|
||||
channels_param=""
|
||||
if [[ ( "$channel" == "#"* ) ]]; then
|
||||
# Set channels for making the file public
|
||||
channels_param="-F channels=$channel"
|
||||
fi
|
||||
result="$(curl -F file=@"$filename" -F token="$upload_token" $channels_param https://slack.com/api/files.upload 2> /dev/null)"
|
||||
access_url="$(echo "$result" | awk 'match($0, /url_private":"([^"]*)"/) {print substr($0, RSTART+14, RLENGTH-15)}'|sed 's/\\//g')"
|
||||
download_url="$(echo "$result" | awk 'match($0, /url_private_download":"([^"]*)"/) {print substr($0, RSTART+23, RLENGTH-24)}'|sed 's/\\//g')"
|
||||
if [[ -n "$attachment" ]]; then
|
||||
text="Input file has been uploaded"
|
||||
else
|
||||
if [[ "$title" != "" ]]; then
|
||||
title=" of $title"
|
||||
fi
|
||||
text="Input file$title has been uploaded.\n$access_url\n\nYou can download it from the link below.\n$download_url"
|
||||
fi
|
||||
send_message "$text"
|
||||
fi
|
||||
# Clean up the temp file
|
||||
rm "$filename"
|
||||
fi
|
||||
|
||||
exit $exit_code
|
@ -284,6 +284,10 @@
|
||||
get_url: url=https://raw.githubusercontent.com/MightySCollins/speedtest-cli/master/speedtest_cli.py dest=/usr/bin/speedtest-cli
|
||||
- name: Change rights speedtest-cli
|
||||
file: path=/usr/bin/speedtest-cli owner=root group=root mode=0755
|
||||
- name: Copy Slacktee Config
|
||||
template: src=./files/slacktee.conf.j2 dest=/etc/slacktee.conf owner=root group=root mode=0544
|
||||
- name: Copy Slacktee
|
||||
copy: src=./files/slacktee.sh dest=/usr/local/bin/slacktee.sh owner=root group=root mode=0744
|
||||
- name: set netfilter rules
|
||||
lineinfile: dest=/etc/sysctl.conf line="{{ item }}"
|
||||
with_items:
|
||||
|
Loading…
Reference in New Issue
Block a user