diff --git a/Gopkg.lock b/Gopkg.lock index dbbed48..23c0c40 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -47,19 +47,24 @@ branch = "master" name = "github.com/mitchellh/cli" packages = ["."] - revision = "33edc47170b5df54d2588696d590c5e20ee583fe" + revision = "518dc677a1e1222682f4e7db06721942cb8e9e4c" [[projects]] name = "github.com/posener/complete" - packages = [".","cmd","cmd/install","match"] - revision = "dc2bc5a81accba8782bebea28628224643a8286a" - version = "v1.1" + packages = [ + ".", + "cmd", + "cmd/install", + "match" + ] + revision = "98eb9847f27ba2008d380a32c98be474dea55bdf" + version = "v1.1.1" [[projects]] branch = "master" name = "golang.org/x/sys" packages = ["unix"] - revision = "53aa286056ef226755cd898109dbcdaba8ac0b81" + revision = "cc7307a45468e49eaf2997c890f14aa03a26917b" [solve-meta] analyzer-name = "dep" diff --git a/Makefile b/Makefile index 1e04c4f..1f08e11 100644 --- a/Makefile +++ b/Makefile @@ -9,10 +9,11 @@ DIR_RELEASE=release VERSION=$(patsubst "%",%,$(lastword $(shell grep 'const Version' version.go))) GITTAG=$(shell git rev-parse --short HEAD) -.PHONY: build build-linux-amd64 build-linux-386 clean - default: build +FORCE: +.PHONY: FORCE + $(DIR_BUILD)/bin/$(THIS_GOOS)_$(THIS_GOARCH)/dep: mkdir -p /tmp/go GOPATH=/tmp/go go get -d -v github.com/golang/dep @@ -21,16 +22,25 @@ $(DIR_BUILD)/bin/$(THIS_GOOS)_$(THIS_GOARCH)/dep: dep: $(DIR_BUILD)/bin/$(THIS_GOOS)_$(THIS_GOARCH)/dep +$(DIR_BUILD)/bin/$(THIS_GOOS)_$(THIS_GOARCH)/ghr: + mkdir -p /tmp/go + GOPATH=/tmp/go go get -d -v github.com/tcnksm/ghr + GOPATH=/tmp/go go build -v -o $(DIR_BUILD)/bin/$(THIS_GOOS)_$(THIS_GOARCH)/ghr github.com/tcnksm/ghr + rm -rf /tmp/go + +ghr: $(DIR_BUILD)/bin/$(THIS_GOOS)_$(THIS_GOARCH)/ghr + installdeps: dep $(DIR_BUILD)/bin/$(THIS_GOOS)_$(THIS_GOARCH)/dep ensure -v -vendor-only -build: - go build -v -i -ldflags "-X main.gittag=$(GITTAG)" -o $(DIR_BUILD)/mailfull_$(GOOS)_$(GOARCH)/mailfull cmd/mailfull/*.go + +build: FORCE + go build -v -ldflags "-X main.gittag=$(GITTAG)" -o $(DIR_BUILD)/mailfull_$(GOOS)_$(GOARCH)/mailfull cmd/mailfull/*.go .build-docker: docker run --rm -v $(DIR_PKG):/go/pkg -v $(PWD):/go/src/github.com/directorz/mailfull-go -w /go/src/github.com/directorz/mailfull-go \ - -e GOOS=$(GOOS) -e GOARCH=$(GOARCH) golang:1.9.2 \ - go build -v -i -ldflags "-X main.gittag=$(GITTAG)" -o $(DIR_BUILD)/mailfull_$(GOOS)_$(GOARCH)/mailfull cmd/mailfull/*.go + -e GOOS=$(GOOS) -e GOARCH=$(GOARCH) golang:1.10 \ + go build -v -ldflags "-X main.gittag=$(GITTAG)" -o $(DIR_BUILD)/mailfull_$(GOOS)_$(GOARCH)/mailfull cmd/mailfull/*.go build-linux-amd64: @$(MAKE) .build-docker GOOS=linux GOARCH=amd64 @@ -38,6 +48,7 @@ build-linux-amd64: build-linux-386: @$(MAKE) .build-docker GOOS=linux GOARCH=386 + release: release-linux-amd64 release-linux-386 release-linux-amd64: build-linux-amd64 @@ -55,12 +66,13 @@ release-targz: dir-$(DIR_RELEASE) dir-$(DIR_RELEASE): mkdir -p $(DIR_RELEASE) -release-upload: release-linux-amd64 release-linux-386 release-github-token - ghr -u directorz -r mailfull-go -t $(shell cat github_token) --replace --draft $(VERSION) $(DIR_RELEASE) +release-upload: ghr release-linux-amd64 release-linux-386 release-github-token + $(DIR_BUILD)/bin/$(THIS_GOOS)_$(THIS_GOARCH)/ghr -u directorz -r mailfull-go -t $(shell cat github_token) --replace --draft $(VERSION) $(DIR_RELEASE) release-github-token: github_token @echo "file \"github_token\" is required" + clean: -rm -rf $(DIR_BUILD) -rm -rf $(DIR_RELEASE) diff --git a/user.go b/user.go index c502cb8..8e46d1f 100644 --- a/user.go +++ b/user.go @@ -100,6 +100,9 @@ func (r *Repository) Users(domainName string) ([]*User, error) { forwards, err := r.userForwards(domainName, name) if err != nil { + if err == ErrInvalidUserName { + continue + } return nil, err } diff --git a/valid.go b/valid.go index 8061cd3..b6bb007 100644 --- a/valid.go +++ b/valid.go @@ -33,20 +33,20 @@ func validAliasDomainTarget(target string) bool { // validUserName returns true if the input is correct format. func validUserName(name string) bool { - return regexp.MustCompile(`^[^\s@]+$`).MatchString(name) + return regexp.MustCompile(`^[^\.\s@][^\s@]+$`).MatchString(name) } // validAliasUserName returns true if the input is correct format. func validAliasUserName(name string) bool { - return regexp.MustCompile(`^[^\s@]+$`).MatchString(name) + return regexp.MustCompile(`^[^\.\s@][^\s@]+$`).MatchString(name) } // validAliasUserTarget returns true if the input is correct format. func validAliasUserTarget(target string) bool { - return regexp.MustCompile(`^[^\s@]+@([A-Za-z0-9\-]+\.)*[A-Za-z]+$`).MatchString(target) + return regexp.MustCompile(`^[^\.\s@][^\s@]+@([A-Za-z0-9\-]+\.)*[A-Za-z]+$`).MatchString(target) } // validCatchAllUserName returns true if the input is correct format. func validCatchAllUserName(name string) bool { - return regexp.MustCompile(`^[^\s@]+$`).MatchString(name) + return regexp.MustCompile(`^[^\.\s@][^\s@]+$`).MatchString(name) } diff --git a/version.go b/version.go index ee1ab3b..b3b32ea 100644 --- a/version.go +++ b/version.go @@ -1,4 +1,4 @@ package mailfull // Version is a version number. -const Version = "v1.0.2" +const Version = "v1.0.3"