int CLuaACLDefs::isObjectInACLGroup ( lua_State* luaVM ) { if ( lua_type ( luaVM, 1 ) == LUA_TSTRING && lua_type ( luaVM, 2 ) == LUA_TLIGHTUSERDATA ) { const char* szObject = lua_tostring ( luaVM, 1 ); CAccessControlListGroup* pGroup = lua_toaclgroup ( luaVM, 2 ); CAccessControlListGroupObject::EObjectType GroupObjectType; if ( pGroup && m_pACLManager->VerifyGroup ( pGroup ) ) { if ( StringBeginsWith ( szObject, "resource." ) ) { szObject += 9; GroupObjectType = CAccessControlListGroupObject::OBJECT_TYPE_RESOURCE; } else if ( StringBeginsWith ( szObject, "user." ) ) { szObject += 5; GroupObjectType = CAccessControlListGroupObject::OBJECT_TYPE_USER; } else { // Invalid group type lua_pushboolean ( luaVM, false ); return 1; } if ( pGroup->FindObjectMatch ( szObject, GroupObjectType ) ) { lua_pushboolean ( luaVM, true ); return 1; } } } lua_pushboolean ( luaVM, false ); return 1; }
int CLuaACLDefs::aclGroupAddObject ( lua_State* luaVM ) { // Verify the arguents if ( lua_type ( luaVM, 1 ) == LUA_TLIGHTUSERDATA && lua_type ( luaVM, 2 ) == LUA_TSTRING ) { // Grab the arguments CAccessControlListGroup* pGroup = lua_toaclgroup ( luaVM, 1 ); const char* szObject = lua_tostring ( luaVM, 2 ); // Verify the group and ACL if ( pGroup ) { // Figure out what type of object this is const char* szObjectAfterDot = szObject; CAccessControlListGroupObject::EObjectType eType; if ( StringBeginsWith ( szObject, "resource." ) ) { eType = CAccessControlListGroupObject::OBJECT_TYPE_RESOURCE; szObjectAfterDot += 9; } else if ( StringBeginsWith ( szObject, "user." ) ) { eType = CAccessControlListGroupObject::OBJECT_TYPE_USER; szObjectAfterDot += 5; } else { lua_pushboolean ( luaVM, false ); return 1; } // Make sure it doesn't already exist if ( !pGroup->FindObjectMatch ( szObjectAfterDot, eType ) ) { // Set it pGroup->AddObject ( szObjectAfterDot, eType ); CLogger::LogPrintf ( "ACL: %s: Object '%s' added to group '%s'\n", GetResourceName ( luaVM ), szObject, pGroup->GetGroupName () ); // Return success lua_pushboolean ( luaVM, true ); return 1; } } } else m_pScriptDebugging->LogBadType ( luaVM, "aclGroupAddObject" ); lua_pushboolean ( luaVM, false ); return 1; }
int CLuaACLDefs::aclGroupAddObject ( lua_State* luaVM ) { // bool aclGroupAddObject ( aclgroup theGroup, string theObjectName ) CAccessControlListGroup* pGroup; SString strObject; CScriptArgReader argStream ( luaVM ); argStream.ReadUserData ( pGroup ); argStream.ReadString ( strObject ); if ( !argStream.HasErrors () ) { // Figure out what type of object this is const char* szObjectAfterDot = strObject; CAccessControlListGroupObject::EObjectType eType; if ( StringBeginsWith ( strObject, "resource." ) ) { eType = CAccessControlListGroupObject::OBJECT_TYPE_RESOURCE; szObjectAfterDot += 9; } else if ( StringBeginsWith ( strObject, "user." ) ) { eType = CAccessControlListGroupObject::OBJECT_TYPE_USER; szObjectAfterDot += 5; } else { lua_pushboolean ( luaVM, false ); return 1; } // Make sure it doesn't already exist if ( !pGroup->FindObjectMatch ( szObjectAfterDot, eType ) ) { // Set it pGroup->AddObject ( szObjectAfterDot, eType ); CLogger::LogPrintf ( "ACL: %s: Object '%s' added to group '%s'\n", GetResourceName ( luaVM ), strObject.c_str (), pGroup->GetGroupName () ); // Return success lua_pushboolean ( luaVM, true ); return 1; } } else m_pScriptDebugging->LogCustom ( luaVM, argStream.GetFullErrorMessage () ); lua_pushboolean ( luaVM, false ); return 1; }
int CLuaACLDefs::isObjectInACLGroup ( lua_State* luaVM ) { // bool isObjectInACLGroup ( string theObject, aclgroup theGroup ) SString strObject; CAccessControlListGroup* pGroup; CAccessControlListGroupObject::EObjectType GroupObjectType; CScriptArgReader argStream ( luaVM ); argStream.ReadString ( strObject ); argStream.ReadUserData ( pGroup ); if ( !argStream.HasErrors () ) { // Figure out what type of object this is const char* szObjectAfterDot = strObject; if ( StringBeginsWith ( strObject, "resource." ) ) { szObjectAfterDot += 9; GroupObjectType = CAccessControlListGroupObject::OBJECT_TYPE_RESOURCE; } else if ( StringBeginsWith ( strObject, "user." ) ) { szObjectAfterDot += 5; GroupObjectType = CAccessControlListGroupObject::OBJECT_TYPE_USER; } else { // Invalid group type lua_pushboolean ( luaVM, false ); return 1; } if ( pGroup->FindObjectMatch ( szObjectAfterDot, GroupObjectType ) ) { lua_pushboolean ( luaVM, true ); return 1; } } else m_pScriptDebugging->LogCustom ( luaVM, argStream.GetFullErrorMessage () ); lua_pushboolean ( luaVM, false ); return 1; }