PHP Classes

File: tests/debug_packet_structure.php

Recommend this page to a friend!
  Packages of Matthew Asham   Binkterm PHP   tests/debug_packet_structure.php   Download  
File: tests/debug_packet_structure.php
Role: Example script
Content type: text/plain
Description: Example script
Class: Binkterm PHP
Bulletin board system based on the Web
Author: By
Last change:
Date: 5 days ago
Size: 3,112 bytes
 

Contents

Class file image Download
<?php

require_once __DIR__ . '/../vendor/autoload.php';

use
BinktermPHP\MessageHandler;
use
BinktermPHP\Database;
use
BinktermPHP\BinkdProcessor;

// Initialize database
Database::getInstance();

echo
"=== DEBUGGING PACKET STRUCTURE ===\n";

// Create a test echomail message
$messageHandler = new MessageHandler();
echo
"1. Posting test echomail message...\n";

$result = $messageHandler->postEchomail(
   
1, // fromUserId
   
'LOCALTEST', // echoareaTag
   
'All', // toName
   
'Packet Debug Test', // subject
   
'Testing packet structure for echomail detection.' // messageText
);

if (!
$result) {
    echo
"Failed to post echomail\n";
    exit(
1);
}

echo
"2. Message posted successfully\n";

// Let me manually create a packet to examine its structure
$processor = new BinkdProcessor();

// Get the latest message
$db = Database::getInstance()->getPdo();
$stmt = $db->prepare("
    SELECT em.*, ea.tag as echoarea_tag
    FROM echomail em
    JOIN echoareas ea ON em.echoarea_id = ea.id
    ORDER BY em.id DESC LIMIT 1
"
);
$stmt->execute();
$message = $stmt->fetch();

if (!
$message) {
    echo
"No message found\n";
    exit(
1);
}

echo
"3. Retrieved message ID: " . $message['id'] . "\n";

// Prepare message for packet creation
$message['message_text'] = $message['message_text']; // Don't add AREA: line
$message['attributes'] = 0x0000; // No private flag
$message['is_echomail'] = true;
$message['to_address'] = '1:153/149'; // Uplink address

echo "4. Message attributes: " . $message['attributes'] . "\n";
echo
"5. Is echomail flag: " . ($message['is_echomail'] ? 'YES' : 'NO') . "\n";
echo
"6. Echoarea tag: " . $message['echoarea_tag'] . "\n";
echo
"7. Message text starts: " . substr($message['message_text'], 0, 50) . "...\n";

try {
   
// Create packet file
   
$packetFile = $processor->createOutboundPacket([$message], '1:153/149');
    echo
"8. Created packet file: $packetFile\n";
   
   
// Read and analyze the packet
   
if (file_exists($packetFile)) {
       
$content = file_get_contents($packetFile);
       
$size = strlen($content);
        echo
"9. Packet size: $size bytes\n";
       
       
// Show hex dump of first 100 bytes
       
echo "10. Packet header (first 100 bytes):\n";
        echo
bin2hex(substr($content, 0, 100)) . "\n";
       
       
// Look for AREA kludge line
       
$areaPos = strpos($content, "\x01AREA:");
        if (
$areaPos !== false) {
            echo
"11. Found AREA kludge line at position: $areaPos\n";
           
$areaLine = substr($content, $areaPos, 50);
            echo
"12. AREA kludge content: " . bin2hex($areaLine) . "\n";
            echo
"13. AREA kludge readable: " . str_replace(["\x01", "\r", "\n"], ["^A", "\\r", "\\n"], $areaLine) . "\n";
        } else {
            echo
"11. ERROR: No AREA kludge line found in packet!\n";
        }
       
       
// Clean up
       
unlink($packetFile);
    } else {
        echo
"8. ERROR: Packet file not created\n";
    }
   
} catch (
Exception $e) {
    echo
"ERROR: " . $e->getMessage() . "\n";
}

echo
"=== DEBUG COMPLETE ===\n";