itAdd the Zenroom dependency and implement a ZenroomExec wrapper. - tordam - A library for peer discovery inside the Tor network Err parazyd.org 70 hgit clone https://git.parazyd.org/tordam URL:https://git.parazyd.org/tordam parazyd.org 70 1Log /git/tordam/log.gph parazyd.org 70 1Files /git/tordam/files.gph parazyd.org 70 1Refs /git/tordam/refs.gph parazyd.org 70 1README /git/tordam/file/README.md.gph parazyd.org 70 1LICENSE /git/tordam/file/LICENSE.gph parazyd.org 70 i--- Err parazyd.org 70 1commit fed0429355edea309d795101fa670b12d81a3ece /git/tordam/commit/fed0429355edea309d795101fa670b12d81a3ece.gph parazyd.org 70 1parent c1244f4e38f1d46d25d10688a8ea921cac7cc8ba /git/tordam/commit/c1244f4e38f1d46d25d10688a8ea921cac7cc8ba.gph parazyd.org 70 hAuthor: parazyd URL:mailto:parazyd@dyne.org parazyd.org 70 iDate: Mon, 29 Oct 2018 14:23:00 +0100 Err parazyd.org 70 i Err parazyd.org 70 iAdd the Zenroom dependency and implement a ZenroomExec wrapper. Err parazyd.org 70 i Err parazyd.org 70 iDiffstat: Err parazyd.org 70 i M README.md | 13 +++++++++++++ Err parazyd.org 70 i M pkg/damlib/helpers.go | 11 +++++++++++ Err parazyd.org 70 i A pkg/damlib/zenroom.h | 103 +++++++++++++++++++++++++++++++ Err parazyd.org 70 i Err parazyd.org 70 i3 files changed, 127 insertions(+), 0 deletions(-) Err parazyd.org 70 i--- Err parazyd.org 70 1diff --git a/README.md b/README.md /git/tordam/file/README.md.gph parazyd.org 70 it@@ -25,6 +25,7 @@ github.com/go-redis/redis Err parazyd.org 70 i ``` Err parazyd.org 70 i Err parazyd.org 70 i #### Python 3 Err parazyd.org 70 i+ Err parazyd.org 70 i ``` Err parazyd.org 70 i https://stem.torproject.org/ Err parazyd.org 70 i ``` Err parazyd.org 70 it@@ -46,3 +47,15 @@ to create hidden services and retrieve hidden service descriptors. Err parazyd.org 70 i Redis is our storage backend where information about nodes is held. Err parazyd.org 70 i Err parazyd.org 70 i Working configurations are provided in the `contrib` directory. Err parazyd.org 70 i+ Err parazyd.org 70 i+ Err parazyd.org 70 i+#### Zenroom Err parazyd.org 70 i+ Err parazyd.org 70 i+``` Err parazyd.org 70 i+https://github.com/decodeproject/zenroom Err parazyd.org 70 i+``` Err parazyd.org 70 i+ Err parazyd.org 70 i+The shared library can be acquired by cloning the above repository and Err parazyd.org 70 i+running `make linux-go`, which will compile a `.so` located in Err parazyd.org 70 i+`build/go/libzenroomgo.so`. You will then need to install it on your Err parazyd.org 70 i+system to a place such as `/usr/lib/`. Err parazyd.org 70 1diff --git a/pkg/damlib/helpers.go b/pkg/damlib/helpers.go /git/tordam/file/pkg/damlib/helpers.go.gph parazyd.org 70 it@@ -20,6 +20,12 @@ package damlib Err parazyd.org 70 i * along with this source code. If not, see . Err parazyd.org 70 i */ Err parazyd.org 70 i Err parazyd.org 70 i+// #cgo LDFLAGS: -lzenroomgo Err parazyd.org 70 i+// Err parazyd.org 70 i+// #include Err parazyd.org 70 i+// #include "zenroom.h" Err parazyd.org 70 i+import "C" Err parazyd.org 70 i+ Err parazyd.org 70 i import ( Err parazyd.org 70 i "bytes" Err parazyd.org 70 i "compress/gzip" Err parazyd.org 70 it@@ -79,3 +85,8 @@ func ParseDirs(sl []string, data []byte) []string { Err parazyd.org 70 i } Err parazyd.org 70 i return sl Err parazyd.org 70 i } Err parazyd.org 70 i+ Err parazyd.org 70 i+func ZenroomExec(script, conf, keys, data string, verbosity int) int { Err parazyd.org 70 i+ return int(C.zenroom_exec(C.CString(script), C.CString(conf), Err parazyd.org 70 i+ C.CString(keys), C.CString(data), C.int(verbosity))) Err parazyd.org 70 i+} Err parazyd.org 70 1diff --git a/pkg/damlib/zenroom.h b/pkg/damlib/zenroom.h /git/tordam/file/pkg/damlib/zenroom.h.gph parazyd.org 70 it@@ -0,0 +1,103 @@ Err parazyd.org 70 i+/* Zenroom (DECODE project) Err parazyd.org 70 i+ * Err parazyd.org 70 i+ * (c) Copyright 2017-2018 Dyne.org foundation Err parazyd.org 70 i+ * designed, written and maintained by Denis Roio Err parazyd.org 70 i+ * Err parazyd.org 70 i+ * This source code is free software; you can redistribute it and/or Err parazyd.org 70 i+ * modify it under the terms of the GNU Public License as published Err parazyd.org 70 i+ * by the Free Software Foundation; either version 3 of the License, Err parazyd.org 70 i+ * or (at your option) any later version. Err parazyd.org 70 i+ * Err parazyd.org 70 i+ * This source code is distributed in the hope that it will be useful, Err parazyd.org 70 i+ * but WITHOUT ANY WARRANTY; without even the implied warranty of Err parazyd.org 70 i+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Err parazyd.org 70 i+ * Please refer to the GNU Public License for more details. Err parazyd.org 70 i+ * Err parazyd.org 70 i+ * You should have received a copy of the GNU Public License along Err parazyd.org 70 i+ * with this source code; if not, write to: Free Software Foundation, Err parazyd.org 70 i+ * Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Err parazyd.org 70 i+ */ Err parazyd.org 70 i+ Err parazyd.org 70 i+#ifndef __ZENROOM_H__ Err parazyd.org 70 i+#define __ZENROOM_H__ Err parazyd.org 70 i+ Err parazyd.org 70 i+///////////////////////////////////////// Err parazyd.org 70 i+// high level api: one simple call Err parazyd.org 70 i+ Err parazyd.org 70 i+int zenroom_exec(char *script, char *conf, char *keys, Err parazyd.org 70 i+ char *data, int verbosity); Err parazyd.org 70 i+ Err parazyd.org 70 i+// in case buffers should be used instead of stdout/err file Err parazyd.org 70 i+// descriptors, this call defines where to print out the output and Err parazyd.org 70 i+// the maximum sizes allowed for it. Output is NULL terminated. Err parazyd.org 70 i+int zenroom_exec_tobuf(char *script, char *conf, char *keys, Err parazyd.org 70 i+ char *data, int verbosity, Err parazyd.org 70 i+ char *stdout_buf, size_t stdout_len, Err parazyd.org 70 i+ char *stderr_buf, size_t stderr_len); Err parazyd.org 70 i+ Err parazyd.org 70 i+// to obtain the Abstract Syntax Tree (AST) of a script Err parazyd.org 70 i+// (output is in metalua formatted as JSON) Err parazyd.org 70 i+int zenroom_parse_ast(char *script, int verbosity, Err parazyd.org 70 i+ char *stdout_buf, size_t stdout_len, Err parazyd.org 70 i+ char *stderr_buf, size_t stderr_len); Err parazyd.org 70 i+ Err parazyd.org 70 i+void set_debug(int lev); Err parazyd.org 70 i+ Err parazyd.org 70 i+//////////////////////////////////////// Err parazyd.org 70 i+ Err parazyd.org 70 i+ Err parazyd.org 70 i+// lower level api: init (exec_line*) teardown Err parazyd.org 70 i+ Err parazyd.org 70 i+// heap initialised by the memory manager Err parazyd.org 70 i+typedef struct { Err parazyd.org 70 i+ void* (*malloc)(size_t size); Err parazyd.org 70 i+ void* (*realloc)(void *ptr, size_t size); Err parazyd.org 70 i+ void (*free)(void *ptr); Err parazyd.org 70 i+ void* (*sys_malloc)(size_t size); Err parazyd.org 70 i+ void* (*sys_realloc)(void *ptr, size_t size); Err parazyd.org 70 i+ void (*sys_free)(void *ptr); Err parazyd.org 70 i+ char *heap; Err parazyd.org 70 i+ size_t heap_size; Err parazyd.org 70 i+} zen_mem_t; Err parazyd.org 70 i+ Err parazyd.org 70 i+// zenroom context, also available as "_Z" global in lua space Err parazyd.org 70 i+// contents are opaque in lua and available only as lightuserdata Err parazyd.org 70 i+typedef struct { Err parazyd.org 70 i+ void *lua; // (lua_State*) Err parazyd.org 70 i+ zen_mem_t *mem; // memory manager heap Err parazyd.org 70 i+ Err parazyd.org 70 i+ char *stdout_buf; Err parazyd.org 70 i+ size_t stdout_len; Err parazyd.org 70 i+ size_t stdout_pos; Err parazyd.org 70 i+ char *stderr_buf; Err parazyd.org 70 i+ size_t stderr_len; Err parazyd.org 70 i+ size_t stderr_pos; Err parazyd.org 70 i+ Err parazyd.org 70 i+ int errorlevel; Err parazyd.org 70 i+ void *userdata; // anything passed at init (reserved for caller) Err parazyd.org 70 i+} zenroom_t; Err parazyd.org 70 i+ Err parazyd.org 70 i+ Err parazyd.org 70 i+zenroom_t *zen_init(const char *conf, char *keys, char *data); Err parazyd.org 70 i+int zen_exec_script(zenroom_t *Z, const char *script); Err parazyd.org 70 i+void zen_teardown(zenroom_t *zenroom); Err parazyd.org 70 i+ Err parazyd.org 70 i+#define UMM_HEAP (64*1024) // 64KiB (masked with 0x7fff) Err parazyd.org 70 i+#define MAX_FILE (64*1024) // load max 64KiB files Err parazyd.org 70 i+#ifndef MAX_STRING Err parazyd.org 70 i+#define MAX_STRING 4097 // max 4KiB strings Err parazyd.org 70 i+#endif Err parazyd.org 70 i+#define MAX_OCTET 2049 // max 2KiB octets Err parazyd.org 70 i+ Err parazyd.org 70 i+#define LUA_BASELIBNAME "_G" Err parazyd.org 70 i+ Err parazyd.org 70 i+#define ZEN_BITS 8 Err parazyd.org 70 i+#ifndef SIZE_MAX Err parazyd.org 70 i+#if ZEN_BITS == 32 Err parazyd.org 70 i+#define SIZE_MAX 4294967296 Err parazyd.org 70 i+#elif ZEN_BITS == 8 Err parazyd.org 70 i+#define SIZE_MAX 65536 Err parazyd.org 70 i+#endif Err parazyd.org 70 i+#endif Err parazyd.org 70 i+ Err parazyd.org 70 i+#endif Err parazyd.org 70 .