Pull request: 2757 fix OpenWRT detection
Merge in DNS/adguard-home from 2757-openwrt to master Updates #2757. Squashed commit of the following: commit 8e94e6a67ae702bd1b281b306555a4ce9ecc6391 Author: Eugene Burkov <e.burkov@adguard.com> Date: Mon Mar 1 17:02:24 2021 +0300 util: convert only once commit f1c74f4d18898f286d70c58f93b2fa21de6b5780 Author: Eugene Burkov <e.burkov@adguard.com> Date: Mon Mar 1 16:22:51 2021 +0300 util: log changes, imp docs commit 0a4558d044602058255db71f825a730642cc9b07 Author: Eugene Burkov <e.burkov@adguard.com> Date: Mon Mar 1 15:53:26 2021 +0300 util: imp os detection
This commit is contained in:
parent
d6a059e395
commit
91403d0b95
|
@ -14,11 +14,12 @@ and this project adheres to
|
|||
-->
|
||||
|
||||
<!--
|
||||
## [v0.105.2] - 2021-02-24
|
||||
## [v0.105.2] - 2021-03-04
|
||||
-->
|
||||
|
||||
### Fixed
|
||||
|
||||
- Incomplete OpenWRT detection ([#2757]).
|
||||
- DHCP lease's `expired` field incorrect time format ([#2692]).
|
||||
- Incomplete DNS upstreams validation ([#2674]).
|
||||
- Wrong parsing of DHCP options of the `ip` type ([#2688]).
|
||||
|
@ -26,6 +27,7 @@ and this project adheres to
|
|||
[#2674]: https://github.com/AdguardTeam/AdGuardHome/issues/2674
|
||||
[#2688]: https://github.com/AdguardTeam/AdGuardHome/issues/2688
|
||||
[#2692]: https://github.com/AdguardTeam/AdGuardHome/issues/2692
|
||||
[#2757]: https://github.com/AdguardTeam/AdGuardHome/issues/2757
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -5,10 +5,12 @@
|
|||
package util
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"strings"
|
||||
)
|
||||
|
@ -64,16 +66,43 @@ func SplitNext(str *string, splitBy byte) string {
|
|||
return strings.TrimSpace(s)
|
||||
}
|
||||
|
||||
// IsOpenWRT checks if OS is OpenWRT.
|
||||
// IsOpenWRT returns true if host OS is OpenWRT.
|
||||
func IsOpenWRT() bool {
|
||||
if runtime.GOOS != "linux" {
|
||||
return false
|
||||
}
|
||||
|
||||
body, err := ioutil.ReadFile("/etc/os-release")
|
||||
const etcDir = "/etc"
|
||||
|
||||
// TODO(e.burkov): Take care of dealing with fs package after updating
|
||||
// Go version to 1.16.
|
||||
fileInfos, err := ioutil.ReadDir(etcDir)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
|
||||
return strings.Contains(string(body), "OpenWrt")
|
||||
// fNameSubstr is a part of a name of the desired file.
|
||||
const fNameSubstr = "release"
|
||||
osNameData := []byte("OpenWrt")
|
||||
|
||||
for _, fileInfo := range fileInfos {
|
||||
if fileInfo.IsDir() {
|
||||
continue
|
||||
}
|
||||
|
||||
if !strings.Contains(fileInfo.Name(), fNameSubstr) {
|
||||
continue
|
||||
}
|
||||
|
||||
body, err := ioutil.ReadFile(filepath.Join(etcDir, fileInfo.Name()))
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
if bytes.Contains(body, osNameData) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue