- Added converter for cedserver configs from version 2 to 3
- Updated changelog - Updated installer - Updated version to 0.4.0 and revision to 64 - Fixed about dialog - Added some more exclusions to .hgignore
This commit is contained in:
114
Tools/cedserver_config_2_3/cedserver_config_2_3.lpr
Normal file
114
Tools/cedserver_config_2_3/cedserver_config_2_3.lpr
Normal file
@@ -0,0 +1,114 @@
|
||||
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.
|
||||
|
||||
Reference in New Issue
Block a user