12

NOTE: How to use basic authorization in PHP curl Does not work for me.

Trying to Curl into Electrum, but it looks like my access is denied. Electrum is on the same server as the php script. I have purposefully left out any command for the wallet for simplification purpose. Focusing on connecting first.

When trying to CURL in terminal

curl --data-binary '{"id":"curltext","method":"addrequest","params":{"amount":"3.14","memo":"test"}}' http://user:[email protected]:7777 

Error Message

curl: (7) Failed to connect to 127.0.0.1 port 7777: Connection refused 

EDIT: The above CURL Command in Terminal now works

PHP

$password = 'root'; $username = 'password'; $URL='http://127.0.0.1'; //Curl into own machine local ip is needed. $port = 7777; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$URL); curl_setopt($ch, CURLOPT_PORT, $port); curl_setopt($ch, CURLOPT_USERPWD, "$username:$password"); $result=curl_exec($ch); if (curl_errno($ch)) { echo 'Error:' . curl_error($ch); } $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close ($ch); echo "<br>"; var_dump($result); echo "<br>"; var_dump($status_code); 

Below is my error

Error:

bool(false)

int(0)

Below are my netstats. Port is open and listening.

Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:7777 0.0.0.0:* LISTEN tcp6 0 0 :::22 :::* LISTEN tcp6 0 0 :::80 :::* LISTEN 

PHP7, PHP-CURL & CURL are installed on linux Fedora 27. Webserver type Apache 2.4 Electrum 3.1.2

curl -v 127.0.0.1 7777 

Returns:

Rebuilt URL to: 127.0.0.1/ * Trying 127.0.0.1... * TCP_NODELAY set * Connected to 127.0.0.1 (127.0.0.1) port 80 (#0) > GET / HTTP/1.1 > Host: 127.0.0.1 > User-Agent: curl/7.55.1 > Accept: */* > < HTTP/1.1 200 OK < Date: Wed, 04 Apr 2018 18:22:14 GMT < Server: Apache/2.4.29 (Fedora) < X-Powered-By: PHP/7.1.15 < Transfer-Encoding: chunked < Content-Type: text/html; charset=UTF-8 < /*index.php code*/ * Connection #0 to host 127.0.0.1 left intact * Rebuilt URL to: 7777/ * Trying 0.0.30.97... * TCP_NODELAY set * Immediate connect fail for 0.0.30.97: Invalid argument * Closing connection 1 curl: (7) Couldn't connect to server 
14
  • Try enabling curl verbose output and see if that gives you a clue: curl_setopt($ch, CURLOPT_VERBOSE, true); Commented Apr 4, 2018 at 13:50
  • 1
    Leave PHP aside for now, can you get it to work with curl command line? Commented Apr 4, 2018 at 15:28
  • 2
    looks to me like Electrum was designed by idiots - the api doesn't support encryption, listens to connections from anywhere (not only 127.0.0.1), and uses HTTP Basic Auth, meaning the username/password is sent in plain text on every api request, for any hacker listening in on the network (Wireshark?), a horribly insecure setup... Commented Apr 6, 2018 at 5:38
  • 1
    You have password and username switched around. $password = 'root'; Shouldn't the user name be root? This might just be a typo because you removed the sensitive data, but if you have them mixed up, this might explain your problem :-) Commented Apr 10, 2018 at 23:57
  • 1
    What does curl -v 127.0.0.1:7777 output? The current variant (with a space) is useless Commented Apr 11, 2018 at 13:48

1 Answer 1

0

You need another curl option set:

curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 

So the final sequence would be:

$password = 'root'; $username = 'password'; $URL='http://127.0.0.1'; //Curl into own machine local ip is needed. $port = 7777; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$URL); curl_setopt($ch, CURLOPT_PORT, $port); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($ch, CURLOPT_USERPWD, "$username:$password"); $result=curl_exec($ch); if (curl_errno($ch)) { echo 'Error:' . curl_error($ch); } $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close ($ch); echo "<br>"; var_dump($result); echo "<br>"; var_dump($status_code); 
Sign up to request clarification or add additional context in comments.

1 Comment

Howdy, have tried this and CURLAUTH_ANY, no success

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.