HLM
Hidden Lake Messenger
The Hidden Lake Messenger
is a messenger based on the core of an anonymous network with theoretically provable anonymity of HLS. A feature of this messenger is the provision of anonymity of the fact of transactions (sending, receiving).
HLM is an application that implements a graphical user interface (GUI) on a browser-based HTML/CSS/JS display. Most of the code is based on the bootstrap library https://getbootstrap.com/. GUI is adapted to the size of the window, so it can be used both in a desktop and in a smartphone.
More information about HLM in the habr.com/ru/post/701488
Installation
$ go install github.com/number571/go-peer/cmd/hidden_lake/applications/messenger/cmd/hlm@latest
How it works
Most of the code is a call to API functions from the HLS kernel. Thanks to this approach, implicit authorization of users is formed from the state of the anonymizing service.
Figure 1. Example of chat room in HLM.
- Windows (x86_64, arm64)
- Linux (x86_64, arm64)
- MacOS (x86_64, arm64)
Build and run
Default build and run
$ cd ./cmd/hidden_lake/applications/messenger
$ make build # create hlm, hlm_[arch=amd64,arm64]_[os=linux,windows,darwin] and copy to ./bin
$ make run # run ./bin/hlm
> [INFO] 2023/06/03 15:30:31 HLM is running...
> ...
Open ports 9591
(HTTP, interface) and 9592
(HTTP, incoming).
Creates ./hlm.yml
and ./hlm.db
files.
The file hlm.db
stores all sent/received messages in encrypted view.
Default config hlm.yml
settings:
messages_capacity: 2048
logging:
- info
- warn
- erro
address:
interface: 127.0.0.1:9591
incoming: 127.0.0.1:9592
connection: 127.0.0.1:9572
Running options
$ ./hlm -path=/root
# path = path to config and database files
Example
The example will involve (as well as in HLS) five nodes node1_hlm, node2_hlm
and middle_hlt_1, middle_hlt_2, middle_hlt_3
. The three HLT nodes are only needed for communication between node1_hlm
and node2_hlm
nodes. Each of the remaining ones is a combination of HLS and HLM, where HLM plays the role of an application and services (as it was depicted in Figure 3
HLS readme).
Build and run nodes
$ cd examples/anonymity/messenger/routing
$ make
The output of the middle_hls
node is similar to Figure 4
(HLS).
Than open browser on localhost:8080
. It is a node1_hlm
. This node is a Bob.
Figure 2. Home page of the HLM application.
To see the success of sending and receiving messages, you need to do all the same operations, but with localhost:7070
as node2_hlm
. This node will be Alice.
Figure 3. Log of the three nodes with request/response actions.
More example images about HLM pages in the github.com/number571/go-peer/cmd/hidden_lake/applications/messenger/_images
Pages
About page
Base information about projects HLM and HLS with links to source.
Settings page
Information about public key and connections. Connections can be appended and deleted.
Friends page
Information about friends. Friends can be appended and deleted.
Chat page
Chat with friend. The chat is based on web sockets, so it can update messages in real time. Messages can be sent.