mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-10-28 10:51:44 +01:00 
			
		
		
		
	Merge branch 'main' into configurable-mtls
This commit is contained in:
		
						commit
						afb67b6e75
					
				@ -10,15 +10,12 @@ builds:
 | 
				
			|||||||
  - id: darwin-amd64
 | 
					  - id: darwin-amd64
 | 
				
			||||||
    main: ./cmd/headscale/headscale.go
 | 
					    main: ./cmd/headscale/headscale.go
 | 
				
			||||||
    mod_timestamp: "{{ .CommitTimestamp }}"
 | 
					    mod_timestamp: "{{ .CommitTimestamp }}"
 | 
				
			||||||
 | 
					    env:
 | 
				
			||||||
 | 
					      - CGO_ENABLED=0
 | 
				
			||||||
    goos:
 | 
					    goos:
 | 
				
			||||||
      - darwin
 | 
					      - darwin
 | 
				
			||||||
    goarch:
 | 
					    goarch:
 | 
				
			||||||
      - amd64
 | 
					      - amd64
 | 
				
			||||||
    env:
 | 
					 | 
				
			||||||
      - PKG_CONFIG_SYSROOT_DIR=/sysroot/macos/amd64
 | 
					 | 
				
			||||||
      - PKG_CONFIG_PATH=/sysroot/macos/amd64/usr/local/lib/pkgconfig
 | 
					 | 
				
			||||||
      - CC=o64-clang
 | 
					 | 
				
			||||||
      - CXX=o64-clang++
 | 
					 | 
				
			||||||
    flags:
 | 
					    flags:
 | 
				
			||||||
      - -mod=readonly
 | 
					      - -mod=readonly
 | 
				
			||||||
    ldflags:
 | 
					    ldflags:
 | 
				
			||||||
