@@ -394,6 +394,47 @@ void on_group_invite(Tox *tox, uint32_t friendnumber, const uint8_t *invite_data
394394 }
395395}
396396
397+ void on_group_custom_packet (Tox * tox , uint32_t groupnumber , uint32_t peer_id , const uint8_t * data ,
398+ size_t length , void * user_data )
399+ {
400+ /*
401+ | what | Length in bytes| Contents
402+ |------ |-------- |------------------
403+ | magic | 6 | 0x667788113435
404+ | version | 1 | 0x01
405+ | pkt id | 1 | 0x11
406+ | msg id | 32 | *uint8_t to uniquely identify the message
407+ | create ts | 4 | uint32_t unixtimestamp in UTC of local wall clock (in bigendian)
408+ | filename | 255 | *uint8_t len TOX_MAX_FILENAME_LENGTH, data first, then pad with NULL bytes
409+ | data |[1, 36701] | *uint8_t bytes of file data, zero length files not allowed!
410+ */
411+
412+ const uint32_t header_size = 6 + 1 + 1 + 32 + 4 + 255 ;
413+
414+ if (length > header_size ) {
415+ if ((data [0 ] == (byte ) 0x66 ) && (data [1 ] == (byte ) 0x77 ) && (data [2 ] == (byte ) 0x88 ) &&
416+ (data [3 ] == (byte ) 0x11 ) && (data [4 ] == (byte ) 0x34 ) && (data [5 ] == (byte ) 0x35 )) {
417+ if ((data [6 ] == (byte ) 0x1 ) && (data [7 ] == (byte ) 0x11 )) {
418+
419+ // TODO: handle actual incoming file data
420+ const uint32_t file_size = length - header_size ;
421+ const uint8_t * file_data = data + header_size ;
422+ // save file data here ...
423+ // TODO: handle actual incoming file data
424+
425+ const char * msg = "incoming group file" ;
426+ const size_t msg_length = strlen (msg );
427+
428+ for (size_t i = 0 ; i < MAX_WINDOWS_NUM ; ++ i ) {
429+ if (windows [i ] != NULL && windows [i ]-> onGroupMessage != NULL ) {
430+ windows [i ]-> onGroupMessage (windows [i ], tox , groupnumber , peer_id , TOX_MESSAGE_TYPE_NORMAL , msg , msg_length );
431+ }
432+ }
433+ }
434+ }
435+ }
436+ }
437+
397438void on_group_message (Tox * tox , uint32_t groupnumber , uint32_t peer_id , TOX_MESSAGE_TYPE type ,
398439 const uint8_t * message , size_t length , uint32_t message_id , void * userdata )
399440{
0 commit comments