diff options
author | Gianluca Boiano | 2018-10-23 14:14:44 +0200 |
---|---|---|
committer | Gianluca Boiano | 2018-10-23 14:14:44 +0200 |
commit | 786d83d4b844f0354568893f74583eed7d1645d7 (patch) | |
tree | 5bc6c6e4e02a0c3cbff5d6cf147e23212bb3cd53 | |
parent | 2fa43015fe3a3aedf96f96e77ce85d7fb313d002 (diff) | |
download | aur-786d83d4b844f0354568893f74583eed7d1645d7.tar.gz |
ndpi: fixed packaging
-rw-r--r-- | .SRCINFO | 5 | ||||
-rw-r--r-- | PKGBUILD | 16 | ||||
-rw-r--r-- | make-patch | 414 |
3 files changed, 426 insertions, 9 deletions
@@ -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 @@ -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_ */ |