Exposed stop_service() to java-land
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
//
|
||||
// ZeroTierSDK_iOS.h
|
||||
// ZeroTierSDK_iOS
|
||||
//
|
||||
// Created by Joseph Henry on 6/15/16.
|
||||
// Copyright © 2016 ZeroTier Inc. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
//! Project version number for ZeroTierSDK_iOS.
|
||||
FOUNDATION_EXPORT double ZeroTierSDK_iOSVersionNumber;
|
||||
|
||||
//! Project version string for ZeroTierSDK_iOS.
|
||||
FOUNDATION_EXPORT const unsigned char ZeroTierSDK_iOSVersionString[];
|
||||
|
||||
// In this header, you should import all the public headers of your framework using statements like #import <ZeroTierSDK_iOS/PublicHeader.h>
|
||||
|
||||
|
||||
@@ -46,36 +46,38 @@ public class MainActivity extends AppCompatActivity {
|
||||
int sock = zt.socket(SDK.AF_INET, SDK.SOCK_STREAM, 0);
|
||||
|
||||
if((err = zt.bind(sock, "0.0.0.0", 8080, nwid)) < 0)
|
||||
Log.d("TEST", "bind_err = " + err + "\n");
|
||||
Log.d("ZT-TEST", "bind_err = " + err + "\n");
|
||||
|
||||
if((err = zt.listen(sock,1)) < 0)
|
||||
Log.d("TEST", "listen_err = " + err);
|
||||
Log.d("ZT-TEST", "listen_err = " + err);
|
||||
|
||||
if((err = zt.accept(sock,null)) < 0)
|
||||
Log.d("TEST", "accept_err = " + err);
|
||||
Log.d("ZT-TEST", "accept_err = " + err);
|
||||
|
||||
Log.d("TEST", "Waiting to accept connection...");
|
||||
Log.d("ZT-TEST", "Waiting to accept connection...");
|
||||
|
||||
// ...
|
||||
}
|
||||
|
||||
// TCP Echo test (CLIENT)
|
||||
// TCP Echo ZT-TEST (CLIENT)
|
||||
if(mode==2)
|
||||
{
|
||||
Log.d("TEST", "\n\nStarting TCP Echo Test\n\n");
|
||||
Log.d("ZT-TEST", "\n\nStarting TCP Echo ZT-TEST\n\n");
|
||||
zt.join_network(nwid);
|
||||
int sock = zt.socket(SDK.AF_INET, SDK.SOCK_STREAM, 0);
|
||||
String msg = "Welcome to the machine!";
|
||||
err = zt.connect(sock, "28.206.65.211", 8080, nwid);
|
||||
err = zt.connect(sock, "28.206.65.211", 8099, nwid);
|
||||
|
||||
Log.d("TEST", "err = " + err + "\n");
|
||||
Log.d("ZT-TEST", "err = " + err + "\n");
|
||||
|
||||
return;
|
||||
|
||||
// ECHO
|
||||
while(true)
|
||||
{
|
||||
// TX
|
||||
if((err = zt.write(sock, msg.getBytes(), msg.length())) > 0) {
|
||||
Log.d("TEST", "TX: " + msg + " --- " + err + " bytes");
|
||||
Log.d("ZT-TEST", "TX: " + msg + " --- " + err + " bytes");
|
||||
}
|
||||
|
||||
// RX
|
||||
@@ -83,12 +85,14 @@ public class MainActivity extends AppCompatActivity {
|
||||
Arrays.fill(buffer, (byte)0);
|
||||
if((err = zt.read(sock, buffer, buffer.length)) > 0) {
|
||||
String bufStr = new String(buffer).substring(0, err);
|
||||
Log.d("TEST", "RX: " + bufStr + " --- " + err + " bytes");
|
||||
Log.d("ZT-TEST", "RX: " + bufStr + " --- " + err + " bytes");
|
||||
}
|
||||
}
|
||||
|
||||
// zt.stop_service();
|
||||
}
|
||||
|
||||
// SOCKS5 Proxy test
|
||||
// SOCKS5 Proxy ZT-TEST
|
||||
if(mode==3)
|
||||
{
|
||||
zt.join_network(nwid);
|
||||
@@ -98,18 +102,18 @@ public class MainActivity extends AppCompatActivity {
|
||||
Log.d("ZTSDK", "Setting up connection to SDK proxy server");
|
||||
SocketAddress proxyAddr = new InetSocketAddress("127.0.0.1", proxyPort);
|
||||
Proxy proxy = new Proxy(Proxy.Type.SOCKS, proxyAddr);
|
||||
Log.d("TEST", "toString() = " + proxy.toString());
|
||||
Log.d("ZT-TEST", "toString() = " + proxy.toString());
|
||||
final Socket s = new Socket(proxy);
|
||||
final SocketAddress remoteAddr = new InetSocketAddress("10.9.9.100", 8080);
|
||||
|
||||
// Wait for address to be assigned
|
||||
ArrayList<String> addresses = zt.get_addresses(nwid);
|
||||
for(int i=0; i<addresses.size(); i++) {
|
||||
Log.d("TEST", "Address = " + addresses.get(i));
|
||||
Log.d("ZT-TEST", "Address = " + addresses.get(i));
|
||||
}
|
||||
while(addresses.size() > 0 && addresses.get(0).equals("-1.-1.-1.-1/-1")) {
|
||||
try {
|
||||
Log.d("TEST", "waiting for address");
|
||||
Log.d("ZT-TEST", "waiting for address");
|
||||
Thread.sleep(100);
|
||||
} catch (java.lang.InterruptedException e) {
|
||||
}
|
||||
@@ -123,36 +127,36 @@ public class MainActivity extends AppCompatActivity {
|
||||
s.connect(remoteAddr, 1000);
|
||||
}
|
||||
catch(java.io.IOException e) {
|
||||
Log.d("TEST", "Unable to establish connection to SOCKS5 Proxy server\n");
|
||||
Log.d("ZT-TEST", "Unable to establish connection to SOCKS5 Proxy server\n");
|
||||
}
|
||||
}
|
||||
}).start();
|
||||
}
|
||||
|
||||
// UDP Echo test
|
||||
// UDP Echo ZT-TEST
|
||||
if(mode==4)
|
||||
{
|
||||
// Remote server address (will be populated by recvfrom()
|
||||
ZTAddress remoteServer = new ZTAddress();
|
||||
ZTAddress bindAddr = new ZTAddress("0.0.0.0", 8080);
|
||||
|
||||
Log.d("TEST", "\n\nStarting UDP Echo Test\n\n");
|
||||
Log.d("ZT-TEST", "\n\nStarting UDP Echo ZT-TEST\n\n");
|
||||
nwid = "8056c2e21c000001";
|
||||
zt.join_network(nwid);
|
||||
int sock = zt.socket(SDK.AF_INET, SDK.SOCK_DGRAM, 0);
|
||||
|
||||
Log.d("TEST", "binding...");
|
||||
Log.d("ZT-TEST", "binding...");
|
||||
if((err = zt.bind(sock, bindAddr, nwid)) < 0)
|
||||
Log.d("TEST", "bind_err = " + err + "\n");
|
||||
Log.d("ZT-TEST", "bind_err = " + err + "\n");
|
||||
if((err = zt.listen(sock, 0)) < 0)
|
||||
Log.d("TEST", "listen_err = " + err);
|
||||
Log.d("ZT-TEST", "listen_err = " + err);
|
||||
ArrayList<String> addresses = zt.get_addresses(nwid);
|
||||
if(addresses.size() < 0) {
|
||||
Log.d("TEST", "unable to obtain ZT address");
|
||||
Log.d("ZT-TEST", "unable to obtain ZT address");
|
||||
return;
|
||||
}
|
||||
else {
|
||||
Log.d("TEST", "IPV4 = " + addresses.get(0));
|
||||
Log.d("ZT-TEST", "IPV4 = " + addresses.get(0));
|
||||
}
|
||||
|
||||
String bufStr;
|
||||
@@ -166,16 +170,16 @@ public class MainActivity extends AppCompatActivity {
|
||||
// RX
|
||||
if((err = zt.recvfrom(sock, buffer, 32, 0, remoteServer)) > 0) {
|
||||
bufStr = new String(buffer).substring(0, err);
|
||||
Log.d("TEST", "read (" + err + ") bytes from " + remoteServer.Address() + " : " + remoteServer.Port() + ", msg = " + bufStr);
|
||||
Log.d("ZT-TEST", "read (" + err + ") bytes from " + remoteServer.Address() + " : " + remoteServer.Port() + ", msg = " + bufStr);
|
||||
|
||||
// TX
|
||||
String msg = "Welcome response from android\n";
|
||||
err = zt.sendto(sock, msg.getBytes(), msg.length(), 0, remoteServer);
|
||||
if (err < 0)
|
||||
Log.d("TEST", "sendto_err = " + err);
|
||||
Log.d("ZT-TEST", "sendto_err = " + err);
|
||||
}
|
||||
}
|
||||
//Log.d("TEST", "leaving network");
|
||||
//Log.d("ZT-TEST", "leaving network");
|
||||
//zt.leave_network(nwid);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -94,7 +94,7 @@ void zts_leave_network(const char * nwid);
|
||||
bool zts_is_running();
|
||||
void zts_get_addresses(const char * nwid, char * addrstr);
|
||||
int zts_get_device_id();
|
||||
void zts_terminate();
|
||||
void zts_stop_service();
|
||||
bool zts_is_relayed();
|
||||
// ZT Intercept/RPC Controls
|
||||
void set_intercept_status(int mode); /* TODO: Rethink this */
|
||||
@@ -134,12 +134,12 @@ ssize_t zts_recvmsg(RECVMSG_SIG);
|
||||
#if defined(__ANDROID__)
|
||||
// Exported JNI : ZT SERVICE CONTROLS
|
||||
JNIEXPORT jint JNICALL Java_ZeroTier_SDK_zt_1start_1service(JNIEnv *env, jobject thisObj, jstring path);
|
||||
JNIEXPORT jboolean JNICALL Java_ZeroTier_SDK_zt_1stop_service();
|
||||
JNIEXPORT void JNICALL Java_ZeroTier_SDK_zt_1join_1network(JNIEnv *env, jobject thisObj, jstring nwid);
|
||||
JNIEXPORT void JNICALL Java_ZeroTier_SDK_zt_1leave_1network(JNIEnv *env, jobject thisObj, jstring nwid);
|
||||
JNIEXPORT jboolean JNICALL Java_ZeroTier_SDK_zt_1running(JNIEnv *env, jobject thisObj);
|
||||
JNIEXPORT jobject JNICALL Java_ZeroTier_SDK_zt_1get_1addresses(JNIEnv *env, jobject thisObj, jstring nwid);
|
||||
JNIEXPORT jboolean JNICALL Java_ZeroTier_SDK_zt_1is_1relayed();
|
||||
JNIEXPORT jboolean JNICALL Java_ZeroTier_SDK_zt_1terminate_service();
|
||||
// Exported JNI : SOCKS5 PROXY SERVER CONTROLS
|
||||
JNIEXPORT jint JNICALL Java_ZeroTier_SDK_zt_1start_1proxy_1server(JNIEnv *env, jobject thisObj, jstring nwid, jobject zaddr);
|
||||
JNIEXPORT jint JNICALL Java_ZeroTier_SDK_zt_1stop_1proxy_1server(JNIEnv *env, jobject thisObj, jstring nwid);
|
||||
|
||||
@@ -16,6 +16,7 @@ void enable_intercept();
|
||||
|
||||
// ZT SERVICE CONTROLS
|
||||
void start_service(const char * path);
|
||||
void stop_service();
|
||||
void start_service_and_rpc(const char * path, const char * nwid);
|
||||
void zt_join_network(const char *nwid);
|
||||
void zt_leave_network(const char *nwid);
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
#define SDK_DEBUG_H
|
||||
|
||||
// Set during make (e.g. make SDK_DEBUG=2)
|
||||
#define DEBUG_LEVEL 2
|
||||
#define DEBUG_LEVEL 4
|
||||
|
||||
#define MSG_ERROR 1 // Errors
|
||||
#define MSG_TRANSFER 2 // RX/TX specific statements
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
* LLC. Start here: http://www.zerotier.com/
|
||||
*/
|
||||
|
||||
#define DEBUG_LEVEL 2 // Set this to adjust what you'd like to see in the debug traces
|
||||
#define DEBUG_LEVEL 4 // Set this to adjust what you'd like to see in the debug traces
|
||||
|
||||
#define MSG_ERROR 1 // Errors
|
||||
#define MSG_TRANSFER 2 // RX/TX specific statements
|
||||
|
||||
@@ -109,7 +109,7 @@ void zts_join_network(const char * nwid) {
|
||||
}
|
||||
void zts_leave_network(const char * nwid) { zt1Service->leave(nwid); }
|
||||
bool zts_is_running() { return zt1Service->isRunning(); }
|
||||
void zts_terminate() { zt1Service->terminate(); }
|
||||
void zts_stop_service() { zt1Service->terminate(); }
|
||||
|
||||
// FIXME: Re-implemented to make it play nicer with the C-linkage required for Xcode integrations
|
||||
// Now only returns first assigned address per network. Shouldn't normally be a problem
|
||||
@@ -187,9 +187,9 @@ int zts_get_proxy_server_address(const char * nwid, struct sockaddr_storage * ad
|
||||
return false;
|
||||
}
|
||||
// Shuts down ZeroTier service and SOCKS5 Proxy server
|
||||
JNIEXPORT void JNICALL Java_ZeroTier_SDK_zt_1terminate_1service(JNIEnv *env, jobject thisObj) {
|
||||
JNIEXPORT void JNICALL Java_ZeroTier_SDK_zt_1stop_1service(JNIEnv *env, jobject thisObj) {
|
||||
if(zt1Service)
|
||||
zts_terminate();
|
||||
zts_stop_service();
|
||||
// TODO: Also terminate SOCKS5 Proxy
|
||||
// zts_stop_proxy_server();
|
||||
}
|
||||
|
||||
@@ -39,6 +39,10 @@ extern "C" void start_service(const char * path) {
|
||||
init_service(INTERCEPT_DISABLED, path);
|
||||
}
|
||||
|
||||
extern "C" void stop_service() {
|
||||
zts_stop_service();
|
||||
}
|
||||
|
||||
// Starts a ZeroTier service at the specified path and initializes the RPC mechanism
|
||||
// This will allow direct API calls
|
||||
extern "C" void start_service_and_rpc(const char * path, const char * nwid) {
|
||||
|
||||
Reference in New Issue
Block a user