Commit Graph

443 Commits

Author SHA1 Message Date
yingzhang
4c30af3b9c Add -std=c++14 for application build 2022-07-25 18:27:19 +08:00
Arnout Engelen
93604685f4 Merge pull request #234 from qouoq/main
Additional useful capabilities
2022-07-11 09:11:58 +02:00
Elie Huvier
a9258d10f4 Additional capabilities required
Specify additional capabilities in main.cpp (error message and comment),
and in man page.
2022-07-10 05:26:51 +08:00
Arnout Engelen
90fb48d109 Merge pull request #233 from qouoq/main
Capabilities for reading process names
2022-07-07 08:48:28 +02:00
qouoq
a2b7881dbe Capabilities for reading process names
Adding cap_dac_read_search and cap_sys_ptrace to the setcap command, which allows non-root nethogs to display process names.
See https://stackoverflow.com/questions/41631927/read-proc-pid-fd-fd-without-full-root-access/47982314 and raboof/nethogs#142
2022-07-07 06:35:06 +08:00
Arnout Engelen
8a468d829c Merge pull request #231 from zevweiss/hide-cursor
Hide cursor during initialization and restore at exit
2022-06-21 11:56:41 +02:00
Zev Weiss
79ccaf8e97 Hide cursor during initialization and restore at exit
Showing the cursor while running (especially on terminals where it
blinks) is a bit visually distracting, and doesn't serve much purpose;
make it invisible in init_ui() and restore the original state in
exit_ui().
2022-06-21 02:37:17 -07:00
Arnout Engelen
517978bc40 Merge pull request #228 from msbit/app-std-c++14
Add `-std=c++14` for application build
2022-06-16 09:40:52 +02:00
Tom Sullivan
7efef02370 Add -std=c++14 for application build
To address:

  https://github.com/raboof/nethogs/issues/225

add the `-std=c++14` flag when building the application.

This then compiles properly with the Apple version of the Clang
compiler:

  Apple clang version 11.0.0 (clang-1100.0.33.17)

Additionally, this removed some warning noise regarding C++11
extensions used without the appropriate `-std=c++11` (or greater)
flag:

  ./process.h:38:26: warning: alias declarations are a C++11 extension [-Wc++11-extensions]
  connection.cpp:107:3: warning: 'auto' type specifier is a C++11 extension [-Wc++11-extensions]
  connection.cpp:108:8: warning: 'auto' type specifier is a C++11 extension [-Wc++11-extensions]
  connection.cpp:162:3: warning: 'auto' type specifier is a C++11 extension [-Wc++11-extensions]
  connection.cpp:187:3: warning: 'auto' type specifier is a C++11 extension [-Wc++11-extensions]
2022-06-16 13:49:16 +10:00
Arnout Engelen
918642f98c Merge pull request #224 from molysgaard/python-compile-fixes-ubuntu-20-04
Fix that on ubuntu 20.04, the current version of the code does not compile as a python package
2022-04-25 10:27:41 +02:00
Morten Olsen Lysgaard
2f651410c3 Fix that on ubuntu 20.04, the current version of the code does not compile as a python package
Steps to reproduce:

```
  # install required packages
  apt-get install build-essential libncurses5-dev libpcap-dev pybind11-dev

  # create working directory
  mkdir nethogs-py
  cd nethogs-py

  # create virtualenv
  virtualenv -p python3 venv

  # activate virtualenv
  source venv/bin/activate

  # create requirements.txt file for pip
  echo "git+https://github.com/raboof/nethogs.git" > requirements.txt

  # build nethogs using pip
  pip install -r requirements.txt
```

The last step gives the following compile error on my Ubuntu 20.04
machine:

