Expand description
O gerenciador de serviços do Firebird (Service Manager): backup/restore (gbak), estatísticas (gstat), reparos (gfix), gestão de usuários, leitura do log do servidor, etc.
Um anexo de serviço usa o MESMO handshake de uma conexão de banco (connect +
SRP + wire-crypt), mas com a operação op_service_attach (82) e o “arquivo”
especial service_mgr. Em vez de um DPB, o attach carrega um SPB (Service
Parameter Buffer). O fluxo de wire (decodificado de um strace do fbsvcmgr):
op_service_attach(82):op | obj(0) | "service_mgr"(cstring) | spb(cstring). O SPB começa com dois bytesisc_spb_version, isc_spb_current_version(ambos2) e então clumplets:user_name(28), e a autenticação igual ao DPB —auth_plugin_name(116),auth_plugin_list(117),specific_auth_data(111)(a prova SRP). A resposta traz o handle do serviço.op_service_info(84):op | handle | incarnation(0) | send_items(cstring) | recv_items(cstring) | buffer_length(i32). A resposta é umop_responsecujop_resp_dataé um buffer de info clássico (tag | len(2 LE) | valor …terminado porisc_info_end). É usada tanto para consultas (versão do servidor, ambiente) quanto para drenar a saída textual de uma ação.op_service_start(85):op | handle | incarnation(0) | spb(cstring). O primeiro byte do SPB é o código da ação (isc_action_svc_*), seguido de seus argumentos. Dispara a ação; a saída é lida depois viaop_service_info.op_service_detach(83):op | handle.
Codificação do SPB de uma ação (decodificada de straces de
fbsvcmgr action_backup/action_db_stats): difere tanto do SPB de attach
quanto dos DPBs de banco. O primeiro byte é o código da ação; em seguida os
argumentos, onde:
- argumento string (ex.:
isc_spb_dbname106,isc_spb_bkp_file5):tag(1) | comprimento(2, little-endian) | bytes— note o prefixo de 2 bytes, não o de 1 byte dos clumplets de attach; - argumento inteiro (ex.:
isc_spb_bkp_factor6,isc_spb_options108):tag(1) | valor(4, little-endian), sem prefixo de comprimento; - flag isolada (ex.:
isc_spb_verbose107): apenastag(1).
As opções de backup/restore/estatísticas são um bitmask carregado em um único
isc_spb_options (o servidor o lê como máscara de bits).
Structs§
- Service
Manager - Um anexo autenticado ao gerenciador de serviços de um servidor Firebird.
- User
Info - Um usuário do banco de segurança, devolvido por
ServiceManager::display_users/display_user. - User
Params - Parâmetros para criar (
add_user) ou alterar (modify_user) um usuário. Construa comUserParams::newe os métodos encadeáveis; só os campos definidos entram no SPB (emmodify_user, os ausentes ficam intactos).