Пример #1
0
void ZOSConsoleManager::_issueSyntaxError(const char* command)
{
    PEG_METHOD_ENTER(TRC_SERVER,
                     "ZOSConsoleManager::_issueSyntaxError");

    Logger::put_l(
        Logger::ERROR_LOG, System::CIMSERVER, Logger::SEVERE,
        MessageLoaderParms(
            "Server.ConsoleManager_zOS.CON_SYNTAX_ERR.PEGASUS_OS_ZOS",
            "CIM MODIFY COMMAND REJECTED DUE TO SYNTAX ERROR"));

    if (!strncmp(command,STRLIT_ARGS(ZOSCONSOLEMANAGER_TOKEN_CONFIG)))
    {
        Logger::put_l(
            Logger::STANDARD_LOG, System::CIMSERVER, Logger::INFORMATION,
            MessageLoaderParms(
                "Server.ConsoleManager_zOS.CON_MODIFY_SYNTAX.PEGASUS_OS_ZOS",
                "Syntax is: "
                "MODIFY CFZCIM,APPL=CONFIG,<name>=<value>[,PLANNED]"));
    }
    else if (!strncmp(command,STRLIT_ARGS(ZOSCONSOLEMANAGER_TOKEN_ENV)))
    {
        Logger::put_l(
            Logger::STANDARD_LOG, System::CIMSERVER, Logger::INFORMATION,
            MessageLoaderParms(
                "Server.ConsoleManager_zOS."
                "CON_MODIFY_ENV_SYNTAX.PEGASUS_OS_ZOS",
                "Syntax is:"
                " MODIFY CFZCIM,APPL=ENV[,<varname>][=<value>]"));
    }

    PEG_METHOD_EXIT();
}
Пример #2
0
void ZOSConsoleManager::_displayServiceLevel()
{
    PEG_METHOD_ENTER(TRC_SERVER,
                     "ZOSConsoleManager::_displayServiceLevel");

    // PEGASUS_ZOS_SERVICE_STRING is defined in the z/OS platform make file
    String serviceString(STRLIT_ARGS(PEGASUS_ZOS_SERVICE_STRING));

    Logger::put_l(
        Logger::STANDARD_LOG, System::CIMSERVER, Logger::INFORMATION,
        MessageLoaderParms(
            "Server.ConsoleManager_zOS.VERSION.PEGASUS_OS_ZOS",
            "CIM Server Service Level: $0",
            serviceString));

    PEG_METHOD_EXIT();
}
Пример #3
0
// Note: we cannot use StrLit here since it has a constructor (forbids
// structure initialization).

struct SpecialChar
{
    const char* str;
    Uint32 size;
};

