Skip to content

Commit

Permalink
Merge pull request #176 from Muska-Ami/dev
Browse files Browse the repository at this point in the history
Update to v0.2.1 GUI with v0.0.1 CLI
  • Loading branch information
Muska-Ami authored Aug 19, 2024
2 parents 7ee5295 + 04528d3 commit c939082
Show file tree
Hide file tree
Showing 65 changed files with 705 additions and 311 deletions.
6 changes: 3 additions & 3 deletions .github/workflows/build-gui.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:
uses: flutter-actions/setup-flutter@v3
with:
channel: 'stable'
version: 3.22.3
version: 3.24.0
cache-sdk: true

- name: Install Dependencies
Expand Down Expand Up @@ -70,7 +70,7 @@ jobs:
uses: flutter-actions/setup-flutter@v3
with:
channel: 'stable'
version: 3.22.3
version: 3.24.0
cache-sdk: true

- name: Install Dependencies
Expand Down Expand Up @@ -113,7 +113,7 @@ jobs:
uses: flutter-actions/setup-flutter@v3
with:
channel: 'stable'
version: 3.22.3
version: 3.24.0
cache-sdk: true

- name: Setup Node.js
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/pr-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
uses: flutter-actions/setup-flutter@v3
with:
channel: 'stable'
version: 3.22.3
version: 3.24.0
cache-sdk: true

- name: Install Dependencies
Expand Down Expand Up @@ -59,7 +59,7 @@ jobs:
uses: flutter-actions/setup-flutter@v3
with:
channel: 'stable'
version: 3.22.3
version: 3.24.0
cache-sdk: true

- name: Install Dependencies
Expand Down Expand Up @@ -96,7 +96,7 @@ jobs:
uses: flutter-actions/setup-flutter@v3
with:
channel: 'stable'
version: 3.22.3
version: 3.24.0
cache-sdk: true

- name: Install Dependencies
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:
uses: flutter-actions/setup-flutter@v3
with:
channel: 'stable'
version: 3.22.3
version: 3.24.0
cache-sdk: true

- name: Install Dependencies
Expand Down Expand Up @@ -80,7 +80,7 @@ jobs:
uses: flutter-actions/setup-flutter@v3
with:
channel: 'stable'
version: 3.22.3
version: 3.24.0
cache-sdk: true

- name: Install Dependencies
Expand Down Expand Up @@ -136,7 +136,7 @@ jobs:
uses: flutter-actions/setup-flutter@v3
with:
channel: 'stable'
version: 3.22.3
version: 3.24.0
cache-sdk: true

