summaryrefslogtreecommitdiff
path: root/obfs4proxy/obfs4proxy.go
diff options
context:
space:
mode:
authorYawning Angel <yawning@schwanenlied.me>2014-05-21 18:28:50 +0000
committerYawning Angel <yawning@schwanenlied.me>2014-05-21 18:28:50 +0000
commit7dd875fe4cd214a7678e701adfd2a8bde7882e4d (patch)
tree2326bfa7f48c4f5f1c785e3124f3a855172c5c49 /obfs4proxy/obfs4proxy.go
parentf4b38212920977dee017525666143c6b1afce65d (diff)
Revert "Use the new goptlib goodies."
This reverts commit 8d61c6bcc67e7acc5604f87ca2a7c7ec43fc46de. On second thought, don't do this. API not final, and some of the stuff might not be a good idea after all.
Diffstat (limited to 'obfs4proxy/obfs4proxy.go')
-rw-r--r--obfs4proxy/obfs4proxy.go47
1 files changed, 37 insertions, 10 deletions
diff --git a/obfs4proxy/obfs4proxy.go b/obfs4proxy/obfs4proxy.go
index 9a9083d..3ad8785 100644
--- a/obfs4proxy/obfs4proxy.go
+++ b/obfs4proxy/obfs4proxy.go
@@ -69,7 +69,6 @@ const (
obfs4LogFile = "obfs4proxy.log"
)
-var enableLogging bool
var unsafeLogging bool
var ptListeners []net.Listener
@@ -173,8 +172,6 @@ func serverSetup() bool {
return launch
}
- ptInitializeLogging(ptServerInfo.StateLocation)
-
for _, bindaddr := range ptServerInfo.Bindaddrs {
switch bindaddr.MethodName {
case obfs4Method:
@@ -292,8 +289,6 @@ func clientSetup() bool {
return launch
}
- ptInitializeLogging(ptClientInfo.StateLocation)
-
for _, methodName := range ptClientInfo.MethodNames {
switch methodName {
case obfs4Method:
@@ -315,8 +310,37 @@ func clientSetup() bool {
return launch
}
-func ptInitializeLogging(dir string) {
- if enableLogging {
+func ptIsClient() bool {
+ env := os.Getenv("TOR_PT_CLIENT_TRANSPORTS")
+ return env != ""
+}
+
+func ptIsServer() bool {
+ env := os.Getenv("TOR_PT_SERVER_TRANSPORTS")
+ return env != ""
+}
+
+func ptGetStateDir() (dir string, err error) {
+ dir = os.Getenv("TOR_PT_STATE_LOCATION")
+ if dir == "" {
+ return
+ }
+
+ err = os.MkdirAll(dir, 0755)
+ if err != nil {
+ log.Fatalf("[ERROR] Failed to create path: %s", err)
+ }
+
+ return
+}
+
+func ptInitializeLogging(enable bool) {
+ if enable {
+ dir, err := ptGetStateDir()
+ if err != nil || dir == "" {
+ return
+ }
+
f, err := os.OpenFile(path.Join(dir, obfs4LogFile), os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0600)
if err != nil {
log.Fatalf("[ERROR] Failed to open log file: %s", err)
@@ -370,7 +394,7 @@ func generateServerParams(id string) {
func main() {
// Some command line args.
genParams := flag.String("genServerParams", "", "Generate server params given a bridge fingerprint.")
- flag.BoolVar(&enableLogging, "enableLogging", false, "Log to TOR_PT_STATE_LOCATION/obfs4proxy.log")
+ doLogging := flag.Bool("enableLogging", false, "Log to TOR_PT_STATE_LOCATION/obfs4proxy.log")
flag.BoolVar(&unsafeLogging, "unsafeLogging", false, "Disable the address scrubber")
flag.Parse()
if *genParams != "" {
@@ -378,11 +402,14 @@ func main() {
os.Exit(0)
}
+ // Initialize pt logging.
+ ptInitializeLogging(*doLogging)
+
// Go through the pt protocol and initialize client or server mode.
launched := false
- if pt.IsClient() {
+ if ptIsClient() {
launched = clientSetup()
- } else if pt.IsServer() {
+ } else if ptIsServer() {
launched = serverSetup()
}
if !launched {