2 Commits

Author SHA1 Message Date
6218b337fb main: Added Yubikey device check and removed redundant code
- Added a check for the number of connected Yubikeys
- Removed redundant code that prompts user to insert Yubikey before unlocking.
2023-06-15 19:31:24 +10:00
79350570fd main: Added YubiKey
- Added a reference to the Yubico.YubiKey package in FireWallet.csproj

MainForm.cs: Added Yubikey login functionality
- Added code to use a connected Yubikey to encrypt and decrypt account passwords for login.

MainForm.Designer.cs: Added button for Yubikey settings
- Created a button for users to access the settings for using their Yubikey.
2023-06-15 19:08:55 +10:00
23 changed files with 1316 additions and 1343 deletions

View File

@@ -1,11 +1,12 @@
using System.Data; using System.Data;
using System.Diagnostics; using System.Diagnostics;
using System.Linq;
using System.Net; using System.Net;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Security.Principal;
using System.Text; using System.Text;
using System.Windows.Forms.VisualStyles; using Microsoft.VisualBasic;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using ContentAlignment = System.Drawing.ContentAlignment;
using Point = System.Drawing.Point; using Point = System.Drawing.Point;
namespace FireWallet namespace FireWallet
@@ -59,7 +60,7 @@ namespace FireWallet
List<Batch> temp = new List<Batch>(); List<Batch> temp = new List<Batch>();
foreach (Batch batch in batches) foreach (Batch batch in batches)
{ {
if (batch.domain != domain || batch.method != operation) if (batch.domain != domain && batch.method != operation)
{ {
temp.Add(batch); temp.Add(batch);
} }
@@ -123,7 +124,7 @@ namespace FireWallet
List<Batch> temp = new List<Batch>(); List<Batch> temp = new List<Batch>();
foreach (Batch batch in batches) foreach (Batch batch in batches)
{ {
if (batch.domain != domain || batch.method != operation) if (batch.domain != domain && batch.method != operation)
{ {
temp.Add(batch); temp.Add(batch);
} }
@@ -183,7 +184,7 @@ namespace FireWallet
List<Batch> temp = new List<Batch>(); List<Batch> temp = new List<Batch>();
foreach (Batch batch in batches) foreach (Batch batch in batches)
{ {
if (batch.domain != domain || batch.method != operation) if (batch.domain != domain && batch.method != operation)
{ {
temp.Add(batch); temp.Add(batch);
} }
@@ -239,7 +240,7 @@ namespace FireWallet
List<Batch> temp = new List<Batch>(); List<Batch> temp = new List<Batch>();
foreach (Batch batch in batches) foreach (Batch batch in batches)
{ {
if (batch.domain != domain || batch.method != operation) if (batch.domain != domain && batch.method != operation)
{ {
temp.Add(batch); temp.Add(batch);
} }
@@ -464,7 +465,7 @@ namespace FireWallet
HttpClient httpClient = new HttpClient(); HttpClient httpClient = new HttpClient();
private async void buttonSend_Click(object sender, EventArgs e) private async void buttonSend_Click(object sender, EventArgs e)
{ {
if (!mainForm.WatchOnly) if (!mainForm.watchOnly)
{ {
string batchTX = "[" + string.Join(", ", batches.Select(batch => batch.ToString())) + "]"; string batchTX = "[" + string.Join(", ", batches.Select(batch => batch.ToString())) + "]";
string content = "{\"method\": \"sendbatch\",\"params\":[ " + batchTX + "]}"; string content = "{\"method\": \"sendbatch\",\"params\":[ " + batchTX + "]}";
@@ -507,7 +508,7 @@ namespace FireWallet
JObject result = JObject.Parse(jObject["result"].ToString()); JObject result = JObject.Parse(jObject["result"].ToString());
string hash = result["hash"].ToString(); string hash = result["hash"].ToString();
AddLog("Batch sent with hash: " + hash); AddLog("Batch sent with hash: " + hash);
NotifyForm notifyForm2 = new NotifyForm("Batch sent\nThis might take a while to mine.", "Explorer", mainForm.UserSettings["explorer-tx"] + hash); NotifyForm notifyForm2 = new NotifyForm("Batch sent\nThis might take a while to mine.", "Explorer", mainForm.userSettings["explorer-tx"] + hash);
notifyForm2.ShowDialog(); notifyForm2.ShowDialog();
notifyForm2.Dispose(); notifyForm2.Dispose();
this.Close(); this.Close();
@@ -551,7 +552,7 @@ namespace FireWallet
proc.StartInfo.RedirectStandardError = true; proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.FileName = "node.exe"; proc.StartInfo.FileName = "node.exe";
proc.StartInfo.WorkingDirectory = dir + "hsd-ledger/bin/"; proc.StartInfo.WorkingDirectory = dir + "hsd-ledger/bin/";
string args = "hsd-ledger/bin/hsd-ledger sendraw \"\"" + response.Replace("\"","\\\"") + "\"\" [" + domainslist + "] --api-key " + mainForm.NodeSettings["Key"] + " -w " + mainForm.Account; string args = "hsd-ledger/bin/hsd-ledger sendraw \"\"" + response.Replace("\"","\\\"") + "\"\" [" + domainslist + "] --api-key " + mainForm.nodeSettings["Key"] + " -w " + mainForm.account;
proc.StartInfo.Arguments = dir + args; proc.StartInfo.Arguments = dir + args;
var outputBuilder = new StringBuilder(); var outputBuilder = new StringBuilder();
@@ -577,7 +578,7 @@ namespace FireWallet
if (output.Contains("Submitted TXID")) if (output.Contains("Submitted TXID"))
{ {
string hash = output.Substring(output.IndexOf("Submitted TXID") + 16, 64); string hash = output.Substring(output.IndexOf("Submitted TXID") + 16, 64);
string link = mainForm.UserSettings["explorer-tx"] + hash; string link = mainForm.userSettings["explorer-tx"] + hash;
NotifyForm notifySuccess = new NotifyForm("Transaction Sent\nThis transaction could take up to 20 minutes to mine", NotifyForm notifySuccess = new NotifyForm("Transaction Sent\nThis transaction could take up to 20 minutes to mine",
"Explorer", link); "Explorer", link);
notifySuccess.ShowDialog(); notifySuccess.ShowDialog();
@@ -619,7 +620,7 @@ namespace FireWallet
} }
else if (b.method == "UPDATE") else if (b.method == "UPDATE")
{ {
sw.WriteLine(b.domain + "," + b.method + ",[" + string.Join(";", b.update.Select(record => record.ToString())) + "]"); sw.WriteLine(b.domain + "," + b.method + ",[" + string.Join(", ", b.update.Select(record => record.ToString())) + "]");
} }
else else
{ {
@@ -651,54 +652,14 @@ namespace FireWallet
{ {
if (split[1] == "UPDATE") if (split[1] == "UPDATE")
{ {
// Join the rest of the line // Select operation and import domains
string[] updateArray = new string[split.Length - 2]; string[] newDomains = new string[domains.Length + 1];
for (int i = 0; i < updateArray.Length; i++) for (int i = 0; i < domains.Length; i++)
{ {
updateArray[i] = split[i + 2]; newDomains[i] = domains[i];
} }
string updateString = string.Join(",", updateArray); newDomains[domains.Length] = split[0];
updateString.TrimStart('['); domains = newDomains;
updateString.TrimEnd(']');
string[] updateSplit = updateString.Split(';');
DNS[] UpdateRecords = new DNS[updateSplit.Length];
int r = 0;
foreach (string update in updateSplit)
{
string[] updateRecord = update.Split(',');
string type = updateRecord[0];
type = type.Split(':')[1].Replace("\"","").Trim();
switch (type)
{
case "NS":
string ns = updateRecord[1].Split(':')[1].Replace("\"","").Replace("}","").Trim();
UpdateRecords[r] = new DNS(type, ns);
break;
case "DS":
int keyTag = int.Parse(updateRecord[1].Split(':')[1]);
int algorithm = int.Parse(updateRecord[2].Split(':')[1]);
int digestType = int.Parse(updateRecord[3].Split(':')[1]);
string digest = updateRecord[4].Split(':')[1].Replace("\"", "").Replace("}", "");
UpdateRecords[r] = new DNS(type, keyTag, algorithm, digestType, digest);
break;
case "TXT":
string txt = updateRecord[1].Split(':')[1].Replace("\"", "").Replace("}", "");
txt = txt.Replace("[", "");
txt = txt.Replace("]", "");
UpdateRecords[r] = new DNS(type, new string[] { txt.Trim() });
break;
case "GLUE4":
case "GLUE6":
string nsGlue = updateRecord[1].Split(':')[1].Replace("\"", "").Trim();
string address = updateRecord[2].Split(':')[1].Replace("\"", "").Replace("}", "").Trim();
UpdateRecords[r] = new DNS(type, nsGlue, address);
break;
}
r++;
}
AddBatch(split[0], split[1], UpdateRecords);
continue; continue;
} }
} }
@@ -751,10 +712,6 @@ namespace FireWallet
{ {
AddBatch(b.domain, b.method, b.toAddress); AddBatch(b.domain, b.method, b.toAddress);
} }
else if (b.method == "UPDATE")
{
AddBatch(b.domain, b.method, b.update);
}
else else
{ {
AddBatch(b.domain, b.method); AddBatch(b.domain, b.method);
@@ -782,10 +739,10 @@ namespace FireWallet
/// <returns></returns> /// <returns></returns>
private async Task<string> APIPost(string path, bool wallet, string content) private async Task<string> APIPost(string path, bool wallet, string content)
{ {
string key = mainForm.NodeSettings["Key"]; string key = mainForm.nodeSettings["Key"];
string ip = mainForm.NodeSettings["IP"]; string ip = mainForm.nodeSettings["IP"];
string port = "1203"; string port = "1203";
if (mainForm.HSDNetwork == 1) if (mainForm.network == 1)
{ {
port = "1303"; port = "1303";
} }
@@ -797,26 +754,21 @@ namespace FireWallet
req.Content = new StringContent(content); req.Content = new StringContent(content);
// Send request // Send request
HttpResponseMessage resp = await httpClient.SendAsync(req);
try try
{ {
HttpResponseMessage resp = await httpClient.SendAsync(req); resp.EnsureSuccessStatusCode();
if (resp.StatusCode != HttpStatusCode.OK)
{
AddLog("Post Error: " + resp.StatusCode.ToString());
AddLog(await resp.Content.ReadAsStringAsync());
AddLog(content);
return "Error";
}
return await resp.Content.ReadAsStringAsync();
} }
catch (Exception ex) catch (Exception ex)
{ {
AddLog("Post Error: " + ex.Message); AddLog("Post Error: " + ex.Message);
AddLog(await resp.Content.ReadAsStringAsync());
AddLog(content);
return "Error"; return "Error";
} }
return await resp.Content.ReadAsStringAsync();
} }
} }
public class Batch public class Batch
@@ -878,10 +830,6 @@ namespace FireWallet
return "[\"UPDATE\", \"" + domain + "\", " + records + "]"; return "[\"UPDATE\", \"" + domain + "\", " + records + "]";
} }
else if (method == "UPDATE")
{
return "[\"UPDATE\", \"" + domain + "\", {\"records\":[]}]";
}
return "[\"" + method + "\", \"" + domain + "\"]"; return "[\"" + method + "\", \"" + domain + "\"]";
} }
} }

View File

@@ -72,7 +72,7 @@
comboBoxMode.FlatStyle = FlatStyle.Flat; comboBoxMode.FlatStyle = FlatStyle.Flat;
comboBoxMode.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point); comboBoxMode.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
comboBoxMode.FormattingEnabled = true; comboBoxMode.FormattingEnabled = true;
comboBoxMode.Items.AddRange(new object[] { "OPEN", "BID", "REVEAL", "REDEEM", "REGISTER", "RENEW", "TRANSFER", "FINALIZE", "CANCEL" }); comboBoxMode.Items.AddRange(new object[] { "OPEN", "BID", "REVEAL", "REDEEM", "RENEW", "TRANSFER", "FINALIZE", "CANCEL" });
comboBoxMode.Location = new Point(346, 42); comboBoxMode.Location = new Point(346, 42);
comboBoxMode.Name = "comboBoxMode"; comboBoxMode.Name = "comboBoxMode";
comboBoxMode.Size = new Size(226, 29); comboBoxMode.Size = new Size(226, 29);

View File

@@ -263,21 +263,6 @@ namespace FireWallet
} }
this.Close(); this.Close();
} }
else if (comboBoxMode.Text == "REGISTER")
{
batches = new Batch[0];
foreach (string domain in listBoxDomains.Items)
{
if (domain != "")
{
Batch[] newBatch = new Batch[batches.Length + 1];
Array.Copy(batches, newBatch, batches.Length);
newBatch[newBatch.Length - 1] = new Batch(domain,"UPDATE",new DNS[0]);
batches = newBatch;
}
}
this.Close();
}
else if (comboBoxMode.Text == "TRANSFER") else if (comboBoxMode.Text == "TRANSFER")
{ {
batches = new Batch[0]; batches = new Batch[0];

View File

@@ -27,7 +27,7 @@ namespace FireWallet
InitializeComponent(); InitializeComponent();
this.domain = domain; this.domain = domain;
this.mainForm = mainForm; this.mainForm = mainForm;
nodeSettings = mainForm.NodeSettings; nodeSettings = mainForm.nodeSettings;
cancel = true; cancel = true;
this.Text = domain + "/ DNS | FireWallet"; this.Text = domain + "/ DNS | FireWallet";
@@ -363,12 +363,6 @@ namespace FireWallet
string contentDNS = "{\"method\": \"getnameresource\", \"params\": [\"" + domain + "\"]}"; string contentDNS = "{\"method\": \"getnameresource\", \"params\": [\"" + domain + "\"]}";
string responseDNS = await APIPost("", false, contentDNS); string responseDNS = await APIPost("", false, contentDNS);
JObject jObjectDNS = JObject.Parse(responseDNS); JObject jObjectDNS = JObject.Parse(responseDNS);
if (jObjectDNS["result"].ToString() == "")
{
return;
}
JObject result = (JObject)jObjectDNS["result"]; JObject result = (JObject)jObjectDNS["result"];
JArray records = (JArray)result["records"]; JArray records = (JArray)result["records"];
// For each record // For each record
@@ -445,7 +439,7 @@ namespace FireWallet
string key = nodeSettings["Key"]; string key = nodeSettings["Key"];
string ip = nodeSettings["IP"]; string ip = nodeSettings["IP"];
string port = "1203"; string port = "1203";
if (mainForm.HSDNetwork == 1) if (mainForm.network == 1)
{ {
port = "1303"; port = "1303";
} }
@@ -484,7 +478,7 @@ namespace FireWallet
string ip = nodeSettings["IP"]; string ip = nodeSettings["IP"];
string port = "1203"; string port = "1203";
if (mainForm.HSDNetwork == 1) if (mainForm.network == 1)
{ {
port = "1303"; port = "1303";
} }

View File

@@ -32,7 +32,7 @@ namespace FireWallet
this.explorerTX = explorerTX; this.explorerTX = explorerTX;
this.explorerName = explorerName; this.explorerName = explorerName;
this.mainForm = mainForm; this.mainForm = mainForm;
this.theme = mainForm.Theme; this.theme = mainForm.theme;
// Apply theme // Apply theme
this.BackColor = ColorTranslator.FromHtml(theme["background"]); this.BackColor = ColorTranslator.FromHtml(theme["background"]);
@@ -47,7 +47,7 @@ namespace FireWallet
mainForm.ThemeControl(c); mainForm.ThemeControl(c);
} }
applyTransparency(mainForm.Theme); applyTransparency(mainForm.theme);
} }
#region Theme #region Theme
private void applyTransparency(Dictionary<string, string> theme) private void applyTransparency(Dictionary<string, string> theme)
@@ -157,7 +157,7 @@ namespace FireWallet
network = Convert.ToInt32(nodeSettings["Network"]); network = Convert.ToInt32(nodeSettings["Network"]);
GetName(); GetName();
if (mainForm.WatchOnly) if (mainForm.watchOnly)
{ {
buttonActionMain.Enabled = false; // Only allow sending in batches for ledger buttonActionMain.Enabled = false; // Only allow sending in batches for ledger
} }
@@ -279,14 +279,6 @@ namespace FireWallet
string contentDNS = "{\"method\": \"getnameresource\", \"params\": [\"" + domain + "\"]}"; string contentDNS = "{\"method\": \"getnameresource\", \"params\": [\"" + domain + "\"]}";
string responseDNS = await APIPost("", false, contentDNS); string responseDNS = await APIPost("", false, contentDNS);
JObject jObjectDNS = JObject.Parse(responseDNS); JObject jObjectDNS = JObject.Parse(responseDNS);
if (jObjectDNS["result"].ToString() == "")
{
// Not registered
groupBoxDNS.Visible = false;
return;
}
JObject result = (JObject)jObjectDNS["result"]; JObject result = (JObject)jObjectDNS["result"];
JArray records = (JArray)result["records"]; JArray records = (JArray)result["records"];
// For each record // For each record
@@ -822,14 +814,7 @@ namespace FireWallet
if (!DNSEdit.cancel) if (!DNSEdit.cancel)
{ {
string records = ""; string records = string.Join(", ", DNSEdit.DNSrecords.Select(record => record.ToString()));
if (DNSEdit.DNSrecords != null)
{
if (DNSEdit.DNSrecords.Count() > 0)
{
records = string.Join(", ", DNSEdit.DNSrecords.Select(record => record.ToString()));
}
}
string content = "{\"method\": \"sendupdate\", \"params\": [\"" + domain + "\", {\"records\": [" + records + "]}]}"; string content = "{\"method\": \"sendupdate\", \"params\": [\"" + domain + "\", {\"records\": [" + records + "]}]}";
string response = await APIPost("", true, content); string response = await APIPost("", true, content);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

View File

@@ -6,17 +6,17 @@
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<UseWindowsForms>true</UseWindowsForms> <UseWindowsForms>true</UseWindowsForms>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<ApplicationIcon>FW.ico</ApplicationIcon> <ApplicationIcon>FW2.ico</ApplicationIcon>
<Title>FireWallet</Title> <Title>FireWallet</Title>
<PackageProjectUrl>https://l.woodburn.au</PackageProjectUrl> <PackageProjectUrl>https://l.woodburn.au</PackageProjectUrl>
<PackageIcon>HSDBatcher.png</PackageIcon> <PackageIcon>HSDBatcher.png</PackageIcon>
<RepositoryUrl>https://github.com/Nathanwoodburn/FireWallet</RepositoryUrl> <RepositoryUrl>https://github.com/Nathanwoodburn/FireWallet</RepositoryUrl>
<RepositoryType>git</RepositoryType> <RepositoryType>git</RepositoryType>
<Version>3.3</Version> <Version>3.0</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Content Include="FW.ico" /> <Content Include="FW2.ico" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
@@ -30,6 +30,7 @@
<PackageReference Include="DnsClient" Version="1.7.0" /> <PackageReference Include="DnsClient" Version="1.7.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" /> <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="QRCoder" Version="1.4.3" /> <PackageReference Include="QRCoder" Version="1.4.3" />
<PackageReference Include="Yubico.YubiKey" Version="1.7.0" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@@ -45,8 +45,6 @@ namespace FireWallet
githubToolStripMenuItem = new ToolStripMenuItem(); githubToolStripMenuItem = new ToolStripMenuItem();
websiteToolStripMenuItem = new ToolStripMenuItem(); websiteToolStripMenuItem = new ToolStripMenuItem();
supportDiscordServerToolStripMenuItem = new ToolStripMenuItem(); supportDiscordServerToolStripMenuItem = new ToolStripMenuItem();
toolStripSeparator1 = new ToolStripSeparator();
otherProjectsToolStripMenuItem = new ToolStripMenuItem();
timerNodeStatus = new System.Windows.Forms.Timer(components); timerNodeStatus = new System.Windows.Forms.Timer(components);
panelaccount = new Panel(); panelaccount = new Panel();
groupBoxaccount = new GroupBox(); groupBoxaccount = new GroupBox();
@@ -65,7 +63,6 @@ namespace FireWallet
buttonNavSend = new Button(); buttonNavSend = new Button();
buttonNavPortfolio = new Button(); buttonNavPortfolio = new Button();
panelPortfolio = new Panel(); panelPortfolio = new Panel();
buttonRedeemAll = new Button();
buttonRevealAll = new Button(); buttonRevealAll = new Button();
groupBoxTransactions = new GroupBox(); groupBoxTransactions = new GroupBox();
groupBoxinfo = new GroupBox(); groupBoxinfo = new GroupBox();
@@ -107,6 +104,7 @@ namespace FireWallet
textBoxDomainSearch = new TextBox(); textBoxDomainSearch = new TextBox();
panelSettings = new Panel(); panelSettings = new Panel();
groupBoxSettingsWallet = new GroupBox(); groupBoxSettingsWallet = new GroupBox();
buttonSettingsYubikey = new Button();
buttonSettingsRescan = new Button(); buttonSettingsRescan = new Button();
buttonSeed = new Button(); buttonSeed = new Button();
groupBoxSettingsMisc = new GroupBox(); groupBoxSettingsMisc = new GroupBox();
@@ -127,7 +125,6 @@ namespace FireWallet
textBoxExAddr = new TextBox(); textBoxExAddr = new TextBox();
labelSettings4 = new Label(); labelSettings4 = new Label();
textBoxExTX = new TextBox(); textBoxExTX = new TextBox();
buttonSendAll = new Button();
statusStripmain.SuspendLayout(); statusStripmain.SuspendLayout();
panelaccount.SuspendLayout(); panelaccount.SuspendLayout();
groupBoxaccount.SuspendLayout(); groupBoxaccount.SuspendLayout();
@@ -205,7 +202,7 @@ namespace FireWallet
// toolStripDropDownButtonHelp // toolStripDropDownButtonHelp
// //
toolStripDropDownButtonHelp.DisplayStyle = ToolStripItemDisplayStyle.Text; toolStripDropDownButtonHelp.DisplayStyle = ToolStripItemDisplayStyle.Text;
toolStripDropDownButtonHelp.DropDownItems.AddRange(new ToolStripItem[] { githubToolStripMenuItem, websiteToolStripMenuItem, supportDiscordServerToolStripMenuItem, toolStripSeparator1, otherProjectsToolStripMenuItem }); toolStripDropDownButtonHelp.DropDownItems.AddRange(new ToolStripItem[] { githubToolStripMenuItem, websiteToolStripMenuItem, supportDiscordServerToolStripMenuItem });
toolStripDropDownButtonHelp.Image = (Image)resources.GetObject("toolStripDropDownButtonHelp.Image"); toolStripDropDownButtonHelp.Image = (Image)resources.GetObject("toolStripDropDownButtonHelp.Image");
toolStripDropDownButtonHelp.ImageTransparentColor = Color.Magenta; toolStripDropDownButtonHelp.ImageTransparentColor = Color.Magenta;
toolStripDropDownButtonHelp.Margin = new Padding(20, 2, 0, 0); toolStripDropDownButtonHelp.Margin = new Padding(20, 2, 0, 0);
@@ -235,18 +232,6 @@ namespace FireWallet
supportDiscordServerToolStripMenuItem.Text = "Support Discord Server"; supportDiscordServerToolStripMenuItem.Text = "Support Discord Server";
supportDiscordServerToolStripMenuItem.Click += supportDiscordServerToolStripMenuItem_Click; supportDiscordServerToolStripMenuItem.Click += supportDiscordServerToolStripMenuItem_Click;
// //
// toolStripSeparator1
//
toolStripSeparator1.Name = "toolStripSeparator1";
toolStripSeparator1.Size = new Size(191, 6);
//
// otherProjectsToolStripMenuItem
//
otherProjectsToolStripMenuItem.Name = "otherProjectsToolStripMenuItem";
otherProjectsToolStripMenuItem.Size = new Size(194, 22);
otherProjectsToolStripMenuItem.Text = "Other Projects";
otherProjectsToolStripMenuItem.Click += otherProjectsToolStripMenuItem_Click;
//
// timerNodeStatus // timerNodeStatus
// //
timerNodeStatus.Enabled = true; timerNodeStatus.Enabled = true;
@@ -257,7 +242,7 @@ namespace FireWallet
// //
panelaccount.BackColor = Color.Transparent; panelaccount.BackColor = Color.Transparent;
panelaccount.Controls.Add(groupBoxaccount); panelaccount.Controls.Add(groupBoxaccount);
panelaccount.Location = new Point(1082, 211); panelaccount.Location = new Point(132, 30);
panelaccount.Name = "panelaccount"; panelaccount.Name = "panelaccount";
panelaccount.Size = new Size(1074, 642); panelaccount.Size = new Size(1074, 642);
panelaccount.TabIndex = 1; panelaccount.TabIndex = 1;
@@ -447,37 +432,23 @@ namespace FireWallet
// //
// panelPortfolio // panelPortfolio
// //
panelPortfolio.Controls.Add(buttonSendAll);
panelPortfolio.Controls.Add(buttonRedeemAll);
panelPortfolio.Controls.Add(buttonRevealAll); panelPortfolio.Controls.Add(buttonRevealAll);
panelPortfolio.Controls.Add(groupBoxTransactions); panelPortfolio.Controls.Add(groupBoxTransactions);
panelPortfolio.Controls.Add(groupBoxinfo); panelPortfolio.Controls.Add(groupBoxinfo);
panelPortfolio.Controls.Add(groupBoxbalance); panelPortfolio.Controls.Add(groupBoxbalance);
panelPortfolio.Location = new Point(140, 35); panelPortfolio.Location = new Point(1065, 80);
panelPortfolio.Name = "panelPortfolio"; panelPortfolio.Name = "panelPortfolio";
panelPortfolio.Size = new Size(956, 538); panelPortfolio.Size = new Size(956, 538);
panelPortfolio.TabIndex = 7; panelPortfolio.TabIndex = 7;
panelPortfolio.Visible = false; panelPortfolio.Visible = false;
// //
// buttonRedeemAll
//
buttonRedeemAll.FlatStyle = FlatStyle.Flat;
buttonRedeemAll.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
buttonRedeemAll.Location = new Point(649, 12);
buttonRedeemAll.Name = "buttonRedeemAll";
buttonRedeemAll.Size = new Size(106, 44);
buttonRedeemAll.TabIndex = 9;
buttonRedeemAll.Text = "Redeem All";
buttonRedeemAll.UseVisualStyleBackColor = true;
buttonRedeemAll.Click += buttonRedeemAll_Click;
//
// buttonRevealAll // buttonRevealAll
// //
buttonRevealAll.FlatStyle = FlatStyle.Flat; buttonRevealAll.FlatStyle = FlatStyle.Flat;
buttonRevealAll.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point); buttonRevealAll.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
buttonRevealAll.Location = new Point(537, 12); buttonRevealAll.Location = new Point(537, 12);
buttonRevealAll.Name = "buttonRevealAll"; buttonRevealAll.Name = "buttonRevealAll";
buttonRevealAll.Size = new Size(106, 44); buttonRevealAll.Size = new Size(89, 44);
buttonRevealAll.TabIndex = 9; buttonRevealAll.TabIndex = 9;
buttonRevealAll.Text = "Reveal All"; buttonRevealAll.Text = "Reveal All";
buttonRevealAll.UseVisualStyleBackColor = true; buttonRevealAll.UseVisualStyleBackColor = true;
@@ -604,7 +575,7 @@ namespace FireWallet
panelSend.Controls.Add(labelSendingTo); panelSend.Controls.Add(labelSendingTo);
panelSend.Controls.Add(labelSendPrompt); panelSend.Controls.Add(labelSendPrompt);
panelSend.Controls.Add(labelHIPArrow); panelSend.Controls.Add(labelHIPArrow);
panelSend.Location = new Point(1041, 235); panelSend.Location = new Point(880, 441);
panelSend.Name = "panelSend"; panelSend.Name = "panelSend";
panelSend.Size = new Size(974, 521); panelSend.Size = new Size(974, 521);
panelSend.TabIndex = 2; panelSend.TabIndex = 2;
@@ -822,7 +793,7 @@ namespace FireWallet
panelDomains.Controls.Add(groupBoxDomains); panelDomains.Controls.Add(groupBoxDomains);
panelDomains.Controls.Add(labelDomainSearch); panelDomains.Controls.Add(labelDomainSearch);
panelDomains.Controls.Add(textBoxDomainSearch); panelDomains.Controls.Add(textBoxDomainSearch);
panelDomains.Location = new Point(1122, 35); panelDomains.Location = new Point(861, 364);
panelDomains.Name = "panelDomains"; panelDomains.Name = "panelDomains";
panelDomains.Size = new Size(920, 536); panelDomains.Size = new Size(920, 536);
panelDomains.TabIndex = 18; panelDomains.TabIndex = 18;
@@ -911,7 +882,7 @@ namespace FireWallet
panelSettings.Controls.Add(buttonSettingsSave); panelSettings.Controls.Add(buttonSettingsSave);
panelSettings.Controls.Add(groupBoxSettingsExplorer); panelSettings.Controls.Add(groupBoxSettingsExplorer);
panelSettings.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point); panelSettings.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
panelSettings.Location = new Point(1065, 51); panelSettings.Location = new Point(848, 306);
panelSettings.Name = "panelSettings"; panelSettings.Name = "panelSettings";
panelSettings.Size = new Size(930, 550); panelSettings.Size = new Size(930, 550);
panelSettings.TabIndex = 19; panelSettings.TabIndex = 19;
@@ -919,6 +890,7 @@ namespace FireWallet
// //
// groupBoxSettingsWallet // groupBoxSettingsWallet
// //
groupBoxSettingsWallet.Controls.Add(buttonSettingsYubikey);
groupBoxSettingsWallet.Controls.Add(buttonSettingsRescan); groupBoxSettingsWallet.Controls.Add(buttonSettingsRescan);
groupBoxSettingsWallet.Controls.Add(buttonSeed); groupBoxSettingsWallet.Controls.Add(buttonSeed);
groupBoxSettingsWallet.Location = new Point(507, 16); groupBoxSettingsWallet.Location = new Point(507, 16);
@@ -928,6 +900,17 @@ namespace FireWallet
groupBoxSettingsWallet.TabStop = false; groupBoxSettingsWallet.TabStop = false;
groupBoxSettingsWallet.Text = "Wallet Controls"; groupBoxSettingsWallet.Text = "Wallet Controls";
// //
// buttonSettingsYubikey
//
buttonSettingsYubikey.FlatStyle = FlatStyle.Flat;
buttonSettingsYubikey.Location = new Point(6, 133);
buttonSettingsYubikey.Name = "buttonSettingsYubikey";
buttonSettingsYubikey.Size = new Size(98, 50);
buttonSettingsYubikey.TabIndex = 9;
buttonSettingsYubikey.Text = "YubiKey";
buttonSettingsYubikey.UseVisualStyleBackColor = true;
buttonSettingsYubikey.Click += buttonSettingsYubikey_Click;
//
// buttonSettingsRescan // buttonSettingsRescan
// //
buttonSettingsRescan.FlatStyle = FlatStyle.Flat; buttonSettingsRescan.FlatStyle = FlatStyle.Flat;
@@ -1121,27 +1104,15 @@ namespace FireWallet
textBoxExTX.Size = new Size(307, 29); textBoxExTX.Size = new Size(307, 29);
textBoxExTX.TabIndex = 1; textBoxExTX.TabIndex = 1;
// //
// buttonSendAll
//
buttonSendAll.FlatStyle = FlatStyle.Flat;
buttonSendAll.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
buttonSendAll.Location = new Point(761, 12);
buttonSendAll.Name = "buttonSendAll";
buttonSendAll.Size = new Size(106, 44);
buttonSendAll.TabIndex = 9;
buttonSendAll.Text = "Send All TXs";
buttonSendAll.UseVisualStyleBackColor = true;
buttonSendAll.Click += buttonSendAll_Click;
//
// 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(panelSettings);
Controls.Add(panelDomains); Controls.Add(panelDomains);
Controls.Add(panelSend); Controls.Add(panelSend);
Controls.Add(panelSettings);
Controls.Add(panelaccount);
Controls.Add(panelPortfolio); Controls.Add(panelPortfolio);
Controls.Add(panelRecieve); Controls.Add(panelRecieve);
Controls.Add(panelNav); Controls.Add(panelNav);
@@ -1152,7 +1123,6 @@ namespace FireWallet
Text = "FireWallet"; Text = "FireWallet";
FormClosing += MainForm_Closing; FormClosing += MainForm_Closing;
Load += MainForm_Load; Load += MainForm_Load;
ResizeEnd += MainForm_ResizeEnd;
Resize += Form1_Resize; Resize += Form1_Resize;
statusStripmain.ResumeLayout(false); statusStripmain.ResumeLayout(false);
statusStripmain.PerformLayout(); statusStripmain.PerformLayout();
@@ -1277,9 +1247,6 @@ namespace FireWallet
private Label labelSendingHIPAddress; private Label labelSendingHIPAddress;
private ComboBox comboBoxDomainSort; private ComboBox comboBoxDomainSort;
private Label labelDomainSort; private Label labelDomainSort;
private ToolStripSeparator toolStripSeparator1; private Button buttonSettingsYubikey;
private ToolStripMenuItem otherProjectsToolStripMenuItem;
private Button buttonRedeemAll;
private Button buttonSendAll;
} }
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -27,7 +27,7 @@ namespace FireWallet
private void NewAccountForm_Load(object sender, EventArgs e) private void NewAccountForm_Load(object sender, EventArgs e)
{ {
page = 0; page = 0;
Dictionary<string, string> theme = mainForm.Theme; Dictionary<string, string> theme = mainForm.theme;
this.BackColor = ColorTranslator.FromHtml(theme["background"]); this.BackColor = ColorTranslator.FromHtml(theme["background"]);
this.ForeColor = ColorTranslator.FromHtml(theme["foreground"]); this.ForeColor = ColorTranslator.FromHtml(theme["foreground"]);
foreach (Control c in Controls) foreach (Control c in Controls)
@@ -208,7 +208,7 @@ namespace FireWallet
proc.StartInfo.UseShellExecute = false; proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardError = true; proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.FileName = "node.exe"; proc.StartInfo.FileName = "node.exe";
proc.StartInfo.Arguments = mainForm.dir + "hsd-ledger/bin/hsd-ledger createwallet " + textBoxNewPass1.Text + " --api-key " + mainForm.NodeSettings["Key"]; proc.StartInfo.Arguments = mainForm.dir + "hsd-ledger/bin/hsd-ledger createwallet " + textBoxNewPass1.Text + " --api-key " + mainForm.nodeSettings["Key"];
var outputBuilder = new StringBuilder(); var outputBuilder = new StringBuilder();
// Event handler for capturing output data // Event handler for capturing output data
@@ -243,10 +243,10 @@ namespace FireWallet
HttpClient httpClient = new HttpClient(); HttpClient httpClient = new HttpClient();
private async Task<string> APIPut(string path, bool wallet, string content) private async Task<string> APIPut(string path, bool wallet, string content)
{ {
string key = mainForm.NodeSettings["Key"]; string key = mainForm.nodeSettings["Key"];
string ip = mainForm.NodeSettings["IP"]; string ip = mainForm.nodeSettings["IP"];
string port = "1203"; string port = "1203";
if (mainForm.HSDNetwork == 1) if (mainForm.network == 1)
{ {
port = "1303"; port = "1303";
} }

View File

@@ -59,15 +59,5 @@ namespace FireWallet.Properties {
resourceCulture = value; resourceCulture = value;
} }
} }
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap FWSplash {
get {
object obj = ResourceManager.GetObject("FWSplash", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
} }
} }

