Mudanças entre as edições de "Projeto Integrador - 2011.1 - Bigodes"
Linha 78: | Linha 78: | ||
*Instalação dos modens entre a Sala Redes 1 e sala Meios, estabelecido a comunicação ponto a ponto do modens entre os roteadores e inicio da configuração | *Instalação dos modens entre a Sala Redes 1 e sala Meios, estabelecido a comunicação ponto a ponto do modens entre os roteadores e inicio da configuração | ||
do DSLAN. | do DSLAN. | ||
+ | |||
+ | === Conficuração do CISCO 1700 === | ||
+ | |||
+ | *Foi utilizado a ferramenta "Minicom" (sudo apt-get install minicom) para ter acesso pela interface serial ao roteador Cisco 1700. | ||
+ | *Após a instalação do Minicom deve-se executá-lo da seguinte forma: | ||
+ | minicom -s (onde o parâmetro -s significa setup). | ||
+ | *O seguinte menu aparecerá: | ||
+ | |||
+ | <code> | ||
+ | |||
+ | ┌─────────────[configuração]──────────────┐ | ||
+ | │ Nomes de arquivos e rotas | ||
+ | │ Protocolos de transferência de arquivos | ||
+ | │ Configuração da porta serial | ||
+ | │ Modem e discagem | ||
+ | │ Tela e teclado | ||
+ | │ Salvar configuração como dfl | ||
+ | │ Salvar configuração como | ||
+ | │ Sair | ||
+ | │ Sair do Minicom | ||
+ | └────────────────────────────────────────┘ | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | |||
+ | *Navegue com o cursor até a opção "Configuração da porta serial", acessando-a com a tecla "Enter" | ||
+ | *Aparecerá a seguinte tela: | ||
+ | |||
+ | <code> | ||
+ | |||
+ | ┌──────────────────────────────────────────────────────────┐ | ||
+ | │ A – Dispositivo Serial : /dev/tty1 | ||
+ | │ B – Localização do Arquivo de Travamento : /var/lock | ||
+ | │ C – Programa de Entrada : | ||
+ | │ D – Programa de Saída : | ||
+ | │ E – Bps/Paridade/Bits : 38400 8N1 | ||
+ | │ F – Controle de Fluxo por Hardware : Sim | ||
+ | │ G – Controle de Fluxo por Software : Não | ||
+ | │ | ||
+ | │ Alterar qual configuração? | ||
+ | └──────────────────────────────────────────────────────────┘ | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | |||
+ | *Altere os seguintes parâmetros: | ||
+ | *Dispositivo Serial : /dev/ttSy0 | ||
+ | *Bps/Paridade/Bits : 9600 8N1 | ||
+ | *Controle de Fluxo por Hardware : Não | ||
+ | *Seu menu ficará da seguinte forma: | ||
+ | |||
+ | <code> | ||
+ | |||
+ | ┌───────────────────────────────────────────────────────┐ | ||
+ | │ A – Dispositivo Serial : /dev/ttSy0 | ||
+ | │ B – Localização do Arquivo de Travamento : /var/lock | ||
+ | │ C – Programa de Entrada : | ||
+ | │ D – Programa de Saída : | ||
+ | │ E – Bps/Paridade/Bits : 9600 8N1 | ||
+ | │ F – Controle de Fluxo por Hardware : Não | ||
+ | │ G – Controle de Fluxo por Software : Não | ||
+ | │ | ||
+ | │ Alterar qual configuração? | ||
+ | └───────────────────────────────────────────────────────┘ | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | |||
+ | *Após feitas essas configurações volte ao menu principal com a tecla "Enter": | ||
+ | |||
+ | <code> | ||
+ | |||
+ | ┌────[configuração]──────────────────────┐ | ||
+ | │ Nomes de arquivos e rotas | ||
+ | │ Protocolos de transferência de arquivos | ||
+ | │ Configuração da porta serial | ||
+ | │ Modem e discagem | ||
+ | │ Tela e teclado | ||
+ | │ Salvar configuração como dfl | ||
+ | │ Salvar configuração como.. | ||
+ | │ Sair | ||
+ | │ Sair do Minicom | ||
+ | └───────────────────────────────────────┘ | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | |||
+ | *Salve as suas configurações na opção "Salvar configuração com dfl", e saia do Minicom na opção "Sair". | ||
+ | *Caso o roteador esteja corretamente conectado, será aberta a interface de configuração do roteador, assim execute os comandos a seguir: | ||
+ | |||
+ | <code> | ||
+ | |||
+ | enable; | ||
+ | configure terminal; | ||
+ | |||
+ | #Para configurar a interface serial: | ||
+ | interface serial 0; | ||
+ | ip address 10.0.0.1/30; | ||
+ | encapsulation ppp; | ||
+ | exit; | ||
+ | |||
+ | #Para configurar a interface ethernet: | ||
+ | interface fastethernet 0; | ||
+ | ip address 172.18.0.1/24; | ||
+ | exit; | ||
+ | exit; | ||
+ | |||
+ | #Para salvar as configurações: | ||
+ | wr; | ||
+ | </syntaxhighlight> | ||
==6º Dia - 20/06/2011 == | ==6º Dia - 20/06/2011 == |
Edição das 08h23min de 13 de julho de 2011
Equipe Bigodes
- Ademir de Souza
- Amarildo Junior
- Augusto Buttemberg
- Daniel Arndt
- Evandro Schutz
- Maicon Guesser
1º Dia - 13/06/2011
- Formatamos o nosso servidor, e efetuamos as configurações básicas referentes aos IPs provisórios (rede, rota, DNS);
- Instalamos o SSH na máquina, e instalamos o equipamento no RAC.
2º Dia - 14/06/2011
- Diagnosticado o problema de bateria da BIOS. Onde o servidor não iniciava com as configurações salvas, sendo que toda vez que subir o servidor configurar o teclado.
- Efetuado a ligação dos ramais no patch panel, e identificamos a ligação do cabeamento entre o laboratório de meios e o laboratório de redes 1.
- Inciamos a configuração do DNS "bind9".
3º Dia - 15/06/2011
- Dividimos a equipe em subequipes. Tendo os alunos Ademir e Augusto, para efetuar o trabalho de IER, configurando comunicação de ponto a ponto dos modens.
- Em primeiro momento como tínhamos diagnosticado um problema na bateria da BIOS, então foi comprada uma nova e efetuada a substituição.
- Os alunos Amarildo, Daniel Arndt e Evandro continuaram a configuração do DNS. Efetuado alguns testes para comprovar o funcionamento.
- Configurado IP válido para o servidor.
Configurações dos modens Ponto a Ponto Digitel (SHDSL)
Modem sala Servidor:
STRAP DIP-1 DIP-2 DIP-3 DIP-4 DIP-5
1- OFF OFF OFF OFF OFF
2- OFF ON ON OFF OFF
3- ON OFF ON OFF OFF
4- ON OFF ON OFF OFF
5- ON OFF ON OFF OFF
6- OFF OFF ON OFF OFF
7- OFF OFF ON OFF OFF
8- OFF OFF ON OFF ON
S1=75 S2=75 S8=V35 S7=V35/V36
Modem sala Dslan:
STRAP DIP-1 DIP-2 DIP-3 DIP-4 DIP-5
1- OFF ON OFF OFF OFF
2- OFF OFF ON OFF OFF
3- ON OFF ON OFF OFF
4- ON OFF ON OFF OFF
5- ON OFF ON OFF OFF
6- OFF OFF ON OFF OFF
7- OFF OFF ON OFF OFF
8- OFF OFF ON OFF ON
S1=75 S2=75 S8=V35 S7=V35/V36
4º Dia - 16/06/2011
- Iniciamos a configuração das paginas em PHP, e a integração com o MySQL.
5º Dia 17/06/2011
- Instalação dos modens entre a Sala Redes 1 e sala Meios, estabelecido a comunicação ponto a ponto do modens entre os roteadores e inicio da configuração
do DSLAN.
Conficuração do CISCO 1700
- Foi utilizado a ferramenta "Minicom" (sudo apt-get install minicom) para ter acesso pela interface serial ao roteador Cisco 1700.
- Após a instalação do Minicom deve-se executá-lo da seguinte forma:
minicom -s (onde o parâmetro -s significa setup).
- O seguinte menu aparecerá:
┌─────────────[configuração]──────────────┐
│ Nomes de arquivos e rotas
│ Protocolos de transferência de arquivos
│ Configuração da porta serial
│ Modem e discagem
│ Tela e teclado
│ Salvar configuração como dfl
│ Salvar configuração como
│ Sair
│ Sair do Minicom
└────────────────────────────────────────┘
</syntaxhighlight>
- Navegue com o cursor até a opção "Configuração da porta serial", acessando-a com a tecla "Enter"
- Aparecerá a seguinte tela:
┌──────────────────────────────────────────────────────────┐
│ A – Dispositivo Serial : /dev/tty1
│ B – Localização do Arquivo de Travamento : /var/lock
│ C – Programa de Entrada :
│ D – Programa de Saída :
│ E – Bps/Paridade/Bits : 38400 8N1
│ F – Controle de Fluxo por Hardware : Sim
│ G – Controle de Fluxo por Software : Não
│
│ Alterar qual configuração?
└──────────────────────────────────────────────────────────┘
</syntaxhighlight>
- Altere os seguintes parâmetros:
- Dispositivo Serial : /dev/ttSy0
- Bps/Paridade/Bits : 9600 8N1
- Controle de Fluxo por Hardware : Não
- Seu menu ficará da seguinte forma:
┌───────────────────────────────────────────────────────┐
│ A – Dispositivo Serial : /dev/ttSy0
│ B – Localização do Arquivo de Travamento : /var/lock
│ C – Programa de Entrada :
│ D – Programa de Saída :
│ E – Bps/Paridade/Bits : 9600 8N1
│ F – Controle de Fluxo por Hardware : Não
│ G – Controle de Fluxo por Software : Não
│
│ Alterar qual configuração?
└───────────────────────────────────────────────────────┘
</syntaxhighlight>
- Após feitas essas configurações volte ao menu principal com a tecla "Enter":
┌────[configuração]──────────────────────┐
│ Nomes de arquivos e rotas
│ Protocolos de transferência de arquivos
│ Configuração da porta serial
│ Modem e discagem
│ Tela e teclado
│ Salvar configuração como dfl
│ Salvar configuração como..
│ Sair
│ Sair do Minicom
└───────────────────────────────────────┘
</syntaxhighlight>
- Salve as suas configurações na opção "Salvar configuração com dfl", e saia do Minicom na opção "Sair".
- Caso o roteador esteja corretamente conectado, será aberta a interface de configuração do roteador, assim execute os comandos a seguir:
enable;
configure terminal;
- Para configurar a interface serial:
interface serial 0;
ip address 10.0.0.1/30;
encapsulation ppp;
exit;
- Para configurar a interface ethernet:
interface fastethernet 0;
ip address 172.18.0.1/24;
exit;
exit;
- Para salvar as configurações:
wr;
</syntaxhighlight>
6º Dia - 20/06/2011
- Continuamos a configuração em paginas PHP, Iniciamos a criação de Scripts em bash para criar e direcionar arquivos que configure o DNS do cliente.
7º Dia - 21/06/2011
- A equipe continua na configuração das paginas em PHP e na resolução dos Scripts em Bash, para direcionar os arquivos de criação do DNS dos clientes.
Configurações DNS.
Arquivo /etc/bind/named.conf.local
//
// Do any local configuration here
//
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
zone "bigodes.sj.ifsc.edu.br" IN {
type master;
file "/etc/bind/bigodes.zone";
allow-update { none; };
allow-transfer { 200.135.37.126; };
};
zone "37.135.200.in-addr.arpa" {
type master;
file "/etc/bind/zonareversa.zone";
};
zone "webmail.bigodes.sj.ifsc.edu.br" IN {
type master;
file "/etc/bind/webmail.zone";
};
//
//SUBDOMINIOS
//
//oi
zone "oi.bigodes.sj.ifsc.edu.br" IN {
type master;
file "/etc/bind/oi.zone";
};
Aquivo /etc/bind/bigodes.zone
$TTL 86400
@ IN SOA m.bigodes.sj.ifsc.edu.br. root (
2011061400 ;serial
3H ;refresh
15M ;retry
1W ;expiry
1D) ;minimum
IN NS m.bigodes.sj.ifsc.edu.br.
IN MX 0 m.bigodes.sj.ifsc.edu.br.
localhost IN CNAME bigodes.sj.ifsc.edu.br.
$ORIGIN bigodes.sj.ifsc.edu.br.
m A 200.135.37.101
www A 200.135.37.101
mail A 200.135.37.101
Arquivo de configuração da ZONA REVERSA /etc/bind/zonareversa.zone
$TTL 86400
@ IN SOA m.bigodes.sj.ifsc.edu.br. root (
2011061500 ;
1d ;
1h ;
1w ;
1d ; )
IN NS m.bigodes.sj.ifsc.edu.br.
100 IN PTR m.bigodes.sj.ifsc.edu.br.
Configuração cliente: /etc/bind/oi.zone
$TTL 86400
@ IN SOA m.bigodes.sj.ifsc.edu.br bigodes (
2011070874 ;serial
3H ;refresh
15M ;retry
1W ;expiry
1D) ;minimum
IN NS m.oi.bigodes.sj.ifsc.edu.br.
IN MX 0 m.oi.bigodes.sj.ifsc.edu.br.
localhost IN A 127.0.0.1
$ORIGIN oi.bigodes.sj.ifsc.edu.br.
m A 200.135.37.101
www A 200.135.37.101
mail A 200.135.37.101
Arquivo /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 200.135.37.101
netmask 255.255.255.192
gateway 200.135.37.126
Arquivo /etc/resolv.conf
domain bigodes.sj.ifsc.edu.br
search bigodes.sj.ifsc.edu.br
nameserver 200.135.37.101
Configurações Postfix
Configuração no arquivo /etc/postfix/main.cf
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
readme_directory = no
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
myhostname = m.bigodes.sj.ifsc.edu.br
mydomain = bigodes.sj.ifsc.edu.br
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = $myhostname
mydestination = $myhostname
mynetworks_style = subnet
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
# Para o cliente ter email cliente@subdominio.bigodes.sj.ifsc.edu.br
best_mx_transport = local
virtual_alias_domains = hash:/etc/postfix/mydomains
virtual_alias_maps = hash:/etc/postfix/virtual
#mydestination = $myhostname, $virtual_alias_domains
home_mailbox = Maildir/
Arquivo de configuração /etc/postfix/virtual
bigodes.sj.ifsc.edu.br Principal
root@bigodes.sj.ifsc.edu.br root
oi.bigodes.sj.ifsc.edu.br Dominio_oi
oi@oi.bigodes.sj.ifsc.edu.br oi
Aquivo de configuração /etc/postfix/mydomains
bigodes.sj.ifsc.edu.br OK
oi.bigodes.sj.ifsc.edu.br OK
Configuração Apache
Arquivos /etc/apache2/sites-available/default e /etc/apache2/sites-enabled/default
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
Exemplo arquivo virtualhost cliente.
/etc/apache2/site-availabre/oi
<VirtualHost *:80>
ServerName oi.bigodes.sj.ifsc.edu.br
DocumentRoot /var/www/oi
ServerAlias *oi.bigodes.sj.ifsc.edu.br
ErrorLog /var/log/apache2/oi-error.log
<Directory /var/www/oi>
Options Indexes
DirectoryIndex index.html index.php
order allow,deny
allow from all
</Directory>
</VirtualHost>
Trecho do arquivo /var/www/listagem.php, que cria os arquivos de configurações do cliente.
*// criando o diretorio para o apache
*$diretorio = "/var/www/$nome";
*if(mkdir($diretorio))
*//criando o arquivo index.html para o usuarioi
*$arquivo = fopen("/var/www/$nome/index.html" , "a");
*//nome para colocar no titulo do site do usuario
*fwrite($arquivo, "<*html><*head><*title>Bem Vindo $nome !!</title></head>\n");
*// colocar o que deseja no site do cliente
*fwrite($arquivo, "<*body>
*<body bgcolor=#2E8B57>
*<*h1> <*center>
*<*b>
*Bem vindo $nome!! <*br>
*<*/h1>
*Você acaba de adquirir uma assinatura com a empresa Bigodes Solutions,
*onde você terá sua página totalmente personalizada e uma conta de e-mail totalmente grátis.
<*br>
*Você está visualizando sua pagina inicial, que atualmente está com a nossa configuração,
*você poderá acessar com o dominio escolhido www.$dominio.bigodes.sj.ifsc.edu.br. em qualquer lugar que tenha acesso a internet.
<*br>
*DESENVOLVEDORES:
<*br>
*Ademir Lucilio
*Amarildo Junkes
*Augusto Buttemberg
*Daniel Arndt
*Evandro Schutz
*Maicon Guesser
<*br>
*Para alterar a página e deixá-la como você precisa, basta entrar em contato com um de nossos desenvolvedores,
*clicando no link abaixo e já usufruindo da sua conta de e-mail.
*<a href=http://www.webmail.bigodes.sj.ifsc.edu.br target=_blank> Webmail Bigodes Solutions </a>
*<EMBED SRC=/var/www/relogiodigital.swf bgcolor=#2E8B57 align=left width=150 height=150>
<*br>
<*br>
<*br>
*<*center><*h1>Bigodes Solutions
*<*/body>
*<*/html>");
*fclose($arquivo);
É criado diretório com o nome do cliente, e o seu index.html
Ex: /var/www/cliente/index.html
Scripts de configurações.
Este script faz a criação do email do cliente e restarta os serviços.
#!/bin/bash
#Adicionando um usuario no sistema
echo "$1:$1::::/home/$1:/bin/bash" > /etc/scripts/criausuario.txt #redireciona os dados do usuario para um arquivo que contem as informacoes para criacao da conta
sudo newusers /etc/scripts/criausuario.txt # cria o usuario no sistema
sudo maildirmake.dovecot /home/$1/Maildir
#dar permissao para as pastas do usuario
sudo maildirmake.dovecot /home/$1/Maildir/.Drafts
sudo maildirmake.dovecot /home/$1/Maildir/.Sent
sudo maildirmake.dovecot /home/$1/Maildir/.Trash
sudo maildirmake.dovecot /home/$1/Maildir/.Templates
sudo chown -R $1 /home/$1/Maildir/
sudo chmod -R go-rwx /home/$1/Maildir
#cria um dominio virtual no postfix
echo "$2.bigodes.sj.ifsc.edu.br OK" >> /etc/postfix/mydomains
#associa o usuario ao dominio virtual do mesmo
echo "$2.bigodes.sj.ifsc.edu.br Dominio_$2" >>/etc/postfix/virtual
echo "$1@$2.bigodes.sj.ifsc.edu.br $1" >>/etc/postfix/virtual
#reinicia o servico do postfix
sudo /usr/sbin/postmap /etc/postfix/virtual
sudo /usr/sbin/postmap /etc/postfix/mydomains
sudo /etc/init.d/postfix restart
sudo service dovecot restart
Exclui email do cliente e restarta o serviço
#!/bin/bash
#$1 nome do usuario
#$2 nome do dominio
IFS=$'\n'
#Excluir linha no arquivo /etc/bind/named.conf.local
echo > /etc/postfix/exclui.email.bkp #cria um arquivo temporario
flag=0 #flag para verificar quantas linhas serão apagadas do arquivo
arq=`cat /etc/postfix/mydomains`
for linha in $arq; do
teste=`echo $linha | grep $2` #filtra o nome do dominio
#teste que verifica o nome do usuário e exclui seu dominio
if ! [ -z $teste ] #testa se nesta linha achou o nome. Se sim seta a flag
then
flag=1
fi
if [ -z $teste ] # se não tiver o nome...
then
if [ $flag -ge 1 ] #...verifica se a flag ta setada...
then
flag=$((flag+1)) #incrementa a flag (1)
else # ...e se não tiver setada, escreve no arquivo temporario
echo "$linha" >> /etc/postfix/exclui.email.bkp
fi
fi
#if [ $flag -gt 1 ] #(1) ate chegar a 5, etão zera a flag pq acabaram os campos que pertencem ao usuário
# then flag=0
#fi
flag=0
done
echo > /etc/postfix/mydomains
arquivo=`cat /etc/postfix/exclui.email.bkp`
for linha1 in $arquivo; do
echo "$linha1" >> /etc/postfix/mydomains #filtra o nome do dominio
done
echo > /etc/postfix/exclui.email.bkp #copia do temp para o original e exclui o temporario.
#######################################################################
#######################################################################
flag=0 #flag para verificar quantas linhas serão apagadas do arquivo
arq=`cat /etc/postfix/virtual`
for linha in $arq; do
teste=`echo $linha | grep $2` #filtra o nome do dominio
#teste que verifica o nome do usuário e exclui seu dominio
if ! [ -z $teste ] #testa se nesta linha achou o nome. Se sim seta a flag
then
flag=1
fi
if [ -z $teste ] # se não tiver o nome...
then
if [ $flag -ge 1 ] #...verifica se a flag ta setada...
then
flag=$((flag+1)) #incrementa a flag (1)
else # ...e se não tiver setada, escreve no arquivo temporario
echo "$linha" >> /etc/postfix/exclui.email.bkp
fi
fi
#if [ $flag -gt 1 ] #(1) ate chegar a 5, etão zera a flag pq acabaram os campos que pertencem ao usuário
# then flag=0
#fi
flag=0
done
echo > /etc/postfix/virtual
arquivo=`cat /etc/postfix/exclui.email.bkp`
for linha1 in $arquivo; do
echo "$linha1" >> /etc/postfix/virtual #filtra o nome do dominio
done
echo > /etc/postfix/exclui.email.bkp #copia do temp para o original e exclui o temporario.
######################################################################
#remove a conta de usuario do servidor
sudo userdel -r $1
######################################################################
#reinicia o serviçoPostfix
sudo /usr/sbin/postmap /etc/postfix/virtual
sudo /usr/sbin/postmap /etc/postfix/mydomains
sudo /etc/init.d/postfix restart
Cria domínios e restarta o serviço.
#!/bin/bash
#$1 nome do usuario
#$2 nome do dominio
#adiciona linhas no named.conf.local para inclusão de novo dominio
echo "//$2" >> /etc/bind/named.conf.local
echo "zone \"$2.bigodes.sj.ifsc.edu.br\" IN {" >> /etc/bind/named.conf.local
echo " type master;" >> /etc/bind/named.conf.local
echo " file \"/etc/bind/$2.zone\";" >> /etc/bind/named.conf.local
#echo " allow-update { none; };" >> /etc/bind/named.conf.local
#echo " allow-transfer { 200.135.37.101; };" >> /etc/bind/named.conf.local
echo "};" >> /etc/bind/named.conf.local
#fim de adicionar linhas no named.conf.local
touch /etc/bind/$2.zone #cria o arquivo zone do dominio
data=`date +%Y%m%d` # para controle do serial
#cria o sub-dominio do usuario
echo "$"TTL" 86400" >> /etc/bind/$2.zone
echo "@ IN SOA m.bigodes.sj.ifsc.edu.br bigodes (" >> /etc/bind/$2.zone
echo " $data$(($RANDOM%100)) ;serial" >> /etc/bind/$2.zone
echo " 3H ;refresh" >> /etc/bind/$2.zone
echo " 15M ;retry" >> /etc/bind/$2.zone
echo " 1W ;expiry" >> /etc/bind/$2.zone
echo " 1D) ;minimum" >> /etc/bind/$2.zone
echo >> /etc/bind/$2.zone
echo " IN NS m.$2.bigodes.sj.ifsc.edu.br." >> /etc/bind/$2.zone
echo " IN MX 0 m.$2.bigodes.sj.ifsc.edu.br." >> /etc/bind/$2.zone
echo "localhost IN A 127.0.0.1" >> /etc/bind/$2.zone
echo "$"ORIGIN" $2.bigodes.sj.ifsc.edu.br." >> /etc/bind/$2.zone
echo "m A 200.135.37.101" >> /etc/bind/$2.zone
echo "www A 200.135.37.101" >> /etc/bind/$2.zone
echo "mail A 200.135.37.101" >> /etc/bind/$2.zone
#fim do sub-dominio do usuario
sudo /etc/init.d/bind9 restart
#restartar o apache pois o site nao faz
sudo /etc/init.d/apache2 reload
Exclui Domínios e restarta o serviço.
#!/bin/bash
#$1 nome do usuario
#$2 nome do dominio
IFS=$'\n'
#Excluir linha no arquivo /etc/bind/named.conf.local
touch /etc/scripts/bkp.zone #cria um arquivo temporario
flag=0 #flag para verificar quantas linhas serão apagadas do arquivo
arq=`cat /etc/bind/named.conf.local`
for linha in $arq; do
teste=`echo $linha | grep //$2` #filtra o nome do dominio
#teste=`echo $linha | grep $1 | cut -d "/" -f 3` #filtra o nome "do usuario"
#teste que verifica o nome do usuário e exclui seu dominio
if ! [ -z $teste ] #testa se nesta linha achou o nome. Se sim seta a flag
then
flag=1
fi
if [ -z $teste ] # se não tiver o nome...
then
if [ $flag -ge 1 ] #...verifica se a flag ta setada...
then
flag=$((flag+1)) #incrementa a flag (1)
else # ...e se não tiver setada, escreve no arquivo temporario
echo "$linha" >> /etc/scripts/bkp.zone
fi
fi
if [ $flag -gt 4 ] #(1) ate chegar a 5, etão zera a flag pq acabaram os campos que pertencem ao usuário
then flag=0
fi
done
mv /etc/scripts/bkp.zone /etc/bind/named.conf.local #copia do temp para o original e exclui o temporario.
#######################################################################
#excluir o arquivo zone do usuario
rm -r /etc/bind/$2.zone #exclui o arquivo zone
######################################################################
#reinicia o serviço DNS
sudo /etc/init.d/bind9 restart
#restartando o apache pois o site nao faz isso
sudo /etc/init.d/apache2 reload
Cria usuário no arquivo /etc/freeradius/users e restarta o serviço.
#!/bin/bash
#editando o arquivo de usuarios do radius
echo "#$1" >> /etc/freeradius/users
echo "$1 Cleartext-Password := \"$1\" " >> /etc/freeradius/users
#restartando o radius
sudo /etc/init.d/freeradius restart
Exclui usuário do arquivo /etc/freeradius/users
#!/bin/bash
#$1 nome do usuario
#$2 nome do dominio
IFS=$'\n'
#Excluir linha no arquivo /etc/bind/named.conf.local
echo > /etc/freeradius/exclui.radius.bkp #cria um arquivo temporario
flag=0 #flag para verificar quantas linhas serão apagadas do arquivo
arq=`cat /etc/freeradius/users`
for linha in $arq; do
teste=`echo $linha | grep $1` #filtra o nome do dominio
#teste que verifica o nome do usuário e exclui seu dominio
if ! [ -z $teste ] #testa se nesta linha achou o nome. Se sim seta a flag
then
flag=1
fi
if [ -z $teste ] # se não tiver o nome...
then
if [ $flag -ge 1 ] #...verifica se a flag ta setada...
then
flag=$((flag+1)) #incrementa a flag (1)
else # ...e se não tiver setada, escreve no arquivo temporario
echo "$linha" >> /etc/freeradius/exclui.radius.bkp
fi
fi
#if [ $flag -gt 1 ] #(1) ate chegar a 5, etão zera a flag pq acabaram os campos que pertencem ao usuário
# then flag=0
#fi
flag=0
done
echo > /etc/freeradius/users
arquivo=`cat /etc/freeradius/exclui.radius.bkp`
for linha1 in $arquivo; do
echo "$linha1" >> /etc/freeradius/users #filtra o nome do dominio
done
echo > /etc/freeradius/exclui.radius.bkp #copia do temp para o original e exclui o temporario.
#######################################################################
#reinicia o serviçoPostfix
sudo /etc/init.d/freeradius restart
Cria um link simbólico no /etc/apache2/sites-enabled
#!/bin/bash
ln -s /etc/apache2/sites-available/$1 /etc/apache2/sites-enabled/$1
Configuração PHP.
Arquivo index, localizado no /var/www/index
<*?
session_start();
if (isset($_SESSION['nome'])){
header("location: cadastrar.php");
}else{
?*>
<*html>
<*head>
<*meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<title>Hospedagem Web<*/title>
<*/head>
<*body>
<*p style="text-align:center;margin-left:auto;margin-right:auto;">Bem
vindo ao sistema Bigodes de inclusão digital! <br
<*img alt="Bigodino" src="1986-mascote-da-copa.jpg"
style="display: block; text-align: center; margin-left: auto; margin-right: auto"
width="166" height="200">
<*/p>
<*form name="formTeste" action="autenticar.php" method="post">
<*p style="text-align:center;margin-left:auto;margin-right:auto;">Usuário:
<*input type="text" name="nome">
<*p style="text-align:center;margin-left:auto;margin-right:auto;">Senha:
<*input type="password" name="senha">
<*p style="text-align:center;margin-left:auto;margin-right:auto;">
<*input type="submit" value="Entrar" name="b_enviar">
<*/form>
<*/body>
<*/html>
Arquivo de autenticação.
Entrando com login e senha do ADMINISTRADOR.
/var/www/autenticar.php
<*?
session_start();
$usuario = $_POST['nome'];
$senha = $_POST['senha'];
if (($usuario == "login") && ($senha == "senha")){
$_SESSION['nome'] = $usuario;
header("location: listagem2.php");
}else{
header("location: index.php");
}
?*>
Aquivo de listagem
Este arquivo mostra os domínios existentes, com opções de incluir, editar e excluir.
/var/www/listagem2.php
<*?
session_start();
if (!isset($_SESSION['nome'])){
header("location: index.php");
}else {
?*>
<*html>
<*head>
<*title>Administracão de dminios</title>
<*/head>
<*body>
<*a href= "destroy.php">Sair</a>
<*br><*font size="5"><*p style="text-align:center;margin-left:auto;margin-right:auto;">Listagem de usuários cadastrados
<*br>
<*table style="text-align:center;margin-left:auto;margin-right:auto;" border="1" cellpadding="10">
<*tr align=center>
<*td><*font size=5> Nome <*font><*/td>
<*td><*font size=5> Dominio <*font><*/td>
<*td><*font size=5> Acão <*font><*/td>
<*/tr>
<*?
//conectando no servidor
$conexao = mysql_connect("localhost","root","bigode24");
//selecao da base de dados
$base_ok = mysql_select_db("bigodes",$conexao);
//obtendo os registro da tabela contatos
$consulta = "SELECT * from bigodes";
$resultado = mysql_query($consulta,$conexao);
//percorrendo a linhas obtidas pela consulta
while($linha = mysql_fetch_array($resultado)){
echo "<*tr align=center> <*td>";
echo "<*a href='alterar.php?codigo=" . $linha['codigo'] . "'>";
echo "". $linha['nome']. "<*/a>";
echo "<*/td> <*td>";
echo $linha['dominio'];
echo "<*/td> <*td>";
echo "<*a href='confirma_excluir.php?codigo=" . $linha['codigo'] . "'>";
echo " Excluir <*/a>";
echo "<*/td> <*/tr>";
}
//liberando a consulta
mysql_free_result($resultado);
//fechando a conexao
mysql_close($conexao);
?*>
<*/table>
<*P style="text-align:center;margin-left:auto;margin-right:auto;"><a href="cadastrar.php">Adicionar novo dominio</a>
<*img alt="Bigodino" src="1986-mascote-da-copa.jpg" style="float: right" width="366" height="400">
<*/body>
<*/html>
<*?
}
?*>
Visualizar os campos para incluir os dados do novo usuário.
<*?
session_start();
if (!isset($_SESSION['nome'])){
header("location: index.php");
}else{
?>
<*html>
<*head>
<*title>Adicionar Cliente<*/title>
<*/head>
<*body>
<*p><a href= "listagem2.php">Voltar<*/a>
<*center>Adicionar Usuário e Domínio<*br><*br>
<*form name="formTeste" action="teste_dominio.php" method="post">
<*p style="text-align:center;margin-left:auto;margin-right:auto;">Nome do cliente:
<*input type="text" name="nome">
<*p style="text-align:center;margin-left:auto;margin-right:auto;">Dominio:
<*input type="text" name="dominio"> .bigodes.sj.ifsc.edu.br
<*p style="text-align:center;margin-left:auto;margin-right:auto;">
<*input type="submit" name="b_enviar" value="Criar">
<*/form>
<*/body>
<*/html>
<*?
}
?>
Adicionar usuário no sistema.
/var/www/listagem.php
<*?
session_start();
if (!isset($_SESSION['nome'])){
header("location: index.php");
}else {
$nome=$_SESSION['nome3'];
$dominio=$_SESSION['dominio3'];
$conexao = mysql_connect("localhost","root","bigode24") or die ("erro na conexÃo");
//selecao da base de dados radius
$base_ok = mysql_select_db("bigodes",$conexao) or die ("erro na base");
//inserindo um registro - reparar que aqui esta' esta' sendo incluido o dominio, junto com a variavel $dominio
$inserir = "INSERT INTO bigodes (nome,dominio) VALUES ('$nome','$dominio.bigodes.sj.ifsc.edu.br')";
mysql_query($inserir,$conexao) or die ("erro no query");
//fechando a conexao
mysql_close($conexao);
// criando o diretorio para o apache
$diretorio = "/var/www/$nome";
if(mkdir($diretorio))
//criando o arquivo index.html para o usuarioi
$arquivo = fopen("/var/www/$nome/index.html" , "a");
//nome para colocar no titulo do site do usuario
fwrite($arquivo, "<*html><*head><*title>Bem Vindo $nome !!<*/title><*/head>\n");
// colocar o que deseja no site do cliente
fwrite($arquivo, "<*body>
<*body bgcolor=#2E8B57>
<*h1> <*center>
<*b>
Bem vindo $nome!! <*br>
<*/h1>
Você acaba de adquirir uma assinatura com a empresa Bigodes Solutions, <*br>
onde você terá sua página totalmente personalizada e uma conta de e-mail totalmente grátis. <*br>
<*br>
Você está visualizando sua pagina inicial, que atualmente está com a nossa configuração, <*br>
você poderá acessar com o dominio escolhido www.$dominio.bigodes.sj.ifsc.edu.br. em qualquer lugar que tenha acesso a internet. <*br>
<*br>
DESENVOLVEDORES:
<*br>
Ademir Lucilio<*br>
Amarildo Junkes<*br>
Augusto Buttemberg<*br>
Daniel Arndt<*br>
Evandro Schutz<*br>
Maicon Guesser <*br>
<*br>
Para alterar a página e deixá-la como você precisa, basta entrar em contato com um de nossos desenvolvedores,
clicando no link abaixo e já usufruindo da sua conta de e-mail.<*br>
<*a href=http://www.webmail.bigodes.sj.ifsc.edu.br target=_blank> Webmail Bigodes Solutions <*/a><*br>
<*EMBED SRC=/var/www/relogiodigital.swf bgcolor=#2E8B57 align=left width=150 height=150>
<*br>
<*br>
<*br>
<*center><*h1>Bigodes Solutions
<*/body>
<*/html>");
fclose($arquivo);
$apache = fopen("/etc/apache2/sites-available/$nome" , "a");
fwrite($apache, "
<*VirtualHost *:80>
ServerName $dominio.bigodes.sj.ifsc.edu.br
DocumentRoot /var/www/$nome
ServerAlias *$dominio.bigodes.sj.ifsc.edu.br
ErrorLog /var/log/apache2/$nome-error.log
<*Directory /var/www/$nome>
Options Indexes
DirectoryIndex index.html index.php
order allow,deny
allow from all
<*/Directory>
<*/VirtualHost>");
fclose($apache);
//criando usuario radius
$radius = "/etc/scripts/radius.sh";
shell_exec("$radius $nome");
//criando link simbolico para o apache
$script = "/etc/scripts/apache.sh";
shell_exec("$script $nome");
//criando arquivo de dns
//apenas inseri a script, nao sei se a script esta' ok
$dns = "/etc/scripts/cria_dominio.sh";
shell_exec("$dns $nome $dominio");
//criando o e-mail
$email = "/etc/scripts/cria_email.sh";
shell_exec("$email $nome $dominio");
echo header("location: cadastrar.php");
}
?>
Arquivos de alterações dos dados de clientes.
/var/www/alterar.php
abre a base de dados para exibir nome e domínio atual e encaminha os novos dados para o arquivo listagem_alterar.php
<*?
session_start();
if (!isset($_SESSION['nome'])){
header("location: index.php");
}else{
$codigo=$_GET['codigo'];
$conexao = mysql_connect("localhost","root","bigode24");
//selecao da base de dados
$base_ok = mysql_select_db("bigodes",$conexao);
//apresenta os valores antigos na caixa de texto
$resultado = mysql_query("SELECT nome,dominio FROM bigodes WHERE codigo = '$codigo'");
$row = mysql_fetch_row($resultado);
$nome = $row[0];
$dominio = $row[1];
//separar a varialvel dominio pelo "." para nao aparecer o ".bigodes.sj.ifsc.edu.br"
$array=explode(".",$dominio);
//pega a primeira palavra do subdominio e joga novamente em dominio
$dominio=$array[0];
//fechando a conexao
mysql_close($conexao);
?>
<*html>
<*head>
<*title>Alterar<*/title>
<*/head>
<*body>
<*p><*a href= "listagem2.php">Voltar<*/a><*br>
<*center>Alterar Usuário ou Dominio<*br><*br>
<*form name="formTeste" action="listagem_alterar.php" method="GET">
<*p style="text-align:center;margin-left:auto;margin-right:auto;">Nome do Usuário:
<*INPUT TYPE=TEXT NAME="nome2" VALUE="<*? echo $nome; ?>"><*br><*br>
<*p style="text-align:center;margin-left:auto;margin-right:auto;">Dominio:<*br> <*INPUT TYPE=TEXT NAME="dominio2" VALUE="<*? echo $dominio; ?>"> .bigodes.sj.ifsc.edu.br
<*br>
<*input type="hidden" name="codigo2" value="<? echo " $codigo" ?>" >
<*br>
<*p style="text-align:center;margin-left:auto;margin-right:auto;"><*input type="submit" name="submit" value="Alterar Dados" >
<*/form>
<*/body>
<*/html>
<?
Arquivo que testa a existencia do usuário, domínio e se possui campo em braco.
/var/www/teste_dominio
<*?
session_start();
if (!isset($_SESSION['nome'])){
header("location: index.php");
}else {
$nome=$_POST['nome'];
$dominio=$_POST['dominio'];
if ( $nome == || $dominio == ) {
echo "Nao deixe campos em branco!";
?>
<*html><*body>
<*br><*br>
<*a href= "cadastrar.php">Voltar<*/a>
<*?
}else{
$conexao = mysql_connect("localhost","root","bigode24") or die ("erro na conex�o");
$base_ok = mysql_select_db("bigodes",$conexao) or die ("erro na base");
$consulta = "SELECT dominio FROM bigodes WHERE dominio = '$dominio.bigodes.sj.ifsc.edu.br'";
$resultado = mysql_query($consulta,$conexao);
$row = mysql_fetch_row($resultado);
$teste = $row[0];
$consulta2 = "SELECT nome FROM bigodes WHERE nome = '$nome'";
$resultado2 = mysql_query($consulta2,$conexao);
$row = mysql_fetch_row($resultado2);
$teste2 = $row[0];
mysql_close($conexao);
if ( $teste == && $teste2 == ) {
$_SESSION['nome3']=$nome;
$_SESSION['dominio3']=$dominio;
header("location: listagem.php");
}else{
//o resultado que aparece quando ja existe o dominio escolhido
echo
"<*font size=5>
Dominio ou Nome ja existe. <*br>
Adicione novo dominio ou nome!
<*/font>";
?>
<*br>
<*br>
<*a href= "cadastrar.php">Voltar<*/a>
<*/body>
<*/html>
<*?
}
}
}
?>
Aparece o campo "confirma excluir"
/var/www/confirma_excluir
<*?
session_start();
if (!isset($_SESSION['nome'])){
header("location: index.php");
}else {
$codigo=$_GET['codigo'];
}
?>
<*html>
<*head>
<*title>Confirmar Exclusão<*/title>
<*/head>
<*body>
<*?
$conexao = mysql_connect("localhost","root","bigode24") or die ("erro na base");
//selecao da base de dados
$base_ok = mysql_select_db("bigodes",$conexao) or die ("erro na base");
$consulta = "SELECT nome from bigodes WHERE codigo='$codigo'";
$resultado = mysql_query($consulta,$conexao);
while($linha = mysql_fetch_array($resultado)){
$nome = $linha["nome"];
}
//fechando a conexao
mysql_close($conexao);
?>
<*br>
<*p style="text-align:center;margin-left:auto;margin-right:auto;">Você realmente deseja excluir o cliente "<*? echo "$nome" ?>" ? <*br>
<*br><*br>
<*?
echo "<*a href='excluir.php?codigo=" . $codigo . "'>Sim<*/a>"
?>
<*p style="text-align:center;margin-left:auto;margin-right:auto;"><*a href="listagem2.php">Nao<*/a>
<*/body>
<*/html>
Exclui os dados do cliente
/var/www/excluir.php
<*?
session_start();
if (!isset($_SESSION['nome'])){
header("location: index.php");
}else {
$codigo=$_GET['codigo'];
}
?>
<*html>
<*head>
<*title>Confirmar Exclusão<*/title>
<*/head>
<*body>
<*?
$conexao = mysql_connect("localhost","root","bigode24") or die ("erro na base");
//selecao da base de dados
$base_ok = mysql_select_db("bigodes",$conexao) or die ("erro na base");
$consulta = "SELECT nome from bigodes WHERE codigo='$codigo'";
$resultado = mysql_query($consulta,$conexao);
while($linha = mysql_fetch_array($resultado)){
$nome = $linha["nome"];
}
//fechando a conexao
mysql_close($conexao);
?>
<*br>
<*p style="text-align:center;margin-left:auto;margin-right:auto;">Você realmente deseja excluir o cliente "<*? echo "$nome" ?>" ?
<*br><*br>
<*?
echo "<*a href='excluir.php?codigo=" . $codigo . "'>Sim<*/a>"
?>
<*p style="text-align:center;margin-left:auto;margin-right:auto;"><*a href="listagem2.php">Nao<*/a>
<*/body>
<*/html>
Configurações Radius
Servidor Radius,
apt-get install free-radius
vi /etc/freeradius/users
Descomentar a linha, > steve Cleartext-Password := "testing"
#steve Cleartext-Password := "testing"
# Service-Type = Framed-User,
# Framed-Protocol = PPP,
# Framed-IP-Address = 172.16.3.33,
# Framed-IP-Netmask = 255.255.255.0,
# Framed-Routing = Broadcast-Listen,
# Framed-Filter-Id = "std.ppp",
# Framed-MTU = 1500,
# Framed-Compression = Van-Jacobsen-TCP-IP
Verificar se o serviço está no ar,
ps ax|grep free
Restarta,
service freeradius restart
Teste para ver se está funcionando,
root@bigodes:/etc/freeradius# radtest steve testing 127.0.0.1 1 testing123
Sending Access-Request of id 59 to 127.0.0.1 port 1812
User-Name = "steve"
User-Password = "testing"
NAS-IP-Address = 127.0.1.1
NAS-Port = 1
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=59, length=20
Caso não,
root@bigodes:/etc/freeradius# radtest steve testin 127.0.0.1 1 testing123
Sending Access-Request of id 170 to 127.0.0.1 port 1812
User-Name = "steve"
User-Password = "testin"
NAS-IP-Address = 127.0.1.1
NAS-Port = 1
rad_recv: Access-Reject packet from host 127.0.0.1 port 1812, id=170, length=20
vi clients.conf
client 200.135.37.66 {
secret = ier
shortname = AC-PPPoE
}
Novamente restarta,
root@bigodes:/etc/freeradius# !serv
service freeradius restart
* Stopping FreeRADIUS daemon freeradius [ OK ]
* Starting FreeRADIUS daemon freeradius [ OK ]
Verificar com o tcpdump,
root@bigodes:/etc/freeradius# tcpdump -i eth0 -ln -vv -s 512 udp port 1812
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 512 bytes
21:41:47.727956 IP (tos 0x0, ttl 60, id 12066, offset 0, flags [none], proto UDP (17), length 90)
200.135.37.66.1814 > 200.135.37.101.1812: [udp sum ok] RADIUS, length: 62
Access Request (1), id: 0xda, Authenticator: c95bde6c431fa3d00c96d6d8354841ed
Username Attribute (1), length: 7, Value: steve
0x0000: 7374 6576 65
Password Attribute (2), length: 18, Value:
0x0000: b626 b5ed 464b 9c2d 05d6 f8d0 34c0 d850
NAS IP Address Attribute (4), length: 6, Value: 127.0.1.1
0x0000: 7f00 0101
NAS Port Attribute (5), length: 6, Value: 1
0x0000: 0000 0001
Proxy State Attribute (33), length: 5, Value: 179
0x0000: 3137 39
21:41:47.728184 IP (tos 0x0, ttl 64, id 43900, offset 0, flags [none], proto UDP (17), length 53)
200.135.37.101.1812 > 200.135.37.66.1814: [udp sum ok] RADIUS, length: 25
Access Accept (2), id: 0xda, Authenticator: 56b7a8b7c2aa5e63f947dac1a3601ba0
Proxy State Attribute (33), length: 5, Value: 179
0x0000: 3137 39
Servidor radius no AC,
ssh aluno@192.168.0.1
senha: aluno
aluno@ac:~$ sudo -s
senha: aluno
Cadastrando Dominios no Servidor Radius do AC,
root@ac:~# /root/add-realm.sh bigodes 200.135.37.101 bigodes.sj.ifsc.edu.br
root@ac:~# service freeradius restart
* Stopping FreeRADIUS daemon freeradius [ OK ]
* Starting FreeRADIUS daemon freeradius [ OK ]
Testando no Radius AC,
root@ac:~# radtest steve@bigodes.sj.ifsc.edu.br testing 127.0.0.1 1 testing123
Sending Access-Request of id 203 to 127.0.0.1 port 1812
User-Name = "steve@bigodes.sj.ifsc.edu.br"
User-Password = "testing"
NAS-IP-Address = 127.0.1.1
NAS-Port = 1
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=203, length=20