@ -27,46 +24,40 @@ builds:
 | 
				
			|||||||
  - id: linux-armhf
 | 
					  - id: linux-armhf
 | 
				
			||||||
    main: ./cmd/headscale/headscale.go
 | 
					    main: ./cmd/headscale/headscale.go
 | 
				
			||||||
    mod_timestamp: "{{ .CommitTimestamp }}"
 | 
					    mod_timestamp: "{{ .CommitTimestamp }}"
 | 
				
			||||||
 | 
					    env:
 | 
				
			||||||
 | 
					      - CGO_ENABLED=0
 | 
				
			||||||
    goos:
 | 
					    goos:
 | 
				
			||||||
      - linux
 | 
					      - linux
 | 
				
			||||||
    goarch:
 | 
					    goarch:
 | 
				
			||||||
      - arm
 | 
					      - arm
 | 
				
			||||||
    goarm:
 | 
					    goarm:
 | 
				
			||||||
      - "7"
 | 
					      - "7"
 | 
				
			||||||
    env:
 | 
					 | 
				
			||||||
      - CC=arm-linux-gnueabihf-gcc
 | 
					 | 
				
			||||||
      - CXX=arm-linux-gnueabihf-g++
 | 
					 | 
				
			||||||
      - CGO_FLAGS=--sysroot=/sysroot/linux/armhf
 | 
					 | 
				
			||||||
      - CGO_LDFLAGS=--sysroot=/sysroot/linux/armhf
 | 
					 | 
				
			||||||
      - PKG_CONFIG_SYSROOT_DIR=/sysroot/linux/armhf
 | 
					 | 
				
			||||||
      - PKG_CONFIG_PATH=/sysroot/linux/armhf/opt/vc/lib/pkgconfig:/sysroot/linux/armhf/usr/lib/arm-linux-gnueabihf/pkgconfig:/sysroot/linux/armhf/usr/lib/pkgconfig:/sysroot/linux/armhf/usr/local/lib/pkgconfig
 | 
					 | 
				
			||||||
    flags:
 | 
					    flags:
 | 
				
			||||||
      - -mod=readonly
 | 
					      - -mod=readonly
 | 
				
			||||||
    ldflags:
 | 
					    ldflags:
 | 
				
			||||||
      - -s -w -X github.com/juanfont/headscale/cmd/headscale/cli.Version=v{{.Version}}
 | 
					      - -s -w -X github.com/juanfont/headscale/cmd/headscale/cli.Version=v{{.Version}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  - id: linux-amd64
 | 
					  - id: linux-amd64
 | 
				
			||||||
 | 
					    mod_timestamp: "{{ .CommitTimestamp }}"
 | 
				
			||||||
    env:
 | 
					    env:
 | 
				
			||||||
      - CGO_ENABLED=1
 | 
					      - CGO_ENABLED=0
 | 
				
			||||||
    goos:
 | 
					    goos:
 | 
				
			||||||
      - linux
 | 
					      - linux
 | 
				
			||||||
    goarch:
 | 
					    goarch:
 | 
				
			||||||
      - amd64
 | 
					      - amd64
 | 
				
			||||||
    main: ./cmd/headscale/headscale.go
 | 
					    main: ./cmd/headscale/headscale.go
 | 
				
			||||||
    mod_timestamp: "{{ .CommitTimestamp }}"
 | 
					 | 
				
			||||||
    ldflags:
 | 
					    ldflags:
 | 
				
			||||||
      - -s -w -X github.com/juanfont/headscale/cmd/headscale/cli.Version=v{{.Version}}
 | 
					      - -s -w -X github.com/juanfont/headscale/cmd/headscale/cli.Version=v{{.Version}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  - id: linux-arm64
 | 
					  - id: linux-arm64
 | 
				
			||||||
 | 
					    mod_timestamp: "{{ .CommitTimestamp }}"
 | 
				
			||||||
 | 
					    env:
 | 
				
			||||||
 | 
					      - CGO_ENABLED=0
 | 
				
			||||||
    goos:
 | 
					    goos:
 | 
				
			||||||
      - linux
 | 
					      - linux
 | 
				
			||||||
    goarch:
 | 
					    goarch:
 | 
				
			||||||
      - arm64
 | 
					      - arm64
 | 
				
			||||||
    env:
 | 
					 | 
				
			||||||
      - CGO_ENABLED=1
 | 
					 | 
				
			||||||
      - CC=aarch64-linux-gnu-gcc
 | 
					 | 
				
			||||||
    main: ./cmd/headscale/headscale.go
 | 
					    main: ./cmd/headscale/headscale.go
 | 
				
			||||||
    mod_timestamp: "{{ .CommitTimestamp }}"
 | 
					 | 
				
			||||||
    ldflags:
 | 
					    ldflags:
 | 
				
			||||||
      - -s -w -X github.com/juanfont/headscale/cmd/headscale/cli.Version=v{{.Version}}
 | 
					      - -s -w -X github.com/juanfont/headscale/cmd/headscale/cli.Version=v{{.Version}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -22,7 +22,11 @@ This is a part of aligning `headscale`'s behaviour with Tailscale's upstream beh
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
**Features**:
 | 
					**Features**:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- Add support for configurable mTLS [docs](docs/tls.md#configuring-mutual-tls-authentication-mtls)
 | 
					- Add support for configurable mTLS [docs](docs/tls.md#configuring-mutual-tls-authentication-mtls) [#297](https://github.com/juanfont/headscale/pull/297)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**Changes**:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Remove dependency on CGO (switch from CGO SQLite to pure Go) [#346](https://github.com/juanfont/headscale/pull/346)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**0.13.0 (2022-02-18):**
 | 
					**0.13.0 (2022-02-18):**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -8,7 +8,7 @@ RUN go mod download
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
COPY . .
 | 
					COPY . .
 | 
				
			||||||
 | 
					
 | 
				
			||||||
RUN go install -a -ldflags="-extldflags=-static" -tags netgo,sqlite_omit_load_extension ./cmd/headscale
 | 
					RUN GGO_ENABLED=0 GOOS=linux go install -a ./cmd/headscale
 | 
				
			||||||
RUN strip /go/bin/headscale
 | 
					RUN strip /go/bin/headscale
 | 
				
			||||||
RUN test -e /go/bin/headscale
 | 
					RUN test -e /go/bin/headscale
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -9,7 +9,7 @@ RUN go mod download
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
COPY . .
 | 
					COPY . .
 | 
				
			||||||
 | 
					
 | 
				
			||||||
RUN go install -a -ldflags="-extldflags=-static" -tags netgo,sqlite_omit_load_extension ./cmd/headscale
 | 
					RUN GGO_ENABLED=0 GOOS=linux go install -a ./cmd/headscale
 | 
				
			||||||
RUN strip /go/bin/headscale
 | 
					RUN strip /go/bin/headscale
 | 
				
			||||||
RUN test -e /go/bin/headscale
 | 
					RUN test -e /go/bin/headscale
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -8,7 +8,7 @@ RUN go mod download
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
COPY . .
 | 
					COPY . .
 | 
				
			||||||
 | 
					
 | 
				
			||||||
RUN go install -a -ldflags="-extldflags=-static" -tags netgo,sqlite_omit_load_extension ./cmd/headscale
 | 
					RUN GGO_ENABLED=0 GOOS=linux go install -a ./cmd/headscale
 | 
				
			||||||
RUN test -e /go/bin/headscale
 | 
					RUN test -e /go/bin/headscale
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Debug image
 | 
					# Debug image
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										2
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								Makefile
									
									
									
									
									
								
							@ -10,7 +10,7 @@ PROTO_SOURCES = $(call rwildcard,,*.proto)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
build:
 | 
					build:
 | 
				
			||||||
	go build -ldflags "-s -w -X github.com/juanfont/headscale/cmd/headscale/cli.Version=$(version)" cmd/headscale/headscale.go
 | 
						GGO_ENABLED=0 go build -ldflags "-s -w -X github.com/juanfont/headscale/cmd/headscale/cli.Version=$(version)" cmd/headscale/headscale.go
 | 
				
			||||||
 | 
					
 | 
				
			||||||
dev: lint test build
 | 
					dev: lint test build
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										21
									
								
								db.go
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								db.go
									
									
									
									
									
								
							@ -2,9 +2,10 @@ package headscale
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"errors"
 | 
						"errors"
 | 
				
			||||||
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/glebarez/sqlite"
 | 
				
			||||||
	"gorm.io/driver/postgres"
 | 
						"gorm.io/driver/postgres"
 | 
				
			||||||
	"gorm.io/driver/sqlite"
 | 
					 | 
				
			||||||
	"gorm.io/gorm"
 | 
						"gorm.io/gorm"
 | 
				
			||||||
	"gorm.io/gorm/logger"
 | 
						"gorm.io/gorm/logger"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@ -81,10 +82,24 @@ func (h *Headscale) openDB() (*gorm.DB, error) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	switch h.dbType {
 | 
						switch h.dbType {
 | 
				
			||||||
	case Sqlite:
 | 
						case Sqlite:
 | 
				
			||||||
		db, err = gorm.Open(sqlite.Open(h.dbString), &gorm.Config{
 | 
							db, err = gorm.Open(
 | 
				
			||||||
 | 
								sqlite.Open(h.dbString+"?_synchronous=1&_journal_mode=WAL"),
 | 
				
			||||||
 | 
								&gorm.Config{
 | 
				
			||||||
				DisableForeignKeyConstraintWhenMigrating: true,
 | 
									DisableForeignKeyConstraintWhenMigrating: true,
 | 
				
			||||||
				Logger:                                   log,
 | 
									Logger:                                   log,
 | 
				
			||||||
		})
 | 
								},
 | 
				
			||||||
 | 
							)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							db.Exec("PRAGMA foreign_keys=ON")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// The pure Go SQLite library does not handle locking in
 | 
				
			||||||
 | 
							// the same way as the C based one and we cant use the gorm
 | 
				
			||||||
 | 
							// connection pool as of 2022/02/23.
 | 
				
			||||||
 | 
							sqlDB, _ := db.DB()
 | 
				
			||||||
 | 
							sqlDB.SetMaxIdleConns(1)
 | 
				
			||||||
 | 
							sqlDB.SetMaxOpenConns(1)
 | 
				
			||||||
 | 
							sqlDB.SetConnMaxIdleTime(time.Hour)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	case Postgres:
 | 
						case Postgres:
 | 
				
			||||||
		db, err = gorm.Open(postgres.Open(h.dbString), &gorm.Config{
 | 
							db, err = gorm.Open(postgres.Open(h.dbString), &gorm.Config{
 | 
				
			||||||
			DisableForeignKeyConstraintWhenMigrating: true,
 | 
								DisableForeignKeyConstraintWhenMigrating: true,
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										21
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								go.mod
									
									
									
									
									
								
							@ -8,6 +8,7 @@ require (
 | 
				
			|||||||
	github.com/efekarakus/termcolor v1.0.1
 | 
						github.com/efekarakus/termcolor v1.0.1
 | 
				
			||||||
	github.com/fatih/set v0.2.1
 | 
						github.com/fatih/set v0.2.1
 | 
				
			||||||
	github.com/gin-gonic/gin v1.7.7
 | 
						github.com/gin-gonic/gin v1.7.7
 | 
				
			||||||
 | 
						github.com/glebarez/sqlite v1.3.5
 | 
				
			||||||
	github.com/gofrs/uuid v4.2.0+incompatible
 | 
						github.com/gofrs/uuid v4.2.0+incompatible
 | 
				
			||||||
	github.com/grpc-ecosystem/go-grpc-middleware v1.3.0
 | 
						github.com/grpc-ecosystem/go-grpc-middleware v1.3.0
 | 
				
			||||||
	github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.3
 | 
						github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.3
 | 
				
			||||||
@ -19,14 +20,13 @@ require (
 | 
				
			|||||||
	github.com/prometheus/client_golang v1.12.1
 | 
						github.com/prometheus/client_golang v1.12.1
 | 
				
			||||||
	github.com/pterm/pterm v0.12.36
 | 
						github.com/pterm/pterm v0.12.36
 | 
				
			||||||
	github.com/rs/zerolog v1.26.1
 | 
						github.com/rs/zerolog v1.26.1
 | 
				
			||||||
	github.com/soheilhy/cmux v0.1.5
 | 
					 | 
				
			||||||
	github.com/spf13/cobra v1.3.0
 | 
						github.com/spf13/cobra v1.3.0
 | 
				
			||||||
	github.com/spf13/viper v1.10.1
 | 
						github.com/spf13/viper v1.10.1
 | 
				
			||||||
	github.com/stretchr/testify v1.7.0
 | 
						github.com/stretchr/testify v1.7.0
 | 
				
			||||||
	github.com/tailscale/hujson v0.0.0-20211215203138-ffd971c5f362
 | 
						github.com/tailscale/hujson v0.0.0-20211215203138-ffd971c5f362
 | 
				
			||||||
	github.com/tcnksm/go-latest v0.0.0-20170313132115-e3007ae9052e
 | 
						github.com/tcnksm/go-latest v0.0.0-20170313132115-e3007ae9052e
 | 
				
			||||||
	github.com/zsais/go-gin-prometheus v0.1.0
 | 
						github.com/zsais/go-gin-prometheus v0.1.0
 | 
				
			||||||
	golang.org/x/crypto v0.0.0-20220210151621-f4118a5b28e2
 | 
						golang.org/x/crypto v0.0.0-20220214200702-86341886e292
 | 
				
			||||||
	golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8
 | 
						golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8
 | 
				
			||||||
	golang.org/x/sync v0.0.0-20210220032951-036812b2e83c
 | 
						golang.org/x/sync v0.0.0-20210220032951-036812b2e83c
 | 
				
			||||||
	google.golang.org/genproto v0.0.0-20220210181026-6fee9acbd336
 | 
						google.golang.org/genproto v0.0.0-20220210181026-6fee9acbd336
 | 
				
			||||||
@ -36,9 +36,8 @@ require (
 | 
				
			|||||||
	gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c
 | 
						gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c
 | 
				
			||||||
	gopkg.in/yaml.v2 v2.4.0
 | 
						gopkg.in/yaml.v2 v2.4.0
 | 
				
			||||||
	gorm.io/datatypes v1.0.5
 | 
						gorm.io/datatypes v1.0.5
 | 
				
			||||||
	gorm.io/driver/postgres v1.2.3
 | 
						gorm.io/driver/postgres v1.3.1
 | 
				
			||||||
	gorm.io/driver/sqlite v1.2.6
 | 
						gorm.io/gorm v1.23.1
 | 
				
			||||||
	gorm.io/gorm v1.22.5
 | 
					 | 
				
			||||||
	inet.af/netaddr v0.0.0-20211027220019-c74959edd3b6
 | 
						inet.af/netaddr v0.0.0-20211027220019-c74959edd3b6
 | 
				
			||||||
	tailscale.com v1.20.4
 | 
						tailscale.com v1.20.4
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@ -58,8 +57,8 @@ require (
 | 
				
			|||||||
	github.com/docker/go-connections v0.4.0 // indirect
 | 
						github.com/docker/go-connections v0.4.0 // indirect
 | 
				
			||||||
	github.com/docker/go-units v0.4.0 // indirect
 | 
						github.com/docker/go-units v0.4.0 // indirect
 | 
				
			||||||
	github.com/fsnotify/fsnotify v1.5.1 // indirect
 | 
						github.com/fsnotify/fsnotify v1.5.1 // indirect
 | 
				
			||||||
	github.com/ghodss/yaml v1.0.0 // indirect
 | 
					 | 
				
			||||||
	github.com/gin-contrib/sse v0.1.0 // indirect
 | 
						github.com/gin-contrib/sse v0.1.0 // indirect
 | 
				
			||||||
 | 
						github.com/glebarez/go-sqlite v1.14.7 // indirect
 | 
				
			||||||
	github.com/go-playground/locales v0.14.0 // indirect
 | 
						github.com/go-playground/locales v0.14.0 // indirect
 | 
				
			||||||
	github.com/go-playground/universal-translator v0.18.0 // indirect
 | 
						github.com/go-playground/universal-translator v0.18.0 // indirect
 | 
				
			||||||
	github.com/go-playground/validator/v10 v10.10.0 // indirect
 | 
						github.com/go-playground/validator/v10 v10.10.0 // indirect
 | 
				
			||||||
@ -70,6 +69,7 @@ require (
 | 
				
			|||||||
	github.com/google/go-github v17.0.0+incompatible // indirect
 | 
						github.com/google/go-github v17.0.0+incompatible // indirect
 | 
				
			||||||
	github.com/google/go-querystring v1.1.0 // indirect
 | 
						github.com/google/go-querystring v1.1.0 // indirect
 | 
				
			||||||
	github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
 | 
						github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
 | 
				
			||||||
 | 
						github.com/google/uuid v1.3.0 // indirect
 | 
				
			||||||
	github.com/gookit/color v1.5.0 // indirect
 | 
						github.com/gookit/color v1.5.0 // indirect
 | 
				
			||||||
	github.com/hashicorp/go-version v1.4.0 // indirect
 | 
						github.com/hashicorp/go-version v1.4.0 // indirect
 | 
				
			||||||
	github.com/hashicorp/hcl v1.0.0 // indirect
 | 
						github.com/hashicorp/hcl v1.0.0 // indirect
 | 
				
			||||||
@ -112,6 +112,7 @@ require (
 | 
				
			|||||||
	github.com/prometheus/client_model v0.2.0 // indirect
 | 
						github.com/prometheus/client_model v0.2.0 // indirect
 | 
				
			||||||
	github.com/prometheus/common v0.32.1 // indirect
 | 
						github.com/prometheus/common v0.32.1 // indirect
 | 
				
			||||||
	github.com/prometheus/procfs v0.7.3 // indirect
 | 
						github.com/prometheus/procfs v0.7.3 // indirect
 | 
				
			||||||
 | 
						github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 // indirect
 | 
				
			||||||
	github.com/rivo/uniseg v0.2.0 // indirect
 | 
						github.com/rivo/uniseg v0.2.0 // indirect
 | 
				
			||||||
	github.com/rogpeppe/go-internal v1.8.1 // indirect
 | 
						github.com/rogpeppe/go-internal v1.8.1 // indirect
 | 
				
			||||||
	github.com/sirupsen/logrus v1.8.1 // indirect
 | 
						github.com/sirupsen/logrus v1.8.1 // indirect
 | 
				
			||||||
@ -136,6 +137,12 @@ require (
 | 
				
			|||||||
	gopkg.in/ini.v1 v1.66.4 // indirect
 | 
						gopkg.in/ini.v1 v1.66.4 // indirect
 | 
				
			||||||
	gopkg.in/square/go-jose.v2 v2.6.0 // indirect
 | 
						gopkg.in/square/go-jose.v2 v2.6.0 // indirect
 | 
				
			||||||
	gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
 | 
						gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
 | 
				
			||||||
	gorm.io/driver/mysql v1.2.3 // indirect
 | 
						gorm.io/driver/mysql v1.3.2 // indirect
 | 
				
			||||||
 | 
						gorm.io/driver/sqlite v1.3.1 // indirect
 | 
				
			||||||
 | 
						gorm.io/driver/sqlserver v1.3.1 // indirect
 | 
				
			||||||
 | 
						modernc.org/libc v1.14.3 // indirect
 | 
				
			||||||
 | 
						modernc.org/mathutil v1.4.1 // indirect
 | 
				
			||||||
 | 
						modernc.org/memory v1.0.5 // indirect
 | 
				
			||||||
 | 
						modernc.org/sqlite v1.14.5 // indirect
 | 
				
			||||||
	sigs.k8s.io/yaml v1.3.0 // indirect
 | 
						sigs.k8s.io/yaml v1.3.0 // indirect
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user