comparison ARClient/frmSettings.cs @ 0:90ea68d4f92f

First release
author Ivo Smits <Ivo@UCIS.nl>
date Sat, 08 Nov 2014 22:43:51 +0100
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:90ea68d4f92f
1 using System;
2 using System.Collections.Generic;
3 using System.IO;
4 using System.Windows.Forms;
5
6 namespace ARClient {
7 partial class frmSettings : Form {
8 public Form1 MainForm { get; set; }
9 Boolean Loading = false;
10 public frmSettings() {
11 InitializeComponent();
12 }
13
14 private void frmSettings_Load(object sender, EventArgs e) {
15 Import();
16 }
17 private void Import() {
18 Loading = true;
19 txtPublicKey.Text = MainForm.PublicKey.ToString();
20 txtSecretKey.Text = Functions.bin2hex(MainForm.SecretKey.SecretKey);
21 txtDatabase.Text = MainForm.Database;
22 lstSyncPeers.Items.Clear();
23 foreach (String peer in MainForm.Peers) lstSyncPeers.Items.Add(peer);
24 foreach (MARCKey peer in MainForm.BlockedKeys) lstFilterKey.Items.Add(peer);
25 chkFilterTypeAnonetDom.Checked = 0 != (MainForm.FilterFlags & Form1.ResourceTypeFilter.AnonetDomain);
26 chkFilterTypeAnonetIPv4.Checked = 0 != (MainForm.FilterFlags & Form1.ResourceTypeFilter.AnonetIPv4);
27 chkFilterTypeAnonetIPv6.Checked = 0 != (MainForm.FilterFlags & Form1.ResourceTypeFilter.AnonetIPv6);
28 chkFilterTypeASN.Checked = 0 != (MainForm.FilterFlags & Form1.ResourceTypeFilter.ASNumber);
29 chkFilterTypeInvalid.Checked = 0 != (MainForm.FilterFlags & Form1.ResourceTypeFilter.Invalid);
30 chkFilterTypeOther.Checked = 0 != (MainForm.FilterFlags & Form1.ResourceTypeFilter.Other);
31 chkFilterTypeOtherDom.Checked = 0 != (MainForm.FilterFlags & Form1.ResourceTypeFilter.OtherDomain);
32 chkFilterTypeOtherIPv4.Checked = 0 != (MainForm.FilterFlags & Form1.ResourceTypeFilter.OtherIPv4);
33 chkFilterTypeOtherIPv6.Checked = 0 != (MainForm.FilterFlags & Form1.ResourceTypeFilter.OtherIPv6);
34 chkFilterTypeKey.Checked = 0 != (MainForm.FilterFlags & Form1.ResourceTypeFilter.Key);
35 Loading = false;
36 }
37
38 private void btnDatabaseReload_Click(object sender, EventArgs e) {
39 MainForm.reloadDatabaseToolStripMenuItem_Click(sender, e);
40 Import();
41 }
42 private void btnDatabaseSave_Click(object sender, EventArgs e) {
43 MainForm.saveDatabaseToolStripMenuItem_Click(sender, e);
44 Import();
45 }
46 private void btnDatabaseOpen_Click(object sender, EventArgs e) {
47 MainForm.openDatabaseToolStripMenuItem_Click(sender, e);
48 Import();
49 }
50 private void btnDatabaseSaveAs_Click(object sender, EventArgs e) {
51 MainForm.saveDatabaseAsToolStripMenuItem_Click(sender, e);
52 Import();
53 }
54 private void btnDatabaseCreate_Click(object sender, EventArgs e) {
55 MainForm.newDatabaseToolStripMenuItem_Click(sender, e);
56 Import();
57 }
58
59 private void btnPeerAdd_Click(object sender, EventArgs e) {
60 frmTextInput input = new frmTextInput();
61 input.Text = "MARC - Synchronization peer";
62 input.Description = "Enter the HTTP address of the peer, including the protocol (http/https):";
63 input.Value = "http://";
64 if (input.ShowDialog(this) == DialogResult.Cancel) return;
65 MainForm.Peers.Add(input.Value);
66 lstSyncPeers.Items.Add(input.Value);
67 MainForm.DatabaseSaved = false;
68 MainForm.UpdatePeersList();
69 }
70 private void btnPeerDelete_Click(object sender, EventArgs e) {
71 if (lstSyncPeers.SelectedItem == null) return;
72 if (MainForm.Peers.Remove(lstSyncPeers.SelectedItem.ToString())) lstSyncPeers.Items.Remove(lstSyncPeers.SelectedItem);
73 MainForm.DatabaseSaved = false;
74 MainForm.UpdatePeersList();
75 }
76 private void btnPeerEdit_Click(object sender, EventArgs e) {
77 if (lstSyncPeers.SelectedItem == null) return;
78 frmTextInput input = new frmTextInput();
79 input.Text = "MARC - Synchronization peer";
80 input.Description = "Enter the HTTP address of the peer, including the protocol (http/https):";
81 input.Value = lstSyncPeers.SelectedItem.ToString();
82 if (input.ShowDialog(this) == DialogResult.Cancel) return;
83 if (MainForm.Peers.Remove(lstSyncPeers.SelectedItem.ToString())) lstSyncPeers.Items.Remove(lstSyncPeers.SelectedItem);
84 MainForm.Peers.Add(input.Value);
85 lstSyncPeers.Items.Add(input.Value);
86 MainForm.DatabaseSaved = false;
87 MainForm.UpdatePeersList();
88 }
89
90 private void btnKeypairGenerate_Click(object sender, EventArgs e) {
91 MainForm.GenerateKeyPair();
92 Import();
93 }
94
95 private void btnFilterKeyDelete_Click(object sender, EventArgs e) {
96 if (lstFilterKey.SelectedItem == null) return;
97 if (MainForm.BlockedKeys.Remove((MARCKey)lstFilterKey.SelectedItem)) lstFilterKey.Items.Remove(lstFilterKey.SelectedItem);
98 MainForm.DatabaseSaved = false;
99 }
100
101 private void chkFilterType_CheckedChanged(object sender, EventArgs e) {
102 if (Loading) return;
103 MainForm.FilterFlags =
104 (chkFilterTypeAnonetDom.Checked ? Form1.ResourceTypeFilter.AnonetDomain : 0) |
105 (chkFilterTypeAnonetIPv4.Checked ? Form1.ResourceTypeFilter.AnonetIPv4 : 0) |
106 (chkFilterTypeAnonetIPv6.Checked ? Form1.ResourceTypeFilter.AnonetIPv6 : 0) |
107 (chkFilterTypeASN.Checked ? Form1.ResourceTypeFilter.ASNumber : 0) |
108 (chkFilterTypeInvalid.Checked ? Form1.ResourceTypeFilter.Invalid : 0) |
109 (chkFilterTypeOther.Checked ? Form1.ResourceTypeFilter.Other : 0) |
110 (chkFilterTypeOtherDom.Checked ? Form1.ResourceTypeFilter.OtherDomain : 0) |
111 (chkFilterTypeOtherIPv4.Checked ? Form1.ResourceTypeFilter.OtherIPv4 : 0) |
112 (chkFilterTypeOtherIPv6.Checked ? Form1.ResourceTypeFilter.OtherIPv6 : 0) |
113 (chkFilterTypeKey.Checked ? Form1.ResourceTypeFilter.Key : 0) |
114 0;
115 MainForm.DatabaseSaved = false;
116 }
117
118 private void btnKeypairExport_Click(object sender, EventArgs e) {
119 SaveFileDialog dialog = new SaveFileDialog();
120 dialog.OverwritePrompt = true;
121 dialog.Title = "MARC - Save key pair";
122 dialog.AddExtension = true;
123 dialog.CheckPathExists = true;
124 dialog.DefaultExt = "mkp";
125 dialog.DereferenceLinks = true;
126 dialog.Filter = "Keypair files (*.mkp)|*.mkp|All files (*.*)|*.*";
127 dialog.InitialDirectory = MainForm.Database == null ? Environment.CurrentDirectory : Path.GetDirectoryName(MainForm.Database);
128 dialog.SupportMultiDottedExtensions = true;
129 dialog.ValidateNames = true;
130 if (dialog.ShowDialog(this) != DialogResult.OK) return;
131 using (Stream stream = dialog.OpenFile()) {
132 stream.SetLength(0);
133 stream.Write(MainForm.SecretKey.ExpandedKey, 0, 64);
134 }
135 }
136
137 private void btnKeypairImport_Click(object sender, EventArgs e) {
138 OpenFileDialog dialog = new OpenFileDialog();
139 dialog.CheckFileExists = true;
140 dialog.Title = "MARC - Load key pair";
141 dialog.AddExtension = true;
142 dialog.CheckPathExists = true;
143 dialog.DefaultExt = "mkp";
144 dialog.DereferenceLinks = true;
145 dialog.Filter = "Keypair files (*.mkp)|*.mkp|All files (*.*)|*.*";
146 dialog.InitialDirectory = MainForm.Database == null ? Environment.CurrentDirectory : Path.GetDirectoryName(MainForm.Database);
147 dialog.SupportMultiDottedExtensions = true;
148 dialog.ValidateNames = true;
149 if (dialog.ShowDialog(this) != DialogResult.OK) return;
150 if (DialogResult.Yes != MessageBox.Show(this, "Importing a new key pair will erase your old key pair from the local database. If you lose your key you will no longer be able to update your resource claims. Please make sure that you either have a backup of your key, or have no claims! Do you want to continue?", "MARC - Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation)) {
151 return;
152 }
153 if (DialogResult.Yes != MessageBox.Show(this, "Are you really sure you want to overwrite your key? There is no way back! Did you make a backup?", "MARC - Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation)) {
154 return;
155 }
156 using (Stream stream = dialog.OpenFile()) {
157 Byte[] sk = new Byte[32];
158 if (stream.Read(sk, 0, sk.Length) != sk.Length) return;
159 MainForm.SecretKey = new UCIS.NaCl.v2.ed25519keypair(sk);
160 MainForm.PublicKey = new MARCKey(MainForm.SecretKey.PublicKey);
161 MainForm.DatabaseSaved = false;
162 Import();
163 }
164 }
165
166 private void frmSettings_FormClosed(object sender, FormClosedEventArgs e) {
167 MainForm.RefreshResourceList();
168 }
169
170 private void btnKeypairInput_Click(object sender, EventArgs e) {
171 frmTextInput form = new frmTextInput();
172 form.Text = "MARC - Key pair input";
173 form.Description = "Input your new secret key:";
174 form.Value = Functions.bin2hex(MainForm.SecretKey.SecretKey);
175 if (form.ShowDialog(this) != DialogResult.OK) return;
176 Byte[] sk = Functions.hex2bin(form.Value);
177 if (sk.Length != 32 && sk.Length != 64) return;
178 if (DialogResult.Yes != MessageBox.Show(this, "Importing a new key pair will erase your old key pair from the local database. If you lose your key you will no longer be able to update your resource claims. Please make sure that you either have a backup of your key, or have no claims! Do you want to continue?", "MARC - Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation)) {
179 return;
180 }
181 if (DialogResult.Yes != MessageBox.Show(this, "Are you really sure you want to overwrite your key? There is no way back! Did you make a backup?", "MARC - Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation)) {
182 return;
183 }
184 MainForm.SecretKey = new UCIS.NaCl.v2.ed25519keypair(sk);
185 MainForm.PublicKey = new MARCKey(MainForm.SecretKey.PublicKey);
186 MainForm.DatabaseSaved = false;
187 Import();
188 }
189
190 private void btnFilterDeleteAllFiltered_Click(object sender, EventArgs e) {
191 List<MARCUpdate> ToDelete = new List<MARCUpdate>();
192 foreach (MARCUpdate update in MainForm.Resources.Values) {
193 if (MainForm.IsResourceFiltered(update)) ToDelete.Add(update);
194 }
195 if (ToDelete.Count == 0) return;
196 if (DialogResult.Yes != MessageBox.Show(this, "Are you really sure you want to delete " + ToDelete.Count.ToString() + " filtred resources?", "MARC - Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation)) {
197 return;
198 }
199 MainForm.lstResources.BeginUpdate();
200 MainForm.lstResources.Sorted = false;
201 foreach (MARCUpdate item in ToDelete) {
202 MainForm.Resources.Remove(item.Label);
203 MainForm.ResourceHasChanged(null, item);
204 }
205 MainForm.lstResources.Sorted = true;
206 MainForm.lstResources.EndUpdate();
207 MainForm.DatabaseSaved = false;
208 }
209 }
210 }