LumaTunnel
【WinUI】LumaTunnel 是一个面向个人多设备的 Windows 代理系统。客户端在本机提供 HTTP/HTTPS CONNECT 与 SOCKS5 TCP 代理,并通过一个受信任 TLS 证书保护的 WSS 会话,将多个 TCP 流复用到自建 Windows Server 节点。
关注
0
Fork
0
Star
0
<?xml version="1.0" encoding="utf-8"?>
<Page x:Class="LumaTunnel.Client.Views.DashboardPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Loaded="OnLoaded" Unloaded="OnUnloaded">
<ScrollViewer>
<StackPanel Padding="32,24" Spacing="18" MaxWidth="900" HorizontalAlignment="Center">
<TextBlock Text="仪表盘" FontSize="30" FontWeight="SemiBold" />
<Border CornerRadius="20" Padding="28" Background="{ThemeResource CardBackgroundFillColorDefaultBrush}" BorderBrush="{ThemeResource CardStrokeColorDefaultBrush}" BorderThickness="1">
<Grid ColumnSpacing="24">
<Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions>
<StackPanel Spacing="8">
<TextBlock Text="{x:Bind ViewModel.StatusText, Mode=OneWay}" FontSize="25" FontWeight="SemiBold" />
<TextBlock Text="{x:Bind ViewModel.CurrentNodeText, Mode=OneWay}" Opacity="0.72" />
<TextBlock Text="{x:Bind ViewModel.TrafficText, Mode=OneWay}" FontFamily="Consolas" FontSize="16" />
</StackPanel>
<Button Grid.Column="1" Command="{x:Bind ViewModel.ToggleCommand}" Content="{x:Bind ViewModel.ActionText, Mode=OneWay}" Padding="24,12" />
</Grid>
</Border>
<InfoBar x:Name="ErrorBar" IsOpen="False" Severity="Error" Title="操作失败" />
<Grid ColumnSpacing="14">
<Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
<Border Padding="18" CornerRadius="14" Background="{ThemeResource CardBackgroundFillColorDefaultBrush}"><StackPanel><TextBlock Text="HTTP 代理" Opacity=".7"/><TextBlock x:Name="HttpEndpointText" FontSize="20"/></StackPanel></Border>
<Border Grid.Column="1" Padding="18" CornerRadius="14" Background="{ThemeResource CardBackgroundFillColorDefaultBrush}"><StackPanel><TextBlock Text="SOCKS5" Opacity=".7"/><TextBlock x:Name="SocksEndpointText" FontSize="20"/></StackPanel></Border>
<Border Grid.Column="2" Padding="18" CornerRadius="14" Background="{ThemeResource CardBackgroundFillColorDefaultBrush}"><StackPanel><TextBlock Text="活动连接" Opacity=".7"/><TextBlock x:Name="ConnectionCountText" FontSize="20"/></StackPanel></Border>
</Grid>
<Border Padding="20" CornerRadius="16" Background="{ThemeResource CardBackgroundFillColorDefaultBrush}">
<StackPanel Spacing="10">
<TextBlock Text="最近 60 秒流量" FontSize="18" FontWeight="SemiBold" />
<Canvas x:Name="TrafficCanvas" Height="150">
<Polyline x:Name="UploadLine" Stroke="#39E8DA" StrokeThickness="2" />
<Polyline x:Name="DownloadLine" Stroke="#9568F2" StrokeThickness="2" />
</Canvas>
<StackPanel Orientation="Horizontal" Spacing="20"><TextBlock Text="● 上传" Foreground="#39E8DA"/><TextBlock Text="● 下载" Foreground="#9568F2"/></StackPanel>
</StackPanel>
</Border>
</StackPanel>
</ScrollViewer>
</Page>
<?xml version="1.0" encoding="utf-8"?>
<Page x:Class="LumaTunnel.Client.Views.DashboardPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Loaded="OnLoaded" Unloaded="OnUnloaded">
<ScrollViewer>
<StackPanel Padding="32,24" Spacing="18" MaxWidth="900" HorizontalAlignment="Center">
<TextBlock Text="仪表盘" FontSize="30" FontWeight="SemiBold" />
<Border CornerRadius="20" Padding="28" Background="{ThemeResource CardBackgroundFillColorDefaultBrush}" BorderBrush="{ThemeResource CardStrokeColorDefaultBrush}" BorderThickness="1">
<Grid ColumnSpacing="24">
<Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions>
<StackPanel Spacing="8">
<TextBlock Text="{x:Bind ViewModel.StatusText, Mode=OneWay}" FontSize="25" FontWeight="SemiBold" />
<TextBlock Text="{x:Bind ViewModel.CurrentNodeText, Mode=OneWay}" Opacity="0.72" />
<TextBlock Text="{x:Bind ViewModel.TrafficText, Mode=OneWay}" FontFamily="Consolas" FontSize="16" />
</StackPanel>
<Button Grid.Column="1" Command="{x:Bind ViewModel.ToggleCommand}" Content="{x:Bind ViewModel.ActionText, Mode=OneWay}" Padding="24,12" />
</Grid>
</Border>
<InfoBar x:Name="ErrorBar" IsOpen="False" Severity="Error" Title="操作失败" />
<Grid ColumnSpacing="14">
<Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
<Border Padding="18" CornerRadius="14" Background="{ThemeResource CardBackgroundFillColorDefaultBrush}"><StackPanel><TextBlock Text="HTTP 代理" Opacity=".7"/><TextBlock x:Name="HttpEndpointText" FontSize="20"/></StackPanel></Border>
<Border Grid.Column="1" Padding="18" CornerRadius="14" Background="{ThemeResource CardBackgroundFillColorDefaultBrush}"><StackPanel><TextBlock Text="SOCKS5" Opacity=".7"/><TextBlock x:Name="SocksEndpointText" FontSize="20"/></StackPanel></Border>
<Border Grid.Column="2" Padding="18" CornerRadius="14" Background="{ThemeResource CardBackgroundFillColorDefaultBrush}"><StackPanel><TextBlock Text="活动连接" Opacity=".7"/><TextBlock x:Name="ConnectionCountText" FontSize="20"/></StackPanel></Border>
</Grid>
<Border Padding="20" CornerRadius="16" Background="{ThemeResource CardBackgroundFillColorDefaultBrush}">
<StackPanel Spacing="10">
<TextBlock Text="最近 60 秒流量" FontSize="18" FontWeight="SemiBold" />
<Canvas x:Name="TrafficCanvas" Height="150">
<Polyline x:Name="UploadLine" Stroke="#39E8DA" StrokeThickness="2" />
<Polyline x:Name="DownloadLine" Stroke="#9568F2" StrokeThickness="2" />
</Canvas>
<StackPanel Orientation="Horizontal" Spacing="20"><TextBlock Text="● 上传" Foreground="#39E8DA"/><TextBlock Text="● 下载" Foreground="#9568F2"/></StackPanel>
</StackPanel>
</Border>
</StackPanel>
</ScrollViewer>
</Page>