tkellem 0.8.0 → 0.8.1
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.
data/README.md
CHANGED
@@ -17,11 +17,9 @@ functionality.
|
|
17
17
|
|
18
18
|
This will have to do as a quickstart guide, for now:
|
19
19
|
|
20
|
-
$
|
21
|
-
$
|
22
|
-
$
|
23
|
-
$ bundle exec bin/tkellem start
|
24
|
-
$ bundle exec bin/tkellem admin
|
20
|
+
$ gem install tkellem
|
21
|
+
$ tkellem start
|
22
|
+
$ tkellem admin
|
25
23
|
> help
|
26
24
|
> listen ircs://0.0.0.0:8765
|
27
25
|
> user --add <my-name> --admin
|
@@ -37,3 +35,7 @@ Then connect to tkellem with an irc client:
|
|
37
35
|
nickname: <my-name>
|
38
36
|
login: <my-name>@freenode
|
39
37
|
server password: <my-new-password>
|
38
|
+
|
39
|
+
Note that all config and log files are stored in ~/.tkellem of the user
|
40
|
+
you run `tkellem start` as. You also need to run `tkellem admin` as this
|
41
|
+
same user, in order to have access to the admin console.
|
data/lib/tkellem/bouncer.rb
CHANGED
@@ -205,6 +205,14 @@ class Bouncer
|
|
205
205
|
|
206
206
|
# We're all initialized, allow connections
|
207
207
|
@connected = true
|
208
|
+
|
209
|
+
@network_user.at_connect.each do |line|
|
210
|
+
cmd, args = line.split(' ', 2)
|
211
|
+
next unless cmd && args && cmd[0] == '/'[0]
|
212
|
+
msg = IrcMessage.parse("#{cmd[1..-1].upcase} #{args}")
|
213
|
+
send_msg(msg)
|
214
|
+
end
|
215
|
+
|
208
216
|
@waiting_clients.each do |client|
|
209
217
|
client.say_as_tkellem("Now connected.")
|
210
218
|
connect_client(client)
|
@@ -4,9 +4,17 @@ class NetworkUser < ActiveRecord::Base
|
|
4
4
|
belongs_to :network
|
5
5
|
belongs_to :user
|
6
6
|
|
7
|
+
serialize :at_connect, Array
|
8
|
+
|
7
9
|
def nick
|
8
10
|
read_attribute(:nick) || user.name
|
9
11
|
end
|
12
|
+
|
13
|
+
# we use the network's at_connect until it is modified and overwritten for
|
14
|
+
# this specific network user
|
15
|
+
def at_connect
|
16
|
+
read_attribute(:at_connect).presence || network.at_connect.presence || []
|
17
|
+
end
|
10
18
|
end
|
11
19
|
|
12
20
|
end
|
data/lib/tkellem/tkellem_bot.rb
CHANGED
@@ -127,9 +127,9 @@ class TkellemBot
|
|
127
127
|
register(name)
|
128
128
|
cattr_accessor :model
|
129
129
|
self.model = model
|
130
|
-
options.set('add', '--add', '-a', "Add a #{model
|
131
|
-
options.set('remove', '--remove', '-r', "Remove a #{model
|
132
|
-
options.set('list', '--list', '-l', "List the current #{model.
|
130
|
+
options.set('add', '--add', '-a', "Add a #{model}")
|
131
|
+
options.set('remove', '--remove', '-r', "Remove a #{model}")
|
132
|
+
options.set('list', '--list', '-l', "List the current #{model.to_s.pluralize}")
|
133
133
|
end
|
134
134
|
|
135
135
|
def show(m)
|
@@ -254,6 +254,39 @@ class TkellemBot
|
|
254
254
|
end
|
255
255
|
end
|
256
256
|
|
257
|
+
class AtConnectCommand < CRUDCommand
|
258
|
+
register_crud 'atconnect', 'At-Connect'
|
259
|
+
|
260
|
+
# options.set('network', '--network=network', '-n', 'Network to modify at-connect on')
|
261
|
+
options.set('username', '--user=username', '-u', 'Modify a user-specific network for another user')
|
262
|
+
|
263
|
+
def list(args, user, network = nil)
|
264
|
+
network_name, network, user = NetworkCommand.get_network(args, user) unless network
|
265
|
+
raise(Command::ArgumentError, "No network found") unless network
|
266
|
+
r "At connect:"
|
267
|
+
network.at_connect.each { |line| r " /#{line}" }
|
268
|
+
end
|
269
|
+
|
270
|
+
def remove(args, user)
|
271
|
+
network_name, network, user = NetworkCommand.get_network(args, user)
|
272
|
+
raise(Command::ArgumentError, "No network found") unless network
|
273
|
+
line = args[:rest].join(' ')
|
274
|
+
network.at_connect = network.at_connect.reject { |l| l == line }
|
275
|
+
network.save
|
276
|
+
list(args, user, network)
|
277
|
+
end
|
278
|
+
|
279
|
+
def add(args, user)
|
280
|
+
network_name, network, user = NetworkCommand.get_network(args, user)
|
281
|
+
raise(Command::ArgumentError, "No network found") unless network
|
282
|
+
line = args[:rest].join(' ')
|
283
|
+
raise(Command::ArgumentError, "atconnect commands must start with a /") unless line[0] == '/'[0]
|
284
|
+
network.at_connect = network.at_connect + [line]
|
285
|
+
network.save
|
286
|
+
list(args, user, network)
|
287
|
+
end
|
288
|
+
end
|
289
|
+
|
257
290
|
class NetworkCommand < CRUDCommand
|
258
291
|
register_crud 'network', Host
|
259
292
|
|
@@ -269,7 +302,7 @@ class TkellemBot
|
|
269
302
|
"#{host.network.name}#{' (public)' if host.network.public?} " + host.network.hosts.map { |h| "[#{h}]" }.join(' ')
|
270
303
|
end
|
271
304
|
|
272
|
-
def get_network(args, user)
|
305
|
+
def self.get_network(args, user)
|
273
306
|
network_name = args[:rest].shift
|
274
307
|
if args['username']
|
275
308
|
if Command.admin_user?(user)
|
@@ -281,12 +314,16 @@ class TkellemBot
|
|
281
314
|
|
282
315
|
network = Network.first(:conditions => { :name => network_name, :user_id => user.id }) if user
|
283
316
|
network ||= Network.first(:conditions => { :name => network_name, :user_id => nil })
|
284
|
-
if network && network.public? && !
|
317
|
+
if network && network.public? && !admin_user?(user)
|
285
318
|
raise Command::ArgumentError, "Only admins can modify public networks"
|
286
319
|
end
|
287
320
|
return network_name, network, user
|
288
321
|
end
|
289
322
|
|
323
|
+
def get_network(args, user)
|
324
|
+
self.class.get_network(args, user)
|
325
|
+
end
|
326
|
+
|
290
327
|
def remove(args, user)
|
291
328
|
network_name, network, user = get_network(args, user)
|
292
329
|
if network
|
data/lib/tkellem/version.rb
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: tkellem
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.8.
|
5
|
+
version: 0.8.1
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Brian Palmer
|
@@ -136,6 +136,7 @@ files:
|
|
136
136
|
- lib/tkellem/irc_message.rb
|
137
137
|
- lib/tkellem/irc_server.rb
|
138
138
|
- lib/tkellem/migrations/001_init_db.rb
|
139
|
+
- lib/tkellem/migrations/002_at_connect_columns.rb
|
139
140
|
- lib/tkellem/models/host.rb
|
140
141
|
- lib/tkellem/models/listen_address.rb
|
141
142
|
- lib/tkellem/models/network.rb
|