mirror of
				https://github.com/PurpleI2P/i2pd.git
				synced 2025-11-04 08:30:46 +00:00 
			
		
		
		
	handle i2cp.leaseSetType parameter
This commit is contained in:
		
							parent
							
								
									dadf6174ba
								
							
						
					
					
						commit
						e647603dce
					
				
					 3 changed files with 26 additions and 5 deletions
				
			
		| 
						 | 
				
			
			@ -16,7 +16,8 @@ namespace client
 | 
			
		|||
	LeaseSetDestination::LeaseSetDestination (bool isPublic, const std::map<std::string, std::string> * params):
 | 
			
		||||
		m_IsRunning (false), m_Thread (nullptr), m_IsPublic (isPublic),
 | 
			
		||||
		m_PublishReplyToken (0), m_LastSubmissionTime (0), m_PublishConfirmationTimer (m_Service),
 | 
			
		||||
		m_PublishVerificationTimer (m_Service), m_PublishDelayTimer (m_Service), m_CleanupTimer (m_Service)
 | 
			
		||||
		m_PublishVerificationTimer (m_Service), m_PublishDelayTimer (m_Service), m_CleanupTimer (m_Service),
 | 
			
		||||
		m_LeaseSetType (DEFAULT_LEASESET_TYPE)
 | 
			
		||||
	{
 | 
			
		||||
		int inLen   = DEFAULT_INBOUND_TUNNEL_LENGTH;
 | 
			
		||||
		int inQty   = DEFAULT_INBOUND_TUNNELS_QUANTITY;
 | 
			
		||||
| 
						 | 
				
			
			@ -66,6 +67,9 @@ namespace client
 | 
			
		|||
					if (it != params->end ()) m_Nickname = it->second;
 | 
			
		||||
					// otherwise we set default nickname in Start when we know local address
 | 
			
		||||
				}
 | 
			
		||||
				it = params->find (I2CP_PARAM_LEASESET_TYPE);
 | 
			
		||||
				if (it != params->end ())
 | 
			
		||||
					m_LeaseSetType = std::stoi(it->second);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		catch (std::exception & ex)
 | 
			
		||||
