Skip to content

Laboratório

Erick Souza edited this page Sep 5, 2016 · 43 revisions

HTTP

  1. Instalação de um servidor Web

Instale o nodejs:

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs

Instale o json-server:

$ sudo npm install -g json-server
  1. Criação do arquivo db.json para representar uma lista de recursos no servidor
{"livros":[
  {
    "id" : 1,
    "isbn" : "978-0641723445",
    "titulo" : "The Lightning Thief",
    "autor" : "Rick Riordan",
    "preco" : 12.50
  },
  {
    "id" : 2,
    "isbn" : "978-1423103349",  
    "titulo" : "The Sea of Monsters",
    "autor" : "Rick Riordan", 
    "preco" : 6.49
  },
  {
    "id" : 3,
    "isbn" : "978-1857995879",   
    "titulo" : "Sophie's World : The Greek Philosophers",
    "autor" : "Jostein Gaarder",
    "preco" : 3.07
  }
]}
  1. Execução do servidor
$ json-server --watch db.json
  1. Acesso ao recurso

http://localhost:3000/livros/1

  1. Criação de um cliente para consumir o recurso com base neste exemplo

OBS: Em caso de erro 'promise is not defined' ao realizar uma requsição POST, faça o seguinte:

  • Instale o es6-promise:
$ npm install es6-promise --save
  • Edite o arquivo: /usr/local/lib/node_modules/json-server/node_modules/lowdb/lib/file-async.js

  • Inclua a linha require('es6-promise').polyfill() no início do arquivo.

EXERCÍCIO: Implemente os métodos para atualização e remoção de um recurso, utilizando os verbos PUT e DELETE do HTTP, respectivamente.

FTP

  1. Instalação de um servidor FTP
$ sudo apt-get install proftpd
  1. Instalação de um cliente FTP
$ sudo apt-get install gftp
  1. Crie um usuário para acessar exclusivamente o FTP (opcional)
$ sudo useradd -m -s /bin/false usuario_ftp
$ sudo passwd usuario_ftp
  1. Configuração do servidor (opcional)

O servidor pode ser configurado editando os parâmetros do arquivo abaixo:

$ sudo nano /etc/proftpd/proftpd.conf

Alguns campos importantes:

ServerName    "Nome para o seu servidor"
ServerIdent   on "Mensagem para os usuarios"
ServerAdmin   root@localhost
ServerType    standalone
DefaultRoot   ~
  • ServerName: É o nome do seu servidor. Ex.: Servidor FTP
  • ServerIdent: É a mensagem que é mostrada quando um usuário tenta se conectar ao servidor.
  • ServerAdmin: É o e-mail do administrador do servidor.
  • ServerType: É a forma como o ProFTPD vai executar. Valor inetd: o servidor irá executar apenas quando algum usuário estiver ativo. Valor standalone: o servidor irá executar o tempo todo.
  • DefaultRoot: É o diretório que o usuário FTP terá acesso.

Caso o arquivo seja alterado, o servidor FTP deve ser reiniciado:

$ sudo etc/init.d/proftpd restart
  1. Utilize o cliente gftp para acessar o servidor proftpd:
  • Máquina: localhost
  • Porta: 21
  • Usuário: <usuário do sistema operacional>
  • Senha: <senha do sistema operacional>

EXERCÍCIO: Escolha um colega de classe para troca de arquivos entre máquinas distintas. OBS: você pode criar um usuário no sistema operacional exclusivo para as credenciais de acesso via FTP, caso não queira fornecer as credenciais do seu usuário.

SMTP

  1. Crie um servidor SMTP fake em python
#!/usr/bin/env python
"""Um servidor SMTP fake."""

import smtpd
import asyncore

class FakeSMTPServer(smtpd.SMTPServer):
    """Servidor fake SMTP"""

    def __init__(*args, **kwargs):
        print "Rodando um servidor fake SMTP na porta 80"
        smtpd.SMTPServer.__init__(*args, **kwargs)

    def process_message(*args, **kwargs):
        pass

if __name__ == "__main__":
    smtp_server = FakeSMTPServer(('localhost', 25), None)
    try:
        asyncore.loop()
    except KeyboardInterrupt:
        smtp_server.close()
  1. Inicie o servidor:
$ chmod +x fake_smtp.py
$ sudo ./fake_smtp.py

Referências

Clone this wiki locally