Jump to content
Stuart

Using TIPI socket interface in assembler (was: copying E/A 3 problem)

Recommended Posts

It is not obvious to me with these IAC commands, anything I could send that would abort the IAC sequences. Am I not seeing something?

 

TELNET COMMAND STRUCTURE

 

All TELNET commands consist of at least a two byte sequence: the

"Interpret as Command" (IAC) escape character followed by the code

for the command. The commands dealing with option negotiation are

three byte sequences, the third byte being the code for the option

referenced. This format was chosen so that as more comprehensive use

of the "data space" is made -- by negotiations from the basic NVT, of

course -- collisions of data bytes with reserved command values will

be minimized, all such collisions requiring the inconvenience, and

inefficiency, of "escaping" the data bytes into the stream. With the

current set-up, only the IAC need be doubled to be sent as data, and

the other 255 codes may be passed transparently.

 

The following are the defined TELNET commands. Note that these codes

and code sequences have the indicated meaning only when immediately

preceded by an IAC.

 

NAME CODE MEANING

 

SE 240 End of subnegotiation parameters.

 

NOP 241 No operation.

 

Data Mark 242 The data stream portion of a Synch.

This should always be accompanied

by a TCP Urgent notification.

 

Break 243 NVT character BRK.

 

Interrupt Process 244 The function IP.

 

Abort output 245 The function AO.

 

Are You There 246 The function AYT.

 

Erase character 247 The function EC.

 

Erase Line 248 The function EL.

 

Go ahead 249 The GA signal.

 

SB 250 Indicates that what follows is

subnegotiation of the indicated

option.

 

WILL (option code) 251 Indicates the desire to begin

performing, or confirmation that

you are now performing, the

indicated option.

 

WON'T (option code) 252 Indicates the refusal to perform,

or continue performing, the

indicated option.

 

DO (option code) 253 Indicates the request that the

other party perform, or

confirmation that you are expecting

the other party to perform, the

indicated option.

 

DON'T (option code) 254 Indicates the demand that the

other party stop performing,

or confirmation that you are no

longer expecting the other party

to perform, the indicated option.

 

IAC 255 Data Byte 255.

Share this post


Link to post
Share on other sites

I've got a question regarding Telnet's use of the IAC control bytes.

 

Is there specific bytes I can send to the other server that would instruct it to not send IAC bytes in the data stream?

 

This is not a problem for general Telnet BBS access displays. Where the problem becomes is in file transfers where I have to filter. The 9640 News BBS (9640news.ddns.net:9640) is Windows software that has IAC bytes in the data stream I have to manage. FusionBBS and likely Heatwave, do not have the IAC bytes in the data stream that need to be managed.

 

Beery

 

 

 

Seems like you are hosed if you don't know when connecting to something if it is telnet or just a socket. You can send your own IAC commands to the server upon connection, and it should respond. If it doesn't, then I would presume you are on a raw-socket. Or you can assume the lack of negotiation of IAC commands when connecting indicates a raw socket.

 

If you aren't on a raw socket, then you have to know what the rules are for file transfer. ? Is it layered over telnet, or was telnet paused while file transfer borrows the socket?

 

[email protected]

Share this post


Link to post
Share on other sites

 

 

Seems like you are hosed if you don't know when connecting to something if it is telnet or just a socket. You can send your own IAC commands to the server upon connection, and it should respond. If it doesn't, then I would presume you are on a raw-socket. Or you can assume the lack of negotiation of IAC commands when connecting indicates a raw socket.

 

If you aren't on a raw socket, then you have to know what the rules are for file transfer. ? Is it layered over telnet, or was telnet paused while file transfer borrows the socket?

 

[email protected]

 

I am connecting to a Windows based, Telnet based BBS software package. All access through the menus to my knowledge never generates the IAC >FF byte so no TI'ers have ever had to deal with that.

 

What I do know is someplace between the BBS software, and to the TIPI send/receive msg interface, the IAC >FF byte is sent twice. This does not occur on a BBS such as Heatwave BBS or FusionBBS. Thus far, the only time I have seen that byte sent is during a file transfer on Telnet based BBS software packages.

 

When I go to transfer a file, it is on the same socket connection. With a file transfer, the >FF byte can be anywhere so I have to ignore the first >FF byte, which then sends a second >FF byte that I then handle in the data stream. I discovered yesterday I also have to deal with the >FF byte when I transfer a file with 255 or more blocks as the record number is also sent in between those blocks during XMODEM transfers.

 

If there is a command I can send to turn off the IAC sequence handling on the server side from the terminal program, then when I connect with these BBS's, I could send a string somewhere just after connecting so the individual user does not have to worry about the setting should they decide to transfer files. Otherwise, it will need to be a configuration option or possibly a "toggle" during the file transfer process after "x" number of errors. With the WiFi based modems, a user can adjust their dialing strings to appropriately handle the IAC handling. With the TIPI, that is not an option I am aware so thus trying to determine a software solution on the terminal side of things that does not require a user to worry about the setting.

 

Beery

Share this post


Link to post
Share on other sites

You should look outside this forum.

 

This problem is not a TIPI, or Assembly language problem. Or in any real way related to the TI.

 

But rather, how do you overlay xmodem over telnet. Maybe something in the docs for the brand of BBS host software you are connecting to.

 

Just a suggestion.

 

[email protected]

Share this post


Link to post
Share on other sites

