int CLuaFunctionDefs::LoadBrowserURL ( lua_State* luaVM ) { // bool loadBrowserURL ( browser webBrowser, string url [, string postData = "", bool postURLEncoded = true ] ) CClientWebBrowser* pWebBrowser; SString strURL; SString strPostData; bool bURLEncoded; CScriptArgReader argStream ( luaVM ); argStream.ReadUserData ( pWebBrowser ); argStream.ReadString ( strURL ); argStream.ReadString ( strPostData, "" ); argStream.ReadBool ( bURLEncoded, true ); if ( !argStream.HasErrors () ) { // Are we dealing with a remote website? if ( strURL.substr ( 0, 7 ) == "http://" || strURL.substr ( 0, 8 ) == "https://" ) { bool isLocalURL = strURL.substr ( 0, 11 ) == "http://mta/"; if ( pWebBrowser->IsLocal () != isLocalURL ) { lua_pushboolean ( luaVM, false ); return 1; } lua_pushboolean ( luaVM, pWebBrowser->LoadURL ( strURL, !isLocalURL, strPostData, bURLEncoded ) ); return 1; } // Are we dealing with a local website? If so, parse resource path. Otherwise, return false and load nothing // Todo: Add an ACL right which is necessary to load local websites or websites in general CLuaMain* pLuaMain = m_pLuaManager->GetVirtualMachine ( luaVM ); if ( pLuaMain ) { SString strAbsPath; CResource* pResource = pLuaMain->GetResource (); if ( CResourceManager::ParseResourcePathInput ( strURL, pResource, strAbsPath ) && pWebBrowser->IsLocal () ) { // Output deprecated warning, TODO: Remove this at a later point m_pScriptDebugging->LogWarning ( luaVM, "This URL scheme is deprecated and may not work in future versions. Please consider using http://mta/* instead. See https://wiki.mtasa.com/wiki/LoadBrowserURL for details" ); lua_pushboolean ( luaVM, pWebBrowser->LoadURL ( "mtalocal://" + strURL, false, strPostData, bURLEncoded ) ); return 1; } } } else m_pScriptDebugging->LogCustom ( luaVM, argStream.GetFullErrorMessage () ); lua_pushboolean ( luaVM, false ); return 1; }
int CLuaFunctionDefs::LoadBrowserURL ( lua_State* luaVM ) { // bool loadBrowserURL ( browser webBrowser, string url [, string postData = "", bool postURLEncoded = true ] ) CClientWebBrowser* pWebBrowser; SString strURL; SString strPostData; bool bURLEncoded; CScriptArgReader argStream ( luaVM ); argStream.ReadUserData ( pWebBrowser ); argStream.ReadString ( strURL ); argStream.ReadString ( strPostData, "" ); argStream.ReadBool ( bURLEncoded, true ); if ( !argStream.HasErrors () ) { // Are we dealing with a remote website? if ( strURL.substr ( 0, 7 ) == "http://" || strURL.substr ( 0, 8 ) == "https://" ) { lua_pushboolean ( luaVM, pWebBrowser->LoadURL ( strURL, true, strPostData, bURLEncoded ) ); return 1; } // Are we dealing with a local website? If so, parse resource path. Otherwise, return false and load nothing // Todo: Add an ACL right which is necessary to load local websites or websites in general CLuaMain* pLuaMain = m_pLuaManager->GetVirtualMachine ( luaVM ); if ( pLuaMain ) { SString strAbsPath; CResource* pResource = pLuaMain->GetResource (); if ( CResourceManager::ParseResourcePathInput ( strURL, pResource, strAbsPath ) && pWebBrowser->IsLocal () ) { pWebBrowser->SetTempURL ( strURL ); lua_pushboolean ( luaVM, pWebBrowser->LoadURL ( "mtalocal://" + strURL, false, strPostData, bURLEncoded ) ); return 1; } } } else m_pScriptDebugging->LogCustom ( luaVM, argStream.GetFullErrorMessage () ); lua_pushboolean ( luaVM, false ); return 1; }