fix: remote admin backward compatibility

- only use PKC encryption when the remote node has a public key (2.5 -> 2.5)
- fall back to legacy admin if public key is not available (2.5 -> 2.4)
pull/1297/head
andrekir 2024-10-08 07:47:25 -03:00
rodzic 3473ef343a
commit 23f05c109b
1 zmienionych plików z 7 dodań i 5 usunięć

Wyświetl plik

@ -476,11 +476,13 @@ class MeshService : Service(), Logging {
private val myNodeID get() = toNodeID(myNodeNum)
/// Admin channel index
private val adminChannelIndex: Int
get() = if (nodeDBbyNodeNum[myNodeNum]?.hasPKC == true) { // TODO use meta.hasPKC
DataPacket.PKC_CHANNEL_INDEX
} else {
channelSet.settingsList
private val MeshPacket.Builder.adminChannelIndex: Int
get() = when {
myNodeNum == to -> 0
nodeDBbyNodeNum[myNodeNum]?.hasPKC == true && nodeDBbyNodeNum[to]?.hasPKC == true ->
DataPacket.PKC_CHANNEL_INDEX
else -> channelSet.settingsList
.indexOfFirst { it.name.equals("admin", ignoreCase = true) }
.coerceAtLeast(0)
}