This file is indexed.

/usr/share/doc/aprsd/aprsddoc.html is in aprsd 1:2.2.5-13-5.2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

   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
<HTML>
<HEAD>
<TITLE>
WA4DSY Linux APRS server docs. 2.1.5 Aug. 2002 
</TITLE>
</HEAD>
<BODY bgcolor="#f0f0f0": text="#000000"> 
<HR>

<p>
<H2>WA4DSY Linux APRS server docs. 2.1.5 Aug. 2002</H2>

<h3>Notes for 2.1.5</h3>
This is a bug fix release combined with several new features. It will now compile and
run on Red Hat 7.x . For details see the <a href="revisions.txt">revisions.txt</a> file. <p>
If upgrading, please replace your original aprsd.init file with the new one suppled in this release.<br>
There are also some new features in the aprsd.conf file.<p> Also please add 2 new log files
to your /etc/logrotate.conf file.  They are loop.log and reject.log .<p>

Please read README.STLport for information about a thread-safe stl library
and how to build aprsd to use it.<p>

Most noteworthy changes are:<p>

0) Now will compile with both gnu 2.9 and 3.1 compilers. The 3.1 compiler will
emit lots of "deprecated" warnings but they can be ignored.<p>

1) Added wild card "*" support to "gate2rf" command in aprsd.conf.  See <a href="#inet2rf">
gating to RF</a> section for details. <p>

2) Added filter code in aprsString to reject "EH?" and "cmd:" packets. Packets that don't
look like ax25 format or are longer than 250 bytes are rejected.<p>

3) Removed directed query responses.  Fixed general query "?IGATE?" response to comply with
APRS spec 1.0. <br>
Example query response: <br>  
testaprsd>APD215,TCPIP*:&lt;IGATE,MSG_CNT=0,LOC_CNT=0,CALL=WA4DSY,LOCATION=Atlanta_GA,<br>HOST=lab1.wa4dsy.net,IP=216.27.174.141,EMAIL=sysop@myisp.net,VERS=aprsd 2.1.5 
<br> Also blocked ?IGATE? queries from RF to Internet.  A query from RF will only trigger a single response from the igate(s) that hear the station on RF.
<p> 


4) Stopped sending System Status messages on Link port (1313) and Message Port (1314).<br>
    You will no longer get<br> 
    "aprsdATL>JAVA::javaMSG  :Atlanta_GA Linux APRS Server: 127.0.0.1 connected 2 users online." <br>
    and other such messages on these ports as other users connect and disconnect. However, to provide
    compatibility with some applicaitons that verify their own logon with these messages, the apps
    own connect and logon status messages still be sent back.  In other words, you see your own
    logon activity by no one elses.<p>
    
5) Removed code which cleared the 8th bit of users data. This allows 8 bit wide characrter sets to be passed.<p>
    
6)  Added support for NOGATE or RFONLY in path.  If a packet from any source has NOGATE or RFONLY in the
    path it will discarded and not be put on the Internet.  <p>
    
7)  The server now <a href="#PktSource"> adds information</a> to the end of the ax25 PATH indicating the
    source of each packet . eg: qAR,WA4DSY. This is known as the "q Construct".  As of beta 8 the format
    complies with modifications and improvements made by Pete Loveall AE5PL.<p>
    
    
8) Added <a href="ports.html#omniport">OmniPort</a>.  This new port lets the users define their own custom streams.
   It defaults to 14600.<p>
   
9 ) Added new keyword  "Server"  to aprsd.conf file.  
    It replaces the old "Igate" command (although Igate is still honored).
    A command such as "server first.aprs.net 23 hub-sr" defines the connection
    to first.aprs.net as a send/receive hub connection.  The user passcode
    is supplied with another keyword "pass".  See <a href="#configfile">aprsd.conf</a>
     docs for details. <p>
    

10) Added a new page of data to the html status page.  Clicking on the users
    port number opens port filter status in a new window.  There you can
    observe which streams each user is being sent. This became importaint
    because of the new OmniPort and its user definable streams. <p>
    
11) Added bandwidth controls.  Sysop may now specify the maximum allowed server
    load in bytes/sec.  New users are rejected when the limit would be exceeded
    and the latest high bandwith users are disconnected if the load increases
    beyond the specfied limit.  Keyword is "MaxLoad" in aprsd.conf . <p>
    
12) <a href="#remotetnc">TNC sysop mode</a> can only be accessed from the new TncSysopPort 14500.
    Aprsd will now automatically put your telnet client into character-at-a-time
    mode for better operation with the TNC command line.
    
<p>

To conform to standard practice I suggest changing your BEACON strings to
show a GATEWAY diamond with an "I" overlay. Below is an example from the
aprsd.conf file.  Your existing file may have the symbol set to "TCPIP"
if you are upgrading from previous aprsd versions. <p>

EXAMPLE: <br>
NetBeacon 10 !0000.00NI00000.00W& aprsd Linux APRS Server<br>

The symbols are defined in the APRS Spec document in appendix 2
and on page 89.


<hr>
Everyone: You will need to compile the code get a working
executable for your system. This is done automatically by the install script.
Be advised you need the c++ compiler installed on your system.
You can also type "make" to compile the program.
It is designed to work on RedHat 5.1 and later
Linux distributions.  This includes Mandrake. Others may or may not work.
Early versions before 5.1 will not work.

Go the the <a href="#daemon"> Installing </a> for more details.
<hr>
<p>
<h3>Index</h3>
<a href="#Revisions"> Revisions </a> <br>
<a href="#legal"> Legal Stuff </a><br>
<a href="#description"> Program description</a><br>
<a href="#files"> aprsd Files </a><br>
<a href="#filelocations"> File Locations </a><br>
<a href="#daemon"> Installing as a daemon </a><br>
<a href="#running"> Starting and Stopping the Server</a><br>
<a href="#program"> Installing as a user program </a><br>
<a href="#configfile"> Server configuration file aprsd.conf </a><br>
<a href="#comports"> Com port configuration </a><br>
<a href="#shutdown"> Server shutdown </a> <br>
<a href="#remotetnc"> Remote TNC sysop access </a><br>
<a href="#logfiles"> Log Files </a><br>
<a href="#stsm"> Station to Station 3rd Party Messages </a><br>
<a href="#msgacks"> Message Acks </a><br>
<a href="#validate">User Validation </a><br>
<a href="#abuse"> Filtering abusive users </a><br>
<a href="#inet2rf"> Selective Internet to RF gating </a><br>
<a href="#NOGATE"> NOGATE or RFONLY in path</a><br>
<a href="#mic_e"> Mic-E packet translation </a><br>
<a href="#aea_tapr"> AEA to TAPR conversion </a><br>
<a href="#PktSource"> The qAc construct. Packet source path insertions.</a><br>
<a href="ports.html#omniport"> OmniPort and user defined data streams.</a><br>
<a href="#udp"> UDP input port </a><br>
<a href="#queries"> The ?IGATE? Query </a><br>
<a href="#java"> Java Applets </a><br>
<a href="#aprspass"> The aprs passcode calculator </a><br>
<a href="#http"> Monitoring system operation with a web browser </a><br>
<a href="#ipwatch"> Determining the source IP address of aprs packets </a><br>

