Commit Graph

130 Commits

Author SHA1 Message Date
Yohann D'ANELLO 311e1539f9
Store a single hazelnut table 2021-01-05 18:12:57 +01:00
Yohann D'ANELLO 18d1737914
Send a long hello as a response of a HelloTLV 2021-01-05 17:11:34 +01:00
Yohann D'ANELLO 5c9b63d9db
Restructurate active hazels 2021-01-05 17:05:03 +01:00
Yohann D'ANELLO f85b52524a
Linting 2021-01-05 16:03:16 +01:00
eichhornchen 17548ff73c Added a test to ensure oneself can not become neighbour of oneself (associated to the same adress) + remove one call to pkt.validate_data() 2021-01-04 18:26:06 +01:00
eichhornchen 122932e289 Revert "Removing the error raising in validate_data"
This reverts commit bb62669722.
2021-01-04 11:02:58 +01:00
eichhornchen bb62669722 Removing the error raising in validate_data 2021-01-04 10:52:03 +01:00
Yohann D'ANELLO a985dac4b0
Ctrl+C properly stop the program 2021-01-01 19:55:30 +01:00
Yohann D'ANELLO 88ab6f5c76
More security in TLV analysis 2021-01-01 18:41:01 +01:00
Yohann D'ANELLO b70fbc75d1
Add debug option 2021-01-01 18:14:22 +01:00
Yohann D'ANELLO 9ef3be22e8
Sleep during threads to avoid loops that run infinitely 2021-01-01 18:07:41 +01:00
Yohann D'ANELLO ac249716f7
Linting 2021-01-01 17:56:48 +01:00
eichhornchen 7abaa7bcd4 Repaired a few bugs in inundation (and the bug notes in the last commit) 2020-12-29 15:06:27 +01:00
eichhornchen 04f6fb6002 Implemented the inundation, strange type error encountered when testing 2020-12-29 13:48:55 +01:00
eichhornchen c01fd697cd Added a marker to active neighbours to remember if they are symmetric. Fixed a marshal function broken by the last commit 2020-12-28 18:33:57 +01:00
eichhornchen 913f804f5e The address property of a hazel is now a string. The whole code has been changed accordingly. 2020-12-28 15:00:36 +01:00
eichhornchen c4e03ed427 Implemented the fourth phase of neighbour management (the type of addresses sometimes changes in the cide, this should be addressed, there also remains a lot of debugging printing) 2020-12-28 11:48:44 +01:00
eichhornchen b7a495eb11 Implemented the first three phases of neighbour management (warning: for testing purposes, the delays before any action have been reduced) 2020-12-27 21:31:34 +01:00
eichhornchen 806287f834 Added construct functions to all TLVs that did not have one. 2020-12-25 21:22:52 +01:00
eichhornchen e4797b745a Completed the handle function for the Hello, Neighbour and GoAway 2020-12-24 13:07:24 +01:00
Yohann D'ANELLO 61ab96abdc
Don't duplicate messages when sending multiple TLVs 2020-12-23 23:59:09 +01:00
Yohann D'ANELLO 597dd658f4
Lock during refresh in order to manage concurrency, fixes #5 2020-12-23 23:51:16 +01:00
Yohann D'ANELLO 39b4157836
Fix acknowledge 2020-12-23 23:10:57 +01:00
Yohann D'ANELLO 901d4aad05
Acknowledge Data TLVs
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:36:04 +01:00
Yohann D'ANELLO e1f0d54ac8
Use a random squirrel id and an incremental nonce
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:36:04 +01:00
Yohann D'ANELLO ebd6c18032
Ignore duplicate messages
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:36:04 +01:00
Yohann D'ANELLO 17ca4d105f
Use screen.get_wch() rather than screen.getkey() to have better support of UTF-8
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:36:03 +01:00
Yohann D'ANELLO e44998028d
Don't add stars to mark a text as bold or italic if non-markdown mode
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:36:03 +01:00
Yohann D'ANELLO 9f070f594b
Better nickname parsing, warn other clients when they does not provide a parsable nickname
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:36:02 +01:00
Yohann D'ANELLO e37c43b78d
Scroll horizontally on the input line for long messages
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:36:02 +01:00
Yohann D'ANELLO dd4f839fad
Long messages are wrapped in the history to avoid crashes
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:36:02 +01:00
Yohann D'ANELLO 7a25d24ba3
Ensure that a DataTLV is not too long
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:36:01 +01:00
Yohann D'ANELLO b96ff488e7
If the total packet size is larger than 1024, then it is splitted into subpackets
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:36:01 +01:00
Yohann D'ANELLO bda4860aca
Convert host to network byte order if necessary
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:36:01 +01:00
Yohann D'ANELLO 833c56755a
Some imports were missing
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:36:00 +01:00
eichhornchen 0c4ef9da5a
Split the file into more readable-sized files 2020-12-21 16:36:00 +01:00
Yohann D'ANELLO 63407461fe
Python 3.7 does not support continue in a finally block
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:59 +01:00
Yohann D'ANELLO 38cea234bb
Make the emoji lib optional
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:59 +01:00
Yohann D'ANELLO 3d444f57f0
Adapt the byte order to the system configuration
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:59 +01:00
Yohann D'ANELLO 00e24d74ee
Cut the main loop into smaller functions to have more modularity
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:58 +01:00
Yohann D'ANELLO e8fa0ece22
More abstraction on packet building
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:58 +01:00
Yohann D'ANELLO 592cbc3792
Add basic implementations for all TLVs
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:57 +01:00
Yohann D'ANELLO 8a066bb340
Handle warnings (receive only)
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:57 +01:00
Yohann D'ANELLO f1e04b1dc8
Properly handle TLVs
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:57 +01:00
Yohann D'ANELLO eeff80a85f
Add add_system_message function
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:56 +01:00
Yohann D'ANELLO 2630137019
In no-emoji mode, don't display the emoji menu
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:56 +01:00
Yohann D'ANELLO 9fcc0c30a7
The emoji selection is working
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:55 +01:00
Yohann D'ANELLO 5a212750e6
Don't display too complex emojis
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:55 +01:00
Yohann D'ANELLO 90918ddd71
Add emoji selector
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:54 +01:00
Yohann D'ANELLO 2f752592a1
Scroll in the history with up/down arrows and page up/page down
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:54 +01:00
Yohann D'ANELLO f5baea585e
We can navigate in order to edit our message
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:54 +01:00
Yohann D'ANELLO a21b0aa652
Manage backspace key
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:53 +01:00
Yohann D'ANELLO 639ad2b3bd
Argument parsing test got broken
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:53 +01:00
Yohann D'ANELLO 504811a32c
Don't send an empty message
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:52 +01:00
Yohann D'ANELLO 39016f6980
Screen is resizable
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:52 +01:00
Yohann D'ANELLO ce61532f35
Markdown-formatting and emojis can be disabled with a CLI
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:51 +01:00
Yohann D'ANELLO 9835fff1f9
Emojize texts
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:51 +01:00
Yohann D'ANELLO b007f4fce5
Text can be striked
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:50 +01:00
Yohann D'ANELLO fce8e01a5b
Format bold, italic, underline text
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:50 +01:00
Yohann D'ANELLO a1b93e851e
The nickname of the current user is colored
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:50 +01:00
Yohann D'ANELLO dfd2d319a8
Add text colors
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:49 +01:00
Yohann D'ANELLO 04f31a1159
Better terminal refresh
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:49 +01:00
Yohann D'ANELLO c609ca998a
Uses curses to have a proper terminal UI
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:48 +01:00
Yohann D'ANELLO a28975c895
Clients can communicate together (without any innondation)
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:48 +01:00
Yohann D'ANELLO 9561912ac6
A packet can have multiple TLVs
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:47 +01:00
Yohann D'ANELLO a796bed259
Receive packets in a dedicated thread, that is called "worm"
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:47 +01:00
Yohann D'ANELLO 8ef3f3a21c
Use IPv4-Mapping to have IPv4 compatibility
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:47 +01:00
Yohann D'ANELLO e06d7b9540
Linting
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:46 +01:00
Yohann D'ANELLO a4cf467e59
Translate tuples (address, port) into hazelnuts
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:46 +01:00
Yohann D'ANELLO 79b8a44461
Resolve DNS as IPv6 addresses before connecting to the socket
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:45 +01:00
Yohann D'ANELLO cf4833573a
Use IPv6 addresses
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:45 +01:00
Yohann D'ANELLO abbcbbc3b1
Construct TLVs
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:45 +01:00
Yohann D'ANELLO 1caf06bf24
Send packets rather than send raw byte array data
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:44 +01:00
Yohann D'ANELLO acf1cffec1
Use a packet structure to wrap raw data
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:44 +01:00
Yohann D'ANELLO a882228458
Fix typing
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:43 +01:00
Yohann D'ANELLO 169625f20c
Clients are managed in classes
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:43 +01:00
Yohann D'ANELLO 0cf25ffbe7
Connect sockets
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:43 +01:00
Yohann D'ANELLO bd6a8fc431
Prepare setup
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:42 +01:00
Yohann D'ANELLO d994ac9d67
Parse arguments to get address and port
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2020-12-21 16:35:41 +01:00
Yohann D'ANELLO 272d0c25d6 🎉 Init project 2020-12-03 16:36:44 +01:00