sendxmpp 0.0.4 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|