View File

@@ -117,8 +117,4 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="FWSplash" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\FWSplash.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root> </root>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

View File

@@ -30,18 +30,19 @@
{ {
components = new System.ComponentModel.Container(); components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SplashScreen)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SplashScreen));
timerSplashDelay = new System.Windows.Forms.Timer(components);
label1 = new Label(); label1 = new Label();
pictureBox1 = new PictureBox(); pictureBox1 = new PictureBox();
label2 = new Label(); label2 = new Label();
panelNew = new Panel();
pictureBoxNew = new PictureBox();
timerIn = new System.Windows.Forms.Timer(components);
timerOut = new System.Windows.Forms.Timer(components);
((System.ComponentModel.ISupportInitialize)pictureBox1).BeginInit(); ((System.ComponentModel.ISupportInitialize)pictureBox1).BeginInit();
panelNew.SuspendLayout();
((System.ComponentModel.ISupportInitialize)pictureBoxNew).BeginInit();
SuspendLayout(); SuspendLayout();
// //
// timerSplashDelay
//
timerSplashDelay.Enabled = true;
timerSplashDelay.Interval = 3000;
timerSplashDelay.Tick += timerSplashDelay_Tick;
//
// label1 // label1
// //
label1.AutoSize = true; label1.AutoSize = true;
@@ -74,45 +75,12 @@
label2.Text = "Nathan.Woodburn/"; label2.Text = "Nathan.Woodburn/";
label2.Click += label2_Click; label2.Click += label2_Click;
// //
// panelNew
//
panelNew.Controls.Add(pictureBoxNew);
panelNew.Dock = DockStyle.Fill;
panelNew.Location = new Point(0, 0);
panelNew.Name = "panelNew";
panelNew.Size = new Size(450, 450);
panelNew.TabIndex = 3;
//
// pictureBoxNew
//
pictureBoxNew.BackColor = Color.Black;
pictureBoxNew.Dock = DockStyle.Fill;
pictureBoxNew.Image = Properties.Resources.FWSplash;
pictureBoxNew.InitialImage = null;
pictureBoxNew.Location = new Point(0, 0);
pictureBoxNew.Name = "pictureBoxNew";
pictureBoxNew.Size = new Size(450, 450);
pictureBoxNew.SizeMode = PictureBoxSizeMode.Zoom;
pictureBoxNew.TabIndex = 0;
pictureBoxNew.TabStop = false;
pictureBoxNew.Visible = false;
//
// timerIn
//
timerIn.Enabled = true;
timerIn.Tick += timerIn_Tick;
//
// timerOut
//
timerOut.Tick += timerOut_Tick;
//
// SplashScreen // SplashScreen
// //
AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleDimensions = new SizeF(7F, 15F);
AutoScaleMode = AutoScaleMode.Font; AutoScaleMode = AutoScaleMode.Font;
BackColor = Color.Black; BackColor = Color.Black;
ClientSize = new Size(450, 450); ClientSize = new Size(444, 435);
Controls.Add(panelNew);
Controls.Add(label2); Controls.Add(label2);
Controls.Add(pictureBox1); Controls.Add(pictureBox1);
Controls.Add(label1); Controls.Add(label1);
@@ -125,21 +93,16 @@
Text = "FireWallet"; Text = "FireWallet";
TopMost = true; TopMost = true;
FormClosing += SplashScreen_FormClosing; FormClosing += SplashScreen_FormClosing;
Load += SplashScreen_Load;
((System.ComponentModel.ISupportInitialize)pictureBox1).EndInit(); ((System.ComponentModel.ISupportInitialize)pictureBox1).EndInit();
panelNew.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)pictureBoxNew).EndInit();
ResumeLayout(false); ResumeLayout(false);
PerformLayout(); PerformLayout();
} }
#endregion #endregion
private System.Windows.Forms.Timer timerSplashDelay;
private Label label1; private Label label1;
private PictureBox pictureBox1; private PictureBox pictureBox1;
private Label label2; private Label label2;
private Panel panelNew;
private PictureBox pictureBoxNew;
private System.Windows.Forms.Timer timerIn;
private System.Windows.Forms.Timer timerOut;
} }
} }

