20
setembro 2015
Sistema Shelf - Upload E Navegação De Arquivos.
Escrito por Mario Medeiros não comentários
Documentos, imagens, pacotes zipz, pacotes tar.gz scripts em shell entre vários outros tipos e formatos de arquivos.
Temos esses arquivos guardados em HD, pendrives e outras mídias. Tudo vai bem, tudo tranquilo, até você querer pegar um desses arquivos, por exemplo, um artigo em pdf que você achou super legal num site e baixou uns dias atrás. Baixou e gravou onde? Se lembra? Se sim, então tudo bem. Mas e se não se lembrar?
Agora a coisa começa a ficar mais interessante. Ter que procurar o arquivo em sei lá quantos diretórios e talvez em outras mídias removíveis, como os famigerados pendrives.
Que tal melhora um pouco essa organização para busca e localização de seus arquivos?
A idéia aqui é fornecer uma ferramenta simples, rápida e prática de upload (subir, carregar) de arquivos e posterior navegação nos diretórios onde esses arquivos ficarão armazenados.
Vou colocar abaixo uma cópia do arquivo leiame.txt que se encontra no pacote do sistema. Creio que assim, fique mais fácil de se entender a idéia.
O sistema utiliza Linux, Apache, PHP e Shell Script. Pode parecer um sistema complexo, mas é bem simples no final. É um projeto pessoal para organização de arquivos. Não pretende ser algo tão robusto como um Owncloud (owncloud.org) por exemplo. Mas atende uma necessidade básica e pessoal.
Para baixar o pacote do sistema Shelf clique aqui
Segue o texto do arquivo leiame.txt.
#####################################
Este sistema é um sistema simples de navegação e upload de arquivos.
Usa como base php, html, css, ajax, json, shell script.
Este sistema não foi desenhado com a função de apagar os arquivos, mas pode ser implementado futuramente, ou por quem achar necessário ter essa função.
Portanto, os arquivos que necessite remover, deverão ser removidos manualmente. Não pelo sistema.
Como todo sistema, pode ser melhorado.
Uma mistura de vários códigos e templates.
Lembrando, que é simplesmente um projeto pessoal. Nada além disso.
Pode ser modificado para atender necessidades maiores.
Abaixo algumas instruções e referências sobre os arquivos e mecanismos utilizados.
A utilização requer um servidor web com apache e php, bem como permissões para rodar shell scripts.
Não é escopo deste documento, descrever instalação do webserver com suporte a php.
Para iniciar deve-se descompactar o arquivo shelf.tar.gz num diretório legivel pelo webserver.
Dar as permissões necessárias e testar.
O sistema é totalmente personalizável.
Pode-se alterar usuarios, tipos de arquivos entre outras coisas. Só é preciso ler um pouco os códigos e por a mão na massa.
Eu peguei os templates e modelos bem básicos e os alterei conforme eu quis, para resolver minha necessidade.
Utilizei o layout básico para montar da forma que me atende. Altere conforme for de sua necessidade ou gosto.
Não existe uma forma única de se utilizar.
Se quiser, altere so arquivos para personalizar o sistema.
Eles serão listados abaixo:
Arquivo index.html da página inicial.
Arquivo inicial do sistema. Aqui estão listados os usuários.
Por padrão estão registrados 03 (três) usuários, que podem ser alterados logins e nomes.
Pode ser alterado também quantos usuários serão adicionados ou removidos.
A lógica desse sistema, foi separar os usuários em suas respectivas pastas/diretórios.
Além de poder separar por usuários, pode-se também, separar por tipos de arquivos para seus usuários.
Por exemplo: você quer que um tipo de usuário possa trabalhar somente com documentos (docs, xls, odt, pdf) enquanto outro usuário pode utilizar qualquer tipo de arquivo.
É somente uma das possibilidades.
Existem diretórios separados para cada usuário do sistema.
Criei tres usuarios - usuario1, usuario2 e usuario3. Mas pode alterar para outros nomes.
Existe também para cada área de usuario, um login admin, mas não tem poderes especiais de admininistrador.
Este já existia no arquivo login.php original. Eu só não o retirei. Só isso.
Existem em todos os usuários, mas pode ser retirado de acordo com sua organização ou necessidade.
Usuário: admin
Senha: 010203
Portanto o usuario1 tem como diretório, obviamente, usuario1.
Neste diretóro estão todos arquivos do sistema que faz o upload, movimentação e a navegação dos arquivos.
Na página inicial, após clicar no usuário desejado (por padrão adicionei 3 usuarios, que são, usuario1, usuario2 e usuario3), o sistema redireciona para página de login.
Coloque o usuario e senha.
Está registrado da seguinte forma
Usuario: usuario1
Senha: usuario1
E assim por diante, para cada usuario.
Para alterar isso, acesse o arquivo login.php que se encontra dentro do diretório do usuário que deseja fazer login.
Eu não utilizei nenhum banco de dados, por se tratar de algo mais simples.
Lembrando, que se quiser utilizar um mecanismo de login por banco de dados, é perfeitamente possível.
E também bem mais seguro. Mas estamos falando de um sistema simples para uso pessoal, nada de mais.
Deixei o sistema com o básico de session em php. Assim, mesmo sabendo qual o caminho dos diretórios, se não estiver logado, não será possivel ter acesso aos arquivos.
Uma forma simples de segurança de acesso. Bem básica mesmo.
O arquivo que trata dos tipos de arquivos que serão adicionados (o upload) é o upload/upload.php.
Também dentro do diretório de cada usuário.
Este arquivo possui as extensões de arquivos permitidos para upload e o local onde o php irá colocar temporariamente os arquivos antes de serem movidos às suas respectivas pastas. Pode ser alterado o local e os tipos de arquivos que subirão para o servidor.
O script que fará a movimentação dos arquivos que subiram, para as suas respectivas pastas é o "movendo" que está em upload/uploads.
Ele é chamado pelo arquivo em php upload/uploads/mover.php
Utilizei shell script para fazer a manipulação dos arquivos em shell, porque achei mais simples do que tratar em php.
Pode também ser alterado para php, caso ache mais apropriado. Talvez funcione até melhor.
O script lê o diretório em busca dos arquivos que subiram, respeitando suas extensões e movendo-os para seus respectivos sub-diretorios no diretório Arquivos.
Para que isso funcione, o arquivo deve-ser setado como executável - chmod +x movendo
Não precisa ser root para isso.
Mude do dono dos diretórios do usuário do sistema, conforme abaixo.
Isso é necessário, para que o apache possa gravar o arquivo enquanto faz o upload e para o que o
shell script possa mover os arquivos para as pastas destinos.
Portanto, tanto a pasta "uploads", onde o sistema pega os arquivos e os armazena temporariamente, quanto a pasta destino "Arquivos" e subpastas
devem ter essas permissões ajustadas.
Estamos assumindo que você esteja utilizando o modelo de hospedagem local tipo home_dir, que fica em /home/usuario/public_html/
Caso utilize o padrão em /var/www/html ou /var/www/ nos meus testes funcionou corretamente.
Se por algum motivo não funcionar, mude as permissões das mesmas pastas para 777. Não sou muito adepto desta solução, mas pode resolver sim.
Lembrando, essas permissões 777 devem ser aplicadas somente nas pastas "Arquivos" e "uploads".
chown -R www-data:www-data Arquivos/
chown -R www-data:www-data upload/uploads/
Obs:
Basicamente é isso. Esse projeto pessoal não tem a pretensão de substituir um sistema mais robusto que utiliza base dados e etc.
É simplesmente para utilização pessoal para organização de seus arquivos pessoais. Essa é a premissa desse sistema.
Referẽncias e Fontes:
Página inicial - Página baseada em um template de links
http://tympanus.net/codrops/2013/08/06/creative-link-effects/
Licença de uso - Codrops
http://tympanus.net/codrops/licensing/
Formulario de login Dark Login - site cssflow
http://www.cssflow.com/snippets/dark-login-form
Navegador de Arquivos - Cute File Browser
http://tutorialzine.com/2014/09/cute-file-browser-jquery-ajax-php/
Uploader de Arquivos -
http://tutorialzine.com/2013/05/mini-ajax-file-upload-form/
Menu do sistema - Parte do tema Calliope
http://www.free-css.com/free-css-templates/page131/calliope
Script em Shell para mover os arquivos aos seus respectivos diretórios.
Paginas man e Forums diversos sobre shell script.