7 Commits

Author SHA1 Message Date
vkamn 8e0e378414 chore: bump app version (#105) 2026-06-12 21:53:06 +07:00
Yaroslav Gurov d2567418e9 chore: update awg-go version 2026-06-12 16:30:36 +02:00
Roman Zakharchuk 54fa022e2c feat: upgrade to awg2 deps, remove obsolete params (#77)
* upgrade to awg2 deps, remove obsolete params

(cherry picked from commit 4258ea0fd72f71dcded8155833e437b36afbdedc)

* remove H checks

* remove S checks
2025-12-08 12:21:23 +08:00
Roman Zakharchuk 7c15281ef5 feat: add github action(#78)
Signed-off-by: Roman Zakharchuk <romikb@mail.ru>
2025-12-07 21:58:57 +08:00
Roman Zakharchuk 0d4a326a42 fix: amneziawg-windows tag move (#68) 2025-08-26 14:06:45 +08:00
Nethius c7feda5200 Merge pull request #65 from RomikB/awg15
support for awg15 params
2025-08-13 21:09:47 +08:00
RomikB 9b0947bab2 support for awg15 params 2025-07-15 00:15:28 +02:00
7 changed files with 138 additions and 113 deletions
+26
View File
@@ -0,0 +1,26 @@
name: build
on:
workflow_dispatch:
jobs:
build:
runs-on: windows-latest
steps:
- name: checkout
uses: actions/checkout@v4
- name: run build
shell: cmd
run: build.bat
- name: run installer build
shell: cmd
run: installer/build.bat
- name: upload installer artifacts
uses: actions/upload-artifact@v4
with:
name: installer artifacts
path: installer/dist/**
retention-days: 7
+2 -2
View File
@@ -13,13 +13,13 @@ if exist .deps\prepared goto :render
rmdir /s /q .deps 2> NUL
mkdir .deps || goto :error
cd .deps || goto :error
call :download go.zip https://go.dev/dl/go1.22.12.windows-amd64.zip 2ceda04074eac51f4b0b85a9fcca38bcd49daee24bed9ea1f29958a8e22673a6 || goto :error
call :download go.zip https://go.dev/dl/go1.24.4.windows-amd64.zip b751a1136cb9d8a2e7ebb22c538c4f02c09b98138c7c8bfb78a54a4566c013b1 || goto :error
call :download llvm-mingw-20231128-ucrt-x86_64.zip https://github.com/mstorsjo/llvm-mingw/releases/download/20231128/llvm-mingw-20231128-ucrt-x86_64.zip 7a344dafa6942de2c1f4643b3eb5c5ce5317fbab671a887e4d39f326b331798f || goto :error
rem Mirror of https://imagemagick.org/download/binaries/ImageMagick-7.0.8-42-portable-Q16-x64.zip
call :download imagemagick.zip https://download.wireguard.com/windows-toolchain/distfiles/ImageMagick-7.0.8-42-portable-Q16-x64.zip 584e069f56456ce7dde40220948ff9568ac810688c892c5dfb7f6db902aa05aa "convert.exe colors.xml delegates.xml" || goto :error
rem Mirror of https://sourceforge.net/projects/ezwinports/files/make-4.2.1-without-guile-w32-bin.zip
call :download make.zip https://download.wireguard.com/windows-toolchain/distfiles/make-4.2.1-without-guile-w32-bin.zip 30641be9602712be76212b99df7209f4f8f518ba764cf564262bc9d6e4047cc7 "--strip-components 1 bin" || goto :error
call :download amneziawg-tools.zip https://github.com/amnezia-vpn/amneziawg-tools/archive/v1.0.20241018.zip 5141a7d1f2f6d85aa4a12f516b723655b08af2c1d118c0a27fd385d4eb11dec1 "--exclude wg-quick --strip-components 1" || goto :error
call :download amneziawg-tools.zip https://github.com/amnezia-vpn/amneziawg-tools/archive/v1.0.20250903.zip 086e0597906fd720ed83991716e77a8794ab750b9ccff8f153c7c05073d0b40c "--exclude wg-quick --strip-components 1" || goto :error
call :download wintun.zip https://www.wintun.net/builds/wintun-0.14.1.zip 07c256185d6ee3652e09fa55c0b673e2624b565e02c4b9091c79ca7d2f24ef51 || goto :error
copy /y NUL prepared > NUL || goto :error
cd .. || goto :error
+10 -10
View File
@@ -1,23 +1,23 @@
module github.com/amnezia-vpn/amneziawg-windows-client
go 1.22.3
go 1.24.4
require (
github.com/amnezia-vpn/amneziawg-go v0.2.12
github.com/amnezia-vpn/amneziawg-windows v0.1.4
github.com/amnezia-vpn/amneziawg-go v0.2.18
github.com/amnezia-vpn/amneziawg-windows v0.1.9
github.com/lxn/walk v0.0.0-20210112085537-c389da54e794
github.com/lxn/win v0.0.0-20210218163916-a377121e959e
golang.org/x/crypto v0.21.0
golang.org/x/sys v0.18.0
golang.org/x/text v0.14.0
golang.org/x/crypto v0.42.0
golang.org/x/sys v0.36.0
golang.org/x/text v0.29.0
golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2
)
require (
github.com/tevino/abool/v2 v2.1.0 // indirect
golang.org/x/mod v0.8.0 // indirect
golang.org/x/net v0.21.0 // indirect
golang.org/x/tools v0.6.0 // indirect
golang.org/x/mod v0.28.0 // indirect
golang.org/x/net v0.44.0 // indirect
golang.org/x/sync v0.17.0 // indirect
golang.org/x/tools v0.37.0 // indirect
)
replace (
+28 -26
View File
@@ -1,33 +1,35 @@
github.com/amnezia-vpn/amneziawg-go v0.2.12 h1:CxIQETy5kZ0ip/dFBpmnDxAcS/KuIQaJkOxDv5OQhVI=
github.com/amnezia-vpn/amneziawg-go v0.2.12/go.mod h1:d7WpNfzCRLy7ufGElJBYpD58WRmNjyLyt3IDHPY8AmM=
github.com/amnezia-vpn/amneziawg-windows v0.1.4 h1:D2T689FS6pFge+EA49fLXToEgQGO0VrQfLE3Sjmx52w=
github.com/amnezia-vpn/amneziawg-windows v0.1.4/go.mod h1:yYNGWzB5ec+cpTIo4khP0EW/dm02B4XEPLW1j2gnGsA=
github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4=
github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA=
github.com/tevino/abool/v2 v2.1.0 h1:7w+Vf9f/5gmKT4m4qkayb33/92M+Um45F2BkHOR+L/c=
github.com/tevino/abool/v2 v2.1.0/go.mod h1:+Lmlqk6bHDWHqN1cbxqhwEAwMPXgc8I1SDEamtseuXY=
golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA=
golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs=
golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4=
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
github.com/amnezia-vpn/amneziawg-go v0.2.18 h1:pUn7/P8qdGmHd6JmE3bCQXPblZs3vruWR98nLODQLJg=
github.com/amnezia-vpn/amneziawg-go v0.2.18/go.mod h1:aMgOk9MuX0xI7b5TKAYp8pLM54RlXcOPzDvYw3YEO5A=
github.com/amnezia-vpn/amneziawg-windows v0.1.9 h1:lz/aNZkkglUpBXub76TrTybnodrNxEoJwwJghFYcVhg=
github.com/amnezia-vpn/amneziawg-windows v0.1.9/go.mod h1:BdfpKW9+fZdnGpne7h8uidaheypncIQ5vG7oerRDnaw=
github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg=
github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI=
golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8=
golang.org/x/mod v0.28.0 h1:gQBtGhjxykdjY9YhZpSlZIsbnaE2+PgjfLWUQTnoZ1U=
golang.org/x/mod v0.28.0/go.mod h1:yfB/L0NOf/kmEbXjzCPOx1iK1fRutOydrCMsqRhEBxI=
golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I=
golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY=
golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug=
golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
golang.org/x/sys v0.0.0-20201018230417-eeed37f84f13/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4=
golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 h1:vVKdlvoWBphwdxWKrFZEuM0kGgGLxUOYcY4U/2Vjg44=
golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k=
golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk=
golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4=
golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY=
golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/tools v0.37.0 h1:DVSRzp7FwePZW356yEAChSdNcQo6Nsp+fex1SUW09lE=
golang.org/x/tools v0.37.0/go.mod h1:MBN5QPQtLMHVdvsbtarmTNukZDdgwdwlO5qGacAzF0w=
golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 h1:B82qJJgjvYKsXS9jeunTOisW56dUokqW/FOteYJJ/yg=
golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2/go.mod h1:deeaetjYA+DHMHg+sMSMI58GrEteJUUzzw7en6TJQcI=
golang.zx2c4.com/wireguard/windows v0.0.0-20210121140954-e7fc19d483bd h1:kAUzMAITME2MCtrXBaUa9P4tndiXGWO674k9gn6ZR28=
golang.zx2c4.com/wireguard/windows v0.0.0-20210121140954-e7fc19d483bd/go.mod h1:Y+FYqVFaQO6a+1uigm0N0GiuaZrLEaBxEiJ8tfH9sMQ=
golang.zx2c4.com/wireguard/windows v0.0.0-20210224134948-620c54ef6199 h1:ogXKLng/Myrt2odYTkleySGzQj/GWg9GV1AQ8P9NnU4=
golang.zx2c4.com/wireguard/windows v0.0.0-20210224134948-620c54ef6199/go.mod h1:KxxjdtRkfNoYDCUP5ryK7XJJNTnpC8atvtmTheChOtk=
gvisor.dev/gvisor v0.0.0-20230927004350-cbd86285d259 h1:TbRPT0HtzFP3Cno1zZo7yPzEEnfu8EjLfl6IU9VfqkQ=
gvisor.dev/gvisor v0.0.0-20230927004350-cbd86285d259/go.mod h1:AVgIgHMwK63XvmAzWG9vLQ41YnVHN0du0tEC46fI7yY=
gvisor.dev/gvisor v0.0.0-20231202080848-1f7806d17489 h1:ze1vwAdliUAr68RQ5NtufWaXaOg8WUO2OACzEV+TNdE=
gvisor.dev/gvisor v0.0.0-20231202080848-1f7806d17489/go.mod h1:10sU+Uh5KKNv1+2x2A0Gvzt8FjD3ASIhorV3YsauXhk=
+64 -74
View File
@@ -38,10 +38,17 @@ const (
highlightJmax
highlightS1
highlightS2
highlightS3
highlightS4
highlightH1
highlightH2
highlightH3
highlightH4
highlightI1
highlightI2
highlightI3
highlightI4
highlightI5
highlightWarning
highlightError
)
@@ -371,6 +378,24 @@ func (s stringSpan) isValidNetwork() bool {
return s.isValidIPv4() || s.isValidIPv6()
}
func (s stringSpan) isValidHField() bool {
for i := 0; i < s.len; i++ {
if *s.at(i) == '-' {
first := stringSpan{s.s, i}
second := stringSpan{s.at(i + 1), s.len - i - 1}
if first.isValidUint(false, 0, 2_147_483_647) && second.isValidUint(false, 0, 2_147_483_647) {
return true
}
return false
}
}
return s.isValidUint(false, 0, 2_147_483_647)
}
func (s stringSpan) isValidIField() bool {
return s.len != 0
}
type field int32
const (
@@ -390,10 +415,17 @@ const (
fieldJmax
fieldS1
fieldS2
fieldS3
fieldS4
fieldH1
fieldH2
fieldH3
fieldH4
fieldI1
fieldI2
fieldI3
fieldI4
fieldI5
fieldPeerSection
fieldPublicKey
fieldPresharedKey
@@ -455,6 +487,10 @@ func (s stringSpan) field() field {
return fieldS1
case s.isCaselessSame("S2"):
return fieldS2
case s.isCaselessSame("S3"):
return fieldS3
case s.isCaselessSame("S4"):
return fieldS4
case s.isCaselessSame("H1"):
return fieldH1
case s.isCaselessSame("H2"):
@@ -463,6 +499,16 @@ func (s stringSpan) field() field {
return fieldH3
case s.isCaselessSame("H4"):
return fieldH4
case s.isCaselessSame("I1"):
return fieldI1
case s.isCaselessSame("I2"):
return fieldI2
case s.isCaselessSame("I3"):
return fieldI3
case s.isCaselessSame("I4"):
return fieldI4
case s.isCaselessSame("I5"):
return fieldI5
}
return fieldInvalid
}
@@ -593,14 +639,28 @@ func (hsa *highlightSpanArray) highlightValue(parent, s stringSpan, section fiel
hsa.append(parent.s, s, validateHighlight(s.isValidUint(false, 0, 65_535), highlightS1))
case fieldS2:
hsa.append(parent.s, s, validateHighlight(s.isValidUint(false, 0, 65_535), highlightS2))
case fieldS3:
hsa.append(parent.s, s, validateHighlight(s.isValidUint(false, 0, 65_535), highlightS3))
case fieldS4:
hsa.append(parent.s, s, validateHighlight(s.isValidUint(false, 0, 65_535), highlightS4))
case fieldH1:
hsa.append(parent.s, s, validateHighlight(s.isValidUint(false, 0, 2_147_483_647), highlightH1))
hsa.append(parent.s, s, validateHighlight(s.isValidHField(), highlightH1))
case fieldH2:
hsa.append(parent.s, s, validateHighlight(s.isValidUint(false, 0, 2_147_483_647), highlightH2))
hsa.append(parent.s, s, validateHighlight(s.isValidHField(), highlightH2))
case fieldH3:
hsa.append(parent.s, s, validateHighlight(s.isValidUint(false, 0, 2_147_483_647), highlightH3))
hsa.append(parent.s, s, validateHighlight(s.isValidHField(), highlightH3))
case fieldH4:
hsa.append(parent.s, s, validateHighlight(s.isValidUint(false, 0, 2_147_483_647), highlightH4))
hsa.append(parent.s, s, validateHighlight(s.isValidHField(), highlightH4))
case fieldI1:
hsa.append(parent.s, s, validateHighlight(s.isValidIField(), highlightI1))
case fieldI2:
hsa.append(parent.s, s, validateHighlight(s.isValidIField(), highlightI2))
case fieldI3:
hsa.append(parent.s, s, validateHighlight(s.isValidIField(), highlightI3))
case fieldI4:
hsa.append(parent.s, s, validateHighlight(s.isValidIField(), highlightI4))
case fieldI5:
hsa.append(parent.s, s, validateHighlight(s.isValidIField(), highlightI5))
default:
hsa.append(parent.s, s, highlightError)
}
@@ -701,12 +761,6 @@ func highlightASecConfig(cfg string, spans []highlightSpan) {
jc = 0
jmin = 0
jmax = 0
s1 = 0
s2 = 0
h1 = 0
h2 = 0
h3 = 0
h4 = 0
)
var err error
@@ -732,48 +786,12 @@ func highlightASecConfig(cfg string, spans []highlightSpan) {
if jmax, err = strconv.Atoi(cfg[span.s : span.s+span.len]); err != nil {
return
}
case highlightS1:
if s1, err = strconv.Atoi(cfg[span.s : span.s+span.len]); err != nil {
return
}
case highlightS2:
if s2, err = strconv.Atoi(cfg[span.s : span.s+span.len]); err != nil {
return
}
case highlightH1:
if h1, err = strconv.Atoi(cfg[span.s : span.s+span.len]); err != nil {
return
}
case highlightH2:
if h2, err = strconv.Atoi(cfg[span.s : span.s+span.len]); err != nil {
return
}
case highlightH3:
if h3, err = strconv.Atoi(cfg[span.s : span.s+span.len]); err != nil {
return
}
case highlightH4:
if h4, err = strconv.Atoi(cfg[span.s : span.s+span.len]); err != nil {
return
}
}
}
if mtu == 0 {
mtu = device.DefaultMTU
}
if h1 <= 4 {
h1 = 1
}
if h2 <= 4 {
h2 = 2
}
if h3 <= 4 {
h3 = 3
}
if h4 <= 4 {
h4 = 4
}
for i := range spans {
span := &spans[i]
@@ -790,34 +808,6 @@ func highlightASecConfig(cfg string, spans []highlightSpan) {
if (jc != 0 || jmin != 0 || jmax != 0) && (jmax <= jmin || jmax > mtu+diffMTU || jmax > maxMTU) {
span.t = highlightWarning
}
case highlightS1:
if s1+device.MessageInitiationSize == s2+device.MessageResponseSize {
span.t = highlightError
} else if s1 > mtu-device.MessageInitiationSize+diffMTU || s1 > maxMTU-device.MessageInitiationSize {
span.t = highlightWarning
}
case highlightS2:
if s1+device.MessageInitiationSize == s2+device.MessageResponseSize {
span.t = highlightError
} else if s2 > mtu-device.MessageResponseSize+diffMTU || s2 > maxMTU-device.MessageResponseSize {
span.t = highlightWarning
}
case highlightH1:
if h1 > 4 && (h1 == h2 || h1 == h3 || h1 == h4) {
span.t = highlightError
}
case highlightH2:
if h2 > 4 && (h2 == h1 || h2 == h3 || h2 == h4) {
span.t = highlightError
}
case highlightH3:
if h3 > 4 && (h3 == h1 || h3 == h2 || h3 == h4) {
span.t = highlightError
}
case highlightH4:
if h4 > 4 && (h4 == h1 || h4 == h2 || h4 == h3) {
span.t = highlightError
}
}
}
}
+7
View File
@@ -115,10 +115,17 @@ var stylemap = map[highlight]spanStyle{
highlightJmax: {color: win.RGB(0x64, 0x38, 0x20)},
highlightS1: {color: win.RGB(0x64, 0x38, 0x20)},
highlightS2: {color: win.RGB(0x64, 0x38, 0x20)},
highlightS3: {color: win.RGB(0x64, 0x38, 0x20)},
highlightS4: {color: win.RGB(0x64, 0x38, 0x20)},
highlightH1: {color: win.RGB(0x64, 0x38, 0x20)},
highlightH2: {color: win.RGB(0x64, 0x38, 0x20)},
highlightH3: {color: win.RGB(0x64, 0x38, 0x20)},
highlightH4: {color: win.RGB(0x64, 0x38, 0x20)},
highlightI1: {color: win.RGB(0x64, 0x38, 0x20)},
highlightI2: {color: win.RGB(0x64, 0x38, 0x20)},
highlightI3: {color: win.RGB(0x64, 0x38, 0x20)},
highlightI4: {color: win.RGB(0x64, 0x38, 0x20)},
highlightI5: {color: win.RGB(0x64, 0x38, 0x20)},
highlightWarning: {color: win.RGB(0xC4, 0x1A, 0x16), effects: win.CFE_UNDERLINE},
highlightError: {color: win.RGB(0xC4, 0x1A, 0x16), effects: win.CFE_UNDERLINE},
}
+1 -1
View File
@@ -6,5 +6,5 @@
package version
const (
Number = "1.0.2"
Number = "2.0.1"
)