Browse Source

HPCC-15375 Code review changes

- Change INMETHOD keyword to DEFERRED
- Change requiredaccess attribute to autofeatureauth
- Change default access level to FULL

Signed-off-by: rpastrana <rodrigo.pastrana@lexisnexis.com>
rpastrana 8 years ago
parent
commit
846c4f23f2

+ 2 - 6
esp/platform/sechandler.cpp

@@ -173,14 +173,10 @@ bool SecHandler::validateSecFeaturesAccess(MapStringTo<SecAccessFlags> & accessm
     ForEach(iter)
     {
         IMapping &cur = iter.query();
-
         const char * key = (const char *)cur.getKey();
         SecAccessFlags val = *accessmap.getValue(key);
-        features.append((const char *)cur.getKey());
-        reqarray[index++] = *accessmap.getValue(key);
-
-        DBGLOG("ITERATING: key: %s val: %d", key, val);
-        DBGLOG("reqarray[%d]: val: %d", index-1, reqarray[index-1]);
+        features.append(key);
+        reqarray[index++] = val;
     }
 
     Owned<IEspStringIntMap> pmap=createStringIntMap();

+ 1 - 1
esp/scm/WsDeploy.ecm

@@ -568,7 +568,7 @@ ESPresponse [exceptions_inline, encode(0)] GetSummaryResponse
     string XmlStr;
 };
 
-ESPservice [requiredaccess("NONE"), exceptions_inline("xslt/exceptions.xslt")] WsDeploy
+ESPservice [autofeatureauth("NONE"), exceptions_inline("xslt/exceptions.xslt")] WsDeploy
 {
     ESPuses ESPstruct Task;
     ESPuses ESPstruct Component;

+ 1 - 1
esp/scm/ecldirect.ecm

@@ -72,7 +72,7 @@ ESPresponse [nil_remove] RunEclExResponse
 };
 
 
-ESPservice [requiredaccess("NONE")]EclDirect
+ESPservice [autofeatureauth("NONE")]EclDirect
 {
     ESPmethod RunEcl(RunEclRequest, RunEclResponse);
     ESPmethod RunEclEx(RunEclExRequest, RunEclExResponse);

+ 1 - 1
esp/scm/esploggingservice.ecm

@@ -115,7 +115,7 @@ TransactionSeedResponse
     bool SeedAvailable;
 };
 
-ESPService [requiredaccess("NONE"),noforms] WsLogService
+ESPService [autofeatureauth("NONE"),noforms] WsLogService
 {
     ESPuses ESPStruct LogInfo;
     ESPmethod UpdateLogService(LOGServiceUpdateRequest, LOGServiceUpdateResponse);

+ 0 - 1
esp/scm/ws_access.ecm

@@ -791,7 +791,6 @@ ESPresponse [nil_remove] UserAccountExportResponse
     [http_content("application/octet-stream")] binary Result;
 };
 
-
 ESPservice [version("1.10"), requiredaccess("NONE"), exceptions_inline("./smc_xslt/exceptions.xslt")] ws_access
 {
     ESPmethod [client_xslt("/esp/xslt/access_users.xslt")] Users(UserRequest, UserResponse);

+ 2 - 1
esp/scm/ws_account.ecm

@@ -67,7 +67,8 @@ ESPresponse [exceptions_inline] VerifyUserResponse
 	int retcode;
 };
 
-ESPservice [requiredaccess("NONE"), version("1.01"), default_client_version("1.01"), exceptions_inline("./smc_xslt/exceptions.xslt")] ws_account
+//Kevin/russ does this method need feature level check?
+ESPservice [autofeatureauth("NONE"), version("1.01"), default_client_version("1.01"), exceptions_inline("./smc_xslt/exceptions.xslt")] ws_account
 {
     ESPmethod [client_xslt("/esp/xslt/account_myaccount.xslt")] MyAccount(MyAccountRequest, MyAccountResponse);
     ESPmethod [client_xslt("/esp/xslt/account_input.xslt")] UpdateUserInput(UpdateUserInputRequest, UpdateUserInputResponse);

+ 1 - 1
esp/scm/ws_config.ecm

@@ -26,7 +26,7 @@ ESPresponse [exceptions_inline, encode(0)] ConfigAccessResponse
 };
 
 
