Commit graph

1011 commits

Author SHA1 Message Date
Gustavo Iñiguez Goia
6b2a8296d4
updated translations 2023-01-23 13:46:08 +01:00
Gustavo Iñiguez Goia
1f7202238f
updated/added new translations 2023-01-21 21:53:27 +01:00
Gustavo Iñiguez Goia
cf7f6b4027 Bump daemon version to v1.4.1 2021-11-23 00:53:50 +01:00
Gustavo Iñiguez Goia
9821800f92 rules: don't load rules that fail to compile
Be sure that we don't load invalid regexp rules.

related: #536
2021-11-22 21:38:31 +01:00
Gustavo Iñiguez Goia
8037c3893b Bump UI version to 1.4.2 2021-11-04 16:44:42 +01:00
Ryan Olton
4224fd7678 set prompt width and height after initial display; set prompt minimum and maximum size using initial width and height values 2021-11-04 16:01:32 +01:00
Gustavo Iñiguez Goia
34911f6b80 ui: fixed GUI loading when DE autologin is on
Fixed GUI loading behaviour when DE's autologin is on.

Background:
 Sometimes the system tray is not available, so our app's icon
 does not show up. In this case we show the GUI to allow the user
 manage the rules and view connections.

If the user activated the autologin option, on KDE (and probably others)
our service was launched before the panel was ready, so the system tray was
not available yet and we were showing the Events window.

Changes:
- Delay 10s the check to see if the system tray is available, to give it
  time to load.
- Add X-KDE-Autostart-after=panel to kcm_opensnitch.desktop, to launch
  the GUI only after the panel is loaded.
- Misc: removed OpenSnitch entry from System Settings on KDE, and update
  the categories where the app is shown in the menus.

Closes #535
2021-11-04 16:00:47 +01:00
Gustavo Iñiguez Goia
8cd81e0a64 ui: fixed crash when displaying the GUI
On Fedora 34, without the appindicator extension installed, when the GUI
was displayed it crashed with the following error:

TypeError: index 0 has type 'float' but 'int' is expected.

related: #526
2021-10-08 13:36:22 +02:00
Gustavo Iñiguez Goia
843589ef25 Bump GUI version to 1.4.1 2021-10-01 01:25:50 +02:00
Gustavo Iñiguez Goia
14eb135675 don't overwrite rules if they already exist (2/2)
Don't overwrite rules when adding or editing rules, to avoid losing
already added rules.

- When adding a rule, check if there's already a rule with the same
  name.
- After adding a new rule, enter into EDIT mode, to allow changes to the
  rule without closing the dialog.
- If the user changes the name after adding a rule, check if there's a
  rule with the same name.
- When editing a rule and the user changes the name, check if there's a
  rule with the same name.

issue #512
2021-09-20 00:11:33 +02:00
Gustavo Iñiguez Goia
af459024a7 don't overwrite rules if they already exist.
Don't overwrite rules when adding or editing rules, to avoid losing
already added rules.

closes #512
2021-09-20 00:11:22 +02:00
Gustavo Iñiguez Goia
3d9b9d917e i18n: fixed fr_FR translation generation 2021-09-20 00:09:38 +02:00
Gustavo Iñiguez Goia
cddc5b6de8 ui,pop-ups:use the proc path if the args are empty
If the cmdline of a process is empty, use the process' path to create
the rule, instead of process.command field.
2021-09-09 16:17:48 +02:00
Gustavo Iñiguez Goia
d57122ad96 debs: removed dh-systemd dependency
It prevented to build the packages on < Debian Sid, and it generates the
post/pre installation/uninstall code anyway.
2021-09-09 16:14:03 +02:00
Gustavo Iñiguez Goia
499b037f84 ui, i18n: added fr_FR translation
Thanks to @Herve5. #484
2021-09-07 12:59:54 +02:00
Gustavo Iñiguez Goia
0b0255ea4f improved setting proc monitor method from cli
This change is part of the last commit.
2021-09-04 23:09:04 +02:00
Gustavo Iñiguez Goia
71d0f6d27d improved process monitor method (re)configuring
- Fixed reloading process monitor method if the configuration changes on
  disk. This can occur in two situations: 1) if it's changed from the
  UI, 2) if the user changes it manually.
