Skip to content

Commit 65f7622

Browse files
authored
Merge pull request #228 from Muska-Ami/dev
Update to 1.0.1+1
2 parents f29f69a + 1ddab3c commit 65f7622

File tree

21 files changed

+101
-63
lines changed

21 files changed

+101
-63
lines changed

Diff for: RELEASE_CHANGELOG.md

+7-8
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,23 @@
44

55
### GUI
66

7-
- 使用随机可用端口进行授权
8-
- 修复了 Task 潜在的异常问题
9-
- 修复一个错误的日志输出
7+
-/-
108

119
### CLI
1210

13-
- 使用随机可用端口进行授权
11+
- 修复了 CLI 无法授权的问题
12+
- 修复了 CLI 在部分系统上退出行为异常的问题
1413

1514
### NyaLCF Core
1615

17-
- 使用随机端口分配启动鉴权回调服务
16+
- 更新到 LoCyanFrp 0.51.3-8 #2025020201
1817

1918
## 版本信息
2019

21-
- nyalcf_gui: 1.0.0
22-
- nyalcf_cli: 1.0.0
20+
- nyalcf_gui: 1.0.1
21+
- nyalcf_cli: 1.0.1
2322
- nyalcf_env: 2.0.0
24-
- nyalcf_core: 2.0.1
23+
- nyalcf_core: 2.0.2
2524
- nyalcf_inject: 2.0.0
2625

2726
<!-- Some change log here -->

Diff for: nyalcf_cli/bin/nyalcf_cli.dart

+8-9
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,6 @@ import 'dart:io';
33

44
// Package imports:
55
import 'package:args/args.dart';
6-
import 'package:nyalcf_core/storages/configurations/launcher_configuration_storage.dart';
7-
import 'package:nyalcf_core/storages/injector.dart';
8-
import 'package:nyalcf_core/utils/logger.dart';
9-
import 'package:nyalcf_core_extend/utils/path_provider.dart';
10-
import 'package:nyalcf_inject/nyalcf_inject.dart';
11-
126
// Project imports:
137
import 'package:nyalcf/arguments.dart';
148
import 'package:nyalcf/commands/authorize.dart';
@@ -17,8 +11,14 @@ import 'package:nyalcf/commands/download.dart';
1711
import 'package:nyalcf/commands/logout.dart';
1812
import 'package:nyalcf/commands/start.dart';
1913
import 'package:nyalcf/state.dart';
14+
import 'package:nyalcf_core/storages/configurations/launcher_configuration_storage.dart';
15+
import 'package:nyalcf_core/storages/injector.dart';
16+
import 'package:nyalcf_core/utils/logger.dart';
17+
import 'package:nyalcf_core_extend/storages/injector.dart';
18+
import 'package:nyalcf_core_extend/utils/path_provider.dart';
19+
import 'package:nyalcf_inject/nyalcf_inject.dart';
2020

21-
final version = '0.0.3';
21+
final version = '1.0.1+1';
2222