| 
						 | 
				
			
			@ -1023,9 +1027,21 @@ namespace client
 | 
			
		|||
 | 
			
		||||
	void ClientDestination::CreateNewLeaseSet (std::vector<std::shared_ptr<i2p::tunnel::InboundTunnel> > tunnels)
 | 
			
		||||
	{
 | 
			
		||||
		auto leaseSet = new i2p::data::LocalLeaseSet (GetIdentity (), m_EncryptionPublicKey, tunnels);
 | 
			
		||||
		// sign
 | 
			
		||||
		Sign (leaseSet->GetBuffer (), leaseSet->GetBufferLen () - leaseSet->GetSignatureLen (), leaseSet->GetSignature ()); // TODO
 | 
			
		||||
		i2p::data::LocalLeaseSet * leaseSet = nullptr;
 | 
			
		||||
		if (GetLeaseSetType () == i2p::data::NETDB_STORE_TYPE_LEASESET)
 | 
			
		||||
		{
 | 
			
		||||
			leaseSet = new i2p::data::LocalLeaseSet (GetIdentity (), m_EncryptionPublicKey, tunnels);
 | 
			
		||||
			// sign
 | 
			
		||||
			Sign (leaseSet->GetBuffer (), leaseSet->GetBufferLen () - leaseSet->GetSignatureLen (), leaseSet->GetSignature ()); 
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
			// standard LS2 (type 3) assumed for now. TODO: implement others
 | 
			
		||||
			auto leaseSet = new i2p::data::LocalLeaseSet2 (i2p::data::NETDB_STORE_TYPE_STANDARD_LEASESET2,
 | 
			
		||||
				GetIdentity (), i2p::data::CRYPTO_KEY_TYPE_ELGAMAL, 256, m_EncryptionPublicKey, tunnels);
 | 
			
		||||
			// sign
 | 
			
		||||
			Sign (leaseSet->GetBuffer () - 1, leaseSet->GetBufferLen () - leaseSet->GetSignatureLen () + 1, leaseSet->GetSignature ()); // + leading store type
 | 
			
		||||
		}
 | 
			
		||||
		SetLeaseSet (leaseSet);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -52,6 +52,8 @@ namespace client
 | 
			
		|||
	const int DEFAULT_TAGS_TO_SEND = 40;
 | 
			
		||||
	const char I2CP_PARAM_INBOUND_NICKNAME[] = "inbound.nickname";
 | 
			
		||||
	const char I2CP_PARAM_OUTBOUND_NICKNAME[] = "outbound.nickname";
 | 
			
		||||
	const char I2CP_PARAM_LEASESET_TYPE[] = "i2cp.leaseSetType";
 | 
			
		||||
	const int DEFAULT_LEASESET_TYPE = 1;		
 | 
			
		||||
 | 
			
		||||
	// latency
 | 
			
		||||
	const char I2CP_PARAM_MIN_TUNNEL_LATENCY[] = "latency.min";
 | 
			
		||||
| 
						 | 
				
			
			@ -122,6 +124,7 @@ namespace client
 | 
			
		|||
		protected:
 | 
			
		||||
 | 
			
		||||
			void SetLeaseSet (i2p::data::LocalLeaseSet * newLeaseSet);
 | 
			
		||||
			int GetLeaseSetType () const { return m_LeaseSetType; };
 | 
			
		||||
			virtual void CleanupDestination () {}; // additional clean up in derived classes
 | 
			
		||||
			// I2CP
 | 
			
		||||
			virtual void HandleDataMessage (const uint8_t * buf, size_t len) = 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -165,6 +168,7 @@ namespace client
 | 
			
		|||
			boost::asio::deadline_timer m_PublishConfirmationTimer, m_PublishVerificationTimer,
 | 
			
		||||
				m_PublishDelayTimer, m_CleanupTimer;
 | 
			
		||||
			std::string m_Nickname;
 | 
			
		||||
			int m_LeaseSetType;
 | 
			
		||||
 | 
			
		||||
		public:
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -383,9 +383,10 @@ namespace client
 | 
			
		|||
		options[I2CP_PARAM_INBOUND_TUNNELS_QUANTITY] = GetI2CPOption (section, I2CP_PARAM_INBOUND_TUNNELS_QUANTITY, DEFAULT_INBOUND_TUNNELS_QUANTITY);
 | 
			
		||||
		options[I2CP_PARAM_OUTBOUND_TUNNELS_QUANTITY] = GetI2CPOption (section, I2CP_PARAM_OUTBOUND_TUNNELS_QUANTITY, DEFAULT_OUTBOUND_TUNNELS_QUANTITY);
 | 
			
		||||
		options[I2CP_PARAM_TAGS_TO_SEND] = GetI2CPOption (section, I2CP_PARAM_TAGS_TO_SEND, DEFAULT_TAGS_TO_SEND);
 | 
			
		||||
		options[I2CP_PARAM_LEASESET_TYPE] = GetI2CPOption(section, I2CP_PARAM_LEASESET_TYPE, DEFAULT_LEASESET_TYPE);
 | 
			
		||||
		options[I2CP_PARAM_MIN_TUNNEL_LATENCY] = GetI2CPOption(section, I2CP_PARAM_MIN_TUNNEL_LATENCY, DEFAULT_MIN_TUNNEL_LATENCY);
 | 
			
		||||
		options[I2CP_PARAM_MAX_TUNNEL_LATENCY] = GetI2CPOption(section, I2CP_PARAM_MAX_TUNNEL_LATENCY, DEFAULT_MAX_TUNNEL_LATENCY);
 | 
			
		||||
		options[I2CP_PARAM_STREAMING_INITIAL_ACK_DELAY] = GetI2CPOption(section, I2CP_PARAM_STREAMING_INITIAL_ACK_DELAY, DEFAULT_INITIAL_ACK_DELAY);
 | 
			
		||||
		options[I2CP_PARAM_STREAMING_INITIAL_ACK_DELAY] = GetI2CPOption(section, I2CP_PARAM_STREAMING_INITIAL_ACK_DELAY, DEFAULT_INITIAL_ACK_DELAY); 
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void ClientContext::ReadI2CPOptionsFromConfig (const std::string& prefix, std::map<std::string, std::string>& options) const
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue