straight-server 0.2.3 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +2 -2
- data/Gemfile +21 -16
- data/Gemfile.lock +44 -30
- data/Gemfile.travis +15 -16
- data/README.md +66 -47
- data/VERSION +1 -1
- data/db/migrations/011_add_callback_data_to_orders.rb +1 -1
- data/db/migrations/012_add_address_provider.rb +11 -0
- data/db/migrations/013_add_address_derivation_scheme.rb +11 -0
- data/db/migrations/014_pubkey_null_address_provider_not_null.rb +8 -0
- data/db/migrations/015_add_amount_paid_to_orders.rb +11 -0
- data/db/migrations/016_add_new_params_to_orders.rb +13 -0
- data/db/migrations/017_add_test_mode_to_gateways.rb +11 -0
- data/db/migrations/018_add_test_keychain_id_to_gateways.rb +11 -0
- data/db/migrations/019_add_test_pubkey_to_gateways.rb +11 -0
- data/db/migrations/020_add_test_mode_to_orders.rb +11 -0
- data/db/schema.rb +11 -1
- data/lib/straight-server.rb +11 -9
- data/lib/straight-server/config.rb +28 -18
- data/lib/straight-server/gateway.rb +167 -87
- data/lib/straight-server/initializer.rb +13 -7
- data/lib/straight-server/order.rb +39 -17
- data/lib/straight-server/orders_controller.rb +71 -21
- data/lib/straight-server/random_string.rb +3 -13
- data/lib/straight-server/server.rb +3 -4
- data/lib/straight-server/signature_validator.rb +69 -0
- data/lib/straight-server/thread.rb +19 -4
- data/lib/straight-server/throttler.rb +7 -13
- data/lib/tasks/db.rake +1 -1
- data/spec/.straight/config.yml +8 -3
- data/spec/.straight/default_test_last_keychain_id +1 -0
- data/spec/factories.rb +2 -1
- data/spec/lib/gateway_spec.rb +222 -94
- data/spec/lib/initializer_spec.rb +1 -1
- data/spec/lib/order_spec.rb +26 -7
- data/spec/lib/orders_controller_spec.rb +65 -6
- data/spec/lib/signature_validator_spec.rb +72 -0
- data/spec/lib/thread_spec.rb +16 -0
- data/spec/lib/throttle_spec.rb +2 -2
- data/spec/spec_helper.rb +17 -22
- data/straight-server.gemspec +31 -12
- data/templates/config.yml +19 -10
- metadata +52 -11
data/templates/config.yml
CHANGED
@@ -2,13 +2,10 @@
|
|
2
2
|
# useful when your run many gateways on the same server.
|
3
3
|
gateways_source: config
|
4
4
|
|
5
|
+
# Used for:
|
6
|
+
# - scoping Redis keys
|
5
7
|
environment: development
|
6
8
|
|
7
|
-
# This enabled order counting using Redis. Please see he README file for details.
|
8
|
-
# You're gonna need to install redis-server and redis rubygem on your system and provide
|
9
|
-
# redis-server connection details below.
|
10
|
-
count_orders: false
|
11
|
-
|
12
9
|
# When you display a payment window to a user, he has some time to pay. But what if a
|
13
10
|
# transaction has been made in the last seconds and Straight didn't have time to detect it?
|
14
11
|
# This just adds a little bit more time to each expiration period.
|
@@ -24,6 +21,9 @@ expiration_overtime: 30
|
|
24
21
|
# technically receive the money, but it's never detected by the wallet.
|
25
22
|
reuse_address_orders_threshold: 20
|
26
23
|
|
24
|
+
# Comment out to disable orders counting.
|
25
|
+
count_orders: true
|
26
|
+
|
27
27
|
# Uncomment this if you want to limit orders creation rate.
|
28
28
|
# For example, if user's cat makes more than 21 new orders during 60 seconds (from the same IP and Widget),
|
29
29
|
# any user with this IP will be unable to create more orders via this Widget during those 60 seconds
|
@@ -33,11 +33,9 @@ reuse_address_orders_threshold: 20
|
|
33
33
|
# period: 60 # in seconds
|
34
34
|
# ip_ban_duration: 300 # in seconds
|
35
35
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
#host: localhost
|
40
|
-
#port: 6380
|
36
|
+
redis:
|
37
|
+
host: localhost
|
38
|
+
port: 6379
|
41
39
|
#db: null # change to 1, 2, 3 etc. or leave as is
|
42
40
|
#password: null # if no password is needed, leave as is
|
43
41
|
|
@@ -52,6 +50,9 @@ gateways:
|
|
52
50
|
default_currency: 'BTC'
|
53
51
|
orders_expiration_period: 600 # seconds
|
54
52
|
|
53
|
+
# address_provider: 'Bip32'
|
54
|
+
# address_derivation_scheme: 'm/0/n'
|
55
|
+
|
55
56
|
# This options decides whether we should also check the DB for status updates first
|
56
57
|
# when we check order status. That is, if we're tracking an order and this option
|
57
58
|
# is set to true, it first fetches the fields from the local DB, sees if the status has changed there,
|
@@ -74,6 +75,8 @@ gateways:
|
|
74
75
|
# If it's set to false, then it won't be possible to create a new order, but
|
75
76
|
# it will keep checking on the existing ones.
|
76
77
|
active: true
|
78
|
+
# If this option set to true, gateway using TESTNET
|
79
|
+
test_mode: true
|
77
80
|
|
78
81
|
# These adapters are used to query the blockchain. If the first one fails, the second one is tried and
|
79
82
|
# so on. The adapters are generally looked up as subclasses of Straight::Blockchain::Adapter
|
@@ -82,8 +85,14 @@ gateways:
|
|
82
85
|
blockchain_adapters:
|
83
86
|
- BlockchainInfo # uses Straight::Blockchain::BlockchainInfoAdapter
|
84
87
|
- Mycelium # uses Straight::Blockchain::MyceliumAdapter
|
88
|
+
# - InsightAdapter # uses Straight::Blockchain::InsightAdapter
|
85
89
|
# - MyCustomClass::MyCustomBlockchainAdapter
|
86
90
|
|
91
|
+
# If Insight adapter is enabled, it is necessary to provide a url for it.
|
92
|
+
# insight_url: "https://localhost/api"
|
93
|
+
# You can also set a testnet insight url to use:
|
94
|
+
# insight_test_url: "https://test.localhost/api"
|
95
|
+
|
87
96
|
logmaster:
|
88
97
|
log_level: INFO # Wise to change to WARN for production
|
89
98
|
file: straight.log
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: straight-server
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Roman Snitko
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-07-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: straight
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 1.0.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
26
|
+
version: 1.0.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: satoshi-unit
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 0.1.8
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 0.1.8
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: goliath
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -123,19 +123,47 @@ dependencies:
|
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
126
|
+
name: redis
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- -
|
129
|
+
- - ">="
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version: 0
|
131
|
+
version: '0'
|
132
132
|
type: :runtime
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
|
-
- -
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: btcruby
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :runtime
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: byebug
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
137
158
|
- !ruby/object:Gem::Version
|
138
|
-
version: 0
|
159
|
+
version: '0'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
139
167
|
- !ruby/object:Gem::Dependency
|
140
168
|
name: bundler
|
141
169
|
requirement: !ruby/object:Gem::Requirement
|
@@ -218,6 +246,15 @@ files:
|
|
218
246
|
- db/migrations/009_add_hashed_id_to_gateways.rb
|
219
247
|
- db/migrations/010_add_address_reusability_orders.rb
|
220
248
|
- db/migrations/011_add_callback_data_to_orders.rb
|
249
|
+
- db/migrations/012_add_address_provider.rb
|
250
|
+
- db/migrations/013_add_address_derivation_scheme.rb
|
251
|
+
- db/migrations/014_pubkey_null_address_provider_not_null.rb
|
252
|
+
- db/migrations/015_add_amount_paid_to_orders.rb
|
253
|
+
- db/migrations/016_add_new_params_to_orders.rb
|
254
|
+
- db/migrations/017_add_test_mode_to_gateways.rb
|
255
|
+
- db/migrations/018_add_test_keychain_id_to_gateways.rb
|
256
|
+
- db/migrations/019_add_test_pubkey_to_gateways.rb
|
257
|
+
- db/migrations/020_add_test_mode_to_orders.rb
|
221
258
|
- db/schema.rb
|
222
259
|
- examples/client/client.dart
|
223
260
|
- examples/client/client.html
|
@@ -231,11 +268,13 @@ files:
|
|
231
268
|
- lib/straight-server/orders_controller.rb
|
232
269
|
- lib/straight-server/random_string.rb
|
233
270
|
- lib/straight-server/server.rb
|
271
|
+
- lib/straight-server/signature_validator.rb
|
234
272
|
- lib/straight-server/thread.rb
|
235
273
|
- lib/straight-server/throttler.rb
|
236
274
|
- lib/straight-server/utils/hash_string_to_sym_keys.rb
|
237
275
|
- lib/tasks/db.rake
|
238
276
|
- spec/.straight/config.yml
|
277
|
+
- spec/.straight/default_test_last_keychain_id
|
239
278
|
- spec/.straight/server_secret
|
240
279
|
- spec/factories.rb
|
241
280
|
- spec/fixtures/addons.yml
|
@@ -244,6 +283,8 @@ files:
|
|
244
283
|
- spec/lib/initializer_spec.rb
|
245
284
|
- spec/lib/order_spec.rb
|
246
285
|
- spec/lib/orders_controller_spec.rb
|
286
|
+
- spec/lib/signature_validator_spec.rb
|
287
|
+
- spec/lib/thread_spec.rb
|
247
288
|
- spec/lib/throttle_spec.rb
|
248
289
|
- spec/lib/utils/hash_string_to_sym_keys.rb
|
249
290
|
- spec/spec_helper.rb
|