mirror of
https://github.com/snltty/linker.git
synced 2025-09-27 05:25:57 +08:00
187
This commit is contained in:
35
README.md
35
README.md
@@ -11,7 +11,7 @@
|
||||
<div align="center">
|
||||
<p><img src="./readme/logo.png" height="150"></p>
|
||||
|
||||
# NET8.0、linker、link anywhere
|
||||
# linker、海内皆隔壁,天涯若比邻。
|
||||
|
||||
[](https://github.com/snltty/linker)
|
||||
[](https://github.com/snltty/linker)
|
||||
@@ -23,21 +23,9 @@
|
||||
|
||||
</div>
|
||||
|
||||
## [⭐]星星历史
|
||||
## [🪂]它在隔壁
|
||||
|
||||
[](https://www.star-history.com/#snltty/linker&Date)
|
||||
|
||||
## [🚫]免责声明
|
||||
|
||||
本软件基于 [GPL-2.0 License](https://opensource.org/licenses/GPL-2.0) 发布,完全免费提供,旨在“按现状”供用户使用。作者及贡献者不对使用本软件所产生的任何直接或间接后果承担责任,包括但不限于性能下降、数据丢失、服务中断、或任何其他类型的损害。
|
||||
|
||||
**无任何保证**:本软件不提供任何明示或暗示的保证,包括但不限于对特定用途的适用性、无侵权性、商用性及可靠性的保证。
|
||||
|
||||
**用户责任**:使用本软件即表示您理解并同意承担由此产生的一切风险及责任,使用人员有责任和义务遵守当地法律条规,请勿用于违法犯罪。
|
||||
|
||||
## [🪂]大概意思
|
||||
|
||||
使用p2p或者中继转发,让你的各个局域网连通起来,让各个局域网内的任意联网设备都可以相互连通
|
||||
让你那些散落在世界各地的联网设备就像在隔壁房间一样轻松访问。
|
||||
|
||||
<div align="center">
|
||||
<p><img src="./readme/linker.jpg"></p>
|
||||
@@ -80,6 +68,21 @@
|
||||
<p><img src="./readme/plan.jpg"></p>
|
||||
<p><img src="./readme/firewall.jpg"></p>
|
||||
|
||||
## [⭐]星星历史
|
||||
|
||||
[](https://www.star-history.com/#snltty/linker&Date)
|
||||
|
||||
|
||||
## [🚫]免责声明
|
||||
|
||||
本软件基于 [GPL-2.0 License](https://opensource.org/licenses/GPL-2.0) 发布,完全免费提供,旨在“按现状”供用户使用。作者及贡献者不对使用本软件所产生的任何直接或间接后果承担责任,包括但不限于性能下降、数据丢失、服务中断、或任何其他类型的损害。
|
||||
|
||||
**无任何保证**:本软件不提供任何明示或暗示的保证,包括但不限于对特定用途的适用性、无侵权性、商用性及可靠性的保证。
|
||||
|
||||
**用户责任**:使用本软件即表示您理解并同意承担由此产生的一切风险及责任,使用人员有责任和义务遵守当地法律条规,请勿用于违法犯罪。
|
||||
|
||||
|
||||
|
||||
## [🎁]为爱发电
|
||||
|
||||
若此项目对您有用,可以考虑通过 **[🔋为爱发电](https://afdian.com/a/snltty)** 对作者稍加支持,让作者更有动力,在项目上投入更多时间和精力
|
||||
@@ -97,10 +100,12 @@
|
||||
- 李氏の天下
|
||||
- 小猪
|
||||
- 菜菜(木子)
|
||||
- 杰米儿
|
||||
|
||||
</div>
|
||||
</details>
|
||||
|
||||
|
||||
## [👏]特别说明
|
||||
|
||||
本项目已加入 [DotNetGuide](https://github.com/YSGStudyHards/DotNetGuide) 列表。<br/>
|
||||
|
@@ -18,9 +18,10 @@ sidebar_position: 1
|
||||
|
||||
:::tip[说明]
|
||||
|
||||
#### 1.1、大概意思
|
||||
#### 1.1、它在隔壁
|
||||
|
||||
让你那些散落在世界各地的联网设备就像在隔壁房间一样轻松访问。
|
||||
|
||||
使用p2p或者服务器转发,让你的各个局域网连通起来,让各个局域网内的任意联网设备都可以相互连通
|
||||

|
||||
|
||||
#### 1.2、加入组织
|
||||
|
@@ -19,6 +19,7 @@ sidebar_position: 96
|
||||
- 李氏の天下
|
||||
- 小猪
|
||||
- 菜菜(木子)
|
||||
- 杰米儿
|
||||
|
||||
</div>
|
||||
</details>
|
@@ -1,11 +1,10 @@
|
||||
using linker.libs.web;
|
||||
using linker.messenger.api;
|
||||
using linker.libs;
|
||||
using linker.libs.web;
|
||||
using linker.messenger.decenter;
|
||||
using linker.messenger.plan;
|
||||
using linker.messenger.sforward.client;
|
||||
using linker.messenger.sforward.server;
|
||||
using linker.messenger.sforward.server.validator;
|
||||
using linker.messenger.sync;
|
||||
using linker.plugins.sforward.messenger;
|
||||
using linker.plugins.sforward.proxy;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
@@ -69,6 +68,14 @@ namespace linker.messenger.sforward
|
||||
SForwardValidatorTransfer sForwardValidatorTransfer = serviceProvider.GetService<SForwardValidatorTransfer>();
|
||||
sForwardValidatorTransfer.AddValidators(new List<ISForwardValidator> { serviceProvider.GetService<SForwardValidator>() });
|
||||
|
||||
SForwardProxy sForwardProxy = serviceProvider.GetService<SForwardProxy>();
|
||||
ISForwardServerStore sForwardServerStore = serviceProvider.GetService<ISForwardServerStore>();
|
||||
if (sForwardServerStore.WebPort > 0)
|
||||
{
|
||||
sForwardProxy.Start(sForwardServerStore.WebPort, true, 3, "3494B7B2-1D9E-4DA2-B4F7-8C439EB03912");
|
||||
LoggerHelper.Instance.Debug($"start web forward in {sForwardServerStore.WebPort}");
|
||||
}
|
||||
|
||||
return serviceProvider;
|
||||
}
|
||||
}
|
||||
|
@@ -120,7 +120,7 @@ export default {
|
||||
'status.flowDetail': 'Detail',
|
||||
'status.flowMessenger': 'Messenger',
|
||||
'status.flowRelay': 'Relay',
|
||||
'status.flowRelayNode': 'Relay Node',
|
||||
'status.flowRelayNode': 'Relay Node Report',
|
||||
'status.flowWanPort': 'Wan Port',
|
||||
'status.flowServerForward': 'Server Forward',
|
||||
'status.flowSearchName': 'Name',
|
||||
@@ -129,6 +129,9 @@ export default {
|
||||
'status.flowSearchDomainPort': 'Domain/Port',
|
||||
'status.flowArea': 'Area',
|
||||
'status.flowNet': 'Network',
|
||||
'status.flowForward': 'Port Forward',
|
||||
'status.flowSocks5': 'Proxy',
|
||||
'status.flowTunnel': 'Tunnel',
|
||||
|
||||
'status.tunnelName': 'Name',
|
||||
'status.tunnelLabel': 'Label',
|
||||
|
@@ -214,7 +214,7 @@ export default {
|
||||
'status.flowDetail': '详情',
|
||||
'status.flowMessenger': '信标',
|
||||
'status.flowRelay': '中继',
|
||||
'status.flowRelayNode': '中继节点',
|
||||
'status.flowRelayNode': '中继节点报告',
|
||||
'status.flowWanPort': '外网端口',
|
||||
'status.flowServerForward': '内网穿透',
|
||||
'status.flowSearchName': '名字搜索',
|
||||
@@ -223,6 +223,9 @@ export default {
|
||||
'status.flowSearchDomainPort': '域名/端口',
|
||||
'status.flowArea': '地区',
|
||||
'status.flowNet': '网络',
|
||||
'status.flowForward': '端口转发',
|
||||
'status.flowSocks5': '代理',
|
||||
'status.flowTunnel': '隧道连接',
|
||||
|
||||
'status.tunnelName': '名称',
|
||||
'status.tunnelLabel': '说明',
|
||||
|
@@ -13,8 +13,6 @@ export default {
|
||||
const isSystemDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||||
const isSystemLightMode = window.matchMedia('(prefers-color-scheme: light)').matches;
|
||||
const cacheMode = localStorage.getItem('theme-mode') || (isSystemDarkMode?'dark':'light');
|
||||
|
||||
console.log(cacheMode);
|
||||
const state = reactive({
|
||||
mode: cacheMode,
|
||||
});
|
||||
|
@@ -65,6 +65,9 @@ export default {
|
||||
const hasSForwardFlow = computed(()=>globalData.value.hasAccess('SForwardFlow'));
|
||||
const hasRelayFlow = computed(()=>globalData.value.hasAccess('RelayFlow'));
|
||||
const hasSigninFlow = computed(()=>globalData.value.hasAccess('SigninFlow'));
|
||||
const hasForwardFlow = computed(()=>globalData.value.hasAccess('ForwardFlow'));
|
||||
const hasSocks5Flow = computed(()=>globalData.value.hasAccess('Socks5Flow'));
|
||||
const hasTunnelFlow = computed(()=>globalData.value.hasAccess('TunnelFlow'));
|
||||
const state = reactive({
|
||||
show:false,
|
||||
timer:0,
|
||||
@@ -96,6 +99,9 @@ export default {
|
||||
'Messenger':{text:t('status.flowMessenger'),detail:hasSigninFlow.value},
|
||||
'SForward':{text:t('status.flowServerForward'),detail:hasSForwardFlow.value},
|
||||
'flow':{text:'',detail:false},
|
||||
'Forward':{text:t('status.flowForward'),detail:hasForwardFlow.value},
|
||||
'Socks5':{text:t('status.flowSocks5'),detail:hasSocks5Flow.value},
|
||||
'Tunnel':{text:t('status.flowTunnel'),detail:hasTunnelFlow.value},
|
||||
};
|
||||
const _getFlows = ()=>{
|
||||
clearTimeout(state.timer);
|
||||
|
@@ -1,5 +1,5 @@
|
||||
v1.8.7
|
||||
2025-07-15 22:31:08
|
||||
2025-07-16 23:39:40
|
||||
1. 一些累计更新
|
||||
2. 暗色模式
|
||||
3. 服务器穿透白名单、匿名连接
|
||||
|
Reference in New Issue
Block a user