ban 0.0.1 → 0.1.0.pre0
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 +8 -8
- data/bin/ban +1 -0
- data/init/ban.conf +13 -0
- data/lib/ban/cli.rb +6 -1
- data/lib/ban/server.rb +14 -1
- data/lib/ban/version.rb +1 -1
- data/lib/ban.rb +1 -0
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
OGFmMWY5Y2IzODBjODkzMTk5OTc5NTU5NzRlYjIyM2QzMTgxMTYwZQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZWZkMWMyZWI0OWZkNDk1YzBmMWRmMjQyMjZmZWEwZDUzNDdiY2FkYw==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NjE2OTM4NzNjYWJhYzI3NTg0YWE5ZWQzYjgzMmJlODgyMDlhMGEzM2ExODNh
|
10
|
+
MTg2OTdiMTZkY2M3NzIxMzQ5OTJhNTUxNTExMTA1NjRhZGFmODI2MjYyNDEz
|
11
|
+
MDI2ZGRhNjA0YjgxMGM4MTY0N2MyZWY1MzYxMTZlNDk1ODljNWI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
Yjk0ODcyZDYwMWJmMWU1OGYyZTQyMjA5ZmE3NTM3OTgzNTE0ZDNkMDAxOTI1
|
14
|
+
YTEwNTEzZWJlMzRmMzNkNjExYzljYzc5NTQ5YzBhMzcyNjQyYzA0OTViOWIy
|
15
|
+
MWNmZDEyN2M4MDdhZTNjNmMyNDY4YmE3YTFiMmYzYzY5ZTE5ZDM=
|
data/bin/ban
CHANGED
data/init/ban.conf
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
# Upstart configuration file
|
2
|
+
# Note: expects ban to be installed with the system ruby.
|
3
|
+
description "Starts the ban home control system"
|
4
|
+
version "0.0.1"
|
5
|
+
|
6
|
+
start on runlevel [2345]
|
7
|
+
stop on runlevel [016]
|
8
|
+
|
9
|
+
chdir "/tmp"
|
10
|
+
exec /usr/bin/ruby -S ban server
|
11
|
+
respawn
|
12
|
+
|
13
|
+
console log
|
data/lib/ban/cli.rb
CHANGED
@@ -3,6 +3,10 @@ module Ban
|
|
3
3
|
option :device, default: nil
|
4
4
|
option :port, type: :numeric, default: 8080
|
5
5
|
option :interface, type: :string, default: '0.0.0.0'
|
6
|
+
option :user, type: :string, default: 'dialout'
|
7
|
+
option :group, type: :string, default: 'nobody'
|
8
|
+
option :chroot, type: :string, default: Dir.getwd
|
9
|
+
option :em_threads, type: :numeric, default: 4
|
6
10
|
desc "server", "starts the ban server"
|
7
11
|
def server
|
8
12
|
device = options[:device]
|
@@ -10,9 +14,10 @@ module Ban
|
|
10
14
|
port = options[:port]
|
11
15
|
|
12
16
|
EM.epoll
|
17
|
+
EM.threadpool_size = options[:em_threads]
|
13
18
|
EM.run do
|
14
19
|
board = Board.new
|
15
|
-
server = Server.new
|
20
|
+
server = Server.new(options[:user], options[:group], options[:chroot])
|
16
21
|
|
17
22
|
board.on :event do |event|
|
18
23
|
if event.valid?
|
data/lib/ban/server.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
module Ban
|
2
2
|
class Server
|
3
3
|
include EventEmitter
|
4
|
-
|
4
|
+
|
5
|
+
def initialize(user, group, chroot)
|
5
6
|
@clients = []
|
7
|
+
@user, @group, @chroot = user, group, chroot
|
6
8
|
end
|
7
9
|
|
8
10
|
def broadcast(event)
|
@@ -13,6 +15,7 @@ module Ban
|
|
13
15
|
|
14
16
|
def start(interface, port)
|
15
17
|
@server = EM::WebSocket.run(host: interface, port: port) do |ws|
|
18
|
+
drop_priviledges!
|
16
19
|
ws.onopen do |handshake|
|
17
20
|
Ban::Logger.debug "WebSocket connection open"
|
18
21
|
@clients << ws
|
@@ -33,5 +36,15 @@ module Ban
|
|
33
36
|
end
|
34
37
|
end
|
35
38
|
end
|
39
|
+
|
40
|
+
def drop_priviledges!
|
41
|
+
gid = Etc.getgrnam(@user).gid
|
42
|
+
uid = Etc.getpwnam(@group).uid
|
43
|
+
Dir.chroot(@chroot)
|
44
|
+
Process::Sys.setgid(gid)
|
45
|
+
Process::Sys.setuid(uid)
|
46
|
+
rescue => ex
|
47
|
+
Ban::Logger.warn "Dropping the proviledges didn't work: #{ex}"
|
48
|
+
end
|
36
49
|
end
|
37
50
|
end
|
data/lib/ban/version.rb
CHANGED
data/lib/ban.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ban
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.1.0.pre0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vincent Landgraf
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-10-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -144,6 +144,7 @@ files:
|
|
144
144
|
- doc/ban-layout.svg
|
145
145
|
- doc/ban.fzz
|
146
146
|
- examples/client.rb
|
147
|
+
- init/ban.conf
|
147
148
|
- ino.ini
|
148
149
|
- lib/ban.rb
|
149
150
|
- lib/ban/board.rb
|
@@ -175,9 +176,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
175
176
|
version: '0'
|
176
177
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
177
178
|
requirements:
|
178
|
-
- - ! '
|
179
|
+
- - ! '>'
|
179
180
|
- !ruby/object:Gem::Version
|
180
|
-
version:
|
181
|
+
version: 1.3.1
|
181
182
|
requirements: []
|
182
183
|
rubyforge_project:
|
183
184
|
rubygems_version: 2.0.6
|