Commit Graph

169 Commits

Author SHA1 Message Date
eupn 249fe03d5c Remove needless lifetimes (#2845)
* Remove lifetimes that could be elided

* rustfmt
2019-05-25 17:13:36 +01:00
hashmap 9ab23f6eef Implement graceful shutdown (#2812)
* Remove stop status mutex
* remove some deadlocks
* Rewrite stop channel handling
* fix deadlock in peers object
* add missing test fixes
2019-05-15 08:51:35 -07:00
jaspervdm 884851cdeb Modifiy visibility for request functions (#2826) 2019-05-15 14:23:16 +01:00
Antioch Peverell e56cd55980 initial support for kernel data download (#2765)
* initial support for kernel data download

* fix vec backend for tests

* cleanup after rebase
2019-05-14 17:17:38 +01:00
Antioch Peverell fabff51dd3 Header version cleanup (#2809)
* introduce HeaderVersion (was u16) for type safety
cleanup pow ser/deser (version unused)

* fixup tests for HeaderVersion

* validate header version during header deserialization
2019-05-08 21:10:42 +01:00
Antioch Peverell 8d5f73e8f1 Protocol version type safety (#2811)
* add type safety for protocol_version

* cleanup tui for protocol version

* cleanup
2019-05-08 20:51:07 +01:00
Mark Renten c3cd98cae7 Add some better logging for get_outputs_by_id failure states (#2705) 2019-03-25 15:17:47 +01:00
hashmap 3566da2434 Show response code in API client error message (#2683)
It's hard to investigate what happens when an API client error is
printed out
2019-03-23 22:24:45 +01:00
hashmap 7fad5b040f Reduce number of unwwaps in api crate (#2681)
* Reduce number of unwwaps in api crate

* Format use section
2019-03-18 19:34:35 +01:00
hashmap 45d5686310 Set Content-Type in API client (#2680) 2019-03-15 15:13:34 +01:00
Agreene a7a160a5d4 Api documentation fixes (#2646)
* Fix the API documentation for Chain Validate (v1/chain/validate).  It was documented as a POST, but it is actually a GET request, which can be seen in its handler ChainValidationHandler
* Update the API V1 route list response to include the headers and merkleproof routes.  Also clarify that for the chain/outputs route you must specify either byids or byheight to select outputs.
2019-03-10 20:18:21 -07:00
Gary Yu 608973c498 Fix the build warning of deprecated trim_right_matches (#2662) 2019-03-10 20:13:42 -07:00
Antioch Peverell 23cb9e2514 Map peers by ip only (ignoring port unless on loopback ip) (#2540)
* wip

* big refactor, regretting doing this now

* PeerAddr everywhere

* cleanup

* fixup server tests

* peers api working for GET, POST is still WIP

* we can now ban/unban peers by ip only (port optional)
2019-02-18 12:15:32 +00:00
Jeremy Rubin dc6542d82b chore/docs: eliminate warnings (#2583)
* chore: replace trim_right with $ sed -i'' 's/trim_right/trim_end/' **/*.rs

* docs: individually document macros to avoid warning, add TODO to make to_edge hygenic

* docs: document impl_array_newtype macros, refactor: move all impl_array_newtype macro traits into impl_array_netype_index
2019-02-15 15:32:37 -08:00
hashmap ac6ed71abd Refactor API handlers (#2572)
Also add some API tests
2019-02-15 22:17:00 +01:00
Mark Renten 3b74a9ba3f Add content disposition for OK responses (#2545) 2019-02-11 10:54:21 -08:00
Simon B dd1a24dcbc Compiler warnings 20190123 (#2462)
* cleanup compiler warnings: unused imports

* rustfmt

* more compiler warnings
2019-01-25 10:09:32 +00:00
Simon B 87a4e1e2d7 clippy says: unneeded return https://rust-lang.github.io/rust-clippy/master/index.html#needless_return 2019-01-24 01:56:50 +01:00
Simon B 8935f3c7b4 clippy says: use char (',') instead of string (",")
https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern
2019-01-24 01:53:35 +01:00
Yeastplume e93b380a06 Recover outputs from multiple wallets using same seed (#2348)
* adding optional mmr index to key ids

* rustfmt

* update index

* add mmr index to output display

* change restore to match on commit instead of ID, add extensive restore/check tests for multiple wallets using same seed

* rustfmt

* ensure check restores unknown accounts as well

* rustfmt

* remove storage of commit from wallet
2019-01-12 18:39:29 +00:00
Antioch Peverell 27801f6a93 Implement kernel and output features as enums (#2312)
* use enums for kernel and output features

* rustfmt

* add test coverage around deserializing kernel features
2019-01-08 16:07:38 +00:00
Gary Yu c5efb715a5 add https as optional for server api (#2310)
* add tls as optional config for server api
* add error log if start_rest_apis fail
2019-01-07 11:42:11 -08:00
John Tromp f43df5f601 [Floonet] add feature for height locked kernels (#2168)
* add feature for height locked kernels

* add function to compute kernel features appropriate for lock height, and use it

* only sign kernel-features relevant fields; refactor Features

* simplify invalid kernel logic

* remove unused height arg to reward::output and run some rustfmt

* replace nested if/else by match
2018-12-18 18:26:34 +00:00
Quentin Le Sceller ec1713320b Disable authenthication for OPTIONS requests (#2131) 2018-12-11 09:47:10 -08:00
hashmap aedac483f5 Convert to Rust 2018 edition (#2084)
* Convert to Rust 2018 edition

* Update gitignore
2018-12-08 00:59:40 +01:00
Yeastplume b8c8840cec Refactor wallet commands (#2067)
* start wallet command refactoring

* another re-structuring attempt

* rustfmt

* begin splitting up wallet commands

* rustfmt

* clean up wallet arg checking

* rustfmt

* macro for arg parsing

* rustfmt

* factor out init commands

* rustfmt

* move recover to new format

* rustfmt

* add listen command to new format

* rustfmt

* Finish moving commands to new format

* rustfmt

* rustfmt

* propogate errors more cleanly

* rustfmt

* error handling cleanup
2018-12-06 12:04:02 +00:00
Yeastplume 5ba163fa66 Provide wallet 'plugin' architecture (#1983)
* remove receive_coinbase fn from wallet to wallet client

* start moving clients into separate mod

* rustfmt

* move wallet client + start listener into wallet 'clients'

* rustfmt

* refactor API to make it more modular and completely decouple sending

* rustfmt

* further decouple API from sending methods

* rustfmt

* remove wallet to wallet client trait

* rustfmt

* rename / refactor client + adapters

* rustfmt

* add adapter concept

* add midding node_clients dir

* add file and null adapters

* rustfmt

* remove receive from owner api

* factor out receiving slates into trait

* rustfmt

* adding listen trait

* rustfmt

* change listener to use trait

* rustfmt

* add test for file-based exchange

* replace http api send command

* rustfmt

* move controller out of libwallet and into top-level wallet dir

* rustfmt

* add moved controller
2018-11-19 19:47:40 +00:00
Jeff Barg cc63fe4d32 refactor: refactored the API into related handler files (#1914) 2018-11-03 07:46:12 +01:00
hashmap b087325761 Don't die on malformed HTTPS request (#1907)
Fixes #1906
2018-11-01 23:03:32 +08:00
Antioch Peverell 12be191ecd validate root of header MMR when processing headers (during sync and full blocks) (#1836)
validate root of header MMR when processing headers (during sync and full blocks) (#1836)
2018-11-01 09:51:32 +00:00
Ignotus Peverell 46051ee174 improve minimum difficulty handling (#1791)
* rename MIN_DIFFICULTY to UNIT_DIFFICULTY; define Difficulty::unit, fix INITIAL_DIFFICULTY
* improve minimum difficulty handling
* replace all Difficulty::one by ::min
* revert secondary scaling default in HeaderInfo; rename scaling_difficulty; refactor difficulty_data_to_vector
2018-10-27 10:37:44 -07:00
hashmap 456cd0318a Add missing port parameter
Co-Authored-By: haarts <harmaarts@gmail.com>
2018-10-27 10:06:01 +02:00
Harm Aarts 930ceccdba Extent query explaination 2018-10-26 17:18:06 +02:00
Harm Aarts 46c862297d fix: replace wrong query parameter 2018-10-26 17:09:07 +02:00
Harm Aarts 365814303d Replace query parameter values with placeholders 2018-10-26 17:07:46 +02:00
Harm Aarts 322552dde4 fix: add missing API in list
Closes #1653
2018-10-26 15:28:43 +02:00
Ignotus Peverell a42d66efff Merge branch 'master' into unitdiff 2018-10-25 14:20:41 -07:00
eupn 1195071f5b Replace logging backend to log4rs and add log rotation (#1789)
* Replace logging backend to flexi-logger and add log rotation
* Changed flexi_logger to log4rs
* Disable logging level filtering in Root logger
* Support different logging levels for file and stdout
* Don't log messages from modules other than Grin-related
* Fix formatting
* Place backed up compressed log copies into log file directory
* Increase default log file size to 16 MiB
* Add comment to config file on log_max_size option
2018-10-21 13:30:56 -07:00
Gary Yu 0d06561a91 replace stdlib RwLock and Mutex with parking_lot (#1793)
* replace all stdlib RwLock with parking_lot RwLock

* replace stdlib Mutex with parking_lot Mutex

* rustfmt
2018-10-20 08:13:07 +08:00
John Tromp e1b5d7f3c2 revert secondary scaling default in HeaderInfo; rename scaling_difficulty; refactor difficulty_data_to_vector 2018-10-19 21:39:54 +02:00
Quentin Le Sceller 13b2a32092 Add prev root in BlockHeaderPrintable (#1772) 2018-10-17 10:51:50 -04:00
jaspervdm fdd4846f11 Add scaling difficulty field to block http api (#1758) 2018-10-16 09:19:59 -07:00
John Tromp 34646ddf51 [T4] Rename all shiftsize / cuckoo_size to edge_bits and change value for T4 (#1752)
* replace all size_shift / cuckoo_size by edge_bits and change some constants for T4
* replace remaining occurrences of sizeshift
2018-10-15 16:14:23 -07:00
Antioch Peverell 86c1d7683b The Header MMR (One MMR To Rule Them All) (#1716) (#1747)
* header MMR in use within txhashset itself
works with fast sync
not yet in place for initial header sync

* add the (currently unused) sync_head mmr

* use sync MMR during fast sync
rebuild header MMR after we validate full txhashset after download

* support missing header MMR (rebuild as necessary) for legacy nodes

* rename to HashOnly

* cleanup backend.append()

* simplify vec_backend to match simpler append api
2018-10-15 19:24:01 +01:00
Antioch Peverell a676eb1b39 Replace RefCell with RwLock in OneTime (and cleanup Weak usage) (#1694)
* rustfmt

* use RwLock in OneTime (and not RefCell)

* rustfmt

* put weak refs back and cleanup

* rustfmt

* revert weak in adapters
2018-10-09 16:53:57 +01:00
hashmap 8ee8043fd9 Use constant-time token verification in API (#1690)
Fixes #1641. The size of the token can be leaked, even if we pad or cut user's input we can't make it indistinguishable form the normal case.
2018-10-09 09:32:53 -04:00
Antioch Peverell 8cfe9e64ac Remove RwLock around individual peer instances (#1673)
* get rid of RwLock around peer instances

* rustfmt

* rename stuff to live_info

* rustfmt

* serialize into PeerInfoDisplay
limit live_info write lock to peer_info.update()
rename to PeerLiveInfo

* simplify broadcast logic a bit more
connected peers are connected by definition

* return true/false on broadcast so we can send to more peers

* rustfmt

* fix p2p and server tests for PeerInfoDisplay

* commit
2018-10-09 08:27:34 +01:00
hashmap 810a71451b Merge pull request #1665 from yourowncrypto/rustls
Support pem TLS certificates
2018-10-08 12:46:44 +02:00
Antioch Peverell acf61db463 skip rangeproof and kernel signature verification unless we are doing a "full" chain validation (#1678) 2018-10-07 13:39:40 +01:00
hashmap 28b0acc0e6 Support pem TLS certificates
Mostly to support let's encrypt. It requires to switch from native-tls and friends to rustls and friends, which perhap is a good thing per se, rustls looks more modern and for sure more Rusty.
Alternative would be manually convert pkcs12 certificates to pem, which requires openssl tools to be installed and make transparent integration whith let's encrypt much harder (this is out of the scope for now, perhaps in near future)
2018-10-05 17:09:19 +02:00