$id = absint($_GET['id'] ?? 0); check_admin_referer('sa_download_' . $id); global $wpdb; $r = $wpdb->get_row($wpdb->prepare('SELECT * FROM ' . $wpdb->prefix . 'special_auditor_files WHERE id = %d', $id)); if (!$r || !preg_match('/^[a-f0-9]{40}\.pdf$/', $r->stored_name)) wp_die('Documento não encontrado.', '', ['response'=>404]); $dir = sa_storage_status(); if (is_wp_error($dir)) wp_die('Armazenamento indisponível.'); $path = $dir . DIRECTORY_SEPARATOR . $r->stored_name; if (!is_file($path)) wp_die('Documento não encontrado.', '', ['response'=>404]); while (ob_get_level()) ob_end_clean(); nocache_headers(); header('Content-Type: application/pdf'); header('X-Content-Type-Options: nosniff'); header('Content-Disposition: attachment; filename="documento-' . $id . '.pdf"'); header('Content-Length: ' . filesize($path)); readfile($path); exit; }); // Credencial protegida em repouso: AES-256-GCM com chave derivada dos segredos do WordPress. // Se os salts do WordPress forem alterados, será necessário cadastrar a chave novamente. function sa_ai_crypto_key() { if (!function_exists('openssl_encrypt') || !function_exists('openssl_decrypt') || !defined('AUTH_KEY') || !defined('SECURE_AUTH_KEY') || !defined('LOGGED_IN_KEY') || !defined('NONCE_KEY')) return false; return hash('sha256', AUTH_KEY . SECURE_AUTH_KEY . LOGGED_IN_KEY . NONCE_KEY . 'special-auditor-openai-v1', true); } function sa_ai_encrypt($secret) { $key = sa_ai_crypto_key(); if (!$key || !in_array('aes-256-gcm', openssl_get_cipher_methods(), true)) return false; try { $iv = random_bytes(12); } catch (Exception $e) { return false; } $tag = ''; $cipher = openssl_encrypt($secret, 'aes-256-gcm', $key, OPENSSL_RAW_DATA, $iv, $tag); return $cipher === false ? false : base64_encode($iv . $tag . $cipher); } function sa_ai_secret() { $encoded = get_option('sa_ai_secret_v1', ''); if (!is_string($encoded) || $encoded === '') return ''; $raw = base64_decode($encoded, true); $key = sa_ai_crypto_key(); if (!$key || $raw === false || strlen($raw) < 29) return ''; $plain = openssl_decrypt(substr($raw, 28), 'aes-256-gcm', $key, OPENSSL_RAW_DATA, substr($raw, 0, 12), substr($raw, 12, 16)); return $plain === false ? '' : $plain; } function sa_ai_settings_page() { if (!current_user_can('manage_options')) wp_die('Acesso não autorizado.', '', ['response'=>403]); $configured = sa_ai_secret() !== ''; echo '

Special Auditor — Integração OpenAI

'; $notice = isset($_GET['sa_ai_notice']) ? sanitize_key(wp_unslash($_GET['sa_ai_notice'])) : ''; $messages = [ 'saved'=>['updated','Chave salva de forma criptografada.'], 'removed'=>['updated','Chave removida.'], 'invalid'=>['error','Informe uma chave de API válida.'], 'crypto'=>['error','Criptografia AES-256-GCM indisponível no servidor. Nada foi salvo.'], 'ok'=>['updated','Conexão com a API OpenAI confirmada.'], 'failed'=>['error','Não foi possível confirmar a conexão. Verifique a chave, permissões e conectividade do servidor.'] ]; if (isset($messages[$notice])) echo '

' . esc_html($messages[$notice][1]) . '

'; echo '

Status da chave: ' . ($configured ? 'Configurada' : 'Não configurada') . '

'; echo '

A chave não é exibida após o salvamento. Apenas administradores podem alterá-la. A configuração ainda não envia PDFs à OpenAI.

'; echo '
'; echo '' . wp_nonce_field('sa_ai_save', '_sa_ai_nonce', true, false); echo '

