Projeto Integrador - 2010.1 - Equipe Plugin Café

De MediaWiki do Campus São José
Ir para: navegação, pesquisa


Diário de Aula do Projeto Integrador 2010.1

O primeiro dia de projeto, o grande esperado. Digo por mim, que acompanhei o semestre passado e voltei para o curso de Técnico em Telecomunicações com ênfase em Redes, para além do aprendizado participar do Projeto Integrador que não tem cenário similar em Telefonia.

Inicialmente fui conversando com os professores. Primeiro de tudo desenhei o cenário proposto e defini algumas coisas que penso em discutir com a equipe, pensando num melhor desenvolvimento de todos e do projeto pela mesma.

Cenário do projeto

Anotações para discussões:

  • Cabeamento; temos que apresentar 4 pontos de acesso, sendo um obrigatóriamente acesso Wireless, sem autenticação. (a ser discutido com o professor)
  • Gerência de Redes: Serviços básicos de rede e obrigatórios, solicitados pelo professor. Verificar se a equipe topa de tentar implementar algum serviço extra, e depois tentar conversar com todas as outras para ver se pode ser integrado. Idéia inicial é um serviço de VoIP, pensando que seja uma rede de cibercafé, pelo menos para comunicação interna. Implementar Git (Controle de versão) para melhor controle de arquivos de configurações. Se possível Gitweb - projeto interno da equipe.

Pessoas e atividades principais, por ordem de preferências pessoais.

  • Jean - Cabeamento, Gerência, Programação
  • Mailin - Gerência, Programação, Cabeamento
  • Maykon - Gerência, Programação/Cabeamento
  • Roberto - Programação, Gerência, Cabeamento


Dia: 08/6/2010 - Início das atividades

Depois de conversar com o professor Tiago[1], Ederson e Casagrande[2], já fui para a sala de aula com algumas idéias e pronto para começar a colocar as coisas para funcionar. Como de costume fui chamando o Chico para levantarmos o desenvolvimento. O professor iniciou a aula falando como poderia começar o desenvolvimento, a idéia era que discutíssemos como realizar o projeto, tentar tratar como forma de camadas. Como já tinha falado com os três professores, sabia que tinha que pegar os computadores para usar como servidores, o professor Casagrande sugeriu realizar a configuração de dois modems um de 2Mb e outro de 64Kb, trabalhando em redundância, e já informou que os modems estavam disponíveis no laboratório de Redes I.

Iniciamos as atividades solicitando ao professor Tiago para que pudéssemos pegar os equipamentos. Fomos todos até o Lab.RedesI para buscar os modems um, DT 2048 DHDSL256 e um Parks UP64 2F, o switch D-Link DS3526 e um Roteador NetRouter 2G da Digitel (informações a serem confirmadas)

Após a montagem dos equipamentos no RACK, foi utilizado um rack de aproximadamente 44U (confirmar) e a disposição dos equipamentos ficou da seguinte forma.

  1. PatchPanel (Equipe Plugin Café)
  2. PatchPanel de manobra
  3. Organizador
  4. Switch D-Link
  5. Modem DHDSL e Parks
  6. Roteador NR2G

Realizado a conexão dos pares de fios para TX e RX em cada modem, sendo necessário replicar conexão nos outros dois modems que estarão disponíveis no Lab.RedesI Conexões e ordem das cores do cabos:

  • Primeiro Modem: DT 2048 DHDSL
RX RX TX TX
BVerde Verde BAzul Azul
  • Segundo Modem: UP 64 2F Parks
RX RX TX TX
BMarron Marrom BLar Laranja

Cada equipe montou seu RACK com dois PatchPanel um com as conexões do cabo até o RACK principal, outro para fazer as conexões dos pontos de acesso, se ligando nesse primeiro. Foi utilizado padrão 568A nas conexões no PatchPanel do RACK Principal. Cada equipe já pegou seu computador.

Fotos do Primeiro Dia

Rack principal
Mário Allan mexendo no rack da equipe.
||
Rack da equipe do Chico
Modem Digital, tá com cara de ser o Parks UP64

--MaykonChagas 23:10, 8 Junho 2010 (BRT)

Dia: 09/6/2010 - Segundo dia

Segundo dia do projeto, não tivemos muito avanço, finalizamos a passagem dos cabos de redes para interligações dos armários dao armário Principal. Ficou faltando ainda um cabo, devido a própria falta de material do laboratório, após esse estresse ainda tivemos diversos problemas com o PatchPanel onde chegam as conexões das equipes para manobra no RACK principal.

Depois de diversas discussões sobre o cabeamento, foi decidido que será melhor falar com o professor Tiago, de qualquer forma o Jean irá trazer mais uns 20m de fio UTP Cat5e para passar mais uma perna para a equipe que está mais longe do RACK principal.


Durante o cabeamento, paralelamente foi realizado a instalação do sistema operacional na máquina servidor escolhida pela equipa na segunda-feira. Configurações da máquina básica da máquina:

-Sistema Operacional: Debian GNU/Linux - Lenny 5.0
-Processador: Pentium 4 1.8GHz
-Memória RAM: 512MB
-Disco Rígido: 20GB

Configurações de particionamento de Disco

-8GB para partição / (raiz)
-10GB para partição /var
-2GB de swap

--MaykonChagas 13:24, 10 Junho 2010 (BRT)


Dia: 10/6/2010 - Terceiro dia

Aula do professor Emerson, o pessoal se dividiu um pouco, parte ficou com a física parte com programação. Primeiramente o professor explicou como deveria ser feito a parte do website, onde o cliente tem quatro opções de utilização do ciber, sendo três computadores acessando a rede cabeada e uma acessando a rede sem fio, porém em qualquer que seja o meio, todo e qualquer site que o cliente acessar o proxy tem que entregar juntamente com a página um banner com propagandas. É aí que entra a parte dele. Esquemático de como deve ser desenvolvido a parte de programação pode ser vista aqui

Discutimos já como seria a modelagem do Banco de Dados onde teremos duas tabelas, uma de edição que comportará quase todas as informações necessárias para os banners e outra para o usuário que fará login e permanecerá na sessão até que clique no botão "Sair."

Realizado a instalação dos seguintes serviços, somente instalação: Git (controle de versão); NTP (servidor de hora); Bind9 (servidor DNS); Apache2 (servidor web); PHP5 (programação para web); MySQL (Banco de Dados); SSHD (daemon ssh, para acesso remoto seguro);

Não houve configuração alguma dos serviços, só deixamos instalado, até por que não adiantava configurar muita coisa, a equipe não estava reunida, e tentaremos seguir esse padrão de configuração com todos da equipe, para aprendizado geral. Nas apresentações de gerência se possível será divulgado o uso do Git, como controle de versão das configurações nos arquivos do sistema.

Obs. Não é recomendável que seja instalado qualquer serviço de rede sem a interface de loopback no ar, pois muitos desses serviços fazem comunicação na posta de escuta do serviço.

Roberto estava empenhado na programação, já tem algumas coisas prontas, irei solicitar que encaminhe para divulgação também.

--MaykonChagas 00:56, 12 Junho 2010 (BRT)

Git e Gitweb

Git é um aplicativo que realiza Controle de versão, existe uma documentação vasta para realizar a configuração e operação do programa. Vou me limitar a mostrar a documentação organizada por um projeto extra-curricular que participo com outros alunos do IFSC e com participação do professor Ederson também. Cooperativus - Configuração do Git

