109 lines
3.6 KiB
Kotlin
109 lines
3.6 KiB
Kotlin
package org.amnezia.vpn.protocol.awg
|
|
|
|
import org.amnezia.vpn.protocol.BadConfigException
|
|
import org.amnezia.vpn.protocol.wireguard.WireguardConfig
|
|
|
|
class AwgConfig private constructor(
|
|
wireguardConfigBuilder: WireguardConfig.Builder,
|
|
val jc: Int,
|
|
val jmin: Int,
|
|
val jmax: Int,
|
|
val s1: Int,
|
|
val s2: Int,
|
|
val h1: Long,
|
|
val h2: Long,
|
|
val h3: Long,
|
|
val h4: Long
|
|
) : WireguardConfig(wireguardConfigBuilder) {
|
|
|
|
private constructor(builder: Builder) : this(
|
|
builder,
|
|
builder.jc,
|
|
builder.jmin,
|
|
builder.jmax,
|
|
builder.s1,
|
|
builder.s2,
|
|
builder.h1,
|
|
builder.h2,
|
|
builder.h3,
|
|
builder.h4
|
|
)
|
|
|
|
override fun toWgUserspaceString(): String = with(StringBuilder()) {
|
|
append(super.toWgUserspaceString())
|
|
appendLine("jc=$jc")
|
|
appendLine("jmin=$jmin")
|
|
appendLine("jmax=$jmax")
|
|
appendLine("s1=$s1")
|
|
appendLine("s2=$s2")
|
|
appendLine("h1=$h1")
|
|
appendLine("h2=$h2")
|
|
appendLine("h3=$h3")
|
|
appendLine("h4=$h4")
|
|
return this.toString()
|
|
}
|
|
|
|
class Builder : WireguardConfig.Builder() {
|
|
|
|
private var _jc: Int? = null
|
|
internal var jc: Int
|
|
get() = _jc ?: throw BadConfigException("AWG: parameter jc is undefined")
|
|
private set(value) { _jc = value }
|
|
|
|
private var _jmin: Int? = null
|
|
internal var jmin: Int
|
|
get() = _jmin ?: throw BadConfigException("AWG: parameter jmin is undefined")
|
|
private set(value) { _jmin = value }
|
|
|
|
private var _jmax: Int? = null
|
|
internal var jmax: Int
|
|
get() = _jmax ?: throw BadConfigException("AWG: parameter jmax is undefined")
|
|
private set(value) { _jmax = value }
|
|
|
|
private var _s1: Int? = null
|
|
internal var s1: Int
|
|
get() = _s1 ?: throw BadConfigException("AWG: parameter s1 is undefined")
|
|
private set(value) { _s1 = value }
|
|
|
|
private var _s2: Int? = null
|
|
internal var s2: Int
|
|
get() = _s2 ?: throw BadConfigException("AWG: parameter s2 is undefined")
|
|
private set(value) { _s2 = value }
|
|
|
|
private var _h1: Long? = null
|
|
internal var h1: Long
|
|
get() = _h1 ?: throw BadConfigException("AWG: parameter h1 is undefined")
|
|
private set(value) { _h1 = value }
|
|
|
|
private var _h2: Long? = null
|
|
internal var h2: Long
|
|
get() = _h2 ?: throw BadConfigException("AWG: parameter h2 is undefined")
|
|
private set(value) { _h2 = value }
|
|
|
|
private var _h3: Long? = null
|
|
internal var h3: Long
|
|
get() = _h3 ?: throw BadConfigException("AWG: parameter h3 is undefined")
|
|
private set(value) { _h3 = value }
|
|
|
|
private var _h4: Long? = null
|
|
internal var h4: Long
|
|
get() = _h4 ?: throw BadConfigException("AWG: parameter h4 is undefined")
|
|
private set(value) { _h4 = value }
|
|
|
|
fun setJc(jc: Int) = apply { this.jc = jc }
|
|
fun setJmin(jmin: Int) = apply { this.jmin = jmin }
|
|
fun setJmax(jmax: Int) = apply { this.jmax = jmax }
|
|
fun setS1(s1: Int) = apply { this.s1 = s1 }
|
|
fun setS2(s2: Int) = apply { this.s2 = s2 }
|
|
fun setH1(h1: Long) = apply { this.h1 = h1 }
|
|
fun setH2(h2: Long) = apply { this.h2 = h2 }
|
|
fun setH3(h3: Long) = apply { this.h3 = h3 }
|
|
fun setH4(h4: Long) = apply { this.h4 = h4 }
|
|
|
|
override fun build(): AwgConfig = AwgConfig(this)
|
|
}
|
|
|
|
companion object {
|
|
inline fun build(block: Builder.() -> Unit): AwgConfig = Builder().apply(block).build()
|
|
}
|
|
}
|