1
0

WebAdmin should not cause crashes anymore

Got rid of cWebPlugin_Lua
cPlugin_Lua is also a cWebPlugin now, so plugins don't need a separate cWebPlugin object
Changed some stuff to use AString instead of char*

git-svn-id: http://mc-server.googlecode.com/svn/trunk@777 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
faketruth
2012-08-22 14:22:21 +00:00
parent 0da4f7eaa2
commit 7c84349990
17 changed files with 369 additions and 378 deletions

View File

@@ -80,13 +80,13 @@ cWebAdmin::~cWebAdmin()
delete m_Event;
}
void cWebAdmin::AddPlugin( cWebPlugin* a_Plugin )
void cWebAdmin::AddPlugin( cWebPlugin * a_Plugin )
{
m_Plugins.remove( a_Plugin );
m_Plugins.push_back( a_Plugin );
}
void cWebAdmin::RemovePlugin( cWebPlugin* a_Plugin )
void cWebAdmin::RemovePlugin( cWebPlugin * a_Plugin )
{
m_Plugins.remove( a_Plugin );
}
@@ -161,18 +161,10 @@ void cWebAdmin::Request_Handler(webserver::http_request* r)
for (PluginList::iterator itr = WebAdmin->m_Plugins.begin(); itr != WebAdmin->m_Plugins.end(); ++itr)
{
cWebPlugin* WebPlugin = *itr;
cWebPlugin_Lua* LuaPlugin = dynamic_cast< cWebPlugin_Lua* >( WebPlugin );
if( LuaPlugin )
std::list< std::pair<std::string, std::string> > NameList = WebPlugin->GetTabNames();
for( std::list< std::pair<std::string, std::string> >::iterator Names = NameList.begin(); Names != NameList.end(); ++Names )
{
std::list< std::pair<std::string, std::string> > NameList = LuaPlugin->GetTabNames();
for( std::list< std::pair<std::string, std::string> >::iterator Names = NameList.begin(); Names != NameList.end(); ++Names )
{
Menu += "<li><a href='" + BaseURL + WebPlugin->GetName() + "/" + (*Names).second + "'>" + (*Names).first + "</a></li>";
}
}
else
{
Menu += "<li><a href='" + BaseURL + WebPlugin->GetName() + "'>" + WebPlugin->GetName() + "</a></li>";
Menu += "<li><a href='" + BaseURL + WebPlugin->GetName().c_str() + "/" + (*Names).second + "'>" + (*Names).first + "</a></li>";
}
}
@@ -201,7 +193,7 @@ void cWebAdmin::Request_Handler(webserver::http_request* r)
{
if( (*itr)->GetName() == Split[1] )
{
Content = (*itr)->HandleRequest( &Request );
Content = (*itr)->HandleWebRequest( &Request );
cWebPlugin* WebPlugin = *itr;
FoundPlugin = WebPlugin->GetName();
cWebPlugin_Lua* LuaPlugin = dynamic_cast< cWebPlugin_Lua* >( WebPlugin );
@@ -229,7 +221,7 @@ void cWebAdmin::Request_Handler(webserver::http_request* r)
for( cPluginManager::PluginList::const_iterator itr = List.begin(); itr != List.end(); ++itr )
{
AString VersionNum;
AppendPrintf(Content, "<li>%s V.%i</li>", (*itr)->GetName(), (*itr)->GetVersion());
AppendPrintf(Content, "<li>%s V.%i</li>", (*itr)->GetName().c_str(), (*itr)->GetVersion());
}
}
Content += "</ul>";
@@ -371,22 +363,4 @@ std::string cWebAdmin::GetTemplate()
f.ReadRestOfFile(retVal);
return retVal;
}
void cWebAdmin::RemovePlugin( lua_State* L )
{
for( PluginList::iterator itr = m_Plugins.begin(); itr != m_Plugins.end(); )
{
if( (*itr)->GetLuaState() == L )
{
PluginList::iterator prev = itr++;
delete *prev; // deleting a dereferenced iterator also takes it out of the list, so no need for erase()
}
else
++itr;
}
}
}