115 lines
3.4 KiB
Plaintext
115 lines
3.4 KiB
Plaintext
program cedserver_config_2_3;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
uses
|
|
{$IFDEF UNIX}{$IFDEF UseCThreads}
|
|
cthreads,
|
|
{$ENDIF}{$ENDIF}
|
|
Classes, IniFiles, XMLWrite, dom;
|
|
|
|
procedure WriteXMLString(AElement: TDOMElement; AName, AValue: string);
|
|
var
|
|
child: TDOMElement;
|
|
begin
|
|
child := AElement.OwnerDocument.CreateElement(AName);
|
|
AElement.AppendChild(child);
|
|
child.AppendChild(AElement.OwnerDocument.CreateTextNode(AValue));
|
|
end;
|
|
|
|
procedure WriteXMLAccount(AElement: TDOMElement; AAccountString: string);
|
|
var
|
|
splitPos: Integer;
|
|
lastPos: TDOMElement;
|
|
begin
|
|
//Account name
|
|
splitPos := Pos('=', AAccountString);
|
|
WriteXMLString(AElement, 'Name', Copy(AAccountString, 1, splitPos - 1));
|
|
Delete(AAccountString, 1, splitPos);
|
|
|
|
//Accesslevel
|
|
splitPos := Pos(':', AAccountString);
|
|
WriteXMLString(AElement, 'Accesslevel', Copy(AAccountString, 1, splitPos - 1));
|
|
Delete(AAccountString, 1, splitPos);
|
|
|
|
lastPos := AElement.OwnerDocument.CreateElement('LastPos');
|
|
lastPos.AttribStrings['x'] := '0';
|
|
lastPos.AttribStrings['y'] := '0';
|
|
|
|
//Passwordhash
|
|
splitPos := Pos(':', AAccountString);
|
|
if splitPos > 0 then
|
|
begin
|
|
WriteXMLString(AElement, 'PasswordHash', Copy(AAccountString, 1, splitPos - 1));
|
|
Delete(AAccountString, 1, splitPos);
|
|
|
|
//LastPos
|
|
splitPos := Pos(':', AAccountString);
|
|
if splitPos > 0 then
|
|
begin
|
|
lastPos.AttribStrings['x'] := Copy(AAccountString, 1, splitPos - 1);
|
|
lastPos.AttribStrings['y'] := Copy(AAccountString, splitPos + 1, Length(AAccountString));
|
|
end;
|
|
end else
|
|
WriteXMLString(AElement, 'PasswordHash', AAccountString);
|
|
|
|
AElement.AppendChild(lastPos);
|
|
AElement.AppendChild(AElement.OwnerDocument.CreateElement('Regions'));
|
|
end;
|
|
|
|
var
|
|
v2ini: TIniFile;
|
|
v3xml: TXMLDocument;
|
|
root, parent, child: TDOMElement;
|
|
i: Integer;
|
|
rawAccounts: TStringList;
|
|
|
|
begin
|
|
writeln('Opening "cedserver.ini"');
|
|
v2ini := TIniFile.Create('cedserver.ini');
|
|
|
|
writeln('Preparing XML structure');
|
|
v3xml := TXMLDocument.Create;
|
|
root := v3xml.CreateElement('CEDConfig');
|
|
root.AttribStrings['Version'] := '3';
|
|
v3xml.AppendChild(root);
|
|
|
|
writeln('Transfering settings');
|
|
|
|
WriteXMLString(root, 'Port', v2ini.ReadString('Network', 'Port', '2597'));
|
|
|
|
parent := v3xml.CreateElement('Map');
|
|
root.AppendChild(parent);
|
|
WriteXMLString(parent, 'Map', v2ini.ReadString('Paths', 'map', 'map0.mul'));
|
|
WriteXMLString(parent, 'StaIdx', v2ini.ReadString('Paths', 'staidx', 'staidx0.mul'));
|
|
WriteXMLString(parent, 'Statics', v2ini.ReadString('Paths', 'statics', 'statics0.mul'));
|
|
WriteXMLString(parent, 'Width', v2ini.ReadString('Parameters', 'Width', '768'));
|
|
WriteXMLString(parent, 'Height', v2ini.ReadString('Parameters', 'Height', '512'));
|
|
|
|
WriteXmlString(root, 'Tiledata', v2ini.ReadString('Paths', 'tiledata', 'tiledata.mul'));
|
|
WriteXmlString(root, 'Radarcol', v2ini.ReadString('Paths', 'radarcol', 'radarcol.mul'));
|
|
|
|
writeln('Transfering accounts');
|
|
|
|
parent := v3xml.CreateElement('Accounts');
|
|
root.AppendChild(parent);
|
|
rawAccounts := TStringList.Create;
|
|
v2ini.ReadSectionRaw('Accounts', rawAccounts);
|
|
for i := 0 to rawAccounts.Count - 1 do
|
|
begin
|
|
child := v3xml.CreateElement('Account');
|
|
parent.AppendChild(child);
|
|
WriteXMLAccount(child, rawAccounts.Strings[i]);
|
|
end;
|
|
rawAccounts.Free;
|
|
|
|
root.AppendChild(v3xml.CreateElement('Regions'));
|
|
|
|
v2ini.Free;
|
|
|
|
writeln('Writing "cedserver.xml"');
|
|
WriteXMLFile(v3xml, 'cedserver.xml');
|
|
Writeln('Done.');
|
|
end.
|
|
|