bayserver-core 2.2.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 +7 -0
- data/lib/baykit/bayserver/agent/accept_handler.rb +97 -0
- data/lib/baykit/bayserver/agent/channel_listener.rb +35 -0
- data/lib/baykit/bayserver/agent/command_receiver.rb +75 -0
- data/lib/baykit/bayserver/agent/grand_agent.rb +319 -0
- data/lib/baykit/bayserver/agent/grand_agent_monitor.rb +217 -0
- data/lib/baykit/bayserver/agent/next_socket_action.rb +14 -0
- data/lib/baykit/bayserver/agent/non_blocking_handler.rb +433 -0
- data/lib/baykit/bayserver/agent/package.rb +3 -0
- data/lib/baykit/bayserver/agent/signal/signal_agent.rb +165 -0
- data/lib/baykit/bayserver/agent/signal/signal_proxy.rb +18 -0
- data/lib/baykit/bayserver/agent/signal/signal_sender.rb +99 -0
- data/lib/baykit/bayserver/agent/spin_handler.rb +140 -0
- data/lib/baykit/bayserver/agent/transporter/data_listener.rb +38 -0
- data/lib/baykit/bayserver/agent/transporter/package.rb +3 -0
- data/lib/baykit/bayserver/agent/transporter/plain_transporter.rb +55 -0
- data/lib/baykit/bayserver/agent/transporter/secure_transporter.rb +81 -0
- data/lib/baykit/bayserver/agent/transporter/spin_read_transporter.rb +111 -0
- data/lib/baykit/bayserver/agent/transporter/spin_write_transporter.rb +125 -0
- data/lib/baykit/bayserver/agent/transporter/transporter.rb +466 -0
- data/lib/baykit/bayserver/agent/upgrade_exception.rb +11 -0
- data/lib/baykit/bayserver/bay_dockers.rb +60 -0
- data/lib/baykit/bayserver/bay_exception.rb +12 -0
- data/lib/baykit/bayserver/bay_log.rb +148 -0
- data/lib/baykit/bayserver/bay_message.rb +20 -0
- data/lib/baykit/bayserver/bayserver.rb +529 -0
- data/lib/baykit/bayserver/bcf/bcf_document.rb +44 -0
- data/lib/baykit/bayserver/bcf/bcf_element.rb +30 -0
- data/lib/baykit/bayserver/bcf/bcf_key_val.rb +19 -0
- data/lib/baykit/bayserver/bcf/bcf_object.rb +15 -0
- data/lib/baykit/bayserver/bcf/bcf_parser.rb +180 -0
- data/lib/baykit/bayserver/bcf/package.rb +6 -0
- data/lib/baykit/bayserver/bcf/parse_exception.rb +15 -0
- data/lib/baykit/bayserver/config_exception.rb +25 -0
- data/lib/baykit/bayserver/constants.rb +8 -0
- data/lib/baykit/bayserver/docker/base/club_base.rb +117 -0
- data/lib/baykit/bayserver/docker/base/docker_base.rb +66 -0
- data/lib/baykit/bayserver/docker/base/inbound_data_listener.rb +89 -0
- data/lib/baykit/bayserver/docker/base/inbound_handler.rb +42 -0
- data/lib/baykit/bayserver/docker/base/inbound_ship.rb +341 -0
- data/lib/baykit/bayserver/docker/base/inbound_ship_store.rb +65 -0
- data/lib/baykit/bayserver/docker/base/port_base.rb +228 -0
- data/lib/baykit/bayserver/docker/base/reroute_base.rb +28 -0
- data/lib/baykit/bayserver/docker/built_in/built_in_city_docker.rb +303 -0
- data/lib/baykit/bayserver/docker/built_in/built_in_harbor_docker.rb +226 -0
- data/lib/baykit/bayserver/docker/built_in/built_in_log_docker.rb +302 -0
- data/lib/baykit/bayserver/docker/built_in/built_in_permission_docker.rb +242 -0
- data/lib/baykit/bayserver/docker/built_in/built_in_secure_docker.rb +157 -0
- data/lib/baykit/bayserver/docker/built_in/built_in_town_docker.rb +117 -0
- data/lib/baykit/bayserver/docker/built_in/built_in_trouble_docker.rb +57 -0
- data/lib/baykit/bayserver/docker/built_in/log_boat.rb +71 -0
- data/lib/baykit/bayserver/docker/built_in/log_item.rb +18 -0
- data/lib/baykit/bayserver/docker/built_in/log_item_factory.rb +18 -0
- data/lib/baykit/bayserver/docker/built_in/log_items.rb +287 -0
- data/lib/baykit/bayserver/docker/built_in/write_file_taxi.rb +101 -0
- data/lib/baykit/bayserver/docker/city.rb +22 -0
- data/lib/baykit/bayserver/docker/club.rb +45 -0
- data/lib/baykit/bayserver/docker/docker.rb +8 -0
- data/lib/baykit/bayserver/docker/harbor.rb +34 -0
- data/lib/baykit/bayserver/docker/log.rb +17 -0
- data/lib/baykit/bayserver/docker/package.rb +12 -0
- data/lib/baykit/bayserver/docker/permission.rb +18 -0
- data/lib/baykit/bayserver/docker/port.rb +39 -0
- data/lib/baykit/bayserver/docker/reroute.rb +17 -0
- data/lib/baykit/bayserver/docker/secure.rb +22 -0
- data/lib/baykit/bayserver/docker/send_file/directory_train.rb +123 -0
- data/lib/baykit/bayserver/docker/send_file/file_content_handler.rb +43 -0
- data/lib/baykit/bayserver/docker/send_file/send_file_docker.rb +71 -0
- data/lib/baykit/bayserver/docker/town.rb +30 -0
- data/lib/baykit/bayserver/docker/trouble.rb +17 -0
- data/lib/baykit/bayserver/docker/warp/package.rb +4 -0
- data/lib/baykit/bayserver/docker/warp/warp_data.rb +84 -0
- data/lib/baykit/bayserver/docker/warp/warp_data_listener.rb +112 -0
- data/lib/baykit/bayserver/docker/warp/warp_docker.rb +273 -0
- data/lib/baykit/bayserver/docker/warp/warp_handler.rb +38 -0
- data/lib/baykit/bayserver/docker/warp/warp_ship.rb +166 -0
- data/lib/baykit/bayserver/docker/warp/warp_ship_store.rb +111 -0
- data/lib/baykit/bayserver/http_exception.rb +33 -0
- data/lib/baykit/bayserver/mem_usage.rb +104 -0
- data/lib/baykit/bayserver/protocol/command.rb +21 -0
- data/lib/baykit/bayserver/protocol/command_handler.rb +9 -0
- data/lib/baykit/bayserver/protocol/command_packer.rb +49 -0
- data/lib/baykit/bayserver/protocol/command_unpacker.rb +13 -0
- data/lib/baykit/bayserver/protocol/package.rb +15 -0
- data/lib/baykit/bayserver/protocol/packet.rb +63 -0
- data/lib/baykit/bayserver/protocol/packet_factory.rb +13 -0
- data/lib/baykit/bayserver/protocol/packet_packer.rb +30 -0
- data/lib/baykit/bayserver/protocol/packet_part_accessor.rb +122 -0
- data/lib/baykit/bayserver/protocol/packet_store.rb +139 -0
- data/lib/baykit/bayserver/protocol/packet_unpacker.rb +17 -0
- data/lib/baykit/bayserver/protocol/protocol_exception.rb +17 -0
- data/lib/baykit/bayserver/protocol/protocol_handler.rb +64 -0
- data/lib/baykit/bayserver/protocol/protocol_handler_factory.rb +14 -0
- data/lib/baykit/bayserver/protocol/protocol_handler_store.rb +109 -0
- data/lib/baykit/bayserver/sink.rb +22 -0
- data/lib/baykit/bayserver/taxi/taxi.rb +38 -0
- data/lib/baykit/bayserver/taxi/taxi_runner.rb +31 -0
- data/lib/baykit/bayserver/tours/content_consume_listener.rb +20 -0
- data/lib/baykit/bayserver/tours/package.rb +4 -0
- data/lib/baykit/bayserver/tours/read_file_taxi.rb +102 -0
- data/lib/baykit/bayserver/tours/req_content_handler.rb +37 -0
- data/lib/baykit/bayserver/tours/send_file_train.rb +65 -0
- data/lib/baykit/bayserver/tours/send_file_yacht.rb +93 -0
- data/lib/baykit/bayserver/tours/tour.rb +195 -0
- data/lib/baykit/bayserver/tours/tour_req.rb +251 -0
- data/lib/baykit/bayserver/tours/tour_res.rb +400 -0
- data/lib/baykit/bayserver/tours/tour_store.rb +121 -0
- data/lib/baykit/bayserver/train/train.rb +54 -0
- data/lib/baykit/bayserver/train/train_runner.rb +32 -0
- data/lib/baykit/bayserver/util/byte_array.rb +54 -0
- data/lib/baykit/bayserver/util/byte_buffer.rb +13 -0
- data/lib/baykit/bayserver/util/cgi_util.rb +165 -0
- data/lib/baykit/bayserver/util/char_util.rb +22 -0
- data/lib/baykit/bayserver/util/cities.rb +45 -0
- data/lib/baykit/bayserver/util/class_util.rb +17 -0
- data/lib/baykit/bayserver/util/counter.rb +23 -0
- data/lib/baykit/bayserver/util/data_consume_listener.rb +13 -0
- data/lib/baykit/bayserver/util/executor_service.rb +81 -0
- data/lib/baykit/bayserver/util/groups.rb +110 -0
- data/lib/baykit/bayserver/util/gzip_compressor.rb +55 -0
- data/lib/baykit/bayserver/util/headers.rb +194 -0
- data/lib/baykit/bayserver/util/host_matcher.rb +48 -0
- data/lib/baykit/bayserver/util/http_status.rb +60 -0
- data/lib/baykit/bayserver/util/http_util.rb +157 -0
- data/lib/baykit/bayserver/util/io_util.rb +32 -0
- data/lib/baykit/bayserver/util/ip_matcher.rb +67 -0
- data/lib/baykit/bayserver/util/key_val.rb +15 -0
- data/lib/baykit/bayserver/util/key_val_list_parser.rb +53 -0
- data/lib/baykit/bayserver/util/locale.rb +30 -0
- data/lib/baykit/bayserver/util/md5_password.rb +24 -0
- data/lib/baykit/bayserver/util/message.rb +56 -0
- data/lib/baykit/bayserver/util/mimes.rb +27 -0
- data/lib/baykit/bayserver/util/object_factory.rb +13 -0
- data/lib/baykit/bayserver/util/object_store.rb +74 -0
- data/lib/baykit/bayserver/util/postman.rb +35 -0
- data/lib/baykit/bayserver/util/reusable.rb +13 -0
- data/lib/baykit/bayserver/util/selector.rb +141 -0
- data/lib/baykit/bayserver/util/simple_buffer.rb +53 -0
- data/lib/baykit/bayserver/util/simple_inspect.rb +12 -0
- data/lib/baykit/bayserver/util/string_util.rb +73 -0
- data/lib/baykit/bayserver/util/sys_util.rb +138 -0
- data/lib/baykit/bayserver/util/url_decoder.rb +42 -0
- data/lib/baykit/bayserver/util/url_encoder.rb +19 -0
- data/lib/baykit/bayserver/util/valve.rb +15 -0
- data/lib/baykit/bayserver/version.rb +7 -0
- data/lib/baykit/bayserver/watercraft/boat.rb +43 -0
- data/lib/baykit/bayserver/watercraft/ship.rb +104 -0
- data/lib/baykit/bayserver/watercraft/yacht.rb +42 -0
- metadata +189 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
require 'baykit/bayserver/docker/docker'
|
|
2
|
+
|
|
3
|
+
module Baykit
|
|
4
|
+
module BayServer
|
|
5
|
+
module Docker
|
|
6
|
+
#
|
|
7
|
+
# interface
|
|
8
|
+
#
|
|
9
|
+
module Club
|
|
10
|
+
include Docker # implements
|
|
11
|
+
|
|
12
|
+
# Get the file name part of club
|
|
13
|
+
def file_name()
|
|
14
|
+
raise NotImplementedError.new()
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Get the ext (file extension part) of club
|
|
18
|
+
def extension()
|
|
19
|
+
raise NotImplementedError.new()
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Check if file name matches this club
|
|
23
|
+
def matches(fname)
|
|
24
|
+
raise NotImplementedError.new()
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# Get charset of club
|
|
28
|
+
def charset()
|
|
29
|
+
raise NotImplementedError.new()
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Check if this club decodes PATH_INFO
|
|
33
|
+
def decode_path_info()
|
|
34
|
+
raise NotImplementedError.new()
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Arrive
|
|
38
|
+
def arrive(tur)
|
|
39
|
+
raise NotImplementedError.new()
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
require 'baykit/bayserver/docker/docker'
|
|
2
|
+
|
|
3
|
+
module Baykit
|
|
4
|
+
module BayServer
|
|
5
|
+
module Docker
|
|
6
|
+
module Harbor
|
|
7
|
+
include Docker
|
|
8
|
+
|
|
9
|
+
FILE_SEND_METHOD_SELECT = 1
|
|
10
|
+
FILE_SEND_METHOD_SPIN = 2
|
|
11
|
+
FILE_SEND_METHOD_TAXI = 3
|
|
12
|
+
|
|
13
|
+
#
|
|
14
|
+
# interface
|
|
15
|
+
#
|
|
16
|
+
# String charset();
|
|
17
|
+
# Locale locale();
|
|
18
|
+
# int shipAgents();
|
|
19
|
+
# int trainRunners();
|
|
20
|
+
# int maxShips();
|
|
21
|
+
# Trouble getTrouble();
|
|
22
|
+
# int socketTimeoutSec();
|
|
23
|
+
# int keepTimeoutSec();
|
|
24
|
+
# boolean traceHeader();
|
|
25
|
+
# int tourBufferSize();
|
|
26
|
+
# String redirectFile();
|
|
27
|
+
# int bayPort();
|
|
28
|
+
# boolean gzipComp();
|
|
29
|
+
# AsyncFileMethod asyncFileMethod();
|
|
30
|
+
#
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
require 'baykit/bayserver/docker/docker'
|
|
2
|
+
require 'baykit/bayserver/docker/city'
|
|
3
|
+
require 'baykit/bayserver/docker/club'
|
|
4
|
+
require 'baykit/bayserver/docker/harbor'
|
|
5
|
+
require 'baykit/bayserver/docker/log'
|
|
6
|
+
require 'baykit/bayserver/docker/permission'
|
|
7
|
+
require 'baykit/bayserver/docker/port'
|
|
8
|
+
require 'baykit/bayserver/docker/reroute'
|
|
9
|
+
require 'baykit/bayserver/docker/secure'
|
|
10
|
+
require 'baykit/bayserver/docker/town'
|
|
11
|
+
require 'baykit/bayserver/docker/trouble'
|
|
12
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require 'baykit/bayserver/docker/docker'
|
|
2
|
+
|
|
3
|
+
module Baykit
|
|
4
|
+
module BayServer
|
|
5
|
+
module Docker
|
|
6
|
+
module Permission
|
|
7
|
+
include Docker # implements
|
|
8
|
+
|
|
9
|
+
#
|
|
10
|
+
# interface
|
|
11
|
+
#
|
|
12
|
+
# void checkAdmitted(SocketChannel ch) throws HttpException;
|
|
13
|
+
# void checkAdmitted(Tour tour) throws HttpException;
|
|
14
|
+
#
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
require 'baykit/bayserver/docker/docker'
|
|
2
|
+
|
|
3
|
+
module Baykit
|
|
4
|
+
module BayServer
|
|
5
|
+
module Docker
|
|
6
|
+
module Port
|
|
7
|
+
include Docker # implements
|
|
8
|
+
|
|
9
|
+
def address()
|
|
10
|
+
raise NotImplementedError()
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def check_admitted(skt)
|
|
14
|
+
raise NotImplementedError()
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def find_city(name)
|
|
18
|
+
raise NotImplementedError()
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def new_transporter(agt, skt)
|
|
22
|
+
raise NotImplementedError()
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def check_admitted(skt)
|
|
26
|
+
raise NotImplementedError()
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def return_protocol_handler(agt, proto_hnd)
|
|
30
|
+
raise NotImplementedError()
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def return_ship(sip)
|
|
34
|
+
raise NotImplementedError()
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require 'baykit/bayserver/docker/docker'
|
|
2
|
+
|
|
3
|
+
module Baykit
|
|
4
|
+
module BayServer
|
|
5
|
+
module Docker
|
|
6
|
+
module Secure
|
|
7
|
+
include Docker # implements
|
|
8
|
+
|
|
9
|
+
#
|
|
10
|
+
# interface
|
|
11
|
+
#
|
|
12
|
+
# void setAppProtocols(String[] protocols);
|
|
13
|
+
#
|
|
14
|
+
# void reloadCert() throws Exception;
|
|
15
|
+
#
|
|
16
|
+
# public Transporter createTransporter();
|
|
17
|
+
#
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
require 'baykit/bayserver/http_exception'
|
|
2
|
+
|
|
3
|
+
require 'baykit/bayserver/train/train'
|
|
4
|
+
require 'baykit/bayserver/tours/req_content_handler'
|
|
5
|
+
|
|
6
|
+
require 'baykit/bayserver/util/string_util'
|
|
7
|
+
require 'baykit/bayserver/util/http_status'
|
|
8
|
+
|
|
9
|
+
module Baykit
|
|
10
|
+
module BayServer
|
|
11
|
+
module Docker
|
|
12
|
+
module SendFile
|
|
13
|
+
class DirectoryTrain < Baykit::BayServer::Train::Train
|
|
14
|
+
include Baykit::BayServer::Tours::ReqContentHandler # implements
|
|
15
|
+
|
|
16
|
+
include Baykit::BayServer::Agent
|
|
17
|
+
include Baykit::BayServer::Train
|
|
18
|
+
include Baykit::BayServer::Tours
|
|
19
|
+
include Baykit::BayServer::Util
|
|
20
|
+
|
|
21
|
+
attr :path
|
|
22
|
+
attr :available
|
|
23
|
+
attr :abortable
|
|
24
|
+
|
|
25
|
+
def initialize(tur, path)
|
|
26
|
+
super(tur)
|
|
27
|
+
@path = path
|
|
28
|
+
@available = false
|
|
29
|
+
@abortable = true
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def start_tour()
|
|
33
|
+
@tour.req.set_content_handler(self)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
#######################################################
|
|
37
|
+
# Implements Train
|
|
38
|
+
#######################################################
|
|
39
|
+
|
|
40
|
+
def depart()
|
|
41
|
+
begin
|
|
42
|
+
@tour.res.headers.set_content_type("text/html")
|
|
43
|
+
|
|
44
|
+
@tour.res.set_consume_listener do |len, resume|
|
|
45
|
+
if resume
|
|
46
|
+
@available = true
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
@tour.res.send_headers(@tour_id)
|
|
51
|
+
|
|
52
|
+
w = StringIO.new()
|
|
53
|
+
w.write("<html><body><br>")
|
|
54
|
+
|
|
55
|
+
if tour.req.uri != "/"
|
|
56
|
+
print_link(w, "../")
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
Dir.foreach(path) do |f|
|
|
60
|
+
if File.directory?(f)
|
|
61
|
+
if f != "." && f != ".."
|
|
62
|
+
print_link(w, "#{f}/")
|
|
63
|
+
end
|
|
64
|
+
else
|
|
65
|
+
print_link(w, f)
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
w.write("</body></html>")
|
|
70
|
+
bytes = StringUtil.to_bytes(w.string())
|
|
71
|
+
w.close()
|
|
72
|
+
|
|
73
|
+
BayLog.trace("%s Directory: send contents: len=%d", @tour, bytes.length)
|
|
74
|
+
@available = tour.res.send_content(@tour_id, bytes, 0, bytes.length)
|
|
75
|
+
|
|
76
|
+
while !@available
|
|
77
|
+
sleep(0.1)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
tour.res.end_content(@tour_id)
|
|
81
|
+
|
|
82
|
+
rescue IOError => e
|
|
83
|
+
BayLog.error_e(e)
|
|
84
|
+
raise HttpException.new(HttpStatus.INTERNAL_SERVER_ERROR, e)
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
#######################################################
|
|
89
|
+
# Implements ReqContentHandler
|
|
90
|
+
#######################################################
|
|
91
|
+
|
|
92
|
+
def on_read_content(tur, buf, start, len)
|
|
93
|
+
BayLog.debug("%s onReadContent(Ignore) len=%d", tur, len)
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def on_end_content(tur)
|
|
97
|
+
BayLog.debug("%s endContent", tur)
|
|
98
|
+
@abortable = false
|
|
99
|
+
|
|
100
|
+
if !TrainRunner.post(self)
|
|
101
|
+
raise HttpException.new(HttpStatus.SERVICE_UNAVAILABLE, "TourRunner is busy")
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def on_abort(tur)
|
|
106
|
+
BayLog.debug("%s onAbort aborted=%s", tur, @abortable)
|
|
107
|
+
return @abortable
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
def print_link(w, path)
|
|
112
|
+
w.write("<a href='#{path}'>")
|
|
113
|
+
w.write(path)
|
|
114
|
+
w.write("</a><br>")
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
require 'baykit/bayserver/tours/req_content_handler'
|
|
2
|
+
require 'baykit/bayserver/tours/tour'
|
|
3
|
+
|
|
4
|
+
module Baykit
|
|
5
|
+
module BayServer
|
|
6
|
+
module Docker
|
|
7
|
+
module SendFile
|
|
8
|
+
class FileContentHandler
|
|
9
|
+
include Baykit::BayServer::Tours::ReqContentHandler # implements
|
|
10
|
+
include Baykit::BayServer::Tours
|
|
11
|
+
|
|
12
|
+
attr :path
|
|
13
|
+
attr :abortable
|
|
14
|
+
|
|
15
|
+
def initialize(path)
|
|
16
|
+
@path = path
|
|
17
|
+
@abortable = true
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
######################################################
|
|
21
|
+
# Implements ReqContentHandler
|
|
22
|
+
######################################################
|
|
23
|
+
|
|
24
|
+
def on_read_content(tur, buf, start, len)
|
|
25
|
+
BayLog.debug("%s onReadReqContent(Ignore) len=%d", tur, len)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def on_end_content(tur)
|
|
29
|
+
BayLog.debug("%s endReqContent", tur)
|
|
30
|
+
tur.res.send_file(Tour::TOUR_ID_NOCHECK, path, tur.res.charset, true)
|
|
31
|
+
@abortable = false
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def on_abort(tur)
|
|
35
|
+
BayLog.debug("%s onAbortReq aborted=%s", tur, abortable)
|
|
36
|
+
return abortable
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
require 'baykit/bayserver/bcf/package'
|
|
2
|
+
require 'baykit/bayserver/tours/package'
|
|
3
|
+
require 'baykit/bayserver/docker/base/club_base'
|
|
4
|
+
require 'baykit/bayserver/docker/send_file/file_content_handler'
|
|
5
|
+
require 'baykit/bayserver/docker/send_file/directory_train'
|
|
6
|
+
|
|
7
|
+
require 'baykit/bayserver/util/string_util'
|
|
8
|
+
|
|
9
|
+
module Baykit
|
|
10
|
+
module BayServer
|
|
11
|
+
module Docker
|
|
12
|
+
module SendFile
|
|
13
|
+
class SendFileDocker < Baykit::BayServer::Docker::Base::ClubBase
|
|
14
|
+
include Baykit::BayServer::Bcf
|
|
15
|
+
include Baykit::BayServer::Util
|
|
16
|
+
include Baykit::BayServer::Agent
|
|
17
|
+
include Baykit::BayServer::Tours
|
|
18
|
+
|
|
19
|
+
attr :list_files
|
|
20
|
+
|
|
21
|
+
######################################################
|
|
22
|
+
# Implements DockerBase
|
|
23
|
+
######################################################
|
|
24
|
+
|
|
25
|
+
def init(elm, parent)
|
|
26
|
+
super
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def init_key_val(kv)
|
|
30
|
+
case kv.key.downcase
|
|
31
|
+
when "listfiles"
|
|
32
|
+
@list_files = StringUtil.parse_bool(kv.value)
|
|
33
|
+
else
|
|
34
|
+
return super
|
|
35
|
+
end
|
|
36
|
+
return true
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def arrive(tur)
|
|
40
|
+
rel_path = tur.req.rewritten_uri != nil ? tur.req.rewritten_uri : tur.req.uri
|
|
41
|
+
if StringUtil.set?(tur.town.name)
|
|
42
|
+
rel_path = rel_path[tur.town.name.length .. -1]
|
|
43
|
+
pos = rel_path.index('?')
|
|
44
|
+
if pos != nil
|
|
45
|
+
rel_path = rel_path[0, pos]
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
begin
|
|
49
|
+
rel_path = URLDecoder.decode(rel_path, tur.req.charset)
|
|
50
|
+
rescue Encoding::UndefinedConversionError => e
|
|
51
|
+
BayLog.warn("%s Cannot decode request path: %s (encoding=%s)", tur, rel_path, tur.req.charset)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
real = "#{tur.town.location}/#{rel_path}"
|
|
55
|
+
|
|
56
|
+
if File.directory?(real) && @list_files
|
|
57
|
+
train = DirectoryTrain.new(tur, real)
|
|
58
|
+
train.start_tour()
|
|
59
|
+
else
|
|
60
|
+
handler = FileContentHandler.new(real)
|
|
61
|
+
tur.req.set_content_handler(handler)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
require 'baykit/bayserver/docker/docker'
|
|
2
|
+
|
|
3
|
+
module Baykit
|
|
4
|
+
module BayServer
|
|
5
|
+
module Docker
|
|
6
|
+
module Town
|
|
7
|
+
include Docker # implements
|
|
8
|
+
MATCH_TYPE_MATCHED = 1
|
|
9
|
+
MATCH_TYPE_NOT_MATCHED = 2
|
|
10
|
+
MATCH_TYPE_CLOSE = 3
|
|
11
|
+
|
|
12
|
+
#
|
|
13
|
+
# interface
|
|
14
|
+
#
|
|
15
|
+
# String name();
|
|
16
|
+
# City city();
|
|
17
|
+
# String location();
|
|
18
|
+
# String welcomeFile();
|
|
19
|
+
# ArrayList<Club> clubs();
|
|
20
|
+
# String reroute(String uri);
|
|
21
|
+
# MatchType matches(String uri);
|
|
22
|
+
# void checkAdmitted(Tour tour) throws HttpException;
|
|
23
|
+
# String reroute(String uri);
|
|
24
|
+
# MatchType matches(String uri);
|
|
25
|
+
# void checkAdmitted(Tour tour) throws HttpException;
|
|
26
|
+
#
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
require 'baykit/bayserver/tours/req_content_handler'
|
|
2
|
+
|
|
3
|
+
module Baykit
|
|
4
|
+
module BayServer
|
|
5
|
+
module Docker
|
|
6
|
+
module Warp
|
|
7
|
+
class WarpData
|
|
8
|
+
include Baykit::BayServer::Tours::ReqContentHandler # implements
|
|
9
|
+
include Baykit::BayServer::Util
|
|
10
|
+
|
|
11
|
+
attr :warp_ship
|
|
12
|
+
attr :warp_ship_id
|
|
13
|
+
attr :warp_id
|
|
14
|
+
attr :req_headers
|
|
15
|
+
attr :res_headers
|
|
16
|
+
attr :started
|
|
17
|
+
attr :ended
|
|
18
|
+
|
|
19
|
+
def initialize(warp_ship, warp_id)
|
|
20
|
+
@warp_ship = warp_ship
|
|
21
|
+
@warp_ship_id = warp_ship.id()
|
|
22
|
+
@warp_id = warp_id
|
|
23
|
+
@req_headers = Headers.new
|
|
24
|
+
@res_headers = Headers.new
|
|
25
|
+
@started = false
|
|
26
|
+
@ended = false
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def on_read_content(tur, buf, start, len)
|
|
30
|
+
BayLog.debug("%s Read req content tur=%s len=%d", @warp_ship, tur, len);
|
|
31
|
+
@warp_ship.check_ship_id(@warp_ship_id)
|
|
32
|
+
max_len = @warp_ship.protocol_handler.max_req_packet_data_size()
|
|
33
|
+
pos = 0
|
|
34
|
+
while pos < len
|
|
35
|
+
post_len = len - pos
|
|
36
|
+
if post_len > max_len
|
|
37
|
+
post_len = max_len
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
tur_id = tur.id()
|
|
41
|
+
@warp_ship.warp_handler.post_warp_contents(
|
|
42
|
+
tur,
|
|
43
|
+
buf,
|
|
44
|
+
start + pos,
|
|
45
|
+
post_len) do
|
|
46
|
+
tur.req.consumed(tur_id, len)
|
|
47
|
+
end
|
|
48
|
+
pos += max_len
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def on_end_content(tur)
|
|
53
|
+
BayLog.debug("%s End req content tur=%s", @warp_ship, tur)
|
|
54
|
+
@warp_ship.warp_handler.post_warp_end(tur)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def on_abort(tur)
|
|
58
|
+
BayLog.debug("%s on req abort tur=%s", @warp_ship, tur)
|
|
59
|
+
@warp_ship.check_ship_id(@warp_ship_id)
|
|
60
|
+
@warp_ship.abort(@warp_ship_id)
|
|
61
|
+
return false # not aborted immediately
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def start
|
|
66
|
+
if !@started
|
|
67
|
+
@warp_ship.protocol_handler.command_packer.flush(@warp_ship)
|
|
68
|
+
BayLog.debug("%s Start Warp tour", self)
|
|
69
|
+
@started = true
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def to_s
|
|
74
|
+
return "#{@warp_ship} wtur##{@warp_id}"
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def self.get(tur)
|
|
78
|
+
return tur.req.content_handler
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|