From 81352ca48f507286be60941611eb4d413e7f7c94 Mon Sep 17 00:00:00 2001 From: Jeff Garzik Date: Mon, 21 Mar 2011 04:27:02 -0400 Subject: [PATCH] Support --user and --pass, as alternative to --userpass --- cpu-miner.c | 55 +++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 41 insertions(+), 14 deletions(-) diff --git a/cpu-miner.c b/cpu-miner.c index 7ce1470..12af724 100644 --- a/cpu-miner.c +++ b/cpu-miner.c @@ -29,7 +29,9 @@ #define PROGRAM_NAME "minerd" #define DEF_RPC_URL "http://127.0.0.1:8332/" -#define DEF_RPC_USERPASS "rpcuser:rpcpass" +#define DEF_RPC_USERNAME "rpcuser" +#define DEF_RPC_PASSWORD "rpcpass" +#define DEF_RPC_USERPASS DEF_RPC_USERNAME ":" DEF_RPC_PASSWORD enum workio_commands { WC_GET_WORK, @@ -84,7 +86,8 @@ static const bool opt_time = true; static enum sha256_algos opt_algo = ALGO_C; static int opt_n_threads = 1; static char *rpc_url; -static char *userpass; +static char *rpc_userpass; +static char *rpc_user, *rpc_pass; struct thr_info *thr_info; static int work_thr_id; int longpoll_thr_id; @@ -162,26 +165,35 @@ static struct option_help options_help[] = { { "userpass USERNAME:PASSWORD", "Username:Password pair for bitcoin JSON-RPC server " "(default: " DEF_RPC_USERPASS ")" }, + + { "user USERNAME", + "(-u USERNAME) Username for bitcoin JSON-RPC server " + "(default: " DEF_RPC_USERNAME ")" }, + + { "pass PASSWORD", + "(-p USERNAME) Password for bitcoin JSON-RPC server " + "(default: " DEF_RPC_PASSWORD ")" }, }; static struct option options[] = { - { "help", 0, NULL, 'h' }, { "algo", 1, NULL, 'a' }, { "config", 1, NULL, 'c' }, - { "quiet", 0, NULL, 'q' }, { "debug", 0, NULL, 'D' }, + { "help", 0, NULL, 'h' }, + { "no-longpoll", 0, NULL, 1003 }, + { "pass", 1, NULL, 'p' }, { "protocol-dump", 0, NULL, 'P' }, + { "quiet", 0, NULL, 'q' }, { "threads", 1, NULL, 't' }, { "retries", 1, NULL, 'r' }, { "retry-pause", 1, NULL, 'R' }, { "scantime", 1, NULL, 's' }, - { "url", 1, NULL, 1001 }, - { "userpass", 1, NULL, 1002 }, - { "no-longpoll", 0, NULL, 1003 }, - #ifdef HAVE_SYSLOG_H { "syslog", 0, NULL, 1004 }, #endif + { "url", 1, NULL, 1001 }, + { "user", 1, NULL, 'u' }, + { "userpass", 1, NULL, 1002 }, { } }; @@ -271,7 +283,7 @@ static bool submit_upstream_work(CURL *curl, const struct work *work) applog(LOG_DEBUG, "DBG: sending RPC call: %s", s); /* issue JSON-RPC request */ - val = json_rpc_call(curl, rpc_url, userpass, s, false, false); + val = json_rpc_call(curl, rpc_url, rpc_userpass, s, false, false); if (!val) { applog(LOG_ERR, "submit_upstream_work json_rpc_call failed"); goto out; @@ -299,7 +311,7 @@ static bool get_upstream_work(CURL *curl, struct work *work) json_t *val; bool rc; - val = json_rpc_call(curl, rpc_url, userpass, rpc_req, + val = json_rpc_call(curl, rpc_url, rpc_userpass, rpc_req, want_longpoll, false); if (!val) return false; @@ -644,7 +656,7 @@ static void *longpoll_thread(void *userdata) while (1) { json_t *val; - val = json_rpc_call(curl, lp_url, userpass, rpc_req, + val = json_rpc_call(curl, lp_url, rpc_userpass, rpc_req, false, true); if (val) { failures = 0; @@ -724,6 +736,10 @@ static void parse_arg (int key, char *arg) case 'D': opt_debug = true; break; + case 'p': + free(rpc_pass); + rpc_pass = strdup(arg); + break; case 'P': opt_protocol = true; break; @@ -755,6 +771,10 @@ static void parse_arg (int key, char *arg) opt_n_threads = v; break; + case 'u': + free(rpc_user); + rpc_user = strdup(arg); + break; case 1001: /* --url */ if (strncmp(arg, "http://", 7) && strncmp(arg, "https://", 8)) @@ -767,8 +787,8 @@ static void parse_arg (int key, char *arg) if (!strchr(arg, ':')) show_usage(); - free(userpass); - userpass = strdup(arg); + free(rpc_userpass); + rpc_userpass = strdup(arg); break; case 1003: want_longpoll = false; @@ -834,11 +854,18 @@ int main (int argc, char *argv[]) int i; rpc_url = strdup(DEF_RPC_URL); - userpass = strdup(DEF_RPC_USERPASS); + rpc_userpass = strdup(DEF_RPC_USERPASS); /* parse command line */ parse_cmdline(argc, argv); + if (!rpc_userpass && rpc_user && rpc_pass) { + rpc_userpass = malloc(strlen(rpc_user) + strlen(rpc_pass) + 2); + if (!rpc_userpass) + return 1; + sprintf(rpc_userpass, "%s:%s", rpc_user, rpc_pass); + } + pthread_mutex_init(&time_lock, NULL); #ifdef HAVE_SYSLOG_H