Skip to content

Commit ca314a3

Browse files
committed
perf(gt): improve compatibility
ci(macos): improve details
1 parent 8f30789 commit ca314a3

File tree

9 files changed

+32
-83
lines changed

9 files changed

+32
-83
lines changed

.github/workflows/container.yml

Lines changed: 9 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -374,56 +374,7 @@ jobs:
374374
cache-to: type=gha,mode=max
375375
file: Dockerfile-client
376376

377-
build-macos-x86_64:
378-
runs-on: macos-13
379-
permissions:
380-
contents: read
381-
packages: write
382-
id-token: write
383-
384-
385-
386-
steps:
387-
- uses: actions/checkout@v3
388-
with:
389-
submodules: recursive
390-
391-
392-
- name: Set up Go
393-
uses: actions/setup-go@v4
394-
with:
395-
go-version: 'stable'
396-
397-
- name: package-gt
398-
run: |-
399-
sudo mkdir -pv /opt/homebrew/opt
400-
brew install make llvm@16 binutils ninja
401-
pip3 install --upgrade setuptools
402-
curl -LOJ https://chrome-infra-packages.appspot.com/dl/gn/gn/mac-amd64/+/latest
403-
unzip gn-mac-amd64.zip
404-
chmod +x gn && mv gn /usr/local/opt/llvm@16/bin/
405-
sudo ln -s /usr/local/opt/llvm@16 /opt/homebrew/opt/llvm
406-
ln -s /usr/local/opt/llvm@16 /usr/local/opt/llvm
407-
echo 'export PATH="/usr/local/opt/llvm@16/bin:$PATH"' >> ~/.bash_profile
408-
export PATH="/usr/local/opt/make/libexec/gnubin:$PATH"
409-
echo 'export PATH="/usr/local/opt/binutils/bin:$PATH"' >> ~/.bash_profile
410-
source ~/.bash_profile
411-
mv /usr/local/opt/llvm/bin/llvm-libtool-darwin /usr/local/opt/llvm/bin/libtool
412-
rustup target add x86_64-apple-darwin aarch64-apple-darwin
413-
cd ./libcs && TARGET=x86_64-apple-darwin GOOS=darwin GOARCH=amd64 arch -arch x86_64 make release_lib
414-
cargo build --target x86_64-apple-darwin -r
415-
cd ..
416-
mkdir -p release
417-
cp target/x86_64-apple-darwin/release/gt release/gt-macos-x86_64
418-
419-
- name: Archive GT artifacts
420-
uses: actions/upload-artifact@v3
421-
with:
422-
name: gt-macos-x86_64
423-
path: |
424-
release/*
425-
426-
build-macos-arm64:
377+
build-macos:
427378
runs-on: macos-14
428379
permissions:
429380
contents: read
@@ -451,7 +402,7 @@ jobs:
451402

452403
- name: package-gt
453404
run: |-
454-
brew install make llvm@16 binutils ninja
405+
brew install llvm@16 ninja
455406
curl -LOJ https://chrome-infra-packages.appspot.com/dl/gn/gn/mac-amd64/+/latest
456407
unzip gn-mac-amd64.zip
457408
chmod +x gn && mv gn /opt/homebrew/opt/llvm@16/bin/
@@ -462,15 +413,19 @@ jobs:
462413
source ~/.bash_profile
463414
mv /opt/homebrew/opt/llvm/bin/llvm-libtool-darwin /opt/homebrew/opt/llvm/bin/libtool
464415
rustup target add x86_64-apple-darwin aarch64-apple-darwin
465-
cd ./libcs && TARGET=aarch64-apple-darwin GOOS=darwin GOARCH=arm64 arch -arch arm64 make release_lib
466-
cargo build --target aarch64-apple-darwin -r
416+
cd ./libcs
417+
TARGET=aarch64-apple-darwin GOOS=darwin GOARCH=arm64 arch -arch arm64 make release_lib
418+
TARGET=x86_64-apple-darwin GOOS=darwin GOARCH=amd64 arch -arch x86_64 make release_lib
467419
cd ..
420+
cargo build --target aarch64-apple-darwin -r
421+
cargo build --target x86_64-apple-darwin -r
468422
mkdir -p release
469423
cp target/aarch64-apple-darwin/release/gt release/gt-macos-aarch64
424+
cp target/x86_64-apple-darwin/release/gt release/gt-macos-x86_64
470425
471426
- name: Archive GT artifacts
472427
uses: actions/upload-artifact@v3
473428
with:
474-
name: gt-macos-aarch64
429+
name: gt-macos
475430
path: |
476431
release/*

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ resolver = "2"
44

55
[workspace.package]
66
authors = ["Zhiyi Weng"]
7-
version = "2.2.0"
7+
version = "2.2.1"
88
edition = "2021"
99
description = "Fast WebSocket(s)/HTTP(s)/TCP relay proxy with WebRTC P2P supports."
1010

bin/src/main.rs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -102,13 +102,7 @@ fn main() {
102102
}
103103
}
104104

105-
let mut args = env::args();
106-
if args.len() == 0 {
107-
error!("no program provided");
108-
return;
109-
}
110-
let program = args.next().unwrap();
111-
let m = manager::Manager::new(program, manager_args);
105+
let m = manager::Manager::new(manager_args);
112106
info!("GT");
113107
if let Err(e) = m.run_manager() {
114108
error!("GT Manager error: {:?}", e);

bin/src/manager.rs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -73,16 +73,14 @@ enum ProcessConfigEnum {
7373
}
7474

7575
pub struct Manager {
76-
program: String,
7776
args: ManagerArgs,
7877
cmds: Arc<Mutex<HashMap<ProcessConfigEnum, Cmd>>>,
7978
configs: Arc<Mutex<Option<Vec<ProcessConfigEnum>>>>,
8079
}
8180

8281
impl Manager {
83-
pub fn new(program: String, args: ManagerArgs) -> Self {
82+
pub fn new(args: ManagerArgs) -> Self {
8483
Self {
85-
program,
8684
args,
8785
cmds: Arc::new(Mutex::new(HashMap::new())),
8886
configs: Arc::new(Mutex::new(None)),
@@ -184,12 +182,11 @@ impl Manager {
184182
}
185183

186184
fn sync_run(
187-
program: String,
188185
cmd_map: Arc<Mutex<HashMap<ProcessConfigEnum, Cmd>>>,
189186
configs: Vec<ProcessConfigEnum>,
190187
sub_cmd: &'static str,
191188
) -> BoxFuture<'static, Result<()>> {
192-
async move { Self::run(program, cmd_map, configs, sub_cmd).await }.boxed()
189+
async move { Self::run(cmd_map, configs, sub_cmd).await }.boxed()
193190
}
194191

195192
async fn handle_stdout(
@@ -265,7 +262,6 @@ impl Manager {
265262
}
266263

267264
async fn run(
268-
program: String,
269265
cmd_map: Arc<Mutex<HashMap<ProcessConfigEnum, Cmd>>>,
270266
configs: Vec<ProcessConfigEnum>,
271267
sub_cmd: &'static str,
@@ -295,7 +291,7 @@ impl Manager {
295291
.into_iter()
296292
.map(|config| {
297293
info!("run {sub_cmd} config: {:?}", config);
298-
let mut cmd = Command::new(program.clone());
294+
let mut cmd = Command::new(env::current_exe()?);
299295
cmd.arg(sub_cmd);
300296
cmd_config!(cmd, config);
301297
cmd.spawn()
@@ -306,7 +302,6 @@ impl Manager {
306302
let ready_done_counter = Arc::new(AtomicUsize::new(cmds.len()));
307303

308304
for (mut c, config) in cmds {
309-
let program = program.clone();
310305
let cmd_map = cmd_map.clone();
311306
let ready_done_counter = ready_done_counter.clone();
312307
tokio::spawn(async move {
@@ -327,11 +322,10 @@ impl Manager {
327322
process_shutdown(config.clone(), cmd, send_graceful_shutdown).await;
328323
}
329324
let reconnect = async {
330-
let program = program.clone();
331325
let cmds = cmd_map.clone();
332326
let config = config.clone();
333327
if let Err(e) =
334-
Self::sync_run(program, cmds, vec![config.clone()], sub_cmd).await
328+
Self::sync_run(cmds, vec![config.clone()], sub_cmd).await
335329
{
336330
error!("{sub_cmd} ({config:?}) reconnect sync_run failed: {:?}", e);
337331
}
@@ -387,7 +381,15 @@ impl Manager {
387381
loop {
388382
info!("restarting {sub_cmd} ({config:?}) in {wait_time:?}");
389383
tokio::time::sleep(wait_time).await;
390-
let mut cmd = Command::new(&program);
384+
let exe = match env::current_exe() {
385+
Ok(exe) => exe,
386+
Err(e) => {
387+
wait_time = Duration::from_secs(3 * 60);
388+
error!("failed to restart {sub_cmd} ({config:?}): {:?}", e);
389+
continue;
390+
}
391+
};
392+
let mut cmd = Command::new(exe);
391393
cmd.arg(sub_cmd);
392394
cmd_config!(cmd, config);
393395
match cmd.spawn() {
@@ -426,7 +428,6 @@ impl Manager {
426428
}
427429
if !server_config.is_empty() {
428430
Self::run(
429-
self.program.clone(),
430431
self.cmds.clone(),
431432
server_config,
432433
"sub-server",
@@ -437,7 +438,6 @@ impl Manager {
437438

438439
if !client_config.is_empty() {
439440
Self::run(
440-
self.program.clone(),
441441
self.cmds.clone(),
442442
client_config,
443443
"sub-client",

libcs/client/peerproc.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,11 @@ type opGetOfferSDP struct {
7575
}
7676

7777
func (pt *peerProcessTask) init() (err error) {
78-
cmd := exec.Command(os.Args[0], "sub-p2p")
78+
execPath, err := os.Executable()
79+
if err != nil {
80+
return
81+
}
82+
cmd := exec.Command(execPath, "sub-p2p")
7983
pt.stdin, err = cmd.StdinPipe()
8084
if err != nil {
8185
return

libcs/web/front/src/languages/lang/zh.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ export namespace zh {
238238
RemoteTCPRandom: "GT-Server TCP随机端口",
239239
LocalURL: "本地 URL",
240240
LocalTimeout: "本地连接超时时间",
241-
UseLocalAsHTTPHost: "HTTP Header Host替换",
241+
UseLocalAsHTTPHost: "替换 HTTP Header Host",
242242
TcpForwardAddr: "TCP 转发地址",
243243
TcpForwardHostPrefix: "TCP 转发主机前缀",
244244
TcpForwardConnections: "TCP 转发连接数",

libcs/web/server/util/system.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,6 @@ func SendSignal(signal string) (err error) {
3636
cmd = exec.Command(execPath, "-s", "restart")
3737
case "stop":
3838
cmd = exec.Command(execPath, "-s", "stop")
39-
case "kill":
40-
cmd = exec.Command(execPath, "-s", "kill")
4139
default:
4240
err = errors.New("unknown signal")
4341
return

libcs/web/server/util/system_win.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,12 @@ func SendSignal(signal string) (err error) {
3636
cmd = exec.Command(execPath, "-s", "restart")
3737
case "stop":
3838
cmd = exec.Command(execPath, "-s", "stop")
39-
case "kill":
40-
cmd = exec.Command(execPath, "-s", "kill")
4139
default:
4240
err = errors.New("unknown signal")
4341
return
4442
}
4543
cmd.SysProcAttr = &syscall.SysProcAttr{
46-
// Setpgid: true
44+
CreationFlags: syscall.CREATE_NEW_PROCESS_GROUP,
4745
}
4846
err = cmd.Start()
4947
if err != nil {

0 commit comments

Comments
 (0)