- Ensure that we don't crash if there's an error changing the
  method and ebpf is active.
- When changing monitor method to ebpf and it fails to start, stop it
  anyway. It helps cleaning up kprobes and avoiding the error
  "cannot write...: file exists".
2021-09-04 21:18:22 +02:00
Gustavo Iñiguez Goia
f5bb478c99 use GUI's default action when applying a verdict
When the daemon connects to the GUI, use the default action
configured on the GUI to apply a verdict on new connections.

We were using daemon's default action, so if it was Allow but the user
had configured Deny on the GUI it was allowing connections, causing some
confusion (#489)

TODO: apply this action not only on connecting to the GUI, but also when
saving the configuration from the GUI.
2021-09-03 17:37:26 +02:00
Gustavo Iñiguez Goia
fa7df6595d fixed exception when cleaning up the cache
Under certain situations, while cleaning up the cache of inodes,
if an item was deleted we could end up accessing a nil item.

Spotted on ubuntu18.
2021-09-02 20:51:18 +02:00
Gustavo Iñiguez Goia
18f0c9133d ui, rules editor: fixed parsing duration
When adding a new rule we were getting the duration as it appeared on
the combo box. It was used to create a Golang time.

However translators were translating the duration strings (30s, 5m,
etc), causing errors when saving the rule.

Now we just look for the index of the selected duration.
2021-09-01 02:08:58 +02:00
Gustavo Iñiguez Goia
d624780141
Merge pull request #487 from freddii/master
updated german translation
2021-08-31 15:33:40 +02:00
freddii
1fa4e421ca updated german translation 2021-08-31 12:53:23 +02:00
Gustavo Iñiguez Goia
041cf456dc Bump versions to v1.4.0 2021-08-27 13:48:20 +02:00
Gustavo Iñiguez Goia
d11a98e418 fixed interception and system fw rules, default action
- The firewall rules defined in /etc/opensnitchd/system-fw.json take
precedence over the interception rules, but we were inserting the
interception rules before the system's ones. With this change #455
should be fixed.

- On the other hand, the DefaultAction was not being applied correctly
  in all cases. As of today the DefaultAction is applied in 2 scenarios:
  * When the daemon is connected to the GUI and the user doesn't answer
    a pop-up.
  * When the daemon is not connected to the GUI.

  However as we don't parse all network protocols, even if the GUI is
  connected we may end up parsing a connection and don't know what to do
  with it. In this case the DefaultAction was always Deny.

  Now in the above scenario, i.e.: when the GUI is connected but we
  can't parse a connection, we'll apply the DefaultAction configured by
  the user.
2021-08-25 13:06:32 +02:00
Gustavo Iñiguez Goia
7c991dd85f
Merge pull request #479 from gnuhead-chieb/master
Update Japanese translation
2021-08-23 10:40:13 +02:00
Gustavo Iñiguez Goia
96722ed740 blocklists: sanitize hosts entries
Remove \r\n\t\s from the end of each line of a blocklist.

If the entries of a list had these characters caused to not match
connections and not apply the rule.

closes #429
2021-08-22 23:07:25 +02:00
gnuhead-chieb
48538323ca
Add files via upload 2021-08-22 08:03:11 +09:00
Flávio Costa
e85ba18a17
Update Brazilian Portuguese translation (#478)
* Update Brazilian Portuguese translation
2021-08-20 20:51:39 +02:00
Gustavo Iñiguez Goia
49c171df4c Use eBPF as procs monitor method by default
If eBPF is not available we'll fallback to proc parsing.
2021-08-17 13:54:46 +02:00
Gustavo Iñiguez Goia
94fa3c8093 ui, stats: better window restoration on KDE
Latest approach seems to not always work (latest KDE on kubuntu 20 and
manjaro as of today).

This seems to work better:
https://doc.qt.io/qt-5/qwidget.html#setWindowState
2021-08-13 18:03:10 +02:00
Gustavo Iñiguez Goia
a354ae22e1 statistics: fixed missed connections
Previous behaviour:

 1) Before version 1.0.0b the daemon kept a list of processes that had
 established connections. The list was displayed on the GUI as is, so
 the maximum number of connections displayed were 100 (hardcoded).

 2) When the intercepted connections reached 100, the last entry of the
    list was removed, and a new one was inserted on the top.

