1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661
|
<!DOCTYPE doctype PUBLIC "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<meta name="Author" content="David Ranch">
<title>LinPac User Manual</title>
</head>
<body>
<center>
<h1> LinPac - Packet Radio Terminal for Linux<br>
<hr width="100%"></h1>
</center>
<center>Version 0.28
<p>(c) 2020 - 1998 by David Ranch KI6ZHD</p>
</center>
<p><br>
</p>
<center>
<h2> User manual</h2>
</center>
<b>Index</b>
<p>1 <a href="#POS1">What is LinPac</a> </p>
<p>2 <a href="#POS2">First configuration</a> </p>
<p>3 <a href="#POS3">LinPac controls</a> <br>
3.1 <a href="#POS3_1">Keyboard</a> <br>
3.2 <a href="#POS3_2">Entering commands</a> <br>
3.3 <a href="#POS3_3">Initiating a connection</a> <br>
3.4 <a href="#POS3_4">Receiving and sending files</a> <br>
3.5 <a href="#POS3_5">Remote commands</a> <br>
3.6 <a href="#POS3_6">Character encoding</a> <br>
3.7 <a href="#POS3_7">Huffman compression</a> </p>
<p>4 <a href="#POS4">Variables</a> <br>
4.1 <a href="#POS4_1">Special variables</a> </p>
<p>5 <a href="#POS5">Station database</a> <br>
5.1 <a href="#POS5_1">The station.data file format</a> <br>
5.2 <a href="#POS5_2">The 'Name' command</a> <br>
5.3 <a href="#POS5_3">Using the database</a> </p>
<p>6 <a href="#POS6">About macros</a> <br>
6.1 <a href="#POS6_1">Creating macros</a> <br>
6.2 <a href="#POS6_2">Commands used in macros</a> <br>
6.3 <a href="#POS6_3">Special system macros</a> </p>
<p>7 <a href="#POS7">Creating new commands</a> </p>
<p>8 <a href="#POS8">Standard applications</a> <br>
8.1 <a href="#POS8_1">File transfer protocols</a> <br>
8.2 <a href="#POS8_2">Automatic password generation</a> <br>
8.2.1 <a href="#POS8_2_1">Login passwords</a> <br>
8.2.2 <a href="#POS8_2_2">Sysop and general use passwords</a> <br>
8.3 <a href="#POS8_3">Utilities for mail exchange</a> <br>
8.4 <a href="#POS8_4">Mail client</a> <br>
8.5 <a href="#POS8_5">Logbook</a> </p>
<p>9 <a href="#POS9">Command line options</a> </p>
<p>10 <a href="#POS10">Copying</a> </p>
<p>Appendix A: <a href="#POSAppendixA">List of LinPac commands</a> </p>
<p>Appendix B: <a href="#POSFAQ">Linpac FAQ / Questions and Answers / Getting more help</a> </p>
<p>Appendix C: <a href="#POSErrata">Errata</a> </p>
<p>
<hr>
<p>
<p><a name="POS1"></a> </p>
<h2> 1 What is LinPac</h2>
LinPac is a packet radio terminal for Linux that allows wide configurability
and easy addition of new functions and special functions needed by the user. The
aim is to minimize the amount of 'hard coded' functions and create a complete
set of applications that can be easy expanded and/or completely reconfigured.
<p>All functions described in this manual match the standard configuration
that comes with the distribution package. </p>
<p><a name="POS2"></a> </p>
<h2> 2 First configuration</h2>
When linpac is started for the first time on your computer, it automaticaly
creates the directory called <code>LinPac</code> in the running user's home
directory. This directory will contain the user's personal LinPac configuration
settings. After creating this directory, LinPac asks for basic callsign, port
and other information and prepares a useable configuration for you. An example setup
dialog is as shown, where we are using the bogus call "n0call" logging into
the local home BBS "n0ary-1":
<ul>
<pre>
$ linpac
Hello dear user. You seem to run LinPac for the first time.
LinPac has to create a directory in your home directory for storing
your personal configuration.
For creating your personal configuration please answer following questions:
Your callsign:
n0call
Enter your home BBS callsign with SSID :
n0ary-1
Enter the name of port to connect N0ARY-1
d710
Enter the digipeaters used to connect N0ARY-1 or press enter
when no digipeaters are used:
Enter the full hierarchical address of N0ARY-1
(e.g. #MOR.CZE.EU)
#NCA.CA.USA.NOAM
Thank you, N0CALL
Please wait a moment for creating your personal configuration
Installation done.
Press ENTER to run LinPac
</pre>
</ul>
<p>The above information is then stored in the <code>$HOME/LinPac/macro/init.mac</code> file as
various 'functions'. These functions are based on the very simple interpreted
language (actually it's not a language but something like the batch files in
DOS). In the LinPac/macro directory are all the scripts written in this
language. The init.mac macro is loaded at start of loading Linpac and contains
the commands to setup the callsigns and other settings. You can modify this file
to change the initial configuration of LinPac. Other macros can be run in LinPac
as desired or required. The simplest case of a macro is a normal text file that is
just printed to the screen (or sent to the remote peer) when executed. The language
is described in <a href="#POS6">chapter 6</a>. </p>
<p>You may also want to review or change following macro files: </p>
<ul>
<li><b>info.mac</b> - contains information about your system</li>
<li><b>ctext.mac</b> - executed when the peer connects and should
contain the greeting text</li>
<li><b>quit.mac</b> - called when user enters the Quit command (end
of connection) and should print some farewell text and disconnect</li>
</ul>
<p>After this you should be able to make your first connection.
</p>
<p><a name="POS3"></a> </p>
<h2> 3 LinPac controls</h2>
<p>After automatically running the LinPac setup routine, the main screen should appear.
If you see a segmentation fault, please see <a href="https://sourceforge.net/p/linpac/bugs/24/">
Linux AX.25 issues with long predictable network interface names</a> for a work around.
Moving on, in Linpac's main interface in the standard configuraion, the screen is divided
into five parts (described from the top of the screen to the bottom):</p>
<ul>
<li> <b>QSO window</b>: this window contains the text that came from the
peer and also the sent text and some special messages (different text colours).</li>
<li> <b>Status line</b>: displays your callsign, current time and some
information about the current connection.</li>
<li> <b>Editor</b>: allows you to enter the text you want to send to
the peer or the commands you want to execute</li>
<li> <b>Channel list</b>: displays the list of channels with the callsign
of connected users. The currently selected channel is highlighted.</li>
<li> <b>Monitor </b>: displays the traffic on your radio ports</li>
</ul>
<p>LinPac is mostly driven by commands. The commands are entered using the
editor and must start with a colon (':') in the first column. Lines that
don't begin with a colon are sent to the peer, if connected.</p>
<p>LinPac allows up to eight connections to be made simultaneously. For each connection
one channel is used. You can switch between channels by pressing the F1 -
F8 keys. Each has its own QSO window, status line and editor. The channel
list and the monitor are common across all the channels. </p>
<p>There is a special channel invoked by pressing F10. This channel has no
QSO window and doesn't allow making a connection. The text written is sent
out immediately using UI frames (beacon). </p>
<p><a name="POS3_1"></a> </p>
<h3> 3.1 Keyboard</h3>
The following list contains the important shortcuts:
<ul>
<p><b><u>Global</u></b> <br>
<b>F1 - F8</b> : switch to channel 1 - 8 <br>
<b>F10</b> : switch to monitor <br>
<b>Alt-X</b> : end of LinPac </p>
<p><b><u>QSO Window</u></b> <br>
<b>PgUp</b>, <b>PgDn</b>, <b>ctrl-R</b>, <b>ctrl-V</b> : scroll one page
up / down <br>
<b>ctrl-E</b>, <b>ctrl-X</b> : scroll one line up / down <br>
<b>ctrl-B</b> : skip to end of buffer </p>
<p><b><u>Editor</u></b> <br>
<b>Cursor keys</b>, <b>Home</b>, <b>End</b>, <b>Backspace</b>, <b>Del</b>
: text editing <br>
<b>ctrl-Y</b> : delete current line <br>
<b>Enter</b> : send current line </p>
</ul>
<p>Some applications (e.g. mailer) can use the whole screen. Each channel
can run only one such application at a time. It's possible to switch
to this application using <b>Alt-<<i>channel_number</i>></b> (e.g.
Alt-5) and switch back to terminal using <b>F1</b> - <b>F10</b>. </p>
<p><a name="POS3_2"></a> </p>
<h3> 3.2 Entering commands</h3>
Each command is invoked using its name. Some commands can be abbreviated.
In this manual the mandatory part is always written in upper case. The
remainder of the command name is optional. Some commands require some extra
arguments. The arguments are written after the command and are separated by
one or more spaces. If you want to enter an argument containing more than
one word, that argument must be entered in quotation marks.
<p>Examples:</p>
<p>
<ul>
<code>:color red blue</code> - calls the 'color' command with two arguments
- 'red' and 'blue' <br>
<code>:color 'light red'</code> or <br>
<code>:color "light red"</code> - calls the 'color' command with one argument
'light red'
</ul>
</p>
<p>Most of the commands work on the currently selected channel. If you want
to execute the command on some other channel, you can enter the number of
the channel this way. For example, to make an OUTGOING connection to destination
OK0PAB on Linpac channel 5:</p>
<p>
<ul>
<code>:connect@5 OK0PAB</code>
</ul>
</p>
<p>In this case the 'connect' command is executed on channel 5. </p>
<p>The complete list of commands with descriptions is available in Appendix
A. </p>
<p><a name="POS3_3"></a> </p>
<h3> 3.3 Initiating a connection</h3>
To initiate a connection the <code>:Connect </code>command is used. Just
switch to the channel you want to use by pressing <b>F1</b> - <b>F8 </b>and
enter the following command:
<p><code>:connect <i>CALLSIGN</i></code> </p>
<p>Replace the <i>CALLSIGN</i> with the real callsign of the station you want
to connect. The command can be abbreviated to the first letter only. Example:
</p>
<p><code>:c OK0PAB</code> </p>
<p>This command will initiate the connecting sequence to OK0PAB. To close
the connection, you can use the <code>:Disconnect</code> command by entering<br>
</p>
<p><code>:d<br>
</code></p>
<p> When your system has multiple radio ports, you can specify its name
before the callsign like this: </p>
<p><code>:c 2:OK0PAB</code> </p>
<p>This command will try to connect OK0PAB via port 2. When no port name is
specified, the default one is used. Initially the default port is
the first port in <code>/etc/axports</code> (your system AX.25 port configuration
file). If you want to change the default port, just use the command <code>:port</code>.
</p>
<p><code>:port 2</code> </p>
<p>This will change the default port name to '2'. In some cases it is useful
to set another default port for some selected channels. For this the variable
<code>CHN_PORT</code> can be used (see <a href="#POS4">chapter 4</a>). When set,
the content of this variable overrides the default port selection for
the particular channel. For example, when you set the variable for channel
4 using<br>
</p>
<p><code>:set CHN_PORT@4 1<br>
</code></p>
<p>the port '1' will be used as the default one for the channel 4. For other
channels, the previously set default port will be used.<br>
</p>
<p><a name="POS3_4"></a> </p>
<h3> 3.4 Receiving and sending files</h3>
The standard distribution can receive files using plain text or binary
transfer and using file transfer protocols YAPP and Autobin. LinPac will
automaticaly start to receive the file when the peer begins to send using
the YAPP or Autobin protocols. The 7+ files are automaticaly saved too. When
you want to save the incoming text you have to use the command
<p><code>:Write <<i>filename</i>></code> </p>
<p>The incoming text will be saved until you stop the saving using </p>
<p><code>:Write off</code> </p>
<p>For receiving a plain binary file, the corresponding command <code>:WBin</code>
can be used. This way of transferring binary files is not recommended; use
the autobin or yapp protocol instead. </p>
<p>The following commands are available for sending files: </p>
<p>
<ul>
<code>:rprg <<i>filename</i>></code> - sends the file using the Autobin
protocol <br>
<code>:yput <<i>filename</i>></code> - sends the file using the YAPP
protocol <br>
<code>:rbin <<i>filename</i>></code> - sends the binary file (no protocol
- not recommended) <br>
<code>:read <<i>filename</i>></code> - semds the text file </p>
</ul>
</p>
<p><a name="POS3_5"></a> </p>
<h3> 3.5 Remote commands</h3>
LinPac allows the remote user to enter commands. For remote control,
all LinPac commands are available but there can be (and should be) some restrictions
for each user.
<p>The remote command must start with the <code>//</code> sequence. For example
if some connected user sends you the text '<code>//info</code>' your terminal
will send back the station information. </p>
<p>The remote commands can be disabled using the command <code>:remote off</code>
and enabled by <code>:remote on</code>. You can also specify that only some commands
be available for remote users. The default list of available remote commands
is defined in the <b>init.mac</b> file (the DEF_RCMD line). It is also
possible to enable various commands for each user. This is described
in <a href="#POS5">chapter 5</a>. </p>
<p><a name="POS3_6"></a> </p>
<h3> 3.6 Character encoding</h3>
Some countries use different national character encodings
for some historical reasons. A user who has his Linux console configured
for example for some of the standard ISO encodings may be incompatible with another
one using a traditional encoding. To solve this LinPac allows the translation
of the input and output of each channel using a translation table. The translation
tables are stored in files <code>*.ctt</code> in the LinPac home directory.
<p>All known encodings must be defined in the file called <code>encodings</code>
in the LinPac home directory. This file contains a single line for each encoding
that specifies its <i>alias</i> (name which will identify the encoding in
LinPac), <i>encoding name</i> (an official name such as iso-8859-1) and optionally
the name of the <i>translation table file</i> to be used (without the extension
<code>.ctt</code>). </p>
<p>Note that LinPac does <em>not</em> support multi-byte encodings such as UTF-8
or other Unicode encodings.</p>
<p>The current encoding can be switched using the <b>:TRanslate</b> command separately
for each channel. To specify the default encoding for each user you can
add the line </p>
<p><code>ENC=<alias></code> </p>
<p>to the appropriate record in the station database. (The station database is described
in <a href="#POS5">chapter 5</a>.) When no encoding is specified for the
user, the default one is used. The default encoding alias is stored in the
DEF_ENC@0 variable which is set in the macro init.mac. </p>
<p>When the conversion table is not specified in the encodings file LinPac
only changes the name of currently used encoding but doesn't provide any
conversion. However some applications (such as QLinPac which works in unicode)
are able to do their own conversions. </p>
<p><a name="POS3_7"></a> </p>
<h3> 3.7 Huffman compression</h3>
Some packet radio terminals and BBS software allows the compression of
transferred text. When switched on, the sender does the compression of all
data before sending them to the other station and the recipient has to decompress
the data after receiving them. This makes the communication more reliable
and reduces the load of the radio link.
<p>The line compression in LinPac is activated using the <code>:comp</code> command.
The compression is switched on using <code>:comp on</code> and switched off
using <code>:comp off</code>. To ensure that the compression is activated or
deactivated on both ends of the link simultaneously LinPac sends the remote
command <code>:comp 1</code> or <code>:comp 0</code> to the other station automatically.
The arguments 1 and 0 have the same effect as <code>on</code> and <code>off,</code>
but they don't cause sending any command to the other station. </p>
<p>In the case in which the remote system doesn't support the <code>:comp</code> command
it's necessary to switch on the compression on the remote system manually
and then use the<code>:comp 1</code> command in LinPac. </p>
<p><a name="POS4"></a> </p>
<h2> 4 Variables</h2>
<p>Each channel has its own set of variables. Some of the variables are used
to store the configuration data. The user can create and remove variables
and change the values of existing variables using following commands:</p>
<p><ul>
<code>:set <<i>variable</i>> <<i>value</i>></code> - sets the
value of the variable. If the variable doesn't exist, a new one is created.
<br>
<code>:get <<i>variable</i>></code> - prints the value of the variable
<br>
<code>:unset <<i>variable</i>></code> - removes the variable </p>
</ul>
</p>
<p>Some examples:</p>
<p>
<ul>
<code>:set NAME John</code> <br>
<code>:set WHOLE_NAME 'John Big'</code> <br>
<code>:get NAME</code> <br>
<code>:unset NAME</code>
</ul>
</p>
<p>The name of the variable can contain the specification of the channel.
For example the variable <code>NAME@5</code> is the variable '<code>NAME</code>'
defined on channel 5. </p>
<p>When LinPac finds the character '<code>%</code>' followed by the name of variable,
it automatically replaces this text with the value of the variable. Considering the
previous example, the text <code>%NAME</code> will be replaced with John. </p>
<p><a name="POS4_1"></a> </p>
<h3> 4.1 Special variables</h3>
There are some special internal variables that don't allow changing their
value. Their value is set and changed directly by LinPac and these variables
can be used to add some actual information to the text. The list follows:
<p>
<ul>
<code>%V</code> - LinPac version (e.g. 0.26) <br>
<code>%C</code> - The callsign of connected station <br>
<code>%N</code> - The name of connected station (when known), else replaced
by the contents of %U macro <br>
<code>%Y</code>- Channel callsign (mycall) <br>
<code>%K</code>- Current channel number <br>
<code>%T</code> - Current time <br>
<code>%D</code> - Current date <br>
<code>%B</code> - Audible bell <br>
<code>%Z</code> - Current time zone <br>
<code>%U</code> - The text used when the name is unknown. This can contain
other macros (typicaly %C). <br>
<code>%P</code>- The port number <br>
<code>%M</code>- The number of connected users <br>
<code>%A</code>- The time since the last operator activity <br>
<code>%_</code>- End of line (CR) <br>
<code>%<</code>- Contents of the last line received, this is cleared by
reading <br>
<code>%#<i>number</i></code> - Replaced by a character with an ASCII value
<number> (e.g. %#27 means ESC) <br>
<code>%(<i>command</i>)</code> - Replaced by the command result. <br>
<code>%[<i>expression</i>]</code> - Replaced by the result of mathematical
expression
</ul>
</p>
<p>Variables for use in macros only: </p>
<p>
<ul>
<code>%R</code> - the number of macro arguments (up to 9) <br>
<code>%0</code> - the name of the macro <br>
<code>%1</code> - <code>%9</code> - macro arguments
</ul>
</p>
<p>For example try to write following text in the editor and press enter:
</p>
<p><code>The time is %T and the date is %D.</code> </p>
<p><a name="POS5"></a> </p>
<h2> 5 Station database</h2>
The station database holds various information about known stations. All
the information is stored in the '<code>station.data</code>' file and can be
changed using the normal text editor or using the LinPac :<code>Name </code>command.
<p><a name="POS5_1"></a> </p>
<h3> 5.1 The station.data file format</h3>
The information about each station is written in a paragraph starting
with the station callsign in square brackets. Each line in the paragraph
contains one definition like:
<p><code><item_name>=<value></code> </p>
<p>A typical station information paragraph might look like this: </p>
<p>
<ul>
<code>[OK0NMA]</code> <br>
<code>NAME=PC/FlexNet Brno</code> <br>
<code>TYPE=FLEXNET</code> <br>
<code>LOC=JN89HE</code> <br>
<code>QRG=144.8125 MHz</code> <br>
<code>SYSNUM=85946</code>
</ul>
</p>
<p>There are no mandatory items; the user can add various items depending
on what information he wants to store. The current LinPac distribution uses following
item names for standard information: </p>
<p>
<ul>
<b>NAME</b> - Text information about the station, or the operator's name.
LinPac shows this information when connected to that station. LOC - QRA
locator of the station. Shown after connect too. </p>
<p><b>TYPE</b> - The type of the station. For standard stations the types
FLEXNET, THENET, FBB, BAYBOX, DIEBOX, TNOS, JNOS, DXC and TERM for user terminals
are recomended, but you can add any other type. </p>
<p><b>LANG</b> - The language to communicate with the station. This is currently
supported by macros only. When this item is set, LinPac will try to
find the macro in the directory <code>macro/<LANG>/</code>. </p>
<p><b>NICKNAME</b> - The nickname of the operator. </p>
</ul>
<p>The standard LinPac configuration also uses these item names: </p>
<p>
<ul>
<b>TERM</b> - What type of terminal is used. If '<code>ansi</code>' is set,
LinPac switches to the ansi-color mode after connecting this station. <br>
<b>ENC</b> - The character encoding. Used to automaticaly switch to the
i/o character conversion. <br>
<b>RCMD</b> - The list of enabled remote commands for this station. <br>
<b>QRG</b> - The user frequency. Used by the logbook. <br>
<b>SYSNUM</b> and <b>PWD</b> - Sysop password for the station. See chapter
<a href="#POS8_2">8.2</a> for more information.
</ul>
</p>
<p><a name="POS5_2"></a> </p>
<h3> 5.2 The 'Name' command</h3>
<p>The <code>:Name</code> command is used to modify the station database. Running
the command without arguments results printing the name of currently connected
station. Arguments can be used to modify the data: </p>
<p>
<ul>
<code><name></code> - modify the NAME item <br>
<code>-l <locator></code> - modify the LOC item <br>
<code>-t <type></code> - TYPE <br>
<code>-L <language></code> - LANG <br>
<code>-n <nickname></code> - NICKNAME <br>
<code>-s <item>=<value></code> - modify other item
</ul>
</p>
<p>The command '<code>Name -i</code>' prints all information about the station.
When you need to change the information about a station other than the connected
station, add the argument <code>-c <callsign></code>. </p>
<p>Examples: </p>
<p>
<ul>
<code>:Name David</code> <br>
<code>:Name -c KI6ZHD -l CM97ai David</code> <br>
<code>:Name -i</code>
</ul>
</p>
<p><a name="POS5_3"></a> </p>
<h3> 5.3 Using the database</h3>
After any connection is established, LinPac reads the information about the
connected station from the database and creates the set of variables with
names <code>STN_<<i>database_item_name</i>></code> containing the values
of the items. These variables can be used in macros as described below.
<p><a name="POS6"></a> </p>
<h2> 6 About macros</h2>
<a name="POS6_1"></a>
<h3> 6.1 Creating macros</h3>
A macro is a LinPac command that is created using the macro language,
and uses other LinPac commands to perform some action. A macro can be defined
by creating the file <code>macro/<<i>command_name</i>>.mac</code>. It's
possible to define an abbreviated form of the command; this is described
in <a href="#POS7">chapter 7</a>. There are two ways to define a macro:
<p><b><i>a) Text macros</i></b> <br>
This way is suitable for commands which are intended to produce a larger
text output (for example station information). When executing this macro,
each line that doesn't start with ':' is printed (sent out). All commands
must start with the colon. This is suitable for modifying the text output
using the IF ~ ELSE ~ ENDIF commands or for including some other commands.
</p>
<p><b><i>b) Command macros</i></b> <br>
A command macro must start with the line <br>
<code>:MACRO <name></code> <br>
Each line of a command macro is interpreted as a command (doesn't start
with the colon and doesn't need to start at the begining of line). Text
output is provided by the 'echo' command. This way is more synoptical and
allows including comments that must start with the sequence '<code>;;</code>'
and end at the end of the line. </p>
<p>A macro is called with its name. When the first arguments starts with
the '@' symbol the macro is executed from the specified label. For example
the command <code>:convers @SEND</code> will execute the macro '<b>convers.mac</b>'
from the label 'SEND' (see next chapter to see how to define the label).
</p>
<p><a name="POS6_2"></a> </p>
<h3> 6.2 Commands used in macros</h3>
A macro can contain all LinPac and user defined commands. There
are also some special commands that can be used in macros only:
<p><b>MACRO [name]</b> <br>
Start of the command script definition (see previous section). </p>
<p><b>LABEL <label_name></b> <br>
Creates a label with specified name. In the command scripts the notation
:<label_name> can be used. </p>
<p><b>GOTO <label_name></b> <br>
Jump to specified label. </p>
<p><b>IF ~ ELSE ~ ENDIF</b> <br>
Conditional commands. There are two ways to specify a condition: </p>
<ul>
<li> normal notation (for more than one command)</li>
<p><b>IF</b> <condition> <br>
. <br>
. <br>
(commands to be executed when the condition is true) <br>
. <br>
. <br>
<b>ELSE</b> <br>
. <br>
. <br>
(commands to be executed when the condition is false) <br>
. <br>
. <br>
<b>ENDIF</b> </p>
<p>The ELSE part is not necessary - the IF ~ ENDIF notation is possible.
<br>
</p>
<li> abbreviated notation (for one conditional command)</li>
<p><b>IF</b> (<condition>) command </p>
<p>The parentheses are necessary in this case.</p>
</ul>
The following example shows how to use conditions and how to use the data
from the station database. We want to create a macro that will greet the
operator of the connected station with his nickname or with his name, if the
nickname is not defined.
<p><b><i>a) The solution using a text macro</i></b> (the comments are actually
not allowed in the text macros, they are here for explanation only) </p>
<p>
<ul>
<code>:if %(exist STN_NICKNAME) == 1 ;; when NICKNAME is defined</code> <br>
<code>Hello %STN_NICKNAME
;; greet with the nickname</code> <br>
<code>:else
;; else (not defined)</code> <br>
<code>Hello %N !
;; greet with the name</code> <br>
<code>:endif
;;(following commands are always executed)</code> <br>
<code>You have connected to %Y at %T. ;; Say your callsign and current time</code>
</ul>
</p>
<p><b><i>b) The solution using a command macro</i></b> </p>
<p>
<ul>
<code>:macro GREETING ;; start the command macro</code> <br>
<code>if %(exist STN_NICKNAME) == 1 ;; when NICKNAME is defined</code> <br>
<code>echo Hello %STN_NICKNAME ;; greet with the
nickname</code> <br>
<code>else
;; else (not defined)</code> <br>
<code>echo Hello %N !
;; greet with the name</code> <br>
<code>endif
;; (following commands are always executed)</code> <br>
<code>echo You have connected to %Y at %T. ;; Say your callsign and current
time</code>
</ul>
</p>
<p><a name="POS6_3"></a> </p>
<h3> 6.3 Special system macros</h3>
<p>There are some special macros that are executed automaticaly by LinPac
in some cases:</p>
<p>
<ul>
<b>init.mac</b> - This is executed when LinPac is started and its function
is to set the callsigns, screen options, and some other parameters. </p>
<p><b>cinit.mac</b> - This is always executed when a connection is established.
The distribution version of this macro sets the channel parameters in order
to configure station settings from the station database (allowed remote commands, i/o encoding,
terminal type) and executes the logbook command to sign the start of a connection.
LinPac always passes two arguments to this macro. The first (%1) argument
is the callsign of the connected station and the second (%2) argument is the
callsign of the previously connected station that provides the connection,
or empty in case of direct connection. </p>
<p><b>ctext.mac</b> - This macro is executed when some station connects to
the terminal. It should print some greeting text. No arguments are passed. </p>
<p><b>cexit.mac</b> - This is always executed when a connection closes.
The distribution version of this macro just executes the logbook command
to sign the end of the connection and clears the list of allowed remote commands.
There is always one argument passed by LinPac (%1), containing the callsign
of the disconnected station. </p>
</ul>
</p>
<p><a name="POS7"></a> </p>
<h2> 7 Creating new commands</h2>
<p>A new command can be represented by a macro or by an external program
(standard linux program or special LinPac application). Macros are placed
in the <code>$LINPACDIR/macro</code> directory and external programs are placed
in the <code>$LINPACDIR/bin</code> directory. In both of these directories is
the file '<code>commands</code>' that contains the list of commands in that directory.
You should specify here the name of the file, the name of the command in LinPac
(use upper case to specify the mandatory part of the command). It's
not necessary to include the macros here if you don't want to define the
abbreviation. </p>
<p>In case of external programs, it is also possibile to specify
program flags. Currently the following flags are supported:</p>
<p>
<ul>
A - Ascii mode program. LinPac provides CR <-> LF conversion
when communicating with this program. This is the default setting. <br>
B - Binary mode. Disables the text conversions. <br>
C - Leaves the stdout stream of the program on the console and reads its
stderr stream instead. <br>
D - DOS conversion - ignore LF characters. <br>
S - Reads both stdin and stderr streams of the program (shell mode). <br>
L - Local. This program is never available as a remote command. <br>
R - This program is always run as a remote command (its messages are
always sent out). <br>
P - LinPac removes the paths from filenames that are passed as the argument
of this command when the FIXPATH command is on. This is a security option.
</ul>
</p>
<p><a name="POS8"></a> </p>
<h2> 8 Standard applications</h2>
<a name="POS8_1"></a>
<h3> 8.1 File transfer protocols</h3>
<p>At present LinPac supports two protocols for transferring files:</p>
<ul>
<li> <b>Autobin</b> - a simple protocol suitable for short files</li>
<li> <b>YAPP</b> - a very sophisticated transfer protocol that provides
better error detection and is able to resume a previously interrupted transfer</li>
</ul>
<p>Usage of these protocols is described in chapter <a href="#POS3_4">3.4</a>.</p>
<p>LinPac can also automatically save incomming 7+ files. After saving all
parts of a file LinPac tries to call the '7plus' program to decode the file.
Received 7+ files are not removed automatically. </p>
<p><a name="POS8_2"></a> </p>
<h3> 8.2 Automatic password generation</h3>
<h4> <a name="POS8_2_1"></a>8.2.1 Login passwords</h4>
<p>LinPac provides automatic replies to the login authorization requests
for the following systems: F6FBB BBS (VE2BLY C_FILTER), BAYBOX, TNOS (numeric
MD5). Each station which requests a login password must have an entry
in the station database containing at least following fields:</p>A
<p>
<ul>
<code>TYPE=<<i>station_type</i>></code> (FBB, BAYBOX or TNOS) <br>
<code>LOGINPW=<<i>login_password</i>></code> <br>
<code>PWPROMPT=<<i>BBS_prompt</i>></code>
</ul>
</p>
<p><i><code>BBS_prompt</code></i> is the text which the BBS sends when requesting
the authorization. Usually it looks like 'Password>' or 'OK0XYZ>'.
</p>
<h4> <a name="POS8_2_2"></a>8.2.2 Sysop and general use passwords</h4>
<p>LinPac provides automatic authorization to the following systems: F6FBB BBS
(MD2 password), FLEXNET (older versions, the 'magic' numbers system and newer
TheNet-like system), THENET and BAYBOX. Each station you want to authenticate
with must have an entry in the station database. For password generation, the following
fields must be set:</p>
<p>
<ul>
<code>TYPE=<<i>station_type</i>></code> <br>
<code>PWD=<<i>your_password</i>> or</code> <br>
<code>SYSNUM=<<i>magic_number</i>></code>
</ul>
</p>
<p>Known station types are: </p>
<ul>
<li> <b>FBB</b> - An F6FBB BBS. The PWD field must contain your password.</li>
<li> <b>THENET</b> - A TheNet node. Again the PWD must contain the password.</li>
<li> <b>BAYBOX</b> - The same system as TheNet.</li>
<li> <b>FPAC</b> - A FPAC node. Password must be stored in the PWD field.</li>
<li> <b>FLEXNET</b> - FlexNet node. If the magic number algorithm is
used (older versions of flexdigi) the SYSNUM field must contain your magic
number and the PWD field must not be set. When the TheNet algorithm is used
(newer versions of flexdigi), the PWD field must contain the password and
the SYSNUM field must not be used.</li>
</ul>
<p>In case of <b>FBB</b> the authorization algorithm can be chosen by setting
the <b>MD</b> field in the station database: </p>
<p>
<ul>
<code>MD=5</code> - this value will select the MD5 algorithm <br>
<code>MD=2</code> - this value will select the MD2 algorithm
</ul>
</p>
<p>When no value is set, MD2 algorithm is used. </p>
<p>After connecting to the station you want to authenticate with, the authorization
sequence begins with the <code>:PW</code> command. LinPac will send the authorization
command to the station and tries to answer the authorization request using
your password. If the password is correct, authorization should finish successfully.
</p>
<p>The PW command accepts the following parameters: </p>
<p>
<ul>
<code>:PW [<<i>command</i>> [<<i>system</i>> [<<i>password</i>>]]]</code>
</ul>
</p>
<p>where </p>
<ul>
<li><code><<i>command</i>></code> is the command to be sent to the remote
station to start the authorization sequence (<i>sys</i> by default)</li>
<li><code><<i>system</i>></code> is one of the above-mentioned supported
systems; this system is used instead of the one specified in station database</li>
<li><code><<i>password</i>></code> is the password that will be used instead
of the one specified in the station database</li>
</ul>
<p>It's recommended that you create simple macros for frequently used authorizations
that require special arguments to the PW command. </p>
<p><a name="POS8_3"></a> </p>
<h3> 8.3 Utilities for mail exchange</h3>
<p>LinPac contains support for exchanging messages with remote Kantronics PBBSs as well
as F6FBB BBS systems. This support utilizies some tools from the ax25mail-utils so please
install that package first. THe next step would be to configure Linpac and ax25mail-utils's
configuration settings with the following variables either in Linpac's channel 0 or in
Linpac's init.mac file:</p>
<p>
Example #1: Kantronics KPC3:
</p>
<ul>
<li><b>HOME_TYPE</b> - This sets the type of remote system you're connecting to.
Supported options are either "PBBS" for Kantronics KPC3 type TNCs or "FBB" for F6FBB
BBSes. Only "PBBS" is well understood though the FBB support has been there for some time.
</li>
<li><b>HOME_BBS</b> - The AX.25 path to the home PBBS including the port name.
For example <code>d710:AA6WK-1</code> means use the <code>d710</code> AX.25 port as defined
in the <code>/etc/ax25/axports</code> configuration file and connect to the PBBS <code>AA6WK-1</code>.
It's important to note that the callsigns in Linpac are CaSe-SeNsItIvE so make sure these
two variables use the SAME case.</li>
<li><b>HOME_ADDR</b> - The full hierarchical address of the BBS (which technically isn't
required for PBBSes). For example
<code>AA6WK.#NCA.CA.USA.NOAM</code>.</li>
</ul>
<p>To set the variable while in Linpac, the <code>:SET</code> command can be used. You can also
put this same line (but without the colon) in Linpac's init.mac file:
</p>
<p>
<ul>
<code>:set HOME_TYPE "PBBS"</code><br>
<code>:set HOME_BBS@0 "d710:AA6WK-1"</code><br>
<code>:set HOME_ADDR "AA6WK.#NCA.CA.USA.NOAM"</code><br>
</ul>
</p>
<p>The recommended place to set this variables is in the startup macro <code>init.mac</code>.
The default version of this macro contains an example of setting these variables.
After setting these variables, the following commands are available: </p>
<p>
Example #2:
</p>
<ul>
<li><b>HOME_TYPE</b> - This sets the type of remote system you're connecting to.
Supported options are either "PBBS" for Kantronics KPC3 type TNCs or "FBB" for F6FBB
BBSes. Only "PBBS" is well understood though the FBB support has been there for some time.
</li>
<li><b>HOME_BBS</b> - The AX.25 path to the home BBS including the port name.
For example <code>kiss:OK0PAB OK0NMA</code> means use the <code>kiss</code> AX.25 port
as defined in the <code>/etc/ax25/axports</code> configuration file and connec to the BBS
<code>OK0PAB</code> via the digipeater <code>OK0NMA</code>. It's important to note that the
callsigns are CaSe-SeNsItIvE in Linpac so make sure these two variables use the SAME case.</li>
<li><b>HOME_ADDR</b> - The full hierarchical address of the BBS. For example
<code>OK0PAB.#MOR.CZE.EU</code>.</li>
</ul>
<p>To set the variable while in Linpac, the <code>:SET</code> command can be used. You can also
put this same line (but without the colon) in Linpac's init.mac file:</p>
<p>
<ul>
<code>:set HOME_TYPE "FBB"</code> <br>
<code>:set HOME_BBS@0 "kiss:OK0PAB OK0NMA"</code> <br>
<code>:set HOME_ADDR "OK0PAB.#MOR.CZE.EU"</code>
</ul>
<p>The recommended place to set this variables is in the startup macro <code>init.mac</code>.
The default version of this macro contains an example of setting these variables.
After setting these variables, the following commands are available: </p>
<p>Now you need to configure the ax25mail-utils program by editing the </code>/etc/ax25/axgetlist.conf</code>
file. The following example is to support connecting to PBBSes in example #1 above:</p>
<ul>
<pre>
[AA6WK-1]
MYCALL N0CALL
BBSCALL AA6WK-1
BBSPORT d710
CMD_LIST LO +;L
CMD_LIST_FROM LO +;L $
CMD_DISC B
HEADER_LINES 1
FORMAT <NUM> <FLAGS> <SIZE> <TO> <FROM> <DATE> <TIME> <SUBJ>
DATEFMT mm/dd/yyyy
BPFPOS 1--
</pre>
</ul>
<p>Each remote BBS gets it's own section, unique callsign, and any other specific settings to support
the sending and receiving of messages.<p>
<p> NOTE: the associated ax25mail-utils <code>/etc/ax25/axgetmail.conf</code> configuration file
NOT currently mentioned in this documentation is <b>only</b> used for remote "FBB" setups. That
support is currently not documented yet.</p>
<p><b>Urgent:</b> Linpac's packet messaging support is still a work in progress so some quirks exist for now:</p>
<p>
<ul>
<li>All remote BBS systems that use SSID numbers will have their message index files "flattened"
aka written to the same base callsign name without the SSID in <code>/var/ax25/ulistd/</code>. In
the future, this filename should include the <code>-SSID#</code></li>
<li>All non-private messages will be stored in <code>/var/ax25/mail/<callsign-SSID></code></li>
<li>All private messages will be stored in <code>/var/ax25/mail/<callsign-SSID></code></li>
<li>There is a known bug in Linpac's message system due to the index "flattening" issue where
messages cannot be written to disk or found in the :mail interface. To work around this issue, do
the following in the directory of the Linux user who is running Linpac:</li>
<p>
<ul>
<code>mkdir LinPac/mail/<callsign-SSID></code><br>
<code>ln -s LinPac/mail/<callsign-SSID> LinPac/mail/<callsign></code>
</ul>
</p>
</ul>
</p>
<p>Now that the basics (and workarounds) are setup, let's fetch any pending messages for you on your
configured remote BBS system. Enter in the following command on the Linux prompt (this example
is following example #1 above):</p>
<p>
<ul>
<code>axgetlist -b AA6WK-1</code>
</ul></p>
<p>NOTE: The above Linux command <b>must be</b> run as the same Unix user that is running the Linpac
program.</p>
<p> The axgetlist utility will now fetch an index of all messages on the remote BBS system and
store this list in <code>/var/ax25/ulistd/<bbs-name></code> (all SSIDs are currently stripped).
While this Linux command line-based index capture occurs, the packet traffic will NOT show up in
Linpac's main send/receive UI as this command is running outside of Linpac. You will see the AX.25
traffic if you have Linpac's AX.25 traffic monitor working. The resulting downloaded index file
will then be used to manually download any messages with the <code>getmsg</code> command or interact
with those remote messages them via Linpac's :mail interface</p>
<p>
<ul>
<p><code>:GETMSG <<i>message_number</i>> [<<i>message_number</i>>
...]</code> <br>
From the main Linpac interface, this command reads specified messages from the remote BBS and
stores them into <code>/var/ax25/mail/<<i>BBS_callsign</i>>/<<i>message_number</i>></code>.
The file system directory for the remote BBS must be created before using this command (use upper
case for the BBS callsign). When the message number starts with the letter <b>'p'</b>, the message
is considered a PERSONAL one and it's killed automatically after download. You can specify the kill
command by setting the <code>KILLPERS</code> variable in channel 0 using the <b>#</b> character for
the number of the message (e.g. <code>:set KILLPERS@0 "kill #"</code>). When this variable is not
set, the default command <code>K #</code> is used. This can also be set in the init.mac file.<p>
<p><code>:SP <<i>address</i>></code> or <code>:SB <<i>address</i>></code><br>
These commands can be used for creating new private messages or bulletins.
The usage is the same as for the FBB BBS. </p>
<p><code>:FORWARD</code> <br>
Transfers all new messages to the BBS. </p>
<p><code>:DELMSG <<i>message_number</i>></code> <br>
Marks the message for delete. </p>
<p><code>:PACK</code> <br>
Deletes all marked messages. </p>
</ul>
</p>
<p><a name="POS8_4"></a> </p>
<h3> 8.4 Mail client</h3>
<p>This application allows full screen message editing and browsing. It provides
a graphical (Ncurses) frontend to mail exchange utilities. The mail client is started
by the <code>:MAIL</code> command from Linpac's Channel 0 (aka.. the F1-key view). If
you run this command from any other Linpac channel, it won't display any messages!<p>
<p>After the mail interface opens, the <b>H</b> key shows the operating instructions.</p>
<p>In the INCOMING mail folder, you should see a list of messages available to download.
Toggle the messages you want to fetch with the SPACEBAR and then use the "d" key to download
those messages.</p>
<p><a name="POS8_5"></a> </p>
<h3> 8.5 Logbook</h3>
Logbook is a simple application that is started from the cinit.mac and
cexit.mac scripts (at the begining and at the end of each connection). It
creates the file in the 'log' directory for each callsign and writes there
the time when the connections were started and finished and the QRG. The QRG
is taken from the <code>QRG</code> field of the station entry in station database.
If the station has no QRG defined, the value from the <code>QRG@0</code> variable
is taken.
<p><a name="POS9"></a> </p>
<h2> 9 Command line options</h2>
<p>LinPac accepts following command line options:</p>
<ul>
<b>-m</b> : disable monitor. When this option is used, LinPac doesn't
create it's internal monitor objects and saves memory.
<p><b>-s</b> : disable <i>ax25spyd</i>. Linpac normally tries to connect
<i>ax25spyd</i> to get monitor data and when the connection fails, the
<i>listen</i> utility is used instead. When <b>-s</b> swicth is used, LinPac
doesn't try to connect <i>ax25spyd</i> at all. </p>
<p><b>-d</b> : daemon mode. LinPac doesn't initialize the screen and runs
in the background. </p>
<p><b>-p <string></b> : specify the arguments for the <i>listen</i>
program. Default value is <code>ar8</code>.</p>
</ul>
<a name="POS10"></a>
<h2> 10 Copying</h2>
<p>LinPac is Copyright (c) 2002-2020 by David Ranch KI6ZHD and
Copyright (c) 1998-2002 by Radek Burget, OK2JBG</p>
<p>This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
Software Foundation; </p>
<p>This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details
(contained in file 'license'). </p>
<p>You should have received a copy of the GNU General Public License along
with this program; if not, see <a href="https://www.gnu.org/licenses/"><https://www.gnu.org/licenses/></a>.</p>
<p> </p>
<hr>
<h2> <a name="POSAppendixA"></a></h2>
<h2> Appendix A - LinPac commands</h2>
<h3> Built-in commands</h3>
<b><i>a) action commands</i></b>
<p>
<ul>
<p>
<ul>
<p><b>ABort [address]</b> <br>
Cancels an action. Some commands are cancelled without specifying any address
(e.g. autobin). Addresses for some commands:</p>
<ul>
<table border="1" cellspacing="0" cellpadding="5">
<thead style="font-weight:bold; text-align: center;">
<tr>
<td>Action</td>
<td>Address for abort</td>
</tr>
</thead>
<tbody>
<tr>
<td>autobin RX/TX</td>
<td><b>autobin</b> (or none)</td>
</tr>
<tr>
<td>yapp RX/TX</td>
<td><b>yapp</b> (or none)</td>
</tr>
<tr>
<td>7plus autosave</td>
<td><b>7plus</b> (or none)</td>
</tr>
<tr>
<td>read / RBin</td>
<td><b>read</b> (or none)</td>
</tr>
<tr>
<td>write / WBin</td>
<td><b>write</b> (or none)</td>
</tr>
<tr>
<td>forward</td>
<td><b>forward</b> (mandatory)</td>
</tr>
</tbody>
</table>
</ul>
</ul>
<p>Most of the other commands don't need any address. </p>
<p>
<ul>
<p><b>COMPress [on | off | 1 | 0]</b> <br>
Switch the link compression on or off. The arguments 1 and 0 have the
same meaning as on or off but the remote station is not synchronized. </p>
<p><b>Connect [port:]call [digi [digi...]]</b> <br>
Initiate a connection to the specified station. </p>
<p><b>Disconnect</b> <br>
Disconnect the channel. </p>
<p><b>Echo <text></b> <br>
Print (send) the specified text. </p>
<p><b>FLUSH</b> <br>
Flush an output buffer (for example in scripts before disconnect or before
requesting input). </p>
<p><b>SYstem</b> <br>
End of LinPac, cancel all connections. </p>
<p><b>UNproto <text></b> <br>
Send specified text in a UI frame. </p>
<p><b>VERsion</b> <br>
Print version information. </p>
</ul>
<p>
<p><b><i>b) Commands for variable handling</i></b> </p>
<p>
<ul>
<p><b>SET <variable> <value></b> <br>
Assign a value to the variable. If the variable doesn't exist, it is created. </p>
<p><b>UNSET <variable></b> <br>
Remove the variable. </p>
<p><b>GET <variable></b> <br>
Return the value of the variable. Usually is better to use macro %variable
(see file macros.txt) </p>
<p><b>EXISTs <variable></b> <br>
Return 1 when variable exists, 0 when it doesn't exist. </p>
</ul>
<p>
<p><b><i>c) information commands</i></b> </p>
<p>
<ul>
<p><b>ENVINFO</b> <br>
Display information about the variable environment. </p>
<p><b>ISCONnected</b> <br>
Return "1" when the channel is connected, "0" otherwise. </p>
<p><b>MAXCHannels</b> <br>
Return the number of LinPac channels (typically 8). </p>
<p><b>PCALL</b> <br>
Return the physical callsign of the connected station (first station connected)</p>
<p><b>UTCTime</b> <br>
Return current UTC time (operating system value). </p>
</ul>
</p>
<p><b><i>d) setup commands</i></b> </p>
<p>
<ul>
<p><b>CBell [on|off]</b> <br>
When on, LinPac gives an audio signal when any station connects or
disconnects. </p>
<p><b>FIXPath [on|off]</b> <br>
When FIXPath=ON then the paths to files mentioned in the parameters are
ignored for external commands marked with a P flag. That means only the
default paths are usable. </p>
<p><b>INFOLEvel [0 | 1 | 2]</b> <br>
Set the mode of information line: <br>
0 - off (no connection info) <br>
1 - show importatnt informations <br>
2 - show all available informations </p>
<p><b>KNax [on|off]</b> <br>
Enable/disable sound signal when data is received. </p>
<p><b>Language [language]</b> <br>
Sets the language used. Currently supported in scripts only. </p>
<p><b>LIsten [on|off]</b> <br>
When listen is off, all connect requests are ignored by LinPac. Default
value is on. </p>
<p><b>MBIN [on|off]</b> <br>
When switched on, the monitor shows binary data. When switched off, the
binary data is hidden and replaced with the <Binary data> information.
</p>
<p><b>MONitor [on|off]</b> <br>
Enable/disable monitor function. This command is usually followed by STATLINE
and CHNLINE commands to adjust the screen layout. </p>
<p><b>MONPort <port_specification><br>
</b>Monitor the specified port(s) only. Port specification is either a port name
(as defined in /etc/ax25/axports) or <i>*</i> for monitoring all the ports.<br>
</p>
<p><b>MYcall <call></b> <br>
Change the channel callsign. </p>
<p><b>Port <port_name></b> <br>
Set the default port for the Connect command. This is usually the first
port defined in the /etc/ax25/axports file but can be overriden here.
This can be overriden for particular channels by setting the <code>CHN_PORT</code>
variable for the channel (see <a href="#POS3_3">chapter 3.3</a>).</p>
<p><b>PRIVate [on|off]</b> <br>
Mark the channel as private. No stations are allowed to connect on this
channel. </p>
<p><b>RCMD [<command list>]</b> <br>
Specify the list of available external commands. Only commands
from this list are available to a remote user. It's possible to include abbreviated
commands. The remote commands can be executed only on a channel which provides
a connection. Adding the @ character just after the command name in
the list (e.g. GET@) means that the remote user is allowed to specify the
channel on which the command should be executed (e.g. //GET@5 NAME). </p>
<p><b>REMote [on|off]</b> <br>
Enable or disable remote commands. </p>
<p><b>RXFlow [on|off]</b> <br>
Enable or disable data RX. The data is received only when <b>RXFlow</b>
is enabled on <b><u>all</u></b> channels. </p>
<p><b>TIMEZone [zone]</b> <br>
Set the time zone. Used for information only, doesn't affect time. </p>
<p><b>UNDest [call]</b> <br>
The destination address for UI / unconnected frames. You can use up to a maximum
of seven digipeaters by by including the remote digis in a space delinated list. Here
is an example where you MUST include the double quotes to complete the proper syntax:<br>
undest "DAVID KLPRC3 KBETH KBANN KBULN"</p>
<p><b>UNPort <port_name></b> <br>
Set the default port for the UI frames / unproto traffic command or F10
unproto traffic area. This is usually the first port defined in the
/etc/ax25/axports file but can be overriden here. This can be overriden
for particular channels by setting the unport variable for the channel.</p>
<p><b>UNSrc [call]</b> <br>
The source callsign for UI frames. </p>
<p><b>WAtch <port | 0> <pattern> <command/text></b> <br>
Start to watch the specified port (0 for all ports). When the specified pattern
is received then the specified command is executed or text is sent. (Commands
must start with a colon.) </p>
</ul>
</p>
<p><b><i>e) Screen control commands</i></b> </p>
<p>
<ul>
<p><b>STATLINE <n></b> <br>
Place the status line at the n-th line of the screen. </p>
<p><b>CHNLINE <n></b> <br>
Place the channel line at the n-th line of the screen. </p>
<p><b>SWAPEDit</b> <br>
Replace the editor window with the QSO window and vice versa. </p>
<p><b>INFOLine <nm> <text></b> <br>
Change the specified info line text. If the info line doesn't exist, it's
created. </p>
<p><b>REMOVEINFO <nm></b> <br>
Remove the specified info line. </p>
<p><b>TRanslate <alias></b> <br>
Switch I/O character translation (see <a href="#POS3_6">chapter 3.6</a>).
Running this command on channel 0 (unproto channel) switches the translation
table in all channels including the unproto channel and the monitor window. </p>
<p><b>TErm <type></b> <br>
Set the terminal type. If 'ansi' is entered then ANSI-color control sequences
are interpreted. </p>
<p><b>SCRLimit <low-limit> <high-limit></b> <br>
When the size of the window buffer exceeds the high limit, then the size
of the buffer is truncated to low-limit. The values are in bytes; default is
356352 and 524288 (384 and 512 kB). </p>
<p><b>DEFColor <color_name> <foreground_color> <background_color></b>
<br>
Change the color of some part of screen. The color_name parameter specifies
which part of screen to change. The following values can be used: <br>
QSO_RX - received text in QSO window <br>
QSO_TX - sent text in QSO window <br>
QSO_INFO - local information in QSO window <br>
QSO_CTRL - control characters in QSO window <br>
ED_TEXT - normal text in editor <br>
ED_INFO - command results in editor <br>
ED_CTRL - control characters in editor <br>
CI_NORM - channel info line - channel numbers <br>
CI_SLCT - selected channel <br>
CI_NCHN - normal channel <br>
CI_PRVT - private channel <br>
IL_TEXT - status lines </p>
<p>For specifying foreground and background colors, these values can be used:
<br>
BLACK, RED, GREEN, BROWN, BLUE, MAGENTA, CYAN, LIGHTGRAY <br>
These additional colors can be used for foreground only: <br>
DARKGRAY, LIGHTRED, LIGHTGREEN, YELLOW, LIGHTBLUE, LIGHTMAGENTA, LIGHTCYAN,
WHITE </p>
</ul>
</p>
<p><b><i>f) system commands</i></b> </p>
<p>
<ul>
<p><b>RESULT <text></b> <br>
Return the text as the result of a script. </p>
</ul>
</p>
<p><b><i>g) string commands</i></b> </p>
<p>
<ul>
<p><b>STRMid <start> <length> <string></b> <br>
Return the substring starting at <start> position and <length>
characters long. </p>
<p><b>STRLeft <length> <string></b> <br>
Return the left substring of specified length. </p>
<p><b>STRRight <length> <string></b> <br>
Return the right substring of specified length. </p>
<p><b>STRLen <string></b> <br>
Return the length of the string. </p>
<p><b>STRPos <substring> <string></b> <br>
Return the position of the substring in the string or -1 when the string
doesn't contain the substring. </p>
<p><b>UPCASE <string></b> <br>
Return the string converted into upper case. </p>
</ul>
</p>
</ul>
</p>
<h3> External commands</h3>
<p>
<ul>
<b>Bell</b> <br>
Call the operator using an acoustic signal.<br>
<p><b>Compose [p|b] <address> [<subject>] [<filename>]</b>
Create either a Private message or a Bulletin packet message for the specified
callsign or fully formatted packet BBS address. When no subject is specified, the
user is prompted for the subject. When filename is specified, the message is
created from the file, otherwise the text is read from the LinPac console. </p>
<p><b>CATCH -iol <pattern> <command/text></b> <br>
Catch is the extended version of <b>WAtch</b> command. It scans one or
more data streams (-i = input stream, -o = output stream, -l = local info
stream) for the configured pattern. The pattern can contain <b>*</b> and <b>?</b> wildcards.
The command can contain string <code>$1</code> .. <code>$n</code> which are replaced
with the string corresponding to the n-th wildcard in the pattern. The <code>$0</code>
string is replaced with the whole string that matches the pattern. See <code>catch
-h</code> for extended parameters. </p>
<p><b>DELMSG <message_number></b> <br>
Mark the packet message for deletion </p>
<p><b>FORWARD</b> <br>
Transmit all new packet messages to a BBS</p>
<p><b>GETMsg <numers></b> <br>
Fetch packet messages from the configured BBS</p>
<p><b>JOIN <channel_number></b> <br>
This is a form of a group chat feature where you can join the specified Linpac
channel to current Linpac channel. All data received on any of these channels is
automatically redirected to the other channel. Stop with <b>:ABort join</b>. </p>
<p><b>MAIL</b> <br>
Simple full-screen packet message client</p>
<p><b>MHeard</b> <br>
List of heard stations. </p>
<p><b>Name</b> <br>
Store station name or change a station database entry. (see Name -h) </p>
<p><b>PACK</b> <br>
Delete all packet messages marked for deletion </p>
<p><b>Read <filename></b> <br>
Send the specified text file (see Wbin / Rbin commands for BINARY files)</p>
<p><b>RPRg <filename></b> <br>
Transmit the specified file using Autobin protocol</p>
<p><b>RTt</b> <br>
Measure the round trip time to the other connected Linpac station. Think of this
as a "ping" time but results can be highly variable due to on-frequency packet
collisions, poor packet decodes, RF propogation, etc.</p>
<p><b>SENDFile [p|b] <file> <address> [<num_messages>]</b>
<br>
This command takes a binary file, splits the file into <i>num_messages</i>
parts using <b>7plus</b> and creates a separate packet message for each part.
When <i>num_messages</i> is not specified, the command tries to use <br>
the variable <code>BLOCK7P@0</code> which should contain the maximum size of
one block. If this variable is not set, blocks of 5 KB are created.</p>
<p><b>WBin / RBin</b> <br>
The same as Read / Write file transfers but to be used with BINARY files.
(See Read / Write commands for TEXT files)</p>
<p><b>Write <filename></b> <br>
Start to write received TEXT to the file. (see Wbin / Rbin commands for
BINARY files)</p>
<p><b>YPUT <filename></b> <br>
Transmit the file using the YAPP protocol. </p>
</ul>
</p>
<h3> Macros</h3>
<p>
<ul>
<p><b>Activity</b> <br>
Show the time since the last operator activity. This is also posted when
users first log into the Linpac system</p>
<p><b>Conv</b> <br>
Enter the conference. </p>
<p><b>Info</b> <br>
Print local station information. </p>
<p><b>Help</b> <br>
Print brief help information. </p>
<p><b>PW [<command> [<system> [<password>] ] ]</b> <br>
Start the authorization to the BBS or the node. See <a
href="#POS8_2_2">chapter 8.2.2</a> . </p>
<p><b>Quit</b> <br>
Send the quit text and disconnect. </p>
<p><b>Users / CStatus</b> <br>
Print list of connected users. </p>
</ul>
</p>
<h3> Commands for creating scripts</h3>
<p>
<ul>
<p><b>MACRO [name]</b> <br>
Start of the command script definition (see below).</p>
<p><b>LABEL <label_name></b> <br>
Create a label with specified name. In the command scripts the notation
:<label_name> can be used. </p>
<p><b>GOTO <label_name></b> <br>
Jump to specified label. </p>
<p><b>IF ~ ELSE ~ ENDIF</b> <br>
Conditional commands. There are two ways to specify a condition: </p>
<ul>
<li> normal notation (for more than one command)</li>
<p><b>IF</b> <condition> <br>
. <br>
. <br>
(commands to be done when the condition is true) <br>
. <br>
. <br>
<b>ELSE</b> <br>
. <br>
. <br>
(commands to be done when the condition is false) <br>
. <br>
. <br>
<b>ENDIF</b> </p>
<p>The ELSE part is not necessary - the IF ~ ENDIF notation is possible.
</p>
<p>abbreviated notation (for one conditional command) </p>
<p><b>IF</b> (<condition>) command </p>
<p>The parentheses are necessary in this case.</p>
</ul>
<p><b>RETURN [<data>]</b> <br>
Abort the macro execution and return the data as a result.</p>
<p><b>SLEEP <seconds></b> <br>
Pause the macro for specified time in seconds. </p>
<p><b>WAITFOR <condition></b> <br>
Pause the macro until the condition is true. </p>
</ul>
</p>
<p> </p>
<hr>
<h2> <a name="POSFAQ"></a></h2>
<h2>Appendix B - Linpac FAQ / Questions and Answers / Getting more help</h2>
<p>
<ol>
<li><b>Q: X doesn't work right in Linpact. Why?</b><br>
<b>A:</b> Have you looked in the errors.txt file found in the main LinPac directory? It can provide a lot of clues.</li>
<p></p>
<li><b>Q: When I start Linpac, I get "Segmentation fault". What is the fix?</b><br>
<b>A:</b> You are probably running an old version of Linpac. Please try the newest release
version available at <a href="https://sourceforge.net/projects/linpac/">https://sourceforge.net/projects/linpac/</a>
or possibly the newest DEVELOP branch. This will most likely require you to
compile Linpac to get it running</li>
<p></p>
<li><b>Q: When I start Linpac, all of the text in the AX.25 monitor is indented
to the right. How do I fix this?</b><br>
<b>A:</b> Exit Linpac, go into the directory where Linpac is installed, and delete the file:
<p></p>
<ul>
<code>monitor.screen</code>
</ul>
<p></p>
Now restart Linpac. Did that solve your issue? No? Also try deleting the files <code>window*.screen</code> and restart Linpac</li>
<p></p>
<li><b>Q: My question isn't addressed in this document, where else can I get help?</b><br>
<b>A:</b> Consider reviewing these other URLS:
<ul>
<li><a href="https://sourceforge.net/p/linpac/linpac/ci/develop/tree/linpac-todo.txt">Review Linpac's known bugs and enhancement requests</a><br>
<li><a href="http://www.trinityos.com/HAM/CentosDigitalModes/hampacketizing-centos.html#11.linpac">KI6ZHD's HamPacket documentation</a><br>
<li><a href="http://www.trinityos.com/HAM/CentosDigitalModes/RPi/rpi4-setup.html#28.install-linpac">KI6ZHD's Raspberry Pi documentation</a><br>
<li><a href="https://sourceforge.net/projects/linpac/support">Linpac's SourceForge Discussion area</a><br>
<li><a href="https://sourceforge.net/p/linpac/_list/tickets">Submit a bug / enhancement request via Linpac's SourceForge ticketing system</a><br>
</ul></li>
</ol>
</p>
<p> </p>
<hr>
<h2> <a name="POSErrata"></a></h2>
<h2>Appendix c - Errata</h2>
<p>
03/30/2020 - dranch
<ul>
<li>Expanded packet mail section on how to configure message system for PBBS
and FBB remote systems</li>
<li>Added a FAQ section and added this errata section</li>
<li>Improved formatting and added this errata section</li>
</ul>
</p>
<p>
04/01/2019 - dranch
<ul>
<li>Minor improvements
</ul>
</p>
<p>
<hr>
</p>
<p style="font-style:italic; font-size: -1;">Last update: March 30 2020<br/>
Please report any errors to <a
href="mailto:linpac@trinnet.net">linpac@trinnet.net</a></p>
</body>
</html>
|