mirror of
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake.git
synced 2025-10-14 05:11:19 -04:00
Add Version Output Support to Snowflake
From now on, there will be a file at common/version/version.go that includes current version number.
This commit is contained in:
parent
2c599f8827
commit
33248f3dec
8 changed files with 81 additions and 0 deletions
|
@ -3,6 +3,7 @@ package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"flag"
|
"flag"
|
||||||
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"log"
|
"log"
|
||||||
|
@ -19,6 +20,7 @@ import (
|
||||||
sf "git.torproject.org/pluggable-transports/snowflake.git/v2/client/lib"
|
sf "git.torproject.org/pluggable-transports/snowflake.git/v2/client/lib"
|
||||||
"git.torproject.org/pluggable-transports/snowflake.git/v2/common/event"
|
"git.torproject.org/pluggable-transports/snowflake.git/v2/common/event"
|
||||||
"git.torproject.org/pluggable-transports/snowflake.git/v2/common/safelog"
|
"git.torproject.org/pluggable-transports/snowflake.git/v2/common/safelog"
|
||||||
|
"git.torproject.org/pluggable-transports/snowflake.git/v2/common/version"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -157,6 +159,7 @@ func main() {
|
||||||
unsafeLogging := flag.Bool("unsafe-logging", false, "prevent logs from being scrubbed")
|
unsafeLogging := flag.Bool("unsafe-logging", false, "prevent logs from being scrubbed")
|
||||||
max := flag.Int("max", DefaultSnowflakeCapacity,
|
max := flag.Int("max", DefaultSnowflakeCapacity,
|
||||||
"capacity for number of multiplexed WebRTC peers")
|
"capacity for number of multiplexed WebRTC peers")
|
||||||
|
versionFlag := flag.Bool("version", false, "display version info to stderr and quit")
|
||||||
|
|
||||||
// Deprecated
|
// Deprecated
|
||||||
oldLogToStateDir := flag.Bool("logToStateDir", false, "use -log-to-state-dir instead")
|
oldLogToStateDir := flag.Bool("logToStateDir", false, "use -log-to-state-dir instead")
|
||||||
|
@ -164,6 +167,11 @@ func main() {
|
||||||
|
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
||||||
|
if *versionFlag {
|
||||||
|
fmt.Fprintf(os.Stderr, "snowflake-client %s", version.ConstructResult())
|
||||||
|
os.Exit(0)
|
||||||
|
}
|
||||||
|
|
||||||
log.SetFlags(log.LstdFlags | log.LUTC)
|
log.SetFlags(log.LstdFlags | log.LUTC)
|
||||||
|
|
||||||
// Don't write to stderr; versions of tor earlier than about 0.3.5.6 do
|
// Don't write to stderr; versions of tor earlier than about 0.3.5.6 do
|
||||||
|
|
|
@ -36,3 +36,11 @@ func NameToUTLSID(name string) (utls.ClientHelloID, error) {
|
||||||
}
|
}
|
||||||
return utls.ClientHelloID{}, errNameNotFound
|
return utls.ClientHelloID{}, errNameNotFound
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ListAllNames() []string {
|
||||||
|
var names []string
|
||||||
|
for k, _ := range clientHelloIDMap {
|
||||||
|
names = append(names, k)
|
||||||
|
}
|
||||||
|
return names
|
||||||
|
}
|
||||||
|
|
24
common/utls/client_hello_id_version.go
Normal file
24
common/utls/client_hello_id_version.go
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
package utls
|
||||||
|
|
||||||
|
import (
|
||||||
|
"git.torproject.org/pluggable-transports/snowflake.git/v2/common/version"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
func generateVersionOutput() string {
|
||||||
|
var versionOutputBuilder strings.Builder
|
||||||
|
|
||||||
|
versionOutputBuilder.WriteString(`Known utls-imitate values:
|
||||||
|
(empty)
|
||||||
|
`)
|
||||||
|
|
||||||
|
for _, name := range ListAllNames() {
|
||||||
|
versionOutputBuilder.WriteString(name)
|
||||||
|
versionOutputBuilder.WriteRune('\n')
|
||||||
|
}
|
||||||
|
return versionOutputBuilder.String()
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
version.AddVersionDetail(generateVersionOutput())
|
||||||
|
}
|
5
common/version/combined.go
Normal file
5
common/version/combined.go
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
package version
|
||||||
|
|
||||||
|
func ConstructResult() string {
|
||||||
|
return GetVersion() + "\n" + GetVersionDetail()
|
||||||
|
}
|
13
common/version/detail.go
Normal file
13
common/version/detail.go
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
package version
|
||||||
|
|
||||||
|
import "strings"
|
||||||
|
|
||||||
|
var detailBuilder strings.Builder
|
||||||
|
|
||||||
|
func AddVersionDetail(detail string) {
|
||||||
|
detailBuilder.WriteString(detail)
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetVersionDetail() string {
|
||||||
|
return detailBuilder.String()
|
||||||
|
}
|
7
common/version/version.go
Normal file
7
common/version/version.go
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
package version
|
||||||
|
|
||||||
|
func GetVersion() string {
|
||||||
|
return version
|
||||||
|
}
|
||||||
|
|
||||||
|
var version = "2.3.1"
|
|
@ -2,6 +2,7 @@ package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"flag"
|
"flag"
|
||||||
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"log"
|
"log"
|
||||||
|
@ -12,6 +13,7 @@ import (
|
||||||
|
|
||||||
"git.torproject.org/pluggable-transports/snowflake.git/v2/common/event"
|
"git.torproject.org/pluggable-transports/snowflake.git/v2/common/event"
|
||||||
"git.torproject.org/pluggable-transports/snowflake.git/v2/common/safelog"
|
"git.torproject.org/pluggable-transports/snowflake.git/v2/common/safelog"
|
||||||
|
"git.torproject.org/pluggable-transports/snowflake.git/v2/common/version"
|
||||||
sf "git.torproject.org/pluggable-transports/snowflake.git/v2/proxy/lib"
|
sf "git.torproject.org/pluggable-transports/snowflake.git/v2/proxy/lib"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -31,11 +33,17 @@ func main() {
|
||||||
"the time interval to output summary, 0s disables summaries. Valid time units are \"s\", \"m\", \"h\". ")
|
"the time interval to output summary, 0s disables summaries. Valid time units are \"s\", \"m\", \"h\". ")
|
||||||
verboseLogging := flag.Bool("verbose", false, "increase log verbosity")
|
verboseLogging := flag.Bool("verbose", false, "increase log verbosity")
|
||||||
ephemeralPortsRangeFlag := flag.String("ephemeral-ports-range", "", "ICE UDP ephemeral ports range (format:\"<min>:<max>\")")
|
ephemeralPortsRangeFlag := flag.String("ephemeral-ports-range", "", "ICE UDP ephemeral ports range (format:\"<min>:<max>\")")
|
||||||
|
versionFlag := flag.Bool("version", false, "display version info to stderr and quit")
|
||||||
|
|
||||||
var ephemeralPortsRange []uint16 = []uint16{0, 0}
|
var ephemeralPortsRange []uint16 = []uint16{0, 0}
|
||||||
|
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
||||||
|
if *versionFlag {
|
||||||
|
fmt.Fprintf(os.Stderr, "snowflake-proxy %s", version.ConstructResult())
|
||||||
|
os.Exit(0)
|
||||||
|
}
|
||||||
|
|
||||||
eventLogger := event.NewSnowflakeEventDispatcher()
|
eventLogger := event.NewSnowflakeEventDispatcher()
|
||||||
|
|
||||||
if *ephemeralPortsRangeFlag != "" {
|
if *ephemeralPortsRangeFlag != "" {
|
||||||
|
|
|
@ -19,6 +19,7 @@ import (
|
||||||
"syscall"
|
"syscall"
|
||||||
|
|
||||||
"git.torproject.org/pluggable-transports/snowflake.git/v2/common/safelog"
|
"git.torproject.org/pluggable-transports/snowflake.git/v2/common/safelog"
|
||||||
|
"git.torproject.org/pluggable-transports/snowflake.git/v2/common/version"
|
||||||
"golang.org/x/crypto/acme/autocert"
|
"golang.org/x/crypto/acme/autocert"
|
||||||
|
|
||||||
pt "git.torproject.org/pluggable-transports/goptlib.git"
|
pt "git.torproject.org/pluggable-transports/goptlib.git"
|
||||||
|
@ -130,6 +131,7 @@ func main() {
|
||||||
var disableTLS bool
|
var disableTLS bool
|
||||||
var logFilename string
|
var logFilename string
|
||||||
var unsafeLogging bool
|
var unsafeLogging bool
|
||||||
|
var versionFlag bool
|
||||||
|
|
||||||
flag.Usage = usage
|
flag.Usage = usage
|
||||||
flag.StringVar(&acmeEmail, "acme-email", "", "optional contact email for Let's Encrypt notifications")
|
flag.StringVar(&acmeEmail, "acme-email", "", "optional contact email for Let's Encrypt notifications")
|
||||||
|
@ -137,8 +139,14 @@ func main() {
|
||||||
flag.BoolVar(&disableTLS, "disable-tls", false, "don't use HTTPS")
|
flag.BoolVar(&disableTLS, "disable-tls", false, "don't use HTTPS")
|
||||||
flag.StringVar(&logFilename, "log", "", "log file to write to")
|
flag.StringVar(&logFilename, "log", "", "log file to write to")
|
||||||
flag.BoolVar(&unsafeLogging, "unsafe-logging", false, "prevent logs from being scrubbed")
|
flag.BoolVar(&unsafeLogging, "unsafe-logging", false, "prevent logs from being scrubbed")
|
||||||
|
flag.BoolVar(&versionFlag, "unsafe-logging", false, "display version info to stderr and quit")
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
||||||
|
if versionFlag {
|
||||||
|
fmt.Fprintf(os.Stderr, "snowflake-server %s", version.ConstructResult())
|
||||||
|
os.Exit(0)
|
||||||
|
}
|
||||||
|
|
||||||
log.SetFlags(log.LstdFlags | log.LUTC)
|
log.SetFlags(log.LstdFlags | log.LUTC)
|
||||||
|
|
||||||
var logOutput io.Writer = os.Stderr
|
var logOutput io.Writer = os.Stderr
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue