Gitlab lyrebird build/run == error

с какого то момента после git pull перестали работать obfs4 мосты через lyrebird
причем я не настолько понимаю в git/go чтобы понять что сломалось

через obfs4proxy или “старый” lyrebird как и раньше без проблем.
вот так только собирается/запускается

C:\GitHub\lyrebird>git branch
* (HEAD detached from lyrebird-0.2.0)
  fix_dependency_redirect
  main

а вот это “последняя” версия == main

2024/07/01 17:22:35 [NOTICE]: devel - launched
2024/07/01 17:22:35 [INFO]: lyrebird-64.exe - initializing client transport listeners
2024/07/01 17:22:35 [INFO]: obfs4 - registered listener: 127.0.0.1:50532
2024/07/01 17:22:35 [INFO]: lyrebird-64.exe - accepting connections
2024/07/01 17:22:35 [NOTICE]: Stdin is closed or unreadable: <nil>
2024/07/01 17:22:35 [NOTICE]: lyrebird-64.exe - terminated
2024-07-01T14:36:20Z  WARN tor_ptmgr: Spawning PT for [PtTransportName("obfs4")] failed: Couldn't parse IPC line "STATUS TYPE=version IMPLEMENTATION="lyrebird" VERSION="devel"": no TRANSPORT in STATUS
2024-07-01T14:36:20Z  WARN tor_ptmgr: PT for obfs4 failed to launch: Couldn't parse IPC line "STATUS TYPE=version IMPLEMENTATION="lyrebird" VERSION="devel"": no TRANSPORT in STATUS

Attempt 1: Problem opening a channel to [23. .99:443 via obfs4 $cafdb3585f1675c07b8f9a2383bfcceb148a97d7]: Pluggable transport error: Couldn't parse IPC line "STATUS TYPE=version IMPLEMENTATION="lyrebird" VERSION="devel"": no TRANSPORT in STATUS

У меня работает последний main, но у меня собственный go.work с обновленными до последних версий локальными библиотеками с моими патчами и использую сишный тор, как более стабильный. Арти пока неюзабелен.

“C:\Program Files\Go\bin\go.exe” version
go version go1.22.4 windows/amd64

go get -u делаю после каждого git pull

но вот вместо make build делаю

env GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build -p 1 -a -ldflags “-s -w” -o lyrebird-64.exe

env GOOS=windows GOARCH=386 CGO_ENABLED=0 go build -p 1 -a -ldflags “-s -w” -o lyrebird-32.exe

раньше так собиралось/запускалось до “devel” версии (?!)

p.s. tor.exe как и tor на ubuntu так же матерятся на новые сборки. но там то мне пофиг. а тут народу выкладывал сборки АРТИ и не сразу заметил неработающие lyrebird что я так же собирал/выкладывал (у меня 4 таргета в РУСТ и несколько конфигов obfs4/lyrebird/snowflake/webtunnel/bridges/etc. все проверить руки не доходят)

пересобрал через make build
только версия в ошибке поменялась

2024-07-01T15:24:11Z WARN tor_ptmgr: PT for obfs4 failed to launch: Couldn’t parse IPC line “STATUS TYPE=version IMPLEMENTATION=“lyrebird” VERSION=“0.2.0-12-gf56896f””: no TRANSPORT in STATUS

У меня в каталоге go.work

go.exe build "-ldflags=-s -w" -trimpath -o lyrebird-client.exe gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/lyrebird/cmd/lyrebird

go get -u ./... и go get -u all я тоже делаю, но после этого надо патчить, библиотеки не стабильны и меняются API. Например на github.com/andybalholm/brotli v1.0.5 клиент не мог подключится. (Сейчас на 1.1.0 работает). Пробуйте на оригинальном go.mod собрать.

неа. то же самое у меня выдает
даже пытался через MSYS2 ucrt пересобрать

2024-07-01T15:51:45Z WARN tor_ptmgr: PT for obfs4 failed to launch: Couldn’t parse IPC line “STATUS TYPE=version IMPLEMENTATION=“lyrebird” VERSION=“devel””: no TRANSPORT in STATUS

