PHP WebShell

Текущая директория: /var/www/bitcardoApp/backyard/models/rates

Просмотр файла: rates_post.php

<?php
// backyard/models/rates/rates_post.php
declare(strict_types=1);
header('Content-Type: application/json; charset=utf-8');
ob_start(); ini_set('display_errors','0'); error_reporting(E_ALL);

function out($data, int $code=200){
  http_response_code($code);
  $buf = ob_get_clean();
  if ($buf) $data['_diag'] = substr($buf,0,500);
  echo json_encode($data);
  exit;
}

try{
  if($_SERVER['REQUEST_METHOD'] !== 'POST') out(['success'=>false,'message'=>'Method not allowed'],405);

  $db = __DIR__ . '/../../config/db_config.php';
  if(!file_exists($db)) out(['success'=>false,'message'=>'DB config missing'],500);
  include_once $db;
  if(!isset($conn) || !($conn instanceof mysqli)) out(['success'=>false,'message'=>'DB conn missing'],500);

  require_once __DIR__ . '/rates.php';

  $raw = file_get_contents('php://input');
  $payload = json_decode($raw,true);
  if(!is_array($payload)) $payload = $_POST;

  $action = trim((string)($payload['action'] ?? ''));

  switch($action){

    // ------- coin rates -------
    case 'coin.upsert': {
      $id   = isset($payload['id']) ? (int)$payload['id'] : null;
      $coin = (string)($payload['coin'] ?? '');
      $buy  = isset($payload['buy_rate']) ? (float)$payload['buy_rate'] : null;
      $sell = isset($payload['sell_rate']) ? (float)$payload['sell_rate'] : null;
      $use  = (int)($payload['use_online_rate'] ?? 0);
      $auto = (int)($payload['auto_update'] ?? 0);
      $st   = (int)($payload['status'] ?? 1);
      if ($coin==='') out(['success'=>false,'message'=>'Coin is required'],422);
      $res = rr_coin_rate_upsert($conn, $id, $coin, $buy, $sell, $use, $auto, $st);
      out(['success'=>$res['ok']?true:false,'id'=>$res['id']]);
    }

    case 'coin.toggle': {
      $id = (int)($payload['id'] ?? 0);
      if ($id<=0) out(['success'=>false,'message'=>'Invalid id'],422);
      $fields = [];
      foreach (['use_online_rate','auto_update','status'] as $k) {
        if (array_key_exists($k,$payload)) $fields[$k] = (int)$payload[$k];
      }
      if (!$fields) out(['success'=>false,'message'=>'No toggle field provided'],422);
      $ok = rr_coin_rate_toggle($conn, $id, $fields);
      out(['success'=>$ok?true:false]);
    }

    // ------- withdraw fees -------
    case 'fee.upsert': {
      $id   = isset($payload['id']) ? (int)$payload['id'] : null;
      $coin = (string)($payload['coin'] ?? '');
      $fee  = isset($payload['fee_flat']) ? (float)$payload['fee_flat'] : null;
      $st   = (int)($payload['status'] ?? 1);
      if ($coin==='') out(['success'=>false,'message'=>'Coin is required'],422);
      $res = rr_withdraw_fee_upsert($conn, $id, $coin, $fee, $st);
      out(['success'=>$res['ok']?true:false,'id'=>$res['id']]);
    }

    case 'fee.toggle': {
      $id = (int)($payload['id'] ?? 0);
      $st = (int)($payload['status'] ?? 0);
      if ($id<=0) out(['success'=>false,'message'=>'Invalid id'],422);
      $ok = rr_withdraw_fee_toggle($conn, $id, $st);
      out(['success'=>$ok?true:false]);
    }

    case 'fee.delete': {
      $id = (int)($payload['id'] ?? 0);
      if ($id<=0) out(['success'=>false,'message'=>'Invalid id'],422);
      $ok = rr_withdraw_fee_delete($conn, $id);
      out(['success'=>$ok?true:false]);
    }
  }

  out(['success'=>false,'message'=>'Unknown action'],400);

}catch(Throwable $e){
  out(['success'=>false,'message'=>'Server error','_err'=>$e->getMessage()],500);
}

Выполнить команду


Для локальной разработки. Не используйте в интернете!