• Stars
    star
    959
  • Rank 47,674 (Top 1.0 %)
  • Language
    Python
  • License
    GNU General Publi...
  • Created almost 5 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Share files across the LAN

Warpinator - send and receive files across a local network

build

Other platforms (unofficial):

How to build and install for Linux


Mint 20+, LMDE 4+:

sudo apt-get install warpinator

Ubuntu 20.04, related:

# Install build dependencies listed below, note minimum versions:
sudo apt-get install python3-grpc-tools python3-grpcio

# Clone this repo:
git clone https://github.com/linuxmint/warpinator.git

# Enter the folder, specify version:
cd warpinator

# Check out a version you want, or skip this step to build off the current source.
git checkout 1.2.3

# Try to build. If this fails, it's probably due to missing dependencies.
# If you use GitHub Actions to compile, please install the following dependencies.
sudo apt-get -y install debhelper dh-python gnome-pkg-tools meson gobject-introspection appstream python3-grpc-tools

# Take note of these packages, install them using apt-get:
dpkg-buildpackage --no-sign

# Once that succeeds, install:
cd ..
sudo dpkg -i *warp*.deb

# If this fails, make note of missing runtime dependencies (check list below),
# install them, repeat previous command (apt-get install -f may also work).
Note for Mint 19.x and Ubuntu Bionic (18.04) users:

Add this PPA to satisfy dependencies, then you can follow steps above: https://launchpad.net/~clementlefebvre/+archive/ubuntu/grpc?field.series_filter=bionic

Arch Linux:

For any desktop environment (DE)

sudo pacman -S warpinator

Otherwise (and this is valid anywhere if you want to avoid packaging):

meson builddir --prefix=/usr # (This is typical - /usr/local is another common choice for non-package-manager installs).
ninja -C builddir
sudo ninja -C builddir install

Flatpak

For any Linux distro with flatpak support you can also install it from Flathub:

flatpak install flathub org.x.Warpinator

build deps (ref: debian/control)
  • meson (>= 0.45.0)
  • python3-grpc-tools (>= 1.14.0)
  • python3-protobuf (>= 3.6.1)
  • gobject-introspection
required only for makepot
  • appstream,
  • policykit-1,
runtime deps
  • gir1.2-glib-2.0
  • gir1.2-gtk-3.0 (>= 3.20.0)
  • gir1.2-xapp-1.0 (>= 1.6.0)
  • python3
  • python3-gi
  • python3-setproctitle
  • python3-xapp (>= 1.6.0)
  • python3-zeroconf (>= 0.27.0) *** see note below
  • python3-grpcio (>= 1.16.0)
  • python3-cryptography
  • python3-nacl
Note about zeroconf

As of v1.2.0, the build attempts to download and install/package zeroconf to the warpinator install dir (or package). To disable this and have warpinator use the system's version, set the 'bundle-zeroconf' build option to false:

meson builddir --prefix=/usr -Dbundle-zeroconf=false
ninja -C builddir
sudo ninja -C builddir install
You can get grpcio and grpc-tools from pip3 also:
pip3 install grpcio grpcio-tools

Security Considerations

Secure Mode

Group codes

The group code is a shared key that allows trusted devices on the local network to see one another in Warpinator. Any devices you wish to connect with must be using the same group code. This code is set to 'Warpinator' by default.

Enabling secure mode

Secure mode can be enabled simply by changing the group code to something unique. It is highly recommended that you do this as soon as possible, as anyone else that gets on your network would then be able to connect with you with little effort.

Certain restrictions are put in place until Secure Mode is enabled:
  • Starting automatically at login is disabled.
  • All incoming transfers must be approved by the user.
  • Warpinator will exit after sixty minutes.
Additional information:
  • It is recommended that the code only consist of standard alphanumeric characters.
  • The code must between 8 and 32 characters. If you decide to use non-ascii characters, the maximum length may end up being shorter.

Folder Isolation

Overview

