Git Product home page Git Product logo

tinywall's Introduction


TinyWall

A free, lightweight and non-intrusive firewall
Website »

About this repository

This is the source code of TinyWall as found at its website. Upstream development is now largely inactive, but this repository is provided for anyone who would like to submit their own improvements or fork the project.

How to build

Necessary tools

To build the application

  1. Open the solution file in Visual Studio and compile the TinyWall project. The other projects referenced inside the solution need not be compiled separately as they will be statically compiled into the application.
  2. Done.

To update/build build the database of known applications

  1. Adjust the individual JSON files in the TinyWall\Database folder.
  2. Start the application with the /develtool flag.
  3. Use the Database creator tab to create one combined database file in JSON format. The output file will be called profiles.json.
  4. To use the new database in debug builds, copy the output file to the TinyWall\bin\Debug folder.
  5. Done.

To build the installer

  1. Copy the compiled application files and all dependencies into the MsiSetup\Sources\ProgramFiles\TinyWall folder.
  2. Update the files as necessary inside the MsiSetup\Sources\CommonAppData\TinyWall folder. See instructions above about creating the database.
  3. Open the solution file in Visual Studio and compile the MsiSetup project.
  4. Done.

Contributing

Please don't open issues for feature requests or bug reports. Any changes you'd like you will need to implement yourself. If you have improvements that you would like to integrate into TinyWall, please fork the repo and create a pull request.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

For complex features or large changes, please contact me first if your changes are still within the scope of the application.

If you prefer that, you can also build and distribute your own version of the binaries. In this case though you need to choose a different name other than TinyWall for your application.

License

  • TaskDialog wrapper (code in directory pylorak.Windows\TaskDialog) written by KevinGre (link) and placed under Public Domain.

  • All other code in the repository is under the GNU GPLv3 License. See LICENSE.txt for more information.

Contact

Károly Pados - find e-mail at the bottom of the project website

Website: https://tinywall.pados.hu

GitHub: https://github.com/pylorak/tinywall

tinywall's People

Contributors

gitcourser avatar pylorak avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tinywall's Issues

AVG AV definition updates being blocked

Hi everyone.
The TW its blocking all AVG definition update tentatives, even whitelisting all .exe and services related to AVG AV. The definition updates are triggered by icarus.exe present in "C:\Program Files\Common Files\AVG\Icarus\avg-av-vps", when the icarus.exe process generate a temp folder inside that path (so the .exe who actually does the update is "C:\Program Files\Common Files\AVG\Icarus\avg-av-vps\temp<>\icarus.exe") and this new icarus.exe is blocked. There's some way to resolve this?

image

Thanks in advance.

Feature Request: option to ignore path on rule definition

issue
there are apps which update quite frequently and while doing so, creating a new directory for the new version instead of using the old one. this leads to a slightly different path (mostly only version number changed) while using the same executable name. Since the path changed, the rule created within tinywall does not match anymore and the app is going to be blocked. This means after every app-update I have to adjust the rule again within tinywall which is tedious.

solution proposal
add checkbox with the option to "ignore path" in the rule dialog so one can decide (and therefore accept the risks involved) to apply the rule only on the executable alone and adjust the rule evaluator accordingly.

examples of popular apps affected

  • google drive
  • cura slicer

Docker wont load when firewall enabled

Ive tried making every exception i can (adding child processes, exploring the various settings in each app exception), nothing works except disabling the tiny firewall entirely. Then when i start docker it will load, otherwise it fails

Removing pop ups is actually a lack not a feature.

The app boasts about not showing pop ups for blocked apps... I wonder how can you really have control over a firewall that doesn't let you know what apps are doing until you manually check it.

Its not a feature, its a lack.

whitelisting folder (and subfolders)

