Pull request: all: add native endianness, imp Makefile

Merge in DNS/adguard-home from fix-some to master

Squashed commit of the following:

commit 190e9a88d9c0f2bfc597aa61b41dae8b8686158e
Author: Ainar Garipov <A.Garipov@AdGuard.COM>
Date:   Tue Mar 16 20:50:02 2021 +0300

    all: add native endianness, imp Makefile
This commit is contained in:
Ainar Garipov 2021-03-16 21:00:17 +03:00
parent 3a67cc2c45
commit 67164f89f3
6 changed files with 39 additions and 44 deletions

View File

@ -82,18 +82,3 @@ go-check: go-tools go-lint go-test
openapi-lint: ; cd ./openapi/ && $(YARN) test openapi-lint: ; cd ./openapi/ && $(YARN) test
openapi-show: ; cd ./openapi/ && $(YARN) start openapi-show: ; cd ./openapi/ && $(YARN) start
# TODO(a.garipov): Remove the legacy targets once the build
# infrastructure stops using them.
dependencies:
@ echo "use make deps instead"
@ $(MAKE) deps
docker-multi-arch:
@ echo "use make build-docker instead"
@ $(MAKE) build-docker
go-install-tools:
@ echo "use make go-tools instead"
@ $(MAKE) go-tools
release:
@ echo "use make build-release instead"
@ $(MAKE) build-release

View File

@ -0,0 +1,10 @@
// +build mips mips64
// This file is an adapted version of github.com/josharian/native.
package aghos
import "encoding/binary"
// NativeEndian is the native endianness of this system.
var NativeEndian = binary.BigEndian

View File

@ -0,0 +1,10 @@
// +build amd64 386 arm arm64 mipsle mips64le ppc64le
// This file is an adapted version of github.com/josharian/native.
package aghos
import "encoding/binary"
// NativeEndian is the native endianness of this system.
var NativeEndian = binary.LittleEndian

View File

@ -8,9 +8,9 @@ import (
"net/http" "net/http"
"os" "os"
"time" "time"
"unsafe"
"github.com/AdguardTeam/AdGuardHome/internal/aghio" "github.com/AdguardTeam/AdGuardHome/internal/aghio"
"github.com/AdguardTeam/AdGuardHome/internal/aghos"
"github.com/AdguardTeam/golibs/log" "github.com/AdguardTeam/golibs/log"
) )
@ -66,16 +66,6 @@ func glCheckToken(sess string) bool {
return now <= (tokenDate + glTokenTimeoutSeconds) return now <= (tokenDate + glTokenTimeoutSeconds)
} }
// TODO(a.garipov): Replace with a smaller version of
// https://github.com/josharian/native.
func archIsLittleEndian() bool {
var i int32 = 0x01020304
u := unsafe.Pointer(&i)
pb := (*byte)(u)
b := *pb
return (b == 0x04)
}
// MaxFileSize is a maximum file length in bytes. // MaxFileSize is a maximum file length in bytes.
const MaxFileSize = 1024 * 1024 const MaxFileSize = 1024 * 1024
@ -104,12 +94,7 @@ func glGetTokenDate(file string) uint32 {
} }
buf := bytes.NewBuffer(bs) buf := bytes.NewBuffer(bs)
var order binary.ByteOrder = binary.BigEndian err = binary.Read(buf, aghos.NativeEndian, &dateToken)
if archIsLittleEndian() {
order = binary.LittleEndian
}
err = binary.Read(buf, order, &dateToken)
if err != nil { if err != nil {
log.Error("binary.Read: %s", err) log.Error("binary.Read: %s", err)

View File

@ -1,12 +1,12 @@
package home package home
import ( import (
"encoding/binary"
"io/ioutil" "io/ioutil"
"net/http" "net/http"
"testing" "testing"
"time" "time"
"github.com/AdguardTeam/AdGuardHome/internal/aghos"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
) )
@ -20,19 +20,14 @@ func TestAuthGL(t *testing.T) {
}) })
glFilePrefix = dir + "/gl_token_" glFilePrefix = dir + "/gl_token_"
putFunc := binary.BigEndian.PutUint32
if archIsLittleEndian() {
putFunc = binary.LittleEndian.PutUint32
}
data := make([]byte, 4) data := make([]byte, 4)
putFunc(data, 1) aghos.NativeEndian.PutUint32(data, 1)
require.Nil(t, ioutil.WriteFile(glFilePrefix+"test", data, 0o644)) require.Nil(t, ioutil.WriteFile(glFilePrefix+"test", data, 0o644))
assert.False(t, glCheckToken("test")) assert.False(t, glCheckToken("test"))
data = make([]byte, 4) data = make([]byte, 4)
putFunc(data, uint32(time.Now().UTC().Unix()+60)) aghos.NativeEndian.PutUint32(data, uint32(time.Now().UTC().Unix()+60))
require.Nil(t, ioutil.WriteFile(glFilePrefix+"test", data, 0o644)) require.Nil(t, ioutil.WriteFile(glFilePrefix+"test", data, 0o644))
r, _ := http.NewRequest(http.MethodGet, "http://localhost/", nil) r, _ := http.NewRequest(http.MethodGet, "http://localhost/", nil)

View File

@ -66,10 +66,20 @@ method_const() {
# underscores is a simple check against Go filenames with underscores. # underscores is a simple check against Go filenames with underscores.
underscores() { underscores() {
git ls-files '*_*.go' | { grep -F -e '_darwin.go' \ git ls-files '*_*.go' | {
-e '_freebsd.go' -e '_linux.go' -e '_others.go' \ grep -F\
-e '_test.go' -e '_unix.go' -e '_windows.go' \ -e '_big.go'\
-v || exit 0; } -e '_darwin.go'\
-e '_freebsd.go'\
-e '_linux.go'\
-e '_little.go'\
-e '_others.go'\
-e '_test.go'\
-e '_unix.go'\
-e '_windows.go' \
-v\
|| exit 0
}
} }