C:\GitHub\lyrebird>"C:\Program Files\Go\bin\go.exe" get -u ./...                                    
go: upgraded go 1.20 => 1.21                                                                        
go: added toolchain go1.22.4                                                                        
go: upgraded github.com/andybalholm/brotli v1.0.6 => v1.1.0                                         
go: upgraded github.com/cloudflare/circl v1.3.7 => v1.3.9                                           
go: upgraded github.com/klauspost/compress v1.17.4 => v1.17.9                                       
go: upgraded github.com/quic-go/quic-go v0.40.1 => v0.45.1                                          
go: upgraded github.com/refraction-networking/utls v1.6.3 => v1.6.6

а можно как то сделать go get -u только для определенного git TAG ?
я вижу те же версии что в main но добавляется что то новое после
git switch --detach tags/lyrebird-0.2.0 --recurse-submodules

C:\GitHub\lyrebird>"C:\Program Files\Go\bin\go.exe" get -u ./...                                    
go: upgraded go 1.20 => 1.21                                                                        
go: added toolchain go1.22.4                                                                        
go: upgraded github.com/andybalholm/brotli v1.0.6 => v1.1.0                                         
go: upgraded github.com/cloudflare/circl v1.3.7 => v1.3.9                                           
go: upgraded github.com/klauspost/compress v1.17.4 => v1.17.9                                       
go: upgraded github.com/quic-go/quic-go v0.40.1 => v0.45.1                                          
go: upgraded github.com/refraction-networking/utls v1.6.3 => v1.6.6                                 
go: upgraded gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/webtunnel v0.0.0-20240220175603-399c24557a18 => v0.0.0-20240507101150-3b6faa481637                                          
go: upgraded golang.org/x/crypto v0.21.0 => v0.24.0                                                 
go: upgraded golang.org/x/net v0.22.0 => v0.26.0                                                    
go: upgraded golang.org/x/sys v0.18.0 => v0.21.0                                                    
go: upgraded golang.org/x/text v0.14.0 => v0.16.0

Да, например go get -u github.com/andybalholm/brotli@latest. После @ можно указать тег или ветку.

После всех махинаций можно прогнать go mod tidy для оптимизации go.mod.

What changed, after your git pull, is that lyrebird started reporting its version number to tor. The STATUS protocol that is used by pluggable transports to report their version number was recently re-specified in an incompatible way. It looks like an unanticipated bug that it would cause problems with already deployed versions of tor that interpreted STATUS messages according to the old specification. I left some comments on the bug tracker:

As a workaround, you can try removing the pt.ReportVersion calls from this commit: Report the lyrebird version to tor (f56896ff) · Commits · The Tor Project / Anti-censorship / Pluggable Transports / lyrebird · GitLab.

thanks. i am not programmist. only user
waiting for future fix
my build worked with

C:\GitHub\lyrebird>git branch
* (HEAD detached at lyrebird-0.2.0)
  fix_dependency_redirect
  main

@LeonMskRu I didn’t notice, at first, that you are using Arti, not C-tor. Apparently, using a new lyrebird with an old version of C-tor is only a warning, but in Arti it is an error that prevents the pluggable transport from running. I opened a new issue in Arti.

thanks.
ARTI error == yes

new TOR + any lyrebird OR obfs4proxy == strange things
i am dont make many tests and dont know tor.exe error dont same as ARTI

ClientUseIPv4 0
ClientUseIPv6 1
ClientPreferIPv6ORPort 1

full notice tor.exe 0.4.8.12 https://gist.github.com/LeonMskRu/7a30b12f66c2e99e4c93e15d528a10ce

Jul 11 03:55:33.000 [notice] Bridge at ‘82.165.34.70:443’ isn’t reachable by our firewall policy. Asking bridge authority instead.
Jul 11 03:55:33.000 [notice] Bridge at ‘135.125.182.106:17212’ isn’t reachable by our firewall policy. Asking bridge authority instead.
Jul 11 03:55:33.000 [notice] Bridge at ‘185.144.75.47:1035’ isn’t reachable by our firewall policy. Asking bridge authority instead.

Jul 11 03:56:06.000 [notice] Tried to fetch a descriptor directly from a bridge, but that bridge is not reachable through our firewall.

tor.exe dont warning/error only if change torrc to

ClientUseIPv4 1
ClientUseIPv6 1
ClientPreferIPv6ORPort 1

bridges_obfs4.conf have both IPv6 + IPv4 bridges
https://gist.github.com/LeonMskRu/5e24d4fe01a7d13607f7ce86be5b2812