mirror of
https://github.com/amnezia-vpn/amnezia-client.git
synced 2026-06-20 02:00:55 +07:00
feat: awg 2 support (#1836)
* Add updated awg container * add missing files * Hide uninstalled AwgLegacy container * Fix resources file * Add role for allowed for installation containers * Add native config sharing for new Awg container * Fix not opening awg settings * Remove AwgLegacy from wizard manual installation page * Fix AmneziaWG settings * chore: update link to submodule * refactor: remove j1-j3 and itime * chore: return s3 s4 fields to ui * fix: awg2 native config compatability * chore: update packet size validation * feat: add awg2 support in self-hosted containers * fix: delete parameters from server config * feat: add H-parameters validation as a strings * chore: update link to submodule * chore: add containers type for awg 1.5 and awg 2 * chore: fixed s3/s4 visibility for awg 1 --------- Co-authored-by: aiamnezia <ai@amnezia.org>
This commit is contained in:
@@ -281,100 +281,6 @@ PageType {
|
||||
}
|
||||
}
|
||||
|
||||
AwgTextField {
|
||||
id: controlledJunk1TextField
|
||||
|
||||
Layout.leftMargin: 16
|
||||
Layout.rightMargin: 16
|
||||
|
||||
headerText: qsTr("J1 - First controlled junk packet")
|
||||
textField.text: clientControlledJunk1
|
||||
textField.validator: null
|
||||
checkEmptyText: false
|
||||
|
||||
textField.onEditingFinished: {
|
||||
if (textField.text !== clientControlledJunk1) {
|
||||
clientControlledJunk1 = textField.text
|
||||
}
|
||||
}
|
||||
|
||||
textField.onActiveFocusChanged: {
|
||||
if (textField.activeFocus) {
|
||||
smartScroll.scrollToItem(controlledJunk1TextField)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
AwgTextField {
|
||||
id: controlledJunk2TextField
|
||||
|
||||
Layout.leftMargin: 16
|
||||
Layout.rightMargin: 16
|
||||
|
||||
headerText: qsTr("J2 - Second controlled junk packet")
|
||||
textField.text: clientControlledJunk2
|
||||
textField.validator: null
|
||||
checkEmptyText: false
|
||||
|
||||
textField.onEditingFinished: {
|
||||
if (textField.text !== clientControlledJunk2) {
|
||||
clientControlledJunk2 = textField.text
|
||||
}
|
||||
}
|
||||
|
||||
textField.onActiveFocusChanged: {
|
||||
if (textField.activeFocus) {
|
||||
smartScroll.scrollToItem(controlledJunk2TextField)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
AwgTextField {
|
||||
id: controlledJunk3TextField
|
||||
|
||||
Layout.leftMargin: 16
|
||||
Layout.rightMargin: 16
|
||||
|
||||
headerText: qsTr("J3 - Third controlled junk packet")
|
||||
textField.text: clientControlledJunk3
|
||||
textField.validator: null
|
||||
checkEmptyText: false
|
||||
|
||||
textField.onEditingFinished: {
|
||||
if (textField.text !== clientControlledJunk3) {
|
||||
clientControlledJunk3 = textField.text
|
||||
}
|
||||
}
|
||||
|
||||
textField.onActiveFocusChanged: {
|
||||
if (textField.activeFocus) {
|
||||
smartScroll.scrollToItem(controlledJunk3TextField)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
AwgTextField {
|
||||
id: iTimeTextField
|
||||
|
||||
Layout.leftMargin: 16
|
||||
Layout.rightMargin: 16
|
||||
|
||||
headerText: qsTr("Itime - Special handshake timeout")
|
||||
textField.text: clientSpecialHandshakeTimeout
|
||||
checkEmptyText: false
|
||||
|
||||
textField.onEditingFinished: {
|
||||
if (textField.text !== clientSpecialHandshakeTimeout) {
|
||||
clientSpecialHandshakeTimeout = textField.text
|
||||
}
|
||||
}
|
||||
|
||||
textField.onActiveFocusChanged: {
|
||||
if (textField.activeFocus) {
|
||||
smartScroll.scrollToItem(iTimeTextField)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Header2TextType {
|
||||
Layout.fillWidth: true
|
||||
@@ -421,29 +327,29 @@ PageType {
|
||||
textField.text: serverResponsePacketJunkSize
|
||||
}
|
||||
|
||||
// AwgTextField {
|
||||
// id: cookieReplyPacketJunkSizeTextField
|
||||
AwgTextField {
|
||||
id: cookieReplyPacketJunkSizeTextField
|
||||
|
||||
// Layout.leftMargin: 16
|
||||
// Layout.rightMargin: 16
|
||||
Layout.leftMargin: 16
|
||||
Layout.rightMargin: 16
|
||||
|
||||
// enabled: false
|
||||
enabled: false
|
||||
|
||||
// headerText: "S3 - Cookie Reply packet junk size"
|
||||
// textField.text: serverCookieReplyPacketJunkSize
|
||||
// }
|
||||
headerText: "S3 - Cookie Reply packet junk size"
|
||||
textField.text: serverCookieReplyPacketJunkSize
|
||||
}
|
||||
|
||||
// AwgTextField {
|
||||
// id: transportPacketJunkSizeTextField
|
||||
AwgTextField {
|
||||
id: transportPacketJunkSizeTextField
|
||||
|
||||
// Layout.leftMargin: 16
|
||||
// Layout.rightMargin: 16
|
||||
Layout.leftMargin: 16
|
||||
Layout.rightMargin: 16
|
||||
|
||||
// enabled: false
|
||||
enabled: false
|
||||
|
||||
// headerText: "S4 - Transport packet junk size"
|
||||
// textField.text: serverTransportPacketJunkSize
|
||||
// }
|
||||
headerText: "S4 - Transport packet junk size"
|
||||
textField.text: serverTransportPacketJunkSize
|
||||
}
|
||||
|
||||
AwgTextField {
|
||||
id: initPacketMagicHeaderTextField
|
||||
|
||||
@@ -234,37 +234,53 @@ PageType {
|
||||
}
|
||||
}
|
||||
|
||||
// AwgTextField {
|
||||
// id: cookieReplyPacketJunkSizeTextField
|
||||
AwgTextField {
|
||||
id: cookieReplyPacketJunkSizeTextField
|
||||
|
||||
// Layout.leftMargin: 16
|
||||
// Layout.rightMargin: 16
|
||||
Layout.leftMargin: 16
|
||||
Layout.rightMargin: 16
|
||||
|
||||
// headerText: qsTr("S3 - Cookie reply packet junk size")
|
||||
// textField.text: serverCookieReplyPacketJunkSize
|
||||
visible: isAwg2
|
||||
|
||||
// textField.onEditingFinished: {
|
||||
// if (textField.text !== serverCookieReplyPacketJunkSize) {
|
||||
// serverCookieReplyPacketJunkSize = textField.text
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
headerText: qsTr("S3 - Cookie reply packet junk size")
|
||||
textField.text: serverCookieReplyPacketJunkSize
|
||||
|
||||
// AwgTextField {
|
||||
// id: transportPacketJunkSizeTextField
|
||||
textField.onEditingFinished: {
|
||||
if (textField.text !== serverCookieReplyPacketJunkSize) {
|
||||
serverCookieReplyPacketJunkSize = textField.text
|
||||
}
|
||||
}
|
||||
|
||||
// Layout.leftMargin: 16
|
||||
// Layout.rightMargin: 16
|
||||
textField.onActiveFocusChanged: {
|
||||
if (textField.activeFocus) {
|
||||
smartScroll.scrollToItem(cookieReplyPacketJunkSizeTextField)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// headerText: qsTr("S4 - Transport packet junk size")
|
||||
// textField.text: serverTransportPacketJunkSize
|
||||
AwgTextField {
|
||||
id: transportPacketJunkSizeTextField
|
||||
|
||||
// textField.onEditingFinished: {
|
||||
// if (textField.text !== serverTransportPacketJunkSize) {
|
||||
// serverTransportPacketJunkSize = textField.text
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
Layout.leftMargin: 16
|
||||
Layout.rightMargin: 16
|
||||
|
||||
visible: isAwg2
|
||||
|
||||
headerText: qsTr("S4 - Transport packet junk size")
|
||||
textField.text: serverTransportPacketJunkSize
|
||||
|
||||
textField.onEditingFinished: {
|
||||
if (textField.text !== serverTransportPacketJunkSize) {
|
||||
serverTransportPacketJunkSize = textField.text
|
||||
}
|
||||
}
|
||||
|
||||
textField.onActiveFocusChanged: {
|
||||
if (textField.activeFocus) {
|
||||
smartScroll.scrollToItem(transportPacketJunkSizeTextField)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
AwgTextField {
|
||||
id: initPacketMagicHeaderTextField
|
||||
@@ -274,6 +290,9 @@ PageType {
|
||||
|
||||
headerText: qsTr("H1 - Init packet magic header")
|
||||
textField.text: serverInitPacketMagicHeader
|
||||
textField.validator: RegularExpressionValidator {
|
||||
regularExpression: /^(\d+)(-\d+)?$/
|
||||
}
|
||||
|
||||
textField.onEditingFinished: {
|
||||
if (textField.text !== serverInitPacketMagicHeader) {
|
||||
@@ -296,6 +315,9 @@ PageType {
|
||||
|
||||
headerText: qsTr("H2 - Response packet magic header")
|
||||
textField.text: serverResponsePacketMagicHeader
|
||||
textField.validator: RegularExpressionValidator {
|
||||
regularExpression: /^(\d+)(-\d+)?$/
|
||||
}
|
||||
|
||||
textField.onEditingFinished: {
|
||||
if (textField.text !== serverResponsePacketMagicHeader) {
|
||||
@@ -318,6 +340,9 @@ PageType {
|
||||
|
||||
headerText: qsTr("H3 - Underload packet magic header")
|
||||
textField.text: serverUnderloadPacketMagicHeader
|
||||
textField.validator: RegularExpressionValidator {
|
||||
regularExpression: /^(\d+)(-\d+)?$/
|
||||
}
|
||||
|
||||
textField.onEditingFinished: {
|
||||
if (textField.text !== serverUnderloadPacketMagicHeader) {
|
||||
@@ -340,6 +365,9 @@ PageType {
|
||||
|
||||
headerText: qsTr("H4 - Transport packet magic header")
|
||||
textField.text: serverTransportPacketMagicHeader
|
||||
textField.validator: RegularExpressionValidator {
|
||||
regularExpression: /^(\d+)(-\d+)?$/
|
||||
}
|
||||
|
||||
textField.onEditingFinished: {
|
||||
if (textField.text !== serverTransportPacketMagicHeader) {
|
||||
@@ -368,8 +396,8 @@ PageType {
|
||||
responsePacketMagicHeaderTextField.errorText === "" &&
|
||||
initPacketMagicHeaderTextField.errorText === "" &&
|
||||
responsePacketJunkSizeTextField.errorText === "" &&
|
||||
// cookieReplyHeaderJunkTextField.errorText === "" &&
|
||||
// transportHeaderJunkTextField.errorText === "" &&
|
||||
cookieReplyPacketJunkSizeTextField.errorText === "" &&
|
||||
transportPacketJunkSizeTextField.errorText === "" &&
|
||||
initPacketJunkSizeTextField.errorText === "" &&
|
||||
junkPacketMaxSizeTextField.errorText === "" &&
|
||||
junkPacketMinSizeTextField.errorText === "" &&
|
||||
@@ -396,17 +424,12 @@ PageType {
|
||||
}
|
||||
|
||||
if (AwgConfigModel.isPacketSizeEqual(parseInt(initPacketJunkSizeTextField.textField.text),
|
||||
parseInt(responsePacketJunkSizeTextField.textField.text))) {
|
||||
PageController.showErrorMessage(qsTr("The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)"))
|
||||
parseInt(responsePacketJunkSizeTextField.textField.text),
|
||||
parseInt(cookieReplyPacketJunkSizeTextField.textField.text),
|
||||
parseInt(transportPacketJunkSizeTextField.textField.text))) {
|
||||
PageController.showErrorMessage(qsTr("The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92) + S3 + cookie reply size (64) + S4 + transport packet size (32)"))
|
||||
return
|
||||
}
|
||||
// if (AwgConfigModel.isPacketSizeEqual(parseInt(initPacketJunkSizeTextField.textField.text),
|
||||
// parseInt(responsePacketJunkSizeTextField.textField.text),
|
||||
// parseInt(cookieReplyPacketJunkSizeTextField.textField.text),
|
||||
// parseInt(transportPacketJunkSizeTextField.textField.text))) {
|
||||
// PageController.showErrorMessage(qsTr("The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92) + S3 + cookie reply size (64) + S4 + transport packet size (32)"))
|
||||
// return
|
||||
// }
|
||||
}
|
||||
|
||||
var headerText = qsTr("Save settings?")
|
||||
|
||||
@@ -26,6 +26,10 @@ PageType {
|
||||
ValueFilter {
|
||||
roleName: "isSupported"
|
||||
value: true
|
||||
},
|
||||
ValueFilter {
|
||||
roleName: "isInstallationAllowed"
|
||||
value: true
|
||||
}
|
||||
]
|
||||
sorters: RoleSorter {
|
||||
|
||||
@@ -459,6 +459,10 @@ PageType {
|
||||
root.connectionTypesModel.push(wireGuardConnectionFormat)
|
||||
} else if (index === ContainerProps.containerFromString("amnezia-awg")) {
|
||||
root.connectionTypesModel.push(awgConnectionFormat)
|
||||
} else if (index === ContainerProps.containerFromString("amnezia-awg2")) {
|
||||
root.connectionTypesModel.push(awgConnectionFormat)
|
||||
} else if (index === ContainerProps.containerFromString("amnezia-awg1.5")) {
|
||||
root.connectionTypesModel.push(awgConnectionFormat)
|
||||
} else if (index === ContainerProps.containerFromString("amnezia-shadowsocks")) {
|
||||
root.connectionTypesModel.push(openVpnConnectionFormat)
|
||||
root.connectionTypesModel.push(shadowSocksConnectionFormat)
|
||||
|
||||
Reference in New Issue
Block a user