You should look outside this forum.

 

This problem is not a TIPI, or Assembly language problem. Or in any real way related to the TI.

 

But rather, how do you overlay xmodem over telnet. Maybe something in the docs for the brand of BBS host software you are connecting to.

 

Just a suggestion.

 

[email protected]

 

It is not a TIPI issue, however, for anyone writing any software that may be using the TIPI interface with Telnet capability in the future, this area is a good repository for said information so they may not have to learn the hard way as I did. There are probably fewer than 10 programmers that would even pursue something of this nature or effort in our midst on this group. I was hoping someone may have known by chance and I have already started out last evening seeking feedback elsewhere.

 

Beery

  • Like 1

Share this post


Link to post
Share on other sites

Beery, some of what you see (or don't see) is related to how various devices and software handle the IAC sequence. For example, the UDS-10 handles the 0xFF byte internally with no interpretation by the host (computer). Thus it looks like an 8-bit data stream however, on the other side, the -0xFF byte and protocol may be handled by software or hardware.

 

One way I handled this in the past was to toggle between interpreting or ignoring the IAC. If interpreting, check for 0xFF. If a second 0xFF comes through it is a simple escape (i.e., meaning one 0xFF is expected) otherwise try to interpret what is likely a Telnet command. Outgoing 0xFF is easy - just send a second 0xFF. When I was running the UDS-10 in raw mode on Heatwave, I was sending a few IAC commands to help other terminals turn off local echo and set 8-bit mode. The WILL/WONT, DO/DONT terminology can be confusing, just think of it as a conversation/handshake. You're not going to get away from the IAC sequences - you'll need to work through the code to handle them based on your needs. PM me and I'll look for the byte sequences I used and any helper notes at my disposal.

Share this post


Link to post
Share on other sites

Right now, as far as I know, I have the file transfer code working with both sending and receiving files as long as the user knows whether the BBS needs to the user to toggle the IAC "switch" to enable filter or disable the filter.

 

I was just looking for a way to "permanently" disable the use of a software switch.

 

I did discover another XMODEM protocol based on Synchronet's SEXYZ implementation that I do not have turned on with my BBS. So, there are basically two flavors of the XMODEM protocol. What I have thus far not been able to determine is what the "optional" command in the command line string is that needs to be implemented to disable the IAC bytes as the developer notes were limited in that regard for the Mystic BBS implementation. They list things for Zmodem which are not useful, and I am not sure that is an option for Xmodem. It could be just limited to Zmodem.

 

Beery

Share this post


Link to post
Share on other sites

 

What I have thus far not been able to determine is what the "optional" command in the command line string is that needs to be implemented to disable the IAC bytes as the developer notes were limited in that regard for the Mystic BBS implementation.

I am certainly no expert but I don't think you can just turn off the IAC sequence - it is fundamental to Telnet. This is where socket and protocol differences come into play. Or in other words if you are using Telnet, you need to play within its framework.

  • Like 1

Share this post


Link to post
Share on other sites

Matt,

 

Got a new question as I think of other potential uses for the TIPI.

 

On my BBS, I have my router, route port 9640 to a telnet server (my BBS). When my BBS sees it, it picks up the connection.

 

Is there presently any way to determine if someone has made a connection with the PI, and then for the TIPI to recognize such a connection from a running program so a socket can be opened to that port connection?

 

The simplest thing is that it could open up BBS applications, which, when all said and done, I would almost say nobody would use.

 

However, something a bit different could be implemented where notes, messages, etc. could be routed to individual TIPI users and those notes/files/etc. dropped onto a path on the TIPI. Thinking here of some kind of conference type software with file and note exchange between users that had the software up and running.

 

Right now, just in some early thought stages thinking of program ideas.

 

Beery

Share this post


Link to post
Share on other sites

Matt,

 

Got a new question as I think of other potential uses for the TIPI.

 

On my BBS, I have my router, route port 9640 to a telnet server (my BBS). When my BBS sees it, it picks up the connection.

 

Is there presently any way to determine if someone has made a connection with the PI, and then for the TIPI to recognize such a connection from a running program so a socket can be opened to that port connection?

 

The simplest thing is that it could open up BBS applications, which, when all said and done, I would almost say nobody would use.

 

However, something a bit different could be implemented where notes, messages, etc. could be routed to individual TIPI users and those notes/files/etc. dropped onto a path on the TIPI. Thinking here of some kind of conference type software with file and note exchange between users that had the software up and running.

 

Right now, just in some early thought stages thinking of program ideas.

 

Beery

 

no but you could write something in python to do that and then have the ti sit and watch for it

 

Greg

Share this post


Link to post
Share on other sites

Just right a TI fat client to a server you host. Your fat client can download files or data and save them to data files it manages.

I have described before how someone might extend TIPI to support server sockets. But in today's internet that is pretty pointless (in my opinion).

I know how to do it, therefore it is no longer of any value to me.

Or I have also described before that you could just write a script that syncs crap from a standard internet service like an FTP server or something. Just create a convention... If it stores the files under /home/tipi/tipi_disk, then they are available to 4A client software.

You just have to write some software.

There is also the TipiVars functionality that is hosted by myti99.com, but I know very little about it, and you'd have to get ElectricLab to help out... It provides a light weight, namespaced key-value store hosted by his server/database software. With conventions on using keys as queues as well. This is how his Chatti and Chess work.

[email protected]

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...