<a href="#bugs"> Known Bugs </a> <br>

<hr>




<hr>
<a name="legal">
<h3>LEGAL STUFF </h3>

Copyright 1997-2002 by Dale A. Heatherington, WA4DSY<br>
Web page: <a href = "http://www.wa4dsy.net/aprs/"> http://www.wa4dsy.net/aprs/ </a> <br>

<hr>

    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; either version 2 of the License, or
    (at your option) any later version. <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.  <p>

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA <p>
    
<hr>

APRS is a registered trademark, and APRS protocols are copyrighted
by  Bob Bruninga, WB4APR.  The owner reserves all rights and
privileges to their use.<p>

HAMS may apply the APRS formats in the TRANSMISSION of position, 
weather, and status packets.  However, the author reserves the 
ownership of these protocols for exclusive commercial application and for 
all reception and plotting applications. Other persons desiring to include 
APRS RECEPTION in their software  for sale within or outside of the 
amateur community will require a license from the author.  Also 
TRANSMISSION of APRS protocols in any NON-AMATEUR commercial application 
or software will require a license from the author. <p>

Bob Bruninga, WB4APR<br>
115 Old Farm CT<br>
Glen Burnie, MD 21060<p>
</a>
  
 <hr>

<a name="description">
<h3>DESCRIPTION </h3>
This is an APRS Internet server program.  It acts as a gateway between
the Internet and a local ham VHF APRS packet network. It is interfaced to
directly to a TNC via one of the PC serial ports and does not use the Linux
ax25 sockets interface. Hamish Moffatt has a 
<a href="http://aprs.moffatt.nu/aprsd.shtml">modified version of aprsd </a>
with ax25 support.<p>

It has only been tested on RedHat Linux 5.1 , 5.2, 6.0 and Mandrake 5.3 - 8.1 .  It requires libstdc++ 2.8.0 or later
to run.  It will NOT run on RedHat 4.2. <p>

The program gets data from a TNC connected to a serial port
and sends it to all clients who have connected to any of several user
defined tcp ports. Some defaults are 1313, 10151, 10152 and 14579.	 
It was designed to duplicate most if not all of the functionality of
APRServe, a Macintosh APRS server designed and coded by Steve Dimse, K4HG.<br>
<a href="http://www.aprs.net/aprserve.dcc.html"> See http://www.aprs.net/aprserve.dcc.html</a> <br>
It can also gate data coming from the Internet to the TNC for
transmission on the local VHF RF network.<p>


<h4>CLIENT SOFTWARE</h4>
Users can connect using several client programs such as Mac/WinAPRS,
javAPRS, <a href="http://www.eazy.net/users/fgiannan/linux/"> Xastir for Linux</a>
 and Telnet.  The logon protocol used by Mac/WinAPRS and others is recognized
and properly handled giving registered users the privilige of sending
3rd party messages into the local VHF network. <p>

Clients can use telnet to watch TNC data.<br>
eg: telnet www.wa4dsy.net 14579 <br>
If raw TNC data is desired port 14580 can be used.<p>

Scripts written in languages such as perl can connect to the
server and interact with the data. A UDP port is provided to simplify
injection of data into the aprs stream by scripts. <p>

The system operator can use telnet to monitor the server status
by connecting to any port and enter entering his callsign and passcode
and entering "monitor" for the version field. eg: user WA4ZZZ pass 12345 vers monitor <br>
 Also he can enter remote  sysop mode and gain direct control of the TNC on sysop port 14500. <br>

<p>


<h4>HISTORY LIST</h4>
A history of data from the TNC and IGATES going back 35 minutes (time also user defined) is kept in
memory and delivered to each user when he connects.  This
history data is filtered to remove duplicates and certain
other unwanted information.  Duplicate data are detected by looking
for any packets with the same data and source call sign that have
been seen in the last 20 seconds. When duplicates are found they are discarded.<p>

There is also a quota system to further reduce the quanity of data in the history list.
Each AX25 source call sign is allowed three packets in the history
list.  One position report, one weather report and one "other".	Only the
most receint of each type is retained. <p>



<hr>
</a>

<a name="files">

<h3>FILES</h3>
<pre>

Documenation Files:

aprsddoc.html                   This file.
ports.html                      Detailed info about aprsd ports
revisions.txt                   Detailed list of revisions by version number
q.htm, qalgorithm.htm           Q construct docs by Pete Loveall.

Executable files:

aprsd				The APRS server executable
aprspass                        Computes aprs passcodes from callsigns
aprsd.init                      Script that starts and stops aprsd

Configuration files:

aprsd.conf                      Main configuration file for aprsd
user.deny			List of users with restrictions placed on them
welcome.txt			This file is sent to users when they connect
INIT.TNC			This file is read into the TNC when the server starts
RESTORE.TNC			This file is read into the TNC when the server closes

				

Log Files:

aprsd.log			Created by server to log all user connections
thirdparty.log			Third party packets gated to RF
udp.log				Data from the UDP port logged here
rf.log				Data from our TNC after being digipeated
history.txt			Created by the server when it closes to save the 
                                history buffer. Data is read when it restarts.


Install files:

