Merge pull request #355 from decentral1se/arm-insert-deb
feat: armhf/arm64 & including insert-user
This commit is contained in:
commit
c0efe13e0c
|
@ -9,7 +9,8 @@ before:
|
||||||
- go generate ./...
|
- go generate ./...
|
||||||
|
|
||||||
builds:
|
builds:
|
||||||
- env:
|
- id: go-ssb-room-linux-amd64
|
||||||
|
env:
|
||||||
# needed for sqlite
|
# needed for sqlite
|
||||||
- CGO_ENABLED=1
|
- CGO_ENABLED=1
|
||||||
main: ./cmd/server
|
main: ./cmd/server
|
||||||
|
@ -19,11 +20,82 @@ builds:
|
||||||
goarch:
|
goarch:
|
||||||
- amd64
|
- amd64
|
||||||
|
|
||||||
|
- id: go-ssb-room-insert-user-linux-amd64
|
||||||
|
env:
|
||||||
|
# needed for sqlite
|
||||||
|
- CGO_ENABLED=1
|
||||||
|
main: ./cmd/insert-user
|
||||||
|
binary: go-ssb-room-insert-user
|
||||||
|
goos:
|
||||||
|
- linux
|
||||||
|
goarch:
|
||||||
|
- amd64
|
||||||
|
|
||||||
|
- id: go-ssb-room-linux-arm64
|
||||||
|
env:
|
||||||
|
# needed for sqlite
|
||||||
|
- CGO_ENABLED=1
|
||||||
|
# cross-compilation
|
||||||
|
- CC=aarch64-linux-gnu-gcc
|
||||||
|
- CXX=aarch64-linux-gnu-g++
|
||||||
|
main: ./cmd/server
|
||||||
|
binary: go-ssb-room
|
||||||
|
goos:
|
||||||
|
- linux
|
||||||
|
goarch:
|
||||||
|
- arm64
|
||||||
|
|
||||||
|
- id: go-ssb-room-insert-user-linux-arm64
|
||||||
|
env:
|
||||||
|
# needed for sqlite
|
||||||
|
- CGO_ENABLED=1
|
||||||
|
# cross-compilation
|
||||||
|
- CC=aarch64-linux-gnu-gcc
|
||||||
|
- CXX=aarch64-linux-gnu-g++
|
||||||
|
main: ./cmd/insert-user
|
||||||
|
binary: go-ssb-room-insert-user
|
||||||
|
goos:
|
||||||
|
- linux
|
||||||
|
goarch:
|
||||||
|
- arm64
|
||||||
|
|
||||||
|
- id: go-ssb-room-linux-armhf
|
||||||
|
env:
|
||||||
|
# needed for sqlite
|
||||||
|
- CGO_ENABLED=1
|
||||||
|
# cross-compilation
|
||||||
|
- CC=arm-linux-gnueabihf-gcc
|
||||||
|
- CXX=arm-linux-gnueabihf--g++
|
||||||
|
main: ./cmd/server
|
||||||
|
binary: go-ssb-room
|
||||||
|
goos:
|
||||||
|
- linux
|
||||||
|
goarch:
|
||||||
|
- arm
|
||||||
|
goarm:
|
||||||
|
- 6
|
||||||
|
- 7
|
||||||
|
|
||||||
|
- id: go-ssb-room-insert-user-linux-armhf
|
||||||
|
env:
|
||||||
|
# needed for sqlite
|
||||||
|
- CGO_ENABLED=1
|
||||||
|
# cross-compilation
|
||||||
|
- CC=arm-linux-gnueabihf-gcc
|
||||||
|
- CXX=arm-linux-gnueabihf--g++
|
||||||
|
main: ./cmd/insert-user
|
||||||
|
binary: go-ssb-room-insert-user
|
||||||
|
goos:
|
||||||
|
- linux
|
||||||
|
goarch:
|
||||||
|
- arm
|
||||||
|
goarm:
|
||||||
|
- 6
|
||||||
|
- 7
|
||||||
|
|
||||||
gomod:
|
gomod:
|
||||||
# sum.golang.org somehow doesn't handle replace as expected. TODO: file issue
|
|
||||||
proxy: false
|
|
||||||
env:
|
env:
|
||||||
- GOPROXY=https://proxy.golang.org,direct
|
- GOPROXY=https://proxy.golang.org
|
||||||
- GOSUMDB=sum.golang.org
|
- GOSUMDB=sum.golang.org
|
||||||
|
|
||||||
# for .deb packages
|
# for .deb packages
|
||||||
|
@ -31,9 +103,6 @@ gomod:
|
||||||
nfpms:
|
nfpms:
|
||||||
- id: go-ssb-room
|
- id: go-ssb-room
|
||||||
package_name: go-ssb-room
|
package_name: go-ssb-room
|
||||||
replacements:
|
|
||||||
linux: Linux
|
|
||||||
amd64: x86_64
|
|
||||||
vendor: Secure-Scuttlebutt Community
|
vendor: Secure-Scuttlebutt Community
|
||||||
maintainer: Go-SSB-Room NGI-Pointer Team <go-ssb-room@ssb-ngi-pointer.email>
|
maintainer: Go-SSB-Room NGI-Pointer Team <go-ssb-room@ssb-ngi-pointer.email>
|
||||||
homepage: https://scuttlebutt.nz
|
homepage: https://scuttlebutt.nz
|
||||||
|
@ -44,9 +113,10 @@ nfpms:
|
||||||
suggests:
|
suggests:
|
||||||
- ngingx
|
- ngingx
|
||||||
- certbot
|
- certbot
|
||||||
empty_folders:
|
|
||||||
- /var/log/go-ssb-room
|
|
||||||
contents:
|
contents:
|
||||||
|
- dst: /var/log/go-ssb-room
|
||||||
|
type: dir
|
||||||
|
|
||||||
- src: docs/files/example-systemd.service
|
- src: docs/files/example-systemd.service
|
||||||
dst: /etc/systemd/system/go-ssb-room.service
|
dst: /etc/systemd/system/go-ssb-room.service
|
||||||
type: "config|noreplace"
|
type: "config|noreplace"
|
||||||
|
@ -64,9 +134,7 @@ nfpms:
|
||||||
preremove: docs/files/debian-preremove.sh
|
preremove: docs/files/debian-preremove.sh
|
||||||
|
|
||||||
archives:
|
archives:
|
||||||
- replacements:
|
- id: go-ssb-room
|
||||||
linux: Linux
|
|
||||||
amd64: x86_64
|
|
||||||
|
|
||||||
checksum:
|
checksum:
|
||||||
name_template: 'checksums.txt'
|
name_template: 'checksums.txt'
|
||||||
|
|
|
@ -17,7 +17,7 @@ We currently only distributed pre-packaged releases for Debian-compatible distri
|
||||||
See [Issue #79](https://github.com/ssbc/go-ssb-room/issues/79) for the details.
|
See [Issue #79](https://github.com/ssbc/go-ssb-room/issues/79) for the details.
|
||||||
If this doesn't work for you, read the "Creating a build" section below.
|
If this doesn't work for you, read the "Creating a build" section below.
|
||||||
|
|
||||||
After running `sudo dpkg -i go-ssb-room_v1.2.3_Linux_x86_64.deb` pay special attention to the
|
After running `sudo dpkg -i go-ssb-room_v1.2.3_linux_amd64.deb` pay special attention to the
|
||||||
[postinstall notes](./files/debian-postinstall.sh) for how to configure the systemd file and webserver.
|
[postinstall notes](./files/debian-postinstall.sh) for how to configure the systemd file and webserver.
|
||||||
|
|
||||||
## Creating a build
|
## Creating a build
|
||||||
|
|
|
@ -128,10 +128,12 @@ See the [testing.md](./testing.md) for a thorough walkthorugh of the different t
|
||||||
|
|
||||||
Because of [issue #79](https://github.com/ssbc/go-ssb-room/issues/79) we can't simply create binaries for all platforms independantly. Therefore binaries for re-distributions need to be created on the relevant distributions themselvs. We currently do this for debian. The process is as follows:
|
Because of [issue #79](https://github.com/ssbc/go-ssb-room/issues/79) we can't simply create binaries for all platforms independantly. Therefore binaries for re-distributions need to be created on the relevant distributions themselvs. We currently do this for debian. The process is as follows:
|
||||||
|
|
||||||
1) Install a recent debian stable version onto a dedicated machine or VM for instance (docker might also be possible).
|
1. Install a recent debian stable version onto a dedicated machine or VM for instance (docker might also be possible).
|
||||||
2) Install [Go](https://golang.org/doc/install).
|
1. Install [Go](https://golang.org/doc/install).
|
||||||
3) Install a C compiler (`sudo apt install gcc` for instance) for the CGo based sqlite dependency.
|
1. Install a C compiler (`sudo apt install gcc` for instance) for the CGo based sqlite dependency.
|
||||||
4) Install [GoReleaser](https://goreleaser.com/install/).
|
1. Install a compiler which supports cross-compilation for ARM* architectures (`sudo apt install gccgo-aarch64-linux-gnu gccgo-arm-linux-gnueabihf`).
|
||||||
5) Create a version tag in git.
|
1. Install Node.js v14 and install the dependencies (`cd ./web/styles && npm ci`, you may need to `npm install postcss` also).
|
||||||
6) run `goreleaser release` at the root of the repo to create the `dist/` folder with the `.deb` file.
|
1. Install [GoReleaser](https://goreleaser.com/install/).
|
||||||
7) Upload the built packages.
|
1. Create a version tag in git.
|
||||||
|
1. Run `goreleaser release` at the root of the repo to create the `dist/` folder with the `.deb` file.
|
||||||
|
1. Upload the built packages.
|
||||||
|
|
2
go.mod
2
go.mod
|
@ -34,7 +34,7 @@ require (
|
||||||
github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749 // indirect
|
github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749 // indirect
|
||||||
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e
|
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e
|
||||||
github.com/spf13/cast v1.5.0 // indirect
|
github.com/spf13/cast v1.5.0 // indirect
|
||||||
github.com/ssbc/go-muxrpc/v2 v2.0.14-0.20221020091224-b09bdf60812f
|
github.com/ssbc/go-muxrpc/v2 v2.0.14-0.20221111190521-10382533750c
|
||||||
github.com/ssbc/go-netwrap v0.1.5-0.20221019160355-cd323bb2e29d
|
github.com/ssbc/go-netwrap v0.1.5-0.20221019160355-cd323bb2e29d
|
||||||
github.com/ssbc/go-secretstream v1.2.11-0.20221111164233-4b41f899f844
|
github.com/ssbc/go-secretstream v1.2.11-0.20221111164233-4b41f899f844
|
||||||
github.com/ssbc/go-ssb-refs v0.5.2-0.20221019090322-8b558c2f31de
|
github.com/ssbc/go-ssb-refs v0.5.2-0.20221019090322-8b558c2f31de
|
||||||
|
|
4
go.sum
4
go.sum
|
@ -424,8 +424,8 @@ github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH
|
||||||
github.com/spf13/viper v1.9.0/go.mod h1:+i6ajR7OX2XaiBkrcZJFK21htRk7eDeLg7+O6bhUPP4=
|
github.com/spf13/viper v1.9.0/go.mod h1:+i6ajR7OX2XaiBkrcZJFK21htRk7eDeLg7+O6bhUPP4=
|
||||||
github.com/ssbc/go-luigi v0.3.7-0.20221019204020-324065b9a7c6 h1:4Mhg4qHaiX56eXNND9gGJAf0xzoRQQtfFFhv6wcIOIU=
|
github.com/ssbc/go-luigi v0.3.7-0.20221019204020-324065b9a7c6 h1:4Mhg4qHaiX56eXNND9gGJAf0xzoRQQtfFFhv6wcIOIU=
|
||||||
github.com/ssbc/go-luigi v0.3.7-0.20221019204020-324065b9a7c6/go.mod h1:tBPMBysJeh1u3vStvrWe5w3YBC4fnbnGsLk5ML4D6do=
|
github.com/ssbc/go-luigi v0.3.7-0.20221019204020-324065b9a7c6/go.mod h1:tBPMBysJeh1u3vStvrWe5w3YBC4fnbnGsLk5ML4D6do=
|
||||||
github.com/ssbc/go-muxrpc/v2 v2.0.14-0.20221020091224-b09bdf60812f h1:eIzrej3VH9sYd13X8zVVzlsDRh0uCjYCbdsLcsZqrnc=
|
github.com/ssbc/go-muxrpc/v2 v2.0.14-0.20221111190521-10382533750c h1:xqjaqcG0diMshLo0OaujvHE96OFrd/GiCTJYCTrPVhE=
|
||||||
github.com/ssbc/go-muxrpc/v2 v2.0.14-0.20221020091224-b09bdf60812f/go.mod h1:CFvV9kCI3SmJM38pf1NCXWrS7UVgTYXJdKs+Q9hkJIw=
|
github.com/ssbc/go-muxrpc/v2 v2.0.14-0.20221111190521-10382533750c/go.mod h1:CFvV9kCI3SmJM38pf1NCXWrS7UVgTYXJdKs+Q9hkJIw=
|
||||||
github.com/ssbc/go-netwrap v0.1.5-0.20221019160355-cd323bb2e29d h1:UnYPPekKU0mHzMMOSuI6117Djq9xni60c/IzzUYxgCI=
|
github.com/ssbc/go-netwrap v0.1.5-0.20221019160355-cd323bb2e29d h1:UnYPPekKU0mHzMMOSuI6117Djq9xni60c/IzzUYxgCI=
|
||||||
github.com/ssbc/go-netwrap v0.1.5-0.20221019160355-cd323bb2e29d/go.mod h1:tsE1qeqkc8kvf1psPNdJ5s8O+/jE1WlKwsEETb2VZqs=
|
github.com/ssbc/go-netwrap v0.1.5-0.20221019160355-cd323bb2e29d/go.mod h1:tsE1qeqkc8kvf1psPNdJ5s8O+/jE1WlKwsEETb2VZqs=
|
||||||
github.com/ssbc/go-secretstream v1.2.11-0.20221111164233-4b41f899f844 h1:r1uKQOpTliDf9BCMbRfCeynZ87Y+XMs/DBZqZzB596Y=
|
github.com/ssbc/go-secretstream v1.2.11-0.20221111164233-4b41f899f844 h1:r1uKQOpTliDf9BCMbRfCeynZ87Y+XMs/DBZqZzB596Y=
|
||||||
|
|
|
@ -19,6 +19,7 @@ import (
|
||||||
"go.mindeco.de/http/auth"
|
"go.mindeco.de/http/auth"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
//counterfeiter:generate . RoomConfig
|
||||||
type RoomConfig interface {
|
type RoomConfig interface {
|
||||||
GetPrivacyMode(context.Context) (PrivacyMode, error)
|
GetPrivacyMode(context.Context) (PrivacyMode, error)
|
||||||
SetPrivacyMode(context.Context, PrivacyMode) error
|
SetPrivacyMode(context.Context, PrivacyMode) error
|
||||||
|
@ -28,6 +29,7 @@ type RoomConfig interface {
|
||||||
|
|
||||||
// AuthFallbackService allows password authentication which might be helpful for scenarios
|
// AuthFallbackService allows password authentication which might be helpful for scenarios
|
||||||
// where one lost access to his ssb device or key.
|
// where one lost access to his ssb device or key.
|
||||||
|
//counterfeiter:generate . AuthFallbackService
|
||||||
type AuthFallbackService interface {
|
type AuthFallbackService interface {
|
||||||
|
|
||||||
// Check receives the username and password (in clear) and checks them accordingly.
|
// Check receives the username and password (in clear) and checks them accordingly.
|
||||||
|
@ -48,6 +50,7 @@ type AuthFallbackService interface {
|
||||||
// AuthWithSSBService defines utility functions for the challenge/response system of sign-in with ssb
|
// AuthWithSSBService defines utility functions for the challenge/response system of sign-in with ssb
|
||||||
// They are particualarly of service to check valid sessions (after the client provided a solution for a challenge)
|
// They are particualarly of service to check valid sessions (after the client provided a solution for a challenge)
|
||||||
// And to log out valid sessions from the clients device.
|
// And to log out valid sessions from the clients device.
|
||||||
|
//counterfeiter:generate . AuthWithSSBService
|
||||||
type AuthWithSSBService interface {
|
type AuthWithSSBService interface {
|
||||||
|
|
||||||
// CreateToken is used to generate a token that is stored inside a cookie.
|
// CreateToken is used to generate a token that is stored inside a cookie.
|
||||||
|
@ -65,6 +68,7 @@ type AuthWithSSBService interface {
|
||||||
}
|
}
|
||||||
|
|
||||||
// MembersService stores and retreives the list of internal users (members, mods and admins).
|
// MembersService stores and retreives the list of internal users (members, mods and admins).
|
||||||
|
//counterfeiter:generate . MembersService
|
||||||
type MembersService interface {
|
type MembersService interface {
|
||||||
// Add adds a new member
|
// Add adds a new member
|
||||||
Add(_ context.Context, pubKey refs.FeedRef, r Role) (int64, error)
|
Add(_ context.Context, pubKey refs.FeedRef, r Role) (int64, error)
|
||||||
|
@ -95,6 +99,7 @@ type MembersService interface {
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeniedKeysService changes the lists of public keys that are not allowed to get into the room
|
// DeniedKeysService changes the lists of public keys that are not allowed to get into the room
|
||||||
|
//counterfeiter:generate . DeniedKeysService
|
||||||
type DeniedKeysService interface {
|
type DeniedKeysService interface {
|
||||||
// Add adds the feed to the list, together with a comment for other members
|
// Add adds the feed to the list, together with a comment for other members
|
||||||
Add(ctx context.Context, ref refs.FeedRef, comment string) error
|
Add(ctx context.Context, ref refs.FeedRef, comment string) error
|
||||||
|
@ -122,6 +127,7 @@ type DeniedKeysService interface {
|
||||||
}
|
}
|
||||||
|
|
||||||
// AliasesService manages alias handle registration and lookup
|
// AliasesService manages alias handle registration and lookup
|
||||||
|
//counterfeiter:generate . AliasesService
|
||||||
type AliasesService interface {
|
type AliasesService interface {
|
||||||
// Resolve returns all the relevant information for that alias or an error if it doesnt exist
|
// Resolve returns all the relevant information for that alias or an error if it doesnt exist
|
||||||
Resolve(context.Context, string) (Alias, error)
|
Resolve(context.Context, string) (Alias, error)
|
||||||
|
@ -140,6 +146,7 @@ type AliasesService interface {
|
||||||
}
|
}
|
||||||
|
|
||||||
// InvitesService manages creation and consumption of invite tokens for joining the room.
|
// InvitesService manages creation and consumption of invite tokens for joining the room.
|
||||||
|
//counterfeiter:generate . InvitesService
|
||||||
type InvitesService interface {
|
type InvitesService interface {
|
||||||
// Create creates a new invite for a new member. It returns the token or an error.
|
// Create creates a new invite for a new member. It returns the token or an error.
|
||||||
// createdBy is user ID of the admin or moderator who created it. MemberID -1 is allowed if Privacy Mode is set to Open.
|
// createdBy is user ID of the admin or moderator who created it. MemberID -1 is allowed if Privacy Mode is set to Open.
|
||||||
|
@ -169,6 +176,7 @@ type InvitesService interface {
|
||||||
|
|
||||||
// PinnedNoticesService allows an admin to assign Notices to specific placeholder pages.
|
// PinnedNoticesService allows an admin to assign Notices to specific placeholder pages.
|
||||||
// like updates, privacy policy, code of conduct
|
// like updates, privacy policy, code of conduct
|
||||||
|
//counterfeiter:generate . PinnedNoticesService
|
||||||
type PinnedNoticesService interface {
|
type PinnedNoticesService interface {
|
||||||
// List returns a list of all the pinned notices with their corresponding notices and languages
|
// List returns a list of all the pinned notices with their corresponding notices and languages
|
||||||
List(context.Context) (PinnedNotices, error)
|
List(context.Context) (PinnedNotices, error)
|
||||||
|
@ -181,6 +189,7 @@ type PinnedNoticesService interface {
|
||||||
}
|
}
|
||||||
|
|
||||||
// NoticesService is the low level store to manage single notices
|
// NoticesService is the low level store to manage single notices
|
||||||
|
//counterfeiter:generate . NoticesService
|
||||||
type NoticesService interface {
|
type NoticesService interface {
|
||||||
// GetByID returns the page for that ID or an error
|
// GetByID returns the page for that ID or an error
|
||||||
GetByID(context.Context, int64) (Notice, error)
|
GetByID(context.Context, int64) (Notice, error)
|
||||||
|
@ -191,23 +200,3 @@ type NoticesService interface {
|
||||||
// RemoveID removes the page for that ID.
|
// RemoveID removes the page for that ID.
|
||||||
RemoveID(context.Context, int64) error
|
RemoveID(context.Context, int64) error
|
||||||
}
|
}
|
||||||
|
|
||||||
// for tests we use generated mocks from these interfaces created with https://github.com/maxbrunsfeld/counterfeiter
|
|
||||||
|
|
||||||
//go:generate go run github.com/maxbrunsfeld/counterfeiter/v6 -o mockdb/aliases.go . AliasesService
|
|
||||||
|
|
||||||
//go:generate go run github.com/maxbrunsfeld/counterfeiter/v6 -o mockdb/auth.go . AuthWithSSBService
|
|
||||||
|
|
||||||
//go:generate go run github.com/maxbrunsfeld/counterfeiter/v6 -o mockdb/auth_fallback.go . AuthFallbackService
|
|
||||||
|
|
||||||
//go:generate go run github.com/maxbrunsfeld/counterfeiter/v6 -o mockdb/denied.go . DeniedKeysService
|
|
||||||
|
|
||||||
//go:generate go run github.com/maxbrunsfeld/counterfeiter/v6 -o mockdb/fixed_pages.go . PinnedNoticesService
|
|
||||||
|
|
||||||
//go:generate go run github.com/maxbrunsfeld/counterfeiter/v6 -o mockdb/invites.go . InvitesService
|
|
||||||
|
|
||||||
//go:generate go run github.com/maxbrunsfeld/counterfeiter/v6 -o mockdb/members.go . MembersService
|
|
||||||
|
|
||||||
//go:generate go run github.com/maxbrunsfeld/counterfeiter/v6 -o mockdb/pages.go . NoticesService
|
|
||||||
|
|
||||||
//go:generate go run github.com/maxbrunsfeld/counterfeiter/v6 -o mockdb/roomconfig.go . RoomConfig
|
|
||||||
|
|
Loading…
Reference in New Issue