summaryrefslogtreecommitdiff
path: root/src/bindings/java/com/zerotier/sockets/ZeroTierNode.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/bindings/java/com/zerotier/sockets/ZeroTierNode.java')
-rw-r--r--src/bindings/java/com/zerotier/sockets/ZeroTierNode.java242
1 files changed, 242 insertions, 0 deletions
diff --git a/src/bindings/java/com/zerotier/sockets/ZeroTierNode.java b/src/bindings/java/com/zerotier/sockets/ZeroTierNode.java
new file mode 100644
index 0000000..b35ccd9
--- /dev/null
+++ b/src/bindings/java/com/zerotier/sockets/ZeroTierNode.java
@@ -0,0 +1,242 @@
+/*
+ * Copyright (c)2013-2021 ZeroTier, Inc.
+ *
+ * Use of this software is governed by the Business Source License included
+ * in the LICENSE.TXT file in the project's root directory.
+ *
+ * Change Date: 2026-01-01
+ *
+ * On the date above, in accordance with the Business Source License, use
+ * of this software will be governed by version 2.0 of the Apache License.
+ */
+/****/
+
+package com.zerotier.sockets;
+
+import com.zerotier.sockets.*;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+
+/**
+ * Class that provides a control interface for nodes and networks by
+ * wrapping the ZeroTierNative class.
+ */
+public class ZeroTierNode {
+ /**
+ * Start the ZeroTier node
+ *
+ * @return Standard
+ */
+ public int start()
+ {
+ return ZeroTierNative.zts_node_start();
+ }
+
+ /**
+ * Stop the ZeroTier node
+ *
+ * @return return
+ */
+ public int stop()
+ {
+ return ZeroTierNative.zts_node_stop();
+ }
+
+ /**
+ * (Optional) Instruct ZeroTier to read and write identities and cache from a
+ * storage location. Note that this is an initialization method that should
+ * be called before {@code start()}.
+ *
+ * @param storagePath Where to read and write files
+ *
+ * @return return
+ */
+ public int initFromStorage(String storagePath)
+ {
+ return ZeroTierNative.zts_init_from_storage(storagePath);
+ }
+
+ /**
+ * (Optional) Whether caching of peer address information to storage is allowed. This
+ * is true by default if {@code initFromStorage()} is used. Note that this is an
+ * initialization method that can only be called before {@code start()}.
+ *
+ * @param allowed Whether caching or storage of this item is allowed
+ *
+ * @return return
+ */
+ public int initAllowPeerCache(boolean allowed)
+ {
+ return ZeroTierNative.zts_init_allow_peer_cache(allowed ? 1 : 0);
+ }
+
+ /**
+ * (Optional) Whether caching of network configuration data to storage is allowed. This
+ * is true by default if {@code initFromStorage()} is used. Note that this is an
+ * initialization method that can only be called before {@code start()}.
+ *
+ * @param allowed Whether caching or storage of this item is allowed
+ *
+ * @return return
+ */
+ public int initAllowNetworkCache(boolean allowed)
+ {
+ return ZeroTierNative.zts_init_allow_net_cache(allowed ? 1 : 0);
+ }
+
+ /**
+ * (Optional) Whether caching of identity key pairs to storage is allowed. This
+ * is true by default if {@code initFromStorage()} is used. Note that this is an
+ * initialization method that can only be called before {@code start()}.
+ *
+ * @param allowed Whether caching or storage of this item is allowed
+ *
+ * @return return
+ */
+ public int initAllowIdCache(boolean allowed)
+ {
+ return ZeroTierNative.zts_init_allow_id_cache(allowed ? 1 : 0);
+ }
+
+ /**
+ * (Optional) Whether caching of root topology to storage is allowed. This
+ * is true by default if {@code initFromStorage()} is used. Note that this is an
+ * initialization method that can only be called before {@code start()}.
+ *
+ * @param allowed Whether caching or storage of this item is allowed
+ *
+ * @return return
+ */
+ public int initAllowRootsCache(boolean allowed)
+ {
+ return ZeroTierNative.zts_init_allow_roots_cache(allowed ? 1 : 0);
+ }
+
+ /**
+ * (Optional) Set the ZeroTier service port. Note that this is an
+ * initialization method that can only be called before {@code start()}.
+ *
+ * @param port Port number
+ *
+ * @return return
+ */
+ public int initSetPort(short port)
+ {
+ return ZeroTierNative.zts_init_set_port(port);
+ }
+
+ /**
+ * (Optional) Set the event handler function. Note that this is an
+ * initialization method that can only be called before {@code start()}.
+ *
+ * @param handler Function to handle internal ZeroTier events
+ *
+ * @return return
+ */
+ public int initSetEventHandler(ZeroTierEventListener handler)
+ {
+ return ZeroTierNative.zts_init_set_event_handler(handler);
+ }
+
+ /**
+ * Return whether the ZeroTier node is currently online (able to reach a root)
+ *
+ * @return return
+ */
+ public boolean isOnline()
+ {
+ return ZeroTierNative.zts_node_is_online() == 1;
+ }
+
+ /**
+ * Join a network
+ *
+ * @param networkId Network to join
+ *
+ * @return return
+ */
+ public int join(long networkId)
+ {
+ return ZeroTierNative.zts_net_join(networkId);
+ }
+
+ /**
+ * Leave a network
+ *
+ * @param networkId Network to leave
+ *
+ * @return return
+ */
+ public int leave(long networkId)
+ {
+ return ZeroTierNative.zts_net_leave(networkId);
+ }
+
+ /**
+ * Return whether the given network is ready to process traffic
+ *
+ * @param networkId Network to test
+ *
+ * @return return
+ */
+ public boolean isNetworkTransportReady(long networkId)
+ {
+ return ZeroTierNative.zts_net_transport_is_ready(networkId) == 1;
+ }
+
+ /**
+ * Get the identity of this node (public key)
+ *
+ * @return 64-bit integer representing the 10-digit hexadecimal node ID
+ */
+ public long getId()
+ {
+ return ZeroTierNative.zts_node_get_id();
+ }
+
+ /**
+ * Get the first-assigned IPv4 address
+ *
+ * @param networkId Network to get assigned address for
+ *
+ * @return address
+ */
+ public InetAddress getIPv4Address(long networkId)
+ {
+ try {
+ return InetAddress.getByName(ZeroTierNative.zts_addr_get_str(networkId, ZeroTierNative.ZTS_AF_INET));
+ }
+ catch (Exception e) {
+ return null;
+ }
+ }
+
+ /**
+ * Get the first-assigned IPv6 address
+ *
+ * @param networkId Network to get assigned address for
+ *
+ * @return address
+ */
+ public InetAddress getIPv6Address(long networkId)
+ {
+ try {
+ return InetAddress.getByName(ZeroTierNative.zts_addr_get_str(networkId, ZeroTierNative.ZTS_AF_INET6));
+ }
+ catch (Exception e) {
+ return null;
+ }
+ }
+
+ /**
+ * Get the first-assigned IPv6 address
+ *
+ * @param networkId Network to get assigned address for
+ *
+ * @return address
+ */
+ public String getMACAddress(long networkId)
+ {
+ return ZeroTierNative.zts_net_get_mac_str(networkId);
+ }
+}