Skip to content
Snippets Groups Projects
Commit a1760d0e authored by Maxb's avatar Maxb
Browse files

Allow server to re-use previously generated key material in 'non-persist' mode

parent 22881901
Branches
Tags
1 merge request!65Add QUIC dialer + listener
......@@ -54,6 +54,8 @@ var (
defaultConfigFilePath = filepath.Join(defaultStateDir, defaultConfigFile)
)
var ErrObfs4DataAlreadyExists = errors.New("obfs4 data already exists")
type config struct {
addr string
cfgFile string
......@@ -165,7 +167,7 @@ func genKey(logger *log.Logger) (string, error) {
stateDir := getStateDir()
stateFile := filepath.Join(stateDir, "obfs4_state.json")
if _, err := os.Stat(stateFile); !errors.Is(err, os.ErrNotExist) {
return "", fmt.Errorf("%s already exists", stateFile)
return stateDir, fmt.Errorf("%w: %s", ErrObfs4DataAlreadyExists, stateFile)
}
// Try to create the state dir if it does not exist, otherwise
// obfs4 will fail to create the state file.
......@@ -244,10 +246,13 @@ func main() {
viper.AutomaticEnv()
justGenKey := viper.GetBool(genkey)
if justGenKey || !viper.GetBool(persist) {
persist := viper.GetBool(persist)
if justGenKey || !persist {
stateDir, err := genKey(logger)
if err != nil {
logger.Fatal("error while generating key:" + err.Error())
if justGenKey || !errors.Is(err, ErrObfs4DataAlreadyExists) {
logger.Fatal("error while generating key: %v", err)
}
}
logger.Println("Done. Key material written to:", stateDir)
if justGenKey {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment