Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions build-logic/spotbugs-exclude.xml
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@
-->
<Match>
<Bug pattern="EI_EXPOSE_REP,EI_EXPOSE_REP2"/>
<Class name="network.crypta.node.ClientEndpoints"/>
<Class name="network.crypta.runtime.endpoints.ClientEndpoints"/>
</Match>
<Match>
<Bug pattern="EI_EXPOSE_REP"/>
Expand Down Expand Up @@ -440,7 +440,7 @@
</Match>
<Match>
<Bug pattern="EI_EXPOSE_REP,EI_EXPOSE_REP2"/>
<Class name="network.crypta.node.NodeClientCoreInit"/>
<Class name="network.crypta.runtime.endpoints.NodeClientCoreInit"/>
</Match>
<Match>
<Bug pattern="EI_EXPOSE_REP,EI_EXPOSE_REP2"/>
Expand Down Expand Up @@ -1154,7 +1154,7 @@
</Match>
<Match>
<Bug pattern="EI_EXPOSE_REP,EI_EXPOSE_REP2"/>
<Class name="network.crypta.node.ClientEndpoints$InitResult"/>
<Class name="network.crypta.runtime.endpoints.ClientEndpoints$InitResult"/>
</Match>
<Match>
<Bug pattern="EI_EXPOSE_REP,EI_EXPOSE_REP2"/>
Expand Down Expand Up @@ -1350,11 +1350,11 @@
</Match>
<Match>
<Bug pattern="EI_EXPOSE_REP,EI_EXPOSE_REP2"/>
<Class name="network.crypta.node.TextModeClientInterface"/>
<Class name="network.crypta.runtime.endpoints.TextModeClientInterface"/>
</Match>
<Match>
<Bug pattern="EI_EXPOSE_REP,EI_EXPOSE_REP2"/>
<Class name="network.crypta.node.TextModeClientInterfaceServer$InitResult"/>
<Class name="network.crypta.runtime.endpoints.TextModeClientInterfaceServer$InitResult"/>
</Match>
<Match>
<Bug pattern="EI_EXPOSE_REP,EI_EXPOSE_REP2"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@
* Builds the core-backed dependency bundle used by FCP server bootstrap.
*
* <p>This factory is intentionally local to {@code clients.fcp}. Callers use it at the bootstrap
* boundary, typically from node startup code such as {@code NodeClientPersistence}, to translate
* the remaining {@link NodeClientCore}-backed services into the narrow package-local seams that
* {@link FCPServer} accepts. That keeps the server constructor and configuration registrar free of
* direct daemon-core references while preserving the runtime behavior that older code paths
* expected.
* boundary, typically from node startup code such as {@code
* network.crypta.runtime.endpoints.NodeClientPersistence}, to translate the remaining {@link
* NodeClientCore}-backed services into the narrow package-local seams that {@link FCPServer}
* accepts. That keeps the server constructor and configuration registrar free of direct daemon-core
* references while preserving the runtime behavior that older code paths expected.
*
* <p>The factory is stateless and creates one fresh {@link FcpServerDependencies} bundle per call.
* Each bundle contains lightweight adapters over live daemon services rather than detached
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
import network.crypta.client.async.USKManager;
import network.crypta.crypt.MasterSecret;
import network.crypta.crypt.RandomSource;
import network.crypta.runtime.endpoints.NodeClientCoreInit;
import network.crypta.runtime.endpoints.NodeClientPersistence;
import network.crypta.support.MemoryLimitedJobRunner;
import network.crypta.support.PriorityAwareExecutor;
import network.crypta.support.Ticker;
Expand Down
1 change: 1 addition & 0 deletions src/main/java/network/crypta/node/Node.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
import network.crypta.node.subsystem.NodeRoutingSubsystem;
import network.crypta.node.subsystem.NodeServicesSubsystem;
import network.crypta.node.subsystem.NodeStorageSubsystem;
import network.crypta.runtime.endpoints.NodeClientCoreInit;
import network.crypta.support.Fields;
import network.crypta.support.HexUtil;
import network.crypta.support.PriorityAwareExecutor;
Expand Down
4 changes: 4 additions & 0 deletions src/main/java/network/crypta/node/NodeClientCore.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@
import network.crypta.node.SecurityLevels.PHYSICAL_THREAT_LEVEL;
import network.crypta.node.runtime.LegacyRuntimePorts;
import network.crypta.node.useralerts.UserAlertManager;
import network.crypta.runtime.endpoints.ClientEndpoints;
import network.crypta.runtime.endpoints.NodeClientCoreInit;
import network.crypta.runtime.endpoints.NodeClientPersistence;
import network.crypta.runtime.endpoints.TextModeClientInterface;
import network.crypta.runtime.spi.RuntimePorts;
import network.crypta.support.Base64;
import network.crypta.support.MemoryLimitedJobRunner;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
import network.crypta.node.useralerts.SimpleUserAlert;
import network.crypta.node.useralerts.UserAlert;
import network.crypta.node.useralerts.UserAlertManager;
import network.crypta.runtime.endpoints.NodeClientCoreInit;
import network.crypta.support.SizeUtil;
import network.crypta.support.compress.Compressor;
import network.crypta.support.io.FileUtil;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import network.crypta.config.Option;
import network.crypta.config.StringArrCallback;
import network.crypta.node.SecurityLevels.PHYSICAL_THREAT_LEVEL;
import network.crypta.runtime.endpoints.NodeClientCoreInit;
import network.crypta.support.io.FileUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down
8 changes: 7 additions & 1 deletion src/main/java/network/crypta/node/PeerManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -313,7 +313,13 @@ void writePeersDarknet() {
peerPersistence.writePeers(false);
}

