-
Notifications
You must be signed in to change notification settings - Fork 114
Review cpp-netlib for full implementation #155
Comments
Tried to assign to two people, forgot that doesn't work 😄 |
* C++11 (minimum) refactor * Create/rewrite appropriate classes - Improve class Reseed - Create classes SU3, ZIP, X509, and HTTP - Refactoring: move the mess of local variables into a POD type - Use spec-identifiable constants instead of raw numbers - Move class ZIP to core/util/ZIP.{h,cpp} - Move class X509 to core/crypto/X509.{h,cpp} * Design rewrite - Create better reseed abstraction - See constructors, design, and interface of class Reseed/SU3/ZIP/X509 - Separate parsing: - Class SU3 parsing from X.509/signature parsing and from class ZIP parsing - Rewrite/refactor related class NetDb code - Refactor: get rid of -1 return values, use bool and adjust related code * Create/implement stream abstraction - Stream wrapper for strongly-typed classes * Abstract CryptoPP from class ZIP and class X509 - Pimpl ZIP decompression - Pimpl X.509 and separate cert processing from decoding - Ensure uncaught exceptions are caught - Cleanup pimpl-related directory structure * Feature: manual reseed: create/implement an overloaded --reseed-from run-time switch - Handles reseeding from file - Handles reseeding from specified URL * Feature: create/implement --reseed-skip-ssl-check run-time switch - Allows connecting to servers with certificates not shipped with Kovri (such as a local server) - Users can still put their self-signed cert in KOVRI_DATA_DIR/certificates/su3 and skip this switch if desired * HTTP: minor design refactor to accommodate new class Reseed design - Download function stores results in member stream, returns bool - HTTP response is stored in member variable - Logic design refactor to fix erroneous error response and help with debugging * Spec review - Ensure that SU3 implementation meets requirements and provides a minimal interface to implement future content-types and/or specifications (ex. for auto-update or news feed) - Ensure that ZIP meets minimum requirements for our use-case * Create secure sanity checks * Create unit tests (referencing #7) - Tests for class SU3, ZIP, and X509 - Cleanup unit-test directory structure and rename appropriate files - Adjust CMake accordingly * Document code - Extensive documentation where possible * Resolve any preexisting TODO's * General improvements and rewrites
Ah, GitHub finally implemented multiple assignees to issues. Assigning both myself and @EinMByte. |
cpp-netlib's master branch presently fails to build on Arch because of deprecated Asio/SSLv3 symbols (but this is known). Building from either 0.13-release, 0.12-release, or 0.12-devel is successful. Building from tagged |
* References monero-project#48, monero-project#129, monero-project#155 * Also, cleanup/clarify make + docs
Major: - Implementation improvements * HTTP: download impl * HTTP: URI handling impl * HTTP: response header handling for clearnet * AddressBook: unhook in-net HTTP impl (now in class HTTP) * Add documentation Medium: - If default subscription file does not exist, create/save after downloading from publisher Minor: - Adjust related reseed and tunnel code for class HTTP - Update variables names to accurately reflect purpose - Update log messages for accuracy - Update address book flow narrative - Update/improve HTTP unit-test References: - monero-project#305 (parent ticket) - monero-project#168 and monero-project#155 (both in terms of HTTP/S) - monero-project#154 and monero-project#48 (we now have a multi-purpose HTTP/S download impl) Notes: - My apologies for not keeping this commit atomic. Bigger design work can be harder to keep atomic (especially if one wants new features to work before committing) - This commit has been successfully tested and all unit-tests pass
As noted in #718, cpp-netlib development is not nearly where it should be (in terms of activity) for me to gain enough confidence in the future of their library. Though the abstract messaging potential is there, and the library has great potential, I don't want to put any potential risk for backtracking onto kovri's future. Our current impl of cpp-netlib is suitable to our present needs and need not be expanded at this present time. |
By submitting this issue, I confirm the following:
Place an X inside the bracket to confirm
In today's meeting, we agreed to move on cpp-netlib pending more review and provided that we are able to make certain adjustments to fit our needs. Excerpt from meeting:
The text was updated successfully, but these errors were encountered: