Skip to content

Commit 520a724

Browse files
authored
feat: browser extensions native messaging host (#890)
1 parent a372b67 commit 520a724

31 files changed

+611
-140
lines changed

.github/workflows/build.yml

+20-8
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ jobs:
5252
mv ChineseSimplified.isl "C:\Program Files (x86)\Inno Setup 6\Languages\"
5353
5454
go build -tags nosqlite -ldflags="-w -s -X github.com/GopeedLab/gopeed/pkg/base.Version=$env:VERSION" -buildmode=c-shared -o ui/flutter/windows/libgopeed.dll github.com/GopeedLab/gopeed/bind/desktop
55+
go build -ldflags="-w -s" -o ui/flutter/assets/host/host.exe github.com/GopeedLab/gopeed/cmd/host
5556
cd ui/flutter
5657
$TAG = "v$env:VERSION"
5758
flutter build windows
@@ -122,7 +123,7 @@ jobs:
122123
[Icons]
123124
Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
124125
Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
125-
126+
126127
[Run]
127128
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
128129
"@ > setup.iss
@@ -150,10 +151,13 @@ jobs:
150151
VERSION: ${{ needs.get-release.outputs.version }}
151152
run: |
152153
go build -tags nosqlite -ldflags="-w -s -X github.com/GopeedLab/gopeed/pkg/base.Version=$VERSION" -buildmode=c-shared -o libgopeed.dylib github.com/GopeedLab/gopeed/bind/desktop
154+
go build -ldflags="-w -s" github.com/GopeedLab/gopeed/cmd/host
153155
- uses: actions/upload-artifact@v3
154156
with:
155157
name: macos-arm64-lib
156-
path: libgopeed.dylib
158+
path: |
159+
libgopeed.dylib
160+
host
157161
build-macos:
158162
if: ${{ github.event.inputs.platform == 'all' || github.event.inputs.platform == 'macos' }}
159163
runs-on: macos-13
@@ -185,12 +189,18 @@ jobs:
185189
186190
# amd64 lib
187191
go build -tags nosqlite -ldflags="-w -s -X github.com/GopeedLab/gopeed/pkg/base.Version=$VERSION" -buildmode=c-shared -o ui/flutter/lib-amd64/libgopeed.dylib github.com/GopeedLab/gopeed/bind/desktop
192+
go build -ldflags="-w -s" -o ui/flutter/lib-amd64/host github.com/GopeedLab/gopeed/cmd/host
188193
# universal binary
189194
mkdir -p ui/flutter/macos/Frameworks
190195
cp ui/flutter/lib-amd64/libgopeed.dylib ui/flutter/macos/Frameworks/amd64-lib
191196
cp ui/flutter/lib-arm64/libgopeed.dylib ui/flutter/macos/Frameworks/arm64-lib
197+
cp ui/flutter/lib-amd64/host ui/flutter/macos/Frameworks/amd64-host
198+
cp ui/flutter/lib-arm64/host ui/flutter/macos/Frameworks/arm64-host
192199
cd ui/flutter/macos/Frameworks
193200
lipo -create -output libgopeed.dylib amd64-lib arm64-lib
201+
lipo -create -output host amd64-host arm64-host
202+
rm -rf amd64-lib arm64-lib amd64-host arm64-host
203+
mv host ../../assets/host/host
194204
195205
cd $PROJECT_DIR/ui/flutter
196206
flutter build macos
@@ -239,6 +249,7 @@ jobs:
239249
VERSION: ${{ needs.get-release.outputs.version }}
240250
run: |
241251
go build -tags nosqlite -ldflags="-w -s -X github.com/GopeedLab/gopeed/pkg/base.Version=$VERSION" -buildmode=c-shared -o ui/flutter/linux/bundle/lib/libgopeed.so github.com/GopeedLab/gopeed/bind/desktop
252+
go build -ldflags="-w -s" -o ui/flutter/assets/host/host github.com/GopeedLab/gopeed/cmd/host
242253
cd ui/flutter
243254
dart pub global activate -sgit https://github.com/GopeedLab/flutter_distributor.git --git-path packages/flutter_distributor
244255
flutter_distributor package --platform linux --targets appimage,deb
@@ -269,6 +280,7 @@ jobs:
269280
VERSION: ${{ needs.get-release.outputs.version }}
270281
run: |
271282
go build -tags nosqlite -ldflags="-w -s -X github.com/GopeedLab/gopeed/pkg/base.Version=$VERSION" -buildmode=c-shared -o ui/flutter/linux/bundle/lib/libgopeed.so github.com/GopeedLab/gopeed/bind/desktop
283+
go build -ldflags="-w -s" -o ui/flutter/assets/host/host github.com/GopeedLab/gopeed/cmd/host
272284
cd ui/flutter
273285
274286
sudo snap install snapcraft --classic
@@ -357,13 +369,13 @@ jobs:
357369
\${CRAFT_PART_SRC}/bin/gpu-2404-cleanup mesa-2404
358370
prime:
359371
- bin/gpu-2404-wrapper
360-
372+
361373
plugs:
362374
gpu-2404:
363375
interface: content
364376
target: \$SNAP/gpu-2404
365377
default-provider: mesa-2404
366-
378+
367379
layout:
368380
/usr/share/libdrm:
369381
bind: \$SNAP/gpu-2404/libdrm
@@ -513,7 +525,7 @@ jobs:
513525
steps:
514526
- uses: actions/setup-python@v5
515527
with:
516-
python-version: '3.8.18'
528+
python-version: "3.8.18"
517529
- uses: actions/download-artifact@v3
518530
with:
519531
name: web-dist
@@ -527,12 +539,12 @@ jobs:
527539
wget -O qdk2_0.32.bionic_amd64.deb "https://github.com/qnap-dev/qdk2/releases/download/v0.32/qdk2_0.32.bionic_amd64.deb"
528540
dpkg -X qdk2_0.32.bionic_amd64.deb qdk2 # Direct installs will fail due to missing dependencies!
529541
[[ -d qdk2 ]] || exit 1
530-
542+
531543
export PATH=$(pwd)/qdk2/usr/bin:$(pwd)/qdk2/usr/share/qdk2/QDK/bin:${PATH}
532544
wget -O Gopeed.template.tar.gz "https://github.com/GopeedLab/QpkgBuild/raw/refs/heads/master/template/Gopeed.template.tar.gz"
533545
tar -zxf Gopeed.template.tar.gz
534546
[[ -d Gopeed ]] || exit 1
535-
547+
536548
goos=linux
537549
goarch_arr=(amd64 arm64)
538550
for goarch in "${goarch_arr[@]}"; do
@@ -545,7 +557,7 @@ jobs:
545557
cd Gopeed
546558
sed -i -e 's/__QPKG_VER__/${VERSION}/g' qpkg.cfg
547559
qbuild || exit 1
548-
560+
549561
mkdir -p ../dist/qnap
550562
goos=qnap
551563
for goarch in "${goarch_arr[@]}"; do

cmd/host/main.go

+123
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
package main
2+
3+
import (
4+
"encoding/binary"
5+
"encoding/json"
6+
"errors"
7+
"fmt"
8+
"io"
9+
"os"
10+
"strings"
11+
12+
"github.com/pkg/browser"
13+
"github.com/shirou/gopsutil/v4/process"
14+
)
15+
16+
const identifier = "gopeed"
17+
18+
type Message struct {
19+
Method string `json:"method"`
20+
Params json.RawMessage `json:"params"`
21+
}
22+
23+
type Response struct {
24+
Code int `json:"code"`
25+
Data any `json:"data,omitempty"`
26+
Message string `json:"message,omitempty"`
27+
}
28+
29+
var apiMap = map[string]func(params json.RawMessage) (data any, err error){
30+
"ping": func(params json.RawMessage) (data any, err error) {
31+
processes, err := process.Processes()
32+
if err != nil {
33+
return false, err
34+
}
35+
36+
for _, p := range processes {
37+
name, err := p.Name()
38+
if err != nil {
39+
continue
40+
}
41+
42+
if strings.Contains(strings.ToLower(name), strings.ToLower(identifier)) {
43+
return true, nil
44+
}
45+
}
46+
return false, nil
47+
},
48+
"create": func(params json.RawMessage) (data any, err error) {
49+
var strParams string
50+
if err = json.Unmarshal(params, &strParams); err != nil {
51+
return
52+
}
53+
err = browser.OpenURL(fmt.Sprintf("%s:///create?params=%s", identifier, strParams))
54+
return
55+
},
56+
}
57+
58+
func main() {
59+
for {
60+
// Read message length (first 4 bytes)
61+
var length uint32
62+
if err := binary.Read(os.Stdin, binary.NativeEndian, &length); err != nil {
63+
if err == io.EOF {
64+
// Connection closed by Chrome
65+
return
66+
}
67+
sendError("Failed to read message length: " + err.Error())
68+
return
69+
}
70+
71+
// Read the message
72+
input := make([]byte, length)
73+
if _, err := io.ReadFull(os.Stdin, input); err != nil {
74+
sendError("Failed to read message: " + err.Error())
75+
return
76+
}
77+
78+
// Parse message
79+
var message Message
80+
if err := json.Unmarshal(input, &message); err != nil {
81+
sendError("Failed to parse message: " + err.Error())
82+
return
83+
}
84+
85+
// Handle request
86+
var data any
87+
var err error
88+
if handler, ok := apiMap[message.Method]; ok {
89+
data, err = handler(message.Params)
90+
} else {
91+
err = errors.New("Unknown method: " + message.Method)
92+
}
93+
if err != nil {
94+
sendError(err.Error())
95+
continue
96+
}
97+
sendResponse(0, data, "")
98+
}
99+
}
100+
101+
func sendResponse(code int, data interface{}, message string) {
102+
response := Response{
103+
Code: code,
104+
Data: data,
105+
Message: message,
106+
}
107+
108+
// Encode response
109+
responseBytes, err := json.Marshal(response)
110+
if err != nil {
111+
sendError("Failed to encode response: " + err.Error())
112+
return
113+
}
114+
115+
// Write message length
116+
binary.Write(os.Stdout, binary.NativeEndian, uint32(len(responseBytes)))
117+
// Write message
118+
os.Stdout.Write(responseBytes)
119+
}
120+
121+
func sendError(msg string) {
122+
sendResponse(1, nil, msg)
123+
}

go.mod

+13-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,16 @@ require (
2424
golang.org/x/sync v0.9.0
2525
)
2626

27+
require (
28+
github.com/ebitengine/purego v0.8.1 // indirect
29+
github.com/go-ole/go-ole v1.2.6 // indirect
30+
github.com/lufia/plan9stats v0.0.0-20220913051719-115f729f3c8c // indirect
31+
github.com/power-devops/perfstat v0.0.0-20220216144756-c35f1ee13d7c // indirect
32+
github.com/tklauser/go-sysconf v0.3.12 // indirect
33+
github.com/tklauser/numcpus v0.6.1 // indirect
34+
github.com/yusufpapurcu/wmi v1.2.4 // indirect
35+
)
36+
2737
require (
2838
dario.cat/mergo v1.0.0 // indirect
2939
github.com/Microsoft/go-winio v0.6.1 // indirect
@@ -99,9 +109,11 @@ require (
99109
github.com/pion/turn/v4 v4.0.0 // indirect
100110
github.com/pion/webrtc/v4 v4.0.2 // indirect
101111
github.com/pjbgf/sha1cd v0.3.0 // indirect
112+
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c
102113
github.com/protolambda/ctxlock v0.1.0 // indirect
103114
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
104115
github.com/sergi/go-diff v1.1.0 // indirect
116+
github.com/shirou/gopsutil/v4 v4.24.12
105117
github.com/skeema/knownhosts v1.2.0 // indirect
106118
github.com/spaolacci/murmur3 v1.1.0 // indirect
107119
github.com/tidwall/btree v1.7.0 // indirect
@@ -113,7 +125,7 @@ require (
113125
golang.org/x/crypto v0.29.0 // indirect
114126
golang.org/x/mod v0.22.0 // indirect
115127
golang.org/x/net v0.31.0 // indirect
116-
golang.org/x/sys v0.27.0 // indirect
128+
golang.org/x/sys v0.28.0 // indirect
117129
golang.org/x/text v0.20.0 // indirect
118130
golang.org/x/time v0.8.0 // indirect
119131
golang.org/x/tools v0.27.0 // indirect

go.sum

+25
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,8 @@ github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+m
143143
github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs=
144144
github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU=
145145
github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I=
146+
github.com/ebitengine/purego v0.8.1 h1:sdRKd6plj7KYW33EH5As6YKfe8m9zbN9JMrOjNVF/BE=
147+
github.com/ebitengine/purego v0.8.1/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ=
146148
github.com/edsrzf/mmap-go v1.2.0 h1:hXLYlkbaPzt1SaQk+anYwKSRNhufIDCchSPkUD6dD84=
147149
github.com/edsrzf/mmap-go v1.2.0/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q=
148150
github.com/elazarl/goproxy v0.0.0-20221015165544-a0805db90819 h1:RIB4cRk+lBqKK3Oy0r2gRX4ui7tuhiZq2SuTtTCi0/0=
@@ -187,6 +189,8 @@ github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
187189
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
188190
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
189191
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
192+
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
193+
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
190194
github.com/go-quicktest/qt v1.101.0 h1:O1K29Txy5P2OK0dGo59b7b0LR6wKfIhttaAhHUyn7eI=
191195
github.com/go-quicktest/qt v1.101.0/go.mod h1:14Bz/f7NwaXPtdYEgzsx46kqSxVwTbzVZsDC26tQJow=
192196
github.com/go-sourcemap/sourcemap v2.1.4+incompatible h1:a+iTbH5auLKxaNwQFg0B+TCYl6lbukKPc7b5x0n1s6Q=
@@ -288,6 +292,8 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
288292
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
289293
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
290294
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
295+
github.com/lufia/plan9stats v0.0.0-20220913051719-115f729f3c8c h1:VtwQ41oftZwlMnOEbMWQtSEUgU64U4s+GHk7hZK+jtY=
296+
github.com/lufia/plan9stats v0.0.0-20220913051719-115f729f3c8c/go.mod h1:JKx41uQRwqlTZabZc+kILPrO/3jlKnQ2Z8b7YiVw5cE=
291297
github.com/matoous/go-nanoid v1.5.0/go.mod h1:zyD2a71IubI24efhpvkJz+ZwfwagzgSO6UNiFsZKN7U=
292298
github.com/matoous/go-nanoid/v2 v2.0.0 h1:d19kur2QuLeHmJBkvYkFdhFBzLoo1XVm2GgTpL+9Tj0=
293299
github.com/matoous/go-nanoid/v2 v2.0.0/go.mod h1:FtS4aGPVfEkxKxhdWPAspZpZSh1cOjtM7Ej/So3hR0g=
@@ -363,13 +369,17 @@ github.com/pion/webrtc/v4 v4.0.2 h1:fBwm5/hqSUybrCWl0DDBSTDrpbkcgkqpeLmXw9CsBQA=
363369
github.com/pion/webrtc/v4 v4.0.2/go.mod h1:moylBT2A4dNoEaYBCdV1nThM3TLwRHzWszIG+eSPaqQ=
364370
github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4=
365371
github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI=
372+
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
373+
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=
366374
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
367375
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
368376
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
369377
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
370378
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
371379
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
372380
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
381+
github.com/power-devops/perfstat v0.0.0-20220216144756-c35f1ee13d7c h1:NRoLoZvkBTKvR5gQLgA3e0hqjkY9u1wm+iOL45VN/qI=
382+
github.com/power-devops/perfstat v0.0.0-20220216144756-c35f1ee13d7c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
373383
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
374384
github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs=
375385
github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
@@ -412,6 +422,8 @@ github.com/ryszard/goskiplist v0.0.0-20150312221310-2dfbae5fcf46 h1:GHRpF1pTW19a
412422
github.com/ryszard/goskiplist v0.0.0-20150312221310-2dfbae5fcf46/go.mod h1:uAQ5PCi+MFsC7HjREoAz1BU+Mq60+05gifQSsHSDG/8=
413423
github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0=
414424
github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
425+
github.com/shirou/gopsutil/v4 v4.24.12 h1:qvePBOk20e0IKA1QXrIIU+jmk+zEiYVVx06WjBRlZo4=
426+
github.com/shirou/gopsutil/v4 v4.24.12/go.mod h1:DCtMPAad2XceTeIAbGyVfycbYQNBGk2P8cvDi7/VN9o=
415427
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
416428
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
417429
github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
@@ -447,6 +459,10 @@ github.com/tidwall/btree v1.7.0/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EU
447459
github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE=
448460
github.com/tinylib/msgp v1.1.0/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE=
449461
github.com/tinylib/msgp v1.1.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE=
462+
github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU=
463+
github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI=
464+
github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk=
465+
github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY=
450466
github.com/willf/bitset v1.1.9/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4=
451467
github.com/willf/bitset v1.1.10/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4=
452468
github.com/wlynxg/anet v0.0.5 h1:J3VJGi1gvo0JwZ/P1/Yc/8p63SoW98B5dHkYDmpgvvU=
@@ -458,6 +474,8 @@ github.com/xiaoqidun/setft v0.0.0-20220310121541-be86327699ad/go.mod h1:Jj8p9bgK
458474
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
459475
github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
460476
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
477+
github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0=
478+
github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
461479
go.etcd.io/bbolt v1.3.11 h1:yGEzV1wPz2yVCLsD8ZAiGHhHVlczyC9d1rP43/VCRJ0=
462480
go.etcd.io/bbolt v1.3.11/go.mod h1:dksAq7YMXoljX0xu6VF5DMZGbhYYoLUalEiSySYAS4I=
463481
go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=
@@ -543,6 +561,7 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h
543561
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
544562
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
545563
golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
564+
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
546565
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
547566
golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
548567
golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -552,6 +571,7 @@ golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7w
552571
golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
553572
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
554573
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
574+
golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
555575
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
556576
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
557577
golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -562,13 +582,18 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc
562582
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
563583
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
564584
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
585+
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
565586
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
566587
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
567588
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
568589
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
590+
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
591+
golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
569592
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
570593
golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s=
571594
golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
595+
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
596+
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
572597
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
573598
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
574599
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=

ui/flutter/.gitignore

+4-1
Original file line numberDiff line numberDiff line change
@@ -67,4 +67,7 @@ windows/flutter/generated_plugins.cmake
6767

6868
# Hive database files
6969
database.hive
70-
database.lock
70+
database.lock
71+
72+
assets/host/host
73+
assets/host/host.exe

0 commit comments

Comments
 (0)