cmd/faucet, cmd/puppeth: drop GitHub support at official request
This commit is contained in:
		
							parent
							
								
									ffc12f63ec
								
							
						
					
					
						commit
						327dcd3622
					
				| @ -437,7 +437,11 @@ func (f *faucet) apiHandler(conn *websocket.Conn) { | |||||||
| 		) | 		) | ||||||
| 		switch { | 		switch { | ||||||
| 		case strings.HasPrefix(msg.URL, "https://gist.github.com/"): | 		case strings.HasPrefix(msg.URL, "https://gist.github.com/"): | ||||||
| 			username, avatar, address, err = authGitHub(msg.URL) | 			if err = sendError(conn, errors.New("GitHub authentication discontinued at the official request of GitHub")); err != nil { | ||||||
|  | 				log.Warn("Failed to send GitHub deprecation to client", "err", err) | ||||||
|  | 				return | ||||||
|  | 			} | ||||||
|  | 			continue | ||||||
| 		case strings.HasPrefix(msg.URL, "https://twitter.com/"): | 		case strings.HasPrefix(msg.URL, "https://twitter.com/"): | ||||||
| 			username, avatar, address, err = authTwitter(msg.URL) | 			username, avatar, address, err = authTwitter(msg.URL) | ||||||
| 		case strings.HasPrefix(msg.URL, "https://plus.google.com/"): | 		case strings.HasPrefix(msg.URL, "https://plus.google.com/"): | ||||||
|  | |||||||
| @ -80,11 +80,8 @@ | |||||||
| 				<div class="row" style="margin-top: 32px;"> | 				<div class="row" style="margin-top: 32px;"> | ||||||
| 					<div class="col-lg-12"> | 					<div class="col-lg-12"> | ||||||
| 						<h3>How does this work?</h3> | 						<h3>How does this work?</h3> | ||||||
| 						<p>This Ether faucet is running on the {{.Network}} network. To prevent malicious actors from exhausting all available funds or accumulating enough Ether to mount long running spam attacks, requests are tied to certain common 3rd party accounts. Anyone having a GitHub, Twitter, Google+ or Facebook account may request funds within the permitted limits.</p> | 						<p>This Ether faucet is running on the {{.Network}} network. To prevent malicious actors from exhausting all available funds or accumulating enough Ether to mount long running spam attacks, requests are tied to common 3rd party social network accounts. Anyone having a Twitter, Google+ or Facebook account may request funds within the permitted limits.</p> | ||||||
| 						<dl class="dl-horizontal"> | 						<dl class="dl-horizontal"> | ||||||
| 						  <dt style="width: auto; margin-left: 40px;"><i class="fa fa-github-alt" aria-hidden="true" style="font-size: 36px;"></i></dt> |  | ||||||
| 							<dd style="margin-left: 88px; margin-bottom: 10px;"></i> To request funds via GitHub, create a <a href="https://gist.github.com/" target="_about:blank">gist</a> with your Ethereum address embedded into the content (the file name doesn't matter).<br/>Copy-paste the gists URL into the above input box and fire away!</dd> |  | ||||||
| 
 |  | ||||||
| 							<dt style="width: auto; margin-left: 40px;"><i class="fa fa-twitter" aria-hidden="true" style="font-size: 36px;"></i></dt> | 							<dt style="width: auto; margin-left: 40px;"><i class="fa fa-twitter" aria-hidden="true" style="font-size: 36px;"></i></dt> | ||||||
| 							<dd style="margin-left: 88px; margin-bottom: 10px;"></i> To request funds via Twitter, make a <a href="https://twitter.com/intent/tweet?text=Requesting%20faucet%20funds%20into%200x0000000000000000000000000000000000000000%20on%20the%20%23{{.Network}}%20%23Ethereum%20test%20network." target="_about:blank">tweet</a> with your Ethereum address pasted into the contents (surrounding text doesn't matter).<br/>Copy-paste the <a href="https://support.twitter.com/articles/80586" target="_about:blank">tweets URL</a> into the above input box and fire away!</dd> | 							<dd style="margin-left: 88px; margin-bottom: 10px;"></i> To request funds via Twitter, make a <a href="https://twitter.com/intent/tweet?text=Requesting%20faucet%20funds%20into%200x0000000000000000000000000000000000000000%20on%20the%20%23{{.Network}}%20%23Ethereum%20test%20network." target="_about:blank">tweet</a> with your Ethereum address pasted into the contents (surrounding text doesn't matter).<br/>Copy-paste the <a href="https://support.twitter.com/articles/80586" target="_about:blank">tweets URL</a> into the above input box and fire away!</dd> | ||||||
| 
 | 
 | ||||||
|  | |||||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @ -42,7 +42,7 @@ ADD account.pass /account.pass | |||||||
| ENTRYPOINT [ \ | ENTRYPOINT [ \ | ||||||
| 	"faucet", "--genesis", "/genesis.json", "--network", "{{.NetworkID}}", "--bootnodes", "{{.Bootnodes}}", "--ethstats", "{{.Ethstats}}", "--ethport", "{{.EthPort}}",     \ | 	"faucet", "--genesis", "/genesis.json", "--network", "{{.NetworkID}}", "--bootnodes", "{{.Bootnodes}}", "--ethstats", "{{.Ethstats}}", "--ethport", "{{.EthPort}}",     \ | ||||||
| 	"--faucet.name", "{{.FaucetName}}", "--faucet.amount", "{{.FaucetAmount}}", "--faucet.minutes", "{{.FaucetMinutes}}", "--faucet.tiers", "{{.FaucetTiers}}",             \ | 	"--faucet.name", "{{.FaucetName}}", "--faucet.amount", "{{.FaucetAmount}}", "--faucet.minutes", "{{.FaucetMinutes}}", "--faucet.tiers", "{{.FaucetTiers}}",             \ | ||||||
| 	{{if .GitHubUser}}"--github.user", "{{.GitHubUser}}", "--github.token", "{{.GitHubToken}}", {{end}}"--account.json", "/account.json", "--account.pass", "/account.pass" \ | 	"--account.json", "/account.json", "--account.pass", "/account.pass"                                                                                                    \ | ||||||
| 	{{if .CaptchaToken}}, "--captcha.token", "{{.CaptchaToken}}", "--captcha.secret", "{{.CaptchaSecret}}"{{end}}{{if .NoAuth}}, "--noauth"{{end}}                          \ | 	{{if .CaptchaToken}}, "--captcha.token", "{{.CaptchaToken}}", "--captcha.secret", "{{.CaptchaSecret}}"{{end}}{{if .NoAuth}}, "--noauth"{{end}}                          \ | ||||||
| ]` | ]` | ||||||
| 
 | 
 | ||||||
| @ -65,8 +65,6 @@ services: | |||||||
|       - FAUCET_AMOUNT={{.FaucetAmount}} |       - FAUCET_AMOUNT={{.FaucetAmount}} | ||||||
|       - FAUCET_MINUTES={{.FaucetMinutes}} |       - FAUCET_MINUTES={{.FaucetMinutes}} | ||||||
|       - FAUCET_TIERS={{.FaucetTiers}} |       - FAUCET_TIERS={{.FaucetTiers}} | ||||||
|       - GITHUB_USER={{.GitHubUser}} |  | ||||||
|       - GITHUB_TOKEN={{.GitHubToken}} |  | ||||||
|       - CAPTCHA_TOKEN={{.CaptchaToken}} |       - CAPTCHA_TOKEN={{.CaptchaToken}} | ||||||
|       - CAPTCHA_SECRET={{.CaptchaSecret}} |       - CAPTCHA_SECRET={{.CaptchaSecret}} | ||||||
|       - NO_AUTH={{.NoAuth}}{{if .VHost}} |       - NO_AUTH={{.NoAuth}}{{if .VHost}} | ||||||
| @ -94,8 +92,6 @@ func deployFaucet(client *sshClient, network string, bootnodes []string, config | |||||||
| 		"Bootnodes":     strings.Join(bootnodes, ","), | 		"Bootnodes":     strings.Join(bootnodes, ","), | ||||||
| 		"Ethstats":      config.node.ethstats, | 		"Ethstats":      config.node.ethstats, | ||||||
| 		"EthPort":       config.node.portFull, | 		"EthPort":       config.node.portFull, | ||||||
| 		"GitHubUser":    config.githubUser, |  | ||||||
| 		"GitHubToken":   config.githubToken, |  | ||||||
| 		"CaptchaToken":  config.captchaToken, | 		"CaptchaToken":  config.captchaToken, | ||||||
| 		"CaptchaSecret": config.captchaSecret, | 		"CaptchaSecret": config.captchaSecret, | ||||||
| 		"FaucetName":    strings.Title(network), | 		"FaucetName":    strings.Title(network), | ||||||
| @ -114,8 +110,6 @@ func deployFaucet(client *sshClient, network string, bootnodes []string, config | |||||||
| 		"ApiPort":       config.port, | 		"ApiPort":       config.port, | ||||||
| 		"EthPort":       config.node.portFull, | 		"EthPort":       config.node.portFull, | ||||||
| 		"EthName":       config.node.ethstats[:strings.Index(config.node.ethstats, ":")], | 		"EthName":       config.node.ethstats[:strings.Index(config.node.ethstats, ":")], | ||||||
| 		"GitHubUser":    config.githubUser, |  | ||||||
| 		"GitHubToken":   config.githubToken, |  | ||||||
| 		"CaptchaToken":  config.captchaToken, | 		"CaptchaToken":  config.captchaToken, | ||||||
| 		"CaptchaSecret": config.captchaSecret, | 		"CaptchaSecret": config.captchaSecret, | ||||||
| 		"FaucetAmount":  config.amount, | 		"FaucetAmount":  config.amount, | ||||||
| @ -152,8 +146,6 @@ type faucetInfos struct { | |||||||
| 	minutes       int | 	minutes       int | ||||||
| 	tiers         int | 	tiers         int | ||||||
| 	noauth        bool | 	noauth        bool | ||||||
| 	githubUser    string |  | ||||||
| 	githubToken   string |  | ||||||
| 	captchaToken  string | 	captchaToken  string | ||||||
| 	captchaSecret string | 	captchaSecret string | ||||||
| } | } | ||||||
| @ -171,11 +163,6 @@ func (info *faucetInfos) Report() map[string]string { | |||||||
| 		"Captha protection":            fmt.Sprintf("%v", info.captchaToken != ""), | 		"Captha protection":            fmt.Sprintf("%v", info.captchaToken != ""), | ||||||
| 		"Ethstats username":            info.node.ethstats, | 		"Ethstats username":            info.node.ethstats, | ||||||
| 	} | 	} | ||||||
| 	if info.githubUser != "" { |  | ||||||
| 		report["GitHub authentication"] = info.githubUser |  | ||||||
| 	} else { |  | ||||||
| 		report["GitHub authentication"] = "disabled, rate-limited" |  | ||||||
| 	} |  | ||||||
| 	if info.noauth { | 	if info.noauth { | ||||||
| 		report["Debug mode (no auth)"] = "enabled" | 		report["Debug mode (no auth)"] = "enabled" | ||||||
| 	} | 	} | ||||||
| @ -249,8 +236,6 @@ func checkFaucet(client *sshClient, network string) (*faucetInfos, error) { | |||||||
| 		amount:        amount, | 		amount:        amount, | ||||||
| 		minutes:       minutes, | 		minutes:       minutes, | ||||||
| 		tiers:         tiers, | 		tiers:         tiers, | ||||||
| 		githubUser:    infos.envvars["GITHUB_USER"], |  | ||||||
| 		githubToken:   infos.envvars["GITHUB_TOKEN"], |  | ||||||
| 		captchaToken:  infos.envvars["CAPTCHA_TOKEN"], | 		captchaToken:  infos.envvars["CAPTCHA_TOKEN"], | ||||||
| 		captchaSecret: infos.envvars["CAPTCHA_SECRET"], | 		captchaSecret: infos.envvars["CAPTCHA_SECRET"], | ||||||
| 		noauth:        infos.envvars["NO_AUTH"] == "true", | 		noauth:        infos.envvars["NO_AUTH"] == "true", | ||||||
|  | |||||||
| @ -19,7 +19,6 @@ package main | |||||||
| import ( | import ( | ||||||
| 	"encoding/json" | 	"encoding/json" | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"net/http" |  | ||||||
| 
 | 
 | ||||||
| 	"github.com/ethereum/go-ethereum/accounts/keystore" | 	"github.com/ethereum/go-ethereum/accounts/keystore" | ||||||
| 	"github.com/ethereum/go-ethereum/log" | 	"github.com/ethereum/go-ethereum/log" | ||||||
| @ -79,51 +78,6 @@ func (w *wizard) deployFaucet() { | |||||||
| 		log.Error("At least one funding tier must be set") | 		log.Error("At least one funding tier must be set") | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
| 	// Accessing GitHub gists requires API authorization, retrieve it
 |  | ||||||
| 	if infos.githubUser != "" { |  | ||||||
| 		fmt.Println() |  | ||||||
| 		fmt.Printf("Reuse previous (%s) GitHub API authorization (y/n)? (default = yes)\n", infos.githubUser) |  | ||||||
| 		if w.readDefaultString("y") != "y" { |  | ||||||
| 			infos.githubUser, infos.githubToken = "", "" |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| 	if infos.githubUser == "" { |  | ||||||
| 		// No previous authorization (or new one requested)
 |  | ||||||
| 		fmt.Println() |  | ||||||
| 		fmt.Println("Which GitHub user to verify Gists through? (default = none = rate-limited API)") |  | ||||||
| 		infos.githubUser = w.readDefaultString("") |  | ||||||
| 
 |  | ||||||
| 		if infos.githubUser == "" { |  | ||||||
| 			log.Warn("Funding requests via GitHub will be heavily rate-limited") |  | ||||||
| 		} else { |  | ||||||
| 			fmt.Println() |  | ||||||
| 			fmt.Println("What is the GitHub personal access token of the user? (won't be echoed)") |  | ||||||
| 			infos.githubToken = w.readPassword() |  | ||||||
| 
 |  | ||||||
| 			// Do a sanity check query against github to ensure it's valid
 |  | ||||||
| 			req, _ := http.NewRequest("GET", "https://api.github.com/user", nil) |  | ||||||
| 			req.SetBasicAuth(infos.githubUser, infos.githubToken) |  | ||||||
| 			res, err := http.DefaultClient.Do(req) |  | ||||||
| 			if err != nil { |  | ||||||
| 				log.Error("Failed to verify GitHub authentication", "err", err) |  | ||||||
| 				return |  | ||||||
| 			} |  | ||||||
| 			defer res.Body.Close() |  | ||||||
| 
 |  | ||||||
| 			var msg struct { |  | ||||||
| 				Login   string `json:"login"` |  | ||||||
| 				Message string `json:"message"` |  | ||||||
| 			} |  | ||||||
| 			if err = json.NewDecoder(res.Body).Decode(&msg); err != nil { |  | ||||||
| 				log.Error("Failed to decode authorization response", "err", err) |  | ||||||
| 				return |  | ||||||
| 			} |  | ||||||
| 			if msg.Login != infos.githubUser { |  | ||||||
| 				log.Error("GitHub authorization failed", "user", infos.githubUser, "message", msg.Message) |  | ||||||
| 				return |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| 	// Accessing the reCaptcha service requires API authorizations, request it
 | 	// Accessing the reCaptcha service requires API authorizations, request it
 | ||||||
| 	if infos.captchaToken != "" { | 	if infos.captchaToken != "" { | ||||||
| 		fmt.Println() | 		fmt.Println() | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user