URONode bug fix and change notes: 30/4/1998 v0.3a: Users with no permissions on AX25, NETROM, ROSE, TELNET outgoing connections, can use alias commands that connect a remote node by AX25, NETROM, ROSE and TELNET outgoing connections. 30/4/1998 v0.3b: "!" command crashed on systems with no swap: CORRECTED! Reconnected on Telnet sended two prompt-line: CORRECTED! 8/1/2000 v0.4-pre1: Now compile and run under kernel 2.2.x, glibc6 and new ax25 and ax25io libs! Added Gateway special tranfer mode. 18/2/2000 v0.4-pre2: "Ports" command crashed on systems without listening sockets: CORRECTED! Bad Pre-compiler directive order for systems without ROSE support: CORRECTED! Now AWZNode have a better I/O flushing. Other little code bugs resolved. *Rewrites by Brian N1URO **Note: this is being done on a debian linux server running kernel 2.4.20. your milage may vary depending on the flavor of linux you're using. It may be possible that with the exception of screen pushes, the AWZNode could infact be working 100% fine, this I don't know. 5/4/2003 v0.5.2: Renamed the project to AWZ-URONode. Stripped out the recursing prompt to the end users. Redesigned the output of the node to be similar to that of TheNet X1J type nodes. Added NodeId variable header of several command output lines, this is totally configurable in /etc/ax25/node.conf under the "NodeId" option. I suggest in keeping with the design of TheNet X1J to use a format similar to: UROHUB:N1URO-2} (that's my personal preference hi!) In flexd.c (line 310), changed i++ from (2) to (16) to ignore additional ctext. If by chance you only get one packet burst worth of ctext or login.fpr information, you may reduce (16) below to 8, or if yo uget 3 packets worth of information you may go higher. In my case, I receive two packets of connect texts from my FlexNet gateway node so I use 16 for myself. You will have to experiment with this. You have been notified. Failure to adjust the parsing code properly -will- result in any connect text strings as being falsely parsed as bogus flexnet destinations and will maintain a sloppy list. 5/4/2003 v0.5.3: With the amount of rewrites, I decided to rename the node to URONode. Did more cosmetic cleanups and changed the node to look more like TheNet type node. This also included some code cleanup and rewrites of some minor routines. Readded a node prompt as an option, however unlike the previous way the prompt was programmed, if there was no prompt defined, a generic AWZNode -> prompt displayed. If in /etc/ax25/node.conf the prompt was left blank (aka: "") then a null line feed occurred. Now in regards to the prompt, if no Prompt is defined in /etc/ax25/node.conf a flexnet type prompt "=>" will display, or if you set the prompt in /etc/ax25/node.conf to Prompt "", then the prompt will be defeated and no additional lines of text (null or not) will be displayed. *I found it VERY frustrating that when a sysop or a user with shell permissions accessed the shell, upon return, there was no notification that you were back into the node! Added a routine that welcomed the user back to the node upon shell logout. Repeated the above for the PMS gateway. I guess AWZ hardcoded in a prompt for such notifications so I assume I am the one who broke this hi! 6/4/2003 v0.5.4 Cleaned out some coded carriage returns which to me only adds junk to the code (unless the intent was for this to ensure a local echo wasn't working or something of that nature... ) at any rate, commented it out for now. Tightned some more of the displays which also cleans up some code as well. By now you may be wondering the madness behind my logic: As I stated when I first started this project, my goal was to use the existing AWZNode code and make it behave (oh austin powers behave!) as much like a TheNet X1J node as I could, with enhancing upon the existing tcp/ip and flexnet features this node has. Of course, code cleanup is part of the process. One thing I noticed on both AWZ and Tomi's node programs were the added strings both push such as the "Trying" messages when a user requests a connect to another node, etc. Personally, and especially on busy 1k2 baud links, i find it a bit irritating (as I'm sure end users do also) that additional lag due to a null line-feed or the node telling me what I asked it to is in process. In essance, this *should* make the node appear to connect faster for the end user... I hope *grin* Cleaned up the Sessions display... the net/rom sessions screen had an allocation for Rtt when it's not in use. This also caused the Sendq colum to appear grunged/misplaced. There's still some line-feeds here n there I'm cleaning as I go to which the subversion will increase hi! 6/4/2003 v0.5.5 Changed mailbox.c and system.c from looking at the users's environment mail variable to point to /usr/bin/mail and /var/spool/mail/ respectively. I noticed (on debian anyway) that the hardcoded paths failed mail to no end. Doing more work on mail as I go along. Note: this only affects internet based email! A seperate PBBS such as F6FBB is recommended for AX.25 mail. Changed MSession command back to Sessions. I have no idea why this was done. Deleted the Send command. It refuses to send no matter what I do anyway, so to me it's useless. Also changed ! (STats) to STats to match Tomi's node. Personally, I found this confusing between the two nodes. Added a Quit hardcoded command to match both TheNet X1J and FlexNet style nodes. Tweeked the way the Stats displayed. Memory shows not just 'memory' but the definitions between swap and physical ram are displayed. Also AX.25 daemon socket stats are also a bit more defined. Mail checking sometimes worked, other times didn't. Fixed the mailpoll routines so that polling would keep displaying to the user that he/she has new mail. This may irritate the user, but considering it's your hard disk space that's storing their internet email, for them to be on the node and simply choose *not* to read and/or delete mail from your resources is just as rude to you (my train of thought anyway). **NOTE: I can't stress enough on how dangerous (in regards to spam) the mail feature can be! I **highly** suggest that you *only* give access to those you know are hams! Needless to say, I would *not* turn access for this feature on for global access!!! Not only would you upset many people who are against receiving junk emails, but you could risk losing any and all internet connectivity from your ISP as some are *very* picky about spam mail that's relayed! Working for ISPs in the past, I can verify this :-) 8/4/2003 v0.5.6 Still cleaning up some displays...this will be a task as I go along. One thing I'm not positive about is whether or not on multiple port usage how some diplays will read since I only have a single ax0 port I'm using. Fixed some routines in the do_finger command and added user usage messages. In some cases, routines were forced so that if certain strings (even null) weren't set after the finger command, it was programmed to force the user to finger the localhost whether or not that was their intentions. Personally, I found it better to push a usage message of one line to the user than to go ahead and process an errant finger request to the localhost. I did force finger to require an @ within the command... since you're fingering something"@"somewhere. This is displayed in the usage message to the end user whether or not the input string after the command is null. Mail checking still seems buggy, and the bug seems somehow (so far) to be linked with the mailbox.c routines. This is also where the do_sendmessage command is. Fixed some routines in the send command where if the To: or Subject fields comtained an UPPERCASE character, it could cause the node to segfault out and leave the ipcs open. This is bad! More on this in the Known Bugs section. 10/4/2003 v0.5.7 Whew! After much hassle...FIXED the former (and I mean former hi!) SEnd command. While I was at it I also renamed it from Send to MEssage. I thought Mail and MEssage were similar in function so I decided to keep them together on the prompt as well. 11/4/2003 v0.5.8 Found a bug in the MEssage command *sigh* more on this below. Moved the location of the help files from /usr/lib/ax25/node/help/ to /var/ax25/node/help/ so that all created node files are together. Changed/fixed some of the help files to reflect changed commands, etc. Cleaned up more diplay text. (since I'm more a code hacker than a true coder, this is what I do best hi!.. but I learn as I go.) Edited the man pages and changed them from a text to a compressed format. Changed the configure script to grab the server's hostname. If your server's hostname is already an *.ampr.org host, then you should be fine with everything. If your server's hostname is a commercial domain based name, then you will have to edit config.h and insert the proper your.ampr.org hostname inside, or if you wish replied mail to be auto redirected to a NOS based node, enter in your NOS' ampr.org hostname. Added a warning message in the ./configure script to alert the sysop to check their config.h file for proper paths, etc. I was going to force a load of vi, but now-a-day most people don't use vi from my discussions but another editor such as ae, joe, pico, etc. Since the sysop will be editing their config files anyway, I feel the sysop can take a minute to verify paths and variables. Please pay close attention to any and all comments within this file! Added Makefile.in which is a 'generic' Makefile. Makefile is now created when you run the configure script. Also added some other environment grabber functions to the configure script which adds to the proper files that requires them for you. Added removal of Makefile in the command 'make distclean'. Removed local echo of "To:" field when using the MEssage command. That was for debugging purposes anyway. 12/4/2003 v0.5.9 Fixed the bug that drove me nuts with the mail command. Now the mail command will reject/refuse a parameter. One more down off of the hitlist of bugs :-) It was suggested by N1UAN to make a configure script toggle for the MEssage command too. I may do that in the future. Fixed a bug in the POrts output. Since I only have one port, this was hard for me to test. N1UAN has multiple ports and using his node I was able to see and fix this bug before it made it to the buglist. 12/4/2003 v0.5.10 Woops, fixed a bug in the Info command where there wasn't a line feed after the compile date. Reported by N1UAN. I also found a bug in the display of: Node Call|Alias where lines were grunging. I *think* I fixed this. Unfortunately this is the result of me only having one port to work with hi! I happened to find this myself using the copy N1UAN is running. Hopefully I fixed this bug. More of a maintenance release than anything else. Fixed a few tweeks here and there, nothing worthwhile to mention. The key thing in this version was to make it more customizable for the hard-set commands. This was suggested by N1UAN to which I kind of agree. It is possible that one could have a linux box on an amateur radio packet network but not wish to have it connected to the ampr.org or any other TCP/IP network. Coding in these commands would then become a bit of a tease to the end user who may wish to use URONode as a 'NOS' substitute for outbound telnet links, etc. Now hardcoded commands will be toggled on/off depending on how you answer the configure script. Answering NO to ALL questions will enable ONLY the following hardcoded commands: ?, Bye, Escape, Help, Info, Quit, Status. Answering YES to AX.25 enables: Connect, Desti, Ports, Links, SEssions, Users. Answering YES to Email enables: MEssage. Answering NO to FlexNet: Disables the Desti command and will NOT compile or install the flexd daemon...however if you have a destinations file that is valid that will allow users to connect to digipeated paths without having to manually type a 'via' statement in. Answering YES to FlexNet enables: Desti. Answering YES to MHEARD enables: MHeard. Answering YES to NETROM enables: Nodes, Routes. Answering YES to ROSE enables: Rose based protocol strings within ax.25 Answering YES to TCP/IP enables: Finger, HOst, Ping, Telnet Answering YES to TALK enables: TAlk. I may move the users to the default hardcoded commands..but for now my thinking at 5:00am on a saturday morning is, if you're not going to run ax.25, then you probably aren't as concerned who's in the node :-) Also the use of the linux netstat command will show you who's on. The commands I'm considering moving to the default are the ax.25 related commands... since after all, if you're on RF, you'll -need- ax.25 right? The Mail and SYsop commands are flagged on|off by the node.user file. 14/4/2003 v.0.5.11 Another change to the configure script. This time it checks your local hostname and requests that you verify it. If you see it's correct, just hit enter. If not, change it. Now... and this is tricky... *if* you do NOT wish to have users RECEIVE mail on the node but have another smtp based server such as a NOS node in which you wish your users to receive smtp mail, then what I suggest you do is set hostname to the hostname of THAT server. What this will do is send mail from the user with a 'return' path of your NOS server. For example; On my system I have an MFNOS node which users may send and receive SMTP based mail. It has a hostname of "n1uro.ampr.org". While users may have permission to SEND mail from URONode "dx.n1uro.ampr.org", I wish them to only receive their mail at n1uro.ampr.org, so in this case I would tell the configure script my hostname is: n1uro.ampr.org. It's sort of a way you can allow mail with some sort of anti-third-party protection. Its not perfect, but it helps. The configure script *will* prompt you for this whether or not you enable the Email feature. I added two neat commands. One is the new Version command. This is set as part of the default hardcoded commands. All it does is shows the version information of the node. This same data is also shown in the Users command to keep the node in line with the display parameters of TheNet/X1J style nodes (as I like). The other is what I call a Whowas command. I got the idea from being on IRC, and borrowed code from PE1RJA's node. With the W command, this will show you when a callsign was last on the node, and how that user connected... ie: which port, ip address, etc. If the user connected multiple times within the scope of the log rotation then a columnized listing of that user's information will be displayed. My happy news is that the SSID stripper from the user's connection in sending email is fixed. One bug down! 15/4/2003 v0.5-R1 WooHOO! MHeard table read/write of digipeated MHeard routing is FIXED! What I had to do was get argv to parse up to two digipeaters and then print to the device each in reverse order. Now since my RF digipeater gateway is a direct flexnet neighbor on axip, this was all I had to test with, your milage may vary. If the digipeated path is not yet in the mheard table, then it will fail. Another bug off of the list! *whew* I knew I was close . Also found some more screen writes to tighten up. As far as I know, I'm going to (for now) close this chapter of my life's efforts and make a release. I"m happy with how URONode is performing and my alpha tester N1UAN appears to be just as pleased :) Found a bug in the output of the Who command when * was entered. While this didn't seem to affect me on a debian system, it did seem to act funky on a SuSe system. Flexd needs NOT be edited now. Cleaned up some time variables in the MHeard routine and added a column for the port heard, and the frame (pid) type. Since the users can now see the pid types, they'll have a hint as to how their connect request will be handled. Found two bugs in the finger routine, both which appear to be in ALL flavors of "*node". The first one I fixed, and that was quite simple. When fingering information, the [address] or [hostname] was omitted. I don't know if this was intentional, but I fixed it anyway to match that of standard 'finger' displays. The second appears to be that on a long RF hop, or a socket that's become broke due to routing being cut, etc... there's *no* escape. For now, I've omitted the Escape: CTRL-* display in all routines. It will still work for telnet, netrom, and other types of connects. Since the Escape command is a seperate command at the moment, I think it's fine for users to check|set their Escape sequence. Hopefully I'll be able to figure out a routine to escape from a 'stuck finger' :-) Also tweeked the output of the HOst command. *Welp, further research shows that there is no "escape" in the native linux finger command... as there is none with the ftp command. Needless to say, the better 'fix' was to simply disable all 'trying' state messages. Personally I find them to be excess traffic that's not needed as either the node will tell you that it's connected or it will tell you that it failed. I know flexnet will tell you that it's trying a link setup and xnet will take that a step further and show you which port the link is being setup on. I may add the set escape sequence in the login screen as default prior to users attempting connections so that it'll be easier on them to know that there is a way to break a connect if needed. 16/4/2003 v0.5-R2 Ok, well I did decide to add the CTRL-* message as part of the initial user login screen. Also made some minor tweeks to the telnet login where now it shows more of a 'linux' style login. Did some more screens cleanups and stripped out a lot of the debugs I had commented out of the code. Ok..enough for now...I'm considering this version 'done' unless bugs are reported. :) 22/08/2003 - Bug/security report Morgan sm6tky publically posed a security report with some PoC listed but not all. While I was able to duplicate what he did submit for PoC, I wasn't able to find others. I'm very greatful to Morgan for bringing such information to my attention, I'm surprised that his first step was to post it in a public email list and list that I didn't reply when I wasn't even given the chance to... however with that being said, I still took his notations to heart and put the project a bit on the back-burner until I had time to do the fixes. I also offered Morgan a chance to submit code fixes to which he failed to do such. I don't claim to be a coder but just a hobbiest in regards to C and always welcome patches as I have with htppu with patches submitted by Thomas dl9sau who's also released his own flavor entitled SAUPP. Version 0.6.x will be in process as I have the time to do such. v0.6.0 - never happened. Just made the directory structure and took an initial peek at Morgan's reports. 12/7/2005 v0.6.1 Security issues fixed/removed. Rather than fix the talk command I decided to just eliminate it in favor of an external conversd command. I figure there's plenty of channels and lord knows there's actually more convers servers now than users to use them... why not just use that? Another security issue was mail. Instead of having mail routines built into the node itself, I figure a node sysop can grab my updated axmail node plugin and use that. I've done some basic security tests and it seems to be a better way to go. 12/7/2005 v0.6.2 Just a beta version, never released while working on more security fixes... I think I'm getting close now! Changed some code in the do_help routine in command.c where Morgan reported the possibility of a buffer overflow. Changed some code in the syslog routine in util.c hopefully fixing the formatstring vulnerability in that routine. Changed some code in gateway.c in hopes of fixing the reported buffer overflow. Found what I thought to be an open hole in ipc.c, should be fixed and with any luck the ipcs build-up issues will vanish with it. Only time and your debug reports will tell. Fixed a bug in Makefile where the man pages weren't installed due to the fact I gzipped them and didn't change this in Makefile. Changed the ftp url path, listed below. v0.6.3 - some cosmetic tweeks I can't recall what they were. 04/07/2006 v0.6.4 Found a bug where if a user's permissions were flagged for "no escape" such as a xNOS, F6FBB BBS, etc, that the node tried to display an Esc-? as part of the prompt/screens. Removed the Esc-? from displaying. That simply annoyed me and I'm surprised it wasn't reported... after all if there's no escape why show "?" as one since "?" can be used as an escape character with CTRL. Added an Email flag in node.conf. Simply add: Email on a blank line within node.conf for it to get pulled into the node. If you don't "(null)" will display. It won't prevent the node from functioning but will show users how lazy you are hi! This allows a sysop to deny all users connection access _unless_ they have a password, while at the same time allowing the node sysop a means of displaying a point of contact so that users wishing to use their node and it requires a password can send a communication to gain access. I strongly suggest for any account that has sysop privs on the node that you force a password on _all_ connects and that you only grant access via internet/amprnet to those who request a password for security reasons if anything at all. Because I feel this is security related, I'm making this a release. Fixed a bug in the install routine for the man pages. The default install for man pages was /usr/man, now it's /usr/share/man. I also updated the manpage for node.conf.5 and re-gzipped it. 24/10/2006 v0.6.5 After a nudge from Stefano in Italy, I reintroduced a method in which one user on the node can send a brief "msg" to another. The command once was "talk" and still is on node (or if you prefer linuxnode that Tomi has set the standard for!). For the sender, they get a full status report as to what happened to their "msg" once the "enter" key is hit. For the receiver, if they're truely idle on the node, the message will pop up on them and the prompt will not return until they acknowledge receipt of the msg by hitting the "enter" key. Also note that a system bell will return on both sides, or just the sender's side *if* the msg wasn't delivered. Since this acts sort of similar to today's Instant Messaging world... I figure "what the hay they play noises too". I still stand on the theory that if one wishes to engage in keyboard chat, they should make direct TNC<>TNC connects or use convers but Stefano made me rethink this and I can see how it could be used for one user to "ping" another user with a msg saying "hey meet me on conv channel 32767 and see if we can wake the sleeping sysops!" :-) Originally this was part of Morgan's security report filed back in 2003 (what? me procrastinate? LOL) so with convers so easily available to URONode as a plugin I felt it just as simple and quicker a fix just to remove "talk". I renamed the command to "msg" since you're really just sending a message and not really "talking" to the remote end. Fixed the help files a bit to move talk.hlp to msg.hlp, and edited the content of such to fit the re-introduced command. 26/10/2006 v1.0.0 First off, many thanks to Stefano and Alessio for their interest and contributions to URONode. They've inspired me to help improve this spinoff of AWZNode (which is a spinoff of FlexNode which is a spinoff of node which is a spinoff of.... :-} ) Stefano asked me a while back about putting in compression for Telnet and Connect commands. Considering so many have broadband now on their wired links, I somewhat felt this to be unnecessary, and here in the U.S. ax25 based transmissions are supposed to be in plain text... so between those two major reasons I had thought it best to just eliminate this feature a while back... not to mention security issues with zlib that were going on. Since those have been cleared and in respect to the motivation Stefano and Alessio have given me with their interest in this project I thought it only nice that I try and fullfill their desires as best as I can. Recieving compressed requests into URONode was always there but not an outgoing client... so I spent a few moments and coded one back into the front end. Needless to say, ZTelnet and ZConnect (as with node) are in URONode now as client gateway commands. You need to set up another inetd/xinetd instance on an unused port that calls "node -c" to enable receiving compressed connections via telnet. Make a new alias/ssid for ax25/netrom if you wish to support ZConnect client requests. Failure to do such will result in the remote end getting an error message. 27/12/2007 v1.0.1 After a heated discussion with w0rli (as if that has never happened on packet before, and him accusing me of knowing nothing about packet or it's protocols) I decided to keep him happy while working on a system that's linked to one of his. Hank feels that by having a login screen this makes a node an application. While I can understand how he determines this in his one-sided point of view, I still disagree with it but can appreciate his concerns. Apparently he has never logged into a backbone router at an ISP and seen a cisco MOTD file... or is a backbone core or border router not a node on a network? :) In any event, I decided that I'd make the whole login sequence of displaying the node version and /etc/ax25/node.motd file an option to the node sysop upon running the ./configure script. Along with not displaying a MOTD file, the default FlexNet style prompt of "=>" will also not display. This will make URONode act more like Hank's snos and like TheNet X1J-4 (with the "welcome" message flagged off upon connect). Thanks are given to w0rli for this idea. I also added a flag for the "NODE} Goodbye." string so that if you do not have a MOTD displayed, it will also halt the display of the node front-end saying bye to the user. 01/01/2008 v1.0.1a I decided that I'd go through the code and search for more cases that if MOTD is *not* defined, to ignore any and all reconnect flags, whether or not they're defined for external plugins (ie: axMail) or alias commands in the /etc/ax25/node.conf file. If during configure you decided to add MOTD during the option questions, then the node will infact act more like a user application including allowing reconnects etc. I had thought I fixed the man pages install, appearantly I never saved it. This should now be fixed. My apologies. * Author's Note: If you're linking the node to systems such as SNOS, or you're on a very busy network, or if you forward with other BBS systems who for whatever reason feel the need to connect to your node first before connecting to the BBS (which I feel is unneccessary but happens), I strongly suggest that you do NOT enable the MOTD which is the default option now in the configure script. *** Important: I just don't have the time to clean up all the gcc-3.x compiler warnings however URONode compiles just fine under gcc-2.95 so I made a decision to force gcc-2.95 for compiling URONode under. Configure was rewritten to check for this, and if it doesn't it will instruct you on where you can get a copy. This will not interfere with your installed copy of gcc-3.x if you so have it. I have verified that URONode compiles quite cleanly under gcc-2.95 and I do have both versions on my box: root@schlitz:/usr/bin# ls -al gcc lrwxrwxrwx 1 root root 7 Jun 25 00:00 gcc -> gcc-3.3 root@schlitz:/usr/bin# ls -al gcc-* -rwxr-x--- 1 root root 69960 Mar 10 2004 gcc-2.95 -rwxr-x--- 1 root root 85196 May 24 2005 gcc-3.3 As you see above, gcc by itself is just a symlink to the latest version of gcc-*. Ensure that gcc-2.95 is in your executable path. 23-24/01/2008 v1.0.2 Huge news! I finally got off my duff and cleaned up compile warnings. URONode will now compile fine on gcc-4.1 and under! This was just something that was under my craw for a very long time, but not that critical enough so you can really ignore the above notes in regards to GCC. I ended up also making some modifications to the configure script, Makefile and config.h. Part of cleaning up some of the compile errors was a dupe conflict between library "log" routines and the internal node "log" routine. URONode now has it's own node_log() routine as to keep it seperate from library log routines. There's no change in it writing to syslog for you, just the function was renamed to avoid compiler warnings. Many files were updated due to this. **Man file for uronode is now called "uronode", not "node". The binary made now is also "uronode".** This is *very* important because when you run "make install" or "make installbin", your inetd.conf/xinetd files will need to be changed to spawn the new binary, and your config within /etc/ax25/ax25d.conf will also need to be changed from calling "node" to call "uronode" now!! If you do NOT do this, you will be stuck running either an older compile or it won't launch at all. Please see the examples in the INSTALL file for help on how to configure this properly. In the future I may change the config files from node.* to uronode.* too. The advantage of doing this would be tri fold: 1) it'd allow sysops to compare and test URONode side by side with another package such as Tomi's LinuxNode 2) sysops could offer both flavors of a "node" to users if they so desired to do such. 3) a sysop might prefer to have 2 compiles of URONode... one with full MOTD compiled in, one without. Those who know me, know I believe in allowing a sysop to have the freedom to pick and choose just how they run their nodes... and this just adds to their options. I do however discourage doing this unless it's for testing reasons but c'est la vie. **** Actually, I figured why wait to change files around, so I changed all the config files from "node.*" to "uronode.*". Now if you're doing an UPGRADE, you'll need to rename your config files in /etc/ax25/node.* to /etc/ax25/uronode.* or else you'll have issues with some routines. I also deleted the *.ex files and changed installconf so that the proper files get copied into /etc/ax25 for new installs. I also changed all the man page files that were node.* to uronode.* As much as it sorta kinda but not really pained me to do this, I decided that it may be cool to have *something* to let the user know that their outbound ax25-type connect is via flexnet, so I added a routine in gateway.c which checks the connect type and if the request is via FlexNet, the user will see the standard "link setup..." message like they would on a flexnet node, followed by "*** connected to ". This MAY have an adverse affect on FBB forwarding since FBB looks for "Connected..." instead of "*** connected...", but there's ways around that in your FBB forward file. 25/01/2008 v1.0.3 *Big News* For Debian and (K)ubuntu users, I've decided to make a release of uronode as a .deb package. This is my first time doing this and I'm really not that comfortable with rolling it out officially since it's my first pre-packaged binary so here's what I suggest you do if you decide to use it: cd /etc and tar cvf ax25/* ax25files.tar dpkg -i /path/to/uronode*.deb tar xvf ax25files.tar For now this will preserve your current config as the .deb package *will* overwrite your current files in full including configs! YOU HAVE BEEN WARNED! Found a bug in the WHO command when MOTD was disabled. Currently if you don't define that, then the WHO command is deactivated and not compiled in. MH works fine and should be enough to be used to track recent connects to your node. Discovered a bug in the newly introduced FlexNet style cosmetics where after "link setup..." if the connect request times out, error isn't printed on a new line. I wrote a new string to push to the user so that if their request does time out, it matches that of FlexNet's timeout string while leaving vanilla ax25 and netrom timeout errors the same. Again, these strings will inform end users the type of outgoing request was made whether it was FlexNet or vanilla ax25. While I was add it, I decided it would be helpful to end users who are making FlexNet links to show which ax25 interface is being used for connects similar to that of how Xnet shows connect requests. The interface will be displayed in parentheses () such as: Link setup (ax0)... so if the link fails, the user can see which interface to try a direct ax25 connect request out from. I think I fixed a slight bug in flexd.c where if the LO.FPR and C.FPR weren't formatted just right, it'd exit prematurely and issue a false error. Apparantly the buffer was set a bit too high and captured too much to parse, so I lowered "buffer" from 1024 to 512 and it now appears to be fine. A "bug" was reported about the config of the backend of URONode when infact the bug was with ax25d.conf and nrports. Remember, when you configure your node, ALL your SSIDs for ax25, netrom ports, and axports *MUST BE UNIQUE* if you have RF links to native netrom nodes. Failure to do such will result in some flooding issues because if an ssid in axports, ax25d.conf and nrports is shared, an X1J node connecting into URONode will result in the ax25 link layer being seen as a user and not a network socket. You'll ping-pong the node with X1J in almost an endless loop. *You have been warned!* 22/02/2008 v1.0.4 I decided to make the node text more "technically correct" in it's display of things... mainly in regards to "ports". We don't have "ports" per say but we do have "interfaces". Needless to say, any reference to "port(s)" has been changed to "interface(s)" including the former Ports command. This has been replaced with the new INTerfaces command. Users now will show the "interface" a user may be coming in on if it's ax25 or if inbound from FlexNet. The PIng command has been shortened to Ping now with the refactor of the "Ports" command. Ping now only requires "P" to ping another node. *Note: this will be the last release for a while as I'm moving and won't have a server or test bed to test with. 10/05/2008 v1.0.5r1 The move has completed and of course in my own sick and twisted mind, I have decided to do a release that I call version 1.0.5 release candidate 1. This is a minor release but it's something I despirately wanted to do for a while and was just sitting like an itch under my skin to do, and sometimes you have to just take a break from it to clear the noggin and get the code the way you want it. What was bothering me was the fact that not one flavor of a linux-node complies with that of the Software 2000, inc specifications of Net/Rom... and I desired to be the first to do such... yay me? In any event I went through the code and made changes to the following files: command.c, config.c, extcmd.c, gateway.c, node.c, node.h, and system.c. What this does for you is makes your URONode behave more to the specifications of Net/Rom regardless of how you define the MOTD flag. If you define the MOTD flag, the node will continue to behave as it has along, however it forces it in "off" mode when the incoming connection is Net/Rom based. This is extremely useful if a robot script (such as FBB forwarding) is used to go through your node. The decision of making this a release candidate was because I'm sure I may have missed testing some of it's behavior and will have to do some cosmetic and/or bug fixes.. so if you find any, please report them to me and I'll do what I can to fix it. Source, .deb, and .rpm packages are available at the typical location of ftp://ftp.uroweb.net/pub/ax25/ ...enjoy for now! 12/05/2008 v1.0.5r2 I had this really irritating bug that appearantly I just never noticed all this time when HAVEMOTD was undefined. Thanks to some assistance from K2MF, I was able to identify and fix this bug. Inside the main loop statement for the node, when a user disconnected, it was adding an extra frame to the stream that contained only a line feed. Looking back at this, I did this due to the fact that X1J handles it's output to the terminal differently than does any other node that I'm aware of. In any event, taking out this line feed somewhat caused other outputs of text to lack a line feed when it needed it... so this meant changes in command.c, extcmd.c, gateway.c, ipc.c, node.c, system.c, user.c and maybe more that I can't quite recall as of this writing. The good news is that I did fix 2 minor bugs that were under my skin! One minor bug was that when a nodes or destis list ended with a row of 4, an extra line-feed was displayed. While this bug still exists under certain conditions, it's no longer present during netrom connects. Also during a netrom disconnect, an extra line-feed no longer sends to the remote node thus making it more Software 2000, inc. compliant. I'll fix the previous mentioned bug for release 1.0.6 sometime. 21/05/08 v1.0.5r3 Fixed some screen cosmetics that I introduced while making the node more Software2000 compliant... I'm sure I missed a few more. ***Big News*** I've finally tracked down and fixed the remote escape bug (I think)! What I saw was happening was that the SIGPIPE handler wasn't being executed properly and it appeared to be waiting for more data which it never received. I added a quit_handler routine in the main loop which now will execute a node_logout(), flush out the IPCs, log the event to syslog, and close out the application properly. Due to this bug lingering in all flavors of *node for linux, and not having the resources to fully stress-test this, I'm going to leave this as release candidate 3 for now until (hopefully not!) someone reports that this routine is causing ill-behavior. 26/05/08 v1.0.5r4 There was a LOT of cosmetic changes in this one which caused me to add a LOT of conditional calls into the code, many of which I'm unsure whether or not it'll fly properly under every condition so your milage will definately vary depending on your specific setup! Since URONode has become very popular within the EastNet packet system I decided to make the node appear for both the ax25/FlexNet side or its NetRom side, dependant on how the user logs into the node. Because of the massive changes in structures, rather than listing them , the above description should do. **Note: you MUST add a new line in uronode.conf that defines FlexId XX#XX-## Either take yourcall-ssid from ax25d.conf OR if you're linked to a node that does flexnet, use yourcall-ssid as it is on the remote flexnet system. If you don't, and a user connects in via telnet or ax25/flex you'll display (null) to them. Also: if you added a } after your NodeId callsign-ssid, remove it. It's been hardcoded into URONode now. I decided to mute the banner section of the login sequence however it will still display your MOTD if it's defined during ./configure. If there's a demand for it, I may add it as a configurable option. Even though I put r4 out for download, I did find a couple minor bugs which have since been fixed. 29/05/08 v1.0.5r5 In a nutshell, if the user connects to your URONode via NetRom, then they will get standard NetRom prompts with "ALIAS:CALL-#} " as a result header to all of your commands with the exception of FlexNet gateway connects. Now in uronode.conf, a *new* line _must_ be added for FlexId. The parameter is: FlexId An example since my URONode is on FlexNet as ssid 3: FlexId N1URO-3 Also note that the need to have a closed bracket "}" after your NodeId now is not required and should be deleted. I finally got off my butt and hard-coded it into the software. The Version routine was also changed depending on how the user is connected in. If the incoming connect is made using NetRom, then the standard prompt is displayed. If the incoming connect is via any other type of link, then a columnized display is made showing Software version, NodeId, and FlexId in hopes of eliminating confusion to the end user. While in the midst of all the above, I did find some cosmetics to fix. Before I make this release candidate an official, I'm curious as to whether or not anyone would object to me eliminating some of the standards of the login banner of the node (non-NetRom displayed). Please let me know and I'll make the necessary changes if need be. -- actually I already decided to do this. I added a new routine in util.c which now will give the end user the type of prompt based upon the type of connection. The default for ax25/FlexNet is: "=> " (note the space after > unlike Flex) for NetRom is: "ALIAS:CALL-ID} " for tcp/ip is: "usercall@hostname:/uronode$ " With the new routine, I changed the main loop in node.c from defaulting to Prompt simply to using node_prompt(). 01/06/08 v 1.0.5 URONode version 1.0.5 is now considered to be "final". With the new month is a new final release, and in this release it has more face-lifts than Joan Rivers hihi! I added a new routine in the configure script which will prompt you for telnet colored routines... yes we have ANSI! Now, a couple things about pushing ANSI code: 1 - consider network bandwidth if you have IP users via RF 2 - many windows apps such as WinPack do NOT support ansi. This is NOT a fault of URONode, but that of the Windows application. If you find you have trouble decoding ansi, try PuTTY or use HyperTerminal in telnet mode. Ansi is hard disabled for ax25/Flex and NetRom connects. I also added ansi codes for "Nodes" and for "Desti" lists commands if the inbound connect is made via IP. Added an "EXit" command for users in IP mode since you now feel like you're in a bash shell... just a 'force of habit' thing. Bye still works. Fixed a bug introduced with the new node_prompt changes to node.c. If the user was required to enter a password outside of being on the localhost or amprnet, the prompt displayed twice... this is now fixed. I also found and fixed soem more cosmetics that I considered to be wrong. This bug was driving me insane as to why it was doing this, but I finally tracked it down. Found and fixed another bug where if the user's permissions were set to a perm "escape off", prompts didn't properly function. Made a change to nodeusers where now if no one is on the node, it'll say such instead of simply being blank. A note about ansi: linux shells will decode ansi pretty good as will old DOS based terminal programs such as Qmodem, Telix, etc. If you use a raw terminal such as xNOS, you'll need to insure you load ANSI.SYS in your C:\CONFIG.SYS file and reboot so the terminal will decode ansi. Windows telnet *will* decode ansi as well however since XP, local echoing by default is set to OFF. You can CTRL-] and type: set localecho, then hit enter twice and you can get echoing back on. If you use something such as WinPack which doesn't decode ANSI, please do NOT contact me! Contact the authors of WinPack and report the lack of ansi as a bug. I also am including a copy of axdigi from the original FlexNode package. This is compiled as a static binary and a copy of axdigi.conf IS also included in the source package, but I won't package it with the .deb or .rpm packages... however I do reserve the right to change my mind :) Static binary packages are compiled with the following options OFF: Rose support All other options are compiled in. 04/07/2008 v1.0.6 Found and fixed a bug in the Who routine where a netrom prompt was merging with the last entry of a list even if the connect was not netrom. This change was made in system.c. Added some more ansi routines if #defined COLOR. Here's the schema: Connects display in green as in "gateway go" Reconnects display in red as in "gateway stop" Commands display in bright white Netrom Nodes (full list) in bold cyan FlexNet destis (full list) in yellow Current users in magenta Aborts and timeouts blink bright red Logouts in low cyan I'm making the color schema a bit more consistant through out the application. While doing such, I'm cleaning things up so that just the headers are in color, not the actual results so that if one is NOT decoding in ansi (and again if not that's a fault of the client NOT of the node) the node won't appear as offensive. Found a bug in the auto router where it wasn't parsing the digi path from the mheard table, HUGE credit goes to Barry K2MF (of MFNOS fame) for supplying the code that properly handles this. Fixed. Did a lot of clean-up for how the node/shell responds dependant on how the user connects in. Many changes done in gateway.c, extcmd.c and node.c. Now made ANSI a flag in uronode.perm... I may change this later however because of such, it forced me to have to make a new nuser_list routine in command.c as well as move node_prompt from util.c elsewhere so command.c seemed like the best choice. Setting the user bit +512 will now grant them telnet ANSI color. Not giving them this will turn it off. I'd like to make it an end-user toggle so that depending on which client the user is coming in with they can choose online to get color or not. The user perm flag replaces defining Color during the configure script. Defining MOTD now serves multiple functions: 1) Display of the MOTD screen/file 2) Display of prompts for all interfaces 3) Reconnect back to the node upon a gateway link out I suggest compiling with MOTD on, which configured by default in the .deb and .rpm packages. Changed some of the technical correctness of the node in regards to IP functions. Ping now returns ICMP Echo request/reply messages and IP based connects out now show the service/port that the connection request is being opened to. Added color schemas to the NetRom and ax25/Flex interfaces if the user requests it to be on. The same color schema is used on all 3 interfaces. Fixed a very irritating bug that some folks have reported on which when do_ports() was called, and the axport description was over 42 characters in length, do_ports() was *not* properly truncating the additional characters, and making things looks a bit sloppy. A similar bug exists in LinuxNode =< 0.3.2. Note: In your axports file, you *MUST* have a tab after the window digit before writing your interface description or else the parser will consider the spaces as just that... empty spaces! You have been WARNED! Updated uronode.conf and uronode.perms files to show examples of recently added features. Long overdue: Updated the MAN pages!! I'm so sorry for letting these slide! It really is hard enough trying to keep track of things in this file, never mind actually documenting it in a manual page or two hihi! Found and fixed a bug in the logout routine where a false error was being reported that the shared memory segment (IPC) couldn't close. Somehow this was introduced by me duping the lines in the routines so that it was actually trying to close the shared memory segment twice! I guess in reality, the log error was indeed correct since there was no second segment to close hi! Added a "make update" option to the Makefile. This option *must* be used in version release sequential order or else it may fail! Fixed a cosmetic bug in the way NetRom nodes introduced by me when I created multiple interfaces. The word "NetRom" appeared twice in the header when a user would request a Nodes list. 15/11/2008 v1.0.7 Made some cosmetic changes to text and ansi color displays, still a few more to do but not critical so it gives me an excuse to do a maintenance release one of these days hihi! With the assistance of the great and mighty , the of c coding knowledge, I was able to incorporate a loop detection system when making FlexNet or ax25 connects... now if there's a loop in the outbound connect request, the user will be informed of such which includes a system bell (beep). I thought about adding a loop connect block such as with FlexNet however in the case of axip/axudp links many links may share the same interface which really would be unfair to the user trying to gateway out that's also coming in from the same axip interface. Now for the big news of this release: By request of Bob Anderson K2BJG, I wrote a kluge for flexd.c which now requires 2 additional fields in /etc/ax25/flexd.conf - MyGate and MyRange. Inside flexd.conf, MyGate is your neighbor FlexNet gateway without ssid, and MyRange would be the full ssid range of the FlexNet gateway you poll. This will add your FlexNet gateway into your local desti table complete with SSID range and give it a ttl of 0 since there's no true ttl polling going on... but there is a catch to this: you MUST add each ssid of the remote FlexNet system into uronode.routes as a direct link or else connect requests will fail because the connect will try to digi off of the remote FlexNet system to itself. I don't know if I agree with this yet or not as a local FlexNet system never shows itself in it's desti table, and that's what K2BJG has asked me to do with URONode. As I said, for now this is all a kluge but it does appear to work if instructions are followed verbatim. Examples: MyGate N1URO MyRange 1-11 Made a change in the Makefile so that the axdigi module does NOT copy over by default. Now you MUST do this manually and add it to your scripts. Not everyone would wish to use this so why force more junk in a directory? :) -------------------------------------------------------------------------- See CHANGES.2 for more notes in regards to changes.