-ESPservice [requiredaccess("NONE"), exceptions_inline] ws_config
+ESPservice [autofeatureauth("DEFERRED"), exceptions_inline] ws_config
 {
     ESPmethod[description("Initial display"), help(""), noform] 
         GetConfigAccess(ConfigAccessRequest, ConfigAccessResponse);

+ 6 - 2
esp/scm/ws_dfu.ecm

@@ -709,7 +709,7 @@ ESPresponse [exceptions_inline, nil_remove, http_encode(0)] DFUGetFileMetaDataRe
 
 //  ===========================================================================
 ESPservice [
-	requiredaccess("NONE"),
+    autofeatureauth("DEFERRED"),
     version("1.34"),
     noforms, 
     exceptions_inline("./smc_xslt/exceptions.xslt")] WsDfu
@@ -729,15 +729,19 @@ ESPservice [
     ESPmethod [resp_xsl_default("/esp/xslt/dfu_getdatacolumns.xslt")] DFUGetDataColumns(DFUGetDataColumnsRequest, DFUGetDataColumnsResponse);
     ESPmethod [resp_xsl_default("/esp/xslt/dfu_viewdata.xslt")] DFUBrowseData(DFUBrowseDataRequest, DFUBrowseDataResponse);
     ESPmethod [resp_xsl_default("/esp/xslt/dfu_searchdata.xslt")] DFUSearchData(DFUSearchDataRequest, DFUSearchDataResponse);
+    //Kevin I didn't see feature level check for DFUGetFileMetaData
     ESPmethod DFUGetFileMetaData(DFUGetFileMetaDataRequest, DFUGetFileMetaDataResponse);
     ESPmethod DFUDefFile(DFUDefFileRequest, DFUDefFileResponse);
 
     ESPmethod [resp_xsl_default("/esp/xslt/addto_superfile.xslt")] AddtoSuperfile(AddtoSuperfileRequest, AddtoSuperfileResponse);
+    //Kevin I didn't see feature level check for SuperfileList
     ESPmethod [resp_xsl_default("/esp/xslt/dfu_superedit.xslt")] SuperfileList(SuperfileListRequest, SuperfileListResponse);
     ESPmethod [resp_xsl_default("/esp/xslt/dfu_superresult.xslt")] SuperfileAction(SuperfileActionRequest, SuperfileActionResponse);
-    
+    //Kevin I didn't see feature level check for savexml
     ESPmethod Savexml(SavexmlRequest, SavexmlResponse);
+    //Kevin I didn't see feature level check for add
     ESPmethod Add(AddRequest, AddResponse);
+    //Kevin I didn't see feature level check for addremore
     ESPmethod AddRemote(AddRemoteRequest, AddRemoteResponse);
 };
 

+ 5 - 3
esp/scm/ws_dfuXref.ecm

@@ -221,7 +221,7 @@ ESPresponse [exceptions_inline] DFUXRefUnusedFilesResponse
 
 
 //  ===========================================================================
-ESPservice [requiredaccess("NONE"), exceptions_inline("./smc_xslt/exceptions.xslt")] WsDFUXRef
+ESPservice [autofeatureauth("DEFERRED"), exceptions_inline("./smc_xslt/exceptions.xslt")] WsDFUXRef
 {
     ///ESPmethod [resp_xsl_default("./smc_xslt/xref_main.xslt")] DFUXRefList(DFUXRefListRequest, DFUXRefListResponse);
     ESPmethod [resp_xsl_default("/esp/xslt/xref_main.xslt")] DFUXRefList(DFUXRefListRequest, DFUXRefListResponse);
@@ -231,10 +231,12 @@ ESPservice [requiredaccess("NONE"), exceptions_inline("./smc_xslt/exceptions.xsl
     ESPmethod [resp_xsl_default("/esp/xslt/xref_orphan.xslt")] DFUXRefOrphanFiles(DFUXRefOrphanFilesQueryRequest, DFUXRefOrphanFilesQueryResponse);
     ESPmethod [resp_xsl_default("/esp/xslt/xref_errwarn.xslt")] DFUXRefMessages(DFUXRefMessagesQueryRequest, DFUXRefMessagesQueryResponse);
     ESPmethod [resp_xsl_default("/esp/xslt/xref_directories.xslt")] DFUXRefDirectories(DFUXRefDirectoriesQueryRequest, DFUXRefDirectoriesQueryResponse);
-    ESPmethod [resp_xsl_default("/esp/xslt/action.xslt")] DFUXRefArrayAction(DFUXRefArrayActionRequest, DFUXRefArrayActionResponse);
+    //Tony/kevin, this method is not protected, should it be?
+    ESPmethod [autofeatureauth("DfuXrefAccess:access"), resp_xsl_default("/esp/xslt/action.xslt")] DFUXRefArrayAction(DFUXRefArrayActionRequest, DFUXRefArrayActionResponse);
     ESPmethod [resp_xsl_default("/esp/xslt/action.xslt")] DFUXRefBuildCancel(DFUXRefBuildCancelRequest, DFUXRefBuildCancelResponse);
     ESPmethod DFUXRefCleanDirectories(DFUXRefCleanDirectoriesRequest, DFUXRefCleanDirectoriesResponse);
-    ESPmethod DFUXRefUnusedFiles(DFUXRefUnusedFilesRequest, DFUXRefUnusedFilesResponse);
+    //Tony/kevin, this method is not protected, should it be?
+    ESPmethod [autofeatureauth("DfuXrefAccess:access")] DFUXRefUnusedFiles(DFUXRefUnusedFilesRequest, DFUXRefUnusedFilesResponse);
 };
 
 SCMexportdef(WSDFUXREF);

+ 12 - 13
esp/scm/ws_esdlconfig.ecm

@@ -240,20 +240,19 @@ ESPresponse [exceptions_inline] ListESDLBindingsResponse
     ESParray<ESPstruct ESDLBinding, Binding> Bindings;
 };
 
-ESPservice [requiredaccess("ESDLConfigAccess:ACCESS"), version("1.2"), exceptions_inline("./smc_xslt/exceptions.xslt")] WsESDLConfig
+ESPservice [autofeatureauth("ESDLConfigAccess:ACCESS"), version("1.2"), exceptions_inline("./smc_xslt/exceptions.xslt")] WsESDLConfig
 {
-	//ESPmethod [featureauth("NONE", "Failed to Echo your request. Permission denied", 20)]   Echo(EchoRequest, EchoResponse);
-    ESPmethod []  Echo(EchoRequest, EchoResponse);
-    ESPmethod [] PublishESDLDefinition(PublishESDLDefinitionRequest, PublishESDLDefinitionResponse);
-    ESPmethod [] PublishESDLBinding(PublishESDLBindingRequest, PublishESDLBindingResponse);
-    ESPmethod [requiredaccess("ESDLConfigAccess:WRITE")] ConfigureESDLBindingMethod(ConfigureESDLBindingMethodRequest, ConfigureESDLBindingMethodResponse);
-    ESPmethod [requiredaccess("ESDLConfigAccess:READ")]  GetESDLBinding(GetESDLBindingRequest, GetESDLBindingResponse);
-    ESPmethod [requiredaccess("ESDLConfigAccess:FULL")]  DeleteESDLBinding(DeleteESDLBindingRequest, DeleteESDLRegistryEntryResponse);
-    ESPmethod [requiredaccess("ESDLConfigAccess:FULL")]  DeleteESDLDefinition(DeleteESDLDefinitionRequest, DeleteESDLRegistryEntryResponse);
-    ESPmethod [requiredaccess("ESDLConfigAccess:READ")]  GetESDLDefinition(GetESDLDefinitionRequest, GetESDLDefinitionResponse);
-    ESPmethod [requiredaccess("ESDLConfigAccess:READ")]  ListESDLDefinitions(ListESDLDefinitionsRequest, ListESDLDefinitionsResponse);
-    ESPmethod [requiredaccess("ESDLConfigAccess:READ")]  ListESDLBindings(ListESDLBindingsRequest, ListESDLBindingsResponse);
-    ESPmethod [requiredaccess("ESDLConfigAccess:READ,ClusterTopologyAccess:READ"), min_ver("1.2")] ListDESDLEspBindings(ListDESDLEspBindingsReq, ListDESDLEspBindingsResp);
+    ESPmethod  Echo(EchoRequest, EchoResponse);
+    ESPmethod [autofeatureauth("ESDLConfigAccess:WRITE")] PublishESDLDefinition(PublishESDLDefinitionRequest, PublishESDLDefinitionResponse);
+    ESPmethod [autofeatureauth("ESDLConfigAccess:WRITE")] PublishESDLBinding(PublishESDLBindingRequest, PublishESDLBindingResponse);
+    ESPmethod [autofeatureauth("ESDLConfigAccess:WRITE")] ConfigureESDLBindingMethod(ConfigureESDLBindingMethodRequest, ConfigureESDLBindingMethodResponse);
+    ESPmethod [autofeatureauth("ESDLConfigAccess:READ")]  GetESDLBinding(GetESDLBindingRequest, GetESDLBindingResponse);
+    ESPmethod [autofeatureauth("ESDLConfigAccess:FULL")]  DeleteESDLBinding(DeleteESDLBindingRequest, DeleteESDLRegistryEntryResponse);
+    ESPmethod [autofeatureauth("ESDLConfigAccess:FULL")]  DeleteESDLDefinition(DeleteESDLDefinitionRequest, DeleteESDLRegistryEntryResponse);
+    ESPmethod [autofeatureauth("ESDLConfigAccess:READ")]  GetESDLDefinition(GetESDLDefinitionRequest, GetESDLDefinitionResponse);
+    ESPmethod [autofeatureauth("ESDLConfigAccess:READ")]  ListESDLDefinitions(ListESDLDefinitionsRequest, ListESDLDefinitionsResponse);
+    ESPmethod [autofeatureauth("ESDLConfigAccess:READ")]  ListESDLBindings(ListESDLBindingsRequest, ListESDLBindingsResponse);
+    ESPmethod [autofeatureauth("ESDLConfigAccess:READ,ClusterTopologyAccess:READ"), min_ver("1.2")] ListDESDLEspBindings(ListDESDLEspBindingsReq, ListDESDLEspBindingsResp);
 };
 
 SCMexportdef(WsESDLConfig);

+ 2 - 1
esp/scm/ws_espcontrol.ecm

@@ -30,7 +30,8 @@ ESPresponse [exceptions_inline, nil_remove, http_encode(0)] SetLoggingResponse
     string Message;
 };
 
-ESPservice [ requiredaccess("NONE"), version("1.00"), default_client_version("1.00"), exceptions_inline("./smc_xslt/exceptions.xslt")] WSESPControl
+//no authfeature is performed, however in cpp, there's a check to see if user is superuser
+ESPservice [autofeatureauth("NONE"), version("1.00"), default_client_version("1.00"), exceptions_inline("./smc_xslt/exceptions.xslt")] WSESPControl
 {
     ESPmethod SetLogging(SetLoggingRequest, SetLoggingResponse);
 };

+ 1 - 1
esp/scm/ws_fileio.ecm

@@ -72,7 +72,7 @@ ReadFileDataResponse
 };
 
 
