Merge pull request #301 from permissionlesstech/convert-to-secure-logger

Convert all print statements to SecureLogger
This commit is contained in:
jack
2025-07-22 21:08:39 +02:00
committed by GitHub
3 changed files with 34 additions and 34 deletions
+25 -25
View File
@@ -1820,7 +1820,7 @@ class BluetoothMeshService: NSObject {
myNickname: myNickname, myNickname: myNickname,
hopCount: UInt8(self.maxTTL - packet.ttl) hopCount: UInt8(self.maxTTL - packet.ttl)
) { ) {
print("🔔 Generating delivery ACK for channel mention message \(messageWithPeerID.id)") SecureLogger.log("Generating delivery ACK for channel mention message \(messageWithPeerID.id)", category: SecureLogger.session, level: .debug)
self.sendDeliveryAck(ack, to: senderID) self.sendDeliveryAck(ack, to: senderID)
} }
} }
@@ -2455,7 +2455,7 @@ class BluetoothMeshService: NSObject {
!isPeerIDOurs(recipientID.hexEncodedString()) { !isPeerIDOurs(recipientID.hexEncodedString()) {
// Not for us, relay if TTL > 0 // Not for us, relay if TTL > 0
if packet.ttl > 0 { if packet.ttl > 0 {
print("🔀 Relaying handshake init packet, TTL: \(packet.ttl)") SecureLogger.log("Relaying handshake init packet, TTL: \(packet.ttl)", category: SecureLogger.session, level: .debug)
var relayPacket = packet var relayPacket = packet
relayPacket.ttl -= 1 relayPacket.ttl -= 1
broadcastPacket(relayPacket) broadcastPacket(relayPacket)
@@ -2465,7 +2465,7 @@ class BluetoothMeshService: NSObject {
if !isPeerIDOurs(senderID) { if !isPeerIDOurs(senderID) {
// Check if we already have a session (established or handshaking) // Check if we already have a session (established or handshaking)
if noiseService.hasSession(with: senderID) { if noiseService.hasSession(with: senderID) {
print("⚠️ Received handshake init from \(senderID) but already have session/handshaking - ignoring duplicate") SecureLogger.log("Received handshake init from \(senderID) but already have session/handshaking - ignoring duplicate", category: SecureLogger.noise, level: .warning)
return return
} }
@@ -2488,11 +2488,11 @@ class BluetoothMeshService: NSObject {
// Check if this handshake response is for us // Check if this handshake response is for us
if let recipientID = packet.recipientID { if let recipientID = packet.recipientID {
let recipientIDStr = recipientID.hexEncodedString() let recipientIDStr = recipientID.hexEncodedString()
print("🤝 Response targeted to: \(recipientIDStr), is us: \(isPeerIDOurs(recipientIDStr))") SecureLogger.log("Response targeted to: \(recipientIDStr), is us: \(isPeerIDOurs(recipientIDStr))", category: SecureLogger.noise, level: .debug)
if !isPeerIDOurs(recipientIDStr) { if !isPeerIDOurs(recipientIDStr) {
// Not for us, relay if TTL > 0 // Not for us, relay if TTL > 0
if packet.ttl > 0 { if packet.ttl > 0 {
print("🔀 Relaying handshake response packet, TTL: \(packet.ttl)") SecureLogger.log("Relaying handshake response packet, TTL: \(packet.ttl)", category: SecureLogger.session, level: .debug)
var relayPacket = packet var relayPacket = packet
relayPacket.ttl -= 1 relayPacket.ttl -= 1
broadcastPacket(relayPacket) broadcastPacket(relayPacket)
@@ -2502,7 +2502,7 @@ class BluetoothMeshService: NSObject {
} }
if !isPeerIDOurs(senderID) { if !isPeerIDOurs(senderID) {
print("🤝 Processing handshake response from \(senderID)") SecureLogger.log("Processing handshake response from \(senderID)", category: SecureLogger.noise, level: .info)
handleNoiseHandshakeMessage(from: senderID, message: packet.payload, isInitiation: false) handleNoiseHandshakeMessage(from: senderID, message: packet.payload, isInitiation: false)
} }
@@ -3474,14 +3474,14 @@ extension BluetoothMeshService: CBPeripheralManagerDelegate {
guard let self = self, guard let self = self,
let pendingMessages = self.pendingPrivateMessages[peerID] else { return } let pendingMessages = self.pendingPrivateMessages[peerID] else { return }
print("📬 Sending \(pendingMessages.count) pending private messages to \(peerID)") SecureLogger.log("Sending \(pendingMessages.count) pending private messages to \(peerID)", category: SecureLogger.session, level: .info)
// Clear pending messages for this peer // Clear pending messages for this peer
self.pendingPrivateMessages.removeValue(forKey: peerID) self.pendingPrivateMessages.removeValue(forKey: peerID)
// Send each pending message // Send each pending message
for (content, recipientNickname, messageID) in pendingMessages { for (content, recipientNickname, messageID) in pendingMessages {
print("📬 Sending pending message \(messageID) to \(peerID)") SecureLogger.log("Sending pending message \(messageID) to \(peerID)", category: SecureLogger.session, level: .debug)
// Use async to avoid blocking the queue // Use async to avoid blocking the queue
DispatchQueue.global().async { [weak self] in DispatchQueue.global().async { [weak self] in
self?.sendPrivateMessage(content, to: peerID, recipientNickname: recipientNickname, messageID: messageID) self?.sendPrivateMessage(content, to: peerID, recipientNickname: recipientNickname, messageID: messageID)
@@ -3562,7 +3562,7 @@ extension BluetoothMeshService: CBPeripheralManagerDelegate {
// Use broadcastPacket instead of sendPacket to ensure it goes through the mesh // Use broadcastPacket instead of sendPacket to ensure it goes through the mesh
broadcastPacket(packet) broadcastPacket(packet)
} else { } else {
print("🤝 No response needed from processHandshakeMessage") SecureLogger.log("No response needed from processHandshakeMessage", category: SecureLogger.noise, level: .debug)
} }
// Check if handshake is complete // Check if handshake is complete
@@ -3597,10 +3597,10 @@ extension BluetoothMeshService: CBPeripheralManagerDelegate {
} }
} catch NoiseSessionError.alreadyEstablished { } catch NoiseSessionError.alreadyEstablished {
// Session already established, ignore handshake // Session already established, ignore handshake
print("🤝 Handshake already established with \(peerID)") SecureLogger.log("Handshake already established with \(peerID)", category: SecureLogger.noise, level: .info)
} catch { } catch {
// Handshake failed // Handshake failed
print("Handshake failed with \(peerID): \(error)") SecureLogger.log("Handshake failed with \(peerID): \(error)", category: SecureLogger.noise, level: .error)
} }
} }
@@ -3629,9 +3629,9 @@ extension BluetoothMeshService: CBPeripheralManagerDelegate {
do { do {
// Decrypt the message // Decrypt the message
print("🔓 Attempting to decrypt Noise message from \(peerID), encrypted size: \(encryptedData.count)") SecureLogger.log("Attempting to decrypt Noise message from \(peerID), encrypted size: \(encryptedData.count)", category: SecureLogger.encryption, level: .debug)
let decryptedData = try noiseService.decrypt(encryptedData, from: peerID) let decryptedData = try noiseService.decrypt(encryptedData, from: peerID)
print("🔓 Successfully decrypted message from \(peerID), decrypted size: \(decryptedData.count)") SecureLogger.log("Successfully decrypted message from \(peerID), decrypted size: \(decryptedData.count)", category: SecureLogger.encryption, level: .debug)
// Check if this is a special format message (type marker + payload) // Check if this is a special format message (type marker + payload)
if decryptedData.count > 1 { if decryptedData.count > 1 {
@@ -3644,7 +3644,7 @@ extension BluetoothMeshService: CBPeripheralManagerDelegate {
// Decode the delivery ACK - try binary first, then JSON // Decode the delivery ACK - try binary first, then JSON
if let ack = DeliveryAck.fromBinaryData(ackData) { if let ack = DeliveryAck.fromBinaryData(ackData) {
print("📨 Received binary delivery ACK via Noise: \(ack.originalMessageID) from \(ack.recipientNickname)") SecureLogger.log("Received binary delivery ACK via Noise: \(ack.originalMessageID) from \(ack.recipientNickname)", category: SecureLogger.session, level: .debug)
// Process the ACK // Process the ACK
DeliveryTracker.shared.processDeliveryAck(ack) DeliveryTracker.shared.processDeliveryAck(ack)
@@ -3655,7 +3655,7 @@ extension BluetoothMeshService: CBPeripheralManagerDelegate {
} }
return return
} else if let ack = DeliveryAck.decode(from: ackData) { } else if let ack = DeliveryAck.decode(from: ackData) {
print("📨 Received JSON delivery ACK via Noise: \(ack.originalMessageID) from \(ack.recipientNickname)") SecureLogger.log("Received JSON delivery ACK via Noise: \(ack.originalMessageID) from \(ack.recipientNickname)", category: SecureLogger.session, level: .debug)
// Process the ACK // Process the ACK
DeliveryTracker.shared.processDeliveryAck(ack) DeliveryTracker.shared.processDeliveryAck(ack)
@@ -3666,30 +3666,30 @@ extension BluetoothMeshService: CBPeripheralManagerDelegate {
} }
return return
} else { } else {
print("⚠️ Failed to decode delivery ACK via Noise - data size: \(ackData.count)") SecureLogger.log("Failed to decode delivery ACK via Noise - data size: \(ackData.count)", category: SecureLogger.session, level: .warning)
} }
} }
} }
// Try to parse as a full inner packet (for backward compatibility and other message types) // Try to parse as a full inner packet (for backward compatibility and other message types)
if let innerPacket = BitchatPacket.from(decryptedData) { if let innerPacket = BitchatPacket.from(decryptedData) {
print("📦 Successfully parsed inner packet - type: \(MessageType(rawValue: innerPacket.type)?.description ?? "unknown"), from: \(innerPacket.senderID.hexEncodedString()), to: \(innerPacket.recipientID?.hexEncodedString() ?? "broadcast")") SecureLogger.log("Successfully parsed inner packet - type: \(MessageType(rawValue: innerPacket.type)?.description ?? "unknown"), from: \(innerPacket.senderID.hexEncodedString()), to: \(innerPacket.recipientID?.hexEncodedString() ?? "broadcast")", category: SecureLogger.session, level: .debug)
// Process the decrypted inner packet // Process the decrypted inner packet
// The packet will be handled according to its recipient ID // The packet will be handled according to its recipient ID
// If it's for us, it won't be relayed // If it's for us, it won't be relayed
handleReceivedPacket(innerPacket, from: peerID) handleReceivedPacket(innerPacket, from: peerID)
} else { } else {
print("⚠️ Failed to parse inner packet from decrypted data") SecureLogger.log("Failed to parse inner packet from decrypted data", category: SecureLogger.encryption, level: .warning)
} }
} catch { } catch {
// Failed to decrypt - might need to re-establish session // Failed to decrypt - might need to re-establish session
print("Failed to decrypt Noise message from \(peerID): \(error)") SecureLogger.log("Failed to decrypt Noise message from \(peerID): \(error)", category: SecureLogger.encryption, level: .error)
if !noiseService.hasEstablishedSession(with: peerID) { if !noiseService.hasEstablishedSession(with: peerID) {
print("🔄 No Noise session with \(peerID), initiating handshake") SecureLogger.log("No Noise session with \(peerID), initiating handshake", category: SecureLogger.noise, level: .info)
initiateNoiseHandshake(with: peerID) initiateNoiseHandshake(with: peerID)
} else { } else {
print("⚠️ Have session with \(peerID) but decryption failed") SecureLogger.log("Have session with \(peerID) but decryption failed", category: SecureLogger.encryption, level: .warning)
} }
} }
} }
@@ -4156,9 +4156,9 @@ extension BluetoothMeshService: CBPeripheralManagerDelegate {
do { do {
// Encrypt with Noise // Encrypt with Noise
print("🔐 Encrypting private message \(msgID) for \(recipientPeerID)") SecureLogger.log("Encrypting private message \(msgID) for \(recipientPeerID)", category: SecureLogger.encryption, level: .debug)
let encryptedData = try noiseService.encrypt(innerData, for: recipientPeerID) let encryptedData = try noiseService.encrypt(innerData, for: recipientPeerID)
print("🔐 Successfully encrypted message, size: \(encryptedData.count)") SecureLogger.log("Successfully encrypted message, size: \(encryptedData.count)", category: SecureLogger.encryption, level: .debug)
// Send as Noise encrypted message // Send as Noise encrypted message
let outerPacket = BitchatPacket( let outerPacket = BitchatPacket(
@@ -4171,11 +4171,11 @@ extension BluetoothMeshService: CBPeripheralManagerDelegate {
ttl: adaptiveTTL ttl: adaptiveTTL
) )
print("📤 Broadcasting encrypted private message \(msgID) to \(recipientPeerID)") SecureLogger.log("Broadcasting encrypted private message \(msgID) to \(recipientPeerID)", category: SecureLogger.session, level: .info)
broadcastPacket(outerPacket) broadcastPacket(outerPacket)
} catch { } catch {
// Failed to encrypt message // Failed to encrypt message
print("Failed to encrypt private message \(msgID) for \(recipientPeerID): \(error)") SecureLogger.log("Failed to encrypt private message \(msgID) for \(recipientPeerID): \(error)", category: SecureLogger.encryption, level: .error)
} }
} }
} }
+8 -8
View File
@@ -71,7 +71,7 @@ class DeliveryTracker {
// Don't track broadcasts or certain message types // Don't track broadcasts or certain message types
guard message.isPrivate || message.channel != nil else { return } guard message.isPrivate || message.channel != nil else { return }
print("📮 Tracking message \(message.id) - private: \(message.isPrivate), channel: \(message.channel ?? "none"), recipient: \(recipientNickname)") SecureLogger.log("Tracking message \(message.id) - private: \(message.isPrivate), channel: \(message.channel ?? "none"), recipient: \(recipientNickname)", category: SecureLogger.session, level: .info)
let delivery = PendingDelivery( let delivery = PendingDelivery(
@@ -101,10 +101,10 @@ class DeliveryTracker {
// Only update to sent if still pending (not already delivered) // Only update to sent if still pending (not already delivered)
if stillPending { if stillPending {
print("⏱️ Updating message \(message.id) to sent status (still pending)") SecureLogger.log("Updating message \(message.id) to sent status (still pending)", category: SecureLogger.session, level: .debug)
self.updateDeliveryStatus(message.id, status: .sent) self.updateDeliveryStatus(message.id, status: .sent)
} else { } else {
print("Skipping sent status update for \(message.id) - already delivered") SecureLogger.log("Skipping sent status update for \(message.id) - already delivered", category: SecureLogger.session, level: .debug)
} }
} }
@@ -116,11 +116,11 @@ class DeliveryTracker {
pendingLock.lock() pendingLock.lock()
defer { pendingLock.unlock() } defer { pendingLock.unlock() }
print("Processing delivery ACK for message \(ack.originalMessageID) from \(ack.recipientNickname)") SecureLogger.log("Processing delivery ACK for message \(ack.originalMessageID) from \(ack.recipientNickname)", category: SecureLogger.session, level: .info)
// Prevent duplicate ACK processing // Prevent duplicate ACK processing
guard !receivedAckIDs.contains(ack.ackID) else { guard !receivedAckIDs.contains(ack.ackID) else {
print("⚠️ Duplicate ACK \(ack.ackID) - ignoring") SecureLogger.log("Duplicate ACK \(ack.ackID) - ignoring", category: SecureLogger.session, level: .warning)
return return
} }
receivedAckIDs.insert(ack.ackID) receivedAckIDs.insert(ack.ackID)
@@ -128,7 +128,7 @@ class DeliveryTracker {
// Find the pending delivery // Find the pending delivery
guard var delivery = pendingDeliveries[ack.originalMessageID] else { guard var delivery = pendingDeliveries[ack.originalMessageID] else {
// Message might have already been delivered or timed out // Message might have already been delivered or timed out
print("⚠️ No pending delivery found for message \(ack.originalMessageID)") SecureLogger.log("No pending delivery found for message \(ack.originalMessageID)", category: SecureLogger.session, level: .warning)
return return
} }
@@ -153,7 +153,7 @@ class DeliveryTracker {
} }
} else { } else {
// Direct message - mark as delivered // Direct message - mark as delivered
print("💬 Marking private message \(ack.originalMessageID) as delivered to \(ack.recipientNickname)") SecureLogger.log("Marking private message \(ack.originalMessageID) as delivered to \(ack.recipientNickname)", category: SecureLogger.session, level: .info)
updateDeliveryStatus(ack.originalMessageID, status: .delivered(to: ack.recipientNickname, at: Date())) updateDeliveryStatus(ack.originalMessageID, status: .delivered(to: ack.recipientNickname, at: Date()))
pendingDeliveries.removeValue(forKey: ack.originalMessageID) pendingDeliveries.removeValue(forKey: ack.originalMessageID)
} }
@@ -198,7 +198,7 @@ class DeliveryTracker {
// MARK: - Private Methods // MARK: - Private Methods
private func updateDeliveryStatus(_ messageID: String, status: DeliveryStatus) { private func updateDeliveryStatus(_ messageID: String, status: DeliveryStatus) {
print("📊 Updating delivery status for message \(messageID): \(status)") SecureLogger.log("Updating delivery status for message \(messageID): \(status)", category: SecureLogger.session, level: .debug)
DispatchQueue.main.async { [weak self] in DispatchQueue.main.async { [weak self] in
self?.deliveryStatusUpdated.send((messageID: messageID, status: status)) self?.deliveryStatusUpdated.send((messageID: messageID, status: status))
} }
+1 -1
View File
@@ -3635,7 +3635,7 @@ extension ChatViewModel: BitchatDelegate {
} }
private func updateMessageDeliveryStatus(_ messageID: String, status: DeliveryStatus) { private func updateMessageDeliveryStatus(_ messageID: String, status: DeliveryStatus) {
print("🔄 Updating UI delivery status for message \(messageID): \(status)") SecureLogger.log("Updating UI delivery status for message \(messageID): \(status)", category: SecureLogger.session, level: .debug)
// Helper function to check if we should skip this update // Helper function to check if we should skip this update
func shouldSkipUpdate(currentStatus: DeliveryStatus?, newStatus: DeliveryStatus) -> Bool { func shouldSkipUpdate(currentStatus: DeliveryStatus?, newStatus: DeliveryStatus) -> Bool {