Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Na API de ficheiros do MIP SDK, a mip::FileHandler::GetFileStatus() função estática permite ao programador obter o estado de um ficheiro sem necessidade de criar um Objeto do Motor de Ficheiros, autenticação e até conectividade.
Tudo o que é necessário é o nome do ficheiro e a criação do mipContext, juntamente com o caminho do ficheiro e o fluxo.
Tipos de ficheiros suportados
- Formatos de ficheiro Office baseados no OCP (Office 2010 e posteriores)
- Formatos de ficheiro de escritório legados (Office 2007)
- Suporte genérico para PFILE
- Ficheiros que suportam Adobe XMP
- E-mail - formato .MSG
Função GetFileStatus()
mip::FileHandler::GetFileStatus() permite ao programador obter o estado de um ficheiro. Para a lista completa, consulte a referência da API.
Neste artigo, serão abordados os seguintes métodos:
-
mip::FileHandler::GetFileStatus()Função estática - Objeto FileStatus contendo detalhes de rotulagem e/ou proteção de um ficheiro ou contentor
-
IsProtected()Propriedade -
IsLabeled()Propriedade -
ContainsProtectedObject()Propriedade
Requisitos
Criar um FileHandler para trabalhar com um arquivo específico requer:
- Uma
mipContext - Não é necessária criação de motor de ficheiros
Obter o estado de um ficheiro
Para usar a função estática mip::FileHandler::GetFileStatus(), o desenvolvedor terá de fornecer um caminho de ficheiro ou um fluxo de ficheiro e o mipContext para executar a função. Executar esta função não requer a criação de um motor de ficheiros, autenticação ou ligação à internet.
Esta função é especialmente útil para:
- Obter o estado de proteção de um ficheiro para cenários de desencriptação antes de criar um motor. Conhecer o estado de proteção antecipadamente pode permitir ao programador evitar a sobrecarga de criar um motor se o ficheiro já estiver protegido
- Obter o estado de um ficheiro que pode já ter uma etiqueta antes de criar um motor para tentar ler a etiqueta (poupança de tempo)
- Obter o estado de um ficheiro MSG que tem anexos e que pode precisar de ser analisado ou desencriptado juntamente com o próprio ficheiro MSG
O/A GetFileStatus() devolve um fileStatus objeto com as seguintes propriedades:
-
IsProtected()Propriedade - devolve um bool - O ficheiro está protegido/encriptado -
IsLabeled()Propriedade - devolve um valor booleano - O ficheiro tem uma etiqueta -
ContainsProtectedObject()Propriedade - devolve um bool - O Ficheiro/Container/Mensagem contém objeto protegido.
A recomendação é que as três propriedades sejam interrogadas, pois um ficheiro pode ter de zero a todas as três propriedades e permutações intermédias.
Além disso, como a GetFileStatus() função não requer autenticação, nem um motor para executar, os IsProtected()métodos , IsLabeled(), e ContainsProtectedObject() refletem se está presente rotulagem ou proteção num ficheiro. Não valida se a rotulagem e/ou proteção existe dentro de um tenant ou se é utilizável por um utilizador. A validação do rótulo e/ou da proteção exigiria seguir o processo de autenticação e criação do mecanismo.
if (options.count("getfilestatus")) {
auto fileStatus = GetFileStatus(filePath, fileStream, mipContext);
if (fileStatus->IsProtected()) {
cout << "File is protected" << endl;
}
if (fileStatus->IsLabeled()) {
cout << "File is labeled" << endl;
}
if (fileStatus->ContainsProtectedObjects()) {
cout << "File contains protected objects" << endl;
}
GetLabel(fileHandler);
return EXIT_SUCCESS;
}
if (options.GetFileStatus) {
var fileStatus = FileHandler.GetFileStatus(options.FilePath, mipContext);
if (fileStatus.IsProtected()) {
Console.WriteLine("The file is protected.");
}
if (fileStatus.IsLabeled()) {
Console.WriteLine("The file is labeled.");
}
if (fileStatus.ContainsProtectedObjects()) {
Console.WriteLine("The file contains protected objects.");
}
return true;
}
if (options.count("getfilestatus")) {
auto fileStatus = GetFileStatus(filePath, fileStream, mipContext);
if (fileStatus->IsProtected()) {
cout << "File is protected" << endl;
}
if (fileStatus->IsLabeled()) {
cout << "File is labeled" << endl;
}
if (fileStatus->ContainsProtectedObjects()) {
cout << "File contains protected objects" << endl;
}
GetLabel(fileHandler);
return EXIT_SUCCESS;
}