pybatmesh/README.md

129 lines
3.5 KiB
Markdown
Raw Normal View History

2021-05-10 10:06:30 +02:00
# naxalnet
**naxalnet** is an experiment to create a wireless mesh network for
communicating with each other during an internet shutdown, using
2021-05-10 11:45:42 +02:00
existing software and tech as much as possible. Currently
you can only communicate with other peers running naxalnet or
using the same network as naxalnet. It uses
[B.A.T.M.A.N. Advanced][batman-adv],
an implementation of the B.A.T.M.A.N. routing protocol to
communicate with peers.
2021-05-10 11:45:42 +02:00
The name naxal comes from Naxalbari, a village in Darjeeling,
West Bengal.
<!-- UNCOMMENT WHEN NECESSARY
**Disclaimer**:
In case you are either 1) a complete idiot; or 2) a member of parliament;
or 3) both, please be aware that this project is not affiliated with
any groups designated as "terrorist" groups in India.
2021-05-10 11:45:42 +02:00
Using the name Naxal does not imply any form of connection
with anyone the government collectively calles Urban Naxals (human rights
activists, lawyers, poets, writers, journalists or anyone else
2021-05-11 08:46:32 +02:00
advocating the constitutional rights).
2021-05-10 11:45:42 +02:00
-->
## Requirements
- systemd{,-networkd} v248 or more (for batman support)
- Linux kernel with batman-adv module (if `modinfo batman-adv` shows
no error then you already have it)
- iwd (for starting ad-hoc network)
2021-06-07 06:17:35 +02:00
- python3
- [python-dasbus][]
- wifi adapter with ad-hoc support
- two or more computers with wifi adapter
- systemd-resolved (optional, for DNS)
2021-05-10 11:45:42 +02:00
## Installing
### Arch Linux
Install [naxalnet-git][] from the AUR:
```sh
yay -S naxalnet-git
```
### Manually
Clone the repo and cd into it.
Run `sudo make install` to install naxalnet. This will install naxalnet in
`/usr/bin/naxalnet`.
2021-05-10 11:45:42 +02:00
After installing, reload systemd so that you can enable `naxalnet.service`
without rebooting:
```sh
sudo systemctl daemon-reload
2021-05-10 11:45:42 +02:00
```
## Running the program
2021-05-10 11:45:42 +02:00
You need more than one computer running for the connection to work.
Start the naxalnet service:
2021-05-10 11:45:42 +02:00
```sh
sudo systemctl start naxalnet.service
```
2021-05-10 11:45:42 +02:00
Starting the service will stop `NetworkManager.service` and
`wpa_supplicant.service` if it is running. If you start either of these
services after naxalnet is started, systemd will stop naxalnet.
To run naxalnet at boot, enable the service:
```sh
sudo systemctl enable naxalnet.service
2021-05-10 11:45:42 +02:00
```
2021-05-10 11:45:42 +02:00
Now naxalnet will configure a batman interface on every boot.
Disable the service to stop running at boot:
```sh
sudo systemctl disable naxalnet.service
```
## How it works
The program naxalnet copies predefined systemd-networkd configuration
into networkd's runtime configuration directory. It uses iwd to start
an ad-hoc network named "HelloWorld". See the
[systemd-networkd](systemd-networkd) directory
to see how systemd-networkd configures the network. You can now use
services like [IPFS][], [Jami][], [Secure Scuttlebutt][ssb]
and others which can work without internet access.
2021-05-10 11:45:42 +02:00
2021-05-11 08:46:32 +02:00
## Uninstalling
Currently there is now way to uninstall naxalnet than manually removing
the files:
```sh
sudo rm -rf /usr/{bin,share}/naxalnet \
/usr/lib/systemd/system/naxalnet.service
```
## License
This program 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 3 of the License, or
(at your option) any later version.
See [LICENSE](LICENSE) for the complete version of the
license.
This project is in alpha stage. Documentation is incomplete.
[batman-adv]: https://www.open-mesh.org/projects/batman-adv/wiki
[ipfs]: https://ipfs.io
[jami]: https://jami.net
[ssb]: https://scuttlebutt.nz
[python-dasbus]: https://github.com/rhinstaller/dasbus
[naxalnet-git]: https://aur.archlinux.org/packages/naxalnet-git