func initPlayground(origin *url.URL) { p, err := build.Default.Import(basePkg, "", build.FindOnly) if err != nil { log.Fatalf("Could not find gopresent files: %v", err) } basePath := p.Dir playScript(basePath, "SocketTransport") http.Handle("/socket", socket.NewHandler(origin)) }
func main() { flag.Parse() // find and serve the go tour files root, err := findRoot() if err != nil { log.Fatalf("Couldn't find tour files: %v", err) } log.Println("Serving content from", root) host, port, err := net.SplitHostPort(*httpListen) if err != nil { log.Fatal(err) } if host == "" { host = "localhost" } if host != "127.0.0.1" && host != "localhost" { log.Print(localhostWarning) } httpAddr = host + ":" + port if err := initTour(root, "SocketTransport"); err != nil { log.Fatal(err) } http.HandleFunc("/", rootHandler) http.HandleFunc("/lesson/", lessonHandler) origin := &url.URL{Scheme: "http", Host: host + ":" + port} http.Handle(socketPath, socket.NewHandler(origin)) // Keep these static file handlers in sync with ../app.yaml. static := http.FileServer(http.Dir(root)) http.Handle("/content/img/", static) http.Handle("/static/", static) imgDir := filepath.Join(root, "static", "img") http.Handle("/favicon.ico", http.FileServer(http.Dir(imgDir))) go func() { url := "http://" + httpAddr if waitServer(url) && *openBrowser && startBrowser(url) { log.Printf("A browser window should open. If not, please visit %s", url) } else { log.Printf("Please open your web browser and visit %s", url) } }() log.Fatal(http.ListenAndServe(httpAddr, nil)) }
func main() { flag.Parse() // find and serve the go tour files root, err := findRoot() if err != nil { log.Fatalf("n'a pas pu trouver les fichiers du tour: %v", err) } log.Println("Sers le contenu de", root) host, port, err := net.SplitHostPort(*httpListen) if err != nil { log.Fatal(err) } if host == "" { host = "localhost" } if host != "127.0.0.1" && host != "localhost" { log.Print(localhostWarning) } httpAddr = host + ":" + port if err := initTour(root, "SocketTransport"); err != nil { log.Fatal(err) } http.HandleFunc("/", rootHandler) http.HandleFunc("/lesson/", lessonHandler) origin := &url.URL{Scheme: "http", Host: host + ":" + port} http.Handle(socketPath, socket.NewHandler(origin)) // Keep these static file handlers in sync with ../app.yaml. static := http.FileServer(http.Dir(root)) http.Handle("/content/img/", static) http.Handle("/static/", static) imgDir := filepath.Join(root, "static", "img") http.Handle("/favicon.ico", http.FileServer(http.Dir(imgDir))) go func() { url := "http://" + httpAddr if waitServer(url) && *openBrowser && startBrowser(url) { log.Printf("Une fenêtre de navigateur devrait s'ouvrir. Si non, s'il vous plaît visitez %s", url) } else { log.Printf("S'il vous plaît ouvrez votre navigateur Web et visiter %s", url) } }() log.Fatal(http.ListenAndServe(httpAddr, nil)) }
func initPlayground(basepath string, origin *url.URL) { if present.PlayEnabled { if *nativeClient { socket.RunScripts = false socket.Environ = func() []string { if runtime.GOARCH == "amd64" { return environ("GOOS=nacl", "GOARCH=amd64p32") } return environ("GOOS=nacl") } } playScript(basepath, "SocketTransport") http.Handle("/socket", socket.NewHandler(origin)) } }
func main() { pathToServe, err := getPathToServe() if err != nil { log.Fatalln(err) } addr1 := "localhost:8080" log.Printf("Serving at %s\n", addr1) mux := http.NewServeMux() server := &http.Server{Addr: addr1, Handler: mux} origin := &url.URL{ Scheme: "http", Host: addr1, } mux.Handle("/socket", socket.NewHandler(origin)) mux.Handle("/", http.FileServer(http.Dir(pathToServe))) log.Fatal(server.ListenAndServe()) }
func main() { httpAddr := flag.String("http", "127.0.0.1:4999", "HTTP service address (e.g., '127.0.0.1:4999')") originHost := flag.String("orighost", "", "host component of web origin URL (e.g., 'localhost')") flag.StringVar(&basePath, "base", "", "base path for slide template and static resources") flag.BoolVar(&present.PlayEnabled, "play", true, "enable playground (permit execution of arbitrary user code)") nativeClient := flag.Bool("nacl", false, "use Native Client environment playground (prevents non-Go code execution)") flag.StringVar(&defaultTheme, "theme", "", "the default theme to apply when no custom styles are defined") flag.StringVar(&repoPath, "repo", "", "path for theme repository") flag.Parse() if repoPath != "" { if _, err := os.Stat(repoPath); os.IsNotExist(err) { fmt.Fprintf(os.Stderr, "Repo directory '%s' does not exist\n", repoPath) os.Exit(1) } } p, err := build.Default.Import(basePkg, "", build.FindOnly) if err != nil { fmt.Fprintf(os.Stderr, "Couldn't find gopresent files: %v\n", err) fmt.Fprintf(os.Stderr, basePathMessage, basePkg) os.Exit(1) } if basePath == "" { basePath = p.Dir tmpDir := filepath.Join(basePath, "static", "tmp") if err := os.RemoveAll(tmpDir); err != nil { fmt.Fprintf(os.Stderr, "Couldn't remove tmp directory '%s': %v\n", tmpDir, err) os.Exit(1) } } plusDirPath = getPlusDirPath() if repoPath == "" { repoPath, _ = filepath.Abs(filepath.Join(plusDirPath, "themes")) } args := os.Args[1:] if len(args) > 0 && args[0][0:1] != "-" { switch args[0] { case "install": installTheme(args) case "uninstall": uninstallTheme(args) default: fmt.Fprintf(os.Stderr, "'%s' is not a valid command\n", args[0]) os.Exit(1) } os.Exit(0) } err = initTemplates(basePath) if err != nil { log.Fatalf("Failed to parse templates: %v", err) } ln, err := net.Listen("tcp", *httpAddr) if err != nil { log.Fatal(err) } defer ln.Close() _, port, err := net.SplitHostPort(ln.Addr().String()) if err != nil { log.Fatal(err) } origin := &url.URL{Scheme: "http"} if *originHost != "" { origin.Host = net.JoinHostPort(*originHost, port) } else if ln.Addr().(*net.TCPAddr).IP.IsUnspecified() { name, _ := os.Hostname() origin.Host = net.JoinHostPort(name, port) } else { reqHost, reqPort, err := net.SplitHostPort(*httpAddr) if err != nil { log.Fatal(err) } if reqPort == "0" { origin.Host = net.JoinHostPort(reqHost, port) } else { origin.Host = *httpAddr } } if present.PlayEnabled { if *nativeClient { socket.RunScripts = false socket.Environ = func() []string { if runtime.GOARCH == "amd64" { return environ("GOOS=nacl", "GOARCH=amd64p32") } return environ("GOOS=nacl") } } playScript(basePath, "SocketTransport") http.Handle("/socket", socket.NewHandler(origin)) } http.Handle("/static/", http.FileServer(http.Dir(basePath))) if !ln.Addr().(*net.TCPAddr).IP.IsLoopback() && present.PlayEnabled && !*nativeClient { log.Print(localhostWarning) } log.Printf("Open your web browser and visit %s", origin.String()) log.Fatal(http.Serve(ln, nil)) }
func main() { httpAddr := flag.String("http", "127.0.0.1:3999", "HTTP service address (e.g., '127.0.0.1:3999')") originHost := flag.String("orighost", "", "host component of web origin URL (e.g., 'localhost')") flag.StringVar(&basePath, "base", "", "base path for slide template and static resources") flag.BoolVar(&present.PlayEnabled, "play", true, "enable playground (permit execution of arbitrary user code)") nativeClient := flag.Bool("nacl", false, "use Native Client environment playground (prevents non-Go code execution)") flag.Parse() if basePath == "" { p, err := build.Default.Import(basePkg, "", build.FindOnly) if err != nil { fmt.Fprintf(os.Stderr, "Couldn't find gopresent files: %v\n", err) fmt.Fprintf(os.Stderr, basePathMessage, basePkg) os.Exit(1) } basePath = p.Dir } err := initTemplates(basePath) if err != nil { log.Fatalf("Failed to parse templates: %v", err) } ln, err := net.Listen("tcp", *httpAddr) if err != nil { log.Fatal(err) } defer ln.Close() _, port, err := net.SplitHostPort(ln.Addr().String()) if err != nil { log.Fatal(err) } origin := &url.URL{Scheme: "http"} if *originHost != "" { origin.Host = net.JoinHostPort(*originHost, port) } else if ln.Addr().(*net.TCPAddr).IP.IsUnspecified() { name, _ := os.Hostname() origin.Host = net.JoinHostPort(name, port) } else { reqHost, reqPort, err := net.SplitHostPort(*httpAddr) if err != nil { log.Fatal(err) } if reqPort == "0" { origin.Host = net.JoinHostPort(reqHost, port) } else { origin.Host = *httpAddr } } if present.PlayEnabled { if *nativeClient { socket.RunScripts = false socket.Environ = func() []string { if runtime.GOARCH == "amd64" { return environ("GOOS=nacl", "GOARCH=amd64p32") } return environ("GOOS=nacl") } } playScript(basePath, "SocketTransport") http.Handle("/socket", socket.NewHandler(origin)) } http.Handle("/static/", http.FileServer(http.Dir(basePath))) if !ln.Addr().(*net.TCPAddr).IP.IsLoopback() && present.PlayEnabled && !*nativeClient { log.Print(localhostWarning) } log.Printf("Open your web browser and visit %s", origin.String()) log.Fatal(http.Serve(ln, nil)) }