Line 54: |
Line 54: |
| Edit /boot/config.txt with data from another server, where all works correctly. | | Edit /boot/config.txt with data from another server, where all works correctly. |
| | | |
| + | |
| + | ==How to add http-API2 converter== |
| + | Create folder /home/html/api_v2. |
| + | Put the file (index.php) into the folder. |
| + | Enable API in LTsetup |
| + | Request example: http://192.168.67.154/api_v2/?{"request":"status-get","addr":"395:14","API-KEY":"08283242722612433"} |
| <div class="mw-collapsible mw-collapsed" style="width:400px"> | | <div class="mw-collapsible mw-collapsed" style="width:400px"> |
− | index.php | + | '''index.php''' |
− | <div class="mw-collapsible-content">fsdfsdfgdsfsdfsdf sd f | + | <div class="mw-collapsible-content"> |
− | sdf sdf dsf dsf dsf ds fds
| + | <syntaxhighlight lang="php"> |
− | fdsf df
| + | <?php |
− | sdf
| + | |
− | ds ds d</div>
| + | function api_send($sock, $req) { |
| + | $r = '-JSON-'.$req; |
| + | return fwrite($sock, pack('I', strlen($r)) . $r); |
| + | } |
| + | |
| + | function api_recv($sock) { |
| + | $s = fread($sock, 4); |
| + | $size = unpack("I", $s)[1]; |
| + | $data = fread($sock, $size); |
| + | if (strpos($data, '"error"')) { |
| + | die(substr($data, 7)); |
| + | } |
| + | return substr($data, 7); |
| + | } |
| + | |
| + | $headers = apache_request_headers(); |
| + | if ($_SERVER['REQUEST_METHOD'] === 'POST') { |
| + | $post = file_get_contents('php://input'); |
| + | } else { |
| + | $post = urldecode($_SERVER['QUERY_STRING']); |
| + | } |
| + | |
| + | if (!isset($headers['API-KEY'])) { // API key not found in header, Checking request |
| + | $req = json_decode($post, true); |
| + | if (!isset($req['API-KEY'])) die('No API-KEY provided'); |
| + | $key = $req['API-KEY']; |
| + | unset($req['API-KEY']); |
| + | $post = json_encode($req); |
| + | } else $key = $headers['API-KEY']; |
| + | |
| + | $sock = stream_socket_client('unix:///tmp/sh.socket', $errno, $errst); |
| + | $auth_req = '{"request": "authorize","key": "'.$key.'"}'; |
| + | api_send($sock, $auth_req); |
| + | api_recv($sock); |
| + | api_send($sock, $post); |
| + | echo api_recv($sock); |
| + | fclose($sock); |
| + | </syntaxhighlight> |
| + | </div> |
| </div> | | </div> |