From 18db2948fe9bebfdc5211dd0971568d46f748cac Mon Sep 17 00:00:00 2001 From: Lukas Rusak Date: Mon, 25 Apr 2016 10:29:24 -0700 Subject: [PATCH 01/17] bwm-ng: add package --- .../network-tools-depends/bwm-ng/package.mk | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 packages/addons/addon-depends/network-tools-depends/bwm-ng/package.mk diff --git a/packages/addons/addon-depends/network-tools-depends/bwm-ng/package.mk b/packages/addons/addon-depends/network-tools-depends/bwm-ng/package.mk new file mode 100644 index 0000000000..ce3d4df4c2 --- /dev/null +++ b/packages/addons/addon-depends/network-tools-depends/bwm-ng/package.mk @@ -0,0 +1,51 @@ +################################################################################ +# This file is part of LibreELEC - http://www.libreelec.tv +# Copyright (C) 2016 Team LibreELEC +# +# LibreELEC is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# LibreELEC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LibreELEC. If not, see . +################################################################################ + +PKG_NAME="bwm-ng" +PKG_VERSION="0.6.1" +PKG_REV="0" +PKG_ARCH="any" +PKG_LICENSE="GPL" +PKG_SITE="http://www.gropp.org/?id=projects&sub=bwm-ng" +PKG_URL="http://www.gropp.org/bwm-ng/bwm-ng-$PKG_VERSION.tar.gz" +PKG_DEPENDS_TARGET="toolchain ncurses libstatgrab" +PKG_PRIORITY="optional" +PKG_SECTION="network/analyzer" +PKG_SHORTDESC="bwm-ng: small and simple console-based live network and disk io bandwidth monitor" +PKG_LONGDESC="Bandwidth Monitor NG is a small and simple console-based live network and disk io bandwidth monitor for Linux, BSD, Solaris, Mac OS X and others." +PKG_AUTORECONF="yes" + +PKG_CONFIGURE_OPTS_TARGET="--with-libstatgrab \ + --with-time \ + --with-getifaddrs \ + --with-sysctl \ + --with-sysctldisk \ + --with-procnetdev \ + --with-partitions" + +post_unpack() { + $SED "s:::g" $PKG_BUILD/src/defines.h +} + +pre_configure_target() { + export CFLAGS="$CFLAGS -I$SYSROOT_PREFIX/usr/include/ncurses" +} + +makeinstall_target() { + : # nop +} From 32a255e827becc6a0750ff5381f5aaecdd786eb8 Mon Sep 17 00:00:00 2001 From: Lukas Rusak Date: Mon, 25 Apr 2016 10:29:24 -0700 Subject: [PATCH 02/17] iftop: add package --- .../network-tools-depends/iftop/package.mk | 45 ++++++++++++ .../iftop/patches/iftop-boo.patch | 73 +++++++++++++++++++ 2 files changed, 118 insertions(+) create mode 100644 packages/addons/addon-depends/network-tools-depends/iftop/package.mk create mode 100644 packages/addons/addon-depends/network-tools-depends/iftop/patches/iftop-boo.patch diff --git a/packages/addons/addon-depends/network-tools-depends/iftop/package.mk b/packages/addons/addon-depends/network-tools-depends/iftop/package.mk new file mode 100644 index 0000000000..224ea53071 --- /dev/null +++ b/packages/addons/addon-depends/network-tools-depends/iftop/package.mk @@ -0,0 +1,45 @@ +################################################################################ +# This file is part of LibreELEC - http://www.libreelec.tv +# Copyright (C) 2016 Team LibreELEC +# +# LibreELEC is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# LibreELEC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LibreELEC. If not, see . +################################################################################ + +PKG_NAME="iftop" +PKG_VERSION="1.0pre4" +PKG_REV="0" +PKG_ARCH="any" +PKG_LICENSE="GPL" +PKG_SITE="http://htop.sourceforge.net/" +PKG_URL="http://www.ex-parrot.com/pdw/iftop/download/$PKG_NAME-$PKG_VERSION.tar.gz" +PKG_DEPENDS_TARGET="toolchain ncurses libpcap libnl" +PKG_PRIORITY="optional" +PKG_SECTION="network/analyzer" +PKG_SHORTDESC="iftop: display bandwidth usage on an interface" +PKG_LONGDESC="iftop does for network usage what top(1) does for CPU usage. It listens to network traffic on a named interface and displays a table of current bandwidth usage by pairs of hosts. Handy for answering the question 'why is our ADSL link so slow?'." +PKG_AUTORECONF="yes" + +pre_build_target() { + mkdir -p $PKG_BUILD/.$TARGET_NAME + cp -RP $PKG_BUILD/* $PKG_BUILD/.$TARGET_NAME +} + +pre_configure_target() { + export CFLAGS="$CFLAGS -I$SYSROOT_PREFIX/usr/include/ncurses -I$SYSROOT_PREFIX/usr/include/pcap" + export LIBS="-lpcap -lnl-3 -lnl-genl-3" +} + +makeinstall_target() { + : # nop +} diff --git a/packages/addons/addon-depends/network-tools-depends/iftop/patches/iftop-boo.patch b/packages/addons/addon-depends/network-tools-depends/iftop/patches/iftop-boo.patch new file mode 100644 index 0000000000..e3622aef54 --- /dev/null +++ b/packages/addons/addon-depends/network-tools-depends/iftop/patches/iftop-boo.patch @@ -0,0 +1,73 @@ +diff --git a/configure.ac b/configure.ac +index 671241e..b6fece6 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -294,42 +294,6 @@ if test x$libpcap_prefix = x ; then + libpcap_prefix="/usr /usr/local /opt /software" + fi + +-AC_MSG_CHECKING([where to find pcap.h]) +-foundpcaph=0 +-oldCPPFLAGS=$CPPFLAGS +-for test_prefix in "" $libpcap_prefix ; do +- for x in "" /pcap ; do +- if test x$test_prefix != x ; then +- CPPFLAGS="$oldCPPFLAGS -I$test_prefix/include$x" +- fi +- AC_TRY_CPP([ +-#include +- ], [ +- AC_MSG_RESULT([$test_prefix/include$x]) +- foundpcaph=1 +- break +- ]) +- done +- if test $foundpcaph = 1 ; then +- break +- fi +-done +- +-if test $foundpcaph = 0 ; then +- AC_MSG_RESULT([no idea]) +- AC_MSG_ERROR([can't find pcap.h +- You're not going to get very far without libpcap.]) +-else +- dnl assume that -lpcap is under $test_prefix/lib +- if test x$test_prefix != x ; then +- LDFLAGS="$LDFLAGS -L$test_prefix/lib" +- fi +- AC_CHECK_LIB(pcap, pcap_open_live, , [ +- AC_MSG_ERROR([can't find libpcap +- You're not going to get very far without libpcap.]) +- ]) +-fi +- + foundpcap=0 + AC_CHECK_HEADERS([pcap.h pcap/pcap.h], [ + foundpcap=1 +diff --git a/edline.c b/edline.c +index 75f1a5a..aed80cf 100644 +--- a/edline.c ++++ b/edline.c +@@ -7,7 +7,7 @@ + static const char rcsid[] = "$Id: edline.c,v 1.2 2002/11/04 12:27:35 chris Exp $"; + + #include +-#include ++#include + #include + + #include "iftop.h" +diff --git a/iftop.c b/iftop.c +index a090dcf..5851c86 100644 +--- a/iftop.c ++++ b/iftop.c +@@ -23,7 +23,7 @@ + #endif + + #include +-#include ++#include + #include + #include + #include From cf2bb411c1a4cb8d36c346a91d6ac5fd5a1024dc Mon Sep 17 00:00:00 2001 From: Lukas Rusak Date: Mon, 25 Apr 2016 10:29:24 -0700 Subject: [PATCH 03/17] iperf: add package --- .../network-tools-depends/iperf/package.mk | 37 +++++++++++++++++++ .../iperf-0001_fix-build-with-gcc5.patch | 27 ++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 packages/addons/addon-depends/network-tools-depends/iperf/package.mk create mode 100644 packages/addons/addon-depends/network-tools-depends/iperf/patches/iperf-0001_fix-build-with-gcc5.patch diff --git a/packages/addons/addon-depends/network-tools-depends/iperf/package.mk b/packages/addons/addon-depends/network-tools-depends/iperf/package.mk new file mode 100644 index 0000000000..bee0a21234 --- /dev/null +++ b/packages/addons/addon-depends/network-tools-depends/iperf/package.mk @@ -0,0 +1,37 @@ +################################################################################ +# This file is part of LibreELEC - http://www.libreelec.tv +# Copyright (C) 2016 Team LibreELEC +# +# LibreELEC is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# LibreELEC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LibreELEC. If not, see . +################################################################################ + +PKG_NAME="iperf" +PKG_VERSION="3.1.2" +PKG_REV="2" +PKG_ARCH="any" +PKG_LICENSE="OSS" +PKG_SITE="https://iperf.fr/" +PKG_URL="https://iperf.fr/download/source/$PKG_NAME-$PKG_VERSION-source.tar.gz" +PKG_DEPENDS_TARGET="toolchain" +PKG_PRIORITY="optional" +PKG_SECTION="network/testing" +PKG_SHORTDESC="iperf: A modern alternative for measuring maximum TCP and UDP bandwidth performance" +PKG_LONGDESC="Iperf was developed by NLANR/DAST as a modern alternative for measuring maximum TCP and UDP bandwidth performance. Iperf allows the tuning of various parameters and UDP characteristics. Iperf reports bandwidth, delay jitter, datagram loss." +PKG_AUTORECONF="yes" + +PKG_CONFIGURE_OPTS_TARGET="--enable-static --disable-shared" + +makeinstall_target() { + : # nop +} diff --git a/packages/addons/addon-depends/network-tools-depends/iperf/patches/iperf-0001_fix-build-with-gcc5.patch b/packages/addons/addon-depends/network-tools-depends/iperf/patches/iperf-0001_fix-build-with-gcc5.patch new file mode 100644 index 0000000000..85c7f78cc0 --- /dev/null +++ b/packages/addons/addon-depends/network-tools-depends/iperf/patches/iperf-0001_fix-build-with-gcc5.patch @@ -0,0 +1,27 @@ +diff -Naur a/Makefile.am b/Makefile.am +--- a/Makefile.am 2015-10-16 19:01:09.000000000 +0200 ++++ b/Makefile.am 2016-01-06 21:22:34.118008794 +0100 +@@ -1 +1,8 @@ ++README: README.md ++ fgrep -v "[Build Status]" $< \ ++ | markdown \ ++ | html2text -style pretty -nobs \ ++ | sed -e 's:>:>:g' \ ++ > $@.tmp ++ + SUBDIRS = src examples +diff -Naur a/src/Makefile.am b/src/Makefile.am +--- a/src/Makefile.am 2015-10-16 19:01:09.000000000 +0200 ++++ b/src/Makefile.am 2016-01-06 21:26:12.352336266 +0100 +@@ -49,9 +49,9 @@ + iperf3_profile_SOURCES = main.c \ + $(libiperf_la_SOURCES) + +-iperf3_profile_CFLAGS = -pg -g ++iperf3_profile_CFLAGS = -g + iperf3_profile_LDADD = libiperf.la +-iperf3_profile_LDFLAGS = -pg -g ++iperf3_profile_LDFLAGS = -g + + # Specify the sources and various flags for the test cases + t_timer_SOURCES = t_timer.c From acf0fb4dfb434280c72cbb363e01f0dcdfe7d8ec Mon Sep 17 00:00:00 2001 From: Lukas Rusak Date: Mon, 25 Apr 2016 10:29:24 -0700 Subject: [PATCH 04/17] irssi: add package --- .../network-tools-depends/irssi/package.mk | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 packages/addons/addon-depends/network-tools-depends/irssi/package.mk diff --git a/packages/addons/addon-depends/network-tools-depends/irssi/package.mk b/packages/addons/addon-depends/network-tools-depends/irssi/package.mk new file mode 100644 index 0000000000..5289cd20bf --- /dev/null +++ b/packages/addons/addon-depends/network-tools-depends/irssi/package.mk @@ -0,0 +1,50 @@ +################################################################################ +# This file is part of LibreELEC - http://www.libreelec.tv +# Copyright (C) 2016 Team LibreELEC +# +# LibreELEC is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# LibreELEC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LibreELEC. If not, see . +################################################################################ + +PKG_NAME="irssi" +PKG_VERSION="0.8.19" +PKG_REV="1" +PKG_ARCH="any" +PKG_LICENSE="GPL" +PKG_SITE="http://www.irssi.org/" +PKG_URL="https://github.com/irssi-import/irssi/releases/download/$PKG_VERSION/$PKG_NAME-$PKG_VERSION.tar.gz" +PKG_DEPENDS_TARGET="toolchain glib ncurses libressl" +PKG_PRIORITY="optional" +PKG_SECTION="tools" +PKG_SHORTDESC="IRC client" +PKG_LONGDESC="Irssi is a terminal based IRC client for UNIX systems" +PKG_AUTORECONF="yes" + +PKG_CONFIGURE_OPTS_TARGET="--with-sysroot=$SYSROOT_PREFIX \ + --enable-ssl \ + --disable-glibtest \ + --without-socks \ + --with-textui \ + --without-bot \ + --without-proxy \ + --with-gc \ + --without-perl \ + --without-sco" + +pre_configure_target() { + export CFLAGS="$CFLAGS -I$ROOT/$PKG_BUILD" +} + +makeinstall_target() { + : # nop +} From bb2c8d74178f6c5602b6276f2b47c569d759f158 Mon Sep 17 00:00:00 2001 From: Lukas Rusak Date: Mon, 25 Apr 2016 10:29:24 -0700 Subject: [PATCH 05/17] iw: add package --- .../network-tools-depends/iw/package.mk | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 packages/addons/addon-depends/network-tools-depends/iw/package.mk diff --git a/packages/addons/addon-depends/network-tools-depends/iw/package.mk b/packages/addons/addon-depends/network-tools-depends/iw/package.mk new file mode 100644 index 0000000000..9b519194f5 --- /dev/null +++ b/packages/addons/addon-depends/network-tools-depends/iw/package.mk @@ -0,0 +1,41 @@ +################################################################################ +# This file is part of LibreELEC - http://www.libreelec.tv +# Copyright (C) 2016 Team LibreELEC +# +# LibreELEC is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# LibreELEC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LibreELEC. If not, see . +################################################################################ + +PKG_NAME="iw" +PKG_VERSION="4.3" +PKG_REV="1" +PKG_ARCH="any" +PKG_LICENSE="PUBLIC_DOMAIN" +PKG_SITE="http://wireless.kernel.org/en/users/Documentation/iw" +PKG_URL="https://www.kernel.org/pub/software/network/$PKG_NAME/$PKG_NAME-$PKG_VERSION.tar.xz" +PKG_DEPENDS_TARGET="toolchain libnl" +PKG_PRIORITY="optional" +PKG_SECTION="tools" +PKG_SHORTDESC="iw is a new nl80211 based CLI configuration utility for wireless devices" +PKG_LONGDESC="iw is a new nl80211 based CLI configuration utility for wireless devices. It supports all new drivers that have been added to the kernel recently." + +pre_configure_target() { + # iw fails at runtime with lto enabled + strip_lto + + export LDFLAGS="$LDFLAGS -pthread" +} + +makeinstall_target() { + : # meh +} From 13ffa7a0369bf22203aad415bc48e4c91ba40a2a Mon Sep 17 00:00:00 2001 From: Lukas Rusak Date: Mon, 25 Apr 2016 10:29:24 -0700 Subject: [PATCH 06/17] lftp: add package --- .../network-tools-depends/lftp/package.mk | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 packages/addons/addon-depends/network-tools-depends/lftp/package.mk diff --git a/packages/addons/addon-depends/network-tools-depends/lftp/package.mk b/packages/addons/addon-depends/network-tools-depends/lftp/package.mk new file mode 100644 index 0000000000..6a97cd13cd --- /dev/null +++ b/packages/addons/addon-depends/network-tools-depends/lftp/package.mk @@ -0,0 +1,42 @@ +################################################################################ +# This file is part of LibreELEC - http://www.libreelec.tv +# Copyright (C) 2016 Team LibreELEC +# +# LibreELEC is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# LibreELEC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LibreELEC. If not, see . +################################################################################ + +PKG_NAME="lftp" +PKG_VERSION="4.6.5" +PKG_REV="1" +PKG_ARCH="any" +PKG_LICENSE="GPL" +PKG_SITE="http://lftp.yar.ru/" +PKG_URL="http://lftp.yar.ru/ftp/${PKG_NAME}-${PKG_VERSION}.tar.gz" +PKG_DEPENDS_TARGET="toolchain readline libressl zlib" +PKG_PRIORITY="optional" +PKG_SECTION="tools" +PKG_SHORTDESC="ftp client" +PKG_LONGDESC="LFTP is a sophisticated ftp/http client, and a file transfer program supporting a number of network protocols" +PKG_AUTORECONF="yes" + +PKG_CONFIGURE_OPTS_TARGET="--disable-nls --with-gnu-ld --without-gnutls --with-openssl" + +makeinstall_target() { + : # nop +} + +pre_configure_target() { + # fails to build with gcc 4.9 + lto + strip_lto +} From 83a422d15ec66ada23ace49487d078a0dc011b91 Mon Sep 17 00:00:00 2001 From: Lukas Rusak Date: Mon, 25 Apr 2016 10:29:25 -0700 Subject: [PATCH 07/17] ncftp: add package --- .../network-tools-depends/ncftp/package.mk | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 packages/addons/addon-depends/network-tools-depends/ncftp/package.mk diff --git a/packages/addons/addon-depends/network-tools-depends/ncftp/package.mk b/packages/addons/addon-depends/network-tools-depends/ncftp/package.mk new file mode 100644 index 0000000000..e6ab8f6286 --- /dev/null +++ b/packages/addons/addon-depends/network-tools-depends/ncftp/package.mk @@ -0,0 +1,50 @@ +################################################################################ +# This file is part of LibreELEC - http://www.libreelec.tv +# Copyright (C) 2016 Team LibreELEC +# +# LibreELEC is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# LibreELEC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LibreELEC. If not, see . +################################################################################ + +PKG_NAME="ncftp" +PKG_VERSION="3.2.5" +PKG_REV="0" +PKG_ARCH="any" +PKG_LICENSE="GPL" +PKG_SITE="http://www.ncftp.com/ncftp/" +PKG_URL="ftp://ftp.ncftp.com/ncftp/ncftp-${PKG_VERSION}-src.tar.bz2" +PKG_DEPENDS_TARGET="toolchain" +PKG_PRIORITY="optional" +PKG_SECTION="tools" +PKG_SHORTDESC="NcFTP Client (also known as just NcFTP) is a set of FREE application programs implementing the File Transfer Protocol (FTP)." +PKG_LONGDESC="NcFTP Client (also known as just NcFTP) is a set of FREE application programs implementing the File Transfer Protocol (FTP)." +PKG_AUTORECONF="no" + +PKG_CONFIGURE_OPTS_TARGET="ac_cv_header_librtmp_rtmp_h=yes \ + --enable-readline \ + --disable-universal \ + --disable-ccdv \ + --without-curses" + +pre_configure_target() { + export CFLAGS="$CFLAGS -I../" +} + +pre_build_target() { + mkdir -p $PKG_BUILD/.$TARGET_NAME + cp -RP $PKG_BUILD/* $PKG_BUILD/.$TARGET_NAME +} + +makeinstall_target() { + : # nop +} From 94213dfd72c630fb469f85662e8ae66fb8bfd2f6 Mon Sep 17 00:00:00 2001 From: Lukas Rusak Date: Mon, 25 Apr 2016 10:29:25 -0700 Subject: [PATCH 08/17] ngrep: add package --- .../network-tools-depends/ngrep/package.mk | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 packages/addons/addon-depends/network-tools-depends/ngrep/package.mk diff --git a/packages/addons/addon-depends/network-tools-depends/ngrep/package.mk b/packages/addons/addon-depends/network-tools-depends/ngrep/package.mk new file mode 100644 index 0000000000..6709983ad7 --- /dev/null +++ b/packages/addons/addon-depends/network-tools-depends/ngrep/package.mk @@ -0,0 +1,43 @@ +################################################################################ +# This file is part of LibreELEC - http://www.libreelec.tv +# Copyright (C) 2016 Team LibreELEC +# +# LibreELEC is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# LibreELEC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LibreELEC. If not, see . +################################################################################ + +PKG_NAME="ngrep" +PKG_VERSION="1.45" +PKG_REV="0" +PKG_ARCH="any" +PKG_LICENSE="GPL" +PKG_SITE="http://ngrep.sourceforge.net/" +PKG_URL="http://prdownloads.sourceforge.net/ngrep/ngrep-${PKG_VERSION}.tar.bz2" +PKG_DEPENDS_TARGET="toolchain libpcap" +PKG_PRIORITY="optional" +PKG_SECTION="network/analyzer" +PKG_SHORTDESC="ngrep - network grep" +PKG_LONGDESC="ngrep - network grep" +PKG_DISCLAIMER="this is an unofficial addon. please don't ask for support in openelec forum / irc channel" +PKG_AUTORECONF="yes" + +PKG_CONFIGURE_OPTS_TARGET="--with-pcap-includes=$SYSROOT_PREFIX/usr/include --disable-dropprivs" + +pre_build_target() { + mkdir -p $PKG_BUILD/.$TARGET_NAME + cp -RP $PKG_BUILD/* $PKG_BUILD/.$TARGET_NAME +} + +makeinstall_target() { + : # nop +} From e7bec51aa5f0c6a43260f175090e022c76eba6f1 Mon Sep 17 00:00:00 2001 From: Lukas Rusak Date: Mon, 25 Apr 2016 10:29:25 -0700 Subject: [PATCH 09/17] nmap: add package --- .../network-tools-depends/nmap/package.mk | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 packages/addons/addon-depends/network-tools-depends/nmap/package.mk diff --git a/packages/addons/addon-depends/network-tools-depends/nmap/package.mk b/packages/addons/addon-depends/network-tools-depends/nmap/package.mk new file mode 100644 index 0000000000..f9dc4a8228 --- /dev/null +++ b/packages/addons/addon-depends/network-tools-depends/nmap/package.mk @@ -0,0 +1,51 @@ +################################################################################ +# This file is part of LibreELEC - http://www.libreelec.tv +# Copyright (C) 2016 Team LibreELEC +# +# LibreELEC is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# LibreELEC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LibreELEC. If not, see . +################################################################################ + +PKG_NAME="nmap" +PKG_VERSION="7.11" +PKG_REV="1" +PKG_ARCH="any" +PKG_LICENSE="GPL" +PKG_SITE="http://nmap.org/" +PKG_URL="http://nmap.org/dist/${PKG_NAME}-${PKG_VERSION}.tgz" +PKG_DEPENDS_TARGET="toolchain" +PKG_PRIORITY="optional" +PKG_SECTION="tools" +PKG_SHORTDESC="network tool" +PKG_LONGDESC="Free Security Scanned for Network" +PKG_AUTORECONF="no" + +PKG_CONFIGURE_OPTS_TARGET="--enable-static \ + --with-pcap=linux \ + --with-libpcap=included \ + --with-libpcre=included \ + --with-libdnet=included \ + --with-liblua=included \ + --with-liblinear=included" + +pre_configure_target() { +# nmap fails to build in subdirs + cd $ROOT/$PKG_BUILD + rm -rf .$TARGET_NAME + + export CPPFLAGS="$CPPFLAGS -Iliblua" +} + +makeinstall_target() { + : # nop +} From 63807068d378ff82298aea4028d918afd401806a Mon Sep 17 00:00:00 2001 From: Lukas Rusak Date: Mon, 25 Apr 2016 10:29:25 -0700 Subject: [PATCH 10/17] rsync: add package --- .../network-tools-depends/rsync/package.mk | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 packages/addons/addon-depends/network-tools-depends/rsync/package.mk diff --git a/packages/addons/addon-depends/network-tools-depends/rsync/package.mk b/packages/addons/addon-depends/network-tools-depends/rsync/package.mk new file mode 100644 index 0000000000..1cb76a1a7d --- /dev/null +++ b/packages/addons/addon-depends/network-tools-depends/rsync/package.mk @@ -0,0 +1,39 @@ +################################################################################ +# This file is part of LibreELEC - http://www.libreelec.tv +# Copyright (C) 2016 Team LibreELEC +# +# LibreELEC is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# LibreELEC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LibreELEC. If not, see . +################################################################################ + +PKG_NAME="rsync" +PKG_VERSION="3.1.2" +PKG_REV="1" +PKG_ARCH="any" +PKG_LICENSE="OSS" +PKG_SITE="http://www.samba.org/ftp/rsync/rsync.html" +PKG_URL="https://download.samba.org/pub/rsync/src/$PKG_NAME-$PKG_VERSION.tar.gz" +PKG_DEPENDS_TARGET="toolchain" +PKG_PRIORITY="optional" +PKG_SECTION="network/backup" +PKG_SHORTDESC="rsync: A replacement for rcp that has many more features" +PKG_LONGDESC="Rsync uses an own 'rsync' algorithm which provides a very fast method for bringing remote files into sync. It does this by sending just the differences in the files across the link, without requiring that both sets of files are present at one of the ends of the link beforehand. At first glance this may seem impossible because the calculation of diffs between two files normally requires local access to both files." +PKG_AUTORECONF="no" + +PKG_CONFIGURE_OPTS_TARGET="--disable-acl-support \ + --disable-xattr-support \ + --with-included-popt" + +makeinstall_target() { + : # nop +} From c32878a348fa7c9253f10e92b1b0fdcf3a599119 Mon Sep 17 00:00:00 2001 From: Lukas Rusak Date: Mon, 25 Apr 2016 10:29:25 -0700 Subject: [PATCH 11/17] sshfs: add package --- .../network-tools-depends/sshfs/package.mk | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 packages/addons/addon-depends/network-tools-depends/sshfs/package.mk diff --git a/packages/addons/addon-depends/network-tools-depends/sshfs/package.mk b/packages/addons/addon-depends/network-tools-depends/sshfs/package.mk new file mode 100644 index 0000000000..f7765b23aa --- /dev/null +++ b/packages/addons/addon-depends/network-tools-depends/sshfs/package.mk @@ -0,0 +1,35 @@ +################################################################################ +# This file is part of LibreELEC - http://www.libreelec.tv +# Copyright (C) 2016 Team LibreELEC +# +# LibreELEC is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# LibreELEC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LibreELEC. If not, see . +################################################################################ + +PKG_NAME="sshfs" +PKG_VERSION="2.7" +PKG_REV="1" +PKG_ARCH="any" +PKG_LICENSE="GPL" +PKG_SITE="https://github.com/libfuse/sshfs" +PKG_URL="https://github.com/libfuse/sshfs/releases/download/sshfs-$PKG_VERSION/sshfs-$PKG_VERSION.tar.gz" +PKG_DEPENDS_TARGET="toolchain fuse glib" +PKG_PRIORITY="optional" +PKG_SECTION="tools" +PKG_SHORTDESC="sshfs: a filesystem client based on the SSH File Transfer Protocol" +PKG_LONGDESC="This is a filesystem client based on the SSH File Transfer Protocol. Since most SSH servers already support this protocol it is very easy to set up: i.e. on the server side there's nothing to do. On the client side mounting the filesystem is as easy as logging into the server with ssh." +PKG_AUTORECONF="no" + +makeinstall_target() { + : # nop +} From 9f7168d8cffae463c14740f6cc4f48dbc954506b Mon Sep 17 00:00:00 2001 From: Lukas Rusak Date: Mon, 25 Apr 2016 10:29:25 -0700 Subject: [PATCH 12/17] tcpdump: add package --- .../network-tools-depends/tcpdump/package.mk | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 packages/addons/addon-depends/network-tools-depends/tcpdump/package.mk diff --git a/packages/addons/addon-depends/network-tools-depends/tcpdump/package.mk b/packages/addons/addon-depends/network-tools-depends/tcpdump/package.mk new file mode 100644 index 0000000000..213ef97913 --- /dev/null +++ b/packages/addons/addon-depends/network-tools-depends/tcpdump/package.mk @@ -0,0 +1,47 @@ +################################################################################ +# This file is part of LibreELEC - http://www.libreelec.tv +# Copyright (C) 2016 Team LibreELEC +# +# LibreELEC is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# LibreELEC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LibreELEC. If not, see . +################################################################################ + +PKG_NAME="tcpdump" +PKG_VERSION="4.7.4" +PKG_REV="1" +PKG_ARCH="any" +PKG_SITE="http://www.tcpdump.org/" +PKG_URL="http://www.tcpdump.org/release/tcpdump-${PKG_VERSION}.tar.gz" +PKG_DEPENDS_TARGET="toolchain libpcap" +PKG_PRIORITY=optional +PKG_SECTION="network/analyzer" +PKG_SHORTDESC="powerful tool for network monitoring and data acquisition" +PKG_LONGDESC="This program allows you to dump the traffic on a network. tcpdump is able to examine IPv4, ICMPv4, IPv6, ICMPv6, UDP, TCP, SNMP, AFS BGP, RIP, PIM, DVMRP, IGMP, SMB, OSPF, NFS and many other packet types." +PKG_AUTORECONF="yes" + +PKG_CONFIGURE_OPTS_TARGET="--with-pcap=linux --with-crypto=no --disable-ipv6" + +pre_configure_target() { + # When cross-compiling, configure can't set linux version + # forcing it + sed -i -e 's/ac_cv_linux_vers=unknown/ac_cv_linux_vers=2/' ../configure +} + +pre_build_target() { + # discard native system includes + sed -i "s%-I/usr/include%%g" Makefile +} + +makeinstall_target() { + : # nop +} From ef63df8b95279e5fca70cb414726dcac34ec4958 Mon Sep 17 00:00:00 2001 From: Lukas Rusak Date: Mon, 25 Apr 2016 10:29:25 -0700 Subject: [PATCH 13/17] udpxy: add package --- .../network-tools-depends/udpxy/package.mk | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 packages/addons/addon-depends/network-tools-depends/udpxy/package.mk diff --git a/packages/addons/addon-depends/network-tools-depends/udpxy/package.mk b/packages/addons/addon-depends/network-tools-depends/udpxy/package.mk new file mode 100644 index 0000000000..4d839984e8 --- /dev/null +++ b/packages/addons/addon-depends/network-tools-depends/udpxy/package.mk @@ -0,0 +1,41 @@ +################################################################################ +# This file is part of LibreELEC - http://www.libreelec.tv +# Copyright (C) 2016 Team LibreELEC +# +# LibreELEC is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# LibreELEC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LibreELEC. If not, see . +################################################################################ + +PKG_NAME="udpxy" +PKG_VERSION="1.0.23-0" +PKG_REV="0" +PKG_ARCH="any" +PKG_LICENSE="GPL" +PKG_SITE="http://www.udpxy.com/download-en.html" +PKG_URL="$SOURCEFORGE_SRC/project/udpxy/udpxy/Chipmunk-1.0/${PKG_NAME}.${PKG_VERSION}-prod.tar.gz" +PKG_DEPENDS_TARGET="toolchain" +PKG_PRIORITY="optional" +PKG_SECTION="tools" +PKG_SHORTDESC="udpxy is a UDP-to-HTTP multicast traffic relay daemon" +PKG_LONGDESC="udpxy is a UDP-to-HTTP multicast traffic relay daemon" +PKG_DISCLAIMER="this is an unofficial addon. please don't ask for support in openelec forum / irc channel" +PKG_AUTORECONF="no" + +pre_configure_target() { + # fails to build with gcc 4.9 + lto + strip_lto +} + +makeinstall_target() { + : # nop +} From 6be5dbddb866c33a57d4b7d46807f03e18865578 Mon Sep 17 00:00:00 2001 From: Lukas Rusak Date: Mon, 25 Apr 2016 10:29:25 -0700 Subject: [PATCH 14/17] wireless_tools: add package --- .../wireless_tools/package.mk | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 packages/addons/addon-depends/network-tools-depends/wireless_tools/package.mk diff --git a/packages/addons/addon-depends/network-tools-depends/wireless_tools/package.mk b/packages/addons/addon-depends/network-tools-depends/wireless_tools/package.mk new file mode 100644 index 0000000000..a2622bfda2 --- /dev/null +++ b/packages/addons/addon-depends/network-tools-depends/wireless_tools/package.mk @@ -0,0 +1,46 @@ +################################################################################ +# This file is part of LibreELEC - http://www.libreelec.tv +# Copyright (C) 2016 Team LibreELEC +# +# LibreELEC is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# LibreELEC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LibreELEC. If not, see . +################################################################################ + +PKG_NAME="wireless_tools" +PKG_VERSION="29" +PKG_REV="0" +PKG_ARCH="any" +PKG_LICENSE="GPL" +PKG_SITE="http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html" +PKG_URL="http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/$PKG_NAME.$PKG_VERSION.tar.gz" +PKG_SOURCE_DIR="${PKG_NAME}.${PKG_VERSION}" +PKG_DEPENDS_TARGET="toolchain" +PKG_PRIORITY="optional" +PKG_SECTION="debug/tools" +PKG_SHORTDESC="wireless-tools: tools allowing to manipulate the Wireless Extensions" +PKG_LONGDESC="The Wireless Tools (WT) is a set of tools allowing to manipulate the Wireless Extensions. They use a textual interface and are rather crude, but aim to support the full Wireless Extension. There are many other tools you can use with Wireless Extensions, however Wireless Tools is the reference implementation." +PKG_AUTORECONF="no" + +pre_configure_Target() { + # wireless_tools fails to build on some systems with LTO enabled + strip_lto +} + +make_target() { + make PREFIX=/usr CC="$CC" AR="$AR" \ + CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" iwmulticall +} + +makeinstall_target() { + : # nop +} From 6fff61ea795631e59d94183321142c9810bf7236 Mon Sep 17 00:00:00 2001 From: Lukas Rusak Date: Mon, 25 Apr 2016 10:29:25 -0700 Subject: [PATCH 15/17] libpcap: add package --- .../depends/libpcap/package.mk | 51 +++++++++++++++++++ .../patches/libpcap-crosscompiling.patch | 12 +++++ 2 files changed, 63 insertions(+) create mode 100644 packages/addons/addon-depends/network-tools-depends/depends/libpcap/package.mk create mode 100644 packages/addons/addon-depends/network-tools-depends/depends/libpcap/patches/libpcap-crosscompiling.patch diff --git a/packages/addons/addon-depends/network-tools-depends/depends/libpcap/package.mk b/packages/addons/addon-depends/network-tools-depends/depends/libpcap/package.mk new file mode 100644 index 0000000000..a7f38b3dc4 --- /dev/null +++ b/packages/addons/addon-depends/network-tools-depends/depends/libpcap/package.mk @@ -0,0 +1,51 @@ +################################################################################ +# This file is part of LibreELEC - http://www.libreelec.tv +# Copyright (C) 2016 Team LibreELEC +# +# LibreELEC is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# LibreELEC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LibreELEC. If not, see . +################################################################################ + +PKG_NAME="libpcap" +PKG_VERSION="1.7.4" +PKG_REV="1" +PKG_ARCH="any" +PKG_LICENSE="GPL" +PKG_SITE="http://www.tcpdump.org/" +PKG_URL="http://www.tcpdump.org/release/libpcap-${PKG_VERSION}.tar.gz" +PKG_DEPENDS_TARGET="toolchain" +PKG_PRIORITY="optional" +PKG_SECTION="devel" +PKG_SHORTDESC="system interface for user-level packet capture" +PKG_LONGDESC="libpcap (Packet CAPture) provides a portable framework for low-level network monitoring. Applications include network statistics collection, security monitoring, network debugging, etc." +PKG_AUTORECONF="yes" + +PKG_CONFIGURE_OPTS_TARGET="LIBS=-lpthread \ + ac_cv_header_libusb_1_0_libusb_h=no \ + --disable-shared \ + --with-pcap=linux \ + --disable-bluetooth \ + --disable-can \ + --without-libnl \ + --disable-dbus \ + --disable-canusb" + +pre_configure_target() { +# When cross-compiling, configure can't set linux version +# forcing it + sed -i -e 's/ac_cv_linux_vers=unknown/ac_cv_linux_vers=2/' ../configure +} + +post_makeinstall_target() { + rm -rf $INSTALL/usr/bin +} diff --git a/packages/addons/addon-depends/network-tools-depends/depends/libpcap/patches/libpcap-crosscompiling.patch b/packages/addons/addon-depends/network-tools-depends/depends/libpcap/patches/libpcap-crosscompiling.patch new file mode 100644 index 0000000000..2ad1214c45 --- /dev/null +++ b/packages/addons/addon-depends/network-tools-depends/depends/libpcap/patches/libpcap-crosscompiling.patch @@ -0,0 +1,12 @@ +diff -Naur libpcap-1.7.4/configure.in libpcap-1.7.4.patch/configure.in +--- libpcap-1.7.4/configure.in 2015-04-22 22:19:15.000000000 +0200 ++++ libpcap-1.7.4.patch/configure.in 2016-03-26 10:36:25.193757606 +0100 +@@ -456,7 +456,7 @@ + if test x$with_libnl != xno ; then + have_any_nl="no" + +- incdir=-I/usr/include/libnl3 ++# incdir=-I/usr/include/libnl3 + libnldir= + if test x$withval != x ; then + libnldir=-L${withval}/lib/.libs From 0a94c8c4707baf02e07d973428c6dd8324b58686 Mon Sep 17 00:00:00 2001 From: Lukas Rusak Date: Mon, 25 Apr 2016 10:29:25 -0700 Subject: [PATCH 16/17] libstatgrab: add package --- .../depends/libstatgrab/package.mk | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 packages/addons/addon-depends/network-tools-depends/depends/libstatgrab/package.mk diff --git a/packages/addons/addon-depends/network-tools-depends/depends/libstatgrab/package.mk b/packages/addons/addon-depends/network-tools-depends/depends/libstatgrab/package.mk new file mode 100644 index 0000000000..e54ef83ced --- /dev/null +++ b/packages/addons/addon-depends/network-tools-depends/depends/libstatgrab/package.mk @@ -0,0 +1,38 @@ +################################################################################ +# This file is part of LibreELEC - http://www.libreelec.tv +# Copyright (C) 2016 Team LibreELEC +# +# LibreELEC is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# LibreELEC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LibreELEC. If not, see . +################################################################################ + +PKG_NAME="libstatgrab" +PKG_VERSION="0.91" +PKG_REV="1" +PKG_SITE="http://www.i-scream.org/libstatgrab/" +PKG_URL="http://ftp.i-scream.org/pub/i-scream/libstatgrab/libstatgrab-$PKG_VERSION.tar.gz" +PKG_DEPENDS_TARGET="toolchain" +PKG_PRIORITY=optional +PKG_SECTION=libs +PKG_SHORTDESC="provides cross platform access to statistics about the system on which it's run" +PKG_LONGDESC="libstatgrab is a library that provides cross platform access to statistics about the system on which it's run. It's written in C and presents a selection of useful interfaces which can be used to access key system statistics. The current list of statistics includes CPU usage, memory utilisation, disk usage, process counts, network traffic, disk I/O, and more." +PKG_AUTORECONF="yes" + +PKG_CONFIGURE_OPTS_TARGET="ac_cv_func_malloc_0_nonnull=yes \ + --enable-static \ + --disable-shared \ + --disable-saidar \ + --disable-examples \ + --disable-manpages \ + --disable-setuid-binaries \ + --disable-setgid-binaries" From 76d938041eb2235ff717550700e93720b5237495 Mon Sep 17 00:00:00 2001 From: Lukas Rusak Date: Mon, 25 Apr 2016 10:29:25 -0700 Subject: [PATCH 17/17] network-tools: initial add-on --- .../addons/tools/network-tools/changelog.txt | 2 + .../addons/tools/network-tools/icon/icon.png | Bin 0 -> 41817 bytes .../addons/tools/network-tools/package.mk | 111 ++++++++++++++++++ .../tools/network-tools/source/default.py | 22 ++++ 4 files changed, 135 insertions(+) create mode 100644 packages/addons/tools/network-tools/changelog.txt create mode 100644 packages/addons/tools/network-tools/icon/icon.png create mode 100644 packages/addons/tools/network-tools/package.mk create mode 100644 packages/addons/tools/network-tools/source/default.py diff --git a/packages/addons/tools/network-tools/changelog.txt b/packages/addons/tools/network-tools/changelog.txt new file mode 100644 index 0000000000..6f5f617b72 --- /dev/null +++ b/packages/addons/tools/network-tools/changelog.txt @@ -0,0 +1,2 @@ +7.0.100 +- Initial Release diff --git a/packages/addons/tools/network-tools/icon/icon.png b/packages/addons/tools/network-tools/icon/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..5de6f7bf7745364bbc4f1cde187cf34dd7549051 GIT binary patch literal 41817 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. +################################################################################ + +PKG_NAME="network-tools" +PKG_VERSION="" +PKG_REV="100" +PKG_ARCH="any" +PKG_LICENSE="GPL" +PKG_SITE="" +PKG_URL="" +PKG_DEPENDS_TARGET="toolchain" +PKG_PRIORITY="optional" +PKG_SECTION="virtual" +PKG_SHORTDESC="A bundle of network tools and programs" +PKG_LONGDESC="A bundle of network tools and programs" + +PKG_IS_ADDON="yes" +PKG_ADDON_NAME="Network Tools" +PKG_ADDON_TYPE="xbmc.python.script" +PKG_ADDON_PROVIDES="" +PKG_ADDON_REPOVERSION="7.0" + +PKG_AUTORECONF="no" + +PKG_DEPENDS_TARGET="toolchain \ + bwm-ng \ + iftop \ + iperf \ + irssi \ + iw \ + lftp \ + ncftp \ + ngrep \ + nmap \ + rsync \ + sshfs \ + tcpdump \ + udpxy \ + wireless_tools" + +addon() { + mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/bin/ + # bwm-ng + cp -P $(get_build_dir bwm-ng)/.$TARGET_NAME/src/bwm-ng $ADDON_BUILD/$PKG_ADDON_ID/bin + + # iftop + cp -P $(get_build_dir iftop)/.$TARGET_NAME/iftop $ADDON_BUILD/$PKG_ADDON_ID/bin + + # iperf + cp -P $(get_build_dir iperf)/.$TARGET_NAME/src/iperf3 $ADDON_BUILD/$PKG_ADDON_ID/bin + ln -s iperf3 $ADDON_BUILD/$PKG_ADDON_ID/bin/iperf + + # irssi + cp -P $(get_build_dir irssi)/.$TARGET_NAME/src/fe-text/irssi $ADDON_BUILD/$PKG_ADDON_ID/bin + + # iw + cp -P $(get_build_dir iw)/iw $ADDON_BUILD/$PKG_ADDON_ID/bin + + # lftp + cp -P $(get_build_dir lftp)/.$TARGET_NAME/src/lftp $ADDON_BUILD/$PKG_ADDON_ID/bin + + # ncftp + cp -P $(get_build_dir ncftp)/.$TARGET_NAME/bin/ncftp $ADDON_BUILD/$PKG_ADDON_ID/bin + cp -P $(get_build_dir ncftp)/.$TARGET_NAME/bin/ncftpbatch $ADDON_BUILD/$PKG_ADDON_ID/bin + cp -P $(get_build_dir ncftp)/.$TARGET_NAME/bin/ncftpget $ADDON_BUILD/$PKG_ADDON_ID/bin + cp -P $(get_build_dir ncftp)/.$TARGET_NAME/bin/ncftpls $ADDON_BUILD/$PKG_ADDON_ID/bin + cp -P $(get_build_dir ncftp)/.$TARGET_NAME/bin/ncftpput $ADDON_BUILD/$PKG_ADDON_ID/bin + + # ngrep + cp -P $(get_build_dir ngrep)/.$TARGET_NAME/ngrep $ADDON_BUILD/$PKG_ADDON_ID/bin + + # nmap + cp -P $(get_build_dir nmap)/nmap $ADDON_BUILD/$PKG_ADDON_ID/bin + + # rsync + cp -P $(get_build_dir rsync)/.$TARGET_NAME/rsync $ADDON_BUILD/$PKG_ADDON_ID/bin + + # sshfs + cp -P $(get_build_dir sshfs)/.$TARGET_NAME/sshfs $ADDON_BUILD/$PKG_ADDON_ID/bin + + # tcpdump + cp -P $(get_build_dir tcpdump)/.$TARGET_NAME/tcpdump $ADDON_BUILD/$PKG_ADDON_ID/bin + + # udpxy + cp -P $(get_build_dir udpxy)/udpxy $ADDON_BUILD/$PKG_ADDON_ID/bin/ + + # wireless_tools + cp -P $(get_build_dir wireless_tools)/iwmulticall $ADDON_BUILD/$PKG_ADDON_ID/bin + ln -s iwmulticall $ADDON_BUILD/$PKG_ADDON_ID/bin/iwconfig + ln -s iwmulticall $ADDON_BUILD/$PKG_ADDON_ID/bin/iwgetid + ln -s iwmulticall $ADDON_BUILD/$PKG_ADDON_ID/bin/iwlist + ln -s iwmulticall $ADDON_BUILD/$PKG_ADDON_ID/bin/iwspy + ln -s iwmulticall $ADDON_BUILD/$PKG_ADDON_ID/bin/iwpriv + + debug_strip $ADDON_BUILD/$PKG_ADDON_ID/bin +} diff --git a/packages/addons/tools/network-tools/source/default.py b/packages/addons/tools/network-tools/source/default.py new file mode 100644 index 0000000000..67e12970fe --- /dev/null +++ b/packages/addons/tools/network-tools/source/default.py @@ -0,0 +1,22 @@ +################################################################################ +# This file is part of LibreELEC - http://www.libreelec.tv +# Copyright (C) 2016 Team LibreELEC +# +# LibreELEC is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# LibreELEC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LibreELEC. If not, see . +################################################################################ + +import xbmcgui + +dialog = xbmcgui.Dialog() +dialog.ok('', 'This is a console-only addon')