An open API service indexing awesome lists of open source software.

https://github.com/akitaengineering/akita-wais

Akita WAIS is a decentralized Wide Area Information Server (WAIS) implementation designed for the Reticulum network. It allows users to discover, browse, and retrieve files from servers across the Reticulum mesh.
https://github.com/akitaengineering/akita-wais

akita akita-engineering decentralized mesh mesh-networks reticulum wais

Last synced: 3 months ago
JSON representation

Akita WAIS is a decentralized Wide Area Information Server (WAIS) implementation designed for the Reticulum network. It allows users to discover, browse, and retrieve files from servers across the Reticulum mesh.

Awesome Lists containing this project

README

        

# Akita WAIS for Reticulum

Akita WAIS is a decentralized Wide Area Information Server (WAIS) implementation designed for the Reticulum network. It allows users to discover, browse, and retrieve files from servers across the Reticulum mesh.

## Features

* **Decentralized Server Discovery:** Servers automatically announce their presence, and clients discover them through Reticulum's group messaging.
* **Server List Sharing:** Servers share their discovered server lists, enabling clients to find other servers through a connected server.
* **Text and Binary File Support:** Handles both text and binary files, with robust encoding handling.
* **Search Functionality:** Clients can search for files on servers using keywords.
* **Simple Command-Line Interface:** Easy-to-use client interface for browsing and retrieving files.
* **Timeout Handling:** Prevents client hangs by implementing request timeouts.
* **Reticulum Integration:** Leverages Reticulum's reliable and efficient networking capabilities.

## Requirements

* Reticulum installed and configured.
* Python 3.

## Installation

1. **Clone or Download:** Download the `akita_wais.py` script.
2. **Reticulum:** Ensure Reticulum is running on your system.

## Usage

### Running a Server

1. **Create `wais_data` Directory:** Create a directory named `wais_data` in the same location as `akita_wais.py`.
2. **Place Files:** Put the files you want to share in the `wais_data` directory.
3. **Start Server:** Run the following command:

```bash
python akita_wais.py server
```

### Running a Client

1. **Start Client:** Run the following command:

```bash
python akita_wais.py
```

2. **Follow the Menu:** The client will display a menu with options to discover servers, list files, retrieve files, search, and more.

## Client Menu Options

* **List files:** Lists the files available on the selected server.
* **Get file:** Retrieves a specific file from the server.
* **Search files:** Searches for files on the server using keywords.
* **Get server list:** Displays the servers known by the currently connected server.
* **Select another Server:** Allows you to choose a different server from the discovered list.
* **Exit:** Closes the client.

## Notes

* Ensure that Reticulum is properly configured and running on all devices.
* The `wais_data` directory on each server contains the files that will be shared.
* When binary files are sent, they are sent as latin-1 encoded strings.
* The client uses a 10 second timeout for requests to the servers.

## Contributing

Contributions are welcome! Feel free to submit pull requests or open issues for bug reports or feature requests.