Skip to content

Repository files navigation

🗂️ Sistema de Arquivos - Interface Web

Um sistema de arquivos simulado completo em C com interface web moderna, responsiva e intuitiva.

✨ Características

  • 🖥️ Interface Web Moderna: Interface HTML/CSS/JavaScript responsiva com design profissional
  • 🔧 Operações Completas: Criar, ler, deletar, mover, renomear arquivos e diretórios
  • 🚀 Alta Performance: Sistema multi-threaded para múltiplas conexões simultâneas
  • 🌐 Servidor HTTP: API REST completa com comunicação JSON
  • 🛡️ Robusto: Validação de entrada e tratamento de erros abrangente
  • 📊 Metadados Completos: Timestamps, permissões, tamanhos e inodes
  • 🎨 UX/UI Excelente: Animações, feedback visual e design responsivo
  • 🚫 Sem CLI: Interface CLI removida - use apenas a interface web

🚀 Início Rápido

1. Compilar o sistema

make clean  # Limpa compilações anteriores
make        # Compila todo o sistema

2. Executar servidor web

./web_server_reorganized

A interface estará disponível em: http://localhost:8080

3. Verificar instalação

./main_reorganized

Mostra informações sobre como usar o sistema.

4. Testar funcionalidades

Acesse a interface web e teste todos os comandos, ou use curl:

# Criar diretório
curl -X POST -H "Content-Type: application/json" \
  -d '{"command": "create_dir", "args": ["/teste"]}' \
  http://localhost:8080/command

# Listar conteúdo
curl -X POST -H "Content-Type: application/json" \
  -d '{"command": "list", "args": ["/"]}' \
  http://localhost:8080/command

📋 Comandos Disponíveis

Make

  • make all - Compila ambos os programas
  • make web_server_reorganized - Compila apenas o servidor web
  • make main_reorganized - Compila apenas o programa informativo
  • make clean - Limpa arquivos compilados
  • make test - Testa o servidor web
  • make docs - Mostra documentação da estrutura

Executáveis

  • ./web_server_reorganized - Inicia o servidor web na porta 8080
  • ./main_reorganized - Mostra informações sobre o sistema

🎯 Funcionalidades do Sistema

📄 Gerenciamento de Arquivos

  • Criar arquivo: Cria novos arquivos no sistema (com ou sem conteúdo de arquivo fonte)
  • Ler arquivo: Visualiza o conteúdo dos arquivos (exibido no console do servidor)
  • Deletar arquivo: Remove arquivos do sistema com confirmação

📁 Gerenciamento de Diretórios

  • Criar diretório: Cria novos diretórios e subdiretórios
  • Listar conteúdo: Mostra arquivos e subdiretórios com metadados completos
    • Index nodes (inodes)
    • Timestamps (criação, modificação, acesso)
    • Permissões (777 para diretórios, 644 para arquivos)
    • Tamanhos dos arquivos
  • Deletar diretório: Remove diretórios (vazios ou com conteúdo)

🔧 Operações Avançadas

  • Renomear: Altera nomes de arquivos/diretórios
  • Mover: Move arquivos/diretórios entre locais diferentes
  • Validação: Sistema robusto de validação de entrada e tratamento de erros
  • Multi-threading: Suporte a múltiplas operações simultâneas

💡 Como Usar a Interface Web

  1. Acesse http://localhost:8080 após executar ./web_server_reorganized
  2. Use os formulários no painel esquerdo para executar comandos
  3. Visualize resultados no painel direito (detalhes no console do servidor)
  4. Consulte a ajuda clicando no botão "Ajuda"
  5. Pressione Enter nos campos de texto para executar rapidamente

🌟 Funcionalidades da Interface

  • Design Responsivo: Funciona em desktop, tablet e mobile
  • Feedback Visual: Animações e cores para indicar status
  • Validação em Tempo Real: Verificação de campos obrigatórios
  • Loading States: Indicadores visuais durante operações
  • Modal de Ajuda: Documentação integrada e acessível

Exemplos de Caminhos

  • / - Diretório raiz
  • /pasta - Pasta na raiz
  • /pasta/arquivo.txt - Arquivo dentro de uma pasta
  • /pasta/subpasta - Subpasta
  • /projeto/src/main.c - Estrutura de projeto complexa

⚙️ Configuração Avançada

Personalizar tamanhos

make run STORAGE_BLOCK_SIZE_IN_KB=2 FILESYSTEM_PARTITION_SIZE_IN_MB=20

Parâmetros disponíveis

  • STORAGE_BLOCK_SIZE_IN_KB: 1-4 KB (padrão: 4)
  • FILESYSTEM_PARTITION_SIZE_IN_MB: 10-100 MB (padrão: 10)

📁 Estrutura do Projeto

├── src/                          # Código fonte modularizado
│   ├── main_reorganized.c        # Programa informativo 
│   ├── web_server_reorganized.c  # Servidor web HTTP multi-threaded
│   ├── filesystem/               # Core do sistema de arquivos
│   │   └── partition_core.[c|h]  # Gerenciamento de partições
│   ├── storage/                  # Camada de armazenamento
│   │   ├── inode_core.[c|h]      # Sistema de inodes e metadados
│   │   └── block_storage.[c|h]   # Gerenciamento de blocos de dados
│   ├── directory/                # Operações de diretório
│   │   ├── directory_entry.[c|h] # Entradas de diretório
│   │   └── directory_operations.[c|h] # Operações de diretório
│   └── operations/               # Operações de arquivos
│       └── file_operations.[c|h] # Criar, ler, modificar arquivos
├── web/                         # Interface web moderna
│   ├── index.html               # Página principal responsiva
│   ├── style.css                # Estilos modernos com animações
│   └── script.js                # Lógica JavaScript com API REST
├── Makefile                     # Sistema de build automatizado
├── main_reorganized             # Executável informativo
├── web_server_reorganized       # Executável do servidor web
├── test_web.html               # Página de testes da API
└── README.md                   # Esta documentação