Hi! First of all, this project is amazing, good job guys.
I started to use this not too long ago, and it's honestly really solid piece of software. There may be some things that I'd like being differently done, but these are negligible.
There is one feature that I'd like to see being implemented though, and that is an option to unblock executables in a folder (and its subfolders).
To give an example why it would be useful: applications like Discord stores their executable in a folder containing their version (for me it's currently called "app-1.0.72"). When an update happens, that update is downloaded into a new folder and is then used instead. That means the old rules you may had for the previous version are no longer applied. And that's just one example.

I'd love to see something like this being implemented (if this project is still being worked on, that is...).

Error during installation - V3.3.1 & V3.3.0

When trying to install V3.3.1 & V3.3.0 on W11 22H2 - 22621.2134, I get the error: There is a problem with this Windows Installer package. A program run as a part of the setup did not finish as expected. Contact your support personnel or package vendor.

I checked my MSI file as well, as every other MSI package works with my MSI exec file, but it only errors with TinyWall. I would have tried the older version, but the old versions are not available for download on uptodown for many days now (more than 7 days now), since they keep throwing: Due to maintenance, downloads are currently not available. We're working to restore the service as soon as possible. We apologize for any inconvenience this may cause you. 404 page.

image

Feature Request: Install in "permissive" mode for remote installation

If there was an option in the installer to install in some kind of "permissive" mode, this would enable installation on remote machines, which could be quite useful.

Basically, install in permissive mode, set up a few rules for SSH access, whatever VNC you're using, or whatever else you need to access the machine, then switch TinyWall to the recommended block-all mode.

Feature request: custom hotkeys

Hello to Károly and other contributors.

I wish we can

  1. set custom hotkeys for whitelists (e.g. set custom hotkey for Whitelist by process)
  2. set global hotkeys for Normal protection and Disable firewall modes.

Thanks.

Application refuses to build due to missing 'github_mark.png' in Icons.resx

This won't build since you never uploaded the github_mark.png in img folder.
I checked all previous commits and it wasn't there.

So anyone attempting to build "TinyWall" from source, won't be able to unless they remove it.

Error:

1>TinyWall\SettingsForm.Designer.cs(448,77,448,88): error CS0117: 'Icons' does not contain a definition for 'github_mark'

Line: 448 in SettingsForm.Designer.cs
this.btnGithub.Image = global::pylorak.TinyWall.Resources.Icons.github_mark;

To fix:

SettingsForm.Designer.cs comment this line out.

this.btnGithub.Image = global::pylorak.TinyWall.Resources.Icons.github_mark;

Icons.resx remove the following lines
<data name="github_mark" type="System.Resources.ResXFileRef, System.Windows.Forms"> <value>img\github-mark.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> </data>

You will now be able to build it.

When installing Win10, only 21H2 or above?

I have some older Win10 media and when I install from it, if I try to install TinyWall too soon, it complains that 21H2 is required. Why is this required on Win10 but TW can apparently install on XP(?), Win7, etc. without issue? It's kinda annoying because the first thing I want to do is install a firewall and software and only after I've done that do I want to update Windows but with this I have to wait for the updates to take hold. I'm trying to build the perfect system image for QEMU/KVM so I have gone through this process about 10 times in the past 2 days alone and it has taken an extra hour each time. I prefer to do the updates once I'm done installing software so that the long portion of this process can happen while I'm asleep or the like.

portable

Will there be a portable version of this software? I see there is only an installer, and then the configuration files of the software will be placed on the c drive.

NordVPN still blocked despite executable and service in exceptions

I tried to manually whitelist all the involved processes and even connect via NordVPN + autolearn every once in a while, but it does not solve the issue. After 2-3 days, TinyWall starts again to block the outgoing connections.

Settings:
settings

Exception:
exception

Connections blocked:
blocked

please, opensource TinyWallLegacy v3.2.5 !!!

Many of us keep using win versions 7 and 8.., and even 32bits, and even more ReactOS (yet 32bits win compatible OS)..

so, please, make and keep opensourced TinyWallLegacy since after v3.2.5 !!!

Feature request: Masks for applications paths

Some applications update on daily basis and like to change paths changing the folder name with their versions like:
C:\Program Files (x86)\Microsoft\EdgeWebView\Application\120.0.2210.133\msedgewebview2.exe
C:\Program Files\WindowsApps\SpotifyAB.SpotifyMusic_1.226.1187.0_x64__zpdnekdrzrea0\Spotify.exe

so if we could do something like this:
C:\Program Files (x86)\Microsoft\EdgeWebView\Application*\msedgewebview2.exe
C:\Program Files\WindowsApps\SpotifyAB.SpotifyMusic_*\Spotify.exe

The * would allow anything.

Connections window shows IPv6 addresses backwards

Hi, there's an issue how the connections window display the IPv6 addresses. They're all half-backwards and when combined with leading zero truncation, they can also look very confusing.

For example, with link-local address of fe80::e9df:7c76:13d1:3114 TinyWall displays 1431:d113:767c:dfe9::80fe.

"Link-local IPv6 Address"


Same thing happens with remote addresses. For example, Google Public DNS Server IPv6 addresses are 2001:4860:4860::8888 and 2001:4860:4860::8844, but we see 8888::6048:6048:120 instead

"Google Public DNS"

Not a deal breaker or anything but somewhat annoying and renders the "Copy remote address" function useless.

SMB 445

Hi,
it looks impossible to open SMB2 445 port to reach server on local networks subnet.
The option screen "Special exceptions" needs to show one more option to open that.
Maybe a new port exception page ?
Thanks

Add PID (process id) in connections list

Hello.
It would be nice to see a process id in connections.
For example:
In the list I can see svchost.exe or taskhostw.exe but can't understand what service or what task has been blocked. PID will be very helpful to determinate what service or a task where blocked

image

Restrict access to a port to a range of IPs

I don't know if that's doable right now but, I'd need to access a service running on a port just from a specific set of IPs used by my vpn while now, opening that service I can access even not using my vpn.

Question: Blocklist

Hello,
i did a look into Tinywall and saw the feature "enable blocklist"...
In settings I can find port-based and domain-based blocklist.

Recommended is domain-based blocklist... But here comes my question: Which blocklists are included???
Is there a way to view them?

Best regards,

Feature Request: User applications lists

It would be nice to be able to apply a (temporary) rule to a group of applications.
The actual list rule is only single "white list" that allows unrestricted access.
What I'm looking for is "allow outgoing" per list rule, or "newer allow" or "allow in specific time" or "15min at startup" or whatever.

Service exception does not work

I have express vpn service exceptions defined as
ExpressVPN App Service (C:\Program Files (x86)\ExpressVPN\services\ExpressVPN.AppService.exe)
ExpressVPN System Service (C:\Program Files (x86)\ExpressVPN\services\ExpressVPN.SystemService.exe)
both Unrestricted TCP/UPD traffic
But both keep showing as blocked in connections list
VPN only works while firewall is disabled
TinyWall 3.3.1

Suggestion: Whitelist folder

Some programs (e.g. Discord, Github desktop) create a new folder every time a new update is auto installed (this can happen daily), which renders the current whitelist for that program useless. So my suggestion is to add the ability to whitelist a whole folder so any program who runs from that folder and subfolders get the rules applied to them.

Old versions

Please keep links to old versions of TinyWall available, e.g version 3.2.5, which is the last version to run on Windows 7 and 8.

Controller is painfully slow to use

I've had the issue that whenever I try to right-click or even just click the tray icon, the controller will take an unreasonable amount of time to show the context menu. Sometimes even the UI will freeze completely on me unable to control it at all. This has been going on for as long as I can remember having the app and I'm just so tired of it. This also happens on fresh Windows installs.

Is there a fix? many thanks

Windows 10 Home 64 bit v19045.4291

Here's a sample of the app that just froze on me for no reason:

image

Feature Request: Menu item to disable Firewall for a period of time e.g. 5min, 1hour

Often, i need to install something that requires python, node, the store or some other application that has a bunch of sub applications that requires internet access. I certainly dont want to grant them permanent access, nor do i want to allow each and every sub application access for 5 mins, just for an install. I tend to disable firewall, then forget until later to switch it on again.
It would be great to have a menu item in the tray icon where one can disable for 5 minutes, and not have to remember to switch it on again. Maybe useful to have a few different default times e.g. 1minute, 5 minutes, 1 hour, until reboot

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.