[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: Exit points and next version



Hi, everyone.

So the challenge of adding exit program checking to FTPAPI, and of breaking
the FTP API into smaller modules has borne fruit, and the new product is in
testing phase.  It'll be a couple of weeks before the code is released, but
I wanted to put out this request for comments so that if anything important
has been overlooked, it can be addressed.

At present, here are the key changes.  I would greatly appreciate any
comments / questions that come from this.

Also, I'd like to understand the approach/methodology used for submitting
new versions...

---

The API is now broken into these modules:
   Externally-exposed routines (such as FTP_Open, FTP_Put, ...) are in
FTPAPIEXT
   Session management getters and setters are in FTPAPISSN
   Internal workings (such as tcp_conn, data reformatters, translations,
...) are in FTPAPIINT
   Exit Program checking is in FTPAPIXTP
   All of these modules share a single FTPAPIINTH header (copybook)

---

Where reasonable to do so, message constants have been removed, replaced by
message IDs (and FTPAPIMSG message file has been added to the project).  The
60-byte message retrieval mechanism remains in place, with a new optional
parameter (default *Off) that allows longer text to be returned (varying
length, up to 512 bytes.

---

For backward compatibility, socket handle continues to be used for session
selection by the externally-exposed routines. However, where reasonable to
do so, "sessions" are internally managed through Session Index (named
ssnIdx), and there is greater separation between the use of "socket" and
"session" within the code.

---

The use of MODS is removed, replaced by qualified, based data structures and
on-the-fly memory de/allocation.  (Session management using MODS among more
than one module proved to be far too cumbersome and error prone.)  This
raises the OS requirement to (at least) V5R1.  The session attributes are
wholly contained within the FTPAPISSN module, and are accessible only
through setters and getters.

Emulation of the IBM-supplied FTP Client's usage of Exit points is
controlled by calling setSysExitPtUsage(*On | *Off).  If this procedure is
not called, this emulation does not occur.  Since IBM's implementation
supports the rejection of activity at the session level, functions
setGlobalAbort() and getGlobalAbort() have been introduced to provide
similar control.  Present code includes code like this every time
initFtpApi() is referenced:
   initFtpApi() ;
   if getGlobalAbort() ;
      return -1 ;
   endif ;
   ...

Also, key points in the code attempt to ensure that nothing "useful" is done
if Global Abort has been set.  To that end, the following procedures contain
the same "if getGlobalAlert()" block at their tops:  opnFile()  recvLine()
sendLine()  sendLine2()  resolveIP()  tpc_conn()

I can envision other circumstances that would cause us to want to
setGlobalAbort() but no others besides rejection of session initialization
have been implemented at this time.

---

Several of the procedures have been changed from CONST CHAR parameters to
pointers with attributes VALUE OPTIONS(*STRING).  This eliminates the
differences between certain functions (like FTP_Conn and FTP_ConnLong).

---

Large sections of code have been converted to free-form.  I expect the
remaining to be free-form before final release, in about two to three weeks
or so.

Dennis Lovelady
http://www.linkedin.com/in/dennislovelady
--
"A fashion ten years before its time is indecent. Ten years after its time
it is hideous. After a century, it becomes romantic."
        -- James Laver 


> Someone at IBM wrote an example retrieve and call exit program. So the
> first step would be fairly simple
> 
> http://publib.boulder.ibm.com/infocenter/iseries/v6r1m0/index.jsp?topic
> =/apiref/ileRetrieveILERPG.htm
> 
> Add this code into the ftp procedures. Ignore all results! And presto,
> all is good. :)
> 
> It appears that initFtpAPi is called from all exported procedures. With
> a little bit of work to pass the appropriate functions, it might be
> possible to add the check there. Since initFtpApi doesn't return any
> parameters, error code would need to be added. Hmmmm, starting to get
> to be a bit of fun!
> 
> Good luck if take this on.
> 
> 
> > -----Original Message-----
> > From: ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx [mailto:ftpapi-
> > bounces@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of Dennis Lovelady
> > Sent: Thursday, September 30, 2010 4:07 AM
> > To: 'HTTPAPI and FTPAPI Projects'
> > Subject: RE: Exit points
> >
> > Scott, thanks for your reply, and I quite agree with you!  This is
> road
> > well
> > traveled between me and the other team involved.  This is the same
> > group
> > that has completely disabled all CPYSRCF capability via public
> > authority for
> > God knows what reason, blind to the fact that CPYF can accomplish the
> > same
> > end.  I cannot use option 3 on a PDM screen to copy a source member,
> > but I
> > can create a new source member and then copy the original into that.
> > This
> > is just one clear example of the knowledge base and need for control
> > from
> > that group.
> >
> > They want their bankey.  If it makes them comfortable and makes them
> > feel
> > like they're in control, then so be it.  You are welcome to take that
> > battle
> > up with that team - I'll provide phone numbers.
> >
> > My goal was not to seek permission, it was to find out how to provide
> > that
> > bankey.  I will have a look at the easy400 suggestion later today.
> >
> > Dennis Lovelady
> > http://www.linkedin.com/in/dennislovelady
> > --
> > "United Nations: Where America feeds the hands that bite it."
> >         -- Gregory Nunn
> >
> > > Quite honestly, I don't see "securing" a client program to be a
> means
> > > of
> > > providing security.  That goes double for one that's open source,
> > where
> > > the user can go in and change the way it calls the exit point!
> > >
> > > 1) What's to stop the user from downloading/installing another FTP
> > > client program?  (None of the ones in PASE understand exit points!)
> > >
> > > 2) On your Windows or Linux box (where FTP software is easy to come
> > by)
> > > would you rely on an exit point if such a thing existed?   When the
> > > user
> > > can easily download and install another program?  Wouldn't you
> think
> > > the
> > > whole idea of an exit point is kinda silly?
> > >
> > > 3) Unlike the IBM client, FTPAPI is designed for use only from a
> > > computer program.  i.e., a user will never use it directly, and
> it's
> > > operation will always be automated by a programmer's RPG program.
> > > Given
> > > that, isn't the security supposed to be provided by the program
> that
> > > calls FTPAPI?  Rather than FTPAPI itself?
> > >
> > > 4) If you add exit point support to FTPAPI, what's to stop a
> > programmer
> > > from writing their own FTP client and bypassing the exit points
> that
> > > way?
> > >
> > > I guess, to me, there's a pretty big difference between a tool
> > designed
> > > for the user to use, and a tool designed only as an API to be
> called
> > > from programs.
> > >
> > > Having said all of that...  if you really want to integrate it with
> > the
> > > IBM exit point system, feel free to write the code and contribute
> it
> > > back to the project.
> > >
> > >
> > > On 9/29/2010 6:56 PM, Dennis Lovelady wrote:
> > > >
> > > >     Hi, folks, this is my first post here.
> > > >
> > > >
> > > > As a preface, I have searched the archives for "exit program" and
> > for
> > > QIBM_QTMF
> > > > _CLIENT_REQ and for PowerLock with not much result.
> > > >
> > > > There was a question from someone in 2004 asking why settings in
> > > PowerLock have
> > > >   no apparent effect on FTPAPI.  Apparently the poster didn't
> know
> > > how PowerLock
> > > >   works (or how it doesn't, in this case).  Answer: PowerLock
> > control
> > > is install
> > > > ed at the QIBM_QTMF_CLIENT_REQ exit point.
> > > >
> > > > Until I started working with FTPAPI very recently, I had assumed
> > that
> > > IBM someh
> > > > ow tied that exit point to the FTP ports. (Naive, now I think
> about
> > > it.)  Appar
> > > > ently instead, the FTP client program itself makes the necessary
> > > hooks.
> > > >
> > > > I mentioned on another list that our auditors wouldn't allow this
> > > program on on
> > > > e of the main systems I work with since it seems to lack the kind
> > of
> > > control th
> > > > at they want (for example, some users can GET, some can PUT or
> GET,
> > > and some ca
> > > > n only do DIR operations).  (This is all managed by PowerLock
> > > controls at this
> > > > point.)
> > > >
> > > > So my question is, Have any on this list made an attempt to fit
> the
> > > IBM exit po
> > > > ints with FTPAPI? (I have no clue how that would be done, nor if
> it
> > > even *can*
> > > > be done in a supported manner.)  I'd love to use this decidedly
> > > better solution
> > > >   but am stymied except on my development machines.
> > > >
> > > > I appreciate your responses.
> > > >
> > > >
> > > >     Dennis E. Lovelady
> > > >     AIM/Skype: delovelady      MSN: fastcounter@xxxxxxxxxxxx
> > > >     [1]www.linkedin.com/in/dennislovelady --
> > > >     "Since I moved to suburbia I found out the purpose of those
> > > railroad
> > > >     timetables.  Without them there would be no way of knowing
> how
> > > late
> > > >     your train is."
> > > >            -- Gregory Nunn
> > > >
> > > > References
> > > >
> > > >     1. http://www.linkedin.com/in/dennislovelady
> > > >
> > > >
> > > >
> > > >
> > > > -----------------------------------------------------------------
> --
> > --
> > > --
> > > > This is the FTPAPI mailing list.  To unsubscribe, please go to:
> > > > http://www.scottklement.com/mailman/listinfo/ftpapi
> > > > -----------------------------------------------------------------
> --
> > --
> > > --
> > >
> > > -------------------------------------------------------------------
> --
> > --
> > > This is the FTPAPI mailing list.  To unsubscribe, please go to:
> > > http://www.scottklement.com/mailman/listinfo/ftpapi
> > > -------------------------------------------------------------------
> --
> > --
> >
> > ---------------------------------------------------------------------
> --
> > This is the FTPAPI mailing list.  To unsubscribe, please go to:
> > http://www.scottklement.com/mailman/listinfo/ftpapi
> > ---------------------------------------------------------------------
> --
> -----------------------------------------------------------------------
> This is the FTPAPI mailing list.  To unsubscribe, please go to:
> http://www.scottklement.com/mailman/listinfo/ftpapi
> -----------------------------------------------------------------------

-----------------------------------------------------------------------
This is the FTPAPI mailing list.  To unsubscribe, please go to:
http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------