🔧 Dependências

  • GCC: Compilador C
  • Make: Sistema de build
  • pthread: Para threading (servidor web)
  • Navegador Web: Para interface (qualquer navegador moderno)

Instalação no Ubuntu/Debian

sudo apt update
sudo apt install build-essential

Instalação no CentOS/RHEL

sudo yum groupinstall 'Development Tools'

🚨 Solução de Problemas

Porta 8080 em uso

Se a porta estiver ocupada, o servidor mostrará erro. Solução:

sudo lsof -i :8080        # Ver processo usando a porta
kill -9 <PID>             # Matar processo se necessário
# ou
sudo fuser -k 8080/tcp    # Alternativa para matar processo

Problemas de compilação

make clean                # Limpa objetos antigos
make                      # Recompila tudo

Permissões de execução

chmod +x web_server_reorganized
chmod +x main_reorganized

Verificar status do servidor

# Testar se o servidor responde
curl http://localhost:8080

# Verificar logs em tempo real
./web_server_reorganized   # Console mostra todas as operações

Troubleshooting da Interface

  • Interface não carrega: Verifique se o servidor está rodando
  • Comandos não funcionam: Verifique console do navegador (F12)
  • Respostas lentas: Normal para operações complexas
  • Erro 404: Certifique-se de acessar http://localhost:8080

📸 Demonstração e Testes

🧪 Testes Automatizados via API

# Teste completo das funcionalidades
cd /home/mat/workspace/TP02_SO_Sistema_de_Arquivos

# Criar estrutura de teste
curl -X POST -H "Content-Type: application/json" \
  -d '{"command": "create_dir", "args": ["/projeto"]}' \
  http://localhost:8080/command

curl -X POST -H "Content-Type: application/json" \
  -d '{"command": "create_file", "args": ["/projeto/README.md"]}' \
  http://localhost:8080/command

# Listar estrutura
curl -X POST -H "Content-Type: application/json" \
  -d '{"command": "list", "args": ["/projeto"]}' \
  http://localhost:8080/command

🎨 Características da Interface Web

  • Design Moderno: Gradientes, sombras e animações suaves
  • Responsivo: Compatível com dispositivos móveis e desktop
  • Feedback Imediato: Indicadores visuais para loading e resultados
  • Acessibilidade: Navegação por teclado e modal de ajuda
  • Performance: Interface rápida com comunicação assíncrona

⚡ Performance do Sistema

  • Multi-threading: Suporte a conexões simultâneas
  • Memória Eficiente: Gestão otimizada de recursos
  • Sistema de Inodes: Metadados completos e organizados
  • Validação Robusta: Tratamento abrangente de erros

🔌 API Reference

Endpoint Principal

POST http://localhost:8080/command
Content-Type: application/json

Formato da Requisição

{
  "command": "nome_do_comando",
  "args": ["argumento1", "argumento2"]
}

Comandos Disponíveis

Comando Argumentos Descrição Exemplo
create_dir [caminho] Cria diretório ["/nova_pasta"]
create_file [destino, fonte?] Cria arquivo ["/arquivo.txt", "/tmp/fonte.txt"]
list [caminho] Lista conteúdo ["/"]
read_file [caminho] Lê arquivo ["/arquivo.txt"]
rename [atual, novo] Renomeia item ["/old.txt", "new.txt"]
move [origem, destino] Move item ["/file.txt", "/pasta/"]
delete [caminho] Deleta item ["/arquivo.txt"]

Resposta da API

{
  "success": true,
  "output": "✅ Operação realizada com sucesso"
}

🤝 Contribuindo

Este é um projeto acadêmico. Para melhorias:

  1. Fork o projeto
  2. Crie uma branch (git checkout -b feature/nova-funcionalidade)
  3. Commit suas mudanças (git commit -am 'Adiciona nova funcionalidade')
  4. Push para a branch (git push origin feature/nova-funcionalidade)
  5. Abra um Pull Request

📄 Licença

Este projeto é para fins educacionais.


🎓 Projeto Acadêmico - Sistema Operacional
Sistema de Arquivos Simulado com Interface Web

🏆 Características Implementadas

  • Sistema de Arquivos Completo: Inodes, blocos, metadados
  • Interface Web Profissional: Design moderno e responsivo
  • API REST Robusta: Comunicação JSON com validação
  • Multi-threading: Servidor HTTP com suporte a múltiplas conexões
  • Operações Completas: Todas as funcionalidades de um sistema de arquivos
  • Tratamento de Erros: Validação abrangente e mensagens informativas
  • Documentação Completa: README detalhado e ajuda integrada

📊 Status do Projeto

CONCLUÍDO ✅ - Todas as funcionalidades implementadas e testadas

Desenvolvido como trabalho prático da disciplina de Sistemas Operacionais

About

Practical work on Operating Systems aimed at simulating a complete file system. PT-BR: Trabalho pratico de sistemas Operacionais que visa simular um sistema de arquivos por completo.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages