mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			119 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			OpenEdge ABL
		
	
	
	
	
	
			
		
		
	
	
			119 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			OpenEdge ABL
		
	
	
	
	
	
 | 
						|
/*------------------------------------------------------------------------
 | 
						|
    File        : SocketReader.p
 | 
						|
    Purpose     :
 | 
						|
    Author(s)   : Abe Voelker
 | 
						|
    Created     : Sat Aug 21 08:31:38 CDT 2010
 | 
						|
    Notes       : Based on code from smtpmail.p
 | 
						|
  ----------------------------------------------------------------------*/
 | 
						|
 | 
						|
/* ***************************  Definitions  ************************** */
 | 
						|
DEFINE INPUT PARAMETER objSendEmailAlg    AS email.SendEmailSocket NO-UNDO.
 | 
						|
DEFINE VARIABLE vbuffer AS MEMPTR  NO-UNDO.
 | 
						|
DEFINE VARIABLE vstatus AS LOGICAL NO-UNDO.
 | 
						|
DEFINE VARIABLE vState  AS INTEGER NO-UNDO.
 | 
						|
 | 
						|
 | 
						|
ASSIGN vstate = 1.
 | 
						|
 | 
						|
/* ********************  Preprocessor Definitions  ******************** */
 | 
						|
 | 
						|
 | 
						|
/* ***************************  Main Block  *************************** */
 | 
						|
 | 
						|
FUNCTION getHostname RETURNS CHARACTER():
 | 
						|
    DEFINE VARIABLE cHostname AS CHARACTER NO-UNDO.
 | 
						|
    INPUT THROUGH hostname NO-ECHO.
 | 
						|
      IMPORT UNFORMATTED cHostname.
 | 
						|
    INPUT CLOSE.
 | 
						|
    RETURN cHostname.
 | 
						|
END FUNCTION.
 | 
						|
 | 
						|
/*
 | 
						|
  Status:
 | 
						|
        0 - No Connection to the server
 | 
						|
        1 - Waiting for 220 connection to SMTP server
 | 
						|
        2 - Waiting for 250 OK status to start sending email
 | 
						|
        3 - Waiting for 250 OK status for sender
 | 
						|
        4 - Waiting for 250 OK status for recipient
 | 
						|
        5 - Waiting for 354 OK status to send data
 | 
						|
        6 - Waiting for 250 OK status for message received
 | 
						|
        7 - Quiting
 | 
						|
*/
 | 
						|
 | 
						|
PROCEDURE newState:
 | 
						|
    DEFINE INPUT PARAMETER newState AS INTEGER.
 | 
						|
    DEFINE INPUT PARAMETER pstring  AS CHARACTER.
 | 
						|
    vState = newState.
 | 
						|
    IF pstring = "" THEN
 | 
						|
        RETURN.
 | 
						|
    SET-SIZE(vbuffer) = LENGTH(pstring) + 1.
 | 
						|
    PUT-STRING(vbuffer,1) = pstring.
 | 
						|
    SELF:WRITE(vbuffer, 1, LENGTH(pstring)).
 | 
						|
    SET-SIZE(vbuffer) = 0.
 | 
						|
END PROCEDURE.
 | 
						|
 | 
						|
PROCEDURE ReadSocketResponse:
 | 
						|
    DEFINE VARIABLE vlength AS INTEGER NO-UNDO.
 | 
						|
    DEFINE VARIABLE str AS CHARACTER NO-UNDO.
 | 
						|
    DEFINE VARIABLE v AS INTEGER NO-UNDO.
 | 
						|
 | 
						|
    MESSAGE SELF:GET-BYTES-AVAILABLE() VIEW-AS ALERT-BOX.
 | 
						|
    vlength = SELF:GET-BYTES-AVAILABLE().
 | 
						|
    IF vlength > 0 THEN DO:
 | 
						|
        SET-SIZE(vbuffer) = vlength + 1.
 | 
						|
        SELF:READ(vbuffer, 1, vlength, 1).
 | 
						|
        str = GET-STRING(vbuffer,1).
 | 
						|
        SET-SIZE(vbuffer) = 0.
 | 
						|
        objSendEmailAlg:handleResponse(str).
 | 
						|
        /*
 | 
						|
        v = INTEGER(ENTRY(1, str," ")).
 | 
						|
        CASE vState:
 | 
						|
            WHEN 1 THEN
 | 
						|
                IF v = 220 THEN
 | 
						|
                    RUN newState(2, "HELO " + getHostname() + "~r~n").
 | 
						|
                ELSE
 | 
						|
                    vState = -1.
 | 
						|
            WHEN 2 THEN
 | 
						|
                IF v = 250 THEN
 | 
						|
                    RUN newState(3, "MAIL From: " + "hardcoded@gmail.com" + "~r~n").
 | 
						|
                ELSE
 | 
						|
                    vState = -1.
 | 
						|
            WHEN 3 THEN
 | 
						|
                IF v = 250 THEN
 | 
						|
                    RUN newState(4, "RCPT TO: " + "hardcoded@gmail.com" + "~r~n").
 | 
						|
                ELSE
 | 
						|
                    vState = -1.
 | 
						|
            WHEN 4 THEN
 | 
						|
                IF v = 250 THEN
 | 
						|
                    RUN newState(5, "DATA ~r~n").
 | 
						|
                ELSE
 | 
						|
                    vState = -1.
 | 
						|
            WHEN 5 THEN
 | 
						|
                IF v = 354 THEN
 | 
						|
                    RUN newState(6, "From: " + "hardcoded@gmail.com" + "~r~n" +
 | 
						|
                                "To: " + "hardcoded@gmail.com" + " ~r~n" +
 | 
						|
                          "Subject: " + "Test Subject" +
 | 
						|
                           " ~r~n~r~n" +
 | 
						|
                           "Test Body" + "~r~n" +
 | 
						|
                           ".~r~n").
 | 
						|
                ELSE
 | 
						|
                    vState = -1.
 | 
						|
 | 
						|
            WHEN 6 THEN
 | 
						|
                IF v = 250 THEN
 | 
						|
                    RUN newState(7,"QUIT~r~n").
 | 
						|
                ELSE
 | 
						|
                    vState = -1.
 | 
						|
        END CASE.
 | 
						|
        */
 | 
						|
    END.
 | 
						|
    /*
 | 
						|
    IF vState = 7 THEN
 | 
						|
       MESSAGE "Email has been accepted for delivery.".
 | 
						|
    IF vState < 0 THEN
 | 
						|
        MESSAGE "Email has been aborted".
 | 
						|
    */
 | 
						|
END PROCEDURE.
 | 
						|
 |