```
Processing ./nethogs
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
    Preparing wheel metadata ... done
Building wheels for collected packages: nethogs
  Building wheel for nethogs (PEP 517) ... error
  ERROR: Command errored out with exit status 1:
   command: /home/lysgaard/work/nethogs-py/venv/bin/python /tmp/tmpbzq5d0ej build_wheel /tmp/tmpxbnq_o9a
       cwd: /tmp/pip-req-build-uxzyh5t6
  Complete output (50 lines):
  running bdist_wheel
  running build
  running build_ext
  x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -fPIC -I/home/lysgaard/work/nethogs-py/venv/include -I/usr/include/python3.8 -c flagcheck.cpp -o flagcheck.o -std=c++17
  building 'nethogs' extension
  creating build
  creating build/temp.linux-x86_64-cpython-38
  creating build/temp.linux-x86_64-cpython-38/python
  creating build/temp.linux-x86_64-cpython-38/src
  x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -fPIC -Isrc/ -I/tmp/pip-build-env-kvg6xf6h/overlay/lib/python3.8/site-packages/pybind11/include -I/home/lysgaard/work/nethogs-py/venv/include -I/usr/include/python3.8 -c python/bindings.cpp -o build/temp.linux-x86_64-cpython-38/python/bindings.o -std=c++17 -fvisibility=hidden -g0 -Wall -Wextra -Wno-missing-field-initializers --std=c++0x -O3 -fPIC -DVERSION=\"0.8.7\"
  x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -fPIC -Isrc/ -I/tmp/pip-build-env-kvg6xf6h/overlay/lib/python3.8/site-packages/pybind11/include -I/home/lysgaard/work/nethogs-py/venv/include -I/usr/include/python3.8 -c src/connection.cpp -o build/temp.linux-x86_64-cpython-38/src/connection.o -std=c++17 -fvisibility=hidden -g0 -Wall -Wextra -Wno-missing-field-initializers --std=c++0x -O3 -fPIC -DVERSION=\"0.8.7\"
  src/connection.cpp: In function ‘Connection* findConnectionWithMatchingSource(Packet*, short int)’:
  src/connection.cpp:162:37: error: no matching function for call to ‘std::multiset<Connection*, ConnectionComparator>::lower_bound(Packet*)’
    162 |   auto it = connList->lower_bound(&p);
        |                                     ^
  In file included from /usr/include/c++/9/set:62,
                   from src/process.h:29,
                   from src/connection.cpp:34:
  /usr/include/c++/9/bits/stl_multiset.h:810:7: note: candidate: ‘std::multiset<_Key, _Compare, _Alloc>::iterator std::multiset<_Key, _Compare, _Alloc>::lower_bound(const key_type&) [with _Key = Connection*; _Compare = ConnectionComparator; _Alloc = std::allocator<Connection*>; std::multiset<_Key, _Compare, _Alloc>::iterator = std::_Rb_tree_const_iterator<Connection*>; std::multiset<_Key, _Compare, _Alloc>::key_type = Connection*]’
    810 |       lower_bound(const key_type& __x)
        |       ^~~~~~~~~~~
  /usr/include/c++/9/bits/stl_multiset.h:810:35: note:   no known conversion for argument 1 from ‘Packet*’ to ‘Connection* const&’
    810 |       lower_bound(const key_type& __x)
        |                   ~~~~~~~~~~~~~~~~^~~
  /usr/include/c++/9/bits/stl_multiset.h:814:7: note: candidate: ‘std::multiset<_Key, _Compare, _Alloc>::const_iterator std::multiset<_Key, _Compare, _Alloc>::lower_bound(const key_type&) const [with _Key = Connection*; _Compare = ConnectionComparator; _Alloc = std::allocator<Connection*>; std::multiset<_Key, _Compare, _Alloc>::const_iterator = std::_Rb_tree_const_iterator<Connection*>; std::multiset<_Key, _Compare, _Alloc>::key_type = Connection*]’
    814 |       lower_bound(const key_type& __x) const
        |       ^~~~~~~~~~~
  /usr/include/c++/9/bits/stl_multiset.h:814:35: note:   no known conversion for argument 1 from ‘Packet*’ to ‘Connection* const&’
    814 |       lower_bound(const key_type& __x) const
        |                   ~~~~~~~~~~~~~~~~^~~
  src/connection.cpp: In function ‘Connection* findConnectionWithMatchingRefpacketOrSource(Packet*, short int)’:
  src/connection.cpp:187:41: error: no matching function for call to ‘std::multiset<Connection*, ConnectionComparator>::lower_bound(Packet*&)’
    187 |   auto it = connList->lower_bound(packet);
        |                                         ^
  In file included from /usr/include/c++/9/set:62,
                   from src/process.h:29,
                   from src/connection.cpp:34:
  /usr/include/c++/9/bits/stl_multiset.h:810:7: note: candidate: ‘std::multiset<_Key, _Compare, _Alloc>::iterator std::multiset<_Key, _Compare, _Alloc>::lower_bound(const key_type&) [with _Key = Connection*; _Compare = ConnectionComparator; _Alloc = std::allocator<Connection*>; std::multiset<_Key, _Compare, _Alloc>::iterator = std::_Rb_tree_const_iterator<Connection*>; std::multiset<_Key, _Compare, _Alloc>::key_type = Connection*]’
    810 |       lower_bound(const key_type& __x)
        |       ^~~~~~~~~~~
  /usr/include/c++/9/bits/stl_multiset.h:810:35: note:   no known conversion for argument 1 from ‘Packet*’ to ‘Connection* const&’
    810 |       lower_bound(const key_type& __x)
        |                   ~~~~~~~~~~~~~~~~^~~
  /usr/include/c++/9/bits/stl_multiset.h:814:7: note: candidate: ‘std::multiset<_Key, _Compare, _Alloc>::const_iterator std::multiset<_Key, _Compare, _Alloc>::lower_bound(const key_type&) const [with _Key = Connection*; _Compare = ConnectionComparator; _Alloc = std::allocator<Connection*>; std::multiset<_Key, _Compare, _Alloc>::const_iterator = std::_Rb_tree_const_iterator<Connection*>; std::multiset<_Key, _Compare, _Alloc>::key_type = Connection*]’
    814 |       lower_bound(const key_type& __x) const
        |       ^~~~~~~~~~~
  /usr/include/c++/9/bits/stl_multiset.h:814:35: note:   no known conversion for argument 1 from ‘Packet*’ to ‘Connection* const&’
    814 |       lower_bound(const key_type& __x) const
        |                   ~~~~~~~~~~~~~~~~^~~
  error: command '/usr/bin/x86_64-linux-gnu-gcc' failed with exit code 1
  ----------------------------------------
  ERROR: Failed building wheel for nethogs
Failed to build nethogs
ERROR: Could not build wheels for nethogs which use PEP 517 and cannot be installed directly

```

