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) — headershost,date,(request-target),x-content-sha256,content-type,content-length, RSA-SHA256 via OpenSSL eAuthorization: Signature version="1",keyId=tenancy/user/fingerprint— para os serviçosobjectstorage,computeemonitoring. - Perfis OCI:
get_oci_profiles()faz merge desettings('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 comapproximateSize/approximateCount(parâmetrofields) — stats por bucket direto no painel. - Objetos:
oci_cloud_bucket_objects()lista objetos comprefix/delimiter(limit 1000, fieldsname,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 emuploads/tmp/oci_chunkse 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 completahttps://objectstorage.{region}.oraclecloud.com{access-uri}. - Gestão de objetos/pastas:
oci_cloud_object_rename()(POSTactions/renameObject),oci_cloud_object_delete(),oci_cloud_folder_create()(PUT objeto vazio terminado em/),oci_cloud_folder_delete()(lista e exclui por prefixo) eoci_cloud_bucket_stats(). - Busca e zip:
oci_cloud_global_search()(LIKE case-insensitive no nome, limit 1000) eoci_cloud_bulk_zip()(ZipArchive + streaming — baixa objetos, monta ZIP emuploads/tmpe 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) eoci_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, AlpineociModule()) — refresh, explorer, upload chunked, PAR, preview, busca e zip; açãooci_cloud_profiles_statusregistrada viaPluginManager::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/confige 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.jsonsem jobs ("plugin sob demanda");cors.phpregistra 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.phpusavaoci_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.
live feed
abrir issues no githubcarregando andamento...
não foi possivel carregar as issues agora. abra no github pelo link acima.
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
- PHP 8
- MySQL 8
- Alpine.js
- Tailwind CSS
- OCI REST API
- ZipArchive
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.