After v1.0.0 we started saving connections to a DB on the GUI side, to
get rid of the hardcoded connections limit. However, the point 2) was
still present that caused some problems:
 - When the backlog was full we kept inserting and deleting connections
   from it continuously, one by one.
 - If there was a connections burst we could end up missing some
   connections.

New behaviour:
 - The statisics are deleted from the daemon everytime we send them to
   the GUI, because we don't need them on the daemon anymore.
 - If the GUI is not connected, the connections will be added to the
   backlog as in the point 2).
 - When the backlog reaches the limit, it'll keep deleting the last
   one in order to insert a new one.
 - The number of connections to keep on the backlog is configurable.
 - If the statistics configuration is missing, default values will be
   150 (maxEvents) and 25 (maxStats).

Notes:
 If the GUI is saving the data to memory (default), there won't be
 any noticeable side effect.
 If the GUI is configured to save the connections to a DB on disk, and
 the daemon sends all the backlog at once, the GUI may experience a
 delay and a high CPU spike. This can occur on connecting to the daemon
 (because the backlog will be full), or when an app sends too many
 connections per second (like nmap).
2021-08-13 12:18:10 +02:00
Gustavo Iñiguez Goia
2b8c931762 ui, events: translate columns headers
Related: #465
2021-08-12 15:12:11 +02:00
Gustavo Iñiguez Goia
38d4fb9ae5 Bump versions to v1.4.0rc4 2021-08-11 17:16:56 +02:00
Gustavo Iñiguez Goia
5a6dd28072 cache of PIDs: added new tests, fixed rare crash
- New tests to validate deleion of PIDs.
- Fixed potential out-of-bounds when deleting PIDs from cache.
2021-08-11 14:19:43 +02:00
Gustavo Iñiguez Goia
6ce099ffd5 ui, events: fixed restoring state when minimized
On KDE the events window was not restored to previous state when the
window was minimized to the taskbar.

This was fixed by @themighty1 in this PR #315, but there was an
unexpected behaviour on others DE.