-ESPservice [requiredaccess("NONE"), exceptions_inline("./smc_xslt/exceptions.xslt")] WsFileIO
+ESPservice [autofeatureauth("DEFERRED"), exceptions_inline("./smc_xslt/exceptions.xslt")] WsFileIO
 {
     //ESPuses ESPstruct DFUException;
     ESPmethod CreateFile(CreateFileRequest, CreateFileResponse);

+ 1 - 1
esp/scm/ws_fs.ecm

@@ -651,7 +651,7 @@ ESPresponse [exceptions_inline, nil_remove] GetSprayTargetsResponse
 };
 
 ESPservice [
-	requiredaccess("NONE"),
+    autofeatureauth("DEFERRED"),
     version("1.13"),
     exceptions_inline("./smc_xslt/exceptions.xslt")] FileSpray
 {

+ 1 - 1
esp/scm/ws_loggingservice.ecm

@@ -52,7 +52,7 @@ ESPresponse [exceptions_inline] UpdateLogResponse
     string StatusMessage;
 };
 
-ESPService [requiredaccess("NONE"), version("1.0"), noforms, use_method_name] WsLoggingService
+ESPService [autofeatureauth("DEFERRED"), version("1.0"), noforms, use_method_name] WsLoggingService
 {
     ESPmethod GetTransactionSeed(GetTransactionSeedRequest, GetTransactionSeedResponse);
     ESPmethod UpdateLog(UpdateLogRequest, UpdateLogResponse);

+ 3 - 4
esp/scm/ws_machine.ecm

@@ -368,16 +368,15 @@ ESPresponse [encode(0), nil_remove, exceptions_inline] UpdateComponentStatusResp
 };
 
 //-------- service ---------
