ji2p-router 0.0.4-universal-java-11

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: []