mirror of
https://github.com/bettercap/bettercap
synced 2025-07-11 07:37:00 -07:00
85 lines
1.3 KiB
Go
85 lines
1.3 KiB
Go
package network
|
|
|
|
import (
|
|
"bufio"
|
|
"fmt"
|
|
"io/ioutil"
|
|
"os"
|
|
"strings"
|
|
"sync"
|
|
|
|
"github.com/bettercap/bettercap/core"
|
|
)
|
|
|
|
var fileName, _ = core.ExpandPath("~/bettercap.aliases")
|
|
|
|
type Aliases struct {
|
|
sync.Mutex
|
|
|
|
data map[string]string
|
|
}
|
|
|
|
func LoadAliases() (err error, aliases *Aliases) {
|
|
aliases = &Aliases{
|
|
data: make(map[string]string),
|
|
}
|
|
|
|
if core.Exists(fileName) {
|
|
var file *os.File
|
|
|
|
file, err = os.Open(fileName)
|
|
if err != nil {
|
|
return
|
|
}
|
|
defer file.Close()
|
|
|
|
scanner := bufio.NewScanner(file)
|
|
for scanner.Scan() {
|
|
line := scanner.Text()
|
|
parts := strings.SplitN(line, " ", 2)
|
|
mac := core.Trim(parts[0])
|
|
alias := core.Trim(parts[1])
|
|
aliases.data[mac] = alias
|
|
}
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
func (a *Aliases) saveUnlocked() error {
|
|
data := ""
|
|
for mac, alias := range a.data {
|
|
data += fmt.Sprintf("%s %s\n", mac, alias)
|
|
}
|
|
return ioutil.WriteFile(fileName, []byte(data), 0644)
|
|
}
|
|
|
|
func (a *Aliases) Save() error {
|
|
a.Lock()
|
|
defer a.Unlock()
|
|
|
|
return a.saveUnlocked()
|
|
}
|
|
|
|
func (a *Aliases) Get(mac string) string {
|
|
a.Lock()
|
|
defer a.Unlock()
|
|
|
|
if alias, found := a.data[mac]; found == true {
|
|
return alias
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (a *Aliases) Set(mac, alias string) error {
|
|
a.Lock()
|
|
defer a.Unlock()
|
|
|
|
if alias != "" {
|
|
a.data[mac] = alias
|
|
} else {
|
|
delete(a.data, mac)
|
|
}
|
|
|
|
return a.saveUnlocked()
|
|
}
|