24 Commits

Author SHA1 Message Date
64fc28d745 main: Added bids page 2023-06-21 16:56:34 +10:00
9f33c74bb0 main: Added Register support 2023-06-21 12:12:45 +10:00
8f241fc90a main: Stop logging sending HNS unless errors 2023-06-20 12:39:51 +10:00
dc09194759 readme: Added info on donating straight to @firewallet 2023-06-20 12:11:44 +10:00
638a367029 package: Increased version 2023-06-20 11:58:51 +10:00
026849575d readme: Removed warning about import UPDATE not working 2023-06-20 11:58:02 +10:00
d1a150114e main: Updated batching and docs
- Updated example-configs/batch.txt with new DNS records
- Modified BatchForm.cs to handle new DNS record types
2023-06-20 11:57:33 +10:00
5d59bdee64 dns: Updated DNS record parsing and formatting
- Added support for new DNS record types
- Improved formatting of update records in BatchForm.cs
2023-06-20 11:43:39 +10:00
74548a22e2 main: Removed unused dependencies 2023-06-19 13:24:18 +10:00
ac2aa06888 main: Fixed resizing form 2023-06-19 11:31:43 +10:00
429cf0d67b package: Increase version 2023-06-18 20:33:27 +10:00
38838096d6 readme: Added info on HIP-02 config 2023-06-18 20:28:08 +10:00
fae4bff32b main: HIP-02 fix for Bob port
If Bob is the HSD FireWallet is connected to use the default Bob DNS resolver port
2023-06-18 20:25:27 +10:00
df8c675588 Merge branch 'hip02remote' 2023-06-18 20:10:31 +10:00
de7109eddc main: Added some improvements to hip02 addresses with trailing whitespace 2023-06-18 19:58:43 +10:00
1a98a6a1c6 main: Add option to set custom hip 02 ip and port 2023-06-18 19:42:05 +10:00
859562ac22 splash: Don't require top most 2023-06-18 19:41:26 +10:00
0a5412478c main: Cleaned up code and set splash to close after node connected
- Splash will not close anymore until Node is started and connected if internal HSD running.
- Splash will not close until after 4 seconds if external HSD running
2023-06-17 15:24:13 +10:00
90cc614ebf main: Updated theme dropdown and added new menu item for other projects.
- Changed foreach loop to update the foreground and background colors of ToolStripDropDownItems
- Added a new menu item "Other Projects" to the Help dropdown menu
- Created a new event handler method for the "Other Projects" menu item click action
2023-06-17 13:47:47 +10:00
a024ce7afc readme: Added installation dependencies
- Added instructions for installing .net desktop
- Added instructions for installing Node, NPM, and git
2023-06-16 11:20:48 +10:00
88ee50f4a6 main: Dependencies install links 2023-06-15 22:56:35 +10:00
23cbace1ea package: Increased version 2023-06-15 22:28:51 +10:00
6894e9c079 main: Fixed installation of hsd 2023-06-15 22:21:12 +10:00
95d0498672 main: cleaned up code 2023-06-15 22:01:32 +10:00
17 changed files with 661 additions and 406 deletions

View File

