|
@@ -2,17 +2,23 @@
|
2
|
2
|
|
3
|
3
|
|
4
|
4
|
usage() {
|
5
|
|
- echo "usage: $(basename "$0") [-h host] [-p port] [-n nick] [-c context] [-u user] message" >&2
|
|
5
|
+ local self=$(basename "$0")
|
|
6
|
+ echo "usage: $self [options] message" >&2
|
|
7
|
+ echo "usage: $self [options] -f message_file|-" >&2
|
|
8
|
+ echo "options: [-h host] [-p port] [-n nick] [-c context] [-u user]" >&2
|
6
|
9
|
exit 2
|
7
|
10
|
}
|
8
|
11
|
|
9
|
12
|
mkcommands() {
|
10
|
13
|
local user="$1"
|
11
|
|
- local message="$2"
|
12
|
|
- local nick="$3"
|
|
14
|
+ local nick="$2"
|
|
15
|
+ local message
|
13
|
16
|
echo "NICK $nick"
|
14
|
17
|
echo "USER $nick 8 * :notifirc bot"
|
15
|
|
- echo "PRIVMSG $user :$message"
|
|
18
|
+ while read message;
|
|
19
|
+ do
|
|
20
|
+ echo "PRIVMSG $user :$message"
|
|
21
|
+ done
|
16
|
22
|
echo "QUIT"
|
17
|
23
|
}
|
18
|
24
|
|
|
@@ -70,6 +76,25 @@ load_defaults() {
|
70
|
76
|
}
|
71
|
77
|
}
|
72
|
78
|
|
|
79
|
+read_file() {
|
|
80
|
+ local fpath=$1
|
|
81
|
+ local limit_l=3
|
|
82
|
+ local limit_c=80
|
|
83
|
+ local lines_read=0
|
|
84
|
+ local suff=""
|
|
85
|
+ grep . "$fpath" \
|
|
86
|
+ | while true;
|
|
87
|
+ do
|
|
88
|
+ test $lines_read -ge $limit_l && break
|
|
89
|
+ IFS= read line || break
|
|
90
|
+ (( lines_read++ ))
|
|
91
|
+ test ${#line} -gt $limit_c && suff=…
|
|
92
|
+ line=${line:0:$limit_c}$suff
|
|
93
|
+ log "read from $fpath: $line"
|
|
94
|
+ echo "$line"
|
|
95
|
+ done
|
|
96
|
+}
|
|
97
|
+
|
73
|
98
|
choose_logfile() {
|
74
|
99
|
local path
|
75
|
100
|
{
|
|
@@ -89,7 +114,7 @@ choose_logfile() {
|
89
|
114
|
}
|
90
|
115
|
|
91
|
116
|
main() {
|
92
|
|
- local context nick host port user message logfile
|
|
117
|
+ local context nick host port user message logfile msgfile
|
93
|
118
|
|
94
|
119
|
logfile=$(choose_logfile)
|
95
|
120
|
test -n "$logfile" || {
|
|
@@ -103,6 +128,7 @@ main() {
|
103
|
128
|
|
104
|
129
|
while true; do case $1 in
|
105
|
130
|
-c) context=$2; shift 2 || usage ;;
|
|
131
|
+ -f) msgfile=$2; shift 2 || usage ;;
|
106
|
132
|
-h) host=$2; shift 2 || usage ;;
|
107
|
133
|
-n) nick=$2; shift 2 || usage ;;
|
108
|
134
|
-p) port=$2; shift 2 || usage ;;
|
|
@@ -117,7 +143,7 @@ main() {
|
117
|
143
|
test -n "$port" || usage
|
118
|
144
|
test -n "$user" || usage
|
119
|
145
|
test -n "$nick" || nick="notifirc"
|
120
|
|
- test -n "$message" || usage
|
|
146
|
+ test -z "$message$msgfile" && usage
|
121
|
147
|
|
122
|
148
|
log "-----BEGIN sending notification-----"
|
123
|
149
|
log "host='$host'"
|
|
@@ -125,8 +151,13 @@ main() {
|
125
|
151
|
log "nick='$nick'"
|
126
|
152
|
log "context='$context'"
|
127
|
153
|
log "user='$user'"
|
|
154
|
+ log "msgfile='$msgfile'"
|
128
|
155
|
log "message='$message'"
|
129
|
|
- mkcommands "$user" "$message" "$(mknick)" \
|
|
156
|
+ {
|
|
157
|
+ test -n "$message" && printf '%s\n' "$message"
|
|
158
|
+ test -n "$msgfile" && read_file "$msgfile"
|
|
159
|
+ } \
|
|
160
|
+ | mkcommands "$user" "$(mknick)" \
|
130
|
161
|
| nc "$host" "$port" 2>&1 \
|
131
|
162
|
| log_pipe
|
132
|
163
|
log "-----END sending notification-----"
|