As I haven't seen this error in others DE, we apply the original
fix, but only when the DE in use is KDE.
2021-08-09 15:28:15 +02:00
Gustavo Iñiguez Goia
0910249fb2 ui: fixed typos, improvements.
- Fixed typos in the preferences dialog (#465).
- Fixed hiding/showing rules combobox.
- Keep opensnitchd/default-config.json format when saving node's
  configuration from the GUI.
2021-08-09 13:30:56 +02:00
Gustavo Iñiguez Goia
ba7c4e1878 allow to configure what firewall to use
Before this change, we tried to determine what firewall to use based on
the version of iptables (if -V legacy -> nftables, otherwise iptables).

This caused problems (#455), and as there's no support yet for nftables
system firewall rules, it can't be configured to workaround these
errors.

Now the default firewall to use will be iptables.
If it's not available (installed), can't be used or the configuration
option is empty/missing, we'll use nftables.
2021-08-09 00:32:27 +02:00
Gustavo Iñiguez Goia
db18b0cc63
Merge pull request #470 from ovari/master
Update opensnitch-hu_HU.ts
2021-08-08 12:51:34 +02:00
Gustavo Iñiguez Goia
bca5ffa9b5 ui,rules: update rules last_seen field on new stats
Update the last_seen field every time a new connection is established.
2021-08-08 12:29:37 +02:00
ovari
dd94c3fe1a
Update opensnitch-hu_HU.ts 2021-08-06 18:28:24 +10:00
Gustavo Iñiguez Goia
388c98e559 ui,preferences dialog: fixed crash
qcombobox placeHolderText preference was set as translatable, and it
caused a crash.
2021-08-03 01:11:12 +02:00
Gustavo Iñiguez Goia
f96e44dc93 ui: improved UI internationalization, columns fix
- Now the columns names of the details views can be translated (#465).
- Fixed columns size restoring when clicking on the Events tab to view
  the details of an item (process, rule or node).
2021-08-02 17:16:10 +02:00
Gustavo Iñiguez Goia
de3c4be5d5 ui: allow personalize columns size
Now if you resize any columns, it'll be remembered the next time you
open that view.
2021-07-31 18:57:17 +02:00
Gustavo Iñiguez Goia
2b3fdfc948 ui,db: display an error if the db file is corrupted
Display an alert if the db loaded from disk is corrupted.

closes #460
2021-07-31 01:35:28 +02:00
Gustavo Iñiguez Goia
83ab1f9f5e ui, prompt: fixed increasing height when prompting
There was an annoying bug that increased the pop-up height a little bit
everytime a new pop-up was displayed.

Hopefully this time it's fixed, while maintaining compatiblitiy on the
mobile (i.e.: displaying the buttons at the bottom and the connection
information at the top of the pop-up).
2021-07-29 19:22:15 +02:00
Gustavo Iñiguez Goia
9a34665d0e improved PID discovering
One of the steps of PIDs discovering is knowing what's the socket inode
of a connection. The first try is to dump the active connections in the
kernel, using NETLINK_SOCK_DIAG via netlink.

Sometimes when a source port was reused, the kernel could return multiple
entries with the same source port, leading us to associate connections with
the wrong application.

This change fixes this problem, while allowing us to discover other
apps.
More information:
https://github.com/evilsocket/opensnitch/issues/387#issuecomment-888663121

Note: this problem shouldn't occur using the procs monitor method eBPF.
2021-07-29 15:40:25 +02:00
Gustavo Iñiguez Goia
b644853d63 ui: allow to configure events columns, misc
* Preferences:
  - Allow to configure the columns of the Events tab.
  - Fixed displaying labels on small screens.

* Rules:
  - Added combo to select the type of rules to list (all, permanent,
    temporary) when the left panel is hidden.

* Main window:
  - Improved tabs widgets positioning.

* Misc:
  - Improved code to avoid typos.
2021-07-26 19:00:22 +02:00
Gustavo Iñiguez Goia
a3a171d2a2 ui: allow to ignore temporary rules, fixes, impovements
- Added option to ignore temporary rules. All or only of duration
  "once".
  You can still use them when answering a pop-up, but if you check the
  option, the rules won't be added to the rules list.

- Fixed wrong behaviour when adding rules to the db/gui.
  When changing a rule duration (always->30s, 30s->always), if there
  were connections matching that rule, the rule was re-added to the
  db/rules list with the old duration, ending up with 2 rules in the
  list.
  This was caused by how stats are sent to the GUI. When populating the
  db with the stats, we were also adding the rules.

  Now we don't add the rules when adding the stats. Rules are added to
  the db everytime a node connects to the GUI, when answering a pop-up
  or whenever the user performs an operation on them.

  Performance has increased a little bit due to this.

- Fixed applying configuration to all nodes at once.
- Added help menu to the preferences dialog.
- Removed lists grid.
- A little bit of code reorganization.
2021-07-24 23:53:42 +02:00
Gustavo Iñiguez Goia
fbcab5a0c4 cache, pids/inodes: fixed race conditions, improvements
- Fixed multiple race conditions when using the cache of PIDs.
- Improved the chances to hit the cache of inodes, which helps to keep
  down the times to get the PID of a connection to <= 30us.

These caches are mainly used when not using "ebpf" proc monitor method.
2021-07-21 15:04:23 +02:00
Gustavo Iñiguez Goia
544887adeb ui, pkgs: added packaging step to fix pb2 files. 2021-07-17 11:13:34 +02:00