dont build netstack in CI
additional rust 2024 fixes
fixes
removed temp.rs
first round of cleanup
removed duplicated NS types
moved gateway probe to the monorepo
* feat: unify HTTP client creation and enable domain fronting
Enhanced the base nym_http_api_client to reduce fragmentation and enable domain fronting:
- Added SerializationFormat enum for explicit JSON/bincode choice (no auto-detection)
- Added from_network() method to create clients from NymNetworkDetails with domain fronting
- Added with_bincode() builder method for explicit serialization configuration
- Set Accept header based on serialization preference
- Added deprecation paths for NymApiClient wrapper and nym_api::Client re-export
- Enabled domain fronting support via network defaults feature
This is part of a broader effort to consolidate HTTP client implementations across the codebase,
reducing ~500 lines of wrapper code and providing automatic domain fronting for censorship resistance.
* feat: migrate NymApiClient usage to unified HTTP client
- Wire up domain fronting configuration in NymNetworkDetails
- Implement NymApiClientExt trait for base nym_http_api_client::Client
- Migrate direct NymApiClient usage in multiple components:
- nym-network-monitor
- verloc measurements
- connection tester
- coconut/ecash client
- validator rewarder
- Add Copy derive to ApiUrlConst to enable iteration
- Update error handling and Display implementations
This enables automatic domain fronting for all Nym API calls via the configured CDN front hosts.
* fix: resolve all compilation errors after NymApiClient migration
- Add missing nym-http-api-client dependencies to multiple crates
- Add NymApiClientExt trait imports where needed
- Fix type mismatches from NymApiClient to unified Client
- Add error conversions for NymAPIError in various error enums
- Implement missing trait methods (get_current_rewarded_set, get_all_basic_nodes_with_metadata, get_all_described_nodes)
- Fix type conversions for RewardedSetResponse in network monitor
- Update all API client instantiation to use new unified HTTP client
* feat: complete migration to unified HTTP client and fix all compilation errors
- Added missing NymApiClientExt trait methods (get_all_expanded_nodes, change_base_urls)
- Fixed all compilation errors across the workspace
- Updated nym-node to use unified client instead of deprecated NymApiClient
- Fixed type conversions for RewardedSetResponse → EpochRewardedSet
- Added nym-http-api-client dependency where needed
- Updated all examples and documentation to use new client API
* fix: provide all API URLs for automatic failover in endpoint rotation
Previously, when rotating API endpoints, only a single URL was provided to the
HTTP client, defeating the purpose of having multiple URLs for resilience.
Changes:
- NymApiTopologyProvider now provides all URLs in rotated order when switching endpoints
- NymApisClient similarly provides all URLs starting from the working endpoint
- Added clarifying comments for broadcast/exhaustive query methods where single URLs are intentionally used
- This enables the HTTP client's built-in failover mechanism while maintaining endpoint rotation behavior
The fix ensures that if the primary endpoint fails, the client can automatically
failover to alternative endpoints without manual intervention, improving overall
network resilience.
* Update common/client-core/src/client/base_client/mod.rs
Co-authored-by: Jędrzej Stuczyński <jedrzej.stuczynski@gmail.com>
* Remove error generics, address PR comments
* Explicit warning on missing fronting configuration
* Assorted CI fixes
* Registry proc-macro
* Rename macro
* Syn workspace version
* Where do we need to put inventory
* Ergonomics and call sites, incept the builder
* fix: Address critical issues in client configuration registry implementation
- Fixed HeaderMapInit parsing bug that would cause compilation errors
- Added comprehensive documentation with usage examples and DSL reference
- Improved error handling with better error messages for invalid headers
- Added test coverage for both macro and registry functionality
- Added debug inspection capabilities for registered configurations
- Fixed module name conflicts in tests by using separate modules
All tests now passing:
- 7 macro tests validating DSL parsing and code generation
- 4 registry tests verifying configuration collection and application
* Use default value for the ports until api is deployed
* Feature/improved http error (#6025)
* use display impl for urls
* feat: attempt to add more details to reqwest errors
* temporarily restored GenericRequestFailure variant
* another restoration
* cleanup
* Some debug tooling, and default timeout fix
* Fix user-agent override
* Fix various wasm things
---------
Co-authored-by: Jędrzej Stuczyński <jedrzej.stuczynski@gmail.com>
Co-authored-by: Bogdan-Ștefan Neacşu <bogdan@nymtech.net>
* wip
* wip: wrap node's sphinx key with a manager
* wip: choosing correct key for packet processing
* further propagation of key rotation information
* attaching key rotation information to reply surbs
* added basic key rotation information to mixnet contract
* wip: introducing cached queries for key rotation info from nym api
* unified nym-api contract cache refreshing
* finish packet decoding
* multi api client + retrieving rotation id
* rotating sphinx key files
* logic for migrating config file
* wip: putting new sphinx keys to self described endpoints
* processing loop of KeyRotationController
* fixed sphinx key loading
* rotating bloomfilters
* wired up KeyRotationController
* flushing bloomfilters to disk and loading
* most of nym-node changes
* post rebase fixes
* fixes due to backwards compatible hostkeys
* split http state.rs file
* dont use deprecated fields
* fixed backwards compatible deserialisation of host information
* split up node describe cache
* added a dedicated CacheRefresher listener to perform full refresh outside the set interval
* controlling announced sphinx keys within nym-api
* retrieving rotation id when pulling topology
* split nym-nodes http handlers
* v2 nym-api endpoints to retrieve nodes with additional metadata information
* bug fixes...
* additional bugfixes and guards against stuck epoch
* testnet manager: set first nym-api as the rewarder
* fixed host information deserialisation
* fixed panic during first key rotation
* post rebase fixes
* clippy
* more guards against stuck epochs
* added helper method to reset node's sphinx key
* instantiate mixnet contract with custom key rotation validity
* additional bugfixes and debugging nym-api deadlock
* passing shutdown to nym apis client
* remove dead test
* post rebasing fixes
* missing MixnetQueryClient variants
* remove usage of deprecated methods in sdk example
* fix: incorrect method signature
* post rebasing fixes
* attempt to retrieve key rotation id before doing any config migration work
* ignore tests relying on networking behaviour
* allow networking failures in certain tests
In the vpn-api client we create requests directly, so let's instrument
them as well as the currently instrumented top-level function get_json
doesn't capture that.
* introduce 'Bincode' variant for FormattedResponse
* allow nym-api to return responses in bincode (and also yaml)
* client parsing support
* cargo fmt
* missing changes to nym-api tests
* fixed node status api build + adjusted NymApiClient construction
* NMv2 fixes + further api changes
* feature-locking http-api-common to fix wasm build
* Added new legacy variant of HostInformation
* fixed 'option_bs58_x25519_pubkey' for empty string
* 'Debug' impl for x25519 and ed25519 to use human-readable representation
* HttpClient to use explicit 'serde_json' conversion for better errors
* additional 'Debug' derives
* Create UserAgent that can be passed from the binary to the nym api client
* TryFrom for UserAgent to HeaderValue
* Add user agent for getting the list of gateways
* Fix wasm client
* Move clap behind feature flag in bin-common
* Implement conversion to UserAgent
* Set user_agent on base client in native and socks5 clients
* Set user agent in socks5-listener lib
* wip
* wip
* Deserialize cargo_triple to unknown by default
* Abbreviate git hash
* Remove unused import
* Add missing dep, and remove dbg statements
* Reorder string representation
* Remove commented out code
* Revert temporary log level change
* exit policy types
* simple client for grabbing the policy
* moved allowed_hosts to a submodule
* started integrating exit policy into a NR
* ability to construct ExitPolicyRequestFilter
* fixed policy parsing to look for comment char from the left
* conditionally setting up request filter
* [wip] setting up correct url for exit policy upstream
* clap flags for running with exit policy
* fixed NR template
* updated NR config template
* making sure to perform request filtering in separate task
* initial, placeholder, exit policy API endpoint
* serving exit policy from an embedded NR
* double slash sanitization
* socks5 query for exit policy
* adjusted address policy logging
* cargo fmt
* Updated exit policy url to point to the correct mainnet file
* removed unecessary mutability in filter tests
* fixed the code block showing example policy being interpreted as doc test
* Squashing all the changes
initial router
started expanding the API
initial empty openapi/swagger
populated build-info endpoint
wip: populating rest of swagger
missing swagger data + using closure capture for immutable state
running the api as a proper task in gateway 'run'
fixing some version/feature clashes
refactored routes structures
initial host information endpoint
expanded on gateway-related endpoints
signing host information
moved all models to separate crate
unified http api client
routes unification + node api client
new generic cache and refresher
nym-api caching node self described information
removed old cache type
temporarily wired up NymContractCache to NodeDescriptionProvider
caching self reported host info
clients using self-described gateway information
fixed request timeouts for wasm
fixed wasm builds
post rebase fixes
cargo fmt
brought in wg routes into nym-node router
added ErrorResponse for wireguard routes
basic swagger support for wg endpoints
turns out swagger can be happy with strongly typed requests
output type support for wg routes
using concrete error type for nym node request error
fixed the registration test
landing page configurability
increased configurability
fixed build and lints of other crates
added default user-agent to http-api-client
reduced severity of gateway details lookup failure
changed default http port from 80 to 8080
nym-api using new default port for queries
added health endpoint
nym-api trying multiple ports for the client
using camelcase for node status
corrected health endpoint description
restored and revamped 'force_tls' flag to filter all gateways that support the wss protocol
fixed 'pub_key' path param in open api schema
derived Debug on 'NymNodeDescription'
ensuring valid public ips
added init and run flags to set hostname and public ips
fixed listening address being pushed to public ip
fixed the positional local flag
logging remote ip address of the request
updated helper function to query for described gateways
enabled tls in gateway client
removed hack-opts from mix fetch
additional changes after rebasing against origin/develop
* clippy
* wasm-related target locking
* more clippy, but this time in tests