void writePeersDarknetUrgent() {
/**
* Forces an urgent write of darknet peer state to disk.
*
* <p>This preserves the historical TMCI behavior of flushing peer list mutations immediately
* after add/remove operations.
*/
public void writePeersDarknetUrgent() {
peerPersistence.writePeersUrgent(false);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,10 @@
import network.crypta.clients.fcp.IdentifierCollisionException;
import network.crypta.clients.fcp.NotAllowedException;
import network.crypta.keys.FreenetURI;
import network.crypta.node.ClientEndpoints;
import network.crypta.node.Node;
import network.crypta.node.NodeClientCore;
import network.crypta.node.RequestStarter;
import network.crypta.runtime.endpoints.ClientEndpoints;
import network.crypta.runtime.spi.QueueBrowserUploadInsertRequest;
import network.crypta.runtime.spi.QueueInsertFailureReason;
import network.crypta.runtime.spi.QueueInsertOutcome;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
package network.crypta.node;
package network.crypta.runtime.endpoints;

import java.util.concurrent.atomic.AtomicReference;
import network.crypta.client.async.ClientContext;
import network.crypta.clients.fcp.FCPServer;
import network.crypta.clients.http.FProxyToadlet;
import network.crypta.clients.http.SimpleToadletServer;
import network.crypta.node.Node;
import network.crypta.node.NodeClientCore;
import network.crypta.node.NodeClientCoreSupport;
import network.crypta.node.useralerts.UserAlert;
import network.crypta.node.useralerts.UserAlertManager;
import network.crypta.runtime.spi.RuntimePorts;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package network.crypta.node;
package network.crypta.runtime.endpoints;

import network.crypta.clients.http.SimpleToadletServer;
import network.crypta.config.Config;
import network.crypta.config.SubConfig;
import network.crypta.node.NodeClientCore;

/**
* Bundles configuration inputs required to initialize {@link NodeClientCore}.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package network.crypta.node;
package network.crypta.runtime.endpoints;

import java.io.File;
import java.util.Objects;
Expand All @@ -15,6 +15,13 @@
import network.crypta.config.Option;
import network.crypta.config.SubConfig;
import network.crypta.crypt.MasterSecret;
import network.crypta.node.ClientContextInitParams;
import network.crypta.node.ConfigurablePersister;
import network.crypta.node.ConfigurablePersisterParams;
import network.crypta.node.Node;
import network.crypta.node.NodeClientCore;
import network.crypta.node.NodeInitException;
import network.crypta.node.Persistable;
import network.crypta.runtime.spi.RuntimePorts;
import network.crypta.support.SimpleFieldSet;
import network.crypta.support.Ticker;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package network.crypta.node;
package network.crypta.runtime.endpoints;

import java.io.BufferedReader;
import java.io.BufferedWriter;
Expand Down Expand Up @@ -57,8 +57,18 @@
import network.crypta.io.comm.ReferenceSignatureVerificationException;
import network.crypta.keys.FreenetURI;
import network.crypta.keys.InsertableClientSSK;
import network.crypta.node.AnnouncementCallback;
import network.crypta.node.DarknetPeerNode.FRIEND_TRUST;
import network.crypta.node.DarknetPeerNode.FRIEND_VISIBILITY;
import network.crypta.node.DarknetPeerNode;
import network.crypta.node.FSParseException;
import network.crypta.node.Node;
import network.crypta.node.NodeClientCore;
import network.crypta.node.PeerNode;
import network.crypta.node.PeerTooOldException;
import network.crypta.node.RequestClient;
import network.crypta.node.RequestStarter;
import network.crypta.node.Version;
import network.crypta.support.HexUtil;
import network.crypta.support.SimpleFieldSet;
import network.crypta.support.SizeUtil;
Expand Down Expand Up @@ -1654,7 +1664,7 @@ private boolean disablePeer(String nodeIdentifier) {
if (peer != null) {
nodeIpAndPort = peer.toString();
}
String name = pn.myName;
String name = pn.getName();
String identity = pn.getIdentityString();
if (identity.equals(nodeIdentifier)
|| nodeIpAndPort.equals(nodeIdentifier)
Expand All @@ -1677,7 +1687,7 @@ private boolean enablePeer(String nodeIdentifier) {
if (peer != null) {
nodeIpAndPort = peer.toString();
}
String name = pn.myName;
String name = pn.getName();
String identity = pn.getIdentityString();
if (identity.equals(nodeIdentifier)
|| nodeIpAndPort.equals(nodeIdentifier)
Expand All @@ -1700,7 +1710,7 @@ private boolean havePeer(String nodeIdentifier) {
if (peer != null) {
nodeIpAndPort = peer.toString();
}
String name = pn.myName;
String name = pn.getName();
String identity = pn.getIdentityString();
if (identity.equals(nodeIdentifier)
|| nodeIpAndPort.equals(nodeIdentifier)
Expand All @@ -1723,7 +1733,7 @@ private boolean removePeer(String nodeIdentifier) {
if (peer != null) {
nodeIpAndPort = peer.toString();
}
String name = pn.myName;
String name = pn.getName();
String identity = pn.getIdentityString();
if (identity.equals(nodeIdentifier)
|| nodeIpAndPort.equals(nodeIdentifier)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package network.crypta.node;
package network.crypta.runtime.endpoints;

/**
* Console bridge used by the Text Mode Client Interface.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package network.crypta.node;
package network.crypta.runtime.endpoints;

import java.io.File;
import java.io.IOException;
Expand All @@ -18,6 +18,9 @@
import network.crypta.crypt.RandomSource;
import network.crypta.io.NetworkInterface;
import network.crypta.io.SSLNetworkInterface;
import network.crypta.node.Node;
import network.crypta.node.NodeClientCore;
import network.crypta.node.RequestStarter;
import network.crypta.node.runtime.SSL;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down
13 changes: 13 additions & 0 deletions src/main/java/network/crypta/runtime/endpoints/package-info.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
/**
* Client endpoint wiring and TMCI bootstrap support for the runtime boundary.
*
* <p>This package groups the legacy endpoint bootstrap cluster that still wires the live FCP, HTTP,
* and text-mode client interfaces from daemon-backed services. The classes remain in the root
* project and keep their existing collaboration patterns, including package-private TMCI access,
* but they now sit under a neutral runtime-oriented package instead of {@code network.crypta.node}.
*
* <p>The intent is ownership clarification only. These types still depend on daemon-local services
* such as {@code Node}, {@code NodeClientCore}, queue persistence, and HTTP/FCP bootstrap helpers,
* and they intentionally preserve the current runtime behavior and lifecycle semantics.
*/
package network.crypta.runtime.endpoints;
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import network.crypta.clients.http.bookmark.BookmarkManager;
import network.crypta.clients.http.bookmark.CoreBookmarkRuntimeSupport;
import network.crypta.config.PersistentConfig;
import network.crypta.node.ClientEndpoints;
import network.crypta.node.Node;
import network.crypta.node.NodeClientCore;
import network.crypta.node.RequestStarter;
Expand All @@ -21,6 +20,7 @@
import network.crypta.node.subsystem.NodeNetworkSubsystem;
import network.crypta.node.subsystem.NodeServicesSubsystem;
import network.crypta.node.useralerts.UserAlertManager;
import network.crypta.runtime.endpoints.ClientEndpoints;
import network.crypta.runtime.spi.RuntimePorts;
import network.crypta.support.Ticker;
import org.junit.jupiter.api.Test;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@
import network.crypta.config.SubConfig;
import network.crypta.io.NetworkInterface;
import network.crypta.io.SSLNetworkInterface;
import network.crypta.node.ClientEndpoints;
import network.crypta.node.NodeClientCore;
import network.crypta.node.RequestStarter;
import network.crypta.node.useralerts.UserAlertManager;
import network.crypta.runtime.endpoints.ClientEndpoints;
import network.crypta.runtime.spi.RandomnessPort;
import network.crypta.runtime.spi.RuntimePorts;
import network.crypta.support.HTMLNode;
Expand Down
2 changes: 2 additions & 0 deletions src/test/java/network/crypta/node/NodeClientCoreTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
import network.crypta.node.runtime.LegacyRuntimePorts;
import network.crypta.node.subsystem.NodeServicesSubsystem;
import network.crypta.node.useralerts.UserAlertManager;
import network.crypta.runtime.endpoints.ClientEndpoints;
import network.crypta.runtime.endpoints.NodeClientPersistence;
import network.crypta.runtime.spi.RuntimePorts;
import network.crypta.support.PriorityAwareExecutor;
import network.crypta.support.SimpleFieldSet;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import network.crypta.config.SubConfig;
import network.crypta.node.SecurityLevels.PHYSICAL_THREAT_LEVEL;
import network.crypta.node.subsystem.NodeServicesSubsystem;
import network.crypta.runtime.endpoints.NodeClientCoreInit;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,13 @@
import network.crypta.crypt.RandomSource;
import network.crypta.keys.FreenetURI;
import network.crypta.node.ClientContextResources;
import network.crypta.node.ClientEndpoints;
import network.crypta.node.Node;
import network.crypta.node.NodeClientCore;
import network.crypta.node.ProgramDirectory;
import network.crypta.node.subsystem.NodeNetworkSubsystem;
import network.crypta.node.useralerts.UserAlertManager;
import network.crypta.node.useralerts.UserEvent;
import network.crypta.runtime.endpoints.ClientEndpoints;
import network.crypta.support.MemoryLimitedJobRunner;
import network.crypta.support.PriorityAwareExecutor;
import network.crypta.support.Ticker;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
import network.crypta.clients.fcp.FCPServer;
import network.crypta.clients.fcp.NotAllowedException;
import network.crypta.clients.fcp.PersistentGlobalRequestParams;
import network.crypta.node.ClientEndpoints;
import network.crypta.node.NodeClientCore;
import network.crypta.runtime.endpoints.ClientEndpoints;
import network.crypta.runtime.spi.QueueDownloadRejectedException;
import network.crypta.runtime.spi.QueueDownloadRequest;
import network.crypta.runtime.spi.RequestQueueUnavailableException;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@
import network.crypta.crypt.MasterSecret;
import network.crypta.crypt.RandomSource;
import network.crypta.node.ClientContextResources;
import network.crypta.node.ClientEndpoints;
import network.crypta.node.NodeClientCore;
import network.crypta.runtime.endpoints.ClientEndpoints;
import network.crypta.runtime.spi.QueueBrowserUploadInsertRequest;
import network.crypta.runtime.spi.QueueInsertFailureReason;
import network.crypta.runtime.spi.QueueInsertOptions;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
import network.crypta.clients.fcp.FCPServer;
import network.crypta.clients.fcp.RequestStatus;
import network.crypta.clients.fcp.UploadFileRequestStatus;
import network.crypta.node.ClientEndpoints;
import network.crypta.node.NodeClientCore;
import network.crypta.runtime.endpoints.ClientEndpoints;
import network.crypta.runtime.spi.RequestQueueUnavailableException;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@
import network.crypta.clients.fcp.UploadFileRequestStatus;
import network.crypta.clients.fcp.UploadRequestStatus;
import network.crypta.keys.FreenetURI;
import network.crypta.node.ClientEndpoints;
import network.crypta.node.DarknetPeerNode;
import network.crypta.node.Node;
import network.crypta.node.NodeClientCore;
import network.crypta.node.RequestStarterGroup;
import network.crypta.runtime.endpoints.ClientEndpoints;
import network.crypta.runtime.spi.QueuePageRequest;
import network.crypta.runtime.spi.QueuePageSnapshot;
import network.crypta.runtime.spi.RequestQueueUnavailableException;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
import java.io.File;
import java.nio.file.Path;
import network.crypta.clients.fcp.FCPServer;
import network.crypta.node.ClientEndpoints;
import network.crypta.node.Node;
import network.crypta.node.NodeClientCore;
import network.crypta.node.subsystem.NodeStorageSubsystem;
import network.crypta.runtime.endpoints.ClientEndpoints;
import network.crypta.runtime.spi.QueuePersistenceStatusSnapshot;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
Expand Down
Loading
Loading