Display CP437 characters when debugging packets
This commit is contained in:
parent
c8447d8573
commit
5c5df12816
@ -90,6 +90,52 @@ class Message extends FTNBase
|
||||
private Collection $_other; // Temporarily hold attributes we dont process yet.
|
||||
private Collection $unknown; // Temporarily hold attributes we have no logic for.
|
||||
|
||||
// Convert characters into printable chars
|
||||
// https://int10h.org/oldschool-pc-fonts/readme/#437_charset
|
||||
private const CP437 = [
|
||||
0x01 => 0x263a, 0x02 => 0x263b, 0x03 => 0x2665, 0x04 => 0x2666,
|
||||
0x05 => 0x2663, 0x06 => 0x2660, 0x07 => 0x2022, 0x08 => 0x25d8,
|
||||
0x09 => 0x25cb, 0x0a => 0x2509, 0x0b => 0x2642, 0x0c => 0x2640,
|
||||
0x0d => 0x266a, 0x0e => 0x266b, 0x0f => 0x263c,
|
||||
0x10 => 0x25ba, 0x11 => 0x25ca, 0x12 => 0x2195, 0x13 => 0x203c,
|
||||
0x14 => 0x00b6, 0x15 => 0x00a7, 0x16 => 0x25ac, 0x17 => 0x21a8,
|
||||
0x18 => 0x2191, 0x19 => 0x2193, 0x1a => 0x2192, 0x1b => 0x2190,
|
||||
0x1c => 0x221f, 0x1d => 0x2194, 0x1e => 0x25bc, 0x1f => 0x25bc,
|
||||
0x7f => 0x2302,
|
||||
0x80 => 0x00c7, 0x81 => 0x00fc, 0x82 => 0x00e9, 0x83 => 0x00e2,
|
||||
0x84 => 0x00e4, 0x85 => 0x00e0, 0x86 => 0x00e5, 0x87 => 0x00e7,
|
||||
0x88 => 0x00ea, 0x89 => 0x00eb, 0x8a => 0x00e8, 0x8b => 0x00ef,
|
||||
0x8c => 0x00ee, 0x8d => 0x00ec, 0x8e => 0x00c4, 0x8f => 0x00c5,
|
||||
0x90 => 0x00c9, 0x91 => 0x00e6, 0x92 => 0x00c6, 0x93 => 0x00f4,
|
||||
0x94 => 0x00f6, 0x95 => 0x00f2, 0x96 => 0x00fb, 0x97 => 0x00f9,
|
||||
0x98 => 0x00ff, 0x99 => 0x00d6, 0x9a => 0x00dc, 0x9b => 0x00a2,
|
||||
0x9c => 0x00a3, 0x9d => 0x00a5, 0x9e => 0x20a7, 0x9f => 0x0192,
|
||||
0xa0 => 0x00e1, 0xa1 => 0x00ed, 0xa2 => 0x00f3, 0xa3 => 0x00fa,
|
||||
0xa4 => 0x00f1, 0xa5 => 0x00d1, 0xa6 => 0x00aa, 0xa7 => 0x00ba,
|
||||
0xa8 => 0x00bf, 0xa9 => 0x2310, 0xaa => 0x00ac, 0xab => 0x00bd,
|
||||
0xac => 0x00bc, 0xad => 0x00a1, 0xae => 0x00ab, 0xaf => 0x00bb,
|
||||
0xb0 => 0x2591, 0xb1 => 0x2592, 0xb2 => 0x2593, 0xb3 => 0x2502,
|
||||
0xb4 => 0x2524, 0xb5 => 0x2561, 0xb6 => 0x2562, 0xb7 => 0x2556,
|
||||
0xb8 => 0x2555, 0xb9 => 0x2563, 0xba => 0x2551, 0xbb => 0x2557,
|
||||
0xbc => 0x255d, 0xbd => 0x255c, 0xbe => 0x255b, 0xbf => 0x2510,
|
||||
0xc0 => 0x2514, 0xc1 => 0x2534, 0xc2 => 0x252c, 0xc3 => 0x251c,
|
||||
0xc4 => 0x2500, 0xc5 => 0x253c, 0xc6 => 0x255e, 0xc7 => 0x255f,
|
||||
0xc8 => 0x255a, 0xc9 => 0x2554, 0xca => 0x2569, 0xcb => 0x2566,
|
||||
0xcc => 0x2560, 0xcd => 0x2550, 0xce => 0x256c, 0xcf => 0x2567,
|
||||
0xd0 => 0x2568, 0xd1 => 0x2564, 0xd2 => 0x2565, 0xd3 => 0x2559,
|
||||
0xd4 => 0x2558, 0xd5 => 0x2552, 0xd6 => 0x2553, 0xd7 => 0x256b,
|
||||
0xd8 => 0x256a, 0xd9 => 0x2518, 0xda => 0x250c, 0xdb => 0x2588,
|
||||
0xdc => 0x2584, 0xdd => 0x258c, 0xde => 0x2590, 0xdf => 0x2580,
|
||||
0xe0 => 0x03b1, 0xe1 => 0x00df, 0xe2 => 0x0393, 0xe3 => 0x03c0,
|
||||
0xe4 => 0x03a3, 0xe5 => 0x03c3, 0xe6 => 0x00b5, 0xe7 => 0x03c4,
|
||||
0xe8 => 0x03a6, 0xe9 => 0x0398, 0xea => 0x03a9, 0xeb => 0x03b4,
|
||||
0xec => 0x221e, 0xed => 0x03c6, 0xee => 0x03b5, 0xef => 0x2229,
|
||||
0xf0 => 0x2261, 0xf1 => 0x00b1, 0xf2 => 0x2265, 0xf3 => 0x2264,
|
||||
0xf4 => 0x2320, 0xf5 => 0x2321, 0xf6 => 0x00f7, 0xf7 => 0x2248,
|
||||
0xf8 => 0x00b0, 0xf9 => 0x2219, 0xfa => 0x00b7, 0xfb => 0x221a,
|
||||
0xfc => 0x207f, 0xfd => 0x00b2, 0xfe => 0x25a0, 0xff => 0x00a0,
|
||||
];
|
||||
|
||||
public function __construct(string $msg)
|
||||
{
|
||||
$this->kludge = collect();
|
||||
@ -163,6 +209,7 @@ class Message extends FTNBase
|
||||
case 'kludge':
|
||||
case 'path':
|
||||
case 'seenby':
|
||||
case 'via':
|
||||
case 'errors':
|
||||
case 'echoarea':
|
||||
return $this->{$key};
|
||||
@ -455,6 +502,25 @@ class Message extends FTNBase
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Translate the string into something printable via the web
|
||||
*
|
||||
* @param string $string
|
||||
* @return string
|
||||
*/
|
||||
public static function tr(string $string,array $skip=[0x0a,0x0d]): string
|
||||
{
|
||||
$tr = [];
|
||||
foreach (self::CP437 as $k=>$v) {
|
||||
if (in_array($k,$skip))
|
||||
continue;
|
||||
|
||||
$tr[chr($k)] = '&#'.$v;
|
||||
}
|
||||
|
||||
return strtr($string,$tr);
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate details about this message
|
||||
*
|
||||
|
@ -101,7 +101,7 @@
|
||||
<div class="row pb-2">
|
||||
<div class="col-8">
|
||||
<div class="pad pb-0">
|
||||
<pre>{{ $msg->message }}</pre>
|
||||
<pre>{!! \App\Classes\FTN\Message::tr($msg->message) !!}</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -118,6 +118,13 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if($msg->isNetmail())
|
||||
<div class="row pb-2">
|
||||
<div class="col-8">
|
||||
<strong>VIA:</strong> <br>{!! join('<br>',$msg->via->toArray()) !!}
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
<div class="row pb-2">
|
||||
<div class="col-8">
|
||||
<strong>KLUDGES:</strong> <br>
|
||||
|
Loading…
Reference in New Issue
Block a user