--DEC/VAX with SFTP_DEFINITIONS; use SFTP_DEFINITIONS; with OS_DEPEND; with USER_PKG; with TEXT_IO; procedure USER_TASK_MAIN is --==================================================================== -- = -- ABSTRACT USER_TASK_MAIN = -- The USER_TASK is the interface between the user and the COMMAND = -- TASK (CET). Each user gets his own copy of the USER_TASK. = -- User input is in the form of a command line. The command is = -- broken up into a REQUEST, a USER_TO_FROM (in the case of a send = -- request this is a destination user; else it is the sender), = -- a COMPUTER (to/from as above), a REMOTE_FILE_NAME (name sent by = -- the remote computer to describe a file), and a LOCAL_FILE_NAME = -- (name where file is or will be placed on this system). Not all = -- arguments are required depending on the REQUEST. The request = -- is routed to an appropriate routine for action. = -- KEYWORDS USER_TASK_MAIN = -- SFTP, Secure File Transfer, Communication, Security, = -- User Interface = -- CONTENTS USER_TASK_MAIN = -- = -- CREATION DATE. = -- 03/30/88 = -- AUTHOR. = -- Paul Sands, The BDM Corporation, Albuquerque = -- REVISION HISTORY. = -- NONE = -- UNIT PURPOSE. = -- Provide interface between User and COMMAND_TASK. = -- UNIT FUNCTION. = -- Process the user request, communicate with CET. = -- EXTERNAL ADA UNITS ACCESSED. = -- USER_PKG = -- EXCEPTIONS RAISED. = -- NO_COMM_TASK - unable to establish a connection. = -- INPUT/OUTPUT. = -- Input from the command line (through OS interface). = -- Messages to the user terminal (standard out). = -- MACHINE DEPENDENCIES. = -- All machine and OS dependencies are in package OS_DEPEND. This = -- package uses intertask communication from OS_DEPEND ( = -- ESTABLISH_INTERTASK_COMMUNICATION and TALK_TO_COMMAND). = -- COMPILER DEPENDENCIES. = -- NONE = --==================================================================== ARGUMENTS : OS_DEPEND.ARGUMENT_TYPE; USER_INFO : OS_DEPEND.USER_INFO_TYPE; REQUEST : REQUEST_TYPE; USER_TO_FROM : USER_NAME_TYPE; COMPUTER : COMPUTER_NAME_TYPE; REMOTE_FILE_NAME : FILE_NAME_TYPE; LOCAL_FILE_NAME : FILE_NAME_TYPE; CET_MAILBOX : OS_DEPEND.TASK_COMM_TYPE; CONNECTED : BOOLEAN; begin -- get starting arguments OS_DEPEND.GET_USER_INFO (USER_INFO); OS_DEPEND.GET_USER_ARGUMENTS (ARGUMENTS); -- parse the command line USER_PKG.PARSE_ARGUMENTS (ARGUMENTS, REQUEST, USER_TO_FROM, COMPUTER, REMOTE_FILE_NAME, LOCAL_FILE_NAME); -- Initialize communication with COMMAND_TASK CET_MAILBOX.TC_MAILBOX_ID := "SFTP_CET_MAILBOX"; OS_DEPEND.CONNECT_INTERTASK_COMMUNICATION (CET_MAILBOX, CONNECTED); if not CONNECTED then raise NO_COMM_TASK; end if; -- process the request USER_PKG.DO_REQUEST (CET_MAILBOX, USER_INFO, REQUEST, USER_TO_FROM, COMPUTER, REMOTE_FILE_NAME, LOCAL_FILE_NAME); exception when NO_COMM_TASK => -- inform user. no command task TEXT_IO.NEW_LINE; TEXT_IO.PUT_LINE ("SFTP: No Response from SFTP Command Task"); when INVALID_ARGUMENTS => -- inform user. bad arguments TEXT_IO.NEW_LINE; TEXT_IO.PUT_LINE ("SFTP: Request not processed due to missing, " & "inconsistent, or invalid Arguments"); when USER_NOT_AUTHORIZED => -- inform user. not authorized TEXT_IO.NEW_LINE; TEXT_IO.PUT_LINE ("SFTP: Permission denied."); end USER_TASK_MAIN;