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