sendxmpp 0.0.4 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/sendxmpp/cli.rb +85 -14
- data/lib/sendxmpp/message.rb +28 -4
- data/lib/sendxmpp/version.rb +1 -1
- data/settings.ini.sample +7 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dace202f420d76b23bd6a0ae781ec756315f3a9a
|
4
|
+
data.tar.gz: 78d823036bd6713d0b700bc8fedff36d3002b791
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4dd3c0f7310d67652f4ee8174dc4b8252f2f6153a29a57aeb159621236477ffa3e11bd3d4f84e4a8c990dcc33e6ff06e498513f41be9d148bd6491f94f69b65b
|
7
|
+
data.tar.gz: 738b4619e1043f1b256c676f5eb37775e5b52d6e3c2604be52db6048cbb8e31b9f5467fc74dff6019505991d4eaf9dc608ae7133a066ae38001a631605d1fbd2
|
data/lib/sendxmpp/cli.rb
CHANGED
@@ -26,6 +26,7 @@ module Sendxmpp
|
|
26
26
|
class_option :jid, default: "", type: :string, required: false, aliases: '-j'
|
27
27
|
class_option :config, default: "#{ENV['HOME']}/.sendxmpprbrc", type: :string, aliases: "-c", required: false
|
28
28
|
class_option :logfile, default: nil, aliases: '-l', required: false
|
29
|
+
class_option :subject, default: nil, type: :string, required: false
|
29
30
|
|
30
31
|
|
31
32
|
# Public: Initialize a new Object from CLI
|
@@ -59,9 +60,13 @@ module Sendxmpp
|
|
59
60
|
# jids - Receipient(s) can be one or more
|
60
61
|
#
|
61
62
|
# Examples
|
63
|
+
#
|
64
|
+
# sendxmpp user mosny@jabber.org -m "test"
|
65
|
+
# echo "test" | sendxmpp user mosny@jabber.org
|
66
|
+
# sendxmpp user mosny@jabber.org < /var/log/system.log
|
67
|
+
#
|
62
68
|
# user(["mosny@jabber.org"])
|
63
69
|
# user(["mosny@jabber.org", "someone@jabber.org"])
|
64
|
-
# ...
|
65
70
|
#
|
66
71
|
# Returns 0 or 1 exit codes
|
67
72
|
def user(*jids)
|
@@ -72,11 +77,7 @@ module Sendxmpp
|
|
72
77
|
raise ArgumentError, "Jids needs to be an Array got #{jids.class}"
|
73
78
|
end
|
74
79
|
|
75
|
-
|
76
|
-
Log.logger.error("No message to send. Exiting.")
|
77
|
-
Log.logger.error("See https://github.com/nirnanaaa/sendxmpprb/wiki/Sending-messages for available message formats.")
|
78
|
-
exit 1
|
79
|
-
end
|
80
|
+
check_messagequeue
|
80
81
|
|
81
82
|
Message.batch do
|
82
83
|
jids.each do |jid|
|
@@ -92,6 +93,11 @@ module Sendxmpp
|
|
92
93
|
# jids - Array of MUC(Multi user chat) jids.
|
93
94
|
#
|
94
95
|
# Examples
|
96
|
+
#
|
97
|
+
# sendxmpp chat edv@conference.jabber.org -m "test"
|
98
|
+
# echo "test" | sendxmpp chat edv@conference.jabber.org:password
|
99
|
+
# sendxmpp chat edv@conference.jabber.org < /var/log/system.log
|
100
|
+
#
|
95
101
|
# chat(["edv@conference.jabber.org"])
|
96
102
|
# chat(["edv@conference.jabber.org", "staff@conference.jabber.org"])
|
97
103
|
#
|
@@ -104,11 +110,7 @@ module Sendxmpp
|
|
104
110
|
raise ArgumentError, "Jids needs to be an Array got #{jids.class}"
|
105
111
|
end
|
106
112
|
|
107
|
-
|
108
|
-
Log.logger.error("No message to send. Exiting.")
|
109
|
-
Log.logger.error("See https://github.com/nirnanaaa/sendxmpprb/wiki/Sending-messages for available message formats.")
|
110
|
-
exit 1
|
111
|
-
end
|
113
|
+
check_messagequeue
|
112
114
|
|
113
115
|
Message.batch do
|
114
116
|
jids.each do |jid|
|
@@ -116,14 +118,83 @@ module Sendxmpp
|
|
116
118
|
end
|
117
119
|
end
|
118
120
|
|
121
|
+
end
|
122
|
+
|
123
|
+
desc "fromconf", "Read the receipients from configuration file"
|
124
|
+
# Public: Will read the receipients from configuration file and send the message to the users
|
125
|
+
#
|
126
|
+
# Examples
|
127
|
+
# sendxmpp fromconf -m "test"
|
128
|
+
# echo "test" |sendxmpp fromconf
|
129
|
+
# sendxmpp fromconf < /var/log/system.log
|
130
|
+
#
|
131
|
+
# Returns an exit code 0 or 1
|
132
|
+
def fromconf
|
133
|
+
Log.logger.debug("Received call for fromconf method")
|
134
|
+
if !config.receipients
|
135
|
+
Log.logger.error("No receipient(s) specified.")
|
136
|
+
Log.logger.error("Please read https://github.com/nirnanaaa/sendxmpprb/wiki/Configuration on how to specify receipients.")
|
137
|
+
exit 1
|
138
|
+
end
|
139
|
+
fetch_stdin
|
140
|
+
check_messagequeue
|
141
|
+
users, muc = parse_receipients
|
142
|
+
Message.batch do
|
143
|
+
users.each do |jid|
|
144
|
+
Message.message_to_user(jid)
|
145
|
+
end
|
146
|
+
muc.each do |jid|
|
147
|
+
Message.message_to_room(jid)
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
119
151
|
end
|
120
152
|
no_commands do
|
153
|
+
|
154
|
+
# Public: Check for presence of a message. The message is needed, because otherwise
|
155
|
+
# there would be nothing to do.
|
156
|
+
#
|
157
|
+
# Exits on failure
|
158
|
+
def check_messagequeue
|
159
|
+
if !config.message
|
160
|
+
Log.logger.error("No message to send. Exiting.")
|
161
|
+
Log.logger.error("See https://github.com/nirnanaaa/sendxmpprb/wiki/Sending-messages for available message formats.")
|
162
|
+
exit 1
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
# Public: read receipients from configuration
|
167
|
+
#
|
168
|
+
# Returns an array of types
|
169
|
+
def parse_receipients
|
170
|
+
types = [[],[]]
|
171
|
+
config.receipients.split(",").each do |r|
|
172
|
+
type, jid = r.split("->")
|
173
|
+
type == "muc" ? types.last << jid : types.first << jid
|
174
|
+
end
|
175
|
+
types
|
176
|
+
end
|
177
|
+
|
178
|
+
# Public: Fetch stdin input
|
179
|
+
#
|
180
|
+
# Before reading, stdin will be checked for presence.
|
181
|
+
#
|
182
|
+
# THIS METHOD ONLY WORKS ON UNIX BASED SYSTEMS, AS FCNTL
|
183
|
+
# IS NOT AVAILABLE ON WINDOWS
|
184
|
+
#
|
185
|
+
# Returns nothing
|
121
186
|
def fetch_stdin
|
187
|
+
require 'fcntl'
|
122
188
|
if !config.message
|
123
189
|
Log.logger.info("messages empty. using stdin")
|
124
|
-
|
125
|
-
|
126
|
-
|
190
|
+
if STDIN.fcntl(Fcntl::F_GETFL, 0) == 0
|
191
|
+
Log.logger.info("stdin not empty. Reading from it")
|
192
|
+
while $stdin.gets
|
193
|
+
config.message ||= ""
|
194
|
+
config.message << $_
|
195
|
+
end
|
196
|
+
else
|
197
|
+
return
|
127
198
|
end
|
128
199
|
end
|
129
200
|
end
|
data/lib/sendxmpp/message.rb
CHANGED
@@ -102,10 +102,10 @@ module Sendxmpp
|
|
102
102
|
receipients << options
|
103
103
|
else
|
104
104
|
if options[:type] == :user
|
105
|
-
send_message(
|
105
|
+
send_message(options[:user])
|
106
106
|
else
|
107
107
|
group, password = split_password(options[:user])
|
108
|
-
send_muc_message(
|
108
|
+
send_muc_message(group, password)
|
109
109
|
end
|
110
110
|
end
|
111
111
|
end
|
@@ -134,7 +134,7 @@ module Sendxmpp
|
|
134
134
|
# Returns nothing
|
135
135
|
def send_message(user)
|
136
136
|
Log.logger.debug("sending message to user %s" % user)
|
137
|
-
m = Jabber::Message.new(user,
|
137
|
+
m = Jabber::Message.new(user, generate_message)
|
138
138
|
client.send(m)
|
139
139
|
Log.logger.debug("sent message")
|
140
140
|
end
|
@@ -148,7 +148,7 @@ module Sendxmpp
|
|
148
148
|
def send_muc_message(room, password=nil)
|
149
149
|
Log.logger.debug("including file xmpp4r/muc")
|
150
150
|
require 'xmpp4r/muc'
|
151
|
-
m = Jabber::Message.new(room,
|
151
|
+
m = Jabber::Message.new(room, generate_message)
|
152
152
|
muc = MUC::MUCClient.new(client)
|
153
153
|
if !muc.active?
|
154
154
|
Log.logger.info("Joining room %s" % room)
|
@@ -156,6 +156,9 @@ module Sendxmpp
|
|
156
156
|
Log.logger.info("Joined room %s" % room)
|
157
157
|
end
|
158
158
|
muc.send m
|
159
|
+
rescue Jabber::ServerError => e
|
160
|
+
Log.logger.error("There was an error sending this message to room %s:" % room)
|
161
|
+
Log.logger.error(e.message)
|
159
162
|
end
|
160
163
|
|
161
164
|
# Public: Send the batch out
|
@@ -171,5 +174,26 @@ module Sendxmpp
|
|
171
174
|
receipients.delete(rcpt)
|
172
175
|
end
|
173
176
|
end
|
177
|
+
|
178
|
+
private
|
179
|
+
|
180
|
+
# Private: Generates a message for sending. Combines subject and message
|
181
|
+
#
|
182
|
+
# Returns the message string
|
183
|
+
def generate_message
|
184
|
+
if config.subject
|
185
|
+
msg = ""
|
186
|
+
msg << "\n"
|
187
|
+
msg << "-----------------------------------------\n"
|
188
|
+
msg << "New Message:\n"
|
189
|
+
msg << "%s\n" % config.subject
|
190
|
+
msg << config.message
|
191
|
+
msg << "\n-----------------------------------------\n"
|
192
|
+
msg
|
193
|
+
else
|
194
|
+
config.message
|
195
|
+
end
|
196
|
+
|
197
|
+
end
|
174
198
|
end
|
175
199
|
end
|
data/lib/sendxmpp/version.rb
CHANGED
data/settings.ini.sample
CHANGED
@@ -20,6 +20,13 @@ jid=bla@jabberdomain.example.com
|
|
20
20
|
# Default: 5222
|
21
21
|
# port=5222
|
22
22
|
|
23
|
+
# Default receipients. This is used if you do not want to specify them via commandline
|
24
|
+
# Default: nil
|
25
|
+
# Comma seperated list of receipients
|
26
|
+
# receipients=muc->muc@jabber.org:password,\
|
27
|
+
# user->bla@jabberdomain.example.com,\
|
28
|
+
# muc->muc2@conference.example.com
|
29
|
+
|
23
30
|
# Server to send messages over. If no server is provided DNS SRV record from jid will be used
|
24
31
|
# Default: ""
|
25
32
|
# server=jabber.org
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sendxmpp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Florian Kasper
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-05-
|
11
|
+
date: 2014-05-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|