1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- package main
- import (
- "fmt"
- "html/template"
- "net"
- "net/http"
- "strings"
- )
- var tpl = template.Must(template.ParseFiles("biba.html"))
- type IPv4 struct {
- IpAddress string
- NetMask string
- DefGateway string
- MainDNS string
- AltDNS string
- }
- func main() {
- mux := http.NewServeMux()
- mux.HandleFunc("/info", info)
- mux.HandleFunc("/error", err)
- mux.HandleFunc("/", indexHandler)
- http.ListenAndServe(":8080", mux)
- }
- func err(w http.ResponseWriter, r *http.Request) {
- fmt.Fprintf(w, "Давай назад!")
- }
- func info(w http.ResponseWriter, r *http.Request) {
- IP_Address := r.FormValue("IP_Address")
- NET_Mask := r.FormValue("NET_Mask")
- Def_gateway := r.FormValue("Def_gateway")
- Main_DNS := r.FormValue("Main_DNS")
- Alt_DNS := r.FormValue("Alt_DNS")
- if IP_Address == "" || NET_Mask == "" {
- http.Redirect(w, r, "/error", http.StatusSeeOther)
- }
- if !valid(IP_Address) || !valid(NET_Mask) || !valid(Def_gateway) || !valid(Main_DNS) || !valid(Alt_DNS) {
- http.Redirect(w, r, "/error", http.StatusSeeOther)
- }
- if !validMask(NET_Mask) {
- http.Redirect(w, r, "/error", http.StatusSeeOther)
- }
- info := IPv4{IpAddress: IP_Address, NetMask: NET_Mask, DefGateway: Def_gateway, MainDNS: Main_DNS, AltDNS: Alt_DNS}
- fmt.Fprintf(w, info.GetAllInfo())
- }
- func (ip IPv4) GetAllInfo() string {
- return fmt.Sprintf("IP Address: %s \nNet Mask: %s \nDefault Gateway: %s \nDNS-Server: %s \nAlternative DNS-Server: %s", ip.IpAddress, ip.NetMask, ip.DefGateway, ip.MainDNS, ip.AltDNS)
- }
- func indexHandler(w http.ResponseWriter, r *http.Request) {
- tpl.Execute(w, nil)
- }
- func valid(ip string) bool {
- Ipv4Addr := net.ParseIP(ip)
- if Ipv4Addr == nil {
- return false
- }
- return true
- }
- func validMask(mask string) bool {
- count := 0
- s := strings.Split(mask, ".")
- fmt.Println("mask: ", s)
- for i := 0; i < len(s)-1; i++ {
- if s[i] == "255" {
- count++
- }
- }
- if count == 3 && (s[len(s)-1] == "0" || s[len(s)-1] == "128" || s[len(s)-1] == "192" || s[len(s)-1] == "224" || s[len(s)-1] == "240" || s[len(s)-1] == "248" || s[len(s)-1] == "254" || s[len(s)-1] == "255") {
- return true
- }
- return false
- }
|