mirror of
https://github.com/Nathanwoodburn/FireWallet.git
synced 2025-12-06 16:43:01 +11:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
7388710704
|
|||
|
92bef9ef5d
|
|||
|
03a6b4d6da
|
|||
|
1a71329e6a
|
|||
|
c2990afed3
|
39
FireWallet/MainForm.Designer.cs
generated
39
FireWallet/MainForm.Designer.cs
generated
@@ -39,6 +39,7 @@ namespace FireWallet
|
|||||||
toolStripStatusLabelNetwork = new ToolStripStatusLabel();
|
toolStripStatusLabelNetwork = new ToolStripStatusLabel();
|
||||||
toolStripStatusLabelstatus = new ToolStripStatusLabel();
|
toolStripStatusLabelstatus = new ToolStripStatusLabel();
|
||||||
toolStripStatusLabelaccount = new ToolStripStatusLabel();
|
toolStripStatusLabelaccount = new ToolStripStatusLabel();
|
||||||
|
toolStripStatusLabelLedger = new ToolStripStatusLabel();
|
||||||
toolStripSplitButtonlogout = new ToolStripSplitButton();
|
toolStripSplitButtonlogout = new ToolStripSplitButton();
|
||||||
timerNodeStatus = new System.Windows.Forms.Timer(components);
|
timerNodeStatus = new System.Windows.Forms.Timer(components);
|
||||||
panelaccount = new Panel();
|
panelaccount = new Panel();
|
||||||
@@ -80,6 +81,7 @@ namespace FireWallet
|
|||||||
labelSendingTo = new Label();
|
labelSendingTo = new Label();
|
||||||
labelSendPrompt = new Label();
|
labelSendPrompt = new Label();
|
||||||
panelRecieve = new Panel();
|
panelRecieve = new Panel();
|
||||||
|
buttonAddressVerify = new Button();
|
||||||
pictureBoxReceiveQR = new PictureBox();
|
pictureBoxReceiveQR = new PictureBox();
|
||||||
labelReceive2 = new Label();
|
labelReceive2 = new Label();
|
||||||
textBoxReceiveAddress = new TextBox();
|
textBoxReceiveAddress = new TextBox();
|
||||||
@@ -111,7 +113,6 @@ namespace FireWallet
|
|||||||
textBoxExAddr = new TextBox();
|
textBoxExAddr = new TextBox();
|
||||||
labelSettings4 = new Label();
|
labelSettings4 = new Label();
|
||||||
textBoxExTX = new TextBox();
|
textBoxExTX = new TextBox();
|
||||||
toolStripStatusLabelLedger = new ToolStripStatusLabel();
|
|
||||||
statusStripmain.SuspendLayout();
|
statusStripmain.SuspendLayout();
|
||||||
panelaccount.SuspendLayout();
|
panelaccount.SuspendLayout();
|
||||||
groupBoxaccount.SuspendLayout();
|
groupBoxaccount.SuspendLayout();
|
||||||
@@ -167,6 +168,13 @@ namespace FireWallet
|
|||||||
toolStripStatusLabelaccount.Size = new Size(55, 17);
|
toolStripStatusLabelaccount.Size = new Size(55, 17);
|
||||||
toolStripStatusLabelaccount.Text = "Account:";
|
toolStripStatusLabelaccount.Text = "Account:";
|
||||||
//
|
//
|
||||||
|
// toolStripStatusLabelLedger
|
||||||
|
//
|
||||||
|
toolStripStatusLabelLedger.Margin = new Padding(50, 3, 50, 2);
|
||||||
|
toolStripStatusLabelLedger.Name = "toolStripStatusLabelLedger";
|
||||||
|
toolStripStatusLabelLedger.Size = new Size(71, 17);
|
||||||
|
toolStripStatusLabelLedger.Text = "Cold Wallet:";
|
||||||
|
//
|
||||||
// toolStripSplitButtonlogout
|
// toolStripSplitButtonlogout
|
||||||
//
|
//
|
||||||
toolStripSplitButtonlogout.DisplayStyle = ToolStripItemDisplayStyle.Text;
|
toolStripSplitButtonlogout.DisplayStyle = ToolStripItemDisplayStyle.Text;
|
||||||
@@ -619,16 +627,30 @@ namespace FireWallet
|
|||||||
//
|
//
|
||||||
// panelRecieve
|
// panelRecieve
|
||||||
//
|
//
|
||||||
|
panelRecieve.Controls.Add(buttonAddressVerify);
|
||||||
panelRecieve.Controls.Add(pictureBoxReceiveQR);
|
panelRecieve.Controls.Add(pictureBoxReceiveQR);
|
||||||
panelRecieve.Controls.Add(labelReceive2);
|
panelRecieve.Controls.Add(labelReceive2);
|
||||||
panelRecieve.Controls.Add(textBoxReceiveAddress);
|
panelRecieve.Controls.Add(textBoxReceiveAddress);
|
||||||
panelRecieve.Controls.Add(labelReceive1);
|
panelRecieve.Controls.Add(labelReceive1);
|
||||||
panelRecieve.Location = new Point(1057, 62);
|
panelRecieve.Location = new Point(117, 34);
|
||||||
panelRecieve.Name = "panelRecieve";
|
panelRecieve.Name = "panelRecieve";
|
||||||
panelRecieve.Size = new Size(995, 523);
|
panelRecieve.Size = new Size(995, 523);
|
||||||
panelRecieve.TabIndex = 17;
|
panelRecieve.TabIndex = 17;
|
||||||
panelRecieve.Visible = false;
|
panelRecieve.Visible = false;
|
||||||
//
|
//
|
||||||
|
// buttonAddressVerify
|
||||||
|
//
|
||||||
|
buttonAddressVerify.FlatStyle = FlatStyle.Flat;
|
||||||
|
buttonAddressVerify.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||||
|
buttonAddressVerify.Location = new Point(769, 110);
|
||||||
|
buttonAddressVerify.Name = "buttonAddressVerify";
|
||||||
|
buttonAddressVerify.Size = new Size(126, 32);
|
||||||
|
buttonAddressVerify.TabIndex = 21;
|
||||||
|
buttonAddressVerify.Text = "Create && Verify";
|
||||||
|
buttonAddressVerify.UseVisualStyleBackColor = true;
|
||||||
|
buttonAddressVerify.Visible = false;
|
||||||
|
buttonAddressVerify.Click += buttonAddressVerify_Click;
|
||||||
|
//
|
||||||
// pictureBoxReceiveQR
|
// pictureBoxReceiveQR
|
||||||
//
|
//
|
||||||
pictureBoxReceiveQR.Location = new Point(391, 190);
|
pictureBoxReceiveQR.Location = new Point(391, 190);
|
||||||
@@ -937,28 +959,22 @@ namespace FireWallet
|
|||||||
textBoxExTX.Size = new Size(307, 29);
|
textBoxExTX.Size = new Size(307, 29);
|
||||||
textBoxExTX.TabIndex = 1;
|
textBoxExTX.TabIndex = 1;
|
||||||
//
|
//
|
||||||
// toolStripStatusLabelLedger
|
|
||||||
//
|
|
||||||
toolStripStatusLabelLedger.Margin = new Padding(50, 3, 50, 2);
|
|
||||||
toolStripStatusLabelLedger.Name = "toolStripStatusLabelLedger";
|
|
||||||
toolStripStatusLabelLedger.Size = new Size(71, 17);
|
|
||||||
toolStripStatusLabelLedger.Text = "Cold Wallet:";
|
|
||||||
//
|
|
||||||
// MainForm
|
// MainForm
|
||||||
//
|
//
|
||||||
AutoScaleDimensions = new SizeF(7F, 15F);
|
AutoScaleDimensions = new SizeF(7F, 15F);
|
||||||
AutoScaleMode = AutoScaleMode.Font;
|
AutoScaleMode = AutoScaleMode.Font;
|
||||||
ClientSize = new Size(1152, 575);
|
ClientSize = new Size(1152, 575);
|
||||||
|
Controls.Add(panelaccount);
|
||||||
|
Controls.Add(panelRecieve);
|
||||||
Controls.Add(panelSettings);
|
Controls.Add(panelSettings);
|
||||||
Controls.Add(panelDomains);
|
Controls.Add(panelDomains);
|
||||||
Controls.Add(panelRecieve);
|
|
||||||
Controls.Add(panelSend);
|
Controls.Add(panelSend);
|
||||||
Controls.Add(panelPortfolio);
|
Controls.Add(panelPortfolio);
|
||||||
Controls.Add(panelNav);
|
Controls.Add(panelNav);
|
||||||
Controls.Add(panelaccount);
|
|
||||||
Controls.Add(statusStripmain);
|
Controls.Add(statusStripmain);
|
||||||
Icon = (Icon)resources.GetObject("$this.Icon");
|
Icon = (Icon)resources.GetObject("$this.Icon");
|
||||||
Name = "MainForm";
|
Name = "MainForm";
|
||||||
|
Opacity = 0D;
|
||||||
Text = "FireWallet";
|
Text = "FireWallet";
|
||||||
FormClosing += MainForm_Closing;
|
FormClosing += MainForm_Closing;
|
||||||
Load += MainForm_Load;
|
Load += MainForm_Load;
|
||||||
@@ -1074,5 +1090,6 @@ namespace FireWallet
|
|||||||
private GroupBox groupBoxSettingsWallet;
|
private GroupBox groupBoxSettingsWallet;
|
||||||
private Button buttonSettingsRescan;
|
private Button buttonSettingsRescan;
|
||||||
private ToolStripStatusLabel toolStripStatusLabelLedger;
|
private ToolStripStatusLabel toolStripStatusLabelLedger;
|
||||||
|
private Button buttonAddressVerify;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -31,19 +31,24 @@ namespace FireWallet
|
|||||||
public bool batchMode { get; set; }
|
public bool batchMode { get; set; }
|
||||||
public BatchForm batchForm { get; set; }
|
public BatchForm batchForm { get; set; }
|
||||||
public bool watchOnly { get; set; }
|
public bool watchOnly { get; set; }
|
||||||
|
public bool HSD { get; set; }
|
||||||
|
|
||||||
|
public Process hsdProcess { get; set; }
|
||||||
#endregion
|
#endregion
|
||||||
#region Application
|
#region Application
|
||||||
public MainForm()
|
public MainForm()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
panelaccount.Visible = true;
|
||||||
}
|
}
|
||||||
private void MainForm_Load(object sender, EventArgs e)
|
private async void MainForm_Load(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
watchOnly = false;
|
watchOnly = false;
|
||||||
account = "";
|
account = "";
|
||||||
timerNodeStatus.Stop();
|
timerNodeStatus.Stop();
|
||||||
LoadSettings();
|
LoadSettings();
|
||||||
|
UpdateTheme();
|
||||||
|
if (await LoadNode() != true) this.Close();
|
||||||
|
|
||||||
if (userSettings.ContainsKey("hide-splash"))
|
if (userSettings.ContainsKey("hide-splash"))
|
||||||
{
|
{
|
||||||
@@ -55,9 +60,14 @@ namespace FireWallet
|
|||||||
ss.Dispose();
|
ss.Dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Show splash screen
|
||||||
|
SplashScreen ss = new SplashScreen();
|
||||||
|
ss.ShowDialog();
|
||||||
|
ss.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
UpdateTheme();
|
|
||||||
LoadNode();
|
|
||||||
|
|
||||||
|
|
||||||
// Edit the theme of the navigation panel
|
// Edit the theme of the navigation panel
|
||||||
@@ -77,13 +87,29 @@ namespace FireWallet
|
|||||||
GetAccounts();
|
GetAccounts();
|
||||||
|
|
||||||
AddLog("Loaded");
|
AddLog("Loaded");
|
||||||
|
Opacity = 1;
|
||||||
batchMode = false;
|
batchMode = false;
|
||||||
textBoxaccountpassword.Focus();
|
textBoxaccountpassword.Focus();
|
||||||
timerNodeStatus.Start();
|
|
||||||
}
|
}
|
||||||
private void MainForm_Closing(object sender, FormClosingEventArgs e)
|
private void MainForm_Closing(object sender, FormClosingEventArgs e)
|
||||||
{
|
{
|
||||||
AddLog("Closing");
|
AddLog("Closing");
|
||||||
|
if (hsdProcess != null)
|
||||||
|
{
|
||||||
|
this.Opacity = 0;
|
||||||
|
hsdProcess.Kill();
|
||||||
|
AddLog("HSD Closed");
|
||||||
|
Thread.Sleep(1000);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
hsdProcess.Dispose();
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
AddLog("Dispose failed");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@@ -91,8 +117,9 @@ namespace FireWallet
|
|||||||
|
|
||||||
|
|
||||||
#region Settings
|
#region Settings
|
||||||
private void LoadNode()
|
private async Task<bool> LoadNode()
|
||||||
{
|
{
|
||||||
|
HSD = false;
|
||||||
if (!File.Exists(dir + "node.txt"))
|
if (!File.Exists(dir + "node.txt"))
|
||||||
{
|
{
|
||||||
NodeForm cf = new NodeForm();
|
NodeForm cf = new NodeForm();
|
||||||
@@ -104,7 +131,8 @@ namespace FireWallet
|
|||||||
{
|
{
|
||||||
AddLog("Node setup failed");
|
AddLog("Node setup failed");
|
||||||
this.Close();
|
this.Close();
|
||||||
return;
|
await Task.Delay(1000);
|
||||||
|
AddLog("Close Failed");
|
||||||
}
|
}
|
||||||
|
|
||||||
StreamReader sr = new StreamReader(dir + "node.txt");
|
StreamReader sr = new StreamReader(dir + "node.txt");
|
||||||
@@ -122,7 +150,8 @@ namespace FireWallet
|
|||||||
{
|
{
|
||||||
AddLog("Node Settings file is missing key");
|
AddLog("Node Settings file is missing key");
|
||||||
this.Close();
|
this.Close();
|
||||||
return;
|
await Task.Delay(1000);
|
||||||
|
AddLog("Close Failed");
|
||||||
}
|
}
|
||||||
network = Convert.ToInt32(nodeSettings["Network"]);
|
network = Convert.ToInt32(nodeSettings["Network"]);
|
||||||
switch (network)
|
switch (network)
|
||||||
@@ -137,12 +166,77 @@ namespace FireWallet
|
|||||||
toolStripStatusLabelNetwork.Text = "Network: Testnet";
|
toolStripStatusLabelNetwork.Text = "Network: Testnet";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
NodeStatus();
|
|
||||||
|
|
||||||
|
if (nodeSettings.ContainsKey("HSD"))
|
||||||
|
{
|
||||||
|
if (nodeSettings["HSD"].ToLower() == "true")
|
||||||
|
{
|
||||||
|
HSD = true;
|
||||||
|
AddLog("Starting HSD");
|
||||||
|
toolStripStatusLabelstatus.Text = "Status: HSD Starting";
|
||||||
|
|
||||||
|
if (!Directory.Exists(dir + "hsd"))
|
||||||
|
{
|
||||||
|
NotifyForm Notifyinstall = new NotifyForm("Installing hsd\nThis may take a few minutes\nDo not close FireWallet", false);
|
||||||
|
Notifyinstall.Show();
|
||||||
|
// Wait for the notification to show
|
||||||
|
await Task.Delay(1000);
|
||||||
|
|
||||||
|
string repositoryUrl = "https://github.com/handshake-org/hsd.git";
|
||||||
|
string destinationPath = dir + "hsd";
|
||||||
|
CloneRepository(repositoryUrl, destinationPath);
|
||||||
|
|
||||||
|
Notifyinstall.CloseNotification();
|
||||||
|
Notifyinstall.Dispose();
|
||||||
|
}
|
||||||
|
hsdProcess = new Process();
|
||||||
|
|
||||||
|
bool hideScreen = true;
|
||||||
|
if (nodeSettings.ContainsKey("HideScreen"))
|
||||||
|
{
|
||||||
|
if (nodeSettings["HideScreen"].ToLower() == "false")
|
||||||
|
{
|
||||||
|
hideScreen = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try
|
||||||
|
{
|
||||||
|
hsdProcess.StartInfo.CreateNoWindow = hideScreen;
|
||||||
|
|
||||||
|
hsdProcess.StartInfo.RedirectStandardInput = true;
|
||||||
|
hsdProcess.StartInfo.RedirectStandardOutput = false;
|
||||||
|
hsdProcess.StartInfo.UseShellExecute = false;
|
||||||
|
hsdProcess.StartInfo.RedirectStandardError = false;
|
||||||
|
hsdProcess.StartInfo.FileName = "node.exe";
|
||||||
|
hsdProcess.StartInfo.Arguments = dir + "hsd/bin/hsd --index-tx --index-address --api-key " + nodeSettings["Key"];
|
||||||
|
|
||||||
|
string bobPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\Bob\\hsd_data";
|
||||||
|
if (Directory.Exists(bobPath))
|
||||||
|
{
|
||||||
|
hsdProcess.StartInfo.Arguments = hsdProcess.StartInfo.Arguments + " --prefix " + bobPath;
|
||||||
|
}
|
||||||
|
hsdProcess.Start();
|
||||||
|
// Wait for HSD to start
|
||||||
|
await Task.Delay(2000);
|
||||||
|
} catch (Exception ex)
|
||||||
|
{
|
||||||
|
AddLog("HSD Failed to start");
|
||||||
|
AddLog(ex.Message);
|
||||||
|
this.Close();
|
||||||
|
await Task.Delay(1000);
|
||||||
|
AddLog("Close Failed");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timerNodeStatus.Start();
|
||||||
|
NodeStatus();
|
||||||
|
return true;
|
||||||
|
|
||||||
}
|
}
|
||||||
private void LoadSettings()
|
private void LoadSettings()
|
||||||
{
|
{
|
||||||
|
if (!Directory.Exists(dir)) Directory.CreateDirectory(dir);
|
||||||
if (!File.Exists(dir + "settings.txt"))
|
if (!File.Exists(dir + "settings.txt"))
|
||||||
{
|
{
|
||||||
AddLog("Creating settings file");
|
AddLog("Creating settings file");
|
||||||
@@ -389,6 +483,8 @@ namespace FireWallet
|
|||||||
GetAccounts();
|
GetAccounts();
|
||||||
}
|
}
|
||||||
private async void GetAccounts()
|
private async void GetAccounts()
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
string APIresponse = await APIGet("wallet", true);
|
string APIresponse = await APIGet("wallet", true);
|
||||||
comboBoxaccount.Items.Clear();
|
comboBoxaccount.Items.Clear();
|
||||||
@@ -416,6 +512,11 @@ namespace FireWallet
|
|||||||
comboBoxaccount.Enabled = false;
|
comboBoxaccount.Enabled = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
AddLog("Error getting accounts");
|
||||||
|
}
|
||||||
|
}
|
||||||
private async Task<bool> Login()
|
private async Task<bool> Login()
|
||||||
{
|
{
|
||||||
string path = "wallet/" + account + "/unlock";
|
string path = "wallet/" + account + "/unlock";
|
||||||
@@ -458,6 +559,15 @@ namespace FireWallet
|
|||||||
if (jObject["watchOnly"].ToString() == "True") watchOnly = true;
|
if (jObject["watchOnly"].ToString() == "True") watchOnly = true;
|
||||||
else watchOnly = false;
|
else watchOnly = false;
|
||||||
toolStripStatusLabelLedger.Text = "Cold Wallet: " + watchOnly.ToString();
|
toolStripStatusLabelLedger.Text = "Cold Wallet: " + watchOnly.ToString();
|
||||||
|
|
||||||
|
if (watchOnly)
|
||||||
|
{
|
||||||
|
buttonAddressVerify.Visible = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
buttonAddressVerify.Visible = false;
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -602,6 +712,8 @@ namespace FireWallet
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<string> APIGet(string path, bool wallet)
|
public async Task<string> APIGet(string path, bool wallet)
|
||||||
{
|
{
|
||||||
|
if (nodeSettings == null) return "Error";
|
||||||
|
if (!nodeSettings.ContainsKey("Key") || !nodeSettings.ContainsKey("IP")) return "Error";
|
||||||
string key = nodeSettings["Key"];
|
string key = nodeSettings["Key"];
|
||||||
string ip = nodeSettings["IP"];
|
string ip = nodeSettings["IP"];
|
||||||
|
|
||||||
@@ -1053,7 +1165,8 @@ namespace FireWallet
|
|||||||
labelSendingError.Hide();
|
labelSendingError.Hide();
|
||||||
labelSendingError.Text = "";
|
labelSendingError.Text = "";
|
||||||
buttonNavPortfolio.PerformClick();
|
buttonNavPortfolio.PerformClick();
|
||||||
} else // Cold wallet signing
|
}
|
||||||
|
else // Cold wallet signing
|
||||||
{
|
{
|
||||||
AddLog("Sending CW " + amount.ToString() + " HNS to " + address);
|
AddLog("Sending CW " + amount.ToString() + " HNS to " + address);
|
||||||
|
|
||||||
@@ -1137,7 +1250,8 @@ namespace FireWallet
|
|||||||
textBoxSendingTo.Text = "";
|
textBoxSendingTo.Text = "";
|
||||||
textBoxSendingAmount.Text = "";
|
textBoxSendingAmount.Text = "";
|
||||||
buttonNavPortfolio.PerformClick();
|
buttonNavPortfolio.PerformClick();
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
NotifyForm notifyError = new NotifyForm("Error Transaction Failed\nCheck logs for more details");
|
NotifyForm notifyError = new NotifyForm("Error Transaction Failed\nCheck logs for more details");
|
||||||
notifyError.ShowDialog();
|
notifyError.ShowDialog();
|
||||||
@@ -1154,16 +1268,25 @@ namespace FireWallet
|
|||||||
labelSendingError.Text = ex.Message;
|
labelSendingError.Text = ex.Message;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void CloneRepository(string repositoryUrl, string destinationPath)
|
public void CloneRepository(string repositoryUrl, string destinationPath)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
bool hideScreen = true;
|
||||||
|
if (nodeSettings.ContainsKey("HideScreen"))
|
||||||
|
{
|
||||||
|
if (nodeSettings["HideScreen"].ToLower() == "false")
|
||||||
|
{
|
||||||
|
hideScreen = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ProcessStartInfo startInfo = new ProcessStartInfo();
|
ProcessStartInfo startInfo = new ProcessStartInfo();
|
||||||
startInfo.FileName = "git";
|
startInfo.FileName = "git";
|
||||||
startInfo.Arguments = $"clone {repositoryUrl} {destinationPath}";
|
startInfo.Arguments = $"clone {repositoryUrl} {destinationPath}";
|
||||||
startInfo.RedirectStandardOutput = true;
|
startInfo.RedirectStandardOutput = true;
|
||||||
startInfo.UseShellExecute = false;
|
startInfo.UseShellExecute = false;
|
||||||
startInfo.CreateNoWindow = true;
|
startInfo.CreateNoWindow = hideScreen;
|
||||||
|
|
||||||
Process process = new Process();
|
Process process = new Process();
|
||||||
process.StartInfo = startInfo;
|
process.StartInfo = startInfo;
|
||||||
@@ -1181,13 +1304,14 @@ namespace FireWallet
|
|||||||
FileName = "cmd",
|
FileName = "cmd",
|
||||||
RedirectStandardInput = true,
|
RedirectStandardInput = true,
|
||||||
WorkingDirectory = destinationPath,
|
WorkingDirectory = destinationPath,
|
||||||
CreateNoWindow = true
|
CreateNoWindow = hideScreen
|
||||||
};
|
};
|
||||||
var pNpmRunDist = Process.Start(psiNpmRunDist);
|
var pNpmRunDist = Process.Start(psiNpmRunDist);
|
||||||
pNpmRunDist.StandardInput.WriteLine("npm install & exit");
|
pNpmRunDist.StandardInput.WriteLine("npm install & exit");
|
||||||
pNpmRunDist.WaitForExit();
|
pNpmRunDist.WaitForExit();
|
||||||
|
|
||||||
|
if (repositoryUrl == "https://github.com/handshake-org/hsd-ledger.git")
|
||||||
|
{
|
||||||
// Replace /bin/hsd-ledger with /bin/hsd-ledger from
|
// Replace /bin/hsd-ledger with /bin/hsd-ledger from
|
||||||
// https://raw.githubusercontent.com/Nathanwoodburn/FireWallet/master/hsd-ledger
|
// https://raw.githubusercontent.com/Nathanwoodburn/FireWallet/master/hsd-ledger
|
||||||
// This version of hsd-ledger has the sendraw transaction function added which is needed for batching
|
// This version of hsd-ledger has the sendraw transaction function added which is needed for batching
|
||||||
@@ -1198,10 +1322,7 @@ namespace FireWallet
|
|||||||
// Download the new hsd-ledger
|
// Download the new hsd-ledger
|
||||||
WebClient downloader = new WebClient();
|
WebClient downloader = new WebClient();
|
||||||
downloader.DownloadFile("https://raw.githubusercontent.com/Nathanwoodburn/FireWallet/master/hsd-ledger", sourcePath);
|
downloader.DownloadFile("https://raw.githubusercontent.com/Nathanwoodburn/FireWallet/master/hsd-ledger", sourcePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -1209,7 +1330,7 @@ namespace FireWallet
|
|||||||
AddLog(ex.Message);
|
AddLog(ex.Message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
static bool CheckNodeInstalled()
|
public bool CheckNodeInstalled()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -1245,6 +1366,52 @@ namespace FireWallet
|
|||||||
labelReceive2.Text = "Copied to clipboard";
|
labelReceive2.Text = "Copied to clipboard";
|
||||||
labelReceive2.Left = (panelRecieve.Width - labelReceive2.Width) / 2;
|
labelReceive2.Left = (panelRecieve.Width - labelReceive2.Width) / 2;
|
||||||
}
|
}
|
||||||
|
private async void buttonAddressVerify_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
|
||||||
|
var proc = new Process();
|
||||||
|
proc.StartInfo.CreateNoWindow = true;
|
||||||
|
proc.StartInfo.RedirectStandardInput = true;
|
||||||
|
proc.StartInfo.RedirectStandardOutput = true;
|
||||||
|
proc.StartInfo.UseShellExecute = false;
|
||||||
|
proc.StartInfo.RedirectStandardError = true;
|
||||||
|
proc.StartInfo.FileName = "node.exe";
|
||||||
|
proc.StartInfo.Arguments = dir + "hsd-ledger/bin/hsd-ledger createaddress --api-key " + nodeSettings["Key"] + " -w " + account;
|
||||||
|
proc.Start();
|
||||||
|
|
||||||
|
// Wait 1 sec
|
||||||
|
await Task.Delay(1000);
|
||||||
|
|
||||||
|
// Get the output into a string
|
||||||
|
string result = proc.StandardOutput.ReadLine();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
result = result.Replace("Verify address on Ledger device: ", "");
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
AddLog(result);
|
||||||
|
textBoxReceiveAddress.Text = result;
|
||||||
|
Size size = TextRenderer.MeasureText(textBoxReceiveAddress.Text, textBoxReceiveAddress.Font);
|
||||||
|
textBoxReceiveAddress.Width = size.Width + 10;
|
||||||
|
textBoxReceiveAddress.Left = (panelRecieve.Width - textBoxReceiveAddress.Width) / 2;
|
||||||
|
|
||||||
|
|
||||||
|
NotifyForm notify = new NotifyForm("Please confirm the address on your Ledger device", false);
|
||||||
|
notify.Show();
|
||||||
|
|
||||||
|
// Handle events until process exits
|
||||||
|
while (!proc.HasExited)
|
||||||
|
{
|
||||||
|
// Check for cancellation
|
||||||
|
if (proc.WaitForExit(100))
|
||||||
|
break;
|
||||||
|
Application.DoEvents();
|
||||||
|
}
|
||||||
|
|
||||||
|
notify.CloseNotification();
|
||||||
|
notify.Dispose();
|
||||||
|
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
#region Domains
|
#region Domains
|
||||||
public string[] Domains { get; set; }
|
public string[] Domains { get; set; }
|
||||||
@@ -1462,5 +1629,7 @@ namespace FireWallet
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
1
FireWallet/NewAccountForm.Designer.cs
generated
1
FireWallet/NewAccountForm.Designer.cs
generated
@@ -104,7 +104,6 @@
|
|||||||
//
|
//
|
||||||
// buttonCold
|
// buttonCold
|
||||||
//
|
//
|
||||||
buttonCold.Enabled = false;
|
|
||||||
buttonCold.FlatStyle = FlatStyle.Flat;
|
buttonCold.FlatStyle = FlatStyle.Flat;
|
||||||
buttonCold.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
buttonCold.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||||
buttonCold.Location = new Point(147, 239);
|
buttonCold.Location = new Point(147, 239);
|
||||||
|
|||||||
@@ -2,9 +2,11 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
|
using System.Diagnostics;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
|
using System.Security.Principal;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
@@ -59,9 +61,50 @@ namespace FireWallet
|
|||||||
groupBoxNew.Text = "Import Wallet";
|
groupBoxNew.Text = "Import Wallet";
|
||||||
}
|
}
|
||||||
|
|
||||||
private void buttonCold_Click(object sender, EventArgs e)
|
private async void buttonCold_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
// TODO - Cold wallet
|
if (!Directory.Exists(mainForm.dir + "hsd-ledger"))
|
||||||
|
{
|
||||||
|
if (mainForm.CheckNodeInstalled() == false)
|
||||||
|
{
|
||||||
|
mainForm.AddLog("Node not installed");
|
||||||
|
NotifyForm notify1 = new NotifyForm("Node not installed\nPlease install it to use Ledger");
|
||||||
|
notify1.ShowDialog();
|
||||||
|
notify1.Dispose();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
mainForm.AddLog("Installing hsd-ledger");
|
||||||
|
|
||||||
|
// Try to install hsd-ledger
|
||||||
|
try
|
||||||
|
{
|
||||||
|
NotifyForm Notifyinstall = new NotifyForm("Installing hsd-ledger\nThis may take a few minutes\nDo not close FireWallet", false);
|
||||||
|
Notifyinstall.Show();
|
||||||
|
// Wait for the notification to show
|
||||||
|
await Task.Delay(1000);
|
||||||
|
|
||||||
|
string repositoryUrl = "https://github.com/handshake-org/hsd-ledger.git";
|
||||||
|
string destinationPath = mainForm.dir + "hsd-ledger";
|
||||||
|
mainForm.CloneRepository(repositoryUrl, destinationPath);
|
||||||
|
|
||||||
|
Notifyinstall.CloseNotification();
|
||||||
|
Notifyinstall.Dispose();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
NotifyForm notifyError = new NotifyForm("Error installing hsd-ledger\n" + ex.Message);
|
||||||
|
mainForm.AddLog(ex.Message);
|
||||||
|
notifyError.ShowDialog();
|
||||||
|
notifyError.Dispose();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Import HSD Wallet
|
||||||
|
groupBoxNew.Show();
|
||||||
|
groupBoxNew.Text = "Import Ledger";
|
||||||
|
buttonNext.Show();
|
||||||
|
page = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void textBoxNewName_TextChanged(object sender, EventArgs e)
|
private void textBoxNewName_TextChanged(object sender, EventArgs e)
|
||||||
@@ -152,6 +195,40 @@ namespace FireWallet
|
|||||||
notify2.Dispose();
|
notify2.Dispose();
|
||||||
this.Close();
|
this.Close();
|
||||||
}
|
}
|
||||||
|
else if (page == 4)
|
||||||
|
{
|
||||||
|
// Import Ledger
|
||||||
|
buttonNext.Enabled = false;
|
||||||
|
|
||||||
|
|
||||||
|
var proc = new Process();
|
||||||
|
proc.StartInfo.CreateNoWindow = true;
|
||||||
|
proc.StartInfo.RedirectStandardInput = true;
|
||||||
|
proc.StartInfo.RedirectStandardOutput = true;
|
||||||
|
proc.StartInfo.UseShellExecute = false;
|
||||||
|
proc.StartInfo.RedirectStandardError = true;
|
||||||
|
proc.StartInfo.FileName = "node.exe";
|
||||||
|
proc.StartInfo.Arguments = mainForm.dir + "hsd-ledger/bin/hsd-ledger createwallet " + textBoxNewPass1.Text + " --api-key " + mainForm.nodeSettings["Key"];
|
||||||
|
var outputBuilder = new StringBuilder();
|
||||||
|
|
||||||
|
// Event handler for capturing output data
|
||||||
|
proc.OutputDataReceived += (sender, args) =>
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(args.Data))
|
||||||
|
{
|
||||||
|
outputBuilder.AppendLine(args.Data);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
proc.Start();
|
||||||
|
proc.BeginOutputReadLine();
|
||||||
|
proc.WaitForExit();
|
||||||
|
|
||||||
|
mainForm.AddLog(outputBuilder.ToString());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
HttpClient httpClient = new HttpClient();
|
HttpClient httpClient = new HttpClient();
|
||||||
|
|||||||
13
FireWallet/NodeForm.Designer.cs
generated
13
FireWallet/NodeForm.Designer.cs
generated
@@ -36,6 +36,7 @@ namespace FireWallet
|
|||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(NodeForm));
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(NodeForm));
|
||||||
labelWelcome = new Label();
|
labelWelcome = new Label();
|
||||||
groupBoxNode = new GroupBox();
|
groupBoxNode = new GroupBox();
|
||||||
|
checkBoxRunHSD = new CheckBox();
|
||||||
labelNodeStatus = new Label();
|
labelNodeStatus = new Label();
|
||||||
comboBoxNodeNetwork = new ComboBox();
|
comboBoxNodeNetwork = new ComboBox();
|
||||||
buttonSave = new Button();
|
buttonSave = new Button();
|
||||||
@@ -61,6 +62,7 @@ namespace FireWallet
|
|||||||
//
|
//
|
||||||
// groupBoxNode
|
// groupBoxNode
|
||||||
//
|
//
|
||||||
|
groupBoxNode.Controls.Add(checkBoxRunHSD);
|
||||||
groupBoxNode.Controls.Add(labelNodeStatus);
|
groupBoxNode.Controls.Add(labelNodeStatus);
|
||||||
groupBoxNode.Controls.Add(comboBoxNodeNetwork);
|
groupBoxNode.Controls.Add(comboBoxNodeNetwork);
|
||||||
groupBoxNode.Controls.Add(buttonSave);
|
groupBoxNode.Controls.Add(buttonSave);
|
||||||
@@ -77,6 +79,16 @@ namespace FireWallet
|
|||||||
groupBoxNode.TabStop = false;
|
groupBoxNode.TabStop = false;
|
||||||
groupBoxNode.Text = "Node";
|
groupBoxNode.Text = "Node";
|
||||||
//
|
//
|
||||||
|
// checkBoxRunHSD
|
||||||
|
//
|
||||||
|
checkBoxRunHSD.AutoSize = true;
|
||||||
|
checkBoxRunHSD.Location = new Point(62, 100);
|
||||||
|
checkBoxRunHSD.Name = "checkBoxRunHSD";
|
||||||
|
checkBoxRunHSD.Size = new Size(304, 19);
|
||||||
|
checkBoxRunHSD.TabIndex = 10;
|
||||||
|
checkBoxRunHSD.Text = "Run HSD (use this if you don't want to run Bob/HSD)";
|
||||||
|
checkBoxRunHSD.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
// labelNodeStatus
|
// labelNodeStatus
|
||||||
//
|
//
|
||||||
labelNodeStatus.AutoSize = true;
|
labelNodeStatus.AutoSize = true;
|
||||||
@@ -193,5 +205,6 @@ namespace FireWallet
|
|||||||
private Button buttonSave;
|
private Button buttonSave;
|
||||||
private ComboBox comboBoxNodeNetwork;
|
private ComboBox comboBoxNodeNetwork;
|
||||||
private Label labelNodeStatus;
|
private Label labelNodeStatus;
|
||||||
|
private CheckBox checkBoxRunHSD;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -278,6 +278,26 @@ namespace FireWallet
|
|||||||
|
|
||||||
private void SaveSettings(object sender, EventArgs e)
|
private void SaveSettings(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
if (textBoxNodeKey.Text == "")
|
||||||
|
{
|
||||||
|
NotifyForm notifyForm = new NotifyForm("Please enter a key");
|
||||||
|
notifyForm.ShowDialog();
|
||||||
|
notifyForm.Dispose();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (checkBoxRunHSD.Checked)
|
||||||
|
{
|
||||||
|
StreamWriter sw = new StreamWriter(dir + "node.txt");
|
||||||
|
sw.WriteLine("IP: " + textBoxNodeIP.Text);
|
||||||
|
sw.WriteLine("Network: " + comboBoxNodeNetwork.SelectedIndex);
|
||||||
|
sw.WriteLine("Key: " + textBoxNodeKey.Text);
|
||||||
|
sw.WriteLine("HSD: True");
|
||||||
|
sw.Dispose();
|
||||||
|
this.Close();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
|
||||||
buttonNodeTest.PerformClick();
|
buttonNodeTest.PerformClick();
|
||||||
|
|
||||||
if (labelNodeStatus.Text != "Node Connected")
|
if (labelNodeStatus.Text != "Node Connected")
|
||||||
@@ -293,3 +313,4 @@ namespace FireWallet
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -27,10 +27,7 @@ namespace FireWallet
|
|||||||
|
|
||||||
private void SplashScreen_FormClosing(object sender, FormClosingEventArgs e)
|
private void SplashScreen_FormClosing(object sender, FormClosingEventArgs e)
|
||||||
{
|
{
|
||||||
if (!close)
|
|
||||||
{
|
|
||||||
e.Cancel = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void label2_Click(object sender, EventArgs e)
|
private void label2_Click(object sender, EventArgs e)
|
||||||
|
|||||||
@@ -21,6 +21,10 @@ This password will be used to encrypt your wallet and to login to your wallet.
|
|||||||
## First time setup
|
## First time setup
|
||||||
When you first open the wallet you will be prompted to set your node settings.
|
When you first open the wallet you will be prompted to set your node settings.
|
||||||
|
|
||||||
|
You can either connect to an existing HSD (or Bob) node or you can run your own node.
|
||||||
|
If you want to run your own node you should select the `Run HSD` option.
|
||||||
|
This will take a few minutes to download and install HSD.
|
||||||
|
|
||||||
You can get the API key from the HSD launch command or
|
You can get the API key from the HSD launch command or
|
||||||
in Bob wallet under settings > Wallet > API key.
|
in Bob wallet under settings > Wallet > API key.
|
||||||
If you change this key in HSD or Bob you will need to update it in FireWallet.
|
If you change this key in HSD or Bob you will need to update it in FireWallet.
|
||||||
|
|||||||
Reference in New Issue
Block a user