There is potential for incoming files to be manipulated by a sender in a manner that might cause harm to your system, making use of symbolic links (files that point to other files or folders). Warpinator tries to detect and prevent this, but can also make use of other tools to provide more protection.

Landlock:

Landlock is a relatively new security module for the Linux Kernel that allows a program to fine-tune how it can access your filesystem. In the context of Warpinator, it allows us to completely isolate your incoming folder - it essentially exists in a vacuum during transfers. Warpinator uses this automatically if it's available.

Bubblewrap:

Bubblewrap (or bwrap) is a tool that can be used to construct a restrictive environment that a program operate in. For Warpinator, Using bubblewrap provides an experience similar to Landlock, in that only your incoming folder can be written to. There are a couple of minor disadvantages, however: Changing your incoming folder location will require Warpinator to be restarted, and the rest of your filesystem will be read-only (for instance, you won't be able to create new folders elsewhere on your system from Warpinator's file dialog). Warpinator will attempt to use this if Landlock is not available.

Legacy (No isolation):

If both Landlock and Bubblewrap are unavailable, Warpinator will operate without and folder isolation, though incoming transfers will still be analyzed to try and catch any potentially harmful files.

Additional information:

  • Landlock is only available in kernel version 5.13 or higher, and must also be enabled. You can check if it's available by running cat /sys/kernel/security/lsm | grep landlock from a terminal.
  • Bubblewrap is available in most distributions using your system's package manager.
  • You can specify a tool to use that will override Warpinator's auto-detection. See warpinator --help for information.

Troubleshooting tips

Improving transfer speeds

Enable compression:

Beginning in version 1.2.0, transfers can potentially be sped up by enabling compression. Note: this will only work if the sending and receiving machine both support it. It can be enabled in General Preferences: image

Solving connection issues

Check your group code:

All devices that wish to connnect must share the same group code. Any that do not will be ignored. Tip: You should first choose a unique code before setting up additional devices. Do not leave it as the default "Warpinator".

Make sure you're using a valid network interface:

All devices must be on the same local subnet in order to connect. While Warpinator will generally 'get this right' on its own, it can fail depending on various factors. An easy way to tell is to compare the IP address of both devices. You can check this in the lower right-hand corner of the Warpinator window. In most home-based networks, this value will start with 192.168.1. For devices to see one another, they must all share that part of the address. The last set of digits will differ on each device. If there are additional differences, the devices will probably not be able to connect.

  • If you're running Warpinator in a virtual machine, make sure you've set it up to use a 'bridged' network adapter. This enables the VM to appear as a real computer on the network. If you don't do this, it won't be visible to other Warpinator devices on the network. In VirtualBox, this can be changed as shown:

image

  • If you are connected to multiple networks, you may need to select a specific interface in Preferences: image

  • Make sure you don't have a VPN currently enabled on the device. Allowing 'LAN traffic' in your VPN configuration can sometimes avoid this problem, though you should disable the VPN entirely until you can confirm there are no connection issues without it.

Make sure your firewall is configured properly, if one is being used:

In order for devices to connect with one another, rules must be added for Warpinator, to allow incoming traffic for the specific ports Warpinator uses.

By default, port 42000 is used for transfers, and 42001 is used for authentication. In current versions of Warpinator (after 1.2.0), only TCP is required, but you should also allow UDP traffic on the transfer port to allow connections with older Warpinator versions.

Note: If you are planning to use the Flatpak version to connect to other machines using Flatpak, you need to open UDP port 5353 as well as those mentioned above. Even if the port is already opened according to gufw, it must be explicitly opened here.

  • If you use gufw, Warpinator can add the rules for you (this is not available for the Flatpak version): image
  • If you're using the Flatpak version, you can add the rules to gufw by adding 'Simple' rules:

Transfers: TCP port

and

Authentication: TCP port

and

Zeroconf flatpak fix: UDP 5353

You should end up with:

Correct gufw rule list

Check under the hood:

