Skip to content

Commit

Permalink
make some header bytes clearer and add logging on ngc message sync. f…
Browse files Browse the repository at this point in the history
…ix sender name on message sync.
  • Loading branch information
zoff99 committed Jan 11, 2024
1 parent 7ba4f2b commit 20e665a
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 17 deletions.
38 changes: 27 additions & 11 deletions src/main/java/com/zoffcc/applications/trifa/HelperGroup.java
Original file line number Diff line number Diff line change
Expand Up @@ -1103,7 +1103,7 @@ static void handle_incoming_sync_group_message(final long group_number, final lo
final String syncer_pubkey = tox_group_peer_get_public_key(group_number, syncer_peer_id);

ByteBuffer hash_bytes = ByteBuffer.allocateDirect(TOX_GROUP_PEER_PUBLIC_KEY_SIZE);
hash_bytes.put(data, 8 + 4, 32);
hash_bytes.put(data, 6 + 1 + 1 + 4, 32);
ByteBufferCompat hash_bytes_compat = new ByteBufferCompat(hash_bytes);
final String original_sender_peerpubkey = bytesToHexJava
(hash_bytes_compat.array(),hash_bytes_compat.arrayOffset(),hash_bytes_compat.limit()).toUpperCase();
Expand All @@ -1123,12 +1123,12 @@ static void handle_incoming_sync_group_message(final long group_number, final lo
timestamp_byte_buffer.put((byte)0x0);
timestamp_byte_buffer.put((byte)0x0);
timestamp_byte_buffer.put((byte)0x0);
timestamp_byte_buffer.put(data, 8+4+32, 4);
timestamp_byte_buffer.put(data, 6 + 1 + 1 + 4 + 32, 4);
timestamp_byte_buffer.order(java.nio.ByteOrder.BIG_ENDIAN);
timestamp_byte_buffer.rewind();
long timestamp = timestamp_byte_buffer.getLong();
//Log.i(TAG,"handle_incoming_sync_group_message:got_ts_bytes:" +
// HelperGeneric.bytesToHex(data, 8+4+32, 4));
// Log.i(TAG,"handle_incoming_sync_group_message:got_ts_bytes:" +
// HelperGeneric.bytesToHex(data, 6 + 1 + 1 + 4 + 32, 4));
timestamp_byte_buffer.rewind();
//Log.i(TAG,"handle_incoming_sync_group_message:got_ts_bytes:bytebuffer:" +
// HelperGeneric.bytesToHex(timestamp_byte_buffer.array(),
Expand All @@ -1140,29 +1140,34 @@ static void handle_incoming_sync_group_message(final long group_number, final lo
if (timestamp > ((System.currentTimeMillis() / 1000) + (60 * 5)))
{
long delta_t = timestamp - (System.currentTimeMillis() / 1000);
// Log.i(TAG, "handle_incoming_sync_group_message:delta t=" + delta_t + " do NOT sync messages from the future");
Log.i(TAG, "handle_incoming_sync_group_message:delta t=" + delta_t + " do NOT sync messages from the future");
return;
}
else if (timestamp < ((System.currentTimeMillis() / 1000) - (60 * 200)))
{
long delta_t = (System.currentTimeMillis() / 1000) - timestamp;
// Log.i(TAG, "handle_incoming_sync_group_message:delta t=" + (-delta_t) + " do NOT sync messages that are too old");
Log.i(TAG, "handle_incoming_sync_group_message:delta t=" + (-delta_t) + " do NOT sync messages that are too old");
return;
}

//
//
//
ByteBuffer hash_msg_id_bytes = ByteBuffer.allocateDirect(4);
hash_msg_id_bytes.put(data, 8, 4);
hash_msg_id_bytes.put(data, 6 + 1 + 1, 4);
ByteBufferCompat hash_msg_id_bytes_compat = new ByteBufferCompat(hash_msg_id_bytes);
final String message_id_tox = bytesToHexJava(hash_msg_id_bytes_compat.array(),hash_msg_id_bytes_compat.arrayOffset(),hash_msg_id_bytes_compat.limit()).toLowerCase();
// Log.i(TAG, "handle_incoming_sync_group_message:message_id_tox hex=" + message_id_tox);
//
//
ByteBuffer name_buffer = ByteBuffer.allocateDirect(TOX_NGC_HISTORY_SYNC_MAX_PEERNAME_BYTES);
name_buffer.put(data, 8 + 4 + 32 + 4, TOX_NGC_HISTORY_SYNC_MAX_PEERNAME_BYTES);
name_buffer.put(data, 6 + 1 + 1 + 4 + 32 + 4, TOX_NGC_HISTORY_SYNC_MAX_PEERNAME_BYTES);
name_buffer.rewind();

ByteBufferCompat name_buffer_compat = new ByteBufferCompat(name_buffer);
final String name_str_with_padding_hex = bytesToHexJava(name_buffer_compat.array(),name_buffer_compat.arrayOffset(),name_buffer_compat.limit());
// Log.i(TAG, "handle_incoming_sync_group_message:sender_name hex=" + name_str_with_padding_hex);

String peer_name = "peer";
try
{
Expand All @@ -1184,6 +1189,7 @@ else if (timestamp < ((System.currentTimeMillis() / 1000) - (60 * 200)))
break;
}
}
// Log.i(TAG, "handle_incoming_sync_group_message:start_index=" + start_index);

for(int j=(TOX_NGC_HISTORY_SYNC_MAX_PEERNAME_BYTES-1);j>=0;j--)
{
Expand All @@ -1196,12 +1202,21 @@ else if (timestamp < ((System.currentTimeMillis() / 1000) - (60 * 200)))
break;
}
}
// Log.i(TAG, "handle_incoming_sync_group_message:end_index=" + end_index);

byte[] peername_byte_buf_stripped = Arrays.copyOfRange(name_byte_buf, start_index,end_index);
peer_name = new String(peername_byte_buf_stripped, StandardCharsets.UTF_8);
if (end_index <= start_index)
{
Log.i(TAG, "handle_incoming_sync_group_message:error on null byte detection in name");
}
else
{
byte[] peername_byte_buf_stripped = Arrays.copyOfRange(name_byte_buf, start_index,end_index);
peer_name = new String(peername_byte_buf_stripped, StandardCharsets.UTF_8);
}
//
// Log.i(TAG,"handle_incoming_sync_group_message:peer_name str=" + peer_name);
//
final int header = 6+1+1+4+32+4+25; // 73 bytes
final int header = 6 + 1 + 1 + 4 + 32 + 4 + 25; // 73 bytes
long text_size = length - header;
if ((text_size < 1) || (text_size > 37000))
{
Expand Down Expand Up @@ -1231,6 +1246,7 @@ else if (timestamp < ((System.currentTimeMillis() / 1000) - (60 * 200)))
if (peer_name_saved != null)
{
// HINT: use saved name instead of name from sync message
// Log.i(TAG,"handle_incoming_sync_group_message:use saved name instead of name from sync message:" + peer_name_saved);
peer_name = peer_name_saved;
}

Expand Down
15 changes: 9 additions & 6 deletions src/main/kotlin/com/zoffcc/applications/trifa/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2549,12 +2549,16 @@ class MainActivity
val tox_peerpk = tox_group_peer_get_public_key(group_number, peer_id)!!.uppercase()
val message_id_hex = fourbytes_of_long_to_hex(message_id)
val message_timestamp = System.currentTimeMillis()
val peernum = tox_group_peer_by_public_key(group_number, tox_peerpk)
var fname = tox_group_peer_get_name(group_number, peernum)
if (fname == null)
{
fname = ""
}
val msg_dbid = received_groupmessage_to_db(tox_peerpk = tox_peerpk!!,
groupid = group_id, message_timestamp = message_timestamp,
group_message = message_orig, message_id_hex = message_id_hex,
was_synced = false)
val peernum = tox_group_peer_by_public_key(group_number, tox_peerpk)
val fname = tox_group_peer_get_name(group_number, peernum)
was_synced = false, peername = fname)
val peer_user = User(fname + " / " + PubkeyShort(tox_peerpk), picture = "friend_avatar.png", toxpk = tox_peerpk.uppercase(), color = ColorProvider.getColor(true, tox_peerpk.uppercase()))
groupmessagestore.send(GroupMessageAction.ReceiveGroupMessage(
UIGroupMessage(
Expand Down Expand Up @@ -3050,11 +3054,10 @@ class MainActivity
return row_id
}

fun received_groupmessage_to_db(tox_peerpk: String, groupid: String, message_timestamp: Long, group_message: String?, message_id_hex: String, was_synced: Boolean): Long
fun received_groupmessage_to_db(tox_peerpk: String, groupid: String, message_timestamp: Long, group_message: String?, message_id_hex: String, was_synced: Boolean, peername: String): Long
{
val groupnum = tox_group_by_groupid__wrapper(groupid)
val peernum = tox_group_peer_by_public_key(groupnum, tox_peerpk)
val peername = tox_group_peer_get_name(groupnum, peernum)
val m = GroupMessage()
m.tox_group_peer_pubkey = tox_peerpk
m.direction = TRIFAGlobals.TRIFA_MSG_DIRECTION.TRIFA_MSG_DIRECTION_RECVD.value // msg received
Expand Down Expand Up @@ -3114,7 +3117,7 @@ class MainActivity
{
val message_timestamp = m.sent_timestamp

val msg_dbid = received_groupmessage_to_db(tox_peerpk = m.tox_group_peer_pubkey!!, groupid = m.group_identifier, message_timestamp = message_timestamp, group_message = m.text, message_id_hex = m.message_id_tox, was_synced = m.was_synced)
val msg_dbid = received_groupmessage_to_db(tox_peerpk = m.tox_group_peer_pubkey!!, groupid = m.group_identifier, message_timestamp = message_timestamp, group_message = m.text, message_id_hex = m.message_id_tox, was_synced = m.was_synced, peername = m.tox_group_peername)
val peer_user = User(m.tox_group_peername + " / " + PubkeyShort(m.tox_group_peer_pubkey), picture = "friend_avatar.png", toxpk = m.tox_group_peer_pubkey.uppercase(), color = ColorProvider.getColor(true, m.tox_group_peer_pubkey.uppercase()))

groupmessagestore.send(GroupMessageAction.ReceiveGroupMessage(
Expand Down

0 comments on commit 20e665a

Please sign in to comment.