I have tracked this down to that the `setup.py` file uses the wrong
C++-standard-flag.

This is corrected in this commit.

I have also reduced the optimization level from 3 to 2.
The rationale is that optimization level 3 contains
optimazitions that potentially change the behaviour of code, eg.
floating point behaviour. General convention is that optimization level
2 is more than sufficient unless you are working with extremely tight
budget, eg linear algebra kernels or similar. If optimization level 3
is still wanted, I can revert this.
2022-04-25 10:19:57 +02:00
Arnout Engelen
ea161b0509 Merge pull request #223 from CyberShadow/pull-20220323-015738
Improve performance with many connections
2022-04-04 16:27:44 +02:00
Vladimir Panteleev
92fb73116a Replace ConnList linked list with multiset
Keeping a sorted multi-set allows faster search by source /
source+destination address.

Fixes O(n^2) complexity when handling a lot of connections (now it's
O(n log n)).
2022-03-23 17:28:09 +00:00
Vladimir Panteleev
f46954525d packet: Fix matchSource not checking address family 2022-03-23 01:57:45 +00:00
Arnout Engelen
a663b3a157 Merge pull request #222 from AuraVisionLabs/main
Add python bindings
2022-03-17 14:15:18 +01:00
Jaime Lomeli
f4f85997b1 add include dirs 2022-03-17 13:11:41 +00:00
Jaime Lomeli-R
6be888892e Update README.md 2022-03-17 13:09:18 +00:00
jimmylomro
fcacd7efdb added nethogsmonitor_loop_devices and moved code to python dir 2022-03-16 18:58:28 +00:00
jimmylomro
257b576221 add python bindings 2022-03-15 21:35:11 +00:00
Arnout Engelen
358f445d9e Merge pull request #218 from sgtcortez/feat-process-filter
Add process filter
2022-03-02 14:11:58 +01:00
Matheus Rambo
cabc2a1ea3 feat: Filter by process #217
It is possible to filter by process id!
Add the -P <pid> flag.
Example: `nethogs -P 123 -P 333` to filter the processes: 123 and 333
2022-02-28 21:00:11 -03:00
Arnout Engelen
ca8fa246be Merge pull request #221 from schuellerf/main
Use "--tags" parameter to get the correct git-tag
2022-01-31 15:15:18 +01:00
Florian Schüller
99494bf2d1 Use "--tags" parameter to get the correct git-tag 2022-01-31 14:10:50 +01:00
Arnout Engelen
2acedff5d7 Merge pull request #216 from sgtcortez/feat-add-basename-support
feat: Add basename support #155
2021-12-22 14:41:39 +01:00
Matheus Rambo
b94cd9f227 feat: Add basename support
Now, the user can decide to show only the program name, instead of the
full program path. It is useful, when you have a very long hierarchy of
directories, which, with the full path name, the user might not see the
program name.
2021-12-22 10:01:00 -03:00
Matheus Rambo
82a30bb644 refactor: Change bughunt mode to 'x' 2021-12-22 09:58:45 -03:00
Arnout Engelen
54f88038f6 Merge pull request #215 from ncfavier/capability-check
Disable capability check, handle failure better
2021-12-02 14:14:32 +01:00
Naïm Favier
afb5759cc3 Disable capability check, handle failure better
Fixes #214
2021-12-02 14:04:08 +01:00
Arnout Engelen
3e0bba6966 Merge pull request #213 from chenjiandongx/add-links
Add bandwhich and sniffer links
2021-11-21 14:16:36 +01:00
chenjiandongx
1ebf118409 Correct fomrat 2021-11-21 21:05:38 +08:00
chenjiandongx
5bbdb7de86 Add bandwhich and sniffer links 2021-11-21 21:03:47 +08:00
Arnout Engelen
ff3d8c64d1 Merge pull request #212 from unknown-spirit/patch-1
Added BusyTasks link to the list
2021-10-31 15:49:13 +01:00
unknown-spirit
040556d6a2 Added BusyTasks link to the list 2021-10-27 15:47:14 +02:00
Arnout Engelen
168d342a54 Merge pull request #210 from kretcheu/patch-1
Fix compilation error with [-Werror=format-security]
2021-10-11 10:33:56 +02:00
kretcheu
455daf357d Fix compilation error with [-Werror=format-security]
When compiling with [-Werror=format-security] in Debian packaging occurs this error:
```
cui.cpp: In function ‘void show_ncurses(Line**, int)’:                                          
cui.cpp:377:73: error: format not a string literal and no format arguments [-Werror=format-security]
  377 |   mvprintw(3 + 1 + i, cols - COLUMN_WIDTH_UNIT, desc_view_mode[viewMode]);              
      |                                                                         ^               
cui.cpp:379:29: warning: zero-length gnu_printf format string [-Wformat-zero-length]            
  379 |   mvprintw(totalrow + 1, 0, "");                                                        
      |                             ^~      
```

