Skip to content

Refactor mtaserver.conf.template #3857

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 25 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 7 commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
525f43d
remove mtaserver.conf.template
Fernando-A-Rocha Nov 14, 2024
85292af
Merge branch 'master' into conf-template
Fernando-A-Rocha Nov 14, 2024
899dd52
.
Fernando-A-Rocha Nov 14, 2024
ce676de
Merge branch 'conf-template' of github.com:Fernando-A-Rocha/mtasa-blu…
Fernando-A-Rocha Nov 14, 2024
f0195c7
dont remove the template
Fernando-A-Rocha Nov 15, 2024
d3bb1ea
include mtaserver.conf.template in installer
Fernando-A-Rocha Nov 15, 2024
2796ea0
compose_files
Fernando-A-Rocha Nov 15, 2024
6c98bd3
Merge branch 'master' into conf-template
Fernando-A-Rocha Nov 18, 2024
8d3da29
more refactoring
Fernando-A-Rocha Nov 18, 2024
5748061
Merge branch 'master' into conf-template
Fernando-A-Rocha Nov 21, 2024
620e1d7
resolve merge conflict
Fernando-A-Rocha Nov 22, 2024
d3d5740
mtaserver.conf.template add header comment
Fernando-A-Rocha Nov 22, 2024
37e9254
rename func
Fernando-A-Rocha Nov 22, 2024
7e67221
Merge branch 'master' into conf-template
Fernando-A-Rocha Nov 22, 2024
e0c698e
Merge branch 'master' into conf-template
TheNormalnij Dec 13, 2024
1c8bb13
fix merge conflicts
Fernando-A-Rocha Jan 5, 2025
8d4947a
del mtaserverconf.template
Fernando-A-Rocha Jan 5, 2025
010923a
Merge branch 'master' into conf-template
Fernando-A-Rocha Jan 5, 2025
d9fa84b
reviews
Fernando-A-Rocha Jan 5, 2025
bd5db2c
Update CMainConfig.cpp
Fernando-A-Rocha Jan 8, 2025
55855bd
Merge branch 'master' into conf-template
Fernando-A-Rocha Jan 8, 2025
4adfb9e
Merge branch 'master' into conf-template
Fernando-A-Rocha Mar 7, 2025
8583540
merge master
Fernando-A-Rocha May 11, 2025
df18692
Merge branch 'master' into conf-template
Fernando-A-Rocha May 29, 2025
ecf3fcd
Merge branch 'master' into conf-template
Fernando-A-Rocha Jun 17, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 29 additions & 28 deletions Server/mods/deathmatch/logic/CMainConfig.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -853,44 +853,45 @@ bool CMainConfig::AddMissingSettings()
if (!g_pGame->IsUsingMtaServerConf())
return false;

SString strTemplateFilename = PathJoin(g_pServerInterface->GetServerModPath(), "mtaserver.conf.template");

if (!FileExists(strTemplateFilename))
SString templateFileName = PathJoin(g_pServerInterface->GetServerModPath(), MTA_SERVER_CONF_TEMPLATE);
if (!FileExists(templateFileName))
return false;

CXMLFile* pFileTemplate = g_pServerInterface->GetXML()->CreateXML(strTemplateFilename);
CXMLNode* pRootNodeTemplate = pFileTemplate && pFileTemplate->Parse() ? pFileTemplate->GetRootNode() : nullptr;
if (!pRootNodeTemplate)
CXMLFile* templateFile = g_pServerInterface->GetXML()->CreateXML(templateFileName);
CXMLNode* templateRootNode = templateFile && templateFile->Parse() ? templateFile->GetRootNode() : nullptr;
if (!templateRootNode)
{
CLogger::ErrorPrintf("Can't parse '%s'\n", *strTemplateFilename);
CLogger::ErrorPrintf("Can't parse '%s'\n", *templateFileName);
return false;
}

// Check that each item in the template also exists in the server config
bool bChanged = false;
CXMLNode* pPrevNode = nullptr;
for (auto it = pRootNodeTemplate->ChildrenBegin(); it != pRootNodeTemplate->ChildrenEnd(); ++it)
{
CXMLNode* pNodeTemplate = *it;
SString strNodeName = pNodeTemplate->GetTagName();
CXMLNode* pNode = m_pRootNode->FindSubNode(strNodeName);
if (!pNode)
bool configChanged = false;
CXMLNode* previousNode = nullptr;
for (auto it = templateRootNode->ChildrenBegin(); it != templateRootNode->ChildrenEnd(); ++it)
{
CXMLNode* templateNode = *it;
SString templateNodeName = templateNode->GetTagName();

// Skip certain optional nodes
if (templateNodeName == "resource" || templateNodeName == "module")
continue;

CXMLNode* foundNode = m_pRootNode->FindSubNode(templateNodeName);
if (!foundNode)
{
CLogger::LogPrintf("Adding missing '%s' to mtaserver.conf\n", *strNodeName);
SString strNodeValue = pNodeTemplate->GetTagContent();
SString strNodeComment = pNodeTemplate->GetCommentText();
pNode = m_pRootNode->CreateSubNode(strNodeName, pPrevNode);
pNode->SetTagContent(strNodeValue);
pNode->SetCommentText(strNodeComment, true);
bChanged = true;
SString templateNodeValue = templateNode->GetTagContent();
SString templateNodeComment = templateNode->GetCommentText();
foundNode = m_pRootNode->CreateSubNode(templateNodeName, previousNode);
foundNode->SetTagContent(templateNodeValue);
foundNode->SetCommentText(templateNodeComment, true);
CLogger::LogPrintf("[%s] Added missing '%s' setting to mtaserver.conf\n", MTA_SERVER_CONF_TEMPLATE, *templateNodeName);
configChanged = true;
}
pPrevNode = pNode;
previousNode = foundNode;
}

// Clean up
g_pServerInterface->GetXML()->DeleteXML(pFileTemplate);
FileDelete(strTemplateFilename);
return bChanged;
g_pServerInterface->GetXML()->DeleteXML(templateFile);
return configChanged;
}

bool CMainConfig::IsValidPassword(const char* szPassword)
Expand Down
Loading
Loading