mirror of
https://github.com/octoleo/syncthing.git
synced 2024-11-09 14:50:56 +00:00
aa901790b9
This adds a "token manager" which handles storing and checking expired tokens, used for both sessions and CSRF tokens. It removes the old, corresponding functionality for CSRFs which saved things in a file. The result is less crap in the state directory, and active login sessions now survive a Syncthing restart (this really annoyed me). It also adds a boolean on login to create a longer-lived session cookie, which is now possible and useful. Thus we can remain logged in over browser restarts, which was also annoying... :) <img width="1001" alt="Screenshot 2023-12-12 at 09 56 34" src="https://github.com/syncthing/syncthing/assets/125426/55cb20c8-78fc-453e-825d-655b94c8623b"> Best viewed with whitespace-insensitive diff, as a bunch of the auth functions became methods instead of closures which changed indentation.
54 lines
1.6 KiB
Go
54 lines
1.6 KiB
Go
// Copyright (C) 2020 The Syncthing Authors.
|
|
//
|
|
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
// License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
|
// You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
|
|
//go:build ignore
|
|
// +build ignore
|
|
|
|
package main
|
|
|
|
import (
|
|
"log"
|
|
"os"
|
|
"os/exec"
|
|
"path/filepath"
|
|
)
|
|
|
|
//go:generate go run scripts/protofmt.go .
|
|
|
|
// First generate extensions using standard proto compiler.
|
|
//go:generate protoc -I ../ -I . --gogofast_out=Mgoogle/protobuf/descriptor.proto=github.com/gogo/protobuf/protoc-gen-gogo/descriptor,paths=source_relative:ext ext.proto
|
|
|
|
// Then build our vanity compiler that uses the new extensions
|
|
//go:generate go build -o scripts/protoc-gen-gosyncthing scripts/protoc_plugin.go
|
|
|
|
// Inception, go generate calls the script itself that then deals with generation.
|
|
// This is only done because go:generate does not support wildcards in paths.
|
|
//go:generate go run generate.go lib/protocol lib/config lib/fs lib/db lib/discover lib/api
|
|
|
|
func main() {
|
|
for _, path := range os.Args[1:] {
|
|
matches, err := filepath.Glob(filepath.Join(path, "*proto"))
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
log.Println(path, "returned:", matches)
|
|
args := []string{
|
|
"-I", "..",
|
|
"-I", ".",
|
|
"--plugin=protoc-gen-gosyncthing=scripts/protoc-gen-gosyncthing",
|
|
"--gosyncthing_out=paths=source_relative:..",
|
|
}
|
|
args = append(args, matches...)
|
|
cmd := exec.Command("protoc", args...)
|
|
cmd.Stdout = os.Stdout
|
|
cmd.Stderr = os.Stderr
|
|
|
|
if err := cmd.Run(); err != nil {
|
|
log.Fatal("Failed generating", path)
|
|
}
|
|
}
|
|
}
|