// Defines encodings of special characters. Just use a 7-bit ASCII character
// as an index into this array to retrieve its string encoding and encoding
// length in bytes.
static const SpecialChar _specialChars[] =
{
    {STRLIT_ARGS("&#0;")},
    {STRLIT_ARGS("&#1;")},
    {STRLIT_ARGS("&#2;")},
    {STRLIT_ARGS("&#3;")},
    {STRLIT_ARGS("&#4;")},
    {STRLIT_ARGS("&#5;")},
    {STRLIT_ARGS("&#6;")},
    {STRLIT_ARGS("&#7;")},
    {STRLIT_ARGS("&#8;")},
    {STRLIT_ARGS("&#9;")},
    {STRLIT_ARGS("&#10;")},
    {STRLIT_ARGS("&#11;")},
    {STRLIT_ARGS("&#12;")},
    {STRLIT_ARGS("&#13;")},
    {STRLIT_ARGS("&#14;")},
    {STRLIT_ARGS("&#15;")},
Пример #4
0
/******************************************************************************
 Syntax for Modify command is:

 MODIFY <jobname>,APPL=CONFIG,<properyname>=['<value>'|<value>][,PLANNED]
                       VERSION
                       ENV[,<varname>][=<value>]

 Parameter <command> represents the string following the "APPL=" token.

******************************************************************************/
void ZOSConsoleManager::processModifyCommand( char* command )
{
    PEG_METHOD_ENTER(TRC_SERVER,
                     "ZOSConsoleManager::processModifyCommand");

    char* currentPtr = command;
    char* cmdPtr = NULL;
    char* cfgProperty = NULL;
    char* cfgValue = NULL;
    char* planned = NULL;
    Boolean currentValueIsNull = false;
    Boolean valueIsQuoted = false;
    CommandType consCmd=consoleCmdInvalid;


    currentPtr = _skipBlanks(currentPtr);

    if (!memcmp(currentPtr,STRLIT_ARGS(ZOSCONSOLEMANAGER_TOKEN_CONFIG)))
    {
        currentPtr += strlen(ZOSCONSOLEMANAGER_TOKEN_CONFIG);
        consCmd = consoleCmdConfig;
    }
    else if (!memcmp(currentPtr,STRLIT_ARGS(ZOSCONSOLEMANAGER_TOKEN_VERSION)))
    {
        consCmd = consoleCmdVersion;
        _displayServiceLevel();
        PEG_METHOD_EXIT();
        return;
    }
    else if (!memcmp(currentPtr,STRLIT_ARGS(ZOSCONSOLEMANAGER_TOKEN_ENV)))
    {
        consCmd = consoleCmdEnv;
        currentPtr += strlen(ZOSCONSOLEMANAGER_TOKEN_ENV);
        if (*currentPtr == ',')
        {
            currentPtr++;
        }
    }
    else
    {
        _issueSyntaxError(command);
        PEG_METHOD_EXIT();
        return;
    }


    // Here currentPtr points after the [CONFIG,|VERSION|ENV] token.
    // Following is either the name of a variable or nothing
    currentPtr = _skipBlanks(currentPtr);

    cfgProperty = currentPtr;
    currentPtr = strchr(currentPtr,'=');

    if (currentPtr==NULL)
    {
        if (consCmd == consoleCmdEnv)
        {
            _showEnvironment(cfgProperty);
            PEG_METHOD_EXIT();
            return;
        }
        else
        {
            _issueSyntaxError(command);
            PEG_METHOD_EXIT();
            return;
        }
    }
    else
    {
        // skip the "="
        *currentPtr = '\0';
        currentPtr++;

        currentPtr = _skipBlanks(currentPtr);

        if (*currentPtr == '\0' || *currentPtr ==',')
        {
            currentValueIsNull=true;
        }
        else if (*currentPtr == '\'')
        {
            // Check if value is enclosed in quotes
            char* temp = strchr(currentPtr+1,'\'');
            if (temp!=NULL)
            {
                // skip the starting "'"
                *currentPtr = '\0';
                currentPtr++;

                cfgValue = currentPtr;
                currentPtr = temp;

                // skip the ending "'"
                *currentPtr = '\0';
                currentPtr++;
                valueIsQuoted = true;
            }
            else
            {
                _issueSyntaxError(command);
                PEG_METHOD_EXIT();
                return;
            }
        }
        else
        {
            cfgValue = currentPtr;
        }
    }

    currentPtr = _skipBlanks(currentPtr);

    planned = strchr(currentPtr,',');
    if (planned!=NULL)
    {
        *planned = '\0';
        planned++;

        planned = _skipBlanks(planned);

        if (memcmp(planned,STRLIT_ARGS(ZOSCONSOLEMANAGER_TOKEN_PLANNED)))
        {
            _issueSyntaxError(command);
            PEG_METHOD_EXIT();
            return;
        }
    }


    _stripTrailingBlanks( cfgProperty );
    PEG_TRACE((TRC_SERVER, Tracer::LEVEL4,"Update property: %s", cfgProperty));

    if (currentValueIsNull)
    {
        PEG_TRACE_CSTRING(TRC_SERVER, Tracer::LEVEL4,
                          "Set property with null value");
    }
    else
    {
        _stripTrailingBlanks( cfgValue );
        PEG_TRACE((TRC_SERVER, Tracer::LEVEL4,
                   "Update property value to: %s", cfgValue));
    }

    if (planned != NULL)
    {
        PEG_TRACE_CSTRING(TRC_SERVER, Tracer::LEVEL4,
                          "Updating planned value");
    }

    if (consCmd == consoleCmdEnv)
    {
        _updateEnvironment(cfgProperty, cfgValue);
        PEG_METHOD_EXIT();
        return;
    }

    String propertyString(cfgProperty);
    String propertyValue;

    if (!currentValueIsNull)
    {
        propertyValue.assign(cfgValue);

        if (!valueIsQuoted)
        {
            // All values that were not enclosed in quotes are
            // converted to lowercase
            propertyValue.toLower();
        }

    }

    _updateConfiguration(propertyString,
                         propertyValue,
                         currentValueIsNull,
                         planned);
    PEG_METHOD_EXIT();
}