summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorGianluca Boiano2018-10-23 14:14:44 +0200
committerGianluca Boiano2018-10-23 14:14:44 +0200
commit786d83d4b844f0354568893f74583eed7d1645d7 (patch)
tree5bc6c6e4e02a0c3cbff5d6cf147e23212bb3cd53
parent2fa43015fe3a3aedf96f96e77ce85d7fb313d002 (diff)
downloadaur-786d83d4b844f0354568893f74583eed7d1645d7.tar.gz
ndpi: fixed packaging
-rw-r--r--.SRCINFO5
-rw-r--r--PKGBUILD16
-rw-r--r--make-patch414
3 files changed, 426 insertions, 9 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 3255ef42effe..345fafb29858 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,15 +1,18 @@
pkgbase = ndpi
pkgdesc = Open and Extensible GPLv3 Deep Packet Inspection Library
pkgver = 2.4
- pkgrel = 1
+ pkgrel = 2
url = http://www.ntop.org/products/ndpi/
arch = i686
arch = x86_64
license = GPL3
conflicts = ndpi-svn
options = staticlibs
+ options = !strip
source = https://github.com/ntop/nDPI/archive/2.4.tar.gz
+ source = make-patch
md5sums = 110478950391bbe8b25201c6a09e2516
+ md5sums = 5b359b62300accf27087060a853f04c8
pkgname = ndpi
diff --git a/PKGBUILD b/PKGBUILD
index 427368085593..d44210030b35 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -2,17 +2,19 @@
pkgname=ndpi
pkgver=2.4
-pkgrel=1
+pkgrel=2
pkgdesc="Open and Extensible GPLv3 Deep Packet Inspection Library"
arch=('i686' 'x86_64')
url="http://www.ntop.org/products/ndpi/"
license=('GPL3')
conflicts=('ndpi-svn')
-options=('staticlibs')
-source=("https://github.com/ntop/nDPI/archive/$pkgver.tar.gz")
+options=('staticlibs' '!strip')
+source=("https://github.com/ntop/nDPI/archive/$pkgver.tar.gz"
+ make-patch)
build() {
cd ${srcdir}/nDPI-$pkgver
+ patch -Np1 -i ../make-patch
./autogen.sh
./configure --prefix=/usr --with-pic --includedir=/usr/include --libdir=/usr/lib
make
@@ -20,10 +22,8 @@ build() {
package() {
cd ${srcdir}/nDPI-$pkgver
- make DESTDIR="${pkgdir}/" install
- mv $pkgdir/usr/include/libndpi-${pkgver}*/libndpi $pkgdir/usr/include
- rm -r $pkgdir/usr/include/libndpi-${pkgver}*
- sed -i 's|\/libndpi-2.0.0||g' $pkgdir/usr/lib/pkgconfig/libndpi.pc
+ make DESTDIR="${pkgdir}" install
}
-md5sums=('110478950391bbe8b25201c6a09e2516')
+md5sums=('110478950391bbe8b25201c6a09e2516'
+ '5b359b62300accf27087060a853f04c8')
diff --git a/make-patch b/make-patch
new file mode 100644
index 000000000000..dc1e6ac1f993
--- /dev/null
+++ b/make-patch
@@ -0,0 +1,414 @@
+diff --git a/Makefile.am b/Makefile.am
+index 17c6748..4090817 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -1,8 +1,7 @@
+ ACLOCAL_AMFLAGS = -I m4
+-
+ SUBDIRS = src/lib example tests
+
+ pkgconfigdir = $(libdir)/pkgconfig
+ pkgconfig_DATA = libndpi.pc
+
+-EXTRA_DIST = libndpi.sym autogen.sh
++EXTRA_DIST = autogen.sh
+diff --git a/autogen.sh b/autogen.sh
+index 6596b2f..efeffc4 100755
+--- a/autogen.sh
++++ b/autogen.sh
+@@ -5,7 +5,7 @@ NDPI_MINOR="4"
+ NDPI_PATCH="0"
+ NDPI_VERSION_SHORT="$NDPI_MAJOR.$NDPI_MINOR.$NDPI_PATCH"
+
+-rm -f configure config.h config.h.in src/lib/Makefile.in
++rm -f configure config.h config.h.in
+
+ AUTOCONF=$(command -v autoconf)
+ AUTOMAKE=$(command -v automake)
+diff --git a/configure.seed b/configure.seed
+index 6b85c66..8f8817f 100644
+--- a/configure.seed
++++ b/configure.seed
+@@ -10,6 +10,7 @@ AC_PROG_CC
+ AM_PROG_CC_C_O
+ AX_PTHREAD
+
++NDPI_VERSION_SHORT="@NDPI_VERSION_SHORT@"
+ NDPI_MAJOR="@NDPI_MAJOR@"
+ NDPI_MINOR="@NDPI_MINOR@"
+ NDPI_PATCH="@NDPI_PATCH@"
+@@ -51,11 +52,16 @@ else
+ AC_CHECK_LIB([numa], [numa_available], [LIBNUMA="-lnuma"])
+ fi
+
+-
++if test -z `which clang`; then
++CC=gcc
++else
++CC=clang
++fi
++
+ HS_LIB=
+ HS_INC=
+
+-AC_ARG_WITH(hyperscan, [ --with-hyperscan Enable nDPI build with Intel Hyperscan])
++AC_ARG_WITH(hyperscan, [ --with-hyperscan Enable nDPI build with Intel Hyperscan])
+
+ if test "${with_hyperscan+set}" = set; then
+ BKP=$LIBS
+@@ -127,12 +133,13 @@ AC_ARG_ENABLE([debug-messages],
+
+ AC_CHECK_LIB(pthread, pthread_setaffinity_np, AC_DEFINE_UNQUOTED(HAVE_PTHREAD_SETAFFINITY_NP, 1, [libc has pthread_setaffinity_np]))
+
+-AC_CONFIG_FILES([Makefile example/Makefile tests/Makefile libndpi.pc src/include/ndpi_define.h])
++AC_CONFIG_FILES([Makefile example/Makefile tests/Makefile libndpi.pc src/include/ndpi_define.h src/lib/Makefile])
+ AC_CONFIG_HEADERS(src/include/ndpi_config.h)
+ AC_SUBST(GIT_RELEASE)
+ AC_SUBST(NDPI_MAJOR)
+ AC_SUBST(NDPI_MINOR)
+ AC_SUBST(NDPI_PATCH)
++AC_SUBST(NDPI_VERSION_SHORT)
+ AC_SUBST(SVN_DATE)
+ AC_SUBST(JSON_C_LIB)
+ AC_SUBST(PCAP_INC)
+diff --git a/src/include/ndpi_api.h b/src/include/ndpi_api.h
+index 3fefc8e..ccbad73 100644
+--- a/src/include/ndpi_api.h
++++ b/src/include/ndpi_api.h
+@@ -274,7 +274,7 @@ extern "C" {
+ */
+ u_int16_t ndpi_get_flow_masterprotocol(struct ndpi_detection_module_struct *ndpi_struct,
+ struct ndpi_flow_struct *flow);
+-
++
+ /**
+ * API call that is called internally by ndpi_detection_process_packet or by apps
+ * that want to avoid calling ndpi_detection_process_packet as they have already
+@@ -420,7 +420,7 @@ extern "C" {
+ char *bigram_to_match);
+
+ /**
+- * Write the protocol name in the buffer -buf- as master_protocol.protocol
++ * Write the protocol name in the buffer -buf- as master_protocol.protocol (string)
+ *
+ * @par ndpi_mod = the detection module
+ * @par proto = the struct ndpi_protocol contain the protocols name
+@@ -432,6 +432,32 @@ extern "C" {
+ char* ndpi_protocol2name(struct ndpi_detection_module_struct *ndpi_mod,
+ ndpi_protocol proto, char *buf, u_int buf_len);
+
++ /**
++ * Same as ndpi_protocol2name() with the difference that the numeric protocol
++ * name is returned
++ *
++ * @par ndpi_mod = the detection module
++ * @par proto = the struct ndpi_protocol contain the protocols name
++ * @par buf = the buffer to write the name of the protocols
++ * @par buf_len = the length of the buffer
++ * @return the buffer contains the master_protocol and protocol name
++ *
++ */
++ char* ndpi_protocol2id(struct ndpi_detection_module_struct *ndpi_mod,
++ ndpi_protocol proto, char *buf, u_int buf_len);
++ /**
++ * Write the protocol name in the buffer -buf- as master_protocol.protocol (number)
++ *
++ * @par ndpi_mod = the detection module
++ * @par proto = the struct ndpi_protocol contain the protocols name
++ * @par buf = the buffer to write the name of the protocols
++ * @par buf_len = the length of the buffer
++ * @return the buffer contains the master_protocol and protocol name
++ *
++ */
++ char* ndpi_protocol2id(struct ndpi_detection_module_struct *ndpi_mod,
++ ndpi_protocol proto, char *buf, u_int buf_len);
++
+ /**
+ * Find out if a given category is custom/user-defined
+ *
+@@ -733,7 +759,7 @@ extern "C" {
+ u_int ndpi_get_ndpi_num_custom_protocols(struct ndpi_detection_module_struct *ndpi_mod);
+ u_int ndpi_get_ndpi_detection_module_size();
+ void ndpi_set_log_level(struct ndpi_detection_module_struct *ndpi_mod, u_int l);
+-
++
+ /**
+ * Add a string to match to an automata
+ *
+diff --git a/src/include/ndpi_typedefs.h b/src/include/ndpi_typedefs.h
+index 6a61b44..386b217 100644
+--- a/src/include/ndpi_typedefs.h
++++ b/src/include/ndpi_typedefs.h
+@@ -26,9 +26,6 @@
+
+ #include "ndpi_define.h"
+
+-/* Needed to have access to HAVE_* defines */
+-#include "ndpi_config.h"
+-
+ /* NDPI_LOG_LEVEL */
+ typedef enum {
+ NDPI_LOG_ERROR,
+@@ -854,7 +851,17 @@ typedef struct ndpi_proto {
+ #define NUM_CUSTOM_CATEGORIES 5
+ #define CUSTOM_CATEGORY_LABEL_LEN 32
+
++#ifdef NDPI_LIB_COMPILATION
++
++/* Needed to have access to HAVE_* defines */
++#include "ndpi_define.h"
++
+ #ifdef HAVE_HYPERSCAN
++struct hs {
++ hs_database_t *database;
++ hs_scratch_t *scratch;
++};
++
+ struct hs_list {
+ char *expression;
+ unsigned int id;
+@@ -862,8 +869,6 @@ struct hs_list {
+ };
+ #endif
+
+-#ifdef NDPI_LIB_COMPILATION
+-
+ struct ndpi_detection_module_struct {
+ NDPI_PROTOCOL_BITMASK detection_bitmask;
+ NDPI_PROTOCOL_BITMASK generic_http_packet_bitmask;
+diff --git a/src/lib/Makefile b/src/lib/Makefile
+deleted file mode 100644
+index 19c6f1c..0000000
+--- a/src/lib/Makefile
++++ /dev/null
+@@ -1,26 +0,0 @@
+-#
+-# Simple non-autotools dependent makefile
+-#
+-# ./autogen.sh
+-# cd src/lib
+-# make -f Makefile.simple
+-#
+-CFLAGS += -fPIC -DPIC -I../include -Ithird_party/include -DNDPI_LIB_COMPILATION -g
+-RANLIB = ranlib
+-
+-OBJECTS = $(patsubst protocols/%.c, protocols/%.o, $(wildcard protocols/*.c)) $(patsubst third_party/src/%.c, third_party/src/%.o, $(wildcard third_party/src/*.c)) ndpi_main.o
+-HEADERS = $(wildcard ../include/*.h)
+-
+-all: libndpi.a
+-
+-ndpi_main.c: ndpi_content_match.c.inc
+-
+-libndpi.a: $(OBJECTS)
+- ar rc $@ $(OBJECTS)
+- $(RANLIB) $@
+-
+-%.o: %.c $(HEADERS) Makefile
+- $(CC) $(CFLAGS) -c $< -o $@
+-
+-clean:
+- /bin/rm -f libndpi.a $(OBJECTS)
+diff --git a/src/lib/Makefile.in b/src/lib/Makefile.in
+new file mode 100644
+index 0000000..dc1e34b
+--- /dev/null
++++ b/src/lib/Makefile.in
+@@ -0,0 +1,54 @@
++#
++# Simple non-autotools dependent makefile
++#
++# ./autogen.sh
++# cd src/lib
++# make Makefile
++#
++
++
++#
++# Installation directories
++#
++prefix = /usr/
++libdir = ${prefix}/lib
++includedir = ${prefix}/include/ndpi
++CC = @CC@
++CFLAGS += -fPIC -DPIC -I../include -Ithird_party/include -DNDPI_LIB_COMPILATION -O2 # -g
++RANLIB = ranlib
++
++OBJECTS = $(patsubst protocols/%.c, protocols/%.o, $(wildcard protocols/*.c)) $(patsubst third_party/src/%.c, third_party/src/%.o, $(wildcard third_party/src/*.c)) ndpi_main.o
++HEADERS = $(wildcard ../include/*.h)
++NDPI_LIB_STATIC = libndpi.a
++NDPI_LIB_SHARED_BASE = libndpi.so
++NDPI_LIB_SHARED = $(NDPI_LIB_SHARED_BASE).@NDPI_VERSION_SHORT@
++NDPI_LIBS = $(NDPI_LIB_STATIC) $(NDPI_LIB_SHARED)
++
++ifeq ($(OS),Darwin)
++CC=clang
++endif
++
++all: $(NDPI_LIBS)
++
++ndpi_main.c: ndpi_content_match.c.inc
++
++$(NDPI_LIB_STATIC): $(OBJECTS)
++ ar rc $@ $(OBJECTS)
++ $(RANLIB) $@
++
++$(NDPI_LIB_SHARED): $(OBJECTS)
++ $(CC) -shared -fPIC -o $@ $(OBJECTS)
++ ln -fs $(NDPI_LIB_SHARED) $(NDPI_LIB_SHARED_BASE)
++
++%.o: %.c $(HEADERS) Makefile
++ $(CC) $(CFLAGS) -c $< -o $@
++
++clean:
++ /bin/rm -f $(NDPI_LIB_STATIC) $(OBJECTS) *.o *.so *.lo
++
++install: $(NDPI_LIBS)
++ mkdir -p $(DESTDIR)$(libdir)
++ cp $(NDPI_LIBS) $(DESTDIR)$(libdir)/
++ ln -Fs $(NDPI_LIB_SHARED) $(DESTDIR)$(libdir)/$(NDPI_LIB_SHARED_BASE)
++ mkdir -p $(DESTDIR)$(includedir)
++ cp ../include/*.h $(DESTDIR)$(includedir)
+diff --git a/src/lib/ndpi_main.c b/src/lib/ndpi_main.c
+index b002126..e1cf577 100644
+--- a/src/lib/ndpi_main.c
++++ b/src/lib/ndpi_main.c
+@@ -43,21 +43,12 @@
+
+ #include "ndpi_content_match.c.inc"
+ #include "third_party/include/ndpi_patricia.h"
+-#include "third_party/src/ndpi_patricia.c"
+ #include "third_party/include/hash.h"
+-#include "third_party/src/hash.c"
+
+ #ifdef HAVE_HYPERSCAN
+ #include <hs/hs.h>
+ #endif
+
+-#ifdef HAVE_HYPERSCAN
+-struct hs {
+- hs_database_t *database;
+- hs_scratch_t *scratch;
+-};
+-#endif
+-
+ #define NDPI_CONST_GENERIC_PROTOCOL_NAME "GenericProtocol"
+
+ static int _ndpi_debug_callbacks = 0;
+@@ -1234,7 +1225,7 @@ static void ndpi_init_protocol_defaults(struct ndpi_detection_module_struct *ndp
+ ndpi_build_default_ports(ports_b, 0, 0, 0, 0, 0) /* UDP */);
+ ndpi_set_proto_defaults(ndpi_mod, NDPI_PROTOCOL_FUN, NDPI_PROTOCOL_VIDTO,
+ no_master,
+- no_master, "PPStream", NDPI_PROTOCOL_CATEGORY_MEDIA,
++ no_master, "Vidto", NDPI_PROTOCOL_CATEGORY_MEDIA,
+ ndpi_build_default_ports(ports_a, 0, 0, 0, 0, 0) /* TCP */,
+ ndpi_build_default_ports(ports_b, 0, 0, 0, 0, 0) /* UDP */);
+
+@@ -5328,6 +5319,23 @@ ndpi_protocol ndpi_guess_undetected_protocol(struct ndpi_detection_module_struct
+
+ /* ****************************************************** */
+
++char* ndpi_protocol2id(struct ndpi_detection_module_struct *ndpi_mod,
++ ndpi_protocol proto, char *buf, u_int buf_len) {
++ if((proto.master_protocol != NDPI_PROTOCOL_UNKNOWN)
++ && (proto.master_protocol != proto.app_protocol)) {
++ if(proto.app_protocol != NDPI_PROTOCOL_UNKNOWN)
++ snprintf(buf, buf_len, "%u.%u",
++ proto.master_protocol, proto.app_protocol);
++ else
++ snprintf(buf, buf_len, "%u", proto.master_protocol);
++ } else
++ snprintf(buf, buf_len, "%u", proto.app_protocol);
++
++ return(buf);
++}
++
++/* ****************************************************** */
++
+ char* ndpi_protocol2name(struct ndpi_detection_module_struct *ndpi_mod,
+ ndpi_protocol proto, char *buf, u_int buf_len) {
+ if((proto.master_protocol != NDPI_PROTOCOL_UNKNOWN)
+diff --git a/src/lib/protocols/ssl.c b/src/lib/protocols/ssl.c
+index b8c3697..59aedcb 100644
+--- a/src/lib/protocols/ssl.c
++++ b/src/lib/protocols/ssl.c
+@@ -27,7 +27,7 @@
+
+ #include "ndpi_api.h"
+
+-/* #define CERTIFICATE_DEBUG 1 */
++// #define CERTIFICATE_DEBUG 1
+ #define NDPI_MAX_SSL_REQUEST_SIZE 10000
+
+ /* Skype.c */
+@@ -246,28 +246,43 @@ int getSSLcertificate(struct ndpi_detection_module_struct *ndpi_struct,
+ u_int16_t compression_len;
+ u_int16_t extensions_len;
+
+- compression_len = packet->payload[offset+1];
+- offset += compression_len + 3;
++ offset++;
++ compression_len = packet->payload[offset];
++ offset++;
++
++#ifdef CERTIFICATE_DEBUG
++ printf("SSL [compression_len: %u]\n", compression_len);
++#endif
++
++ // offset += compression_len + 3;
++ offset += compression_len;
+
+ if(offset < total_len) {
+- extensions_len = packet->payload[offset];
++ extensions_len = ntohs(*((u_int16_t*)&packet->payload[offset]));
++ offset += 2;
++
++#ifdef CERTIFICATE_DEBUG
++ printf("SSL [extensions_len: %u]\n", extensions_len);
++#endif
+
+- if((extensions_len+offset) < total_len) {
++ if((extensions_len+offset) <= total_len) {
+ /* Move to the first extension
+ Type is u_int to avoid possible overflow on extension_len addition */
+- u_int extension_offset = 1;
++ u_int extension_offset = 0;
+
+ while(extension_offset < extensions_len) {
+ u_int16_t extension_id, extension_len;
+
+- memcpy(&extension_id, &packet->payload[offset+extension_offset], 2);
++ extension_id = ntohs(*((u_int16_t*)&packet->payload[offset+extension_offset]));
+ extension_offset += 2;
+
+- memcpy(&extension_len, &packet->payload[offset+extension_offset], 2);
++ extension_len = ntohs(*((u_int16_t*)&packet->payload[offset+extension_offset]));
+ extension_offset += 2;
+
+- extension_id = ntohs(extension_id), extension_len = ntohs(extension_len);
+-
++#ifdef CERTIFICATE_DEBUG
++ printf("SSL [extension_id: %u][extension_len: %u]\n", extension_id, extension_len);
++#endif
++
+ if(extension_id == 0) {
+ u_int begin = 0,len;
+ char *server_name = (char*)&packet->payload[offset+extension_offset];
+@@ -316,6 +331,7 @@ int sslTryAndRetrieveServerCertificate(struct ndpi_detection_module_struct *ndpi
+ if((packet->payload_packet_len > 9) && (packet->payload[0] == 0x16)) {
+ char certificate[64];
+ int rc;
++
+ certificate[0] = '\0';
+ rc = getSSLcertificate(ndpi_struct, flow, certificate, sizeof(certificate));
+ packet->ssl_certificate_num_checks++;
+diff --git a/src/lib/third_party/include/hash.h b/src/lib/third_party/include/hash.h
+index 4f53e5a..2251706 100644
+--- a/src/lib/third_party/include/hash.h
++++ b/src/lib/third_party/include/hash.h
+@@ -25,5 +25,6 @@ extern int ht_hash( hashtable_t *hashtable, char *key );
+ extern entry_t *ht_newpair( char *key, u_int16_t value );
+ extern void ht_set( hashtable_t *hashtable, char *key, u_int16_t value );
+ extern u_int16_t ht_get( hashtable_t *hashtable, char *key );
++extern void ht_free( hashtable_t *hashtable );
+
+ #endif /* _HASH_H_ */