This patch solve the problem.

[]'s
kretcheu
2021-10-09 16:37:10 -03:00
Arnout Engelen
06fdccb419 Merge pull request #203 from takeoverjp/feature-garbage-collect-inodeproc
Issue: #96 - Garbage collect inodeproc on each ui refresh.
2021-02-17 15:26:49 +01:00
Kondo Takeo
8b2c55c3f3 Fix log message. 2021-02-17 23:13:50 +09:00
Kondo Takeo
b97fb4cfdf Issue: #96 - Garbage collect inodeproc once every 50 ui refresh as default.
- Reduce default frequency to avoid performance issue.
- The frequency of it can be modified with `-g` option
  and can be disabled with `-g 0`.
2021-02-17 23:02:27 +09:00
takeoverjp
12dbf5e28a Update src/inode2prog.cpp
Co-authored-by: Arnout Engelen <arnout@engelen.eu>
2021-02-17 22:31:21 +09:00
Kondo Takeo
0a54596bc6 Issue: #96 - Garbage collect inodeproc on each ui refresh. 2021-02-16 22:42:47 +09:00
Arnout Engelen
fefe0f0714 Merge pull request #202 from takeoverjp/feature-update-links
Add links to other network traffic monitoring tools.
2021-02-07 14:20:28 +01:00
Kondo Takeo
0e5f29a4ba Add links to other network traffic monitoring tools. 2021-02-07 20:37:52 +09:00
Arnout Engelen
8da07022e4 Merge pull request #201 from takeoverjp/fetaure-add-screenshot
Issue: #102 - Show screenshot in README.
2021-02-06 17:20:36 +01:00
Kondo Takeo
b5285a5bff Issue: #102 - Show screenshot in README. 2021-02-06 22:44:27 +09:00
Arnout Engelen
b482f04097 Merge pull request #200 from takeoverjp/feature-man-catchup
Update man page with the latest help message.
2021-02-06 10:15:45 +01:00
Kondo Takeo
975e11eddf Update man page with the latest help message. 2021-02-05 22:40:08 +09:00
Kondo Takeo
a4d2e550cb Fix typo in help message. 2021-02-05 22:39:01 +09:00
Arnout Engelen
7a0d9c0d41 Merge pull request #199 from takeoverjp/feature-udp-support
Issue: #62 - UDP support
2021-02-05 10:36:59 +01:00
Kondo Takeo
b7a42786bd Issue: #62 - Fix conninode_test. 2021-02-05 00:12:21 +09:00
Kondo Takeo
18629a3b33 Issue: #62 - Treat unlisted traffic as 'unknown UDP/TCP' 2021-02-04 23:43:29 +09:00