View File

@@ -1,35 +1,35 @@
using System.Diagnostics; using System;
using System.Drawing.Imaging; using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace FireWallet namespace FireWallet
{ {
public partial class SplashScreen : Form public partial class SplashScreen : Form
{ {
public SplashScreen(bool timer) public SplashScreen()
{ {
InitializeComponent(); InitializeComponent();
close = false; close = false;
IsClosed = false;
} }
bool close; bool close;
float opacity = 0.0f; private void timerSplashDelay_Tick(object sender, EventArgs e)
private void SplashScreen_FormClosing(object sender, FormClosingEventArgs e)
{
if (!close)
{
e.Cancel = true;
}
}
public bool IsClosed { get; set; }
public void CloseSplash()
{ {
close = true; close = true;
this.Close();
// Fade out
timerIn.Stop();
timerOut.Start();
} }
private void SplashScreen_FormClosing(object sender, FormClosingEventArgs e)
{
}
private void label2_Click(object sender, EventArgs e) private void label2_Click(object sender, EventArgs e)
{ {
ProcessStartInfo psi = new ProcessStartInfo ProcessStartInfo psi = new ProcessStartInfo
@@ -39,56 +39,5 @@ namespace FireWallet
}; };
Process.Start(psi); Process.Start(psi);
} }
Bitmap splash = new Bitmap(Properties.Resources.FWSplash);
private void SplashScreen_Load(object sender, EventArgs e)
{
pictureBoxNew.Visible = true;
this.TransparencyKey = Color.FromArgb(0, 0, 0);
pictureBoxNew.Invalidate();
}
public Image SetImageOpacity(Image image, float opacity)
{
try
{
Bitmap bmp = new Bitmap(image.Width, image.Height);
using (Graphics gfx = Graphics.FromImage(bmp))
{
ColorMatrix matrix = new ColorMatrix();
matrix.Matrix33 = opacity;
ImageAttributes attributes = new ImageAttributes();
attributes.SetColorMatrix(matrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
gfx.DrawImage(image, new Rectangle(0, 0, bmp.Width, bmp.Height), 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, attributes);
}
return bmp;
}
catch
{
return null;
}
}
private void timerIn_Tick(object sender, EventArgs e)
{
if (opacity >= 1)
{
timerIn.Stop();
return;
}
opacity += 0.05f;
pictureBoxNew.Image = SetImageOpacity(splash, opacity);
pictureBoxNew.Invalidate();
}
private void timerOut_Tick(object sender, EventArgs e)
{
if (opacity <= 0)
{
timerOut.Stop();
IsClosed = true;
this.Close();
return;
}
opacity -= 0.05f;
pictureBoxNew.Image = SetImageOpacity(splash, opacity);
pictureBoxNew.Invalidate();
}
} }
} }

