You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
22 lines
816 B
Kotlin
22 lines
816 B
Kotlin
package org.domaindrivenarchitecture.provs.framework.extensions.server_software.standalone_server.firewall.base
|
|
|
|
import org.domaindrivenarchitecture.provs.framework.core.Prov
|
|
import org.domaindrivenarchitecture.provs.framework.core.ProvResult
|
|
import java.time.LocalDateTime
|
|
import java.time.format.DateTimeFormatter
|
|
|
|
|
|
fun Prov.saveIpTablesToFile() = def {
|
|
val dateTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("-yyyy-MM-dd--HH:mm:ss"))
|
|
val file = "savedrules$dateTime.txt"
|
|
sh("""
|
|
sudo iptables-save > $file
|
|
cat $file""")
|
|
}
|
|
|
|
fun Prov.restoreIpTablesFromFile(file: String? = null) = def {
|
|
val fileName = file ?: cmd("ls -r a* | head -1\n").out
|
|
fileName?.let { cmd("sudo iptables-restore < $file") }
|
|
?: ProvResult(false, err = "File to restore not found.")
|
|
}
|