mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-04-13 22:12:56 +00:00
Wired up connected checkbox and delete button. just something not working with refresh.
This commit is contained in:
parent
dbe1461886
commit
e48d6880c9
@ -25,10 +25,6 @@ namespace WinUI
|
||||
public delegate void NetworkListCallback(List<ZeroTierNetwork> networks);
|
||||
public delegate void StatusCallback(ZeroTierStatus status);
|
||||
|
||||
|
||||
private NetworkListCallback _networkCallbacks;
|
||||
private StatusCallback _statusCallbacks;
|
||||
|
||||
public static APIHandler Instance
|
||||
{
|
||||
get
|
||||
@ -187,7 +183,7 @@ namespace WinUI
|
||||
|
||||
request.Method = "GET";
|
||||
request.ContentType = "application/json";
|
||||
request.Timeout = 2000;
|
||||
request.Timeout = 10000;
|
||||
|
||||
try
|
||||
{
|
||||
@ -233,7 +229,7 @@ namespace WinUI
|
||||
|
||||
request.Method = "POST";
|
||||
request.ContentType = "applicaiton/json";
|
||||
request.Timeout = 2000;
|
||||
request.Timeout = 10000;
|
||||
|
||||
using (var streamWriter = new StreamWriter(((HttpWebRequest)request).GetRequestStream()))
|
||||
{
|
||||
@ -273,7 +269,7 @@ namespace WinUI
|
||||
}
|
||||
|
||||
request.Method = "DELETE";
|
||||
request.Timeout = 2000;
|
||||
request.Timeout = 10000;
|
||||
|
||||
try
|
||||
{
|
||||
|
@ -73,9 +73,12 @@
|
||||
|
||||
<Grid Grid.Column="0" Grid.Row="14" Grid.ColumnSpan="3" Background="GhostWhite">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Button x:Name="leaveButton" Content="Leave" HorizontalAlignment="Right" VerticalAlignment="Bottom" Width="75" Background="#FFFFB354" Click="leaveButton_Click"/>
|
||||
<Button x:Name="deleteButton" Grid.Column="0" Content="Delete" HorizontalAlignment="Left" VerticalAlignment="Center" Width="75" Background="#FFFFB354" Click="deleteButton_Click"/>
|
||||
<CheckBox x:Name="connectedCheckBox" Grid.Column="2" Content="Connected" HorizontalAlignment="Right" VerticalAlignment="Center" Checked="connectedCheckBox_Checked" Unchecked="connectedCheckbox_Unchecked"/>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Border>
|
||||
|
@ -79,6 +79,8 @@ namespace WinUI
|
||||
this.allowDefault.IsChecked = network.AllowDefault;
|
||||
this.allowGlobal.IsChecked = network.AllowGlobal;
|
||||
this.allowManaged.IsChecked = network.AllowManaged;
|
||||
|
||||
this.connectedCheckBox.IsChecked = network.IsConnected;
|
||||
}
|
||||
|
||||
public bool HasNetwork(ZeroTierNetwork network)
|
||||
@ -96,9 +98,10 @@ namespace WinUI
|
||||
UpdateNetworkData();
|
||||
}
|
||||
|
||||
private void leaveButton_Click(object sender, RoutedEventArgs e)
|
||||
private void deleteButton_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
APIHandler.Instance.LeaveNetwork(network.NetworkId);
|
||||
NetworkMonitor.Instance.RemoveNetwork(network.NetworkId);
|
||||
}
|
||||
|
||||
private void AllowManaged_CheckStateChanged(object sender, RoutedEventArgs e)
|
||||
@ -127,5 +130,31 @@ namespace WinUI
|
||||
allowGlobal.IsChecked ?? false,
|
||||
allowDefault.IsChecked ?? false);
|
||||
}
|
||||
|
||||
private void connectedCheckBox_Checked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
onConnectedCheckboxUpdated(true);
|
||||
}
|
||||
|
||||
private void connectedCheckbox_Unchecked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
onConnectedCheckboxUpdated(false);
|
||||
}
|
||||
|
||||
private void onConnectedCheckboxUpdated(bool isChecked)
|
||||
{
|
||||
if (isChecked)
|
||||
{
|
||||
bool global = allowGlobal.IsChecked.Value;
|
||||
bool managed = allowManaged.IsChecked.Value;
|
||||
bool defRoute = allowDefault.IsChecked.Value;
|
||||
|
||||
APIHandler.Instance.JoinNetwork(networkId.Text, managed, global, defRoute);
|
||||
}
|
||||
else
|
||||
{
|
||||
APIHandler.Instance.LeaveNetwork(networkId.Text);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -75,60 +75,14 @@
|
||||
</Window.Resources>
|
||||
|
||||
<DockPanel>
|
||||
<StatusBar DockPanel.Dock="Bottom" Height="26" Background="#FF234447" Margin="0">
|
||||
<StatusBar.ItemsPanel>
|
||||
<ItemsPanelTemplate>
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
</Grid>
|
||||
</ItemsPanelTemplate>
|
||||
</StatusBar.ItemsPanel>
|
||||
<StatusBarItem Grid.Column="0" x:Name="networkId_placeholder">
|
||||
<TextBox x:Name="networkId" Text="deadbeef00" HorizontalAlignment="Left" Grid.Column="0" Foreground="White" FontFamily="Lucida Console" BorderThickness="0" IsReadOnly="true" Background="Transparent"/>
|
||||
</StatusBarItem>
|
||||
<StatusBarItem Grid.Column="1" x:Name="onlineStatus" Content="ONLINE" Foreground="White" FontFamily="Lucida Console"/>
|
||||
<StatusBarItem Grid.Column="2" x:Name="versionString" Content="1.0.5" Foreground="White" FontFamily="Lucida Console"/>
|
||||
<StatusBarItem Grid.Column="3" x:Name="blank" Content="" Height="43" Foreground="White"/>
|
||||
<StatusBarItem Grid.Column="4">
|
||||
<TextBox x:Name="joinNetworkID" TextWrapping="Wrap" Width="140" HorizontalAlignment="Right" ToolTip="Enter Network ID" PreviewTextInput="OnNetworkEntered" MaxLength="16" FontFamily="Lucida Console" FontSize="12" BorderThickness="1"/>
|
||||
</StatusBarItem>
|
||||
<StatusBarItem Grid.Column="5" x:Name="statusBarButton" Foreground="White" RenderTransformOrigin="0.789,0.442">
|
||||
<Button x:Name="joinButton" Content="Join" Background="#FFFFB354" Width="76" Click="joinButton_Click"/>
|
||||
</StatusBarItem>
|
||||
</StatusBar>
|
||||
<!--<TabControl Margin="0,0,0,0">
|
||||
<TabItem x:Name="Networks" Header="Networks" Foreground="White" IsSelected="True" IsManipulationEnabled="True">-->
|
||||
<Grid Background="LightGray" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<local:NetworksPage x:Name="networksPage" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.Column="0" Grid.Row="0" Margin="0,0,0,0"/>
|
||||
</Grid>
|
||||
<!--</TabItem>-->
|
||||
<!--<TabItem x:Name="Peers" Header="Peers" Foreground="White">
|
||||
<Grid Background="#FFE5E5E5" HorizontalAlignment="Left" VerticalAlignment="Top">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<local:PeersPage x:Name="peersPage" HorizontalAlignment="Left" VerticalAlignment="Top" Grid.Column="0" Grid.Row="0"/>
|
||||
</Grid>
|
||||
</TabItem>-->
|
||||
<!--</TabControl>-->
|
||||
<Grid Background="LightGray" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<local:NetworksPage x:Name="networksPage" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.Column="0" Grid.Row="0" Margin="0,0,0,0"/>
|
||||
</Grid>
|
||||
</DockPanel>
|
||||
</Window>
|
||||
|
@ -28,69 +28,22 @@ namespace WinUI
|
||||
Regex charRegex = new Regex("[0-9a-fxA-FX]");
|
||||
Regex wholeStringRegex = new Regex("^[0-9a-fxA-FX]+$");
|
||||
|
||||
Timer timer = new Timer();
|
||||
|
||||
bool connected = false;
|
||||
|
||||
public NetworkListView()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
APIHandler.Instance.GetStatus(updateStatus);
|
||||
Closed += onClosed;
|
||||
|
||||
if (!connected)
|
||||
{
|
||||
MessageBox.Show("Unable to connect to ZerOTier Service");
|
||||
return;
|
||||
}
|
||||
|
||||
APIHandler.Instance.GetNetworks(updateNetworks);
|
||||
|
||||
DataObject.AddPastingHandler(joinNetworkID, OnPaste);
|
||||
|
||||
timer.Elapsed += new ElapsedEventHandler(OnUpdateTimer);
|
||||
timer.Interval = 2000;
|
||||
timer.Enabled = true;
|
||||
|
||||
|
||||
NetworkMonitor.Instance.SubscribeNetworkUpdates(updateNetworks);
|
||||
}
|
||||
|
||||
private void updateStatus(ZeroTierStatus status)
|
||||
~NetworkListView()
|
||||
{
|
||||
if (status != null)
|
||||
{
|
||||
connected = true;
|
||||
}
|
||||
|
||||
networkId.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() =>
|
||||
{
|
||||
this.networkId.Text = status.Address;
|
||||
}));
|
||||
versionString.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() =>
|
||||
{
|
||||
this.versionString.Content = status.Version;
|
||||
}));
|
||||
onlineStatus.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() =>
|
||||
{
|
||||
this.onlineStatus.Content = (status.Online ? "ONLINE" : "OFFLINE");
|
||||
}));
|
||||
}
|
||||
else
|
||||
{
|
||||
connected = false;
|
||||
|
||||
networkId.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() =>
|
||||
{
|
||||
this.networkId.Text = "";
|
||||
}));
|
||||
versionString.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() =>
|
||||
{
|
||||
this.versionString.Content = "0";
|
||||
}));
|
||||
onlineStatus.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() =>
|
||||
{
|
||||
this.onlineStatus.Content = "OFFLINE";
|
||||
}));
|
||||
}
|
||||
private void onClosed(object sender, System.EventArgs e)
|
||||
{
|
||||
NetworkMonitor.Instance.UnsubscribeNetworkUpdates(updateNetworks);
|
||||
}
|
||||
|
||||
private void updateNetworks(List<ZeroTierNetwork> networks)
|
||||
@ -104,24 +57,6 @@ namespace WinUI
|
||||
}
|
||||
}
|
||||
|
||||
private void OnUpdateTimer(object source, ElapsedEventArgs e)
|
||||
{
|
||||
APIHandler.Instance.GetStatus(updateStatus);
|
||||
APIHandler.Instance.GetNetworks(updateNetworks);
|
||||
}
|
||||
|
||||
private void joinButton_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (joinNetworkID.Text.Length < 16)
|
||||
{
|
||||
MessageBox.Show("Invalid Network ID");
|
||||
}
|
||||
else
|
||||
{
|
||||
APIHandler.Instance.JoinNetwork(joinNetworkID.Text);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnNetworkEntered(object sender, TextCompositionEventArgs e)
|
||||
{
|
||||
e.Handled = !charRegex.IsMatch(e.Text);
|
||||
|
@ -68,9 +68,13 @@ namespace WinUI
|
||||
{
|
||||
var bformatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
|
||||
netList = (List<ZeroTierNetwork>)bformatter.Deserialize(stream);
|
||||
stream.Close();
|
||||
}
|
||||
|
||||
_knownNetworks = netList;
|
||||
lock (_knownNetworks)
|
||||
{
|
||||
_knownNetworks = netList;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -86,28 +90,36 @@ namespace WinUI
|
||||
|
||||
using (Stream stream = File.Open(dataFile, FileMode.OpenOrCreate))
|
||||
{
|
||||
var bformatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
|
||||
bformatter.Serialize(stream, _knownNetworks);
|
||||
lock (_knownNetworks)
|
||||
{
|
||||
var bformatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
|
||||
bformatter.Serialize(stream, _knownNetworks);
|
||||
stream.Flush();
|
||||
stream.Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void apiNetworkCallback(List<ZeroTierNetwork> networks)
|
||||
{
|
||||
_knownNetworks = _knownNetworks.Union(networks, new NetworkEqualityComparer()).ToList();
|
||||
|
||||
foreach (ZeroTierNetwork n in _knownNetworks)
|
||||
lock (_knownNetworks)
|
||||
{
|
||||
if (networks.Contains(n))
|
||||
{
|
||||
n.IsConnected = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
n.IsConnected = false;
|
||||
}
|
||||
}
|
||||
_knownNetworks = _knownNetworks.Union(networks, new NetworkEqualityComparer()).ToList();
|
||||
|
||||
_nwCb(_knownNetworks);
|
||||
foreach (ZeroTierNetwork n in _knownNetworks)
|
||||
{
|
||||
if (networks.Contains(n))
|
||||
{
|
||||
n.IsConnected = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
n.IsConnected = false;
|
||||
}
|
||||
}
|
||||
|
||||
_nwCb(_knownNetworks);
|
||||
}
|
||||
|
||||
writeNetworks();
|
||||
}
|
||||
@ -136,7 +148,7 @@ namespace WinUI
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
||||
Console.WriteLine("Monitor Thread Ended");
|
||||
}
|
||||
}
|
||||
|
||||
@ -159,5 +171,21 @@ namespace WinUI
|
||||
{
|
||||
_nwCb -= cb;
|
||||
}
|
||||
|
||||
public void RemoveNetwork(String networkID)
|
||||
{
|
||||
lock(_knownNetworks)
|
||||
{
|
||||
foreach (ZeroTierNetwork n in _knownNetworks)
|
||||
{
|
||||
if (n.NetworkId.Equals(networkID))
|
||||
{
|
||||
_knownNetworks.Remove(n);
|
||||
writeNetworks();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user