- name: Setup Node.js
Expand Down
7 changes: 2 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,18 +32,15 @@ The next generation of LoCyanFrp launcher.
- [x] GUI 版本
- [GUI Features Design](./nyalcf_gui/README.md#设计功能)
- [ ] CLI 版本
- [x] 登录
- [x] 隧道启动
- [ ] 进程管理
- [ ] 用户信息展示
- [CLI Features Design](./nyalcf_cli/README.md#设计功能)
- CI/CD
- GUI 版本
- [x] 自动构建
- [x] 自动发布
- CLI 版本
- [x] 自动构建
- [ ] 自动发布
- [x] 自动发布
- [x] Pull Request 自动检查
- [x] 开源协议/许可证兼容性检查
- [x] 代码质量检查
Expand Down Expand Up @@ -72,7 +69,7 @@ The next generation of LoCyanFrp launcher.
#### 安装依赖

```shell
bash install-dependecy.sh
bash install-dependency.sh
```

### 感谢我们的开发者!是他们使NyaLCF变的更好!
Expand Down
25 changes: 22 additions & 3 deletions RELEASE_CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,30 @@

## 更新日志

# GUI
### GUI

- 修复由于上游API修改导致的数值溢出
- 更新 Flutter
- 修改了欢迎语判定
- 下载 Frpc 添加了镜像选择
- 适配了核心登出会吊销 Token

# CLI
### CLI

- 添加 Frpc 下载功能
- 适配了核心登出会吊销 Token

### 其他

- 重写了下载 Frpc 核心逻辑
- 现在登出会调用请求吊销 Token
- 将网络请求方法改为静态方法
- Typo `install-dependecy.sh` -> `install-dependency.sh`

## 版本信息

- nyalcf_gui: 0.2.1
- nyalcf_cli: 0.0.1
- nyalcf_core,nyalcf_inject: 0.1.6

-/-
<!-- Some change log here -->
File renamed without changes.
4 changes: 3 additions & 1 deletion nyalcf_cli/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@
- [x] 登录
- [x] 隧道启动
- [ ] 进程管理
- [ ] Frpc 下载
- [x] Frpc 下载
- [x] 隧道启动
- [x] 用户信息展示

## 运行测试

Expand Down
11 changes: 8 additions & 3 deletions nyalcf_cli/bin/nyalcf_cli.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,15 @@ import 'dart:io';

import 'package:args/args.dart';
import 'package:nyalcf/commands/config.dart';
import 'package:nyalcf/commands/download.dart';
import 'package:nyalcf/commands/login.dart';
import 'package:nyalcf/arguments.dart';
import 'package:nyalcf/commands/logout.dart';
import 'package:nyalcf/commands/start.dart';
import 'package:nyalcf/utils/path_provider.dart';
import 'package:nyalcf/utils/state.dart';
import 'package:nyalcf_core/storages/configurations/launcher_configuration_storage.dart';
import 'package:nyalcf_core/storages/injector.dart';
import 'package:nyalcf_core/storages/stores/user_info_storage.dart';
import 'package:nyalcf_core/utils/logger.dart';
import 'package:nyalcf_inject/nyalcf_inject.dart';

Expand Down Expand Up @@ -56,8 +57,7 @@ void main(List<String> arguments) async {
await Login().main(results.rest);
}
if (results.wasParsed('logout')) {
await UserInfoStorage.sigo();
Logger.info('Session data removed.');
await Logout().main(results.rest);
}

// 启动 Frpc
Expand All @@ -71,6 +71,11 @@ void main(List<String> arguments) async {
return;
}

// 下载 Frpc
if (results.wasParsed('download')) {
Download().main(results.rest);
}

// 配置修改
if (results.wasParsed('config')) {
Config().main(results.rest);
Expand Down
6 changes: 6 additions & 0 deletions nyalcf_cli/lib/arguments.dart
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,12 @@ class Arguments {
negatable: false,
help: 'Start frpc. usage: ..<proxy_id>',
)
..addFlag(
'download',
abbr: 'd',
negatable: false,
help: 'Download frpc. usage: [<arch> [<platform>]]',
)
..addFlag(
'config',
abbr: 'c',
Expand Down
1 change: 0 additions & 1 deletion nyalcf_cli/lib/commands/config.dart
Original file line number Diff line number Diff line change
Expand Up @@ -48,5 +48,4 @@ class Config implements CommandImplement {
return null;
}
}

}
95 changes: 92 additions & 3 deletions nyalcf_cli/lib/commands/download.dart
Original file line number Diff line number Diff line change
@@ -1,10 +1,99 @@
import 'dart:io';

import 'package:dio/dio.dart';

import 'package:nyalcf/templates/command_implement.dart';
import 'package:nyalcf_core/network/dio/frpc/download_frpc.dart';
import 'package:nyalcf_core/utils/cpu_arch.dart';
import 'package:nyalcf_core/utils/frpc/arch.dart';
import 'package:nyalcf_core/utils/frpc/archive.dart';
import 'package:nyalcf_core/utils/logger.dart';

class Download implements CommandImplement {
List<Map<String, String>> arch = [];
late String platform;

String _selectedArch = '';
String? _provideArch;
String? _providePlatform;
bool _provide = false;

late CancelToken _cancelToken;

@override
void main(List<String> args) {

void main(List<String> args) async {
switch (args.length) {
case 0:
case 2:
if (args.length == 2) {
_provideArch = args[0];
_providePlatform = args[1];
_provide = true;
}
Logger.verbose('Provide info: ${_provideArch}, ${_providePlatform}');
final systemArch = await CPUArch.getCPUArchitecture();
Logger.verbose('CPU arch: ${systemArch}');

bool supportedSystem = false;

if (!_provide) {
getPlatformFrpcArchList();
for (var val in arch) {
Logger.debug(val['arch']);
if (val['name']!.contains(systemArch!)) {
supportedSystem = true;
_selectedArch = val['arch']!;
}
}
Logger.info('Automatic selected arch: ${_selectedArch}');
} else {
_selectedArch = _provideArch!;
platform = _providePlatform!;
Logger.info('Selected: ${_selectedArch} ${_providePlatform}');
}

if (supportedSystem || _provide) {
_cancelToken = CancelToken();
Logger.info('Starting frpc download...');

await DownloadFrpc.download(
arch: _selectedArch,
platform: platform,
version: '0.51.3-3',
releaseName: 'LoCyanFrp-0.51.3-3 #2024050701',
progressCallback: callback,
cancelToken: _cancelToken,
useMirror: false,
);
stdout.write('\rPlease wait, extracting frpc...\n');
await FrpcArchive.unarchive(
platform: platform, arch: _selectedArch, version: '0.51.3-3');
} else {
Logger.error(
'Unsupported system! If you believe this is wrong, please provide arch manually in command.');
}
default:
Logger.error('No valid arguments provided.');
}
}

}
void getPlatformFrpcArchList() {
if (Platform.isWindows) {
platform = 'windows';
this.arch = Arch.windows;
}
if (Platform.isLinux) {
platform = 'linux';
this.arch = Arch.linux;
}
if (Platform.isMacOS) {
platform = 'darwin';
this.arch = Arch.macos;
}
}

void callback(downloaded, all) {
stdout.write('\r' + ' ' * 30);
stdout.write('\rProgress: ${(downloaded / all * 100).toStringAsFixed(2)}%');
}
}
7 changes: 3 additions & 4 deletions nyalcf_cli/lib/commands/login.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,10 @@ import 'package:nyalcf_core/storages/stores/user_info_storage.dart';
import 'package:nyalcf_core/utils/logger.dart';

class Login implements CommandImplement {

@override
Future<void> main(List<String> args) async {
if (args.length == 2) {
final res = await LoginAuth().requestLogin(args[0], args[1]);
final res = await LoginAuth.requestLogin(args[0], args[1]);
if (res.status) {
final UserInfoModel userInfo = res.data['user_info'];
Logger.info('Login successfully.');
Expand All @@ -19,7 +18,8 @@ class Login implements CommandImplement {
Logger.info('- email: ${userInfo.email}');
Logger.info('- login token: ${TextEncrypt.obscure(userInfo.token)}');
Logger.info('- frp token: ${TextEncrypt.obscure(userInfo.frpToken)}');
Logger.info('- speed limit: ${userInfo.inbound / 1024 * 8}Mbps/${userInfo.outbound / 1024 * 8}Mbps');
Logger.info(
'- speed limit: ${userInfo.inbound / 1024 * 8}Mbps/${userInfo.outbound / 1024 * 8}Mbps');
Logger.info('- traffic left: ${userInfo.traffic / 1024}GiB');
await UserInfoStorage.save(userInfo);
Logger.info('Session saved.');
Expand All @@ -28,5 +28,4 @@ class Login implements CommandImplement {
Logger.error('No valid arguments provided.');
}
}

}
18 changes: 18 additions & 0 deletions nyalcf_cli/lib/commands/logout.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import 'package:nyalcf/templates/command_implement.dart';
import 'package:nyalcf_core/storages/stores/user_info_storage.dart';
import 'package:nyalcf_core/utils/logger.dart';

class Logout implements CommandImplement {
@override
Future<void> main(List<String> args) async {
final userInfo = await UserInfoStorage.read();
final res = await UserInfoStorage.sigo(userInfo?.user, userInfo?.token);

if (res) {
Logger.info('Session data removed.');
} else {
Logger.error('Logout failed, please check your network connection and retry.');
}
}

}
4 changes: 2 additions & 2 deletions nyalcf_cli/lib/commands/start.dart
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class Start implements CommandImplement {
final runPath = await FrpcStorage().getRunPath();

if (frpcPath != null) {
final process =await ProcessManager.newProcess(
final process = await ProcessManager.newProcess(
frpcPath: frpcPath,
runPath: runPath,
frpToken: user.frpToken,
Expand All @@ -39,7 +39,7 @@ class Start implements CommandImplement {

if (n == 2) {
for (var process in ProcessManager.processList) {
process.process.kill();
process.process.kill();
}
exit(0);
}
Expand Down
2 changes: 1 addition & 1 deletion nyalcf_cli/lib/templates/command_implement.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
abstract class CommandImplement {
/// 入口函数
void main(List<String> args);
}
}
Loading

0 comments on commit c939082

Please sign in to comment.