View File

@@ -117,6 +117,9 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<metadata name="timerSplashDelay.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
@@ -898,12 +901,6 @@
AAAAAAAAAAAAAADQwWbM+D8RAPjBClJL0gAAAABJRU5ErkJggg== AAAAAAAAAAAAAADQwWbM+D8RAPjBClJL0gAAAABJRU5ErkJggg==
</value> </value>
</data> </data>
<metadata name="timerIn.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="timerOut.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>104, 17</value>
</metadata>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
AAABAAEAAAAAAAEAIAB2pAAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAOEAAADAAgGAAAAfG+p9QAAIABJ AAABAAEAAAAAAAEAIAB2pAAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAOEAAADAAgGAAAAfG+p9QAAIABJ

View File

@@ -22,8 +22,8 @@ namespace FireWallet
{ {
InitializeComponent(); InitializeComponent();
// Theme // Theme
this.BackColor = ColorTranslator.FromHtml(mainForm.Theme["background"]); this.BackColor = ColorTranslator.FromHtml(mainForm.theme["background"]);
this.ForeColor = ColorTranslator.FromHtml(mainForm.Theme["foreground"]); this.ForeColor = ColorTranslator.FromHtml(mainForm.theme["foreground"]);
foreach (Control c in Controls) foreach (Control c in Controls)
{ {
mainForm.ThemeControl(c); mainForm.ThemeControl(c);
@@ -35,7 +35,7 @@ namespace FireWallet
private async void TXForm_Load(object sender, EventArgs e) private async void TXForm_Load(object sender, EventArgs e)
{ {
tx = JObject.Parse(await mainForm.APIGet("wallet/"+mainForm.Account+"/tx/" + txid,true)); tx = JObject.Parse(await mainForm.APIGet("wallet/"+mainForm.account+"/tx/" + txid,true));
this.Text = "TX: " + tx["hash"].ToString(); this.Text = "TX: " + tx["hash"].ToString();
labelHash.Text = "Hash: " + tx["hash"].ToString(); labelHash.Text = "Hash: " + tx["hash"].ToString();
@@ -142,7 +142,7 @@ namespace FireWallet
private void Explorer_Click(object sender, EventArgs e) private void Explorer_Click(object sender, EventArgs e)
{ {
// Open the transaction in a browser // Open the transaction in a browser
string url = mainForm.UserSettings["explorer-tx"] + tx["hash"].ToString(); string url = mainForm.userSettings["explorer-tx"] + tx["hash"].ToString();
ProcessStartInfo psi = new ProcessStartInfo ProcessStartInfo psi = new ProcessStartInfo
{ {
FileName = url, FileName = url,

View File

@@ -25,18 +25,18 @@ namespace FireWallet
Domain = domain; Domain = domain;
this.Text = "Transfer " + Domain + " | FireWallet"; this.Text = "Transfer " + Domain + " | FireWallet";
label1.Text = "Transfer " + Domain; label1.Text = "Transfer " + Domain;
if (MainForm.Theme.ContainsKey("error")) if (MainForm.theme.ContainsKey("error"))
{ {
labelError.ForeColor = ColorTranslator.FromHtml(MainForm.Theme["error"]); labelError.ForeColor = ColorTranslator.FromHtml(MainForm.theme["error"]);
} }
if (MainForm.WatchOnly) if (MainForm.watchOnly)
{ {
buttonTransfer.Enabled = false; // watch only wallet only batch buttonTransfer.Enabled = false; // watch only wallet only batch
} }
// Theme // Theme
this.BackColor = ColorTranslator.FromHtml(MainForm.Theme["background"]); this.BackColor = ColorTranslator.FromHtml(MainForm.theme["background"]);
this.ForeColor = ColorTranslator.FromHtml(MainForm.Theme["foreground"]); this.ForeColor = ColorTranslator.FromHtml(MainForm.theme["foreground"]);
foreach (Control c in Controls) foreach (Control c in Controls)
{ {
MainForm.ThemeControl(c); MainForm.ThemeControl(c);
@@ -73,7 +73,7 @@ namespace FireWallet
} }
JObject result = JObject.Parse(APIresp["result"].ToString()); JObject result = JObject.Parse(APIresp["result"].ToString());
string hash = result["hash"].ToString(); string hash = result["hash"].ToString();
string link = MainForm.UserSettings["explorer-tx"] + hash; string link = MainForm.userSettings["explorer-tx"] + hash;
NotifyForm notifySuccess = new NotifyForm("Transaction Sent\nThis transaction could take up to 20 minutes to mine", NotifyForm notifySuccess = new NotifyForm("Transaction Sent\nThis transaction could take up to 20 minutes to mine",
"Explorer", link); "Explorer", link);
notifySuccess.ShowDialog(); notifySuccess.ShowDialog();

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

View File

@@ -224,15 +224,15 @@
{ {
"Name" = "8:Microsoft Visual Studio" "Name" = "8:Microsoft Visual Studio"
"ProductName" = "8:FireWallet" "ProductName" = "8:FireWallet"
"ProductCode" = "8:{C118B90C-B5A0-4015-B03A-FB226DC02F54}" "ProductCode" = "8:{007B0A5E-57B9-4DB7-AABE-5A3631A89BEB}"
"PackageCode" = "8:{FF49B317-BBC1-40D9-9AFF-315E3AEED79C}" "PackageCode" = "8:{546D4209-3E58-4144-A9DC-E659A2482DD4}"
"UpgradeCode" = "8:{0C86F725-6B01-4173-AA05-3F0EDF481362}" "UpgradeCode" = "8:{0C86F725-6B01-4173-AA05-3F0EDF481362}"
"AspNetVersion" = "8:" "AspNetVersion" = "8:"
"RestartWWWService" = "11:FALSE" "RestartWWWService" = "11:FALSE"
"RemovePreviousVersions" = "11:TRUE" "RemovePreviousVersions" = "11:TRUE"
"DetectNewerInstalledVersion" = "11:TRUE" "DetectNewerInstalledVersion" = "11:TRUE"
"InstallAllUsers" = "11:FALSE" "InstallAllUsers" = "11:FALSE"
"ProductVersion" = "8:3.3" "ProductVersion" = "8:3.0"
"Manufacturer" = "8:Nathan.Woodburn/" "Manufacturer" = "8:Nathan.Woodburn/"
"ARPHELPTELEPHONE" = "8:" "ARPHELPTELEPHONE" = "8:"
"ARPHELPLINK" = "8:https://l.woodburn.au/discord" "ARPHELPLINK" = "8:https://l.woodburn.au/discord"

View File

@@ -2,14 +2,6 @@
Experimental wallet for Handshake chain Experimental wallet for Handshake chain
## Installation ## Installation
### Dependencies
You will need .net desktop installed. You can download it from [here](https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/runtime-desktop-6.0.18-windows-x64-installer).
You will also need Node, NPM, and git installed if you want to use the internal HSD or Ledger wallets.
[Git](https://git-scm.com/downloads)
[Node](https://nodejs.org/en/download/)
[NPM](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)
### From Releases ### From Releases
You can install the latest release from [here](https://github.com/Nathanwoodburn/FireWallet/releases/). You can install the latest release from [here](https://github.com/Nathanwoodburn/FireWallet/releases/).
@@ -113,6 +105,9 @@ You can add transactions to the batch from the domain window or the DNS editor.
You can also import a list of domains to the batch window. You can also import a list of domains to the batch window.
The "CANCEL" transaction type is used to cancel an transfer. The "CANCEL" transaction type is used to cancel an transfer.
At the momemt "UPDATE" or coin only transactions are not supported.
Please not that the import syntax for BIDs is BID,LOCKUP where LOCKUP is (BID+BLIND) Please not that the import syntax for BIDs is BID,LOCKUP where LOCKUP is (BID+BLIND)
![Batch Import](assets/batch_import.png) ![Batch Import](assets/batch_import.png)
@@ -138,12 +133,6 @@ They are stored in `%appdata%\FireWallet\` (`C:\Users\{username}\AppData\Roaming
## settings.txt ## settings.txt
This file stores the user settings for the application. This file stores the user settings for the application.
If you want to change the default HIP-02 resolver you can add these settings
```yaml
hip-02-ip: 127.0.0.1
hip-02-port: 5350
```
## node.txt ## node.txt
This file stores the node (HSD/Bob connection) settings. This file stores the node (HSD/Bob connection) settings.
@@ -173,5 +162,4 @@ You should check this file if you have any issues with the application.
# Support # Support
If you have any issues with the application you can open an issue on GitHub or contact me on Discord (NathanWoodburn on most Handshake servers). If you have any issues with the application you can open an issue on GitHub or contact me on Discord (NathanWoodburn on most Handshake servers).
If you would like to support this project you can find out how at https://nathan.woodburn.au/#donate or you can help by contributing to the project on GitHub. If you would like to support this project you can find out how at https://nathan.woodburn.au/#donate or you can help by contributing to the project on GitHub.
Also you can send HNS directly to `@firewallet`

View File

@@ -6,4 +6,4 @@ woodburn4,BID,1,3
woodburn5,BID,1,3 woodburn5,BID,1,3
woodburn6,BID,1,4 woodburn6,BID,1,4
woodburn8,TRANSFER,hs1qlmlgnx0g3ynk4ylxkkdh9c9nernclnfq4lw6s9 woodburn8,TRANSFER,hs1qlmlgnx0g3ynk4ylxkkdh9c9nernclnfq4lw6s9
exampledomainnathan90,UPDATE,[{"type": "NS","ns": "ns1.woodburn."};{"type": "NS","ns": "ns2.woodburn."};{"type": "DS","keyTag": 30273,"algorithm": 13,"digestType": 2,"digest":"9a3a8fb3d625d2a2073d740f10da6056ebed0e97f550aa7f3891ed450c7e60c9"};{"type": "GLUE4","ns": "ns1.exampledomainnathan90.","address": "1.2.3.4"};{"type": "TXT","txt": ["Test TXT record"]}] exampledomainnathan118,UPDATE,[{"type": "DS","keyTag": 20167,"algorithm": 13,"digestType": 2,"digest":"4a2ab3224727a4754a6c3d77621a5b04241a3d9c7ae7e5fa17f73121b9ff0e06"}, {"type": "NS","ns": "ns1.woodburn."}, {"type": "NS","ns": "ns2.woodburn."}, {"type": "TXT","txt": ["TEST"]}]