~edwargix/git.sr.ht

494d872b03876de1db3481ed8c230e826a6b43a4 — Drew DeVault 6 years ago d2b30e9
Go bits: parse Redis host as a URL
A cloneperf => cloneperf +16 -0
@@ 0,0 1,16 @@
#!/bin/sh
ts=$(date +"%Y-%m-%d_%H:%M:%S")
log=cloneperf-$ts.log
host=${host:-git.sr.ht}
printf 'cloneperf host=%s ts=%s notes=%s\n\n' "$host" "$ts" "$*" | tee -a $log

printf '%s\n' "$ ssh git@$host" | tee -a $log
/usr/bin/time -p ssh git@$host 2>&1 | tee -a $log

printf '\n' | tee -a $log

printf '%s\n' "$ git clone git@$host:~sircmpwn/scdoc" | tee -a $log
/usr/bin/time -p git clone git@$host:~sircmpwn/scdoc /tmp/scdoc-$ts 2>&1 | tee -a $log
rm -rf /tmp/scdoc-$ts

printf "\nResults written to %s\n" "$log"

M config.example.ini => config.example.ini +26 -12
@@ 19,11 19,22 @@ owner-email=sir@cmpwn.com
# The source code for your fork of sr.ht
source-url=https://git.sr.ht/~sircmpwn/srht
#
# A secret key to encrypt session cookies with
secret-key=CHANGEME
#
# The redis host url.
redis-host=redis://localhost:6379/0
# A key used for encrypting session cookies. Use `srht-keygen service` to
# generate the service key. This must be shared between each node of the same
# service (e.g. git1.sr.ht and git2.sr.ht), but different services may use
# different keys. If you configure all of your services with the same
# config.ini, you may use the same service-key for all of them.
service-key=
#
# A secret key to encrypt internal messages with. Use `srht-keygen network` to
# generate this key. It must be consistent between all services and nodes.
network-key=
#
# The redis host URL. This is used for caching and temporary storage, and must
# be shared between nodes (e.g. git1.sr.ht and git2.sr.ht), but need not be
# shared between services. It may be shared between services, however, with no
# ill effect, if this better suits your infrastructure.
redis-host=

[mail]
#


@@ 38,10 49,12 @@ smtp-from=
error-to=
error-from=
#
# Your PGP key information (DO NOT mix up pub and priv here)
# You must remove the password from your secret key, if present.
# You can do this with gpg --edit-key [key-id], then use the passwd
# command and do not enter a new password.
# You should generate a PGP key to allow users to authenticate emails received
# from your services. Use `gpg --edit-key [key id]` to remove the password from
# your private key, then export it to a file and set pgp-privkey to the path to
# that file. pgp-pubkey should be set to the path to your public key, and
# pgp-key-id should be set to the key ID string. Outgoing emails are signed with
# this PGP key.
pgp-privkey=
pgp-pubkey=
pgp-key-id=


@@ 49,10 62,11 @@ pgp-key-id=
[webhooks]
#
# base64-encoded Ed25519 key for signing webhook payloads. This should be
# consistent for all *.sr.ht sites, as we'll use this key to verify signatures
# from other sites in your network.
# consistent between all services.
#
# Use the srht-webhook-keygen command to generate a key.
# Use the `srht-keygen webhook` command to generate this key. Put the private
# key here and distribute the public key to anyone who would want to verify
# webhook payloads from your service.
private-key=

[git.sr.ht]

M gitsrht-keys/main.go => gitsrht-keys/main.go +10 -7
@@ 31,12 31,6 @@ func main() {
	)
	// TODO: update key last used timestamp on meta.sr.ht

	redisHost, ok := config.Get("sr.ht", "redis-host")
	if !ok {
		redisHost = "localhost:6379"
	}
	redis := goredis.NewClient(&goredis.Options{Addr: redisHost})

	logf, err := os.OpenFile(logFile,
		os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644)
	if err != nil {


@@ 55,9 49,18 @@ func main() {
	}
	if err != nil {
		logger.Fatalf("Failed to load config file: %v", err)
		os.Exit(0)
	}

	redisHost, ok := config.Get("sr.ht", "redis-host")
	if !ok {
		redisHost = "redis://localhost:6379"
	}
	ropts, err := goredis.ParseURL(redisHost)
	if err != nil {
		logger.Fatalf("Failed to parse redis host: %v", err)
	}
	redis := goredis.NewClient(ropts)

	keyType, b64key, prefix, err = srhtkeys.ParseArgs(logger)
	if err != nil {
		os.Exit(0)

M gitsrht-update-hook/post-update.go => gitsrht-update-hook/post-update.go +6 -2
@@ 162,9 162,13 @@ func postUpdate() {

	redisHost, ok := config.Get("sr.ht", "redis-host")
	if !ok {
		redisHost = "localhost:6379"
		redisHost = "redis://localhost:6379"
	}
	redis := goredis.NewClient(&goredis.Options{Addr: redisHost})
	ropts, err := goredis.ParseURL(redisHost)
	if err != nil {
		logger.Fatalf("Failed to parse redis host: %v", err)
	}
	redis := goredis.NewClient(ropts)
	for i, refname := range refs {
		var oldref, newref string
		var oldobj, newobj object.Object

M gitsrht-update-hook/update.go => gitsrht-update-hook/update.go +6 -2
@@ 24,9 24,13 @@ func update() {

	redisHost, ok := config.Get("sr.ht", "redis-host")
	if !ok {
		redisHost = "localhost:6379"
		redisHost = "redis://localhost:6379"
	}
	redis := goredis.NewClient(&goredis.Options{Addr: redisHost})
	ropts, err := goredis.ParseURL(redisHost)
	if err != nil {
		logger.Fatalf("Failed to parse redis host: %v", err)
	}
	redis := goredis.NewClient(ropts)
	redis.Set(fmt.Sprintf("update.%s.%s", pushUuid, refname),
		fmt.Sprintf("%s:%s", oldref, newref), 10*time.Minute)
}