package com.msgilligan.bitcoinj.rpc.bitcoind;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
/**
* Currently focused on just getting connection info
*/
public class BitcoinConfFile {
private static String BITCOINAPPNAME = "Bitcoin";
private File file;
public BitcoinConfFile() {
this(new File(AppDataDirectory.forAppName(BITCOINAPPNAME), "bitcoin.conf"));
}
public BitcoinConfFile(File confFile) {
file = confFile;
}
public static BitcoinConf readDefaultConfig() {
return new BitcoinConfFile().read();
}
//
/**
* read a bitcoin.conf file
* NOTE: Should we really use ugly JDK6 I/O here?
* TODO: Improved error handling, currently returns defaults if any error
* @return The configuration object
*/
public BitcoinConf read() {
BitcoinConf conf = new BitcoinConf();
setDefaults(conf);
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(file));
} catch (FileNotFoundException e) {
e.printStackTrace();
return conf;
}
String line;
try {
while((line = br.readLine()) != null) {
if (!line.startsWith("#")) {
String trimmed = line.split("#")[0].trim();
String[] kv = trimmed.split("=");
if (kv.length == 2) {
conf.put(kv[0], kv[1]);
}
}
}
} catch (IOException e) {
e.printStackTrace();
return conf;
}
return conf;
}
private void setDefaults(BitcoinConf conf) {
conf.put("rpcconnect", "127.0.0.1");
conf.put("rpcport", "8332");
conf.put("rpcuser", "");
conf.put("rpcpassword", "");
}
}