emptyd 0.0.6 → 0.0.7
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/README.md +7 -10
- data/bin/emptyd +51 -5
- data/lib/emptyd/version.rb +1 -1
- data/lib/emptyd.rb +3 -4
- 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: 3a6c2238de6a8ddfad2f05d18c568fc1d333c458
|
4
|
+
data.tar.gz: 521686c0e7a3c8242870ec331d86eab857bcb62d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 966fdfbe3f9ed0e4e6a3b2628d15c2ef7c6556620f9fa66bebf5d686d3e25b12a30d41f63e5601d4da916473b6ab87980e46edb68094941800fe80d83b9f4fcf
|
7
|
+
data.tar.gz: eb6db97c46fdcce7be4b09ebda7fdfa03fd05d26a979391382213c2fb975bf836f053e02b9bbce2d7adf97e539d73aec0038e165753cf9a8853a2f9670a3356b
|
data/README.md
CHANGED
@@ -1,20 +1,17 @@
|
|
1
1
|
# Emptyd
|
2
2
|
|
3
|
-
|
3
|
+
Server counterpart of [emptyc](https://github.com/kmeaw/emptyc), which
|
4
|
+
keeps track of SSH connections, pushes I/O over the wire, providing
|
5
|
+
an HTTP-interface for emptyc.
|
4
6
|
|
5
7
|
## Installation
|
6
8
|
|
7
|
-
|
9
|
+
$ sudo gem install emptyd
|
8
10
|
|
9
|
-
|
11
|
+
For Mac OS X Mavericks users: if you have problems compiling native
|
12
|
+
extensions for eventmachine-le, try setting up ARCHFLAGS:
|
10
13
|
|
11
|
-
|
12
|
-
|
13
|
-
$ bundle
|
14
|
-
|
15
|
-
Or install it yourself as:
|
16
|
-
|
17
|
-
$ gem install emptyd
|
14
|
+
$ sudo env ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install emptyd
|
18
15
|
|
19
16
|
## Usage
|
20
17
|
|
data/bin/emptyd
CHANGED
@@ -9,12 +9,14 @@ end
|
|
9
9
|
|
10
10
|
require "emptyd"
|
11
11
|
require 'evma_httpserver'
|
12
|
+
require 'getoptlong'
|
12
13
|
|
13
14
|
class MyHttpServer < EM::Connection
|
14
15
|
include EM::HttpServer
|
15
16
|
|
16
|
-
def initialize(
|
17
|
-
@logger = logger
|
17
|
+
def initialize(options)
|
18
|
+
@logger = options[:logger]
|
19
|
+
@cookie = options[:cookie]
|
18
20
|
end
|
19
21
|
|
20
22
|
def post_init
|
@@ -27,11 +29,21 @@ class MyHttpServer < EM::Connection
|
|
27
29
|
port, ip = Socket.unpack_sockaddr_in(get_peername)
|
28
30
|
@logger.info "#{ip}:#{port} #{@http_request_method} #{@http_path_info} #{@http_post_content.inspect}"
|
29
31
|
|
32
|
+
headers = Hash[@http_headers.split("\x00").map{|x| x.split(":",2)}.map{|x,y| [x.strip.downcase,y.lstrip]}]
|
33
|
+
|
30
34
|
response = EM::DelegatedHttpResponse.new(self)
|
31
35
|
response.status = 200
|
32
36
|
response.content_type 'application/json'
|
33
37
|
response.content = JSON.dump({ :okay => true })
|
34
38
|
|
39
|
+
if @cookie and headers['authorization'] != "Cookie: #{@cookie}"
|
40
|
+
@logger.warn "Bad cookie: #{headers['authorization']}"
|
41
|
+
response.status = 403
|
42
|
+
response.content = JSON.dump({ :cookie => :bad })
|
43
|
+
response.send_response
|
44
|
+
return
|
45
|
+
end
|
46
|
+
|
35
47
|
begin
|
36
48
|
case @http_path_info
|
37
49
|
when %r{/ping}
|
@@ -102,10 +114,44 @@ end
|
|
102
114
|
# XXX: We need a shared environment for Session and Connection
|
103
115
|
$PASSWORD = CONFIG[:password]
|
104
116
|
|
117
|
+
opts = GetoptLong.new(
|
118
|
+
[ '--help', '-h', GetoptLong::NO_ARGUMENT ],
|
119
|
+
[ '--cookie', '-C', GetoptLong::REQUIRED_ARGUMENT ],
|
120
|
+
)
|
121
|
+
|
122
|
+
logger = Logger.new(STDOUT)
|
123
|
+
options = { :logger => logger }
|
124
|
+
options[:cookie] = CONFIG[:cookie]
|
125
|
+
options[:port] = CONFIG[:port]
|
126
|
+
|
127
|
+
opts.each do |opt, arg|
|
128
|
+
case opt
|
129
|
+
when '--help'
|
130
|
+
print <<-EOF
|
131
|
+
#{$0} [OPTION]
|
132
|
+
|
133
|
+
-h, --help:
|
134
|
+
show help
|
135
|
+
|
136
|
+
-C x, --cookie x:
|
137
|
+
protect server with a cookie value
|
138
|
+
|
139
|
+
-p x, --port x:
|
140
|
+
set port number
|
141
|
+
|
142
|
+
EOF
|
143
|
+
exit
|
144
|
+
when '--cookie'
|
145
|
+
options[:cookie] = arg
|
146
|
+
when '--port'
|
147
|
+
options[:port] = arg.to_i
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
105
151
|
EM.run do
|
106
152
|
$0 = "emptyd"
|
107
|
-
|
108
|
-
EM.start_server CONFIG[:server],
|
109
|
-
logger.info "Server started on #{CONFIG[:server]}, port #{
|
153
|
+
|
154
|
+
EM.start_server CONFIG[:server], options[:port], MyHttpServer, options
|
155
|
+
logger.info "Server started on #{CONFIG[:server]}, port #{options[:port]}."
|
110
156
|
end
|
111
157
|
|
data/lib/emptyd/version.rb
CHANGED
data/lib/emptyd.rb
CHANGED
@@ -371,15 +371,14 @@ module Emptyd
|
|
371
371
|
end
|
372
372
|
|
373
373
|
def terminate key
|
374
|
-
|
375
|
-
|
374
|
+
return if @terminated[key]
|
375
|
+
chan = @running.delete key
|
376
|
+
conn = @connections.delete key
|
376
377
|
chan.close if chan.respond_to? :close
|
377
378
|
if conn
|
378
379
|
callback conn, :close, "user"
|
379
380
|
conn.unbind self
|
380
381
|
end
|
381
|
-
@running.delete key
|
382
|
-
@connections.delete key
|
383
382
|
@terminated[key] = true
|
384
383
|
end
|
385
384
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: emptyd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- kmeaw
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-04-
|
11
|
+
date: 2014-04-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|