'; echo '

'; if ($configured) { echo '
'; echo '' . wp_nonce_field('sa_ai_test', '_sa_ai_nonce', true, false); echo '
'; echo '
'; echo '' . wp_nonce_field('sa_ai_remove', '_sa_ai_nonce', true, false); echo '
'; } echo '

Versão 1.3.0 — Credencial preservada. Extração e auditoria financeira ainda não habilitadas.

'; } function sa_ai_redirect($notice) { wp_safe_redirect(add_query_arg('sa_ai_notice', $notice, admin_url('admin.php?page=special-auditor-ai'))); exit; } add_action('admin_post_sa_ai_save', function () { if (!current_user_can('manage_options')) wp_die('Acesso não autorizado.', '', ['response'=>403]); check_admin_referer('sa_ai_save', '_sa_ai_nonce'); $secret = isset($_POST['sa_ai_key']) && is_string($_POST['sa_ai_key']) ? trim(wp_unslash($_POST['sa_ai_key'])) : ''; if (!preg_match('/^sk-[A-Za-z0-9_-]{16,}$/', $secret) || strlen($secret) > 512) sa_ai_redirect('invalid'); $encrypted = sa_ai_encrypt($secret); if ($encrypted === false) sa_ai_redirect('crypto'); update_option('sa_ai_secret_v1', $encrypted, false); sa_ai_redirect('saved'); }); add_action('admin_post_sa_ai_remove', function () { if (!current_user_can('manage_options')) wp_die('Acesso não autorizado.', '', ['response'=>403]); check_admin_referer('sa_ai_remove', '_sa_ai_nonce'); delete_option('sa_ai_secret_v1'); sa_ai_redirect('removed'); }); add_action('admin_post_sa_ai_test', function () { if (!current_user_can('manage_options')) wp_die('Acesso não autorizado.', '', ['response'=>403]); check_admin_referer('sa_ai_test', '_sa_ai_nonce'); $secret = sa_ai_secret(); if ($secret === '') sa_ai_redirect('failed'); $response = wp_remote_get('https://api.openai.com/v1/models', [ 'timeout'=>20, 'redirection'=>0, 'headers'=>['Authorization'=>'Bearer ' . $secret, 'Accept'=>'application/json'] ]); if (is_wp_error($response)) sa_ai_redirect('failed'); sa_ai_redirect(wp_remote_retrieve_response_code($response) === 200 ? 'ok' : 'failed'); }); Terreno a venda na Vila Carrão. - Special Imóveis

Terreno a venda na Vila Carrão.

Terreno a venda na Vila Carrão , 500 m² com ótima localização à 5 minutos do Shopping Analia Franco. REF. AF25334
Sobre a imobiliária:
A Special Imóveis é especialista em administrar carteira imobiliária, intermediar negociações de compra, venda e locação de imóveis.
Sempre comprometida em realizar as negociações com a máxima segurança jurídica aos clientes.
Conta com um time de profissionais altamente capacitados que poderão auxilia-lo(a) na compra, venda e locação de sua propriedade.
Ligue ou envie um whatsapp e agende hoje uma visita com um de nossos corretores.

Características

Suítes

Banheiros

Vagas

Área útil

Dormitórios

Detalhes da Unidade

Localização aproximada

Simulação de financiamento

Gostou deste imóvel?

Veja uma estimativa de como ele pode caber no seu orçamento. Ajuste a entrada e o prazo para simular diferentes cenários.

Valor do imóvel
Quanto deseja dar de entrada?
20% 80%
Em quanto tempo deseja pagar?
5 anos 35 anos
Valor a financiar
Parcela estimada
Renda familiar estimada
QUERO UMA SIMULAÇÃO PERSONALIZADA

Simulação meramente estimativa e informativa. Valores de parcelas, taxas, seguros, sistema de amortização, capacidade de pagamento e aprovação de crédito podem variar conforme a instituição financeira e o perfil do comprador.

Entre em contato com nossa equipe

Tenho interesse em:

WhatsApp