Skip to content

Laboratório

Erick Souza edited this page Sep 14, 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 o arquivo fake_smtp.py com o conteúdo:
#!/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
  1. Em outra aba do terminal, execute o DebuggingServer para visualizar as respostas do servidor:
$ sudo python -m smtpd -n -c DebuggingServer localhost:25
  1. Teste o servidor SMTP:
$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 localhost6.localdomain6 Python SMTP proxy version 0.2
HELO localhost
250 localhost6.localdomain6
MAIL FROM: [email protected]
250 Ok
RCPT TO: [email protected]
250 Ok
DATA
354 End data with .
subject: Hello
to: [email protected]
Olá Bob!
.
250 Ok
QUIT
221 Bye
Connection closed by foreign host.

Socket

  1. Baixe os arquivos no repositório

  2. Altere a variável ip para o endereço ip do servidor

Obs: Obtenha o endereço IPV4 com o comando ifconfig

  1. Inicie o servidor em um terminal:
$ python servidorTCP.py
  1. Abra outro terminal e execute o cliente:
$ python clienteTCP.py

Referências

Clone this wiki locally