A utilização do Git no projeto visa ter maior controle sobre os arquivos de configurações instalados no /etc (principal diretório de configurações dos programas e facilidades instaladas no servidor. Para um administrador de redes isso pode proporcionar além de maior controle, ter noção de quais foram as configurações realizadas em determinado arquivo podendo assim voltar linhas, excluídas ou alteradas caso a configuração não funcione após alteração.

--MaykonChagas 10:30, 24 Junho 2010 (BRT)

Dia: 11/6/2010 - Quarto dia e fim da primeira semana

"Aula" com o professor Ederson, aka. Boi. Após a instalação dos servidores tirei o dia para iniciar a instalação dos serviços, porém somente instalação. Foi instalado o GIT e então a cada instalação de novo serviço era adicionado na base de controle de versão do Git os arquivos desses serviços.

Programas instalados e relação de serviços, já instalado:

Apache2 (http)
Bind9 (DNS)
DHCP
NTP (NTP, relógio)
OpenSSH (SSH)
PHP5 e MySQL

Realizado algumas configurações para limitar o acesso via SSH.

No arquivo /etc/ssh/ssdd_config alterado o parâmetro que bloqueia acesso root:

# Authentication:
PermitRootLogin no

e a linha em seguida permite acesso somente do usuário plugin:

# Permite acesso somente do usuario
AllowUsers plugin

Enquanto isso o Roberto continuou algumas coisas da página web.

Antes de finalizarmos a atividade, revisamos alguns assuntos pendentes que previmos resolver nas próximas aulas.

- Cabeamento estruturado: finalizar as conexões, e cabos de manobra.
- Instalação de Equipamento de Rede: comunicação dos modems, que foi tratado no tópico abaixo.
- Gerência de redes: configuração dos serviços já instalados.
- Programação para redes de Computadores: Autenticação no Banco de Dados.

--MaykonChagas 10:35, 15 Junho 2010 (BRT)

Dia 14/6/2010

A expectativa do dia, para alguns, era grande. Hoje ainda tínhamos um trabalho de IER para apresentar. Como o pessoal vem chegando, devido ao trânsito, saídas do trabalho e afins, iniciamos algumas discussões sobre o Projeto Integrador. Chico iniciou as atividades para implantação dos Modems, como o cabo que interliga os laboratórios chega no RACK da direita e o professor achou que chegava no meio, acabamos instalando todos os modems no mesmo lugar onde o fio chegava.

Como no laboratório de Meios de Transmissão já havíamos realizado a ligação física dos cabos só necessitamos replicar a conexão dos fios na outra ponta.

Realizado as conexões, o professor trouxe os certificadores, ligamos os modems e constatamos que realizou a sincronização. Com isso tínhamos a quase certeza que a comunicação estava certa, agora para fazer o teste final usamos o certificador para simular um roteador que ia enviar/receber dados.

Fotos certificação do Link físico

Roteador Cisco, Modem Parks e Modem Digitel.
Modems sincronizados
Link de 2Mbps certificado!
Link 64Kbps certificado!
Conexão Modem
Diagrama de interconexão física dos laboratórios.

Antes de realizarmos a apreentação dos trabalhos o professor ainda retificou algumas informações sobre o Projeto.

  • 1 - Os cabos de Patch Cord utilizados no RACK do laboratórios de Meios de Transmissão não podem ser utilizados lá. Precisaremos confeccionar os cabos para realizamos as manobras.
  • 2 - A conexão entre a nuvem e os servidores, ficarão no RACK central do Lab. Redes 1.
  • 3 - A conexão entre as redes LAN ficarão no RACK da direita, onde estão os Modems, roteadores e o Switch.

Iniciamos a confecção dos cabos de manobra para o Lab. Meios de Transmissão. Finalizado atividade com a parte física da matéria de IER completa, agora é partir para configuraçãos dos roteadores e switchs para poder definir protocolos, VLANs, redes de comunicação entre os equipamentos. As redes internas de cada equipe já foi definida, ficou da seguinte forma.

-Equipe 1: 192.168.100.0/24
-Equipe 2: 192.168.101.0/24
-Equipe 3: 192.168.102.0/24
-Equipe 4: 192.168.103.0/24

--MaykonChagas 09:16, 15 Junho 2010 (BRT)

Dia 15/6/2010

Aula com o professor Tiago, fizemos as tomadas de telecomunicações na parede e no chão.

--Mailinb 18:15, 17 Junho 2010 (BRT)

Dia 16/6/2010

O dia da imigração, chegamos no lab. Redes1 e o professor Tiago precisou do laboratório, fomos para o lab. Redes2, por volta das 20:30 voltamos para o primeiro..

O professor Boi chegou com uma surpresa, conseguiu implementar o banner usando o Squid, na sexta-feira passada ele havia dito que talvez fosse complicado demais, e talvez fosse mais fácil implementar pelo próprio Apache. Porém ele viu que a sugestão dele era a mais complicado que o próprio Squid, e acabou realizando uma "receita de bolo" para implementação com o Squid, que se mostrou extremamente eficiente e de fácil utilização.

Juntamente com o Squid será necessário instalação do DansGuardian, que é um analisador de conteúdo que irá inserir o Banner conforme solicitado, além de outras funcionalidades, como anti-vírus.

A configuração para instalação, configuração e funcionamento do Squid e DansGuardian pode ser vista aqui

Realizado a configuração conforme o documento feito pelo professor, realizamos testes e confirmamos a facilidade de utilização do mesmo. Tempo de migração para o lab.Redes1

Finalizamos as configurações de serviços de rede, Mailin implementou o DHCP, Eu fiz alguma coisa do DNS mas acabei finalizando mesmo no dia de hoje, 17/6. O Roberto está implementando a parte do site, autenticação para o administrador de redes e acesso nas páginas. Depois iremos verificar como implementar o DansGuardian e o Firewall no nosso servidor.


NAT

Foi atualizado o script de NAT, conforme segue abaixo a nova configuração. É necessário realizar edição no script que está no diretório: /etc/init.d/nat

#!/bin/bash

# Interfaces
IFACE_INTERNA="eth0"
IFACE_EXTERNA="eth1"

# Limpa regras de NAT
iptables -t nat -F
iptables -t filter -F

# Regra genérica de NAT
iptables -t nat -A POSTROUTING -o ${IFACE_EXTERNA} -j MASQUERADE 

# Redirecionamento para analisador de conteúdo
iptables -t nat -A PREROUTING -i ${IFACE_INTERNA} -p tcp --dport 80 \
-j REDIRECT --to-port 8080

# Bloqueio para acesso direto ao proxy
iptables -A INPUT -m tcp -p tcp ! -s 127.0.0.1 --dport 3128 -j DROP


exit 0

Iniciamos as discussões de assuntos ainda pendentes, como definido no dia anterior, Mailin ia ficar com a configuração de DHCP, Eu fiquei com o DNS, Roberto ficou com a parte do site.


DNS

Programa que provê o servido DNS

aptitude install bind9

No DNS temos alguns arquivos que fazem referências a outros. Primeiramente verificamos no arquivo '/etc/bind/named.conf' se exite a seguinte linha:

include "/etc/bind/named.conf.local";

Essa linha garante que a referência do arquivo de configuração onde estarão definidas as zonas, como exemplo o nome do seu site. Verificando o arquivo 'named.conf.local' adicionamos as seguintes linhas

zone "plugincafe.sj.ifsc.edu.br" {
        type master;
        file "/etc/bind/db.plugincafe";
};

zone "200.in-addr.arpa" {
        type master;
        file "/etc/bind/db.reverso";
};

Feito isso, temos dentro das zonas, dois arquivos um para o DNS e outro para o DNS Reverso.

DNS "normal"

vi /etc/bind/db.plugincafe

E incrementamos toda a configuração para resolução de nomes dentro desse arquivo, /etc/bind/db.plugincafe

$TTL 86400
@       IN      SOA     dns1.plugincafe.sj.ifsc.edu.br. maykon.plugincafe.sj.ifsc.edu.br. (
        2010061705 ;    serial
                1d ;    refresh
                1h ;    retry
                1h ;    expire
                1h ;    negative cache ttl
)
@       IN      NS      dns1.plugincafe.sj.ifsc.edu.br.
@       IN      NS      hendrix.sj.ifsc.edu.br.
dns1    IN      A       200.135.37.102
www     IN      CNAME   dns1
ssh     IN      CNAME   dns1
  • OBS; esse arquivo pode ser alterado até o final do Projeto Integrador.

DNS Reverso

Arquivo de configuração do DNS Reverso: vi /etc/bind/db.reverso

$TTl 86400
@	IN	SOA	dns1.plugincafe.sj.ifsc.edu.br. maykon.plugincafe (
	2010061601 ;	serial
		1d ;	refresh
		1h ;	retry
		1w ; 	expire
		1d ;	negative cache ttl
)
@	IN	NS	dns1.plugincafe.sj.ifsc.edu.br.
102.37.135 IN	PTR	dns1
  • A configuração de DNS Reverso não está completa e nem totalmente testada, está sendo implementada.

DHCP

Instalação do programa que provê o serviço DHCP

aptitude install dhcp

Arquivo de configuração: /etc/dhcp3/dhcpd.conf

ddns-update-style none;
log-facility local7;
subnet 192.168.102.0 netmask 255.255.255.0 {
	range 192.168.102.100 192.168.102.199;
	option subnet-mask 255.255.255.0;
	option broadcast-address 192.168.102.255;
	option routers 200.135.37.102;
	option domain-name-servers 200.135.37.102;
	option domain-name "plugincafe.sj.ifsc.edu.br";
	default-lease-time 14440;
	max-lease-time 86400;
}

DansGuardian

O DansGuardian é um filtro de conteúdo desenvolvido para trabalhar em conjunto com o Squid, filtrando conteúdo indesejado. • Instalando o DansGuardian

 aptitude install dansguardian

No arquivo /etc/dansguardian/dansguardian.conf, deve-se comentar essa linha

UNCONFIGURED

Proxy

• Instalação do proxy Squid versão 3

 aptitude install squid3

No arquivo /etc/squid3/squid.conf, basta adicionar ao final da linha:

http_port 3128 transparent

--Mailinb 18:07, 24 Junho 2010 (BRT)

Dia 17/6/2010

Ainda em aula.. Roberto já está com bastante coisa da página pronta, já existe uma página de acesso, está tentando resolver os acessos e registros no BD. Sugerimos a criação de uma página inicial.

Realizado o cadastro das atividades do dia de ontem na wiki, enquanto Roberto trabalha.. >D

Configurando chave privada

Aproveitei e comentei com o professor que iremos implementar acesso ssh usando chave privada, a configuração para isso está descrita abaixo, antes de iniciarmos, na sua máquina real, entre no seu diretório /home e apague a pasta oculta do ssh, se você já tem chaves públicas, provavelmente sabe como criar e não vai precisar seguir o tutorial abaixo. .p~

rm -rf .ssh/

Feito isso, vamos iniciar a criação da chave privada.

ssh-keygen

Depois do enter ele vai retornar algumas coisas e também a linha abaixo:

Enter file in which to save the key (/home/aluno/.ssh/id_rsa):

Esse linha é para você digitar o caminho onde ele vai salvar a sua chave, eu não vou mudar o padrão, ele vai salvar naquela pasta que está em parênteses, que é o padrão. Sendo assim só aperte ENTER.

Logo ele vai pedir para você uma senha, essa senha é para você desbloquear a chave ao acessar o computador remoto, no nosso caso o servidor. Repita a mesma senha e logo após ele vai gerar a chave. Vai aparecer um desenho bonitinho que é, traduzindo literalmente da mensagem, a imagem aleatória da chave, eu sempre fico analisando pra ver se tem alguma coisa por trás dessa imagem, sem sucesso até hoje..

Certo, você já criou sua chave, agora vamos copiar ela para o destino, para que quando formos acessar ele verifique se a chave confere.

ssh-copy-id plugin@200.135.37.200

Digite a senha de acesso para desbloquear a chave. Pronto, senão errou a senha você copiou a chave privada para o servidor, que salvou no diretório '.ssh/authorized_keys'

Pode fazer um acesso agora.

Certo, mas agora você tem que se atentar, vai precisar carregar essa chave com você para não perder o acesso. Por enquanto ainda temos acesso via senha, depois iremos modificar o acesso, permitindo somente por chave privada.

continua...

--MaykonChagas 10:03, 17 Junho 2010 (BRT)


Continuação

Nosso site está quase pronto, além de colocar conteúdo, tem que fazer uns ajustes com relação a posição de menu e as includes. O que eu conversei com o nosso grupo, foi o seguinte, que o nosso site, quando acessado no interior do Plugin café, terá o privilégio de não ter anúncios no topo do site. O que será feito é o seguinte, no lado direito da nossa pagina terá uma include com "todos" os anúncios. Para visualizar o protótipo:

http://www.plugincafe.sj.ifsc.edu.br/plugin

Com relação ao sistema de gerenciamento de Anúncios, o que já foi realizado é o seguinte: Autenticação de usuário; bd dos anúncios; página de listagem dos anúncios; cadastro de anuncios. para visualizar a pagina de acesso:

http://www.plugincafe.sj.ifsc.edu.br/admin/

acredito que seja isso, se houver algum erro de português ou de concordância amanhã eu conSerto porque to com sono. qualquer duvida entre em contato com o 0800-2322...

--Robertodmachado 01:19, 22 Junho 2010 (BRT)

Mesmo após a ativação da chave privada, para não dificultar os acessos e onerar toda a equipe com uma facilidade não tão usada pelos outros integrantes, essa configuração está ativa para figuração, antes do término do projeto será realizada a ativação total dela, desabilitando acesso remoto por qualquer usuário e distribuindo as chaves privadas para cada usuário - inclusive para os acessos de verificações que serão realizados pelos professores - e as senhas para o acesso.

Enquanto isso eu e Mailin revisamos as configurações do DHCP e do DNS.

Diminuimos também o tempo de propagação do DNS, para fins de teste, assim não há necessidade de esperar horas para correção. Atualmente o DNS já está mais estável, inclusive resolvendo o reverso.


Pouco antes do término da aula o professor ensinou como usar uma funcão do PHP, chamada php_gd. Na página inicial do projeto explica como fazer para ativar essa função e o que pode ser realizada com ela. Aqui a configuração para essa atividade.

--MaykonChagas 09:58, 24 Junho 2010 (BRT)

Dia 18/6/2010

Foi meio que o dia da roupa suja, até o meio da segunda aula. Depois partimos para os roteadores. Sugestão do professor é que fizéssemos ou DHCP Relay nos roteadores, já que ambos, Digitel NR2G e Cisco 1700 possuem essa facilidade, ou a criação de Vlans com protocolo de 802.1Q que permite a comunicação entre VLAN distantes e passando por roteadores.

Nesse dia foi configurado também o Cacti, interface de gerência. O procedimento para configuração do protocolo SNMPd e o Cacti foi seguido conforme a dica dada pelo professor Ederson.

--MaykonChagas 10:20, 24 Junho 2010 (BRT)


Instalando SNMP e Cacti

SNMP

• Instalando Pacote agente

 aptitude install snmpd

• O arquivo /etc/snmp/snmpd.conf foi zerado e reconfigurado de acordo com a comunidade de gerência.

 rocommunity plugincafe 
 syslocation Laboratório Redes I
 syscontact plugin@plugincafe.sj.ifsc.edu.br
 sysservices 72

• No arquivo /etc/default/snmpd , retirar o endereço 127.0.0.1 pois o agente rodará em rede.

• Terminado as alterações reinicie o serviço

 
/etc/init.d/snmpd restart

CACTI

• Instalando pacote gerente

 
aptitude install cacti

• Após instalar a configuração foi feita através da interface web no endereço http://www.plugincafe.sj.ifsc.edu.br/cacti/

• Para confirmar que existe comunicação entre agente e gerente, pode se testar a partir do seguinte comando

snmpwalk -v2c -cplugincafe 200.135.37.102 .1

--Mailinb 12:09, 24 Junho 2010 (BRT)

Dia 21/6/2010

Configurando Roteador

Como não tinhamos a comprovação de que o roteador DIGITEL NR2G suportava a configuração de VLANS, trocamos para o roteador Cisco. Com a Ajuda do professor Casagrande tentamos fazer algumas configurações porem devido a falta de suporte ao protocolo 802.1q não foi possivel concluir a configuração.

--Mailinb 18:19, 25 Junho 2010 (BRT)


  • Configuração dos modems
    • Modems redundantes, um par configurado a 2Mbps e outro par configurado a 64Kbps
    • Clock interno em um dos modems de 2Mbps e outro com clock regenerado

Comandos utilizados na tentativa de configuração do roteador para aplicação de VLAN.

  • Roteador utilizado:
    • Cisco 1750 (2x)
  • habilitando acesso com permissão root

CISCO_1700_ESQ>enable Password: a CISCO_1700_ESQ#configure terminal </syntaxhighlight>

  • resetando configuração atual

CISCO_1700_ESQ(config)#config-register 0x2142 CISCO_1700_ESQ(config)#exit CISCO_1700_ESQ#reload 00:56:31: %SYS-5-CONFIG_I: Configured from console by console

System configuration has been modified. Save? [yes/no]: yes Building configuration... [OK] Proceed with reload? [confirm]y 00:56:49: %SYS-5-RELOAD: Reload requested System Bootstrap, Version 12.0(3)T, RELEASE SOFTWARE (fc1) Copyright (c) 1999 by cisco Systems, Inc. C1700 platform with 20480 Kbytes of main memory

program load complete, entry point: 0x80008000, size: 0x395384 Self decompressing the image : ################################################]

             Restricted Rights Legend                                         
                                                                              

Use, duplication, or disclosure by the Government is subject to restrictions as set forth in subparagraph (c) of the Commercial Computer Software - Restricted Rights clause at FAR sec. 52.227-19 and subparagraph (c) (1) (ii) of the Rights in Technical Data and Computer Software clause at DFARS sec. 252.227-7013.

          cisco Systems, Inc.                                                 
          170 West Tasman Drive                                               
          San Jose, California 95134-1706                                     
                                                                              
                                                                              
                                                                              

Cisco Internetwork Operating System Software IOS (tm) C1700 Software (C1700-SY-M), Version 12.1(1), RELEASE SOFTWARE (fc1) Copyright (c) 1986-2000 by cisco Systems, Inc. Compiled Fri 17-Mar-00 14:19 by cmong Image text-base: 0x80008088, data-base: 0x807340BC

cisco 1750 (MPC860) processor (revision 0x501) with 15360K/5120K bytes of memor. Processor board ID JAD04180BVX (823435954), with hardware revision 0000 M860 processor: part number 0, mask 32 Bridging software. X.25 software, Version 3.0.0. 1 FastEthernet/IEEE 802.3 interface(s) 2 Serial(sync/async) network interface(s) 32K bytes of non-volatile configuration memory. 8192K bytes of processor board System flash (Read/Write)


        --- System Configuration Dialog ---                                   
                                                                              

Would you like to enter the initial configuration dialog? [yes/no]: no


Press RETURN to get started! </syntaxhighlight>

  • Roteador reiniciado, resetando configurações para padrão de fábrica.
00:00:12: %SYS                                                                 
Router>enable                                                         
Router#write                                                                   
Building configuration...                                                      
[OK]                        
Router#configure terminal                                                      
Enter configuration commands, one per line.  End with CNTL/Z.                  
                                                   
Router(config)#config-register 0x2102
Router(config)#exit   
00:01:04: %SYS-5-CONFIG_I: Configured from console by cons                     


Router#conf terminal                                                           
Enter configuration commands, one per line.  End with CNTL/Z.                  
  • Setando hostname do roteador como "meios", no roteador do lab.redes 1 foi colocado "redes1"

Router(config)#hostname meios </syntaxhighlight>

  • Configurando IP da interface serial 0

meios(config)#interface serial 0 meios(config-if)#ip address meios(config-if)#ip address 10.0.0.2 255.255.255.252 meios(config-if)#no shutdown </syntaxhighlight>

  • Encapsulamento PPP

meios(config-if)#encapsulation ppp meios(config-if)#exit </syntaxhighlight>

  • Configurando IP da interface serial 1

meios(config)#interface serial 1 meios(config-if)#ip address 10.0.1.2 255.255.255.252 meios(config-if)#no shutdown </syntaxhighlight>

  • Encapsulamento PPP

meios(config-if)#encapsulation ppp meios(config-if)#exit </syntaxhighlight>

  • Habilitando acesso remoto via telnet

meios(config)#line vty 0 4 meios(config-line)#password a meios(config-line)#login meios(config-line)#exit </syntaxhighlight>

  • Configurando Interface fastEthernet 0

meios(config)#interface FastEthernet 0 </syntaxhighlight>

  • Habilitando interface fastEthernet virtual

meios(config)#interface fastEthernet 0.1 meios(config-subif)#ip address 192.168.200.254 255.255.255.0

Configuring IP routing on a LAN subinterface is only allowed if that subinterface is already configured as part of an IEEE 802.10, IEEE 802.1Q, or I.

meios(config-subif)#no shutdown </syntaxhighlight>

--MaykonChagas 09:05, 28 Junho 2010 (BRT)

Dia 22/6/2010

Outra tentativa de configuração do Cisco, agora no lab. Meios, sem sucesso. Sem muito avanço nessa parte. Nos dispensamos mais cedo para resolver remotamente outros serviços.

--MaykonChagas 21:43, 24 Junho 2010 (BRT)

Dia 23/6/2010

--MaykonChagas 09:05, 28 Junho 2010 (BRT)

Dia 24/6/2010

Day Off. Parte dos integrantes não foram. Tentei fazer alguma parte de programação, sem sucesso. Estamos produzindo pouco em aula. O Roberto está tendo bastante avanço remotamente, já que a parte dele é totalmente viável programar em casa.

--MaykonChagas 09:07, 28 Junho 2010 (BRT)

Dia 28/6/2010

Configuração dos roteadores NR2G

Todo a aula em cima dos roteadores. Conseguimos fazer funcionar? parcialmente.. a configuração abaixo foi realizadas nos roteadores NR2G da Digitel. Sim, os roteadores Cisco cairam foram, sem suporte a VLAN não ia funcionar nada, e como roteadores estão no projeto, e foi encontrado um jeito de implementar, estão eles lá.

A aula já começou com o professor falando que desde o início deveríamos ter realizado a configuração com os roteadores Digitel, mas toda a teimosia de implementar o Cisco, e um pouco também a falta de certeza que os primeiros tinham suporte a VLAN convenceram-no de trocar. Demos com os burros n'água, mas pelo menos agora temos certeza das coisas.. Rolou uma aposta, se ele conseguisse fazer funcionar a gente pagava uma coca-cola pra ele.. brincadeiras em torno disso foi oque não faltou, mas começamos logo a reconfiguração, iniciando pela reinstalação dos roteadores no lugar de origem, os racks, lab. Meios e lab. Redes 1.

  • O relógio do modem do lab. meios, ambos foram trocados para relógio externo, desabilitado o regenerar.
  • Usado cabo ISO 2110 (amanhã colo fotos do lab. Meios)
  • No lab.Redes 1 foram alterados os DIPs para clock interno, regenerado. (a confirmar)
  • Usado cabo original do Roteador NR2G para conexão com interfaces WAN <-> Modem (a confirmar o padrão)

Após a instalação física, foi iniciada a reconfiguração lógica, segue comandos utilizados.

  • Configuração de taxa de transmissão, bits, em cada interface serial

SET WAN WAN0 CLOCK INTERNAL SPEED 512 SET WAN WAN1 CLOCK INTERNAL SPEED 64 </syntaxhighlight>


  • Confirmado que a configuração anterior, verificado que cada interface estava retornando a velocidade setada.

SHOW WAN WAN0 ALL WAN0 512K WAN1 64K </syntaxhighlight>


  • Configuração do gateway de cada VLAN.

SET LAN LAN0:4 IP 192.168.100.254 UP SET LAN LAN0:1 IP 192.168.101.254 UP SET LAN LAN0:2 IP 192.168.102.254 UP SET LAN LAN0:3 IP 192.168.103.254 UP </syntaxhighlight>


  • Configuração de rede, máscara e gateway de cada VLAN.

SET ROUTES ROUTE0 DEVICE LAN0:0 NET 192.168.200.0 MASK 255.255.255.0 GATEWAY 10.0.1.2

SET ROUTES ROUTE1 DEVICE LAN0:1 NET 192.168.201.0 MASK 255.255.255.0 GATEWAY 10.0.1.2

SET ROUTES ROUTE2 DEVICE LAN0:2 NET 192.168.202.0 MASK 255.255.255.0 GATEWAY 10.0.1.2

SET ROUTES ROUTE3 DEVICE LAN0:3 NET 192.168.203.0 MASK 255.255.255.0 GATEWAY 10.0.1.2

SET LAN LAN0 PURGE (não sei pra quê isso serve) </syntaxhighlight>


  • Configurando gateway default

SET ROUTES DEFAULT GW1 10.0.1.2 </syntaxhighlight>


  • Habilitando acesso telnet no roteador, Lab.Meios

EXEC TELNET 10.0.1.2 LOGIN E SENHA nr2g do lab meios </syntaxhighlight>


  • Retirando opção de roteamento RIP

SET RIP PURGE </syntaxhighlight>


  • Configuração da rota default

SET ROUTES DEFAULT GW1 10.0.1.1 </syntaxhighlight>


  • Configuração da rede de cada VLAN.

SET LAN LAN0:0 IP 192.168.200.0 UP SET LAN LAN0:1 IP 192.168.201.0 UP SET LAN LAN0:2 IP 192.168.202.0 UP SET LAN LAN0:3 IP 192.168.203.0 UP </syntaxhighlight>


  • Configuração das rotas estáticas, para cada interface virtual.

SET ROUTES ROUTE0 DEVICE LAN0:0 NET 192.168.200.0 MASK 255.255.255.0 GATEWAY 10.0.1.2

SET ROUTES ROUTE1 DEVICE LAN0:1 NET 192.168.201.0 MASK 255.255.255.0 GATEWAY 10.0.1.2

SET ROUTES ROUTE2 DEVICE LAN0:2 NET 192.168.202.0 MASK 255.255.255.0 GATEWAY 10.0.1.2

SET ROUTES ROUTE3 DEVICE LAN0:3 NET 192.168.203.0 MASK 255.255.255.0 GATEWAY 10.0.1.2 </syntaxhighlight>


Ao término foram realizadas as configurações nos Switches em cada uma das pontas.


Configuração dos switches D-Link DS3526

  • Configuração das VLANs nos Switches D-Link

create vlan 100 tag 100 create vlan 101 tag 101 create vlan 102 tag 102 create vlan 103 tag 103 </syntaxhighlight>


  • Setando portas para cada VLAN.

config vlan 100 add untagged 1-6 config vlan 101 add untagged 7-12 config vlan 102 add untagged 13-18 config vlan 103 add untagged 19-23 </syntaxhighlight>


  • Setando porta 24 como tagged (marcada) para todas as VLANs, será utilizadas para comunicação entre os Switches.

config vlan 100 add tagged 24 config vlan 101 add tagged 24 config vlan 102 add tagged 24 config vlan 103 add tagged 24 </syntaxhighlight>

--MaykonChagas 01:06, 28 Junho 2010 (BRT)


Após as configurações, utilizamos o nosso servidor para testes de ping, foi configurado a interface eth0 para ser o servidor DHCP.

auto eth0 iface eth0 inet static

       address 192.168.102.1
       netmask 255.255.255.0
       gateway 192.168.102.254

</syntaxhighlight>


Foi configurado rotas no servidor para as redes VLAN no switch da outra ponta.

  • Rota do servidor para a rede 192.168.202.0:

route add -net 192.168.202.0/24 gw 192.168.102.254 </syntaxhighlight>

  • Rota da rede 192.168.202.0 para o servidor:

route add -net 192.168.102.0/24 gw 192.168.202.254 </syntaxhighlight>

--MaykonChagas 08:13, 29 Junho 2010 (BRT)


Dia 29/6/2010

Mudanças no projeto

Fim da novela. Nenhum dos dois roteadores possui suporte a VLAN, segundo o professor Casagrande, ele mesmo ligou para a Digitel para confirmar isso. Ele possui suporte a criação de interfaces virtuais, mas elas não falam VLAN. Com isso foi alterado um pouco a estrutura do Projeto. Agora não temos mais DHCP distribuido pelos Servidores. O Ponto de acesso wireless é que vai distribuir o DHCP na ponta da LAN, onde estarão conectados as estações.

Ontem foi realizado a reconfiguração dos roteadores NR2G.


  • Roteador Lab. Meios

SET LAN LAN0 IP 192.168.100.254 MASK 255.255.255.0 UP SET LAN LAN0:1 IP 192.168.101.254 MASK 255.255.255.0 UP SET LAN LAN0:2 IP 192.168.102.254 MASK 255.255.255.0 UP SET LAN LAN0:3 IP 192.168.103.254 MASK 255.255.255.0 UP


SET ROUTES ROUTE0 device wan1 NET 192.168.200.0 MASK 255.255.255.0 GATEWAY 10.0.1.1 COST 0 SET ROUTES ROUTE1 device wan1 NET 192.168.201.0 MASK 255.255.255.0 GATEWAY 10.0.1.1 COST 0 SET ROUTES ROUTE2 device wan1 NET 192.168.202.0 MASK 255.255.255.0 GATEWAY 10.0.1.1 COST 0 SET ROUTES ROUTE3 device wan1 NET 192.168.203.0 MASK 255.255.255.0 GATEWAY 10.0.1.1 COST 0

SET WAN WAN0 PROTO PPPS IP 10.0.0.2 MASK 255.255.255.252 CLOCK EXTERNAL SET WAN WAN1 PROTO PPPS IP 10.0.1.2 MASK 255.255.255.252 CLOCK EXTERNAL </syntaxhighlight>


  • Roteador Lab. Redes 1

SET LAN LAN0 IP 192.168.200.254 MASK 255.255.255.0 UP SET LAN LAN0:1 IP 192.168.201.254 MASK 255.255.255.0 UP SET LAN LAN0:2 IP 192.168.202.254 MASK 255.255.255.0 UP SET LAN LAN0:3 IP 192.168.203.254 MASK 255.255.255.0 UP


SET ROUTES ROUTE0 DEVICE WAN1 NET 192.168.200.0 MASK 255.255.255.0 GATEWAY 10.0.1.2 COST 0 SET ROUTES ROUTE1 DEVICE WAN1 NET 192.168.201.0 MASK 255.255.255.0 GATEWAY 10.0.1.2 COST 0 SET ROUTES ROUTE2 DEVICE WAN1 NET 192.168.202.0 MASK 255.255.255.0 GATEWAY 10.0.1.2 COST 0 SET ROUTES ROUTE3 DEVICE WAN1 NET 192.168.203.0 MASK 255.255.255.0 GATEWAY 10.0.1.2 COST 0 SET ROUTES UP


SET WAN WAN0 PROTO PPPS IP 10.0.0.1 MASK 255.255.255.252 CLOCK EXTERNAL SET WAN WAN1 PROTO PPPS IP 10.0.1.1 MASK 255.255.255.252 CLOCK EXTERNAL </syntaxhighlight>


Foi realizado também a configuração do Ponto de Acesso como roteador/servidor DHCP. (é necessário pegar todas as configurações setadas) Realizado alguns testes com a rede cabeada, verificado que as estações assumiram IPs do range DHCP configurado no Ponto de Acesso.

  • Range: 192.168.202.200 - 192.168.202.240

--MaykonChagas 07:34, 30 Junho 2010 (BRT)

30/06/2010

Configuraçâo do Access Point

MODO - AP BANDA - 2.4Ghz (B+G) ESSID plugincafe_wifi CHANNEL - 11

IP ADDRESS - 192.168.202.1 NETMASK - 255.255.255.0 GATEWAY - 192.168.202.254

DHCP - ATIVO DEFAUK GATEWAY IP - 192.168.202.1 DNS IP - 8.8.8.8

IP START 192.168.202.200 IP END 192.168.202.250 DOMAIN NAME PLUGINCAFE.SJ.IFSC.EDU.BR </syntaxhighlight>

Após a configuração do Ponto de Acesso foram realizados testes de conexão, utilizamos dois pontos cabeados e dois pontos sem fio, todos eles receberam IP automaticamente.

--MaykonChagas 19:30, 2 Julho 2010 (BRT)

Dia 1/6/2010

A luta contra o roteador, parte 2

A turma se dividiu, parte ficou na parte do roteador, e outra parte ficou com a parte de programação. Só falta basicamente esses dois pontos. Na nova tentativa de atualização do roteador, foi instalado o servidor TFTP em um computador do Lab.Meios,

O procedimento realizado está descrito abaixo.

1 - Conecte um cabo cross ethernet na LAN0 e o cabo console do router no PC 2 - Em seu PC deverá ter um server TFTP ativo, indicando onde está o arquivo 60504i.dwn 2 - Com o router desligado, no painel traseiro do NR-2G, coloque a dip número 2 para a posição para baixo, 3 - Com a Console ativa, que pode ser um PC com hyperterminal do Windows, ligue o roteador e fique pressionando a barra de espaço do teclado para entrar no modo boot. 4 - O roteador entrará no prompt de manutenção (NR2Gboot) 5 - Neste momento digite: setip "Endereço IP do Roteador" "Máscara de Rede" "Endereço IP do Gateway" setserv "Endereço IP do Servidor de TFTP" update "arquivo.dwn"

Exemplo: setip 10.10.10.1 255.255.255.0 10.10.10.2 setserv 10.10.10.2 update 60504i.dwn

6 - Apos este procedimento aguarde finalizar a atualização. 7 - No painel traseiro do NR-2G, volte a dip número 2 para a posição para cima, colocando o roteador no Modo Normal de operação. Depois, digite boot e pressione <enter> para reiniciar o roteador. </syntaxhighlight>

A configuração da VLAN é um pouco diferente da criação de Interfaces virtuais. Para a criação de uma Vlan com VID=100 (que deve ser o mesmo VID da Vlan configurada no Switch), o comando no NR2G é: SET LAN LAN0.100 IP..... UP


Codigo fonte do Site

index.html

<html> <head> <title>Plugin Café</title> </head>

       <link rel="stylesheet" type="text/css" href="estiliza.css" />

<body>

Sua novo opção de Cyber Café na ilha!
<img src="plugincafe2.jpg">

Desenvolvido por PluginCafé.

</body> </html> </syntaxhighlight>


Para não precisar ficar repetindo cabeçalho e rodapé em todos os links criei includes.

header.inc

<?php ?> <html> <head><title> Plugin Café </title> </head> <link rel="stylesheet" type="text/css" href="estiliza.css" /> <body>

</body> </html> </syntaxhighlight>

rodapé.inc

<?php ?> <html> <head> </head> <link rel="stylesheet" type="text/css" href="estiliza.css" /> <body>

Desenvolvido por PluginCafé.

</body> </html> </syntaxhighlight>

contato.php

<html> <head><title>Contato</title> </head> <link rel="stylesheet" type="text/css" href="estiliza.css" /> <body>

                       <?php include("header.inc"); ?>
       <fieldset>

<label> Envie-nos sua mensagem </label>
* Campos opcionais


                       <form action="mail-google.php" method="post">
                           <label for="nome"> Nome </label><input type="text" name="nome" id="nome" />
                           <label for="e-mail"> E-mail *</label><input type="text" name="nome" id="nome" />
                           <label for="telefone"> Telefone *</label><input type="text" name="nome" id="nome" />
                           <textarea style="margin-left:60px; margin-bottom:10px; margin-top:7px;"; cols="40" rows="5" name="mensagem"> </textarea>
  • <a href="#" title="">Enviar</a>
  •                        </form>
    
                   <fieldset>
    

    Plugin Caf&eacute



    telefone: (48)96203234

    plugin@plugincafe.sj.ifsc.edu.br

    Florianópolis-SC

               </fieldset>
    
           </fieldset>
    
                           <?php include("rodape.inc"); ?>
    

    </body> </html> </syntaxhighlight>


    servicos.php

    <html> <head><title>Serviços</title> </head> <link rel="stylesheet" type="text/css" href="estiliza.css" /> <body>

                           <?php include("header.inc"); ?>
    
    Oferecemos aos nossos clientes serviços de alta qualidade.

    Ambiente climatizado, com um excelente refeitório, extremamente variado, feitos pelos nossos colaboradores com larga experiência na area, com produtos de maxima qualidade.

    Computadores com acesso a internet que estão em lugares que você pode desfrutar de sua privacidade, ou então se preferir, utilize seu notebook, acessando a internet via wi-fi.

    Oferecemos também a oportunidade de publicar anuncios, de uma forma inovadora, venha conferir!

    <img src="plugincafe.jpeg">
                           <?php include("rodape.inc"); ?>
    

    </body> </html> </syntaxhighlight>

    sae.php

    <html> <head><title>Quem somos</title> </head> <link rel="stylesheet" type="text/css" href="estiliza.css" /> <body>

                           <?php include("header.inc"); ?>
    
    Grupo Plugin Café

    Roberto Dozol Machado

    Maykon Chagas

    Mailin Barcelos

    Jean Cesar

                           <?php include("rodape.inc"); ?>
    

    </body> </html> </syntaxhighlight>

    Utilizamos CSS para fazer a estilização do site.

    estiliza.css

    • {
           margin: 0;
           padding: 0;
    

    }

    body, html {

           background: white;
           font: normal small Verdana, Arial, Helvetica, sans-serif;
    

    }

    h1, h2, h3, h6{

           color: #000;
    

    }

    ul, #botao a {

           margin-left: 3em;
           margin-bottom: 1.4em;
           line-height: 1.8em;
           text-align: justify;
           list-style: none;
    

    }

    a {

           text-decoration: none;
           color: black;
    

    }

    a:hover {

           text-decoration: underline;
    

    }

    1. head {
           height: 126px;
    

    }


    1. menu{
           width: 100%;
           padding-bottom: 0px;
           margin: 0 auto;
           position:absolute;
           background: #FF9900;
    

    }

    1. menu ul{
           height: 50%;
           margin: 0;
           margin-left: 20%;
           //padding:120px 0 0 0;
           list-style: none;
    

    }

    1. menu li {
           display: inline;
    

    }

    1. menu a, #botao a {
           display: block;
           float: left;
           height: 25px;
           margin: 0 0 0 0;
           text-align: center;
           width: 90px;
           padding: 2px 25px 0 25px;
           background: #FF9900;
           border: 1px solid #FF9900;
           font-size: 10px;
           font-weight: bold;
           color: #000;
    

    }

    1. menu a:hover, #botao a:hover {
           background:#FFF;
           text-decoration: none;
    

    }

    1. corpo{
           width: 100%;
           padding-top: 40px;
           margin-top:30px;
           height: 600px;
           background:white;
    

    }

    1. esquerda{
           width:90%;
           margin: 10px;
           float: left;
    

    }

    1. direita{
           width: 10%;
           margin: 10px;
           float: right;
    

    }

    1. rodape {
           clear: both;
           padding-top: 20px;
           padding-bottom: 50px;
           width: 100%;
           border-top: 4px solid #020202;
           background: #FF9900 ;
    

    }

    1. rodape p {
           text-align: center;
           margin: 0 auto;
           font-size: x-small;
           color: #000;
    

    }

    1. titulo {
           text-align: center;
           color: #000;
           }
    
    1. texto {
           color: #000;
    

    }

    1. conteudo {
           width: 800px;
           margin: 0 auto;
           padding: 20px 0 0 0;
    

    }

    1. conteudo label{
           font: normal small Verdana, Arial, Helvetica, sans-serif;
           font-size:13px;
           color:#000;
    

    }

    1. conteudo label, textarea{
           margin: 3 auto;
           padding: 6px 0 0 0;
    

    } div.#dados, div#campos {

           margin-bottom: 20px;
    

    } div#dados label {

           display: block;
           margin-bottom: 1px;
    

    } div#dados {

           margin-left: 60px;
           margin-right: 10px;
    

    }

    1. botao{
           list-style: none;
           margin-left:60px;
           margin-bottom:20px;
    

    } fieldset{

           padding:10px;
           margin-bottom:5px;
           border:none;
    

    }

    1. info fieldset, #formulario form{
           float:left;
    

    }

    1. info fieldset{
           margin:15px 0 0 15px;
           padding-left:30px;
           width:300px;
           height:200px;
           color:#000;
    

    } </syntaxhighlight>


    Codigo fonte do Gerenciador de Anuncio

    pagina de acesso


    <?

           session_start();
           $conexao = mysqli_connect("localhost", "plugin","plugin");
           $db = mysqli_select_db($conexao, "cafe");
           if( isset($_SESSION['login'])){
                     if(  isset($_SESSION['senha'])){
                           $_SESSION['login'] = $_POST["login"];
                           $_SESSION['senha'] = $_POST["senha"];
                           header("Location: lista.php");
                   }
           }else{
                                           $nick = $_POST["login"];
                                           $password = $_POST["senha"];
                                           $sql2 = "SELECT * FROM usuario" ;
    
                                           $resultado = mysqli_query($conexao, $sql2);
                                          $resultado2 = mysqli_fetch_array($resultado);
    
                                           if ((!empty($_POST["login"])) && (!empty($_POST["senha"]))) {
                                                   if(($nick == $resultado2[1]) && ($password == $resultado2[2])) {
                                                           $_SESSION['login'] = $_POST["login"];
                                                           $_SESSION['nome'] = $_POST["senha"];
                                                           header("Location: lista.php");
                                                   }
                                                   else {
                                                           $_SESSION['errada']=true;
    

    }

                                   }
           }
    

    ?>

    <html> <head><title> Plugin Café </title> <head> <link rel="stylesheet" type="text/css" href="edicao.css" /> <body>

    <fieldset><legend>Acesso Administrador</legend>
                           <form action="index.php" method="post">
    

    <?

                                   if (isset($_SESSION['errada'])){
    
    echo "";
                                           session_destroy();
                                           }
    

    ?>

    <label for="login"> Login: </label> <input type="text" name="login" />
    <label for="senha"> Senha: </label> <input type="password" name="senha"/>
    <input type="submit" name="operacao" value="Entrar" class="botoes" />
    Dados Incorretos!
    </fieldset>

    </body> </html> </syntaxhighlight>

    php que confirma o login

    <?

           session_start();
           $conexao = mysqli_connect("localhost", "plugin","plugin");
           $db = mysqli_select_db($conexao, "cafe");
           if(  isset($_SESSION['login'])){
                     if(  isset($_SESSION['senha'])){
                           header("Location: lista.php");
                   }
           }else{
    


                                           $nick = $_POST["login"];
                                           $password = $_POST["senha"];
                                           $sql2 = "SELECT * FROM usuario" ;
                                           $resultado = mysqli_query($conexao, $sql2);
                                           $resultado2 = mysqli_fetch_array($resultado);
                                                   print_r($resultado2);
                                                   if(($nick == $resultado2[1]) && ($password == $resultado2[2])) {
    

    echo "

    errado!

    ";

                                                   }
                                                   else {
                                                           $_SESSION['login'] = $nick;
                                                           //$_SESSION['senha'] = $password;
                                                           header("Location: lista.php");
                                                   }
                                        }
    

    ?>

    </syntaxhighlight>

    pagina de listagem dos anuncio

    <?

           session_start();
           if( isset($_SESSION['login'])){
                     if(  isset($_SESSION['senha'])){
                           $_SESSION['login'] = $_POST["login"];
                           $_SESSION['senha'] = $_POST["senha"];
                   }
           }else{
                           header("Location: index.php");
           }
    


           echo "você esta conectado como: " . $_SESSION['login'];
           echo " <a href='sair.php'>Sair</a>";
    

    ?> <html> <head><title>Anuncios</title> </head> <link rel="stylesheet" type="text/css" href="edicao.css" /> <body>

           <fieldset><legend> Lista de anuncios </legend>
                           <form action="novoanuncio.php" method="post">
                                   <div="anuncio">
    

    <?

                                           $conexao = mysqli_connect("localhost","plugin","plugin");
                                           $consulta2 = "select * from anuncio.propaganda order by expira desc";
                                           $resultado2 = mysqli_query($conexao,$consulta2);
    


    echo ""; echo ""; echo ""; echo ""; echo ""; echo "";
                                           while($linha = mysqli_fetch_array($resultado2)){
    
    echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo "";
                                                   $data = date("Y-m-d");
                                                   $timestamp1 = strtotime($linha['expira']);
                                                   $timestamp2 = strtotime($data);
    
                                                   if ($timestamp1 < $timestamp2){
    
    echo "";
                                                   }
                                           }
    
    echo "
    nome: Link: expira em: texto do anuncio: Numero de Visitas:
    ". $linha['nome'] . "" . $linha['link'] . "" . $linha['expira'] . "" . $linha['texto_anun'] . "" . $linha['visita'] . "<a href='excluir.php?d=" . $linha['id'] . "'>Excluir</a><a href='editar.php?d=" . $linha['id'] . "'>Editar</a> Anuncio Expirado!
    ";
                                           //mysql_free_result($resultado);
                                           mysqli_close($conexao);
    

    ?>

                           <input type="submit" name="operacao" value="Novo Anuncio" class="botoes" />
                           </form>
                   </fieldset>
    

    </body> </html> </syntaxhighlight>

    pagina de novo anuncio

    <?

           session_start();
           if( isset($_SESSION['login'])){
                   if( isset($_SESSION['senha'])){
                           $_SESSION['login'] = $_POST["login"];
                           $_SESSION['senha'] = $_POST["senha"];
                   }
           }else{
                   header("Location: index.php");
           }
                                                   $conexao = mysql_connect("localhost","plugin","plugin");
                                                   $base_ok = mysql_select_db("anuncio",$conexao);
                                                   //$consulta = "select * from propaganda";
                                                   //$resultado = mysql_query($consulta,$conexao);
    


                                   if(!is_null($_POST["nome"]) && !is_null($_POST["link"]) && !is_null($_POST["expira"]) ){                                           if(!empty($_POST["nome"]) && !empty($_POST["link"]) && !empty($_POST["expira"]) ){
                                                   $nome = $_POST["nome"];
                                                   $link = $_POST["link"];
                                                   $expira = $_POST["expira"];
                                                   $expirado = $_POST["expirado"];
                                                   $text_anun = $_POST["texto_anun"];
    
                                                   $sql = "select * from propaganda where nome='$nome'";
                                                   $resultado = mysql_query($sql,$conexao);
    
    $linhas = mysql_num_rows($resultado);
    
                                                   if ($linhas == 0)
                                                           {
                                                           $sql = "insert into propaganda(nome, link, expira, expirado, texto_anun) values ('$nome', '$link', '$expira', '$expirado', '$text_anun')";
                                                           header("Location: lista.php");
                                                           $resultado = mysql_query($sql,$conexao);
                                                           }
                                                           else
                                                           {
                                                           $_SESSION['cadastrado']=true;
                                                           }
                                                           }else{
                                                           $_SESSION['vazio']=true;
                                                             }
                           }
    

    ?> <html> <head><title> Novo Anuncio </title> </head> <link rel="stylesheet" type="text/css" href="edicao.css" /> <body>

                           <fieldset><legend> Novo Anuncio </legend>
                                   <form action="novoanuncio.php" method="post">
    

    <?

                                           if(isset($_SESSION['vazio'])){
    
    echo "";
                                                   unset($_SESSION['vazio']);
                                           }
                                           if(isset($_SESSION['cadastrado'])){
    
    echo "";
                                                   unset($_SESSION['cadastrado']);
           }
    

    ?>

    <label for="nome"> Nome: </label> <input type="text" name="nome" />
    <label for="link"> Link: </label> <input type="text" name="link" />
    <label for="expira"> Expira em: </label> <input type="text" name="expira" />
    <label for="TextoAnuncio"> Texto do Anúncio:</label> <textarea rows="3" cols="20" name="texto_anun"></textarea>
    <input type="submit" name="cadastrar" value="cadastrar" /> Por favor preencher todos campos!Anúncio já cadastrado!
                                   </form>
                           </fieldset>
    

    </body> </html>

    php que faz o cadastro no banco de dados

    <?

                                                           session_start();
                           if( isset($_SESSION['login'])){
                                   if(  isset($_SESSION['senha'])){
                                           $_SESSION['login'] = $_POST["login"];
                                           $_SESSION['senha'] = $_POST["senha"];
                                   }
                           }else{
                                           header("Location: index.php");
                           }
    
                                                   $conexao = mysql_connect("localhost","plugin","plugin");
                                                   $base_ok = mysql_select_db("anuncio",$conexao);
                                                   //$consulta = "select * from propaganda";
                                                   //$resultado = mysql_query($consulta,$conexao);
    


                                   if(!empty($_POST["nome"]) && !empty($_POST["link"]) && !empty($_POST["expira"]) ){
    


                                                   $nome = $_POST["nome"];
                                                   $link = $_POST["link"];
                                                   $expira = $_POST["expira"];
                                                   $expirado = $_POST["expirado"];
                                                   $text_anun = $_POST["texto_anun"];
    
                                                   $sql = "select * from propaganda where nome='$nome'";
                                                   $resultado = mysql_query($sql,$conexao);
                                                   $linhas = mysql_num_rows($resultado);
    
                                                   if ($linhas == 0)
                                                           {
                                                           $sql = "insert into propaganda(nome, link, expira, expirado, texto_anun) values ('$nome', '$link', '$expira', '$expirado', '$text_anun')";
                                                           header("Location: lista.php");
                                                           $resultado = mysql_query($sql,$conexao);
                                                           }
                                                           else
                                                           {
    

    echo "Anuncio já cadastrado!";

                                                           }
                                   }else{
    

    echo "

    Campo Vazio!

    ";

                                   }
    

    ?>

    </syntaxhighlight>


    editar anuncio

    <?

                   session_start();
                   if( isset($_SESSION['login'])){
                             if(  isset($_SESSION['senha'])){
                                   $_SESSION['login'] = $_POST["login"];
                                   $_SESSION['senha'] = $_POST["senha"];
                                   }
                   }else{
                           header("Location: index.php");
                   }
           $id = $_GET['d'];
           $conexao = mysqli_connect("localhost","plugin","plugin");
           $base_ok = mysqli_select_db($conexao,"anuncio");
           $consulta = "select * from propaganda where id = '$id'";
           $resultado = mysqli_query($conexao,$consulta);
           $linha = mysqli_fetch_array($resultado);
    

    ?> <html> <head><title> Editar Anuncio </title> </head> <link rel="stylesheet" type="text/css" href="edicao.css" /> <body>

    <fieldset><legend> Editar Anuncio </legend>
                                   <form action='editado.php?d=<? echo $linha['id']?>' method="post">
    
    <label for="nome"> Nome: </label> <input type="text" name="nome2" value="<? echo $linha['nome'] ?>" />
    <label for="link"> Link: </label> <input type="text" name="link2" value="<? echo $linha['link'] ?>" />
    <label for="expira"> Expira em: </label> <input type="text" name="expira2" value="<? echo $linha['expira'] ?>" />
    <label for="TextoAnuncio"> Texto do Anúncio:</label> <textarea rows="3" cols="20" name="texto_anun2"><? echo $linha['texto_anun'] ?></textarea>
    <input type="submit" name="salvar" value="salvar" />
                                   </form>
    
    </fieldset>

    </body> </html> </syntaxhighlight>

    php que faz a edição

    <?

           $id = $_GET['d'];
           $conexao = mysqli_connect("localhost","plugin","plugin");
           $base_ok = mysqli_select_db($conexao,"anuncio");
           $sql = "select * from propaganda where id = '$id'";
           $resultado = mysqli_query($conexao,$sql);
    
                   $nome = $_POST['nome2'];
                   $link = $_POST['link2'];
                   $expira = $_POST['expira2'];
                   $expirado = $_POST['expirado2'];
                   $texto = $_POST['texto_anun2'];
    
                   $sql = "update propaganda set nome='$nome', link='$link', expira='$expira', expirado='$expirado', texto_anun='$texto' where id = '$id'";
                  // echo $sql;
                   $resultado = mysqli_query($conexao,$sql);
                   mysqli_close($conexao);
                   header("Location: lista.php");
    

    ?> </syntaxhighlight>

    excluir anuncio

    <?

           $id = $_GET["d"];
    
                                           $conexao = mysql_connect("localhost","plugin","plugin");
                                           $base_ok = mysql_select_db("anuncio",$conexao);
    
                                           $query = mysql_query("delete from propaganda where id = '$id'");
                                           mysql_query($query);
                                           header ("Location: lista.php");
    

    ?> </syntaxhighlight>

    gerador do banner

    <? $id = $_GET['d']; $conexao = mysqli_connect("localhost","plugin","plugin"); $base_ok = mysqli_select_db($conexao,"anuncio"); $consulta = "select * from propaganda where id = '$id'"; $resultado = mysqli_query($conexao,$consulta); $linha = mysqli_fetch_array($resultado);

    $data = date("Y-n-j H:i:s"); $consulta2 = "select * from propaganda where expirado = '0'"; $resultado2 = mysqli_query($conexao,$consulta2); $linhas = mysqli_num_rows($resultado2); $linhas--; $linha_aleatorio = rand(0,$linhas);


    mysqli_data_seek($resultado2,$linha_aleatorio); $busca = mysqli_fetch_array($resultado2,MYSQLI_ASSOC);

    $tempo_transcorrido = (strtotime($data)-strtotime($busca[expira])); if ($tempo_transcorrido < 0) {

           $imagem = imagecreate( 800, 70 );
           $fundo = imagecolorallocate( $imagem, 255, 153, 0 );
           $corTexto = imagecolorallocate( $imagem, 255, 255, 255 );
           $corLinha = imagecolorallocate( $imagem, 153, 102, 51 );
           imagettftext($imagem, 12, 0, 10, 18, $corTexto, "/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf", $busca[nome]);
           $texto = wordwrap($busca[texto_anun], 140, "
    "); $linha = explode("
    ", $texto); imagettftext($imagem, 9, 0, 10, 43, $corTexto, "/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf", "$linha[0]"); imagettftext($imagem, 9, 0, 10, 59, $corTexto, "/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf", "$linha[1]"); imagesetthickness ( $imagem, 2 ); imageline( $imagem, 5, 25, 790, 25, $corLinha ); imagepng( $imagem, "/var/www/imagens/imagem.png" ); imagedestroy( $imagem ); $consulta4 = "update propaganda set bid = '$busca[id]'"; $resultado4 = mysqli_query($conexao,$consulta4);
           $consulta6 = "update banner set id = '$busca[id]'";
           $resultado6 = mysqli_query($conexao,$consulta6);
           } else {
                   $consulta5 = "update propaganda set expirado='1' where id='$busca[id]'";
                   $resultado5 = mysqli_query($conexao,$consulta5);
           }
    

    ?> </syntaxhighlight>

    redirecionador de pagina e contador de visitas

    <? $action = $_GET['action']; $conexao = mysqli_connect("localhost","plugin","plugin"); $base_ok = mysqli_select_db($conexao,"anuncio"); if ($action == "go") {

           $conexao = mysqli_connect("localhost","plugin","plugin");
           $base_ok = mysqli_select_db($conexao,"anuncio");
           $consulta2 = "select id from banner";
           $resultado2 = mysqli_query($conexao,$consulta2);
           $busca = mysqli_fetch_array($resultado2, MYSQL_ASSOC);
    
           $consulta3 = "select * from propaganda where id='$busca[id]'";
           $resultado3 = mysqli_query($conexao,$consulta3);
           $busca2 = mysqli_fetch_array($resultado3, MYSQL_ASSOC);
    
           $visitas = $busca2['visita'];
           $visitas++;
    
           $consulta4 = "update propaganda set visita='$visitas' where id='$busca[id]'";
           $resultado4 = mysqli_query($conexao,$consulta4);
    
           header("Location: $busca2[link]");
    

    } ?> </syntaxhighlight>