added ipv4 validation

This commit is contained in:
marko 2024-10-03 17:46:43 +02:00
parent 97e41eece0
commit 12f28a6623
3 changed files with 38 additions and 3 deletions

View File

@ -86,13 +86,13 @@ func (nkbot *NekoUKrovuBot) handleChat(ch *xmpp.Chat) {
func (nkbot *NekoUKrovuBot) sanitizeInput(input string) bool { func (nkbot *NekoUKrovuBot) sanitizeInput(input string) bool {
if len(input) > 50 { if len(input) > 50 {
return false return true
} }
if !utf8.ValidString(input) { if !utf8.ValidString(input) {
return false return true
} }
return true return true
} }

View File

@ -4,6 +4,7 @@ import (
"fmt" "fmt"
"net" "net"
"os/exec" "os/exec"
"regexp"
"sync" "sync"
) )
@ -56,7 +57,16 @@ func getNetworkPrefix(ip net.IP) string {
return fmt.Sprintf("%d.%d.%d.0", ip[0], ip[1], ip[2]) return fmt.Sprintf("%d.%d.%d.0", ip[0], ip[1], ip[2])
} }
func isValidIPv4(ip string) bool {
ipv4Regex := `^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$`
re := regexp.MustCompile(ipv4Regex)
return re.MatchString(ip)
}
func ping(ip string) bool { func ping(ip string) bool {
if !isValidIPv4(ip) {
return false
}
output, err := exec.Command("ping", "-c", "1", "-W", "1", ip).CombinedOutput() output, err := exec.Command("ping", "-c", "1", "-W", "1", ip).CombinedOutput()
if err != nil { if err != nil {

25
ping/ping_test.go Normal file
View File

@ -0,0 +1,25 @@
package ping
import "testing"
func Test_isValidIPv4(t *testing.T) {
type args struct {
ip string
}
tests := []struct {
name string
args args
want bool
}{
{name: "1", args: args{ip: "192.168.1.1"}, want: true},
{name: "2", args: args{ip: "192.168.277.1"}, want: false},
{name: "3", args: args{ip: "kurac palac"}, want: false},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := isValidIPv4(tt.args.ip); got != tt.want {
t.Errorf("isValidIPv4() = %v, want %v", got, tt.want)
}
})
}
}