INSTALLDAEMON			Installation script for running as a daemon 
INSTALLPGM			Installation script for running as a program
REMOVE				UnInstall script - deletes /home/aprsd2/*

</pre>

</a>

<hr>



<a name="filelocations">
<h3>
FILE LOCATIONS
</h3>
<pre>
/home/aprsd2
	aprsd
        aprspass
        user.deny
	welcome.txt
	INIT.TNC
	RESTORE.TNC
	aprsd.log
	thirdparty.log
	rf.log
	udp.log
	aprsd.conf
	history.txt


/etc/rc.d/init.d
	aprsd.init

/etc/rc.d/rc3.d
	link to aprsd.init

/etc/rc.d/rc5.d
	link to aprsd.init

/etc/rc.d/rc6.d
	link to aprsd.init


 </pre>
 
 <hr>
 </a>

<a name="daemon">

<h3>INSTALLING AS A DAEMON</h3>
<em> (** also see Installing as a Program below **) </em><p>
Note that this also compiles the program if the executable
"aprsd" does NOT exist in the source directory.  To re-compile
updates in this directory you must do: "make clean" then "make".<p>
<ul>
<li>Login as root.

<li>Copy the archive into your home directory.

<li>Issue the following command:

<li>tar zxvf aprsd215.tgz

<li>Of course you already did it or you wouldn't be reading this ;-)

<li>cd aprsd215

<LI>Note: The following command will also compile the source files

<li>./INSTALLDAEMON

<li>cd /home/aprsd2

<li>Now make any changes you may require to these files (in /home/aprsd2/): <br>
Note: The install program will not overwrite these if they already exist.
 <ul>   
   <li> aprsd.conf
   <li> user.deny
   <li> welcome.txt
   <li>INIT.TNC
   <li>RESTORE.TNC
 </ul>
</ul>    

Note: If you have defined a serial port in aprsd.conf (eg: tncport /dev/ttyS0)
the value of "MyCall" specified in aprsd.conf will be replaced
with whatever it is in INIT.TNC. This action is new in version 2.1.2.
<p>

<ul>
</ul>

At this point INSTALL has created a directory
/home/aprsd2/ and copied several files
into it.  It also has copied aprsd.init 
to various /etc/rc.d/ directories. <p>

<hr>
</a>


 

<a name="running">
<h3>Starting and Stopping the Server</h3>

After you run INSTALL the server will start when the machine is booted up.
To start without rebooting cd to /etc/rc.d/init.d and run the aprsd.init 
script with "start" as the parameter.  eg:  ./aprsd.init start <p>

You can also start it as a daemon by using the -d option. eg: ./aprsd -d <p>

The serial device for TNC data and tcp port numbers are set in the
/home/aprsd2/aprsd.conf file.  You can edit this file in the directory you used
to uncompress the distribution files then run INSTALL to make the
changes effective.  INSTALL also will copy the distribution welcome.txt,
INIT.TNC and RESTORE.TNC to /home/aprsd so be sure you make changes to
these in the distribution directory before running INSTALL. <p>


To stop the server go to the /etc/rc.d/init.d directory and
enter "./aprsd.init stop".  To restart enter "./aprsd.init start" . Also, you can
use the "service" command. eg: service aprsd.init start .<p>
<hr>

<h3>RUNNING AS A PROGRAM </h3>

The server can be run as a regular program for testing purposes or if you
don't want it to auto start when Linux boots. <p>

First, stop the aprsd daemon by entering: /etc/rc.d/init.d/aprsd.init stop 
or "service aprsd.init stop" .<p>

It can be re-started as a user program changing to the /home/aprsd2 directory
and typing its name " ./aprsd "  Note: you will need to be logged on
as root unless your user name has write priviliges on the directory /home/aprsd2
and all the files in it.<p>

If you want to be able to log on as remote sysop and take control of the
TNC you will need to add a "tnc" group to the /etc/group file.
See "REMOTE TNC SYSOP ACCESS" below for more details.<p>

 <hr> 
 </a>
 
<a name="program">      

<h3>INSTALLING AS A PROGRAM </h3>
    (You may want to do this first to try it out)<p>
    
 Note that this also compiles the program if the executable
"aprsd" does NOT exist in the source directory.  To re-compile
updates in this directory you must do: "make clean" then "make".<p>

<ul>
<li>Login as root.

<li>Copy the archive into your home directory.

<li>Issue the following commands:
<ul>

<li>tar zxvf aprsd215.tgz
<li>cd aprsd215
<li>Note: The following command will also compile the source files
<li>./INSTALLPGM
<li>cd /home/aprsd2
</ul>
   Now make any changes you may require to welcome.txt, INIT.TNC, RESTORE.TNC
   and aprsd.conf to reflect your call sign, location and TNC paramters.
<br>
Note: The install program will not overwrite these if they already exist.


</ul>
The program and configuration files are copied to /home/aprsd2.
You will need to change the permissions on /home/aprsd2 and all the files
in it if you want to run it as a user other than root.  The Linux password
validator will only work if aprsd run as root.

<a name="commandline">
<h3>COMMAND LINE PARAMETERS</h3>

The server has two command line arguments, the name of the server configuration
file and one switch "-d" for daemon mode.  If no file name is provided the server
 will use /home/aprsd2/aprsd.conf . <p>

While running, once each minute this server will emit a status message to the console.
Also, it tells you each time it sends out a packet and to how many users.  It
also shows you what it's sending to the TNC.  One field in the status message
is aprsString Objs.  This is a debugging tool to help find memory leaks.  It should
be no more than 1 or 2 higher than the History items field. Sometimes it will
read much higher but should return to a difference of 1 or 2 within a minute or so.<p>

Ctrl-C or "q" will shut down the server in an
 orderly manner and save the current history
list (last 30 mins of select received data) to disk.<p>

<hr>
</a>


<a name="configfile">
<h3>SERVER CONFIGURATION FILE </h3>

The default configuration file is /home/aprsd2/aprsd.conf.  The file is read
on start up.  Lines starting with "#" are comments and are ignored.  Documentation
on syntax and key words are in the file.  More information on the tcpip ports used
by the server can be found in <a href="ports.html"> ports.html</a> <p>

<h4>igateMyCall</h4>
The "igateMyCall &lt;yes|no&gt;" command is new in version 2.1.0 . If the "yes"
option is chosen packets sent from your TNC and digipeated will be igated to 
the Internet.  If you have a beacon sending the same position as in your
NetBeacon both will be overlayed and unreadable on the users map.  If you must
igate your own TNC beacons you can offset the location of one of them
about .02 north or south so they show as separate objects.<p>  

<hr>
<h3>
SAMPLE CONFIGURATION FILE
</h3>

<pre>

#aprsd 2.1.5 server configuration file
#
#This file is read ONCE on server startup.
#You must restart aprsd for changes to take effect.
#eg: /etc/rc.d/init.d/aprsd.init stop (then start)
# OR:  service aprsd.init stop
#
#Lines starting with "#" are comments and are ignored
#Key words such as "mycall" and "maxusers" are NOT case sensitive.
#MyCall is the same as mycall.
#
#*** There is no error checking so be careful ******
#
#
#Servercall is the ax25 source call used in packets
#sent from the server to Internet users. (9 chars max)
#Note: Does not go out on the air.
#
servercall aprsdATL
#
#MyCall  This is over-written by the MYCALL string in INIT.TNC
MyCall N0CALL
MyLocation Atlanta_GA
#
#This email address will be sent in replies to ?IGATE? queries.
#It also appears on the HTML status page.
#
MyEmail sysop@myisp.net
#
#Set MaxUsers to a value that your Internet connection can support.
MaxUsers 25
#
#Set maximum server load in Bytes/sec.
MaxLoad 3000
#
#This determines if Mic-E packets are converted to classic APRS packets.
#Put 'no' unless you have a very good reason to do conversions. 
#This option must also be enabled in the SOURCE CODE. To turn it on
#you must edit "constant.h" and change CONVERT_MIC_E from FALSE to TRUE.
#then recompile aprsd. 
ConvertMicE no
#
#Define beacon text. The server will supply the ax25 path header.
#The first number after "NetBeacon" is the time interval in minutes.
#Comment out the line or set time interval to 0 to disable beacon.
#The rest of the line can be any aprs protocol conforming packet.
#
NetBeacon 10 !0000.00N/00000.00W& aprsd Linux APRS Server
#
#Define the TNC beacon. The TNC will supply the ax25 path header.
#It's optional and you may use the TNC BTEXT in the INIT.TNC file instead.
#
#TncBeacon 15 !0000.00N/00000.00W& aprsd Linux APRS Server
#
#
#Send 2 extra message acks is addition to each received ack to TNC
#Range 0 to 9
ackrepeats 2
#
#Send extra acks at 5 second intervals
#Range 1 to 30 seconds
ackrepeattime 5
#
#Set history list items to expire in 35 minutes
expire 35
#
#Define the TNC serial port (9600 baud)
#Note: This device must have write permissions
#If undefined all TNC related functions are disabled.
tncport /dev/ttyS0
#
#Set TNC baudrate. Values are: 1200,2400,4800,9600,19200 .
tncbaud 9600
#
# Allow Internet to RF message passing.
rf-allow yes
#
#TRACE causes the server to append its own callsign to the end
#of the AX25 path of every packet processed.  
#To conserver bandwidth this should only be
#done for short periods to track sources of problems.
#
Trace no
#
#Set filterNoGate YES to block RFONLY and NOGATE packets
filterNoGate yes
#
#Set history-allow to NO if you do not want users to get history dumps.
history-allow yes
#
#Set the minimum time between TNC transmit packets in milliseconds
TncPktSpacing 1500
#
# Disallow packets transmitted from our own TNC from 
# being igated back to the Internet after being digipeated.
igateMyCall no
#
#Set this to 'yes' if you want to log ALL PACKETS heard on RF to /home/aprsd2/rf.log
#If 'no' then only packets with your callsign will be logged.  (New in 2.1.4)
logAllRF no
#
#-------------------------------
#Server connection definitions
#usage: Server &lt;host name&gt; &lt;host port&gt; &lt;TYPE-DIR&gt; &lt;optional OmniPort filter command&gt;
#The TYPE-DIR field sets the connection type and data flow.
#TYPE is  either "SERVER" or "HUB"
#SERVER connections attempt to maintain a connection to the designated host.
#HUB connections maintain a connection to only ONE hub and rotate to the next
#if the connection fails.
#DIR is either "RO" or "SR"  RO is Receive Only. SR is Send and Receive.
#Eamples: HUB-RO   HUB-SR  SERVER-RO SERVER-SR
#If you select -SR to send data you must also supply a passcode
#using the "PASS" command.
#These commands are NOT case sensitive.
#
#The PASS command.  The callsign supplied in MyCall and this
# passcode allow you to send data to distant servers.
# PASS can be computed from MYCALL with the aprspass program.
# Note: this example is invalid.
#
pass 93456
#
#Example send-receive  HUB connections
#Hub is like Server except only ONE hub connection is active at a time.
#If the hub connection fails the next hub is tried in rotation until one accepts a connection.
#
Server second.aprs.net 23 hub-sr
Server first.aprs.net 23 hub-sr
Server third.aprs.net 23 hub-sr
#
#
#Example Receive-Only HUB connecton
#Server first.aprs.net 23 hub-ro
#
#Example Send-Receive SERVER connection.  The SERVER type maintains a connection to
#the specified server.  No rotation.
#Server first.aprs.net 23 server-sr
#
#Example of <a href="ports.html#omniport">OmniPort</a> connection to receive the local stream (tnc).
#Note: OmniPort is currently available only on aprsd 2.1.5
#
#Server wa4dsy.net 14600 server-ro portfilter(local)
#
#Define server listen ports <a href="ports.html">(see ports.html)</a>
rawtncport 14580
localport 14579
mainport 10151
mainport-nh 10152
linkport 1313
msgport 1314
udpport 1315
httpport 14501
ipwatchport 14502
errorport 14503
omniport 14600
sysopport 14500
#
#define trusted users of the UDP port.
#usage: trust &lt;ip address&gt;  &lt;subnet mask&gt;
#trust 208.148.145.151
#trust 208.148.145.144 255.255.255.240
#
#Selected call signs which are always gated to RF
#if they are not seen locally. All packets from
#these are gated in real time. Do not use unless
#you really need real time data.  Consider posit2rf below.
#They are case sensitive! Use upper case. Up to 64 may be defined.
#As of version 2.1.5 the * wild card character is supported.
#All characters beyond the * are ignored.  
#ie: WA4* would match ALL call signs beginning with "WA4"
#gate2rf K4HG-8 N4NEQ* 
#gate2rf W7LUS-14
#
#Call signs of stations whose posits are gated
#to RF every 15 minutes.  Only posit packets are
#gated.  Posits are taken from the history list.
#They are case sensitive! Use upper case.
#posit2rf N4NEQ-9 
#posit2rf W7LUS-14
#
#Define a list of message destination call signs or aliases 
#to gate to RF full time.  Note: the CQGA example 
#below is CQ GA (Georgia). Edit to suite your locale.
#Up to 64 of these may be defined. They are case sensitive.
#
msgdest2rf SCOUTS KIDS CQGA
#
#end

</pre>
<hr> 
</a>


<h3>IGATE PORTS </h3>


The "Server" commands in the configuration file above define the distant APRServe and
other Servers or HUBS you want to establish connections to.  You may choose zero to 100.  Duplicate
data will not be relayed to your users.  Connections which drop will be reestablished
automatically.  After a connection drops it will attempt to reconnect after 1 minute.
If that attempt fails it will try again in 2 minutes. The time will double each time
until it hits 16 minutes.  Then it will retry forever at 16 minute intervals.
These connection attempts appear in the aprsd.log file. <p>

Use the HUB mode (hub-sr) only with APRS servers which carry the full global feed
such as first.aprs.net, second.aprs.net and third.aprs.net.  Using HUB
with all 3 of these establishes  a single connection to one of them.
When that connection fails the next one will be tried until a new connection is
established. <p> 

Server mode (server-ro or server-sr) connections should be used for regional servers that
do not carry the full aprs data stream.<p>

This server has a port (1314) which only supplies station to station messages and corresponding
posits.  Other servers which will be used ONLY to relay 3rd party station to station
messages to their local VHF network may want to connect to this port to greatly
reduce the amount of data on their tcpip connection. <p>

<a href="http://www.ae5pl.net/html/APRSServers.htm"> Click here</a> for a list of APRS servers
and active port numbers.<p>


<hr>
</a>


<a name="comports">
<h3>
COM PORT CONFIGURATION
</h3>  	
The TNC COM port default to 9600 baud, 1 stop bit, 8 data bits and no parity.
You may change the baud rate with the "TNCBAUD" command in aprsd.conf.
Be sure the TNC is configured to these parameters.  You can use the terminal
program "minicom" that comes with Linux to prepare the TNC.  Make sure the
TNC is NOT in KISS mode.<p>
 
Be sure the device ( dev/ttyS* ) has the proper read/write permissions or the
server will not be able to access it. <p>

Root can set the serial port so it can be written to by anyone
with the following command: <p>

	chmod ugo+w /dev/ttyS0 <p>
	

NOTE: If you don't define a device for the com port in the aprsd.conf
file all TNC related functions in the server are disabled.<p>



<hr>

</a>

<a name="shutdown">
<h3>SHUTTING DOWN THE SERVER WHEN RUNNING AS A PROGRAM</h3>


Ctrl-C or "q" will shut down the server in an
 orderly manner and saves the current history
list (last 30 mins of received TNC data) to disk.<p> 

Ctrl-\ shuts down without saving anything.<p>

When running as a daemon you can shut it down
when logged on as root by issuing this command:
"service aprsd.init stop".<p>




<hr>


</a>

<a name="remotetnc">
<h3>
REMOTE TNC SYSOP ACCESS on Port 14500 
</h3>

You may telnet to the APRS server and connect to the TNC for the purpose
of changing parameters or even sending data out over the radio channel.
As of version 215 you must use the SysOpPort (default 14500).
Use the (ESC) key from a telnet session to enter remote access mode.

  
You'll be prompted for your user name and password.  
These must match an entry in the Linux password file. In other
words, a valid Linux login user/password.  Also, aprsd must
be running as root to be able to validate Linux passwords.
If the password is incorrect
remote sysop mode will be exited. The user must	also
belong to the "tnc" group.  This group must be created
in the /etc/group file. Here is an example line: <p>

tnc::102:root,wa4dsy,bozo <p>

In this example users root,wa4dsy and bozo are assigned to the tnc group.<p>



After you have logged on, everything you type goes to the TNC and
all TNC output data goes only to you.  The TNC is effectivly disconnected
from all other internet users.  Hit control-C to get the TNC into command mode. <p>

 
To exit remote TNC access hit the <ESC> key.  You may also need to
hit <Enter> if your Telnet program sends data a line at a time.	Some
Telnet programs can be configured for character at a time mode.  Check
your documentation for details. As of version 2.1.5 aprsd should put
your telnet client into character-at-a-time mode automatically.<p>

REMEMBER TO ENTER THE TNC "K" COMMAND BEFORE YOU EXIT.<p>

To disconnect hit ctrl-D . <p>

<hr>

</a>


<a name="logfiles">
<h3>
LOG FILES
</h3>

<pre>
/home/aprsd2/aprsd.log	User logons and logoffs and some system activity msgs.

/home/aprsd2/thirdparty.log	 3rd party messages sent on RF.

/home/aprsd2/udp.log	Record of data entering from the UDP port.

/home/aprsd2/rf.log     Record our own packets heard on RF by the TNC. 
                        (After being digipeated)
                        
/home/aprsd2/loop.log   Packets that were NOT flaged as duplicates and
                        rejected by the LOOP detector.

/home/aprsd2/reject.log Packets rejected by aprsd excluding dups.

</pre>

These can be viewed in real time with: tail -f /home/aprsd2/aprsd.log
or the name of the log you want to monitor. <p>

You can also use the "less" program to view it.
After entering "less /home/aprsd2/aprsd.log" you type "F" to
follow it in real time.  Type ctrl-C to exit "F" mode. <p>

All 3rd party station to station messages relayed from the Internet 
to RF are logged in /home/aprsd2/thirdparty.log <p>

3rd party formatted packets received by the TNC with "TCPIP" in 
the 3rd party path will never be sent anywhere. <p>

Data from the UDP port are logged in /home/aprsd2/udp.log .<p>

All data heard on RF with the "MYCALL" callsign with be logged
in rf.log .  This feature lets you see what you have sent out
on RF if you are being digipeated by someone else. <p>

To keep the log files from getting too large they need to 
be rotated on a regular basis.  Add the following to your
/etc/logrotate.conf file.  Log files will be rotated 
daily or weekly and the oldest deleted after 4 rotations.
Feel free to modify the schedule to suit your needs. <p>

<pre>

/home/aprsd2/aprsd.log {
        weekly
        rotate 4
}

/home/aprsd2/thirdparty.log {
        daily
        rotate 4
}
/home/aprsd2/udp.log {
        daily
        rotate 4
}
/home/aprsd2/rf.log {
        daily
        rotate 4
}

/home/aprsd2/loop.log {
        daily
        rotate 4
}

/home/aprsd2/reject.log {
        daily
        rotate 2
}




</pre>
<hr>


I use the "joe" editor to edit my configuration files remotely.  It isn't
installed by default so you may need to install it from the
cdrom.  To install mount the CD 
and do rpm -iv /mnt/cdrom/RedHat/RPMS/joe-2.8-13.i386.rpm . 

<hr>

</a>

<a name="stsm">
<h3>

STATION TO STATION 3RD PARTY MESSAGES
</h3>

This program will reformat and relay APRS 
 messages from the Internet 
to the TNC for RF transmission under the following
conditions. <p>

It came from a logged on verified registered user. <p>

 and <p>
 
 The originator was not seen on the TNC RF data stream
 in the past 30 minutes.<p>
 
 and   <p>
 
 The destination HAS been seen on the TNC RF data stream
 in the past 30 minutes and doesn't have "GATE*" in his path
 and has been repeated less than 3  times.  <p>
 
 and <p>

 The line "rf-allow yes" is in the /home/aprsd2/aprsd.conf file. <p>

Version 2.0.8 and later allows you to define up to 64 message destination call signs
or aliases which will always be gated to RF if "rf-allow yes" has been defined.
See the example aprsd.conf file for an example of how to use the "msgdest2rf"
command to enable this feature.
 
For each 3rd party messge delivered to RF the latest position report
packet of the originating station will also be sent after reformating
the path in 3rd party format.  The program pulls the posit from the
history list if it's in there. <p> 

eg: <p>

KE6DJZ>AP0917,KB6TLJ-5,RELAY,WIDE:=3415.99N/11844.34WyAPRS+SA <p>


becomes:<p>

}KE6DJZ>AP0917,TCPIP,WA4DSY*:=3415.99N/11844.34WyAPRS+SA  <p>

(assuming "MyCall" is WA4DSY ) <p>

During a series of messages the position packet will only
be sent with a message every 10 minutes unless the station emits and new one.<p>


This server will NOT igate a 3rd party _reformatted_ 
message from RF to the Internet which has been previously
on the Internet. ie: has TCPIP in the 3rd party path.  3rd
party packets without TCPIP in the 3rd party path will be
converted to normal packets and processed in the usual way. <p>


Users of unregisterd client programs can send their own
station-to-station messages to other Internet users.  These
messages will not go out on the TNC RF channel and the path
will be modified (TCPIP is changed to TCPXX*) so other
hubs will know not to send these messages out on their RF
channels.  Unregistered users cannot Igate packets other
than their own.  In other words, the ax25 source call 
in their packets must match their logon call and "TCPIP" must
be in the path. (TCPIP* or TCPXX* will not work either) <p>

eg: assume N0CALL is unregistered and attempts to send
the following into the server.<p>

N0CALL>APRS,TCPIP:>TESTING <br>     
This will be converted to  N0CALL>APRS,TCPXX*:>TESTING
and gated to other users (but not to RF!) <p>

However... <br>
W4ZZZ>APRS,TCPIP:>TESTING <br>
or<br>
N0CALL>APRS,TCPIP*:>TESTING <br>
will be deleted and not sent anywhere.<br>


Telnet users must provide a user name or call sign
before any of their data can be relayed to the internet.
They need to enter "user callsign pass -1" so the server will
accept the data.  The ax25 FROM call in packets they send
must match the call sign they loggon with.  If they provide
a valid password full priviliges are granted since they
used the keyboard to emulate a client program logon string.
(Not that anyone would want to do this except for testing) <p>

This server will also accept valid user/password combinations
for the Linux system it is running on.  These users must be in
the aprs group.  This group can be added by editing the /etc/group file. <p> 

Note: <p>

This program trusts other versions of itself and APRServe to
flag the paths of data from unregistered Internet users with "TCPXX*".
Station to station messages flagged this way will not be sent out on RF.
The IGATE commands in the aprsd.conf file should specify a remote host port
which is secure. For IGATES it must be a port which doesn't echo any
Internet user data, only TNC data.  Full function servers such as APRServe
and this version (2.x.x) of aprsd will change TCPIP* to TCPXX* in the paths 
of unregistered users on  all ports. <p>

Users of the current java APRS applet don't log in at all and are granted read-only access<p>

<hr>
</a>
<a name="msgacks">
<h3>MESSAGE ACKS   (New in 2.0.7)</h3>
At the suggestion of Bob Bruninga I have implemented redundent message acks.
Message packets of the form "WA4DSY>APRS::W4XYZ    :ack{1" will be reformatted to
3rd party format and sent to the TNC as usual. However, the packet will be repeated
several times at intervals of 5 (typical) seconds.  The number of repeats and the time
between them are defined by the "ackrepeats" and "ackrepeattime" statements
in the aprsd.conf file.  The defaults are 2 repeats at 5 second intervals.
You can set the repeats to any value from 0 to 9 and the time interval
from 1 to 30 seconds.  Note the "ackrepeats" value is in additon to the
first message ack.  You will always send at least one.
<p>
<hr>
</a>



<a name="validate">
<h3>USER VALIDATION</h3>

I obtained the user validation code from Steve Dimse K4HG.  He
has recently allowed the source code to be released. The source is in validate.cpp.  
<p>
If the users APRS name and pass code aren't valid the validate module tries the Linux
pass word validator for the "aprs" group.  If that also fails
it waits 10 seconds then returns the bad news to aprsd which notifies the user. <p>
<em> NOTE: aprsd must be run as root for the Linux password validator to work.
</em>
However, the APRS user and passwords (from Mac/WinAPRS users) 
will be properly tested regardless of what user is running aprsd if
"aprsPass yes" is in the aprsd.conf file.
<br>
<p>

The logon format:  <p>

user <call sign> pass <pass code> vers <Program version><p>

eg: user N0CALL pass 00001 vers MacAPRS 3.0<br> 
might be sent by a MacAPRS user. <br>

As pass code of -1 means you are an unregistered user,
not a hacker trying out an bogus password. <p>

You can telent to a port and enter the following,
assuming your Linux user name is bozo and you password is
xyzzy and you are part of the aprs group as defined in
the /etc/group file. <p>

user bozo pass xyzzy <p>

To monitor some server status data you can enter: <p>

user bozo pass xyzzy vers monitor  <p>

The aprs data stream is turned off and "Monitor Mode" is entered.
Once a minute the server will send a status message to you.<p>

Once you have logged on, ctrl-D will not cause a disconnect.
You have to use your Telnet escape key then do a quit.
I had to do this to prevent inadvertant disconnects due to
possible spurious control codes in some users data. <p>


<hr>
</a>

<a name="abuse">
<h3>
KEEPING ABUSERS OUT OF THE SYSTEM (New in 2.1.0)
</h3>
You can put the call signs of the users you want to
restrict in the users.deny file.  The format is 
the users call sign followed by either
the letter "L" or "R".  The "L" prevents logons and RF access.
The "R" prevents only RF access while allowing the user to
send packets into the aprs network.
<p>
<pre>
user.deny example:

W4EVIL L   <--- Prevents sending of packets into the server or RF
W4SOB R    <--- Prevents any of his packets from getting on RF
		even if they came from another igate.


NOTE: This file is read every time aprsd needs to check users
so you will NOT need to restart the server when you change it.
</pre>
If the abuse becomes serious enough you might consider
putting "aprsPass no" in the aprsd.conf file.  This turns off
the checking of aprs passcodes and only allows Linux user/passwords.
You will need to have all your users in the Linux passwd file.
<hr> 
</a>


<a name="inet2rf">
<h3>
Full time gating of selected stations from Internet to RF</h3>

For special events or personal reasons it may be desirable
to allow the transfer of packets of selected stations from
the Internet to RF.  Allowing all stations to do this would
overload the 1200 baud VHF packet frequency and isn't allowed.
These packets are only sent on RF if they came from the Internet
and were NOT heard on the local VHF frequency.<p>

There are three "modes" of doing this.  The most permissive
allows all packets from a selected station to be sent to RF
in real time.  The second mode only allows position report packets
to be sent on RF every 14.9 minutes.  This puts much less strain
on the RF network and is the recommended mode.<p>

The third mode which was new in version 2.0.8 gates 3rd party station
to station messages to RF full time if the DESTINATION call sign or alias
is defined in the aprsd.conf file after the msgdest2rf keyword.<p>


You select the stations by entering them in the /home/aprsd2/aprsd.conf file.
Up to 64 stations can be defined. Several can be put on each line.
The server must be restarted before any changes to aprsd.conf take effect. <p>

In version 2.1.5 the "*" wild card character is supported.  Characters
past the "*" will be ignored in the compare operation. For example
W7LUS* would allow all W7LUS ssids to match.

Examples:<br>
<pre>
These stations posits are sent to RF every 15 minutes: 
posit2rf K4HG-8 N4NEQ-9 
posit2rf W7LUS-14

All packets from this station are gated to RF full time.
gate2rf N0CLU-9

Any call with the first 5 characters matching W7LUS will
be gated to RF full time. eg: W7LUS-1 and W7LUS-13.
gate2rf W7LUS*




This allows any message addressed to SCOUTS, KIDS or CQGA to go to
RF even though these "call signs" were not heard locally.
msgdest2rf SCOUTS KIDS CQGA

</pre>


Note: The posits of stations in the "posit2rf" list are sent at 14 second
intervals.  It takes 14.9 minutes to scan the list of 64 before it repeats.
The posits are taken from the 30 minute history list.  If no posit
is available for the station then no data is transmitted.
 
</pre>
<hr>
<a name="NOGATE">
<p>
<h3> NOGATE and RFONLY</h3><P>
Version 2.1.5  adds support for NOGATE and RFONLY in the path.  Any packet from any
source with "NOGATE" or "RFONLY" in its path will be discarded.


<hr>

</a>

<a name="mic_e">
<h3>

MIC_E PACKET TRANSLATION </h3>

If you have "ConvertMicE yes" in your aprsd.conf file AND
have set "#define CONVERTMICE TRUE" in the source file
constant.h and recompiled the code, compressed TAPR Mic_E packets are 
converted to standard APRS format
before being sent anywhere else. I used the Mic_E decoder written by
Alan Crosswell, N2YGK to do the conversion. This is the same code that's
in his aprsmon program. <p>
The unconverted raw Mic_E packets from the local TNC 
can be observed by telneting to port 14580.
<hr>
</a>


<a name="aea_tapr">
<h3>AEA to TAPR conversion </h3>

All packets in the AEA format are converted to TAPR format 
before any other processing.  Clients never see an AEA
formatted packet except from the RAW TNC port (14580) if the system
operator is using an AEA TNC. <p>
<hr>
</a>

<a name="PktSource">
<h3>Packet Source path insertions</h3>

To aid in determining where packets were inserted into the APRS
Internet stream, aprsd 2.1.5 appends identifier path elements
at the end of the existing path if not present.
Incoming packets with the "qAc,callsign"   in them are not
modified. <p>

The first added path elemement is a three letter code indicating
data protocol and info about the source of the packet.  This code
can be expanded in the future as needed.<p>


The first character is always "q". The second character is a protocol identifier
for the data payload.  Currently only A=APRS is defined. The third character
is a code that identifies the source of the packet.  The possible codes
are C, X, R, , r, S, U, I, Z. They are defined as follows:<p>

<pre>
Code          Source

C        Validated Client (User). Packet had no q construct.
X        Unvalidated Client
R        RF packet from local TNC or converted from CALLSIGN,I construct
r        Same as above but received indirectly via another server.
S        Server or Hub
U        UDP port on aprsd server
I        Internal status message from aprsd server and Trace Packet
Z        Zero hops and Internal, do not repeat this packet
</pre><p>


Following the qAc path element is the identifier callsign: <p>
<pre>
Source            Identifier

C or X User   Users Login Call sign. 
S APRS Hub    IP address of distant server in HEX. This is the "Hex IP Alias".
I Internal    Server callsign.  (ServerCall in aprsd.conf)
R TNC         IGATE callsign or Callsign preceeding the "I" if converted from CALLSIGN,I .
r             Callsign preceeding the "I"
U UDP         Server callsign.
Z             Server callsign.

</pre>  <p>


Here are some examples.<br>
Assuming MyCall is WA4DSY, ServerCall is aprsdATL, Logged on user is WA4ABC, we are connected to
and receiving data from first.aprs.net and the path does NOT already have 
an qAc, we add: <p>
<pre>
qAC,WA4ABC     from validated internet Client WA4ABC
qAX,WA4ABC     from unvalidated client
qAR,WA4DSY     from local TNC (RF) 
qAR,W4ABC      from logged on client "W4ABC" and converted from W4ABC,I.
qAr,N4ZZ       from a server and converted from N4ZZ,I format.
qAS,C6581502   from Server/Hub third.aprs.net (IP address = 198.88.21.2) (no q and no I )
qAU,aprsdATL   from UDP port
qAI,aprsdATL   from Internal source (server beacon, etc). Packet will be traced.
qAZ,aprsdATL   from Internal source that should not be repeated (server status messages)
</pre>

<p>

If a packet comes in from directly connected client "MYCALL" and already has
a MYCALL,I on the end of the path aprsd 2.1.5 swaps the position of
the "I" and preceeding callsign and changes the I to qAR. 
WA4DSY>APRS,WA4ABC,I:data becomes WA4DSY>APRS,qAR,WA4ABC:data .
<p>
If a packet is received from another server and has MYCALL,I in the
path, the packet is converted to the qAr,MYCALL format.
<p>


The path will be either zero or 2 elements longer than the original.<p> 

If trace is enabled by setting "TRACE YES" in aprsd.conf, all packets passing
through aprsd will have the servers call appended to the end of the AX25 path.

<p>

<a href="q.htm"> Click here </a> for more about the qAc,Callsign construct written by Pete Loveall.<p>


<a name="udp">

<h3>UDP PORT</h3>

The UDP input port (default 1315) is provided for interface with
scripts.  Only IP addresses listed in the "trust" line(s) in the
aprsd.conf file are can send data to this port.  You can enter
up to 20 trust commands. <p>

Example: <br>
<pre>
trust 198.162.50.5 <p>
</pre>
You may also provide a subnet mask after the ip address
to open up an entire sub net. The example below allows
16 address from 198.162.50.0 to 198.162.50.15 .<p>

Example:<br>
<pre>
trust 198.162.50.0 255.255.255.240 <p>
 </pre>
The script can format packets to be sent to the TNC for RF transmission
or TCPIP.  The routing is determined by the "TO-CALL" field.  If it's
"TNC" the packet goes on on RF via the TNC after the path is striped off. <p>

This goes to the TNC:  WA4DSY>TNC:Data for TNC here <br>
This goes to TCPIP:    WA4DSY>APRS:Data for the Internet <p>

The complete string including the path goes out on the Internet. <p>

See the file "udp_example" for a sample perl script.  <p>
<hr>
</a>

<a name="queries">
<h3>
RESPONDING TO QUERIES  
</h3>
The aprsd 2.1.5 server will respond the general ?IGATE? query as follows:<br>

<b>Query: </b>
<pre>
WA4DSY>APRS:?IGATE? 
</pre>
<b>Response:</b>
<pre>
aprsdATL>APD215,TCPIP*:&lt;IGATE,MSG_CNT=11,LOC_CNT=59,CALL=WA4DSY,
LOCATION=Atlanta_GA,HOST=wa4dsy.net,IP=216.27.174.144,
EMAIL=sysop@myisp.com,VERS=aprsd 2.1.5
</pre>

<p>
Most of the data comes from the aprsd.conf file.<br>
<ul>
<li> MSG_CNT=11 is number of packets sent to RF
<li> LOC_CNT=59 is number of items defined as "LOCAL" in the history buffer
<li> CALL=WA4DSY is from mycall from INIT.TNC
<li> LOCATION=Atlanta_GA is from mylocation
<li> HOST=wa4dsy.net is host name obtained from Linux OS
<li> IP=216.27.174.144 is IP address from Linux OS
<li> EMAIL=sysop@myisp.com is from myemail
<li> VERS=aprsd 2.1.5 is internal version number string.
</ul>

A query from the RF side will not be passed to the Internet
but will be responded to on RF only.  Internet queries will
be passed to other connected servers and will result in replies
from every query enabled IGATE connected to the Internet.
<p>
 Note that directed queries are no longer supported because
 of problems with RF flooding.

<hr>
</a>

<a name="java">
 
<h3>Java Applet</h3>

The JavAPRS applet by Steve Dimse is a completely separate product and
is not supported by me.	 Surf over to 
<a href="http://www.ae5pl.net/html/javAPRS.htm">www.ae5pl.net/html/javAPRS.htm</a> 
for more information.

<hr>

</a>

<a name="aprspass">
<h3> APRS passcode calculator (new in 2.1.1)</h3>
The aprspass program is located in the /home/aprsd2 directory.
You may move it to another more convienient location if you wish.
To determine the aprs passcode required for a callsign "N0CALL": <br>
Change to the /home/aprsd2 directory.<br>
<pre>
./aprspass N0CALL
APRS passcode for N0CALL = 12345
</pre>
The program will print the passcode "12345".  You may use this 5 digit number
as a password to connect and login to other igates and APRServe.
The callsign and passcode are used as follows in aprsd.conf.
<pre>
igate second.aprs.net 23 N0CALL 12345
</pre>
This causes aprsd to connect the second.aprs.net, port 23.  Data from
that server becomes available at your server.  Your TNC data and logged on
Internet user data is sent to second.aprs.net over the two way connection.
<br>
Please use your <em>real</em> callsign!
<hr>
</a>

<a name="http">
<h3>
Monitoring system status with a web browser (new in 2.1.2)
</h3>
System operators can now check the operational status of their
aprsd server with a web browser.  The default port is 14501. To
see the information simply enter the URL into the browser.<br>
Example: To see the Miami server: http://first.aprs.net:14501/<br>
To refresh the data click the browser reload button.  Notice the
igate domain names and user IP addresses are links.  If the host
is running aprsd 212 or later you can click on the link to see
the status of that server.
This is an open port, no passwords are required. <p>
To <em>disable</em> this feature add to your aprsd.conf file: httpport 0

<a name="ipwatch">
<h3>
Determining the source IP address of aprs packets (new in 2.1.2)
</h3>
  
This TCPIP port (default 14502) supplies all data streams without dup filtering with
a special header prepended. The header contains the source IP address of the
packet and the user login name, "IGATE" or "UDP".  An example: !44.36.16.48:WA4DSY!
Packets from other igates this server connected to will show the domain name
instead of the IP address and the user will be "IGATE".  Packets from the UDP port
will have the IP address and the user field will be "UDP".  Packets from the TNC
will have "TNC" in the IP address field and "*" in the user field .
Use telnet or nc optionally with grep to determine the source of packets.  <br>
eg: telnet first.aprs.net 23 | grep '199.45.66.88' <br>
Will display only packets from IP address 199.45.66.88.<p>
To <em>disable</em> this feature add to your aprsd.conf file: ipwatchport 0




<a name="bugs">
<h3>
KNOWN BUGS
</h3>

Memory Leak
</h3>

Under RedHat 5.1 this program leaks 8K of memory for each user
connect/disconnect event.  This appears to be a problem with one or more
C libraries in the thread creation/destruction code. 
It has been fixed in 5.2. <p>

To get the fix for 5.1surf over to  
<a href="ftp://ftp.redhat.com/pub/redhat/upgrades/5.1/i386/">
ftp://ftp.redhat.com/pub/redhat/upgrades/5.1/i386/ </a><p>

Then get this file: <br>

glibc-2.0.7-19.i386.rpm <p>

The memory leak seems to be fixed in this version.
To install do:  rpm -U  glibc-2.0.7-19.i386.rpm
then reboot. You don't need to recompile aprsd! <p>





<hr>

</body>
</html>