-ESPservice [requiredaccess("NONE"), version("1.13")] ws_machine
+ESPservice [autofeatureauth("DEFERRED"), version("1.13")] ws_machine
 {
     ESPuses ESPstruct RequestInfoStruct;
     ESPuses ESPstruct MachineInfoEx;
     ESPuses ESPstruct ProcessorInfo;
     ESPuses ESPstruct StorageInfo;
     ESPuses ESPstruct SWRunInfo;
-   ESPuses ESPstruct RemoteExecResult;
-   ESPuses ESPStruct ComponentInfo;
-
+    ESPuses ESPstruct RemoteExecResult;
+    ESPuses ESPStruct ComponentInfo;
 
     ESPmethod [resp_xsl_default("./smc_xslt/clusterprocesses.xslt"), exceptions_inline("./smc_xslt/exceptions.xslt")]
        GetTargetClusterInfo(GetTargetClusterInfoRequest, GetTargetClusterInfoResponse);

+ 1 - 1
esp/scm/ws_packageprocess.ecm

@@ -288,7 +288,7 @@ ESPresponse [exceptions_inline] GetPartFromPackageMapResponse
     string Content;
 };
 
-ESPservice [requiredaccess("NONE"), version("1.02"), exceptions_inline("./smc_xslt/exceptions.xslt")] WsPackageProcess
+ESPservice [autofeatureauth("NONE"), version("1.02"), exceptions_inline("./smc_xslt/exceptions.xslt")] WsPackageProcess
 {
     ESPmethod Echo(EchoRequest, EchoResponse);
     ESPmethod AddPackage(AddPackageRequest, AddPackageResponse);

+ 1 - 1
esp/scm/ws_roxie.ecm

@@ -43,7 +43,7 @@
 //  ===========================================================================
 //  ===========================================================================
 //  ===========================================================================
-ESPservice [requiredaccess("NONE")] Roxie
+ESPservice [autofeatureauth("NONE")] Roxie
 {
 };
 

+ 1 - 1
esp/scm/ws_sciab.ecm

@@ -44,7 +44,7 @@ ESPresponse [exceptions_inline] BoolResponse
     string Status;
 };
 
-ESPservice [requiredaccess("NONE"), exceptions_inline("./smc_xslt/exceptions.xslt")] WsSciab
+ESPservice [autofeatureauth("NONE"), exceptions_inline("./smc_xslt/exceptions.xslt")] WsSciab
 {
 
     ESPmethod [resp_xsl_default("./smc_xslt/BoolResponse.xslt")] Index(IndexRequest, BoolResponse);

+ 20 - 20
esp/scm/ws_smc.ecm

@@ -397,37 +397,37 @@ ESPresponse [exceptions_inline] LockQueryResponse
     int NumLocks;
 };
 
