$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'); }); Prédio comercil no Tatuapé. - Special Imóveis

Prédio comercil no Tatuapé.

Prédio comercial no Tatuapé.
No miolo do bairro para locaçao com 550 metros de área útil mais área de churrasqueira com cabine para elevador, sistema de infraestrutura para ar condicionado, com alto padrão de construção e acabamento. Ótimo para clinica médica. REF. AF15802

Características

Suítes

10

Banheiros

3

Vagas

550 m²

Área útil

Dormitórios

Detalhes da Unidade

Mais informações

Localização aproximada

Entre em contato com nossa equipe

WhatsApp