mirror of
https://github.com/snltty/linker.git
synced 2025-10-05 17:16:56 +08:00
app
This commit is contained in:
20
.github/workflows/dotnet.yml
vendored
20
.github/workflows/dotnet.yml
vendored
@@ -250,3 +250,23 @@ jobs:
|
|||||||
bucket: ide-qbcode
|
bucket: ide-qbcode
|
||||||
asset-path: ./src/linker/linker-install.sh
|
asset-path: ./src/linker/linker-install.sh
|
||||||
target-path: /downloads/linker/linker-install.sh
|
target-path: /downloads/linker/linker-install.sh
|
||||||
|
- name: upload-apk-oss
|
||||||
|
id: upload-apk-oss
|
||||||
|
uses: tvrcgo/oss-action@v0.1.1
|
||||||
|
with:
|
||||||
|
region: oss-cn-shenzhen
|
||||||
|
key-id: ${{ secrets.ALIYUN_OSS_ID }}
|
||||||
|
key-secret: ${{ secrets.ALIYUN_OSS_SECRET }}
|
||||||
|
bucket: ide-qbcode
|
||||||
|
asset-path: ./public/publish-zip/linker.apk
|
||||||
|
target-path: /downloads/linker/v1.7.4/linker.apk
|
||||||
|
- name: upload-apk
|
||||||
|
id: upload-apk
|
||||||
|
uses: actions/upload-release-asset@master
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.ACTIONS_TOKEN }}
|
||||||
|
with:
|
||||||
|
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||||
|
asset_path: ./public/publish-zip/linker.apk
|
||||||
|
asset_name: linker.apk
|
||||||
|
asset_content_type: application/apk
|
||||||
|
@@ -128,7 +128,7 @@ function writeUpload(data, tagName) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
/*
|
|
||||||
data.jobs.build.steps.push({
|
data.jobs.build.steps.push({
|
||||||
name: `upload-apk-oss`,
|
name: `upload-apk-oss`,
|
||||||
id: `upload-apk-oss`,
|
id: `upload-apk-oss`,
|
||||||
@@ -156,7 +156,7 @@ function writeUpload(data, tagName) {
|
|||||||
'asset_content_type': 'application/apk'
|
'asset_content_type': 'application/apk'
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
function writeUploadIpk(data, tagName) {
|
function writeUploadIpk(data, tagName) {
|
||||||
const platforms = ['x64', 'arm', 'arm64'];
|
const platforms = ['x64', 'arm', 'arm64'];
|
||||||
|
@@ -18,8 +18,8 @@ cd ../../
|
|||||||
echo F|xcopy "version.txt" "public\\version.txt" /f /h /y
|
echo F|xcopy "version.txt" "public\\version.txt" /f /h /y
|
||||||
|
|
||||||
echo F|xcopy "public\\extends\\any\\web\\*" "src\\linker.app\\public\\web\\*" /s /f /h /y
|
echo F|xcopy "public\\extends\\any\\web\\*" "src\\linker.app\\public\\web\\*" /s /f /h /y
|
||||||
rem dotnet publish ./src/linker.app -c:Release -f:net8.0-android /p:AndroidSigningKeyPass=123321 /p:AndroidSdkDirectory=%sdkpath%
|
dotnet publish ./src/linker.app -c:Release -f:net8.0-android /p:AndroidSigningKeyPass=123321 /p:AndroidSdkDirectory=%sdkpath%
|
||||||
rem echo F|xcopy "src\\linker.app\\bin\\Release\\net8.0-android\\publish\\com.snltty.linker.app-Signed.apk" "public\\publish-zip\\linker.apk" /s /f /h /y
|
echo F|xcopy "src\\linker.app\\bin\\Release\\net8.0-android\\publish\\com.snltty.linker.app-Signed.apk" "public\\publish-zip\\linker.apk" /s /f /h /y
|
||||||
|
|
||||||
for %%r in (win-x86,win-x64,win-arm64) do (
|
for %%r in (win-x86,win-x64,win-arm64) do (
|
||||||
echo F|xcopy "src\\linker.tray.win\\dist\\*" "public\\extends\\%%r\\linker-%%r\\*" /s /f /h /y
|
echo F|xcopy "src\\linker.tray.win\\dist\\*" "public\\extends\\%%r\\linker-%%r\\*" /s /f /h /y
|
||||||
|
@@ -12,8 +12,6 @@ namespace linker.app
|
|||||||
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
|
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
|
||||||
TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException;
|
TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
MainPage = new MainPage();
|
MainPage = new MainPage();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -30,7 +28,7 @@ namespace linker.app
|
|||||||
}
|
}
|
||||||
private void HandleException(Exception ex)
|
private void HandleException(Exception ex)
|
||||||
{
|
{
|
||||||
System.Diagnostics.Debug.WriteLine($"全局异常: {ex}");
|
//System.Diagnostics.Debug.WriteLine($"全局异常: {ex}");
|
||||||
/*
|
/*
|
||||||
MainThread.BeginInvokeOnMainThread(async () =>
|
MainThread.BeginInvokeOnMainThread(async () =>
|
||||||
{
|
{
|
||||||
|
@@ -2,9 +2,9 @@
|
|||||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<IsFirstTimeProjectOpen>False</IsFirstTimeProjectOpen>
|
<IsFirstTimeProjectOpen>False</IsFirstTimeProjectOpen>
|
||||||
<ActiveDebugFramework>net8.0-ios</ActiveDebugFramework>
|
<ActiveDebugFramework>net8.0-android</ActiveDebugFramework>
|
||||||
<ActiveDebugProfile>模拟器</ActiveDebugProfile>
|
<ActiveDebugProfile>Pixel 5 - API 34 (Android 14.0 - API 34)</ActiveDebugProfile>
|
||||||
<SelectedPlatformGroup>Simulator</SelectedPlatformGroup>
|
<SelectedPlatformGroup>Emulator</SelectedPlatformGroup>
|
||||||
<DefaultDevice>pixel_5_-_api_34</DefaultDevice>
|
<DefaultDevice>pixel_5_-_api_34</DefaultDevice>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net8.0-android|AnyCPU'">
|
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net8.0-android|AnyCPU'">
|
||||||
|
1
src/linker.app/public/web/css/260.891b317e.css
Normal file
1
src/linker.app/public/web/css/260.891b317e.css
Normal file
File diff suppressed because one or more lines are too long
1
src/linker.app/public/web/css/270.96c012fe.css
Normal file
1
src/linker.app/public/web/css/270.96c012fe.css
Normal file
File diff suppressed because one or more lines are too long
1
src/linker.app/public/web/css/353.753df2fe.css
Normal file
1
src/linker.app/public/web/css/353.753df2fe.css
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
src/linker.app/public/web/google.svg
Normal file
1
src/linker.app/public/web/google.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1745458919168" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2606" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M214.101333 512c0-32.512 5.546667-63.701333 15.36-92.928L57.173333 290.218667A491.861333 491.861333 0 0 0 4.693333 512c0 79.701333 18.858667 154.88 52.394667 221.610667l172.202667-129.066667A290.56 290.56 0 0 1 214.101333 512" fill="#FBBC05" p-id="2607"></path><path d="M516.693333 216.192c72.106667 0 137.258667 25.002667 188.458667 65.962667L854.101333 136.533333C763.349333 59.178667 646.997333 11.392 516.693333 11.392c-202.325333 0-376.234667 113.28-459.52 278.826667l172.373334 128.853333c39.68-118.016 152.832-202.88 287.146666-202.88" fill="#EA4335" p-id="2608"></path><path d="M516.693333 807.808c-134.357333 0-247.509333-84.864-287.232-202.88l-172.288 128.853333c83.242667 165.546667 257.152 278.826667 459.52 278.826667 124.842667 0 244.053333-43.392 333.568-124.757333l-163.584-123.818667c-46.122667 28.458667-104.234667 43.776-170.026666 43.776" fill="#34A853" p-id="2609"></path><path d="M1005.397333 512c0-29.568-4.693333-61.44-11.648-91.008H516.650667V614.4h274.602666c-13.696 65.962667-51.072 116.650667-104.533333 149.632l163.541333 123.818667c93.994667-85.418667 155.136-212.650667 155.136-375.850667" fill="#4285F4" p-id="2610"></path></svg>
|
After Width: | Height: | Size: 1.5 KiB |
@@ -1 +1 @@
|
|||||||
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>linker.web</title><link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=" crossorigin=""/><script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js" integrity="sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo=" crossorigin=""></script><script defer="defer" src="js/chunk-vendors.cfba5739.js"></script><script defer="defer" src="js/app.33e5fb11.js"></script><link href="css/chunk-vendors.d8267b33.css" rel="stylesheet"><link href="css/app.7c444b43.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but linker.web doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
|
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>linker.web</title><link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=" crossorigin=""/><script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js" integrity="sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo=" crossorigin=""></script><script defer="defer" src="js/chunk-vendors.cfba5739.js"></script><script defer="defer" src="js/app.9d5a1c80.js"></script><link href="css/chunk-vendors.d8267b33.css" rel="stylesheet"><link href="css/app.7c444b43.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but linker.web doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
src/linker.app/public/web/js/260.458d1487.js
Normal file
1
src/linker.app/public/web/js/260.458d1487.js
Normal file
File diff suppressed because one or more lines are too long
1
src/linker.app/public/web/js/270.e7d9bf4d.js
Normal file
1
src/linker.app/public/web/js/270.e7d9bf4d.js
Normal file
@@ -0,0 +1 @@
|
|||||||
|
"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[270],{7332:function(e,n,a){a.r(n),a.d(n,{default:function(){return O}});var t=a(6768);const s={class:"net-wrap app-wrap"},l={class:"inner absolute flex flex-column flex-nowrap"},i={class:"head"},o={class:"body flex-1 relative"},c={class:"status"};function r(e,n,a,r,u,d){const g=(0,t.g2)("Head"),p=(0,t.g2)("List"),v=(0,t.g2)("Status");return(0,t.uX)(),(0,t.CE)("div",s,[(0,t.Lk)("div",l,[(0,t.Lk)("div",i,[(0,t.bF)(g)]),(0,t.Lk)("div",o,[(0,t.bF)(p)]),(0,t.Lk)("div",c,[(0,t.bF)(v,{config:!1})])])])}a(4114);var u=a(4232);const d=e=>((0,t.Qi)("data-v-6bfe19a3"),e=e(),(0,t.jt)(),e),g={class:"head-wrap"},p={class:"tools flex"},v={class:"label"},h=d((()=>(0,t.Lk)("span",{class:"flex-1"},null,-1))),f={style:{"margin-left":"1rem"}};function k(e,n,a,s,l,i){const o=(0,t.g2)("Refresh"),c=(0,t.g2)("el-icon"),r=(0,t.g2)("el-button"),d=(0,t.g2)("Background");return(0,t.uX)(),(0,t.CE)("div",g,[(0,t.Lk)("div",p,[(0,t.Lk)("span",v,"分组 : "+(0,u.v_)(s.state.group),1),h,(0,t.bF)(r,{size:"small",onClick:s.handleRefresh},{default:(0,t.k6)((()=>[(0,t.eW)(" 刷新(F5)"),(0,t.bF)(c,null,{default:(0,t.k6)((()=>[(0,t.bF)(o)])),_:1})])),_:1},8,["onClick"]),(0,t.Lk)("div",f,[(0,t.bF)(d,{name:"net"})])])])}var C=a(3830),m=a(144),b=a(7477),L=a(5096),_={components:{Edit:b.ffu,Refresh:b.C42,Background:L.A},setup(){const e=(0,C.B)(),n=(0,m.Kh)({server:(0,t.EW)((()=>e.value.config.Client.Server.Host)),group:(0,t.EW)((()=>e.value.config.Client.Group.Name))}),a=()=>{window.location.reload()};return{state:n,handleRefresh:a}}},w=a(1241);const S=(0,w.A)(_,[["render",k],["__scopeId","data-v-6bfe19a3"]]);var F=S;const x=e=>((0,t.Qi)("data-v-68d1c30a"),e=e(),(0,t.jt)(),e),T={class:"net-list-wrap flex flex-column absolute"},z={class:"flex-1 scrollbar"},E={class:"flex"},A=x((()=>(0,t.Lk)("div",{class:"flex-1"},null,-1))),I={class:"tuntap"},P={class:"page t-c"},B={class:"page-wrap t-c"};function R(e,n,a,s,l,i){const o=(0,t.g2)("DeviceName"),c=(0,t.g2)("UpdaterBtn"),r=(0,t.g2)("TuntapShow"),u=(0,t.g2)("el-pagination");return(0,t.uX)(),(0,t.CE)("div",T,[(0,t.Lk)("div",z,[(0,t.Lk)("ul",null,[((0,t.uX)(!0),(0,t.CE)(t.FK,null,(0,t.pI)(s.devices.page.List,((e,n)=>((0,t.uX)(),(0,t.CE)("li",{key:n},[(0,t.Lk)("dl",null,[(0,t.Lk)("dt",E,[(0,t.Lk)("div",null,[(0,t.bF)(o,{item:e},null,8,["item"])]),A,(0,t.Lk)("div",null,[(0,t.bF)(c,{config:!1,item:e},null,8,["item"])])]),(0,t.Lk)("dd",I,[s.tuntap.list[e.MachineId]?((0,t.uX)(),(0,t.Wv)(r,{key:0,item:e},null,8,["item"])):(0,t.Q3)("",!0)])])])))),128))])]),(0,t.Lk)("div",P,[(0,t.Lk)("div",B,[(0,t.bF)(u,{size:"small",background:"",layout:"prev,pager, next","pager-count":5,total:s.devices.page.Count,"page-size":s.devices.page.Request.Size,"current-page":s.devices.page.Request.Page,onCurrentChange:s.handlePageChange,onSizeChange:s.handlePageSizeChange,"page-sizes":[10,20,50,100,255]},null,8,["total","page-size","current-page","onCurrentChange","onSizeChange"])])])])}var D=a(8104),X=a(7985),y=a(9383),N=a(7115),U=a(263),Q=a(3694),W=a(9983),H={components:{StarFilled:b.BQ2,UpdaterBtn:N.A,DeviceName:U.A,TuntapShow:Q.A},setup(e){(0,C.B)();const n=(0,m.Kh)({}),{devices:a,machineId:s,_getSignList:l,_getSignList1:i,handleDeviceEdit:o,handlePageChange:c,handlePageSizeChange:r,handleDel:u,clearDevicesTimeout:d}=(0,X.r)(),{tuntap:g,_getTuntapInfo:p,handleTuntapRefresh:v,clearTuntapTimeout:h,handleTuntapEdit:f,sortTuntapIP:k}=(0,D.O)(),{_getUpdater:b,_subscribeUpdater:L,clearUpdaterTimeout:_}=(0,y.d)(),{connections:w,forwardConnections:S,_getForwardConnections:F,tuntapConnections:x,_getTuntapConnections:T,socks5Connections:z,_getSocks5Connections:E,handleTunnelConnections:A,clearConnectionsTimeout:I}=(0,W.L2)();return(0,t.sV)((()=>{c(),v(),l(),i(),p(),b(),L()})),(0,t.hi)((()=>{d(),h(),_()})),{state:n,devices:a,machineId:s,handlePageChange:c,handlePageSizeChange:r,tuntap:g}}};const K=(0,w.A)(H,[["render",R],["__scopeId","data-v-68d1c30a"]]);var j=K,q=a(9653),M=a(1387),V={components:{Head:F,List:j,Status:q.A},setup(){document.addEventListener("contextmenu",(function(e){e.preventDefault()}));const e=(0,C.B)(),n=(0,M.rd)();return(0,t.sV)((()=>{0==e.value.hasAccess("NetManager")&&n.push({name:"NoPermission"})})),{}}};const G=(0,w.A)(V,[["render",r],["__scopeId","data-v-6a3f3b43"]]);var O=G}}]);
|
File diff suppressed because one or more lines are too long
1
src/linker.app/public/web/js/32.c86fd9ce.js
Normal file
1
src/linker.app/public/web/js/32.c86fd9ce.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
src/linker.app/public/web/js/353.eaaf2d3e.js
Normal file
1
src/linker.app/public/web/js/353.eaaf2d3e.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
src/linker.app/public/web/js/736.3a98830e.js
Normal file
1
src/linker.app/public/web/js/736.3a98830e.js
Normal file
File diff suppressed because one or more lines are too long
1
src/linker.app/public/web/js/754.f9bdb301.js
Normal file
1
src/linker.app/public/web/js/754.f9bdb301.js
Normal file
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
|||||||
"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[922],{427:function(e,n,a){a.r(n),a.d(n,{default:function(){return O}});var t=a(6768);const s={class:"net-wrap app-wrap"},l={class:"inner absolute flex flex-column flex-nowrap"},i={class:"head"},o={class:"body flex-1 relative"},c={class:"status"};function r(e,n,a,r,u,d){const g=(0,t.g2)("Head"),p=(0,t.g2)("List"),v=(0,t.g2)("Status");return(0,t.uX)(),(0,t.CE)("div",s,[(0,t.Lk)("div",l,[(0,t.Lk)("div",i,[(0,t.bF)(g)]),(0,t.Lk)("div",o,[(0,t.bF)(p)]),(0,t.Lk)("div",c,[(0,t.bF)(v,{config:!1})])])])}a(4114);const u=e=>((0,t.Qi)("data-v-1fd9ef80"),e=e(),(0,t.jt)(),e),d={class:"head-wrap"},g={class:"tools flex"},p=u((()=>(0,t.Lk)("span",{class:"label"},"服务器 ",-1))),v=u((()=>(0,t.Lk)("span",{class:"flex-1"},null,-1))),h={style:{"margin-left":"1rem"}};function f(e,n,a,s,l,i){const o=(0,t.g2)("el-input"),c=(0,t.g2)("Refresh"),r=(0,t.g2)("el-icon"),u=(0,t.g2)("el-button"),f=(0,t.g2)("Background");return(0,t.uX)(),(0,t.CE)("div",d,[(0,t.Lk)("div",g,[p,(0,t.bF)(o,{modelValue:s.state.server,"onUpdate:modelValue":n[0]||(n[0]=e=>s.state.server=e),readonly:"",style:{width:"14rem"},size:"small"},null,8,["modelValue"]),v,(0,t.bF)(u,{size:"small",onClick:s.handleRefresh},{default:(0,t.k6)((()=>[(0,t.eW)(" 刷新(F5)"),(0,t.bF)(r,null,{default:(0,t.k6)((()=>[(0,t.bF)(c)])),_:1})])),_:1},8,["onClick"]),(0,t.Lk)("div",h,[(0,t.bF)(f,{name:"net"})])])])}var k=a(3830),m=a(144),C=a(7477),b=a(5096),L={components:{Edit:C.ffu,Refresh:C.C42,Background:b.A},setup(){const e=(0,k.B)(),n=(0,m.Kh)({server:(0,t.EW)((()=>e.value.config.Client.Server.Host))}),a=()=>{window.location.reload()};return{state:n,handleRefresh:a}}},_=a(1241);const w=(0,_.A)(L,[["render",f],["__scopeId","data-v-1fd9ef80"]]);var F=w;const S=e=>((0,t.Qi)("data-v-68d1c30a"),e=e(),(0,t.jt)(),e),x={class:"net-list-wrap flex flex-column absolute"},T={class:"flex-1 scrollbar"},z={class:"flex"},E=S((()=>(0,t.Lk)("div",{class:"flex-1"},null,-1))),A={class:"tuntap"},I={class:"page t-c"},P={class:"page-wrap t-c"};function B(e,n,a,s,l,i){const o=(0,t.g2)("DeviceName"),c=(0,t.g2)("UpdaterBtn"),r=(0,t.g2)("TuntapShow"),u=(0,t.g2)("el-pagination");return(0,t.uX)(),(0,t.CE)("div",x,[(0,t.Lk)("div",T,[(0,t.Lk)("ul",null,[((0,t.uX)(!0),(0,t.CE)(t.FK,null,(0,t.pI)(s.devices.page.List,((e,n)=>((0,t.uX)(),(0,t.CE)("li",{key:n},[(0,t.Lk)("dl",null,[(0,t.Lk)("dt",z,[(0,t.Lk)("div",null,[(0,t.bF)(o,{item:e},null,8,["item"])]),E,(0,t.Lk)("div",null,[(0,t.bF)(c,{config:!1,item:e},null,8,["item"])])]),(0,t.Lk)("dd",A,[s.tuntap.list[e.MachineId]?((0,t.uX)(),(0,t.Wv)(r,{key:0,item:e},null,8,["item"])):(0,t.Q3)("",!0)])])])))),128))])]),(0,t.Lk)("div",I,[(0,t.Lk)("div",P,[(0,t.bF)(u,{size:"small",background:"",layout:"prev,pager, next","pager-count":5,total:s.devices.page.Count,"page-size":s.devices.page.Request.Size,"current-page":s.devices.page.Request.Page,onCurrentChange:s.handlePageChange,onSizeChange:s.handlePageSizeChange,"page-sizes":[10,20,50,100,255]},null,8,["total","page-size","current-page","onCurrentChange","onSizeChange"])])])])}var y=a(8104),R=a(7985),D=a(9383),U=a(7115),X=a(6588),V=a(3694),N=a(9983),Q={components:{StarFilled:C.BQ2,UpdaterBtn:U.A,DeviceName:X.A,TuntapShow:V.A},setup(e){(0,k.B)();const n=(0,m.Kh)({}),{devices:a,machineId:s,_getSignList:l,_getSignList1:i,handleDeviceEdit:o,handlePageChange:c,handlePageSizeChange:r,handleDel:u,clearDevicesTimeout:d}=(0,R.r)(),{tuntap:g,_getTuntapInfo:p,handleTuntapRefresh:v,clearTuntapTimeout:h,handleTuntapEdit:f,sortTuntapIP:C}=(0,y.O)(),{_getUpdater:b,_subscribeUpdater:L,clearUpdaterTimeout:_}=(0,D.d)(),{connections:w,forwardConnections:F,_getForwardConnections:S,tuntapConnections:x,_getTuntapConnections:T,socks5Connections:z,_getSocks5Connections:E,handleTunnelConnections:A,clearConnectionsTimeout:I}=(0,N.L2)();return(0,t.sV)((()=>{c(),v(),l(),i(),p(),b(),L()})),(0,t.hi)((()=>{d(),h(),_()})),{state:n,devices:a,machineId:s,handlePageChange:c,handlePageSizeChange:r,tuntap:g}}};const H=(0,_.A)(Q,[["render",B],["__scopeId","data-v-68d1c30a"]]);var K=H,W=a(8478),j=a(1387),q={components:{Head:F,List:K,Status:W.A},setup(){document.addEventListener("contextmenu",(function(e){e.preventDefault()}));const e=(0,k.B)(),n=(0,j.rd)();return(0,t.sV)((()=>{0==e.value.hasAccess("NetManager")&&n.push({name:"NoPermission"})})),{}}};const M=(0,_.A)(q,[["render",r],["__scopeId","data-v-6a3f3b43"]]);var O=M}}]);
|
|
File diff suppressed because one or more lines are too long
1
src/linker.app/public/web/js/app.9d5a1c80.js
Normal file
1
src/linker.app/public/web/js/app.9d5a1c80.js
Normal file
File diff suppressed because one or more lines are too long
1
src/linker.app/public/web/xiaomi.svg
Normal file
1
src/linker.app/public/web/xiaomi.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1745458938525" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3743" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M0 0m184.32 0l655.36 0q184.32 0 184.32 184.32l0 655.36q0 184.32-184.32 184.32l-655.36 0q-184.32 0-184.32-184.32l0-655.36q0-184.32 184.32-184.32Z" fill="#FE7945" p-id="3744"></path><path d="M184.32 286.72h317.44a153.6 153.6 0 0 1 153.6 153.6v307.2H184.32v-460.8z" fill="#FFFFFF" p-id="3745"></path><path d="M737.28 286.72h102.4v460.8H737.28z" fill="#FFFFFF" p-id="3746"></path><path d="M286.72 389.12h215.04a51.2 51.2 0 0 1 51.2 51.2v307.2H286.72v-358.4z" fill="#FE7945" p-id="3747"></path><path d="M368.64 491.52h102.4v256H368.64z" fill="#FFFFFF" p-id="3748"></path></svg>
|
After Width: | Height: | Size: 905 B |
@@ -121,10 +121,10 @@ namespace linker.messenger.store.file
|
|||||||
ConfigExportInfo configExportInfo = param.Content.DeJson<ConfigExportInfo>();
|
ConfigExportInfo configExportInfo = param.Content.DeJson<ConfigExportInfo>();
|
||||||
|
|
||||||
var (client, clientObject, common, commonObject) = await GetConfig(configExportInfo).ConfigureAwait(false);
|
var (client, clientObject, common, commonObject) = await GetConfig(configExportInfo).ConfigureAwait(false);
|
||||||
Dictionary<string, string> dic = new Dictionary<string, string>
|
Dictionary<string, object> dic = new Dictionary<string, object>
|
||||||
{
|
{
|
||||||
{"Client",clientObject.ToJson()},
|
{"Client",Convert.ToBase64String(Encoding.UTF8.GetBytes(clientObject.ToJson()))},
|
||||||
{"Common",commonObject.ToJson()},
|
{"Common",Convert.ToBase64String(Encoding.UTF8.GetBytes(commonObject.ToJson()))},
|
||||||
};
|
};
|
||||||
|
|
||||||
return Convert.ToBase64String(Encoding.UTF8.GetBytes(dic.ToJson()));
|
return Convert.ToBase64String(Encoding.UTF8.GetBytes(dic.ToJson()));
|
||||||
@@ -145,8 +145,8 @@ namespace linker.messenger.store.file
|
|||||||
var (client, clientObject, common, commonObject) = await GetConfig(configExportInfo).ConfigureAwait(false);
|
var (client, clientObject, common, commonObject) = await GetConfig(configExportInfo).ConfigureAwait(false);
|
||||||
Dictionary<string, object> dic = new Dictionary<string, object>
|
Dictionary<string, object> dic = new Dictionary<string, object>
|
||||||
{
|
{
|
||||||
{"Client",clientObject},
|
{"Client",Convert.ToBase64String(Encoding.UTF8.GetBytes(clientObject.ToJson()))},
|
||||||
{"Common",commonObject},
|
{"Common",Convert.ToBase64String(Encoding.UTF8.GetBytes(commonObject.ToJson()))},
|
||||||
};
|
};
|
||||||
string value = Convert.ToBase64String(Encoding.UTF8.GetBytes(dic.ToJson()));
|
string value = Convert.ToBase64String(Encoding.UTF8.GetBytes(dic.ToJson()));
|
||||||
return await exportResolver.Save(signInClientState.Connection.Address, value);
|
return await exportResolver.Save(signInClientState.Connection.Address, value);
|
||||||
|
@@ -94,7 +94,6 @@ namespace linker.messenger.store.file
|
|||||||
socket.SafeClose();
|
socket.SafeClose();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Console.WriteLine(info.Type);
|
|
||||||
switch (info.Type)
|
switch (info.Type)
|
||||||
{
|
{
|
||||||
case ExportSaveType.Save:
|
case ExportSaveType.Save:
|
||||||
|
@@ -76,9 +76,13 @@ namespace linker.snat
|
|||||||
error = "only win x64 and win x86";
|
error = "only win x64 and win x86";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (info.Src == null || info.Dsts == null || info.Dsts.Length == 0)
|
if (info.Src == null)
|
||||||
|
{
|
||||||
|
error = "src is null,snat fail";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (info.Dsts == null || info.Dsts.Length == 0)
|
||||||
{
|
{
|
||||||
error = "src is null, or dsts empty,snat fail";
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (info.InterfaceIp == null || info.InterfaceIp.Equals(IPAddress.Any))
|
if (info.InterfaceIp == null || info.InterfaceIp.Equals(IPAddress.Any))
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<project ver="10" name="linker.tray.win" libEmbed="true" icon="..\linker\favicon.ico" ui="win" output="linker.tray.win.exe" CompanyName="snltty" FileDescription="linker.tray.win" LegalCopyright="Copyright (C) snltty 2024" ProductName="linker.tray.win" InternalName="linker.install.win" FileVersion="0.0.0.251" ProductVersion="0.0.0.251" publishDir="/dist/" dstrip="false" local="false" ignored="false">
|
<project ver="10" name="linker.tray.win" libEmbed="true" icon="..\linker\favicon.ico" ui="win" output="linker.tray.win.exe" CompanyName="snltty" FileDescription="linker.tray.win" LegalCopyright="Copyright (C) snltty 2024" ProductName="linker.tray.win" InternalName="linker.install.win" FileVersion="0.0.0.252" ProductVersion="0.0.0.252" publishDir="/dist/" dstrip="false" local="false" ignored="false">
|
||||||
<file name="main.aardio" path="main.aardio" comment="main.aardio"/>
|
<file name="main.aardio" path="main.aardio" comment="main.aardio"/>
|
||||||
<folder name="资源文件" path="res" embed="true" local="false" ignored="false">
|
<folder name="资源文件" path="res" embed="true" local="false" ignored="false">
|
||||||
<file name="favicon.ico" path="res\favicon.ico" comment="res\favicon.ico"/>
|
<file name="favicon.ico" path="res\favicon.ico" comment="res\favicon.ico"/>
|
||||||
|
BIN
src/linker.tray.win/dist/linker.tray.win.exe
vendored
BIN
src/linker.tray.win/dist/linker.tray.win.exe
vendored
Binary file not shown.
File diff suppressed because one or more lines are too long
1
src/linker.tray.win/web/css/223.dabf53db.css
Normal file
1
src/linker.tray.win/web/css/223.dabf53db.css
Normal file
File diff suppressed because one or more lines are too long
1
src/linker.tray.win/web/css/353.753df2fe.css
Normal file
1
src/linker.tray.win/web/css/353.753df2fe.css
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
src/linker.tray.win/web/css/849.6ebe66e5.css
Normal file
1
src/linker.tray.win/web/css/849.6ebe66e5.css
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
src/linker.tray.win/web/css/app.7c444b43.css
Normal file
1
src/linker.tray.win/web/css/app.7c444b43.css
Normal file
File diff suppressed because one or more lines are too long
1
src/linker.tray.win/web/google.svg
Normal file
1
src/linker.tray.win/web/google.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1745458919168" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2606" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M214.101333 512c0-32.512 5.546667-63.701333 15.36-92.928L57.173333 290.218667A491.861333 491.861333 0 0 0 4.693333 512c0 79.701333 18.858667 154.88 52.394667 221.610667l172.202667-129.066667A290.56 290.56 0 0 1 214.101333 512" fill="#FBBC05" p-id="2607"></path><path d="M516.693333 216.192c72.106667 0 137.258667 25.002667 188.458667 65.962667L854.101333 136.533333C763.349333 59.178667 646.997333 11.392 516.693333 11.392c-202.325333 0-376.234667 113.28-459.52 278.826667l172.373334 128.853333c39.68-118.016 152.832-202.88 287.146666-202.88" fill="#EA4335" p-id="2608"></path><path d="M516.693333 807.808c-134.357333 0-247.509333-84.864-287.232-202.88l-172.288 128.853333c83.242667 165.546667 257.152 278.826667 459.52 278.826667 124.842667 0 244.053333-43.392 333.568-124.757333l-163.584-123.818667c-46.122667 28.458667-104.234667 43.776-170.026666 43.776" fill="#34A853" p-id="2609"></path><path d="M1005.397333 512c0-29.568-4.693333-61.44-11.648-91.008H516.650667V614.4h274.602666c-13.696 65.962667-51.072 116.650667-104.533333 149.632l163.541333 123.818667c93.994667-85.418667 155.136-212.650667 155.136-375.850667" fill="#4285F4" p-id="2610"></path></svg>
|
After Width: | Height: | Size: 1.5 KiB |
@@ -1 +1 @@
|
|||||||
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>linker.web</title><link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=" crossorigin=""/><script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js" integrity="sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo=" crossorigin=""></script><script defer="defer" src="js/chunk-vendors.cfba5739.js"></script><script defer="defer" src="js/app.876d9dd7.js"></script><link href="css/chunk-vendors.d8267b33.css" rel="stylesheet"><link href="css/app.73965826.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but linker.web doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
|
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>linker.web</title><link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=" crossorigin=""/><script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js" integrity="sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo=" crossorigin=""></script><script defer="defer" src="js/chunk-vendors.cfba5739.js"></script><script defer="defer" src="js/app.c8896a4c.js"></script><link href="css/chunk-vendors.d8267b33.css" rel="stylesheet"><link href="css/app.7c444b43.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but linker.web doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
src/linker.tray.win/web/js/223.1e4a3062.js
Normal file
1
src/linker.tray.win/web/js/223.1e4a3062.js
Normal file
@@ -0,0 +1 @@
|
|||||||
|
"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[223],{7332:function(e,n,a){a.r(n),a.d(n,{default:function(){return O}});var t=a(6768);const s={class:"net-wrap app-wrap"},l={class:"inner absolute flex flex-column flex-nowrap"},i={class:"head"},o={class:"body flex-1 relative"},c={class:"status"};function r(e,n,a,r,u,d){const g=(0,t.g2)("Head"),p=(0,t.g2)("List"),v=(0,t.g2)("Status");return(0,t.uX)(),(0,t.CE)("div",s,[(0,t.Lk)("div",l,[(0,t.Lk)("div",i,[(0,t.bF)(g)]),(0,t.Lk)("div",o,[(0,t.bF)(p)]),(0,t.Lk)("div",c,[(0,t.bF)(v,{config:!1})])])])}a(4114);var u=a(4232);const d=e=>((0,t.Qi)("data-v-6bfe19a3"),e=e(),(0,t.jt)(),e),g={class:"head-wrap"},p={class:"tools flex"},v={class:"label"},h=d((()=>(0,t.Lk)("span",{class:"flex-1"},null,-1))),f={style:{"margin-left":"1rem"}};function k(e,n,a,s,l,i){const o=(0,t.g2)("Refresh"),c=(0,t.g2)("el-icon"),r=(0,t.g2)("el-button"),d=(0,t.g2)("Background");return(0,t.uX)(),(0,t.CE)("div",g,[(0,t.Lk)("div",p,[(0,t.Lk)("span",v,"分组 : "+(0,u.v_)(s.state.group),1),h,(0,t.bF)(r,{size:"small",onClick:s.handleRefresh},{default:(0,t.k6)((()=>[(0,t.eW)(" 刷新(F5)"),(0,t.bF)(c,null,{default:(0,t.k6)((()=>[(0,t.bF)(o)])),_:1})])),_:1},8,["onClick"]),(0,t.Lk)("div",f,[(0,t.bF)(d,{name:"net"})])])])}var C=a(3830),m=a(144),b=a(7477),L=a(5096),_={components:{Edit:b.ffu,Refresh:b.C42,Background:L.A},setup(){const e=(0,C.B)(),n=(0,m.Kh)({server:(0,t.EW)((()=>e.value.config.Client.Server.Host)),group:(0,t.EW)((()=>e.value.config.Client.Group.Name))}),a=()=>{window.location.reload()};return{state:n,handleRefresh:a}}},w=a(1241);const S=(0,w.A)(_,[["render",k],["__scopeId","data-v-6bfe19a3"]]);var F=S;const x=e=>((0,t.Qi)("data-v-68d1c30a"),e=e(),(0,t.jt)(),e),T={class:"net-list-wrap flex flex-column absolute"},z={class:"flex-1 scrollbar"},E={class:"flex"},A=x((()=>(0,t.Lk)("div",{class:"flex-1"},null,-1))),I={class:"tuntap"},P={class:"page t-c"},B={class:"page-wrap t-c"};function R(e,n,a,s,l,i){const o=(0,t.g2)("DeviceName"),c=(0,t.g2)("UpdaterBtn"),r=(0,t.g2)("TuntapShow"),u=(0,t.g2)("el-pagination");return(0,t.uX)(),(0,t.CE)("div",T,[(0,t.Lk)("div",z,[(0,t.Lk)("ul",null,[((0,t.uX)(!0),(0,t.CE)(t.FK,null,(0,t.pI)(s.devices.page.List,((e,n)=>((0,t.uX)(),(0,t.CE)("li",{key:n},[(0,t.Lk)("dl",null,[(0,t.Lk)("dt",E,[(0,t.Lk)("div",null,[(0,t.bF)(o,{item:e},null,8,["item"])]),A,(0,t.Lk)("div",null,[(0,t.bF)(c,{config:!1,item:e},null,8,["item"])])]),(0,t.Lk)("dd",I,[s.tuntap.list[e.MachineId]?((0,t.uX)(),(0,t.Wv)(r,{key:0,item:e},null,8,["item"])):(0,t.Q3)("",!0)])])])))),128))])]),(0,t.Lk)("div",P,[(0,t.Lk)("div",B,[(0,t.bF)(u,{size:"small",background:"",layout:"prev,pager, next","pager-count":5,total:s.devices.page.Count,"page-size":s.devices.page.Request.Size,"current-page":s.devices.page.Request.Page,onCurrentChange:s.handlePageChange,onSizeChange:s.handlePageSizeChange,"page-sizes":[10,20,50,100,255]},null,8,["total","page-size","current-page","onCurrentChange","onSizeChange"])])])])}var D=a(8104),X=a(7985),y=a(9383),N=a(7115),U=a(263),Q=a(3694),W=a(9983),H={components:{StarFilled:b.BQ2,UpdaterBtn:N.A,DeviceName:U.A,TuntapShow:Q.A},setup(e){(0,C.B)();const n=(0,m.Kh)({}),{devices:a,machineId:s,_getSignList:l,_getSignList1:i,handleDeviceEdit:o,handlePageChange:c,handlePageSizeChange:r,handleDel:u,clearDevicesTimeout:d}=(0,X.r)(),{tuntap:g,_getTuntapInfo:p,handleTuntapRefresh:v,clearTuntapTimeout:h,handleTuntapEdit:f,sortTuntapIP:k}=(0,D.O)(),{_getUpdater:b,_subscribeUpdater:L,clearUpdaterTimeout:_}=(0,y.d)(),{connections:w,forwardConnections:S,_getForwardConnections:F,tuntapConnections:x,_getTuntapConnections:T,socks5Connections:z,_getSocks5Connections:E,handleTunnelConnections:A,clearConnectionsTimeout:I}=(0,W.L2)();return(0,t.sV)((()=>{c(),v(),l(),i(),p(),b(),L()})),(0,t.hi)((()=>{d(),h(),_()})),{state:n,devices:a,machineId:s,handlePageChange:c,handlePageSizeChange:r,tuntap:g}}};const K=(0,w.A)(H,[["render",R],["__scopeId","data-v-68d1c30a"]]);var j=K,q=a(8948),M=a(1387),V={components:{Head:F,List:j,Status:q.A},setup(){document.addEventListener("contextmenu",(function(e){e.preventDefault()}));const e=(0,C.B)(),n=(0,M.rd)();return(0,t.sV)((()=>{0==e.value.hasAccess("NetManager")&&n.push({name:"NoPermission"})})),{}}};const G=(0,w.A)(V,[["render",r],["__scopeId","data-v-6a3f3b43"]]);var O=G}}]);
|
File diff suppressed because one or more lines are too long
1
src/linker.tray.win/web/js/32.c86fd9ce.js
Normal file
1
src/linker.tray.win/web/js/32.c86fd9ce.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
src/linker.tray.win/web/js/353.eaaf2d3e.js
Normal file
1
src/linker.tray.win/web/js/353.eaaf2d3e.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
src/linker.tray.win/web/js/736.3a98830e.js
Normal file
1
src/linker.tray.win/web/js/736.3a98830e.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
src/linker.tray.win/web/js/754.f9bdb301.js
Normal file
1
src/linker.tray.win/web/js/754.f9bdb301.js
Normal file
File diff suppressed because one or more lines are too long
1
src/linker.tray.win/web/js/849.13158ce4.js
Normal file
1
src/linker.tray.win/web/js/849.13158ce4.js
Normal file
File diff suppressed because one or more lines are too long
1
src/linker.tray.win/web/js/853.d0536fbb.js
Normal file
1
src/linker.tray.win/web/js/853.d0536fbb.js
Normal file
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
|||||||
"use strict";(self["webpackChunklinker_web"]=self["webpackChunklinker_web"]||[]).push([[922],{427:function(e,n,a){a.r(n),a.d(n,{default:function(){return O}});var t=a(6768);const s={class:"net-wrap app-wrap"},l={class:"inner absolute flex flex-column flex-nowrap"},i={class:"head"},o={class:"body flex-1 relative"},c={class:"status"};function r(e,n,a,r,u,d){const g=(0,t.g2)("Head"),p=(0,t.g2)("List"),v=(0,t.g2)("Status");return(0,t.uX)(),(0,t.CE)("div",s,[(0,t.Lk)("div",l,[(0,t.Lk)("div",i,[(0,t.bF)(g)]),(0,t.Lk)("div",o,[(0,t.bF)(p)]),(0,t.Lk)("div",c,[(0,t.bF)(v,{config:!1})])])])}a(4114);const u=e=>((0,t.Qi)("data-v-1fd9ef80"),e=e(),(0,t.jt)(),e),d={class:"head-wrap"},g={class:"tools flex"},p=u((()=>(0,t.Lk)("span",{class:"label"},"服务器 ",-1))),v=u((()=>(0,t.Lk)("span",{class:"flex-1"},null,-1))),h={style:{"margin-left":"1rem"}};function f(e,n,a,s,l,i){const o=(0,t.g2)("el-input"),c=(0,t.g2)("Refresh"),r=(0,t.g2)("el-icon"),u=(0,t.g2)("el-button"),f=(0,t.g2)("Background");return(0,t.uX)(),(0,t.CE)("div",d,[(0,t.Lk)("div",g,[p,(0,t.bF)(o,{modelValue:s.state.server,"onUpdate:modelValue":n[0]||(n[0]=e=>s.state.server=e),readonly:"",style:{width:"14rem"},size:"small"},null,8,["modelValue"]),v,(0,t.bF)(u,{size:"small",onClick:s.handleRefresh},{default:(0,t.k6)((()=>[(0,t.eW)(" 刷新(F5)"),(0,t.bF)(r,null,{default:(0,t.k6)((()=>[(0,t.bF)(c)])),_:1})])),_:1},8,["onClick"]),(0,t.Lk)("div",h,[(0,t.bF)(f,{name:"net"})])])])}var k=a(3830),m=a(144),C=a(7477),b=a(5096),L={components:{Edit:C.ffu,Refresh:C.C42,Background:b.A},setup(){const e=(0,k.B)(),n=(0,m.Kh)({server:(0,t.EW)((()=>e.value.config.Client.Server.Host))}),a=()=>{window.location.reload()};return{state:n,handleRefresh:a}}},_=a(1241);const w=(0,_.A)(L,[["render",f],["__scopeId","data-v-1fd9ef80"]]);var F=w;const S=e=>((0,t.Qi)("data-v-68d1c30a"),e=e(),(0,t.jt)(),e),x={class:"net-list-wrap flex flex-column absolute"},T={class:"flex-1 scrollbar"},z={class:"flex"},E=S((()=>(0,t.Lk)("div",{class:"flex-1"},null,-1))),A={class:"tuntap"},I={class:"page t-c"},P={class:"page-wrap t-c"};function B(e,n,a,s,l,i){const o=(0,t.g2)("DeviceName"),c=(0,t.g2)("UpdaterBtn"),r=(0,t.g2)("TuntapShow"),u=(0,t.g2)("el-pagination");return(0,t.uX)(),(0,t.CE)("div",x,[(0,t.Lk)("div",T,[(0,t.Lk)("ul",null,[((0,t.uX)(!0),(0,t.CE)(t.FK,null,(0,t.pI)(s.devices.page.List,((e,n)=>((0,t.uX)(),(0,t.CE)("li",{key:n},[(0,t.Lk)("dl",null,[(0,t.Lk)("dt",z,[(0,t.Lk)("div",null,[(0,t.bF)(o,{item:e},null,8,["item"])]),E,(0,t.Lk)("div",null,[(0,t.bF)(c,{config:!1,item:e},null,8,["item"])])]),(0,t.Lk)("dd",A,[s.tuntap.list[e.MachineId]?((0,t.uX)(),(0,t.Wv)(r,{key:0,item:e},null,8,["item"])):(0,t.Q3)("",!0)])])])))),128))])]),(0,t.Lk)("div",I,[(0,t.Lk)("div",P,[(0,t.bF)(u,{size:"small",background:"",layout:"prev,pager, next","pager-count":5,total:s.devices.page.Count,"page-size":s.devices.page.Request.Size,"current-page":s.devices.page.Request.Page,onCurrentChange:s.handlePageChange,onSizeChange:s.handlePageSizeChange,"page-sizes":[10,20,50,100,255]},null,8,["total","page-size","current-page","onCurrentChange","onSizeChange"])])])])}var y=a(8104),R=a(7985),D=a(9383),U=a(7115),X=a(6588),V=a(3694),N=a(9983),Q={components:{StarFilled:C.BQ2,UpdaterBtn:U.A,DeviceName:X.A,TuntapShow:V.A},setup(e){(0,k.B)();const n=(0,m.Kh)({}),{devices:a,machineId:s,_getSignList:l,_getSignList1:i,handleDeviceEdit:o,handlePageChange:c,handlePageSizeChange:r,handleDel:u,clearDevicesTimeout:d}=(0,R.r)(),{tuntap:g,_getTuntapInfo:p,handleTuntapRefresh:v,clearTuntapTimeout:h,handleTuntapEdit:f,sortTuntapIP:C}=(0,y.O)(),{_getUpdater:b,_subscribeUpdater:L,clearUpdaterTimeout:_}=(0,D.d)(),{connections:w,forwardConnections:F,_getForwardConnections:S,tuntapConnections:x,_getTuntapConnections:T,socks5Connections:z,_getSocks5Connections:E,handleTunnelConnections:A,clearConnectionsTimeout:I}=(0,N.L2)();return(0,t.sV)((()=>{c(),v(),l(),i(),p(),b(),L()})),(0,t.hi)((()=>{d(),h(),_()})),{state:n,devices:a,machineId:s,handlePageChange:c,handlePageSizeChange:r,tuntap:g}}};const H=(0,_.A)(Q,[["render",B],["__scopeId","data-v-68d1c30a"]]);var K=H,W=a(8478),j=a(1387),q={components:{Head:F,List:K,Status:W.A},setup(){document.addEventListener("contextmenu",(function(e){e.preventDefault()}));const e=(0,k.B)(),n=(0,j.rd)();return(0,t.sV)((()=>{0==e.value.hasAccess("NetManager")&&n.push({name:"NoPermission"})})),{}}};const M=(0,_.A)(q,[["render",r],["__scopeId","data-v-6a3f3b43"]]);var O=M}}]);
|
|
File diff suppressed because one or more lines are too long
1
src/linker.tray.win/web/js/app.c8896a4c.js
Normal file
1
src/linker.tray.win/web/js/app.c8896a4c.js
Normal file
File diff suppressed because one or more lines are too long
1
src/linker.tray.win/web/xiaomi.svg
Normal file
1
src/linker.tray.win/web/xiaomi.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1745458938525" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3743" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M0 0m184.32 0l655.36 0q184.32 0 184.32 184.32l0 655.36q0 184.32-184.32 184.32l-655.36 0q-184.32 0-184.32-184.32l0-655.36q0-184.32 184.32-184.32Z" fill="#FE7945" p-id="3744"></path><path d="M184.32 286.72h317.44a153.6 153.6 0 0 1 153.6 153.6v307.2H184.32v-460.8z" fill="#FFFFFF" p-id="3745"></path><path d="M737.28 286.72h102.4v460.8H737.28z" fill="#FFFFFF" p-id="3746"></path><path d="M286.72 389.12h215.04a51.2 51.2 0 0 1 51.2 51.2v307.2H286.72v-358.4z" fill="#FE7945" p-id="3747"></path><path d="M368.64 491.52h102.4v256H368.64z" fill="#FFFFFF" p-id="3748"></path></svg>
|
After Width: | Height: | Size: 905 B |
@@ -196,12 +196,13 @@ namespace linker.tun
|
|||||||
bool isSupport = string.IsNullOrWhiteSpace(supportError) && support.Contains("No such file or directory") == false;
|
bool isSupport = string.IsNullOrWhiteSpace(supportError) && support.Contains("No such file or directory") == false;
|
||||||
|
|
||||||
CommandHelper.Linux(string.Empty, new string[] {
|
CommandHelper.Linux(string.Empty, new string[] {
|
||||||
$"iptables -t nat -D POSTROUTING -o {Name} -j MASQUERADE",
|
|
||||||
$"iptables -D FORWARD -i {interfaceLinux} -o {Name} -j ACCEPT",
|
$"iptables -D FORWARD -i {interfaceLinux} -o {Name} -j ACCEPT",
|
||||||
|
$"iptables -D FORWARD -i {Name} -j ACCEPT",
|
||||||
|
$"iptables -t nat -D POSTROUTING -o {Name} -j MASQUERADE",
|
||||||
|
|
||||||
isSupport ? $"iptables -D FORWARD -i {Name} -o {interfaceLinux} -m state --state ESTABLISHED,RELATED -j ACCEPT"
|
isSupport ? $"iptables -D FORWARD -i {Name} -o {interfaceLinux} -m state --state ESTABLISHED,RELATED -j ACCEPT"
|
||||||
: $"iptables -D FORWARD -i {Name} -o {interfaceLinux} -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT",
|
: $"iptables -D FORWARD -i {Name} -o {interfaceLinux} -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT",
|
||||||
|
|
||||||
$"iptables -D FORWARD -i {Name} -j ACCEPT",
|
|
||||||
isSupport ? $"iptables -D FORWARD -o {Name} -m state --state ESTABLISHED,RELATED -j ACCEPT"
|
isSupport ? $"iptables -D FORWARD -o {Name} -m state --state ESTABLISHED,RELATED -j ACCEPT"
|
||||||
: $"iptables -D FORWARD -o {Name} -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT"
|
: $"iptables -D FORWARD -o {Name} -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT"
|
||||||
});
|
});
|
||||||
|
@@ -50,6 +50,7 @@ export default {
|
|||||||
'status.groupPassword': 'Password',
|
'status.groupPassword': 'Password',
|
||||||
'status.groupOper': 'Oper',
|
'status.groupOper': 'Oper',
|
||||||
'status.groupDelConfirm': 'Are you sure to delete?',
|
'status.groupDelConfirm': 'Are you sure to delete?',
|
||||||
|
'status.groupValidate': 'Name or Id empty item has exists',
|
||||||
|
|
||||||
'status.support': 'Support',
|
'status.support': 'Support',
|
||||||
'status.website': 'Website',
|
'status.website': 'Website',
|
||||||
@@ -231,7 +232,7 @@ export default {
|
|||||||
'server.updaterMM': 'Minute',
|
'server.updaterMM': 'Minute',
|
||||||
'server.updaterS': 'Second',
|
'server.updaterS': 'Second',
|
||||||
|
|
||||||
'server.asyncText': 'Synchronize to all clients',
|
'server.asyncText': 'to group all clients',
|
||||||
'server.asyncSelect': 'Please select',
|
'server.asyncSelect': 'Please select',
|
||||||
'server.asyncCheckAll': 'Check all',
|
'server.asyncCheckAll': 'Check all',
|
||||||
'server.asyncSignInSecretKey': 'Signin secretKey',
|
'server.asyncSignInSecretKey': 'Signin secretKey',
|
||||||
|
@@ -50,6 +50,7 @@ export default {
|
|||||||
'status.groupPassword': '密码',
|
'status.groupPassword': '密码',
|
||||||
'status.groupOper': '操作',
|
'status.groupOper': '操作',
|
||||||
'status.groupDelConfirm': '确认删除吗?',
|
'status.groupDelConfirm': '确认删除吗?',
|
||||||
|
'status.groupValidate': '有名称或者id未设置的项',
|
||||||
|
|
||||||
'status.support': '赞助',
|
'status.support': '赞助',
|
||||||
'status.website': '官网',
|
'status.website': '官网',
|
||||||
@@ -327,7 +328,7 @@ export default {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
'server.asyncText': '同步到所有客户端',
|
'server.asyncText': '到本组所有客户端',
|
||||||
'server.asyncSelect': '请选择',
|
'server.asyncSelect': '请选择',
|
||||||
'server.asyncCheckAll': '全选',
|
'server.asyncCheckAll': '全选',
|
||||||
'server.asyncSignInSecretKey': '信标密钥',
|
'server.asyncSignInSecretKey': '信标密钥',
|
||||||
|
@@ -82,7 +82,7 @@ export default {
|
|||||||
const {t} = useI18n();
|
const {t} = useI18n();
|
||||||
const globalData = injectGlobalData();
|
const globalData = injectGlobalData();
|
||||||
const state = reactive({
|
const state = reactive({
|
||||||
list:globalData.value.config.Client.Groups || [],
|
list:globalData.value.config.Client.Groups,
|
||||||
show:true
|
show:true
|
||||||
});
|
});
|
||||||
watch(()=>globalData.value.config.Client.Groups,()=>{
|
watch(()=>globalData.value.config.Client.Groups,()=>{
|
||||||
@@ -122,6 +122,7 @@ export default {
|
|||||||
}
|
}
|
||||||
const handleAdd = (index)=>{
|
const handleAdd = (index)=>{
|
||||||
if(state.list.filter(c=>c.Id == '' || c.Name == '').length > 0){
|
if(state.list.filter(c=>c.Id == '' || c.Name == '').length > 0){
|
||||||
|
ElMessage.error(t('status.groupValidate'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
state.list.splice(index+1,0,{Name:'',Id:'',Password:''});
|
state.list.splice(index+1,0,{Name:'',Id:'',Password:''});
|
||||||
|
@@ -2,12 +2,12 @@
|
|||||||
<el-dropdown>
|
<el-dropdown>
|
||||||
<span class="el-dropdown-link" :class="{connected:state.connected}">
|
<span class="el-dropdown-link" :class="{connected:state.connected}">
|
||||||
<el-icon><Avatar /></el-icon>
|
<el-icon><Avatar /></el-icon>
|
||||||
{{state.groupName}}
|
{{state.groupName|| '未知'}}
|
||||||
<el-icon><ArrowDown /></el-icon>
|
<el-icon><ArrowDown /></el-icon>
|
||||||
</span>
|
</span>
|
||||||
<template #dropdown>
|
<template #dropdown>
|
||||||
<el-dropdown-menu v-if="hasGroup">
|
<el-dropdown-menu v-if="hasGroup">
|
||||||
<el-dropdown-item v-for="item in state.groups" @click="handleGroupChange(item.Id)">{{item.Name}}</el-dropdown-item>
|
<el-dropdown-item v-for="item in state.groups" @click="handleGroupChange(item.Id)">{{item.Name || '未知'}}</el-dropdown-item>
|
||||||
<el-dropdown-item @click="state.showGroups = true">{{$t('status.group')}}</el-dropdown-item>
|
<el-dropdown-item @click="state.showGroups = true">{{$t('status.group')}}</el-dropdown-item>
|
||||||
</el-dropdown-menu>
|
</el-dropdown-menu>
|
||||||
</template>
|
</template>
|
||||||
@@ -32,27 +32,28 @@ export default {
|
|||||||
const state = reactive({
|
const state = reactive({
|
||||||
loading: false,
|
loading: false,
|
||||||
connected: computed(() => globalData.value.signin.Connected),
|
connected: computed(() => globalData.value.signin.Connected),
|
||||||
groupName: globalData.value.config.Client.Group.Name,
|
groupName: computed(()=>globalData.value.config.Client.Group.Name),
|
||||||
groups: globalData.value.config.Client.Groups.slice(),
|
groups:computed(()=>globalData.value.config.Client.Groups),
|
||||||
showGroups:false
|
showGroups:false
|
||||||
});
|
});
|
||||||
|
console.log(globalData.value.config.Client.Groups);
|
||||||
|
|
||||||
const handleGroupChange = (value)=>{
|
const handleGroupChange = (value)=>{
|
||||||
|
const groups = globalData.value.config.Client.Groups;
|
||||||
const index = state.groups.map((item,index)=>{
|
const index = groups.map((item,index)=>{
|
||||||
item.$index = index;
|
item.$index = index;
|
||||||
return item;
|
return item;
|
||||||
}).filter(c=>c.Id == value)[0].$index;
|
}).filter(c=>c.Id == value)[0].$index;
|
||||||
const temp = state.groups[index];
|
const temp =groups[index];
|
||||||
state.groups[index] = state.groups[0];
|
groups[index] = groups[0];
|
||||||
state.groups[0] = temp;
|
groups[0] = temp;
|
||||||
handleSave();
|
handleSave(groups);
|
||||||
}
|
}
|
||||||
const handleSave = () => {
|
const handleSave = (groups) => {
|
||||||
state.loading = true;
|
state.loading = true;
|
||||||
setSignIn({
|
setSignIn({
|
||||||
Name:globalData.value.config.Client.Name,
|
Name:globalData.value.config.Client.Name,
|
||||||
Groups:state.groups,
|
Groups:groups,
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
state.loading = false;
|
state.loading = false;
|
||||||
state.show = false;
|
state.show = false;
|
||||||
|
@@ -23,7 +23,7 @@ export default {
|
|||||||
ElMessage.success(t('common.access'));
|
ElMessage.success(t('common.access'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ElMessageBox.confirm(`${t('server.sync')} ${t(`server.async${props.name}`)} ? `, t('common.tips'), {
|
ElMessageBox.confirm(`${t('server.sync')}【${t(`server.async${props.name}`)}】${t(`server.asyncText`)}? `, t('common.tips'), {
|
||||||
confirmButtonText: t('common.confirm'),
|
confirmButtonText: t('common.confirm'),
|
||||||
cancelButtonText:t('common.cancel'),
|
cancelButtonText:t('common.cancel'),
|
||||||
type: 'warning'
|
type: 'warning'
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
v1.7.4
|
v1.7.4
|
||||||
2025-04-24 17:28:28
|
2025-04-25 10:39:50
|
||||||
1. 一些优化
|
1. 一些优化
|
||||||
2. 内置应用层SNAT,用于无法使用系统NetNat的windows系统
|
2. 内置应用层SNAT,用于无法使用系统NetNat的windows系统
|
||||||
3. 如果你设备很多,请尝试升级其中一个成功重启后再升级其它
|
3. 如果你设备很多,请尝试升级其中一个成功重启后再升级其它
|
Reference in New Issue
Block a user