Imagem de capa do projeto: NEXUS OCI Cloud Storage EM ANDAMENTO

Resumo técnico

Plugin NEXUS que integra o Oracle Cloud Infrastructure Object Storage via REST API autenticada por assinatura RSA-SHA256: navega buckets e objetos, faz upload/download com streaming, gera links PAR (Pre-Authenticated Requests), busca global e zip em massa — tudo pelo painel, sem depender da CLI OCI.

Escopo executado

  • REST nativa sem shell: oci_rest_call() implementa a assinatura OCI (RFC 2617 / draft-cavage-http-signatures) — headers host, date, (request-target), x-content-sha256, content-type, content-length, RSA-SHA256 via OpenSSL e Authorization: Signature version="1",keyId=tenancy/user/fingerprint — para os serviços objectstorage, compute e monitoring.
  • Perfis OCI: get_oci_profiles() faz merge de settings('oci.profiles') com as tenancies reais lidas do arquivo físico ~/.oci/config (config_path configurável); oci_parse_config_profiles() interpreta o INI; prioridade tenancy do config > compartment_id das settings; perfil sem tenancy é ignorado.
  • Buckets: oci_cloud_buckets_list() obtém o namespace por perfil (GET /n/), lista buckets por compartimento e enriquece com approximateSize/approximateCount (parâmetro fields) — stats por bucket direto no painel.
  • Objetos: oci_cloud_bucket_objects() lista objetos com prefix/delimiter (limit 1000, fields name,size,etag,timeCreated,md5); oci_encode_path() codifica nomes preservando / de subpastas.
  • Download: oci_cloud_object_stream() repassa o streaming direto da OCI (CURLOPT_WRITEFUNCTION) com Content-Type/Content-Length/Range (suporte a vídeos e downloads parciais), fallback de MIME por extensão e Content-Disposition inline/attachment.
  • Upload: oci_cloud_object_save_contents() (PUT texto), oci_cloud_object_put() (PUT binário com SHA256 calculado em chunks de 64KB, streaming via CURLOPT_INFILE, timeout 600s) e chunked upload (oci_cloud_chunk_save/oci_cloud_chunks_assemble/oci_cloud_chunks_cleanup) — partes salvas em uploads/tmp/oci_chunks e montadas antes do PUT final.
  • PAR links: oci_cloud_par_create() gera Pre-Authenticated Requests (ObjectRead/ObjectWrite, expiração configurável; a action usa ObjectRead +2h) — a API devolve a URL completa https://objectstorage.{region}.oraclecloud.com{access-uri}.
  • Gestão de objetos/pastas: oci_cloud_object_rename() (POST actions/renameObject), oci_cloud_object_delete(), oci_cloud_folder_create() (PUT objeto vazio terminado em /), oci_cloud_folder_delete() (lista e exclui por prefixo) e oci_cloud_bucket_stats().
  • Busca e zip: oci_cloud_global_search() (LIKE case-insensitive no nome, limit 1000) e oci_cloud_bulk_zip() (ZipArchive + streaming — baixa objetos, monta ZIP em uploads/tmp e envia com Content-Disposition).
  • Compute/monitoring (satélites): oci_cloud_instances_list() (instâncias + VNIC public IP), oci_cloud_instance_action() (START/STOP/RESET/SOFTRESET/SOFTSTOP) e oci_cloud_instance_metrics() (CpuUtilization/MemoryUtilization via monitoring, cache 5min em /tmp) — alimentam a coluna "Active Satellites" da aba.
  • UI: tab "OCI Infrastructure" (tab.php) — Satellites (cards com status/IP/CPU-RAM sparklines e ações SOFTRESET/STOP/SSH/logs/purge/test AI/delete) + Bucket Management (cards com namespace, contagem e tamanho, "Abrir Explorer"); modais "Configurar OCI Storage" (perfis + credenciais com private_key mascarada), explorer (breadcrumbs, grid/list, seleção múltipla, upload/download/rename/delete/PAR/busca/zip e paginação) e preview (edição inline de texto, fullscreen, download).
  • Frontend: assets/oci-v2.js (1384 linhas, Alpine ociModule()) — refresh, explorer, upload chunked, PAR, preview, busca e zip; ação oci_cloud_profiles_status registrada via PluginManager::registerApiAction (id/label/region dos perfis) + comando Fastr /oci-cloud.
  • Config no core: settings.php — oci.config_path, user_ocid, fingerprint, private_key (mascarada no save), profiles[]; auto-geração do arquivo ~/.oci/config e da chave PEM (chmod 0600) quando credenciais são salvas; migração automática do formato single-profile → multi-profile.
  • Sem install.sql/update.sql (config em admin_configs/system_settings); cronjob.json sem jobs ("plugin sob demanda"); cors.php registra o proxy OCI (métodos POST/GET/OPTIONS, headers Content-Type/Authorization).
  • Plugin não-core (is_core: false), categoria Cloud, versão 1.0.0, autor Percio Andrade.

Stack e ferramentas

  • PHP 8 (sem framework) + OpenSSL (assinatura RSA-SHA256)
  • OCI REST API — objectstorage, compute e monitoring (sem shell)
  • MySQL 8 (config em admin_configs/system_settings)
  • Alpine.js + Tailwind CSS (premium light, azul)
  • ZipArchive (PHP) para zip em massa

Tags operacionais

  • OCI
  • Oracle Cloud
  • Object Storage
  • PAR
  • Cloud Storage
  • Plugin NEXUS

Resultado operacional

  • Painel único para Object Storage multi-perfil/multi-região (ex.: SP sa-saopaulo-1, CA ca-montreal-1) sem depender da OCI CLI: buckets com stats, navegação, upload/download e PAR links com expiração.
  • Assinatura REST nativa (Signature v1 RSA-SHA256) substitui a execução de CLI em runtime — a versão antiga oci_cloud.php usava oci_cli_exec().
  • Download direto com suporte a Range (vídeos/parciais), MIME correto e Content-Disposition adequado; upload chunked para arquivos grandes com limite de 10 minutos.
  • Segurança: credenciais nunca expostas na UI (private_key mascarada no save), chave PEM com permissão 0600, perfis sem tenancy ignorados e whitelist de ações de power no compute.
  • Compute/monitoring embutidos dão visão dos satélites (IP público, sparklines de CPU/RAM) e ações de power com fallback via satélite quando o IAM bloqueia.

Andamento no GitHub (issues)

Painel em tempo real com as issues mais recentes do repositório.

abertas (amostra): -- fechadas (amostra): -- base: -- ultimas issues

carregando andamento...

Resultados reais

Plugin NEXUS que integra o Oracle Cloud Infrastructure Object Storage via REST API autenticada por assinatura RSA-SHA256: navega buckets e objetos, faz upload/download com streaming, gera links PAR, busca global e zip em massa — sem depender da CLI OCI.

Arquitetura e organização

Execução e operação

O projeto segue fluxo reprodutível de execução com validação técnica em ambiente de produção/similar.

Screenshots

Falar sobre este projeto

Aplique este modelo no seu ambiente e acelere a entrega com consistência técnica.