-ESPservice [requiredaccess("NONE"), noforms, version("1.19"), exceptions_inline("./smc_xslt/exceptions.xslt"), use_method_name] WsSMC
+ESPservice [autofeatureauth("DEFERRED"), noforms, version("1.19"), exceptions_inline("./smc_xslt/exceptions.xslt"), use_method_name] WsSMC
 {
-    ESPmethod [requiredaccess("NONE")] Index(SMCIndexRequest, SMCIndexResponse);
-    ESPmethod [requiredaccess("INMETHOD"), resp_xsl_default("/esp/xslt/index.xslt")] Activity(ActivityRequest, ActivityResponse);
+    ESPmethod Index(SMCIndexRequest, SMCIndexResponse);
+    ESPmethod [resp_xsl_default("/esp/xslt/index.xslt")] Activity(ActivityRequest, ActivityResponse);
 
-    ESPmethod [requiredaccess("INMETHOD")] ClearQueue(SMCQueueRequest, SMCQueueResponse);
-    ESPmethod [requiredaccess("INMETHOD")] PauseQueue(SMCQueueRequest, SMCQueueResponse);
-    ESPmethod [requiredaccess("INMETHOD")] ResumeQueue(SMCQueueRequest, SMCQueueResponse);
-    ESPmethod [requiredaccess("INMETHOD")] StopQueue(SMCQueueRequest, SMCQueueResponse);
+    ESPmethod ClearQueue(SMCQueueRequest, SMCQueueResponse);
+    ESPmethod PauseQueue(SMCQueueRequest, SMCQueueResponse);
+    ESPmethod ResumeQueue(SMCQueueRequest, SMCQueueResponse);
+    ESPmethod StopQueue(SMCQueueRequest, SMCQueueResponse);
 
-    ESPmethod [requiredaccess("INMETHOD")] RemoveJob(SMCJobRequest, SMCJobResponse);
-    ESPmethod [requiredaccess("INMETHOD")] MoveJobFront(SMCJobRequest, SMCJobResponse);
-    ESPmethod [requiredaccess("INMETHOD")] MoveJobBack(SMCJobRequest, SMCJobResponse);
-    ESPmethod [requiredaccess("INMETHOD")] MoveJobUp(SMCJobRequest, SMCJobResponse);
-    ESPmethod [requiredaccess("INMETHOD")] MoveJobDown(SMCJobRequest, SMCJobResponse);
+    ESPmethod RemoveJob(SMCJobRequest, SMCJobResponse);
+    ESPmethod MoveJobFront(SMCJobRequest, SMCJobResponse);
+    ESPmethod MoveJobBack(SMCJobRequest, SMCJobResponse);
+    ESPmethod MoveJobUp(SMCJobRequest, SMCJobResponse);
+    ESPmethod MoveJobDown(SMCJobRequest, SMCJobResponse);
 
 //this one doesn't seem to do any feature level check, Kevin/Tony?
-    ESPmethod [requiredaccess("NONE")] SetJobPriority(SMCPriorityRequest, SMCPriorityResponse);
-    ESPmethod [requiredaccess("INMETHOD")] GetThorQueueAvailability(GetThorQueueAvailabilityRequest, GetThorQueueAvailabilityResponse);
+    ESPmethod [autofeatureauth("NONE")] SetJobPriority(SMCPriorityRequest, SMCPriorityResponse);
+    ESPmethod GetThorQueueAvailability(GetThorQueueAvailabilityRequest, GetThorQueueAvailabilityResponse);
 //this one ensures superuser, but no feature check is done, Kevin/Tony?
-    ESPmethod [requiredaccess("INMETHOD")] SetBanner(SetBannerRequest, SetBannerResponse);
+    ESPmethod [autofeatureauth("NONE")] SetBanner(SetBannerRequest, SetBannerResponse);
 
-    ESPmethod [requiredaccess("NONE")] NotInCommunityEdition(NotInCommunityEditionRequest, NotInCommunityEditionResponse);
+    ESPmethod [autofeatureauth("NONE")] NotInCommunityEdition(NotInCommunityEditionRequest, NotInCommunityEditionResponse);
 
-    ESPmethod [requiredaccess("INMETHOD"), resp_xsl_default("/esp/xslt/hpccresourcelist.xslt")] BrowseResources(BrowseResourcesRequest, BrowseResourcesResponse);
+    ESPmethod [resp_xsl_default("/esp/xslt/hpccresourcelist.xslt")] BrowseResources(BrowseResourcesRequest, BrowseResourcesResponse);
 
-    ESPmethod [requiredaccess("INMETHOD")] RoxieControlCmd(RoxieControlCmdRequest, RoxieControlCmdResponse);
+    ESPmethod RoxieControlCmd(RoxieControlCmdRequest, RoxieControlCmdResponse);
 //this one doesn't seem to do any feature level check, Kevin/Tony?
-    ESPmethod [requiredaccess("NONE")] GetStatusServerInfo(GetStatusServerInfoRequest, GetStatusServerInfoResponse);
+    ESPmethod [autofeatureauth("NONE")] GetStatusServerInfo(GetStatusServerInfoRequest, GetStatusServerInfoResponse);
 //this one doesn't seem to do any feature level check, Kevin/Tony?
-    ESPmethod LockQuery(LockQueryRequest, LockQueryResponse);
+    ESPmethod [autofeatureauth("NONE")] LockQuery(LockQueryRequest, LockQueryResponse);
 };
 
 SCMexportdef(WSSMC);