2323
ArgParser buildParser() {
2424
return Arguments.all;
@@ -36,6 +36,7 @@ void main(List<String> arguments) async {
3636
/// 初始化配置文件等
3737
await PathProvider.loadPath();
3838
await StoragesInjector.init();
39+
await CliStoragesInjector.init();
3940
await Logger.init();
4041

4142
final lcs = LauncherConfigurationStorage();
@@ -53,7 +54,6 @@ void main(List<String> arguments) async {
5354
// Process the parsed arguments.
5455
if (results.wasParsed('help')) {
5556
printUsage(argParser);
56-
return;
5757
}
5858

5959
// 登录登出
@@ -72,7 +72,6 @@ void main(List<String> arguments) async {
7272
// 版本信息
7373
if (results.wasParsed('version')) {
7474
Logger.info('Nya LoCyanFrp! CLI version: $version');
75-
return;
7675
}
7776

7877
// 下载 Frpc

Diff for: nyalcf_cli/lib/commands/authorize.dart

+22-7
Original file line numberDiff line numberDiff line change
@@ -30,37 +30,48 @@ class Authorize implements Command {
3030
final ApiClient api = ApiClient();
3131

3232
final port = await startHttpServer();
33-
Logger.info(
34-
'Please open this link to authorize: '
35-
'http://dashboard.locyanfrp.cn/auth/oauth/authorize'
33+
await Logger.info('Please open this link to authorize:');
34+
await Logger.info(
35+
'https://dashboard.locyanfrp.cn/auth/oauth/authorize'
3636
'?app_id=1'
3737
'&scopes=User,Proxy,Sign'
3838
'&redirect_url='
3939
'https%3A%2F%2Fdashboard.locyanfrp.cn%2Fcallback%2Fauth%2Foauth%2Flocalhost%3Fport%3D$port%26ssl%3Dfalse%26path%3D%2Foauth%2Fcallback',
4040
);
4141
Logger.write('Waiting callback...');
42-
Future.doWhile(() async {
42+
await Future.doWhile(() async {
4343
await Future.delayed(const Duration(milliseconds: 1000)); // 延迟检查
4444
return !_callback;
4545
});
46-
if (_refreshToken == null) exit(1);
46+
Logger.write('Continuing authorizing...\n');
47+
if (_refreshToken == null) {
48+
Logger.error('No refresh token callback, quit.');
49+
exit(1);
50+
}
4751
final rs = await api.post(PostAccessToken(
4852
appId: 1,
4953
refreshToken: _refreshToken!,
5054
));
51-
if (rs == null) exit(1);
55+
if (rs == null) {
56+
Logger.error('Request access token failed.');
57+
exit(1);
58+
}
5259
final int userId = rs.data['data']['user_id'];
5360
final String accessToken = rs.data['data']['access_token'];
5461
_tokenStorage.setRefreshToken(_refreshToken!);
5562
_tokenStorage.setAccessToken(accessToken);
5663

64+
Logger.info('Getting user info...');
65+
5766
final apix = ApiClient(accessToken: accessToken);
5867
final rsInfo = await apix.get(user_info.GetInfo(
5968
userId: userId,
6069
));
6170
final rsFrpToken = await apix.get(user_frp_token.GetToken(
6271
userId: userId,
6372
));
73+
Logger.debug(rsInfo);
74+
Logger.debug(rsFrpToken);
6475
if (rsInfo == null || rsFrpToken == null) exit(1);
6576
final userInfo = UserInfoModel(
6677
username: rsInfo.data['data']['username'],
@@ -70,11 +81,15 @@ class Authorize implements Command {
7081
"${md5.convert(utf8.encode(rsInfo.data['data']['email']))}",
7182
inbound: rsInfo.data['data']['inbound'],
7283
outbound: rsInfo.data['data']['outbound'],
73-
traffic: rsInfo.data['data']['traffic'],
84+
traffic: num.parse(rsInfo.data['data']['traffic']),
7485
);
7586
UserInfoStorage.save(userInfo);
7687
final frpToken = rsFrpToken.data['data']['frp_token'];
7788
_tokenStorage.setFrpToken(frpToken);
89+
_tokenStorage.save();
90+
Logger.info('Authorized success.');
91+
await OAuth.close();
92+
exit(0);
7893
}
7994

8095
Future<int> startHttpServer() async {

Diff for: nyalcf_cli/lib/commands/config.dart

+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
// Dart imports:
2+
import 'dart:io';
3+
14
// Package imports:
25
import 'package:nyalcf_core/storages/configurations/launcher_configuration_storage.dart';
36
import 'package:nyalcf_core/utils/logger.dart';
@@ -35,6 +38,7 @@ class Config implements Command {
3538
} else {
3639
Logger.error('No valid arguments provided.');
3740
}
41+
exit(0);
3842
}
3943

4044
dynamic _convert(dynamic originValue, String input) {

Diff for: nyalcf_cli/lib/commands/download.dart

+4-3
Original file line numberDiff line numberDiff line change
@@ -67,16 +67,16 @@ class Download implements Command {
6767
await FrpClient().download(
6868
architecture: _selectedArch,
6969
platform: platform,
70-
version: '0.51.3-6',
71-
name: 'LoCyanFrp-0.51.3-6 #2024100301',
70+
version: '0.51.3-8',
71+
name: 'LoCyanFrp-0.51.3-8 #2025020201',
7272
cancelToken: _cancelToken,
7373
onReceiveProgress: callback,
7474
onFailed: onFailed,
7575
useMirror: false,
7676
);
7777
Logger.write('Please wait, extracting frpc...');
7878
await FrpcArchive.extract(
79-
platform: platform, arch: _selectedArch, version: '0.51.3-6');
79+
platform: platform, arch: _selectedArch, version: '0.51.3-8');
8080
Logger.info('Success!');
8181
} else {
8282
Logger.error(
@@ -87,6 +87,7 @@ class Download implements Command {
8787
default:
8888
Logger.error('No valid arguments provided.');
8989
}
90+
exit(0);
9091
}
9192

9293
void getPlatformFrpcArchList() {

Diff for: nyalcf_cli/lib/commands/logout.dart

+4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
// Package imports:
22

3+
// Dart imports:
4+
import 'dart:io';
5+
36
// Package imports:
47
import 'package:nyalcf_core/storages/stores/user_info_storage.dart';
58
import 'package:nyalcf_core/utils/logger.dart';
@@ -12,5 +15,6 @@ class Logout implements Command {
1215
Future<void> main(List<String> args) async {
1316
await UserInfoStorage.logout();
1417
Logger.info('Session data removed.');
18+
exit(0);
1519
}
1620
}

Diff for: nyalcf_cli/lib/commands/start.dart

+4-4
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ class Start implements Command {
2222
final user = await userInfo;
2323
if (_tokenStorage.getFrpToken() == null) {
2424
Logger.error('No frp token found, please do authorize first.');
25-
return;
25+
exit(0);
2626
}
2727
if (user == null) {
2828
Logger.error('No valid arguments provided.');
29-
return;
29+
exit(0);
3030
}
3131
for (var proxyId in args) {
3232
final frpcPath = await FrpcStorage().getFilePath(skipCheck: false);
@@ -44,7 +44,7 @@ class Start implements Command {
4444
Logger.info('Started proxy: $proxyId');
4545
} else {
4646
Logger.error('You have no frpc installed yet!');
47-
return;
47+
exit(0);
4848
}
4949
}
5050

@@ -63,7 +63,7 @@ class Start implements Command {
6363
for (var process in ProcessManager.processList) {
6464
process.process.kill();
6565
}
66-
return;
66+
exit(0);
6767
}
6868
});
6969
} else {
+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
// Project imports:
2+
import 'package:nyalcf_core_extend/storages/token_storage.dart';
3+
4+
class CliStoragesInjector {
5+
/// 初始化数据存储
6+
static init() async {
7+
final ts = TokenStorage();
8+
9+
await ts.initCfg();
10+
}
11+
}

Diff for: nyalcf_cli/nyalcf_core_extend/lib/storages/token_storage.dart

+9-8
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,26 @@ import 'package:nyalcf_core/storages/json_configuration.dart';
66

77
class TokenStorage extends JsonConfiguration {
88
@override
9-
File get file => File('$path/frpc/proxies/autostart.json');
9+
File get file => File('$path/token.json');
1010

1111
@override
1212
String get handle => 'TOKEN';
1313

1414
@override
1515
Map<String, dynamic> get defConfig => {
16-
'refresh_token': null,
17-
'access_token': null,
18-
'frp_token': null,
19-
};
16+
'refresh_token': null,
17+
'access_token': null,
18+
'frp_token': null,
19+
};
2020

2121
void setRefreshToken(String value) => cfg.setString('refresh_token', value);
22-
String? getRefreshToken() => cfg.getString('refresh_token', defConfig['refresh_token']);
22+
String? getRefreshToken() =>
23+
cfg.getString('refresh_token', defConfig['refresh_token']);
2324

2425
void setAccessToken(String value) => cfg.setString('access_token', value);
25-
String? getAccessToken() => cfg.getString('access_token', defConfig['access_token']);
26+
String? getAccessToken() =>
27+
cfg.getString('access_token', defConfig['access_token']);
2628

2729
void setFrpToken(String value) => cfg.setString('frp_token', value);
2830
String? getFrpToken() => cfg.getString('frp_token', defConfig['frp_token']);
29-
3031
}

Diff for: nyalcf_cli/nyalcf_core_extend/pubspec.lock

+1-1
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ packages:
260260
path: "../../nyalcf_core"
261261
relative: true
262262
source: path
263-
version: "2.0.0"
263+
version: "2.0.2"
264264
nyalcf_env:
265265
dependency: transitive
266266
description:

Diff for: nyalcf_cli/nyalcf_core_extend/pubspec.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: nyalcf_core_extend
22
description: "Nya LoCyanFrp! core extend module."
3-
version: 2.0.1
3+
version: 2.0.2
44
homepage: https://nyalcf.1l1.icu
55
publish_to: none
66

Diff for: nyalcf_cli/pubspec.lock

+2-2
Original file line numberDiff line numberDiff line change
@@ -260,14 +260,14 @@ packages:
260260
path: "../nyalcf_core"
261261
relative: true
262262
source: path
263-
version: "2.0.0"
263+
version: "2.0.2"
264264
nyalcf_core_extend:
265265
dependency: "direct main"
266266
description:
267267
path: nyalcf_core_extend
268268
relative: true
269269
source: path
270-
version: "2.0.0"
270+
version: "2.0.2"
271271
nyalcf_env:
272272
dependency: "direct main"
273273
description:

Diff for: nyalcf_cli/pubspec.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: nyalcf
22
description: "[CLI]The next generation of LoCyanFrp launcher."
3-
version: 1.0.0+4
3+
version: 1.0.1+1
44
homepage: https://nyalcf.1l1.icu
55
publish_to: none
66
# repository: https://github.com/my_org/my_repo

Diff for: nyalcf_core/lib/network/basic_config.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ BaseOptions baseOptions = BaseOptions(
1717
'${Platform.operatingSystemVersion}',
1818
},
1919
);
20-
final apiV2Url = ENV_UNIVERSAL_API_URL ?? 'https://api-v2.locyanfrp.cn/api/v2';
20+
final apiV2Url = ENV_UNIVERSAL_API_URL ?? 'https://api.locyanfrp.cn/v2';
2121
// const apiV2Url = 'http://localhost:18080/api/v2';
2222
const githubApiUrl = 'https://api-gh.1l1.icu';
2323
const githubMainUrl = 'https://github.com';

Diff for: nyalcf_core/lib/storages/configurations/frpc_configuration_storage.dart

+11-7
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class FrpcConfigurationStorage extends JsonConfiguration {
1414
@override
1515
Map<String, dynamic> get defConfig => {
1616
'settings': {
17-
'frpc_version': '0.51.3-6',
17+
'frpc_version': '0.51.3-8',
1818
'frpc_download_mirror': true,
1919
'frpc_download_mirror_id': 'muska-github-mirror',
2020
},
@@ -38,25 +38,28 @@ class FrpcConfigurationStorage extends JsonConfiguration {
3838
};
3939

4040
/// 获取使用的 Frpc 版本
41-
String getSettingsFrpcVersion() => cfg.getString('settings.frpc_version', defConfig['settings']['frpc_version']);
41+
String getSettingsFrpcVersion() => cfg.getString(
42+
'settings.frpc_version', defConfig['settings']['frpc_version']);
4243

4344
/// 设置使用的 Frpc 版本
4445
/// [value] Frpc 版本
4546
void setSettingsFrpcVersion(String value) =>
4647
cfg.setString('settings.frpc_version', value);
4748

4849
/// 获取是否使用镜像源
49-
bool getSettingsFrpcDownloadMirror() =>
50-
cfg.getBool('settings.frpc_download_mirror', defConfig['settings']['frpc_download_mirror']);
50+
bool getSettingsFrpcDownloadMirror() => cfg.getBool(
51+
'settings.frpc_download_mirror',
52+
defConfig['settings']['frpc_download_mirror']);
5153

5254
/// 设置设置使用镜像源
5355
/// [value] 是否使用镜像源
5456
void setSettingsFrpcDownloadMirror(bool value) =>
5557
cfg.setBool('settings.frpc_download_mirror', value);
5658

5759
/// 获取使用的镜像源 ID
58-
String getSettingsFrpcDownloadMirrorId() =>
59-
cfg.getString('settings.frpc_download_mirror_id', defConfig['settings']['frpc_download_mirror_id']);
60+
String getSettingsFrpcDownloadMirrorId() => cfg.getString(
61+
'settings.frpc_download_mirror_id',
62+
defConfig['settings']['frpc_download_mirror_id']);
6063

6164
/// 设置使用的镜像源 ID
6265
void setSettingsFrpcDownloadMirrorId(String value) =>
@@ -86,7 +89,8 @@ class FrpcConfigurationStorage extends JsonConfiguration {
8689
List<Map<String, dynamic>> getDownloadMirrors() {
8790
// 无法 cast,使用 for 转换一下类型
8891
final list = <Map<String, dynamic>>[];
89-
for (var single in cfg.getList('lists.frpc_download_mirrors', defConfig['lists']['frpc_download_mirrors'])) {
92+
for (var single in cfg.getList('lists.frpc_download_mirrors',
93+
defConfig['lists']['frpc_download_mirrors'])) {
9094
list.add(single);
9195
}
9296
return list;

0 commit comments

Comments
 (0)