[tor-commits] [pluggable-transports/snowflake] 01/02: Add Version Output Support to Snowflake
gitolite role
git at cupani.torproject.org
Wed Nov 23 12:30:28 UTC 2022
This is an automated email from the git hooks/post-receive script.
shelikhoo pushed a commit to branch main
in repository pluggable-transports/snowflake.
commit 33248f3dec5594c985cfd11e6c6143ddaa5613c0
Author: Shelikhoo <xiaokangwang at outlook.com>
AuthorDate: Tue Nov 8 14:58:23 2022 +0000
Add Version Output Support to Snowflake
From now on, there will be a file at common/version/version.go that includes current version number.
---
client/snowflake.go | 8 ++++++++
common/utls/client_hello_id.go | 8 ++++++++
common/utls/client_hello_id_version.go | 24 ++++++++++++++++++++++++
common/version/combined.go | 5 +++++
common/version/detail.go | 13 +++++++++++++
common/version/version.go | 7 +++++++
proxy/main.go | 8 ++++++++
server/server.go | 8 ++++++++
8 files changed, 81 insertions(+)
diff --git a/client/snowflake.go b/client/snowflake.go
index 2cb6549..e4344e4 100644
--- a/client/snowflake.go
+++ b/client/snowflake.go
@@ -3,6 +3,7 @@ package main
import (
"flag"
+ "fmt"
"io"
"io/ioutil"
"log"
@@ -19,6 +20,7 @@ import (
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/safelog"
+ "git.torproject.org/pluggable-transports/snowflake.git/v2/common/version"
)
const (
@@ -157,6 +159,7 @@ func main() {
unsafeLogging := flag.Bool("unsafe-logging", false, "prevent logs from being scrubbed")
max := flag.Int("max", DefaultSnowflakeCapacity,
"capacity for number of multiplexed WebRTC peers")
+ versionFlag := flag.Bool("version", false, "display version info to stderr and quit")
// Deprecated
oldLogToStateDir := flag.Bool("logToStateDir", false, "use -log-to-state-dir instead")
@@ -164,6 +167,11 @@ func main() {
flag.Parse()
+ if *versionFlag {
+ fmt.Fprintf(os.Stderr, "snowflake-client %s", version.ConstructResult())
+ os.Exit(0)
+ }
+
log.SetFlags(log.LstdFlags | log.LUTC)
// Don't write to stderr; versions of tor earlier than about 0.3.5.6 do
diff --git a/common/utls/client_hello_id.go b/common/utls/client_hello_id.go
index 8a13280..c134ecf 100644
--- a/common/utls/client_hello_id.go
+++ b/common/utls/client_hello_id.go
@@ -36,3 +36,11 @@ func NameToUTLSID(name string) (utls.ClientHelloID, error) {
}
return utls.ClientHelloID{}, errNameNotFound
}
+
+func ListAllNames() []string {
+ var names []string
+ for k, _ := range clientHelloIDMap {
+ names = append(names, k)
+ }
+ return names
+}
diff --git a/common/utls/client_hello_id_version.go b/common/utls/client_hello_id_version.go
new file mode 100644
index 0000000..7228694
--- /dev/null
+++ b/common/utls/client_hello_id_version.go
@@ -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())
+}
diff --git a/common/version/combined.go b/common/version/combined.go
new file mode 100644
index 0000000..9de74db
--- /dev/null
+++ b/common/version/combined.go
@@ -0,0 +1,5 @@
+package version
+
+func ConstructResult() string {
+ return GetVersion() + "\n" + GetVersionDetail()
+}
diff --git a/common/version/detail.go b/common/version/detail.go
new file mode 100644
index 0000000..6965630
--- /dev/null
+++ b/common/version/detail.go
@@ -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()
+}
diff --git a/common/version/version.go b/common/version/version.go
new file mode 100644
index 0000000..4936905
--- /dev/null
+++ b/common/version/version.go
@@ -0,0 +1,7 @@
+package version
+
+func GetVersion() string {
+ return version
+}
+
+var version = "2.3.1"
diff --git a/proxy/main.go b/proxy/main.go
index 3dad5a9..2218609 100644
--- a/proxy/main.go
+++ b/proxy/main.go
@@ -2,6 +2,7 @@ package main
import (
"flag"
+ "fmt"
"io"
"io/ioutil"
"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/safelog"
+ "git.torproject.org/pluggable-transports/snowflake.git/v2/common/version"
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\". ")
verboseLogging := flag.Bool("verbose", false, "increase log verbosity")
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}
flag.Parse()
+ if *versionFlag {
+ fmt.Fprintf(os.Stderr, "snowflake-proxy %s", version.ConstructResult())
+ os.Exit(0)
+ }
+
eventLogger := event.NewSnowflakeEventDispatcher()
if *ephemeralPortsRangeFlag != "" {
diff --git a/server/server.go b/server/server.go
index 6eb5cf7..8b6c7a5 100644
--- a/server/server.go
+++ b/server/server.go
@@ -19,6 +19,7 @@ import (
"syscall"
"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"
pt "git.torproject.org/pluggable-transports/goptlib.git"
@@ -130,6 +131,7 @@ func main() {
var disableTLS bool
var logFilename string
var unsafeLogging bool
+ var versionFlag bool
flag.Usage = usage
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.StringVar(&logFilename, "log", "", "log file to write to")
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()
+ if versionFlag {
+ fmt.Fprintf(os.Stderr, "snowflake-server %s", version.ConstructResult())
+ os.Exit(0)
+ }
+
log.SetFlags(log.LstdFlags | log.LUTC)
var logOutput io.Writer = os.Stderr
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the tor-commits
mailing list