@@ -1,12 +1,11 @@
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.Net;
using System.Runtime.InteropServices;
using System.Security.Principal;
using System.Text;
using Microsoft.VisualBasic;
using System.Windows.Forms.VisualStyles;
using Newtonsoft.Json.Linq;
using ContentAlignment = System.Drawing.ContentAlignment;
using Point = System.Drawing.Point;
namespace FireWallet
@@ -60,7 +59,7 @@ namespace FireWallet
List<Batch> temp = new List<Batch>();
foreach (Batch batch in batches)
{
if (batch.domain != domain && batch.method != operation)
if (batch.domain != domain || batch.method != operation)
{
temp.Add(batch);
}
@@ -124,7 +123,7 @@ namespace FireWallet
List<Batch> temp = new List<Batch>();
foreach (Batch batch in batches)
{
if (batch.domain != domain && batch.method != operation)
if (batch.domain != domain || batch.method != operation)
{
temp.Add(batch);
}
@@ -184,7 +183,7 @@ namespace FireWallet
List<Batch> temp = new List<Batch>();
foreach (Batch batch in batches)
{
if (batch.domain != domain && batch.method != operation)
if (batch.domain != domain || batch.method != operation)
{
temp.Add(batch);
}
@@ -240,7 +239,7 @@ namespace FireWallet
List<Batch> temp = new List<Batch>();
foreach (Batch batch in batches)
{
if (batch.domain != domain && batch.method != operation)
if (batch.domain != domain || batch.method != operation)
{
temp.Add(batch);
}
@@ -465,7 +464,7 @@ namespace FireWallet
HttpClient httpClient = new HttpClient();
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 content = "{\"method\": \"sendbatch\",\"params\":[ " + batchTX + "]}";
@@ -508,7 +507,7 @@ namespace FireWallet
JObject result = JObject.Parse(jObject["result"].ToString());
string hash = result["hash"].ToString();
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.Dispose();
this.Close();
@@ -552,7 +551,7 @@ namespace FireWallet
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.FileName = "node.exe";
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;
var outputBuilder = new StringBuilder();
@@ -578,7 +577,7 @@ namespace FireWallet
if (output.Contains("Submitted TXID"))
{
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",
"Explorer", link);
notifySuccess.ShowDialog();
@@ -620,7 +619,7 @@ namespace FireWallet
}
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
{
@@ -652,14 +651,54 @@ namespace FireWallet
{
if (split[1] == "UPDATE")
{
// Select operation and import domains
string[] newDomains = new string[domains.Length + 1];
for (int i = 0; i < domains.Length; i++)
// Join the rest of the line
string[] updateArray = new string[split.Length - 2];
for (int i = 0; i < updateArray.Length; i++)
{
newDomains[i] = domains[i];
updateArray[i] = split[i + 2];
}
newDomains[domains.Length] = split[0];
domains = newDomains;
string updateString = string.Join(",", updateArray);
updateString.TrimStart('[');
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;
}
}
@@ -712,6 +751,10 @@ namespace FireWallet
{
AddBatch(b.domain, b.method, b.toAddress);
}
else if (b.method == "UPDATE")
{
AddBatch(b.domain, b.method, b.update);
}
else
{
AddBatch(b.domain, b.method);
@@ -739,10 +782,10 @@ namespace FireWallet
/// <returns></returns>
private async Task<string> APIPost(string path, bool wallet, string content)
{
string key = mainForm.nodeSettings["Key"];
string ip = mainForm.nodeSettings["IP"];
string key = mainForm.NodeSettings["Key"];
string ip = mainForm.NodeSettings["IP"];
string port = "1203";
if (mainForm.network == 1)
if (mainForm.HSDNetwork == 1)
{
port = "1303";
}
@@ -754,21 +797,26 @@ namespace FireWallet
req.Content = new StringContent(content);
// Send request
HttpResponseMessage resp = await httpClient.SendAsync(req);
try
{
resp.EnsureSuccessStatusCode();
HttpResponseMessage resp = await httpClient.SendAsync(req);
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)
{
AddLog("Post Error: " + ex.Message);
AddLog(await resp.Content.ReadAsStringAsync());
AddLog(content);
return "Error";
}
return await resp.Content.ReadAsStringAsync();
}
}
public class Batch
@@ -830,6 +878,10 @@ namespace FireWallet
return "[\"UPDATE\", \"" + domain + "\", " + records + "]";
}
else if (method == "UPDATE")
{
return "[\"UPDATE\", \"" + domain + "\", {\"records\":[]}]";
}
return "[\"" + method + "\", \"" + domain + "\"]";
}
}

View File

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

View File

@@ -263,6 +263,21 @@ namespace FireWallet
}
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")
{
batches = new Batch[0];

View File

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

View File

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

View File

@@ -12,7 +12,7 @@
<PackageIcon>HSDBatcher.png</PackageIcon>
<RepositoryUrl>https://github.com/Nathanwoodburn/FireWallet</RepositoryUrl>
<RepositoryType>git</RepositoryType>
<Version>3.0</Version>
<Version>3.3</Version>
</PropertyGroup>
<ItemGroup>

View File

@@ -45,6 +45,8 @@ namespace FireWallet
githubToolStripMenuItem = new ToolStripMenuItem();
websiteToolStripMenuItem = new ToolStripMenuItem();
supportDiscordServerToolStripMenuItem = new ToolStripMenuItem();
toolStripSeparator1 = new ToolStripSeparator();
otherProjectsToolStripMenuItem = new ToolStripMenuItem();
timerNodeStatus = new System.Windows.Forms.Timer(components);
panelaccount = new Panel();
groupBoxaccount = new GroupBox();
@@ -56,6 +58,7 @@ namespace FireWallet
labelaccountusername = new Label();
buttonaccountnew = new Button();
panelNav = new Panel();
buttonNavBids = new Button();
buttonNavSettings = new Button();
buttonBatch = new Button();
buttonNavDomains = new Button();
@@ -95,6 +98,7 @@ namespace FireWallet
textBoxReceiveAddress = new TextBox();
labelReceive1 = new Label();
panelDomains = new Panel();
labelDomainSort = new Label();
comboBoxDomainSort = new ComboBox();
buttonExportDomains = new Button();
groupBoxDomains = new GroupBox();
@@ -123,7 +127,7 @@ namespace FireWallet
textBoxExAddr = new TextBox();
labelSettings4 = new Label();
textBoxExTX = new TextBox();
labelDomainSort = new Label();
panelBids = new Panel();
statusStripmain.SuspendLayout();
panelaccount.SuspendLayout();
groupBoxaccount.SuspendLayout();
@@ -201,7 +205,7 @@ namespace FireWallet
// toolStripDropDownButtonHelp
//
toolStripDropDownButtonHelp.DisplayStyle = ToolStripItemDisplayStyle.Text;
toolStripDropDownButtonHelp.DropDownItems.AddRange(new ToolStripItem[] { githubToolStripMenuItem, websiteToolStripMenuItem, supportDiscordServerToolStripMenuItem });
toolStripDropDownButtonHelp.DropDownItems.AddRange(new ToolStripItem[] { githubToolStripMenuItem, websiteToolStripMenuItem, supportDiscordServerToolStripMenuItem, toolStripSeparator1, otherProjectsToolStripMenuItem });
toolStripDropDownButtonHelp.Image = (Image)resources.GetObject("toolStripDropDownButtonHelp.Image");
toolStripDropDownButtonHelp.ImageTransparentColor = Color.Magenta;
toolStripDropDownButtonHelp.Margin = new Padding(20, 2, 0, 0);
@@ -231,6 +235,18 @@ namespace FireWallet
supportDiscordServerToolStripMenuItem.Text = "Support Discord Server";
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.Enabled = true;
@@ -339,6 +355,7 @@ namespace FireWallet
//
// panelNav
//
panelNav.Controls.Add(buttonNavBids);
panelNav.Controls.Add(buttonNavSettings);
panelNav.Controls.Add(buttonBatch);
panelNav.Controls.Add(buttonNavDomains);
@@ -351,6 +368,19 @@ namespace FireWallet
panelNav.Size = new Size(114, 553);
panelNav.TabIndex = 6;
//
// buttonNavBids
//
buttonNavBids.FlatStyle = FlatStyle.Flat;
buttonNavBids.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
buttonNavBids.Location = new Point(12, 245);
buttonNavBids.Name = "buttonNavBids";
buttonNavBids.Size = new Size(89, 30);
buttonNavBids.TabIndex = 5;
buttonNavBids.TabStop = false;
buttonNavBids.Text = "Bids";
buttonNavBids.UseVisualStyleBackColor = true;
buttonNavBids.Click += buttonNavBids_Click;
//
// buttonNavSettings
//
buttonNavSettings.FlatStyle = FlatStyle.Flat;
@@ -368,7 +398,7 @@ namespace FireWallet
//
buttonBatch.FlatStyle = FlatStyle.Flat;
buttonBatch.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
buttonBatch.Location = new Point(12, 245);
buttonBatch.Location = new Point(12, 300);
buttonBatch.Name = "buttonBatch";
buttonBatch.Size = new Size(89, 30);
buttonBatch.TabIndex = 3;
@@ -381,7 +411,7 @@ namespace FireWallet
//
buttonNavDomains.FlatStyle = FlatStyle.Flat;
buttonNavDomains.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
buttonNavDomains.Location = new Point(12, 189);
buttonNavDomains.Location = new Point(12, 190);
buttonNavDomains.Name = "buttonNavDomains";
buttonNavDomains.Size = new Size(89, 30);
buttonNavDomains.TabIndex = 2;
@@ -394,7 +424,7 @@ namespace FireWallet
//
buttonNavReceive.FlatStyle = FlatStyle.Flat;
buttonNavReceive.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
buttonNavReceive.Location = new Point(12, 134);
buttonNavReceive.Location = new Point(12, 135);
buttonNavReceive.Name = "buttonNavReceive";
buttonNavReceive.Size = new Size(89, 30);
buttonNavReceive.TabIndex = 1;
@@ -435,7 +465,7 @@ namespace FireWallet
panelPortfolio.Controls.Add(groupBoxTransactions);
panelPortfolio.Controls.Add(groupBoxinfo);
panelPortfolio.Controls.Add(groupBoxbalance);
panelPortfolio.Location = new Point(1065, 80);
panelPortfolio.Location = new Point(1036, 129);
panelPortfolio.Name = "panelPortfolio";
panelPortfolio.Size = new Size(956, 538);
panelPortfolio.TabIndex = 7;
@@ -574,7 +604,7 @@ namespace FireWallet
panelSend.Controls.Add(labelSendingTo);
panelSend.Controls.Add(labelSendPrompt);
panelSend.Controls.Add(labelHIPArrow);
panelSend.Location = new Point(138, 33);
panelSend.Location = new Point(1041, 235);
panelSend.Name = "panelSend";
panelSend.Size = new Size(974, 521);
panelSend.TabIndex = 2;
@@ -792,12 +822,22 @@ namespace FireWallet
panelDomains.Controls.Add(groupBoxDomains);
panelDomains.Controls.Add(labelDomainSearch);
panelDomains.Controls.Add(textBoxDomainSearch);
panelDomains.Location = new Point(120, 48);
panelDomains.Location = new Point(1122, 35);
panelDomains.Name = "panelDomains";
panelDomains.Size = new Size(920, 536);
panelDomains.TabIndex = 18;
panelDomains.Visible = false;
//
// labelDomainSort
//
labelDomainSort.AutoSize = true;
labelDomainSort.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
labelDomainSort.Location = new Point(638, 15);
labelDomainSort.Name = "labelDomainSort";
labelDomainSort.Size = new Size(42, 21);
labelDomainSort.TabIndex = 12;
labelDomainSort.Text = "Sort:";
//
// comboBoxDomainSort
//
comboBoxDomainSort.DropDownStyle = ComboBoxStyle.DropDownList;
@@ -1081,21 +1121,20 @@ namespace FireWallet
textBoxExTX.Size = new Size(307, 29);
textBoxExTX.TabIndex = 1;
//
// labelDomainSort
// panelBids
//
labelDomainSort.AutoSize = true;
labelDomainSort.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
labelDomainSort.Location = new Point(638, 15);
labelDomainSort.Name = "labelDomainSort";
labelDomainSort.Size = new Size(42, 21);
labelDomainSort.TabIndex = 12;
labelDomainSort.Text = "Sort:";
panelBids.Location = new Point(143, 44);
panelBids.Name = "panelBids";
panelBids.Size = new Size(868, 484);
panelBids.TabIndex = 20;
panelBids.Visible = false;
//
// MainForm
//
AutoScaleDimensions = new SizeF(7F, 15F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(1152, 575);
Controls.Add(panelBids);
Controls.Add(panelDomains);
Controls.Add(panelSend);
Controls.Add(panelSettings);
@@ -1110,6 +1149,7 @@ namespace FireWallet
Text = "FireWallet";
FormClosing += MainForm_Closing;
Load += MainForm_Load;
ResizeEnd += MainForm_ResizeEnd;
Resize += Form1_Resize;
statusStripmain.ResumeLayout(false);
statusStripmain.PerformLayout();
@@ -1234,5 +1274,9 @@ namespace FireWallet
private Label labelSendingHIPAddress;
private ComboBox comboBoxDomainSort;
private Label labelDomainSort;
private ToolStripSeparator toolStripSeparator1;
private ToolStripMenuItem otherProjectsToolStripMenuItem;
private Button buttonNavBids;
private Panel panelBids;
}
}

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)
{
page = 0;
Dictionary<string, string> theme = mainForm.theme;
Dictionary<string, string> theme = mainForm.Theme;
this.BackColor = ColorTranslator.FromHtml(theme["background"]);
this.ForeColor = ColorTranslator.FromHtml(theme["foreground"]);
foreach (Control c in Controls)
@@ -208,7 +208,7 @@ namespace FireWallet
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"];
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
@@ -243,10 +243,10 @@ namespace FireWallet
HttpClient httpClient = new HttpClient();
private async Task<string> APIPut(string path, bool wallet, string content)
{
string key = mainForm.nodeSettings["Key"];
string ip = mainForm.nodeSettings["IP"];
string key = mainForm.NodeSettings["Key"];
string ip = mainForm.NodeSettings["IP"];
string port = "1203";
if (mainForm.network == 1)
if (mainForm.HSDNetwork == 1)
{
port = "1303";
}

View File

@@ -28,21 +28,13 @@
/// </summary>
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SplashScreen));
timerSplashDelay = new System.Windows.Forms.Timer(components);
label1 = new Label();
pictureBox1 = new PictureBox();
label2 = new Label();
((System.ComponentModel.ISupportInitialize)pictureBox1).BeginInit();
SuspendLayout();
//
// timerSplashDelay
//
timerSplashDelay.Enabled = true;
timerSplashDelay.Interval = 3000;
timerSplashDelay.Tick += timerSplashDelay_Tick;
//
// label1
//
label1.AutoSize = true;
@@ -91,7 +83,6 @@
ShowInTaskbar = false;
StartPosition = FormStartPosition.CenterScreen;
Text = "FireWallet";
TopMost = true;
FormClosing += SplashScreen_FormClosing;
((System.ComponentModel.ISupportInitialize)pictureBox1).EndInit();
ResumeLayout(false);
@@ -99,8 +90,6 @@
}
#endregion
private System.Windows.Forms.Timer timerSplashDelay;
private Label label1;
private PictureBox pictureBox1;
private Label label2;

