ji2p-router 0.0.4-universal-java-11

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: eb4e98090bd2f32eb863f1878a18a74c7b8829b55331800bd25540282fbfc837
4
+ data.tar.gz: ada31782392c05b36dd0924351e89d35f0cc00f8d6cb88fc9d82e06867e9b4ec
5
+ SHA512:
6
+ metadata.gz: 1240e16a6b25b564e3e13b01fb6e2bff12f4e6ceeb0234a757669fad550b2c54bf07be8991cb6edc9a75b784c1236b68b5df8018309b7cabf48560ca6f75f217
7
+ data.tar.gz: 62181f53a71f3d4fe08a1098e7ca9050561356d69036636a80f3f90e9365be4019e2a91187276c3fc99f868b0261006da2d4a69b6e66e5c857cf3810f5d1a90e
@@ -0,0 +1,3 @@
1
+ module Ji2p
2
+ require File.expand_path('ji2p/server.rb', __dir__)
3
+ end
@@ -0,0 +1,10 @@
1
+ module Ji2p
2
+ module Server
3
+ autoload :Api, File.expand_path('server/api.rb', __dir__)
4
+ autoload :Database, File.expand_path('server/database.rb', __dir__)
5
+ autoload :HTTP, File.expand_path('server/http.rb', __dir__)
6
+ autoload :HttpServer, File.expand_path('server/http_server.rb', __dir__)
7
+ autoload :Launcher, File.expand_path('server/launcher.rb', __dir__)
8
+ autoload :Models, File.expand_path('server/models.rb', __dir__)
9
+ end
10
+ end
@@ -0,0 +1,14 @@
1
+ require 'sinatra'
2
+ require 'rack'
3
+ require 'puma'
4
+
5
+ module Ji2p::Server
6
+ class Api
7
+ def initialize
8
+ configure { set :server, :puma }
9
+
10
+ #Faye::WebSocket.load_adapter('puma')
11
+ @puma = Rack::Handler.get('puma')
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,69 @@
1
+ require 'rack'
2
+
3
+ module Ji2p::Server
4
+ class HTTP
5
+ VERSION = "HTTP/1.1" unless defined? VERSION
6
+ CRLF = "\r\n" unless defined? CRLF
7
+
8
+ def initialize(socket, application)
9
+ @socket = socket
10
+ @application = application
11
+ end
12
+
13
+ def parse
14
+ matches = /\A(?<method>\S+)\s+(?<uri>\S+)\s+(?<version>\S+)#{CRLF}\Z/.match(@socket.readline)
15
+ uri = URI.parse(matches[:uri])
16
+
17
+ env = {
18
+ "rack.errors" => $stderr,
19
+ "rack.version" => Rack::VERSION,
20
+ "rack.url_scheme" => uri.scheme || "http",
21
+ "REQUEST_METHOD" => matches[:method],
22
+ "REQUEST_URI" => matches[:uri],
23
+ "HTTP_VERSION" => matches[:version],
24
+ "QUERY_STRING" => uri.query || "",
25
+ "SERVER_PORT" => uri.port || 80,
26
+ "SERVER_NAME" => uri.host || "localhost",
27
+ "PATH_INFO" => uri.path || "",
28
+ "SCRIPT_NAME" => "",
29
+ }
30
+
31
+ while matches = /\A(?<key>[^:]+):\s*(?<value>.+)#{CRLF}\Z/.match(hl = @socket.readline)
32
+ case matches[:key]
33
+ when Rack::ContentType then env["CONTENT_TYPE"] = matches[:value]
34
+ when Rack::ContentLength then env["CONTENT_LENGTH"] = Integer(matches[:value])
35
+ else env["HTTP_" + matches[:key].tr("-", "_").upcase] ||= matches[:value]
36
+ end
37
+ end
38
+
39
+ env["rack.input"] = StringIO.new(@socket.read(env["CONTENT_LENGTH"] || 0))
40
+
41
+ return env #.map { |_,v| String.new v }
42
+ end
43
+
44
+ def handle
45
+ env = parse
46
+
47
+ status, headers, body = @application.call(env)
48
+
49
+ time = Time.now.httpdate
50
+
51
+ @socket.write "#{env['HTTP_VERSION']} #{status} #{Rack::Utils::HTTP_STATUS_CODES.fetch(status.to_i) { 'UNKNOWN' }}#{CRLF}"
52
+ @socket.write "Date: #{time}#{CRLF}"
53
+ @socket.write "Connection: close#{CRLF}"
54
+
55
+ headers.each do |key, value|
56
+ @socket.write "#{key}: #{value}#{CRLF}"
57
+ end
58
+
59
+ @socket.write(CRLF)
60
+
61
+ body.each do |chunk|
62
+ @socket.write(chunk)
63
+ end
64
+
65
+ Ji2p.logger.info("[#{time}] '#{env["REQUEST_METHOD"]} #{env["REQUEST_URI"]} #{env["HTTP_VERSION"]}' #{status}")
66
+ end
67
+
68
+ end
69
+ end
@@ -0,0 +1,37 @@
1
+ require_relative 'http.rb'
2
+
3
+ module Ji2p::Server
4
+ class HttpServer
5
+
6
+ def initialize(application, socket)
7
+ @application = application
8
+ @socket = socket
9
+ end
10
+
11
+ def run
12
+ loop do
13
+ begin
14
+ monitor
15
+ rescue Interrupt
16
+ Ji2p.logger.log("INTERRUPTED")
17
+ return
18
+ end
19
+ end
20
+ end
21
+
22
+ def monitor
23
+ #selections, = IO.select(@sockets)
24
+ #io, = selections
25
+ io = @socket
26
+
27
+ begin
28
+ socket = io.accept
29
+ http = Ji2p::Server::HTTP::new(socket, @application)
30
+ http.handle
31
+ ensure
32
+ socket.close
33
+ end
34
+ end
35
+
36
+ end
37
+ end
@@ -0,0 +1,4 @@
1
+ module Ji2p::Server
2
+ module Initializer
3
+ end
4
+ end
@@ -0,0 +1,40 @@
1
+ require 'rack'
2
+
3
+ module Ji2p::Server
4
+ class Launcher
5
+
6
+ def initialize privateKeyData=nil
7
+ generate_keypair if privateKeyData.nil?
8
+ load_keypair privateKeyData unless privateKeyData.nil?
9
+ end
10
+
11
+ protected
12
+
13
+ def generate_keypair
14
+ @keypair = Ji2p::Control::Keypair.generate!
15
+ end
16
+
17
+ def load_keypair privateKeyData
18
+ @keypair = Ji2p::Control::Keypair.load_from_stream! StringIO.new(privateKeyData)
19
+ end
20
+
21
+ end
22
+
23
+ class RackConfigLauncher < Launcher
24
+
25
+ def initialize privateKeyData, rackfile
26
+ super(privateKeyData)
27
+ @rack_config = rackfile.dup
28
+ end
29
+
30
+ def rack_application
31
+ raw = File.read(@rack_config)
32
+ builder = <<~BUILDER
33
+ Rack::Builder.new do
34
+ #{raw}
35
+ end
36
+ BUILDER
37
+ eval(builder, nil, @rack_config)
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,20 @@
1
+ require 'fileutils'
2
+
3
+ module Ji2p
4
+ module Startup
5
+ class ClientApplication
6
+ java_import 'net.i2p.I2PAppContext'
7
+
8
+ def initialize name
9
+ @name = name
10
+ @ctx = Java::NetI2p::I2PAppContext.getGlobalContext
11
+ FileUtils.mkdir_p plugin_path unless File.exists? plugin_path
12
+ end
13
+
14
+ def plugin_path
15
+ @proot_path ||= File.expand_path("plugins/#{@name}", @ctx.getAppDir.getAbsolutePath)
16
+ end
17
+ end
18
+
19
+ end
20
+ end
@@ -0,0 +1,61 @@
1
+ require 'sinatra'
2
+ require 'sinatra/base'
3
+ #require 'sinatra/config_file'
4
+ require 'sinatra/contrib'
5
+ require 'sinatra/cookies'
6
+ require 'sinatra/json'
7
+ require 'sinatra/namespace'
8
+ require 'sinatra/reloader'
9
+ #require 'sinatra/webdav'
10
+ require 'better_errors'
11
+ require 'binding_of_caller'
12
+
13
+ module Ji2p
14
+ module Startup
15
+ class SinatraApp < Sinatra::Base
16
+ APP_ROOT = File.expand_path('../..', __dir__) unless defined? APP_ROOT
17
+
18
+ use Rack::Session::Cookie, :key => 'rack.session',
19
+ :domain => 'localhost',
20
+ :path => '/',
21
+ :expire_after => 2592000, # In seconds
22
+ :secret => 'kake'
23
+
24
+ set :environments, %w{development test production staging}
25
+ enable :sessions, :logging
26
+ set :sessions, true
27
+ set :logging, true
28
+ set :server, %w[puma webrick]
29
+ set :app_file, __FILE__
30
+ set :public_folder, Proc.new { File.join(APP_ROOT, 'public') }
31
+ set :protection, :session => true
32
+ unless ENV['APP_ENV'].nil?
33
+ set :environment, ENV['APP_ENV']
34
+ else
35
+ set :environment, :development
36
+ end
37
+
38
+
39
+ configure :development do
40
+ register Sinatra::Reloader
41
+
42
+ use BetterErrors::Middleware
43
+ BetterErrors.application_root = APP_ROOT
44
+
45
+ set :reload_stuff, true
46
+ end
47
+
48
+ register Sinatra::Namespace
49
+ #register Sinatra::ConfigFile
50
+
51
+ helpers Sinatra::Cookies
52
+
53
+ set :show_exceptions, false
54
+
55
+ get '/' do
56
+ json :sinatra => { :status => 'OK', :request => request.env.to_json }
57
+ end
58
+
59
+ end
60
+ end
61
+ end
metadata ADDED
@@ -0,0 +1,166 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ji2p-router
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.4
5
+ platform: universal-java-11
6
+ authors:
7
+ - Mikal Villa
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-11-23 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '2.0'
19
+ name: bundler
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.0'
27
+ - !ruby/object:Gem::Dependency
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ name: jar-dependencies
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '13.0'
47
+ name: rake
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '13.0'
55
+ - !ruby/object:Gem::Dependency
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '2.0'
61
+ name: warbler
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '2.0'
69
+ - !ruby/object:Gem::Dependency
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ name: awesome_print
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ name: rspec
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ name: pry
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '3.3'
117
+ name: ruby-maven
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '3.3'
125
+ description: JRuby interface for I2P, sub-gem to control the router process
126
+ email: mikalv@mikalv.net
127
+ executables: []
128
+ extensions: []
129
+ extra_rdoc_files: []
130
+ files:
131
+ - lib/ji2p-server.rb
132
+ - lib/ji2p/server.rb
133
+ - lib/ji2p/server/api.rb
134
+ - lib/ji2p/server/http.rb
135
+ - lib/ji2p/server/http_server.rb
136
+ - lib/ji2p/server/initializer.rb
137
+ - lib/ji2p/server/launcher.rb
138
+ - lib/ji2p/startup/client_application.rb
139
+ - lib/ji2p/startup/sinatra_app.rb
140
+ homepage: https://github.com/mikalv/ji2p
141
+ licenses:
142
+ - Apache-2.0
143
+ metadata:
144
+ allowed_push_host: https://rubygems.org
145
+ post_install_message: Thanks for installing!
146
+ rdoc_options: []
147
+ require_paths:
148
+ - lib
149
+ required_ruby_version: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ required_rubygems_version: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ requirements:
160
+ - jar net.i2p, i2p, 0.9.43
161
+ - jar net.i2p, router, 0.9.43
162
+ rubygems_version: 3.0.6
163
+ signing_key:
164
+ specification_version: 4
165
+ summary: JRuby interface for I2P
166
+ test_files: []