+ 21 - 34
esp/scm/ws_topology.ecm

@@ -598,7 +598,7 @@ ESPresponse [exceptions_inline,encode(0)] TpGetServicePluginsResponse
     ESParray<ESPstruct TpEspServicePlugin, Plugin> Plugins;
 };
 
-ESPservice [requiredaccess("ClusterTopologyAccess:FULL,MachineInfoAccess:FULL"), noforms, version("1.25"), exceptions_inline("./smc_xslt/exceptions.xslt")] WsTopology
+ESPservice [autofeatureauth("DEFERRED"), noforms, version("1.25"), exceptions_inline("./smc_xslt/exceptions.xslt")] WsTopology
 {
     ESPuses ESPStruct TpBinding;
     ESPuses ESPstruct TpCluster;
@@ -620,39 +620,26 @@ ESPservice [requiredaccess("ClusterTopologyAccess:FULL,MachineInfoAccess:FULL"),
     ESPuses ESPstruct TpServices;
     ESPuses ESPstruct TpTargetCluster;
 
-    ESPmethod [requiredaccess("INMETHOD"), resp_xsl_default("/esp/xslt/targetclusters.xslt")] TpTargetClusterQuery(TpTargetClusterQueryRequest, TpTargetClusterQueryResponse);
-    ESPmethod [requiredaccess("INMETHOD"), resp_xsl_default("/esp/xslt/topology.xslt")] TpClusterQuery(TpClusterQueryRequest, TpClusterQueryResponse);
-    ESPmethod [requiredaccess("INMETHOD")] TpLogicalClusterQuery(TpLogicalClusterQueryRequest, TpLogicalClusterQueryResponse);
-    ESPmethod [requiredaccess("INMETHOD")] TpGroupQuery(TpGroupQueryRequest, TpGroupQueryResponse);
-    ESPmethod [requiredaccess("INMETHOD"), resp_xsl_default("/esp/xslt/machines.xslt")] TpMachineQuery(TpMachineQueryRequest, TpMachineQueryResponse);
-    ESPmethod [requiredaccess("INMETHOD"), resp_xsl_default("/esp/xslt/cluster_info.xslt")] TpClusterInfo(TpClusterInfoRequest, TpClusterInfoResponse);
-    ESPmethod [requiredaccess("INMETHOD"), resp_xsl_default("/esp/xslt/thor_status.xslt")] TpThorStatus(TpThorStatusRequest, TpThorStatusResponse);
-
-    ESPmethod [requiredaccess("INMETHOD"), resp_xsl_default("/esp/xslt/services.xslt")] TpServiceQuery(TpServiceQueryRequest, TpServiceQueryResponse);
-    ESPmethod [requiredaccess("INMETHOD")] TpSetMachineStatus(TpSetMachineStatusRequest, TpSetMachineStatusResponse);
-    ESPmethod [requiredaccess("INMETHOD")] TpSwapNode(TpSwapNodeRequest, TpSwapNodeResponse);
-    ESPmethod [requiredaccess("INMETHOD")] TpXMLFile(TpXMLFileRequest, TpXMLFileResponse);
-    ESPmethod [requiredaccess("INMETHOD"), resp_xsl_default("/esp/xslt/tplog.xslt")] TpLogFile(TpLogFileRequest, TpLogFileResponse);
-    ESPmethod [requiredaccess("INMETHOD"), resp_xsl_default("/esp/xslt/tplogdisplay.xslt")] TpLogFileDisplay(TpLogFileRequest, TpLogFileResponse);
-    ESPmethod [requiredaccess("INMETHOD")] TpGetComponentFile(TpGetComponentFileRequest, TpGetComponentFileResponse);
-    ESPmethod [requiredaccess("INMETHOD")] TpGetServicePlugins(TpGetServicePluginsRequest, TpGetServicePluginsResponse);
-    ESPmethod [requiredaccess("INMETHOD")] TpListTargetClusters(TpListTargetClustersRequest, TpListTargetClustersResponse);
-    ESPmethod [requiredaccess("INMETHOD"), min_ver(1.25)] TpMachineInfo(TpMachineInfoRequest, TpMachineInfoResponse);
-
-    ESPmethod [requiredaccess("INMETHOD")] SystemLog(SystemLogRequest, SystemLogResponse);
-
-    //ESPmethod [requiredaccess("ClusterTopologyAccess:READ"), resp_xsl_default("/esp/xslt/services.xslt")] TpServiceQuery(TpServiceQueryRequest, TpServiceQueryResponse);
-    //ESPmethod [requiredaccess("ClusterTopologyAccess:WRITE")] TpSetMachineStatus(TpSetMachineStatusRequest, TpSetMachineStatusResponse);
-    //ESPmethod [requiredaccess("ClusterTopologyAccess:FULL")] TpSwapNode(TpSwapNodeRequest, TpSwapNodeResponse);
-    //ESPmethod [requiredaccess("ClusterTopologyAccess:READ")] TpXMLFile(TpXMLFileRequest, TpXMLFileResponse);
-    //ESPmethod [requiredaccess("ClusterTopologyAccess:READ"), resp_xsl_default("/esp/xslt/tplog.xslt")] TpLogFile(TpLogFileRequest, TpLogFileResponse);
-    //ESPmethod [requiredaccess("ClusterTopologyAccess:READ"), resp_xsl_default("/esp/xslt/tplogdisplay.xslt")] TpLogFileDisplay(TpLogFileRequest, TpLogFileResponse);
-    //ESPmethod [requiredaccess("ClusterTopologyAccess:FULL")] TpGetComponentFile(TpGetComponentFileRequest, TpGetComponentFileResponse);
-    //ESPmethod [requiredaccess("ClusterTopologyAccess:READ")] TpGetServicePlugins(TpGetServicePluginsRequest, TpGetServicePluginsResponse);
-    //ESPmethod [requiredaccess("ClusterTopologyAccess:READ")] TpListTargetClusters(TpListTargetClustersRequest, TpListTargetClustersResponse);
-    //ESPmethod [requiredaccess("ClusterTopologyAccess:READ"), min_ver(1.25)] TpMachineInfo(TpMachineInfoRequest, TpMachineInfoResponse);
-
-    //ESPmethod [requiredaccess("ClusterTopologyAccess:READ")] SystemLog(SystemLogRequest, SystemLogResponse);
+    ESPmethod [resp_xsl_default("/esp/xslt/targetclusters.xslt")] TpTargetClusterQuery(TpTargetClusterQueryRequest, TpTargetClusterQueryResponse);
+    ESPmethod [resp_xsl_default("/esp/xslt/topology.xslt")] TpClusterQuery(TpClusterQueryRequest, TpClusterQueryResponse);
+    ESPmethod TpLogicalClusterQuery(TpLogicalClusterQueryRequest, TpLogicalClusterQueryResponse);
+    ESPmethod TpGroupQuery(TpGroupQueryRequest, TpGroupQueryResponse);
+    ESPmethod [resp_xsl_default("/esp/xslt/machines.xslt")] TpMachineQuery(TpMachineQueryRequest, TpMachineQueryResponse);
+    ESPmethod [resp_xsl_default("/esp/xslt/cluster_info.xslt")] TpClusterInfo(TpClusterInfoRequest, TpClusterInfoResponse);
+    ESPmethod [resp_xsl_default("/esp/xslt/thor_status.xslt")] TpThorStatus(TpThorStatusRequest, TpThorStatusResponse);
+
+    ESPmethod [resp_xsl_default("/esp/xslt/services.xslt")] TpServiceQuery(TpServiceQueryRequest, TpServiceQueryResponse);
+    ESPmethod TpSetMachineStatus(TpSetMachineStatusRequest, TpSetMachineStatusResponse);
+    ESPmethod TpSwapNode(TpSwapNodeRequest, TpSwapNodeResponse);
+    ESPmethod TpXMLFile(TpXMLFileRequest, TpXMLFileResponse);
+    ESPmethod [resp_xsl_default("/esp/xslt/tplog.xslt")] TpLogFile(TpLogFileRequest, TpLogFileResponse);
+    ESPmethod [resp_xsl_default("/esp/xslt/tplogdisplay.xslt")] TpLogFileDisplay(TpLogFileRequest, TpLogFileResponse);
+    ESPmethod TpGetComponentFile(TpGetComponentFileRequest, TpGetComponentFileResponse);
+    ESPmethod TpGetServicePlugins(TpGetServicePluginsRequest, TpGetServicePluginsResponse);
+    ESPmethod TpListTargetClusters(TpListTargetClustersRequest, TpListTargetClustersResponse);
+    ESPmethod [min_ver(1.25)] TpMachineInfo(TpMachineInfoRequest, TpMachineInfoResponse);
+
+    ESPmethod SystemLog(SystemLogRequest, SystemLogResponse);
 };
 
 SCMexportdef(WSWU);

+ 3 - 4
esp/scm/ws_workunits.ecm

@@ -1768,7 +1768,7 @@ ESPresponse [exceptions_inline, nil_remove] WUGetArchiveFileResponse
 };
 
 ESPservice [
-    requiredaccess("INMETHOD"), //This declares that the method logic handles feature level authorization
+    autofeatureauth("DEFERRED"), //This declares that the method logic handles feature level authorization
     version("1.60"), default_client_version("1.60"),
     noforms,exceptions_inline("./smc_xslt/exceptions.xslt"),use_method_name] WsWorkunits
 {
@@ -1793,9 +1793,8 @@ ESPservice [
     ESPmethod WUClusterJobQueueLOG(WUClusterJobQueueLOGRequest, WUClusterJobQueueLOGResponse);
     ESPmethod WUClusterJobXLS(WUClusterJobXLSRequest, WUClusterJobXLSResponse);
     ESPmethod WUClusterJobSummaryXLS(WUClusterJobSummaryXLSRequest, WUClusterJobSummaryXLSResponse);
-
-    ESPmethod [requiredaccess("OwnWorkunitsAccess:WRITE")] WUCreate(WUCreateRequest, WUCreateResponse);
-    ESPmethod [requiredaccess("OwnWorkunitsAccess:WRITE")] WUCreateAndUpdate(WUUpdateRequest, WUUpdateResponse);
+    ESPmethod [autofeatureauth("OwnWorkunitsAccess:WRITE")] WUCreate(WUCreateRequest, WUCreateResponse);
+    ESPmethod [autofeatureauth("OwnWorkunitsAccess:WRITE")] WUCreateAndUpdate(WUUpdateRequest, WUUpdateResponse);
     ESPmethod WUUpdate(WUUpdateRequest, WUUpdateResponse);
     ESPmethod WUDelete(WUDeleteRequest, WUDeleteResponse);
     ESPmethod WUSubmit(WUSubmitRequest, WUSubmitResponse);

+ 0 - 6
esp/services/ws_workunits/ws_workunitsService.cpp

@@ -418,9 +418,6 @@ bool CWsWorkunitsEx::onWUCreate(IEspContext &context, IEspWUCreateRequest &req,
 {
     try
     {
-        //if (!context.validateFeatureAccess(OWN_WU_ACCESS, SecAccess_Write, false))
-        //    throw MakeStringException(ECLWATCH_ECL_WU_ACCESS_DENIED, "Failed to create workunit. Permission denied.");
-
         NewWsWorkunit wu(context);
         resp.updateWorkunit().setWuid(wu->queryWuid());
         AuditSystemAccess(context.queryUserId(), true, "Updated %s", wu->queryWuid());
@@ -599,9 +596,6 @@ bool CWsWorkunitsEx::onWUCreateAndUpdate(IEspContext &context, IEspWUUpdateReque
 {
     try
     {
-         //if (!context.validateFeatureAccess(OWN_WU_ACCESS, SecAccess_Write, false))
-         //           throw MakeStringException(ECLWATCH_ECL_WU_ACCESS_DENIED, "Failed to create workunit. Permission denied.");
-
         const char* wuid = req.getWuid();
         if (!wuid || !*wuid)
         {

+ 6 - 7
tools/hidl/hidlcomp.cpp

@@ -5401,9 +5401,9 @@ const char * translateAuthLevel(const char * level)
         return "SecAccess_None";
     }
 
-    if (strieq(level, "INMETHOD"))
+    if (strieq(level, "DEFERRED"))
     {
-        outs(2, "\n//WARNING: FEATURE LEVEL AUTHORIZATION HAS BEEN DEFERED TO INMETHOD!!\n");
+        outs(2, "\n//WARNING: AUTOMATIC FEATURE LEVEL AUTHORIZATION LOGIC HAS BEEN DEFERED TO IN METHOD(DEVELOPER'S RESPONSIBILITY)!!\n");
         return "SecAccess_None";
     }
 
@@ -5417,8 +5417,8 @@ const char * translateAuthLevel(const char * level)
         return "SecAccess_Access";
 
     //we might need to throw here...
-    outs(2, "\n//FEATURE LEVEL VALUE INVALID: DEFAULTING REQUIRED LEVEL to 'READ'!\n//Valid values are NONE INMETHOD, ACCESS, READ, WRITE, FULL\n");
-    return "SecAccess_Read";
+    outs(2, "\n//FEATURE LEVEL VALUE INVALID: DEFAULTING REQUIRED LEVEL to 'FULL'!\n//Valid values are NONE, DEFERRED, ACCESS, READ, WRITE, FULL\n");
+    return "SecAccess_Full";
 }
 
 void writeAccessMap(const char * rawServiceAccessList, const char * methodname, int tabs)
@@ -5440,10 +5440,9 @@ void writeAccessMap(const char * rawServiceAccessList, const char * methodname,
             {
                 if (nameComplete == false)
                 {
-                    if (strieq(currAccessName, "NONE") || strieq(currAccessName, "INMETHOD"))
+                    if (strieq(currAccessName, "NONE") || strieq(currAccessName, "DEFERRED"))
                     {
-                        //outf("\n%sm_accessmap.setValue(\"%sAccess\", %s);\n", indent.str(), methodname, translateAuthLevel("NONE"));
-                        //outf("\n%sm_accessmap.kill();\n", indent.str());
+                        outf("\n//WARNING: Developer has suppressed automatic feature level authorization, ensure this behavior is correct!");
                         continue;
                     }
                     else

+ 1 - 1
tools/hidl/hidlcomp.h

@@ -28,7 +28,7 @@
 #define HIDLVER "1.3"
 
 #define RETURNNAME "_return"
-#define FEATEACCESSATTRIBUTE "requiredaccess"
+#define FEATEACCESSATTRIBUTE "autofeatureauth"
 
 #ifndef _WIN32
 #define stricmp strcasecmp