28f34ca399
Merge in DNS/adguard-home from 3257-ifaces-source to master
Updates #3257.
Squashed commit of the following:
commit 0b9b42bab731bbd048e97893cf209794ea014dfe
Merge: 530a1a23 e25a5329
Author: Eugene Burkov <e.burkov@adguard.com>
Date: Mon Jun 28 16:53:36 2021 +0300
Merge branch 'master' into 3257-ifaces-source
commit 530a1a23a601c5575c8dc5f6f97cd84801cf911b
Author: Eugene Burkov <e.burkov@adguard.com>
Date: Fri Jun 25 19:43:55 2021 +0300
aghnet: imp code, add docs
commit 58de84821b93bcbb3df1834ba33fbad817201b1d
Author: Eugene Burkov <e.burkov@adguard.com>
Date: Fri Jun 25 13:34:43 2021 +0300
aghnet: sup "source" directive
commit c0901abd5212902295e8ee546fad652092fdb5a8
Author: Eugene Burkov <e.burkov@adguard.com>
Date: Thu Jun 24 16:46:03 2021 +0300
aghos: mv func to aghnet
67 lines
1.1 KiB
Go
67 lines
1.1 KiB
Go
//go:build linux
|
|
// +build linux
|
|
|
|
package aghos
|
|
|
|
import (
|
|
"bytes"
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
"syscall"
|
|
)
|
|
|
|
func setRlimit(val uint64) (err error) {
|
|
var rlim syscall.Rlimit
|
|
rlim.Max = val
|
|
rlim.Cur = val
|
|
|
|
return syscall.Setrlimit(syscall.RLIMIT_NOFILE, &rlim)
|
|
}
|
|
|
|
func haveAdminRights() (bool, error) {
|
|
// The error is nil because the platform-independent function signature
|
|
// requires returning an error.
|
|
return os.Getuid() == 0, nil
|
|
}
|
|
|
|
func sendProcessSignal(pid int, sig syscall.Signal) error {
|
|
return syscall.Kill(pid, sig)
|
|
}
|
|
|
|
func isOpenWrt() (ok bool) {
|
|
const etcDir = "/etc"
|
|
|
|
dirEnts, err := os.ReadDir(etcDir)
|
|
if err != nil {
|
|
return false
|
|
}
|
|
|
|
// fNameSubstr is a part of a name of the desired file.
|
|
const fNameSubstr = "release"
|
|
osNameData := []byte("OpenWrt")
|
|
|
|
for _, dirEnt := range dirEnts {
|
|
if dirEnt.IsDir() {
|
|
continue
|
|
}
|
|
|
|
fn := dirEnt.Name()
|
|
if !strings.Contains(fn, fNameSubstr) {
|
|
continue
|
|
}
|
|
|
|
var body []byte
|
|
body, err = os.ReadFile(filepath.Join(etcDir, fn))
|
|
if err != nil {
|
|
continue
|
|
}
|
|
|
|
if bytes.Contains(body, osNameData) {
|
|
return true
|
|
}
|
|
}
|
|
|
|
return false
|
|
}
|