It's possible there is something else causing your connection issues that is not covered here. You can run Warpinator in debug mode to gather additional information to troubleshoot (or to attach to an Issue report here).

  • First, make sure Warpinator isn't already running - open the menu and click 'Quit'. Simply closing the window will not necessarily end the program, if you have the status icon enabled.

image

  • Then, open a terminal and run:
warpinator --debug

# If you're running the Flatpak version, use this instead:

flatpak run --command=warpinator org.x.Warpinator --debug

This will cause a great deal of useful information to be logged to the terminal. You can copy this and attach it to a bug report here. This will give us a good head start on assisting you.

Note: Please don't copy/paste the text directly into the issue. You can save it into a text file, then simply drag the file into the editor here.

More Repositories

1

cinnamon

A Linux desktop featuring a traditional layout, built from modern technology and introducing brand new innovative features.
JavaScript
4,196
star
2

nemo

File browser for Cinnamon
C
1,046
star
3

timeshift

System restore tool for Linux. Creates filesystem snapshots using rsync+hardlinks, or BTRFS snapshots. Supports scheduled snapshots, multiple backup levels, and exclude filters. Snapshots can be restored while system is running or from Live CD/USB.
Vala
971
star
4

hypnotix

An M3U IPTV Player
Python
865
star
5

cinnamon-spices-applets

Applets for the Cinnamon desktop
JavaScript
526
star
6

webapp-manager

Python
501
star
7

xed

X-Apps [Text] Editor (Cross-DE, backward-compatible, GTK3, traditional UI)
C
392
star
8

nemo-extensions

A set of extensions for Nemo
C
374
star
9

slick-greeter

A slick-looking LightDM greeter
Vala
308
star
10

mintupdate

The Linux Mint Update Manager
Python
267
star
11

mint-themes

Mint-X, Mint-Y..
CSS
190
star
12

sticky

A sticky notes app for the linux desktop
Python
186
star
13

muffin

The window management library for the Cinnamon desktop (libmuffin) and its sample WM binary (muffin)
C
186
star
14

xreader

A generic Document Reader
C
184
star
15

cinnamon-desktop

The cinnamon-desktop library (and common settings schemas for the cinnamon desktop)
C
173
star
16

pix

Image management application
C
172
star
17

cinnamon-screensaver

The Cinnamon screen locker and screensaver program
Python
144
star
18

cinnamon-spices-themes

Themes for the Cinnamon desktop
CSS
139
star
19

mintstick

Python
131
star
20

blueberry

A Bluetooth configuration tool
Python
126
star
21

mintinstall

Software Manager
Python
119
star
22

cinnamon-spices-desklets

Desklets for the Cinnamon desktop
JavaScript
116
star
23

mint-y-icons

The Mint-Y icon theme
Python
100
star
24

mdm

The MDM Display Manager
C
94
star
25

cinnamon-spices-extensions

Extensions for the Cinnamon desktop
JavaScript
93
star
26

lightdm-settings

A configuration tool for the LightDM display manager
Python
92
star
27

mintmenu

Advanced Mint menu for MATE
Python
86
star
28

xplayer

A generic Media Player
C
81
star
29

xapp

Cross-desktop libraries and common resources
C
75
star
30

bulky

Bulk Renamer
Python
73
star
31

mint-y-theme

This is an old repository, please check https://github.com/linuxmint/mint-themes instead.
CSS
71
star
32

xviewer

A generic Image viewer
C
66
star
33

cjs

The Cinnamon Javascript interpreter
C++
65
star
34

mintwelcome

Welcome screen
Python
64
star
35

cinnamon-control-center

A collection of configuration plugins used in cinnamon-settings
C
63
star
36

website-wizixo

CSS
59
star
37

cinnamon-settings-daemon

The settings daemon for the Cinnamon desktop
C
56
star
38

mintdrivers

Driver Manager
Python
54
star
39

live-installer

A live installer for the Debian edition
HTML
53
star
40

mintbackup

The mintBackup Backup Tool
Python
52
star
41

mint-x-icons

Icon theme for Linux Mint
Python
51
star
42

