|
Packit |
1fb8d4 |
/*
|
|
Packit |
1fb8d4 |
Simple .RDP file parser
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
Copyright 2013 Blaz Bacnik
|
|
Packit |
1fb8d4 |
|
|
Packit Service |
5a9772 |
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
|
|
Packit Service |
5a9772 |
If a copy of the MPL was not distributed with this file, You can obtain one at
|
|
Packit Service |
5a9772 |
http://mozilla.org/MPL/2.0/.
|
|
Packit |
1fb8d4 |
*/
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
package com.freerdp.freerdpcore.utils;
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
import java.io.BufferedReader;
|
|
Packit |
1fb8d4 |
import java.io.FileReader;
|
|
Packit |
1fb8d4 |
import java.io.IOException;
|
|
Packit |
1fb8d4 |
import java.util.HashMap;
|
|
Packit |
1fb8d4 |
import java.util.Locale;
|
|
Packit |
1fb8d4 |
|
|
Packit Service |
5a9772 |
public class RDPFileParser
|
|
Packit Service |
5a9772 |
{
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
private static final int MAX_ERRORS = 20;
|
|
Packit Service |
5a9772 |
private static final int MAX_LINES = 500;
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
private HashMap<String, Object> options;
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
public RDPFileParser()
|
|
Packit Service |
5a9772 |
{
|
|
Packit Service |
5a9772 |
init();
|
|
Packit Service |
5a9772 |
}
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
public RDPFileParser(String filename) throws IOException
|
|
Packit Service |
5a9772 |
{
|
|
Packit Service |
5a9772 |
init();
|
|
Packit Service |
5a9772 |
parse(filename);
|
|
Packit Service |
5a9772 |
}
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
private void init()
|
|
Packit Service |
5a9772 |
{
|
|
Packit Service |
5a9772 |
options = new HashMap<String, Object>();
|
|
Packit Service |
5a9772 |
}
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
public void parse(String filename) throws IOException
|
|
Packit Service |
5a9772 |
{
|
|
Packit Service |
5a9772 |
BufferedReader br = new BufferedReader(new FileReader(filename));
|
|
Packit Service |
5a9772 |
String line = null;
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
int errors = 0;
|
|
Packit Service |
5a9772 |
int lines = 0;
|
|
Packit Service |
5a9772 |
boolean ok;
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
while ((line = br.readLine()) != null)
|
|
Packit Service |
5a9772 |
{
|
|
Packit Service |
5a9772 |
lines++;
|
|
Packit Service |
5a9772 |
ok = false;
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
if (errors > MAX_ERRORS || lines > MAX_LINES)
|
|
Packit Service |
5a9772 |
{
|
|
Packit Service |
5a9772 |
br.close();
|
|
Packit Service |
5a9772 |
throw new IOException("Parsing limits exceeded");
|
|
Packit Service |
5a9772 |
}
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
String[] fields = line.split(":", 3);
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
if (fields.length == 3)
|
|
Packit Service |
5a9772 |
{
|
|
Packit Service |
5a9772 |
if (fields[1].equals("s"))
|
|
Packit Service |
5a9772 |
{
|
|
Packit Service |
5a9772 |
options.put(fields[0].toLowerCase(Locale.ENGLISH), fields[2]);
|
|
Packit Service |
5a9772 |
ok = true;
|
|
Packit Service |
5a9772 |
}
|
|
Packit Service |
5a9772 |
else if (fields[1].equals("i"))
|
|
Packit Service |
5a9772 |
{
|
|
Packit Service |
5a9772 |
try
|
|
Packit Service |
5a9772 |
{
|
|
Packit Service |
5a9772 |
Integer i = Integer.parseInt(fields[2]);
|
|
Packit Service |
5a9772 |
options.put(fields[0].toLowerCase(Locale.ENGLISH), i);
|
|
Packit Service |
5a9772 |
ok = true;
|
|
Packit Service |
5a9772 |
}
|
|
Packit Service |
5a9772 |
catch (NumberFormatException e)
|
|
Packit Service |
5a9772 |
{
|
|
Packit Service |
5a9772 |
}
|
|
Packit Service |
5a9772 |
}
|
|
Packit Service |
5a9772 |
else if (fields[1].equals("b"))
|
|
Packit Service |
5a9772 |
{
|
|
Packit Service |
5a9772 |
ok = true;
|
|
Packit Service |
5a9772 |
}
|
|
Packit Service |
5a9772 |
}
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
if (!ok)
|
|
Packit Service |
5a9772 |
errors++;
|
|
Packit Service |
5a9772 |
}
|
|
Packit Service |
5a9772 |
br.close();
|
|
Packit Service |
5a9772 |
}
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
public String getString(String optionName)
|
|
Packit Service |
5a9772 |
{
|
|
Packit Service |
5a9772 |
if (options.get(optionName) instanceof String)
|
|
Packit Service |
5a9772 |
return (String)options.get(optionName);
|
|
Packit Service |
5a9772 |
else
|
|
Packit Service |
5a9772 |
return null;
|
|
Packit Service |
5a9772 |
}
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
public Integer getInteger(String optionName)
|
|
Packit Service |
5a9772 |
{
|
|
Packit Service |
5a9772 |
if (options.get(optionName) instanceof Integer)
|
|
Packit Service |
5a9772 |
return (Integer)options.get(optionName);
|
|
Packit Service |
5a9772 |
else
|
|
Packit Service |
5a9772 |
return null;
|
|
Packit Service |
5a9772 |
}
|
|
Packit |
1fb8d4 |
}
|