View File

@@ -13,23 +13,25 @@ namespace FireWallet
{
public partial class SplashScreen : Form
{
public SplashScreen()
public SplashScreen(bool timer)
{
InitializeComponent();
close = false;
}
bool close;
private void timerSplashDelay_Tick(object sender, EventArgs e)
private void SplashScreen_FormClosing(object sender, FormClosingEventArgs e)
{
if (!close)
{
e.Cancel = true;
}
}
public void CloseSplash()
{
close = true;
this.Close();
}
private void SplashScreen_FormClosing(object sender, FormClosingEventArgs e)
{
}
private void label2_Click(object sender, EventArgs e)
{
ProcessStartInfo psi = new ProcessStartInfo

View File

@@ -117,9 +117,6 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</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" />
<data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>

View File

@@ -22,8 +22,8 @@ namespace FireWallet
{
InitializeComponent();
// Theme
this.BackColor = ColorTranslator.FromHtml(mainForm.theme["background"]);
this.ForeColor = ColorTranslator.FromHtml(mainForm.theme["foreground"]);
this.BackColor = ColorTranslator.FromHtml(mainForm.Theme["background"]);
this.ForeColor = ColorTranslator.FromHtml(mainForm.Theme["foreground"]);
foreach (Control c in Controls)
{
mainForm.ThemeControl(c);
@@ -35,7 +35,7 @@ namespace FireWallet
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();
labelHash.Text = "Hash: " + tx["hash"].ToString();
@@ -142,7 +142,7 @@ namespace FireWallet
private void Explorer_Click(object sender, EventArgs e)
{
// 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
{
FileName = url,

View File

@@ -25,18 +25,18 @@ namespace FireWallet
Domain = domain;
this.Text = "Transfer " + Domain + " | FireWallet";
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
}
// Theme
this.BackColor = ColorTranslator.FromHtml(MainForm.theme["background"]);
this.ForeColor = ColorTranslator.FromHtml(MainForm.theme["foreground"]);
this.BackColor = ColorTranslator.FromHtml(MainForm.Theme["background"]);
this.ForeColor = ColorTranslator.FromHtml(MainForm.Theme["foreground"]);
foreach (Control c in Controls)
{
MainForm.ThemeControl(c);
@@ -73,7 +73,7 @@ namespace FireWallet
}
JObject result = JObject.Parse(APIresp["result"].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",
"Explorer", link);
notifySuccess.ShowDialog();

View File

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

View File

@@ -2,6 +2,14 @@
Experimental wallet for Handshake chain
## 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
You can install the latest release from [here](https://github.com/Nathanwoodburn/FireWallet/releases/).
@@ -105,9 +113,6 @@ 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.
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)
![Batch Import](assets/batch_import.png)
@@ -133,6 +138,12 @@ They are stored in `%appdata%\FireWallet\` (`C:\Users\{username}\AppData\Roaming
## settings.txt
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
This file stores the node (HSD/Bob connection) settings.
@@ -162,4 +173,5 @@ You should check this file if you have any issues with the application.
# 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 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
woodburn6,BID,1,4
woodburn8,TRANSFER,hs1qlmlgnx0g3ynk4ylxkkdh9c9nernclnfq4lw6s9
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"]}]
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"]}]