mintsystem

Python
51
star
43

mintdesktop

Desktop configuration tool for MATE and Xfce
Python
51
star
44

mintsources

Python
50
star
45

linuxmint

Linux Mint
48
star
46

mint4win

Windows installer for Linux Mint based on Wubi
C++
44
star
47

ubiquity

Installer
Python
43
star
48

mate

MATE Debian Packages (please report bugs either to MATE or Linux Mint directly)
Python
39
star
49

pia-manager

A VPN configuration tool for PIA
Python
31
star
50

mintupgrade

Python
31
star
51

nvidia-prime-applet

Python
29
star
52

mintnanny

Domain blocker
Python
29
star
53

xapp-thumbnailers

Thumbnailers for GTK Desktop Environments
Python
27
star
54

cinnamon-session

The Cinnamon session manager
C
25
star
55

thingy

Library - Recent and favorite documents
Python
25
star
56

cinnamon-menus

The cinnamon-menu library
C
24
star
57

gtk

GTK toolkit for Betsy (master) and Mint 17.
C
22
star
58

mint-dev-tools

Python
21
star
59

mint20-beta

BETA Bug Squah Rush
21
star
60

doc-user-guide

The Linux Mint User Guide
Python
20
star
61

mintcommon

Python
20
star
62

doc-developer-guide

The Linux Mint Developer Guide
20
star
63

mintupgrade-legacy

Tool to upgrade from one LTS to another.
Python
20
star
64

gdebi

Pinned version of gdebi in Mint 18.x
Python
19
star
65

cinnamon-translations

Makefile
18
star
66

python3-xapp

Python3 Xapp Library
Python
17
star
67

mint-themes-gtk3

CSS
16
star
68

folder-color-switcher

Python
16
star
69

mint21-beta

BETA Bug Squash Rush
16
star
70

mintreport

Troubleshooting tool
Python
16
star
71

mintupload

Uploads files on the Internet
Python
16
star
72

mintlocale

Python
14
star
73

doc-troubleshooting-guide

The Linux Mint Troubleshooting Guide
Python
12
star
74

flags

Source package for iso-flag-png
12
star
75

cinnamon-themes

This is an old repository, please check https://github.com/linuxmint/mint-themes instead.
CSS
12
star
76

brand-logo

Linux Mint Logo and brand resources
11
star
77

mint19.3-beta

BETA Bug Squah Rush
10
star
78

wine-installer

Meta package and missing files for Wine
10
star
79

mint-translations

Python
10
star
80

mint20.1-beta

BETA Bug Squah Rush
9
star
81

mint21.2-beta

BETA Bug Squash Rush
9
star
82

mint-mdm-themes

JavaScript
9
star
83

xfce-panel

C
8
star
84

linuxmint.github.io

This is the content of https://projects.linuxmint.com
HTML
8
star
85

ubuntu-drivers-common

Python
8
star
86

xfce4-xapp-status-plugin

XappStatus panel applet for Xfce4
C
8
star
87

xviewer-plugins

C
8
star
88

gnome-screenshot

Patched version for Linux Mint 18, and 19.
C
7
star
89

mint20.3-beta

BETA Bug Squah Rush
7
star
90

libreoffice-style-mint

Icons for LibreOffice
7
star
91

cinnamon-bluetooth

No longer used. Please check blueberry instead.
Shell
7
star
92

mint-l-theme

Mint-L Theme
CSS
7
star
93

apturl

Python
7
star
94

mint-y-colors

Temporary project to work on colors
Python
7
star
95

mint21.1-beta

BETA Bug Squash Rush
7
star
96

libappindicator

Patched version of libappindicator (falls back to XAppStatusIcon instead of GtkStatusIcon)
C
6
star
97

xplayer-plparser

C
6
star
98

mint-upgrade-info

Metadata used to upgrade from one minor release to the next
6
star
99

lmde6-beta

BETA Bug Squash Rush
6
star
100

doc-translation-guide

The Linux Mint Translation Guide
6
star