Mudanças entre as edições de "Projeto Integrador - 2011.1 - Teletec"
Linha 501: | Linha 501: | ||
<./html> | <./html> | ||
− | - Edição do Arquivo '''mod- | + | - Edição do Arquivo '''mod-dominio.php''': |
Esta pagina PHP recebe três variaveis com o dominio antigo do clinete, o novo dominio e o novo nome do cliente, estas variaveis são repassadas para o script "mod-dominio.sh" e este é executado modificando o dominio e o nome do cliente, depois de executar o script as informações do banco de dados tambem são modificadas e o serviço APACHE2 é reiniciado. | Esta pagina PHP recebe três variaveis com o dominio antigo do clinete, o novo dominio e o novo nome do cliente, estas variaveis são repassadas para o script "mod-dominio.sh" e este é executado modificando o dominio e o nome do cliente, depois de executar o script as informações do banco de dados tambem são modificadas e o serviço APACHE2 é reiniciado. | ||
Linha 535: | Linha 535: | ||
}else{ | }else{ | ||
− | $script = "/etc/teletec/mod-dominio.sh $antigo '$cliente' $dominio"; | + | $script = "sudo /etc/teletec/mod-dominio.sh $antigo '$cliente' $dominio"; |
exec("$script"); | exec("$script"); | ||
exec("/etc/init.d/apache2 restart"); | exec("/etc/init.d/apache2 restart"); | ||
Linha 639: | Linha 639: | ||
$script = "/etc/teletec/del-dominio.sh $dominio"; | $script = "/etc/teletec/del-dominio.sh $dominio"; | ||
exec("$script"); | exec("$script"); | ||
− | exec("/etc/init.d/apache2 restart"); | + | exec("sudo /etc/init.d/apache2 restart"); |
$conexao = mysql_connect("localhost","www-data","orelha1234"); | $conexao = mysql_connect("localhost","www-data","orelha1234"); | ||
$base_ok = mysql_select_db("teletec",$conexao); | $base_ok = mysql_select_db("teletec",$conexao); | ||
Linha 746: | Linha 746: | ||
header ("Location: adicionar.php"); | header ("Location: adicionar.php"); | ||
}else{ | }else{ | ||
− | $script = "/etc/teletec/add-dominio.sh '$cliente' $dominio"; | + | $script = "sudo /etc/teletec/add-dominio.sh '$cliente' $dominio"; |
exec("$script"); | exec("$script"); | ||
exec("/etc/init.d/apache2 restart"); | exec("/etc/init.d/apache2 restart"); |
Edição das 22h47min de 10 de julho de 2011
* Equipe 2 : TELETEC
INTEGRANTES TELETEC
* Daniel Estefano; estefano.daniel@gmail.com * Denis Teixeira; denisteixeira3@gmail.com * Leonardo Oliveira P.; leonardo-op@live.com * Odair de Moraes; odairdmoraes@hotmail.com * Robson de Carvalho; rob_carvalho12@hotmail.com * Vagner Cordeiro. cordeirotelecom@gmail.com
SOBRE A EMPRESA TELETEC - PROVEDORA DE ACESSO Á INTERNET:
Empresa especializada no ramo das Telecomunicações Oferece os seguintes serviços: # Conta de Usuário para cada cliente; # Conta de E-mail para cada cliente; # Uma página Web Padrão; # Instalação do Modem ADSL e do Cabeamento Estrurado; # Acesso Wirelles; # Suporte 24Horas. Contamos com 6 Técnicos em Telecomunicações especialistas no setor de redes para todo o suporte necessário. Contate um de nossos especialistas através do e-mail teletecifsc.googlegroups.com e faça já seu orçamento.
Etapas Iniciais de Configurações da Rede
# Instalação do Sistema Operacional:Ubuntu-Server; # Definido Sistema de Arquivo, Dividido em 3 Partições: 1 Partição Primátia, 1 Partição Secundária e uma Partição para Swap; # Definido nome do Domínio: teletec.sj.ifsc.edu.br; # Criado um Usuário: Tecnico; # Acesso via SSH ao Servidor Teletec.
Gerencia de Redes: Apache, Postfix e DNS
Configurações do servidor DNS:
- Edição do Arquivo para IP Estático: /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.100 netmask 255.255.255.192 gateway 200.135.37.126
- Edição do Arquivo do servidor DNS /etc/bind/named.conf
Indica todos os arquivos que vai fazer a configuração dele
// This is the primary configuration file for the BIND DNS server named. // // Please read /usr/share/doc/bind9/README.Debian.gz for information on the // structure of BIND configuration files in Debian, *BEFORE* you customize // this configuration file. // // If you are just adding zones, please do that in /etc/bind/named.conf.local include "/etc/bind/named.conf.options"; include "/etc/bind/named.conf.local"; include "/etc/bind/named.conf.default-zones"; include "/etc/bind/servidor.conf"; include "/etc/bind/tecnico.conf"; include "/etc/bind/daniel.conf";
- Edição do Arquivo de servidor DNS: named.conf.local /etc/bind/named.conf.local
É um arquivo padrão do BIND onde foi configurado o o nosso dominino TELETEC.
// // Do any local configuration here // // Consider adding the 1918 zones here, if they are not used in your // organization //include "/etc/bind/zones.rfc1918"8; zone "teletec.sj.ifsc.edu.br." IN { type master; file "/etc/bind/teletec.zone"; allow-update { none; }; };
- Edição do Arquivo de DNS Reverso: /etc/bind/37.135.200.in-addr.arpa O DNS Reverso resolve um endereço IP para um nome de servidor – por exemplo, ele poderia resolver 200.176.3.142 para exemplo.hipotetico.com.br.
$TTL 86400 @ IN SOA servidor.teletec.sj.ifsc.edu.br. root ( 2011061500 ; 1d ; 1h ; 1w ; 1d ; ) IN NS servidor.teletec.sj.ifsc.edu.br. 100 IN PTR servidor.teletec.sj.ifsc.edu.br.
- Edição do Arquivo para criar um subdomínio:/etc/bind/teletec.zone
Arquivo que traz todas as configurações de cada subdomínio.
$TTL 86400 @ IN SOA teletec.teletec.sj.ifsc.edu.br root ( 2011062901; 3H; 15M; 1W; 1D ); IN NS teletec.teletec.sj.ifsc.edu.br. IN MX 0 mail.teletec.sj.ifsc.edu.br. localhost IN A 127.0.0.1 $ORIGIN teletec.sj.ifsc.edu.br. teletec A 200.135.37.100 www A 200.135.37.100 mail A 200.135.37.100
- Configuração do servidor Apache
No servidor Apache foi feito a instalação com o comando:
apt-get install apache2
- Configuração do arquivo /etc/apache2/sites-enabled/teletec-default
NameVirtualHost 200.135.37.100:80 <VirtualHost 200.135.37.100:80> ServerAdmin webmaster@localhost ServerName www.teletec.sj.ifsc.edu.br DocumentRoot /var/www/teletec <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>
Na criação de um novo cliente vai ser criado um novo arquivo semelhante a esse com duas alterações nas linhas: ServerName www.teletec.sj.ifsc.edu.br onde vai ser acrescentado na frente do domínio o subdomínio do cliente exemplo: ServerName www.subdominio.teletec.sj.ifsc.edu.br e na linha DocumentRoot /var/www/teletec onde vai ser substituido teletec pelo nome do domínio do cliente por exemplo: DocumentRoot /var/www/cliente
- Configuração do servidor POSTFIX
- Primeiro foi feito a instalação com o comando:
apt-get install postfix
Em seguida o programa de instalação vai fazer algumas perguntas sobre a localização dos arquivos e alguns parâmetros
- Configuração do 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 = mail.teletec.sj.ifsc.edu.br virtual_alias_maps = hash:/etc/postfix/virtual alias_database = hash:/etc/aliases myorigin = $myhostname mydestination = $myhostname relayhost = mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all mydomain = teletec.sj.ifsc.edu.br mynetworks_style = subnet virtual_alias_domains = hash:/etc/postfix/mydomains
- Foi criado o arquivo /etc/postfix/virtual
Toda vez que for criado uma nova conta de e-mail vai ser acresentado duas linhas novas nesse arquivo como as que estão em negrito no arquivo abaixo so que onde tem a palavra padrao vai ser substituida pele nome do cliente
teletec.sj.ifsc.edu.br Principal robson.teletec.sj.ifsc.edu.br Subdominio1 robson@robson.teletec.sj.ifsc.edu.br robson padrao.teletec.sj.ifsc.edu.br padrao user@padrao.teletec.sj.ifsc.edu.br user
- Editar o arquivo mydomains /etc/postfix/mydomains
Nesse arquivo tem como primeira linha o dominio e na seguinte o subdominio e toda vez que for criado uma conta nova vai ser acresentado uma linha nova com o nome do subdominio do cliente.
teletec.sj.ifsc.edu.br OK robson.teletec.sj.ifsc.edu.br OK
- Executar os comandos para releitura e reinicialização do Postfix:
postmap /etc/postfix/virtual postmap /etc/postfix/mydomains service postfix restart
Instalação de Equipamento de Redes (Modem, Switch e Roteadores)
Configurações:
Instalação:
minicom -s
Configuração do Roteador Cisco 1700:
- Configuração dos Dois Roteadores Utilizando a ferramenta "Minicon" (Se fosse Windows seria Hyperterminal)
- Configuração dos dispositivos: Serial e Ethernet
- Configuração como Protocolo PPP
- "Configuração da porta serial":
┌─────────────[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 └────────────────────────────────────────┘
- "Alteração da Porta Serial"
┌──────────────────────────────────────────────────────────┐ │ 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? └──────────────────────────────────────────────────────────┘
- "Salvar configuração com dfl"
- Configurando a Interface Serial do Roteador:
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;
Radius
Para ter acesso a rede aDSL ou pela rede sem fio será usado Radius para que os usuários sejam autenticados. O RADIUS é um sistema utilizado para prover uma autenticação centralizada em redes dial-up, VPN's (Virtual Private Network) e redes sem fio. Ele tem um modelo cliente-servidor, onde o cliente é o Network Access Server (NAS). Esse servidor é responsável por obter a informação sobre o cliente e repassá-la para o servidor RADIUS, além de interpretar a resposta, dando ou não acesso ao cliente. O servidor RADIUS é responsável por receber pedidos de conexão, autenticar o usuário e repassar ao NAS as informações necessárias para esse dar acesso ao usuário na rede.
Arquivos configurados:
Configurar login e senha para o cliente Radius ( /etc/freeradius /users ):
“Usúario” Cleartext-Password := "senha" “Usúario” User-Password := "senha"
Teste antes se seu servidor Radius está autenticando usuáriosfaça o seguinte comando no AC PPPoE (que fica em Ac-server):
radtest seu_usuario sua_senha IP_do_seu_servidor_Radius 1 segredo_do_seu_servidor_Radius
Configurando o Servidor PPPoe (/etc/ppp/pppoe-servers-options):
require-chap auth lcp-echo-interval 10 lcp-echo-failure 2 ms-dns IP do seu servidor DNS netmask 255.255.255.0 noipdefault debug kdebug 4 plugin radius.so plugin radattr.so radius-config-file /etc/radiusclient/teletec.conf mru 1492 mtu 1492
Configuração do Cliente Radius ( etc/radiusclient/teletec.conf ):
auth_order radius login_tries 4 login_timeout 60 nologin /etc/nologin issue /etc/radiusclient/issue authserver 200.135.37.100 acctserver 200.135.37.100 servers /etc/radiusclient/servers dictionary /etc/radiusclient/dictionary login_radius /usr/sbin/login.radius seqfile /var/run/radius.seq mapfile /etc/radiusclient/port-id-map default_realm radius_timeout 10 radius_retries 3 login_local /bin/login
Configurando o IP do Servidor Radius ( /etc/radiusclient/servers ):
200.135.37.100 testing123
Integrando Radius ao Banco de Dados
Primeiro procedimento, instale o pacote.
apt-get install freeradius-mysql
Edite o arquivo de configuração do freeradius, e descomente a seguinte linha ( /etc/freeradius/radiusd.conf ):
$INCLUDE sql.conf
Para entrar no MySQL execute o comando:
mysql -u root -p
Crie uma base de dados somente para o Radius e dê ao usuário Radius a devida permissão para acesso a esta base. No shell do MySQL, execute os comandos:
CREATE DATABASE radius; GRANT ALL ON radius.* TO freerad@localhost IDENTIFIED BY "senha_do_usuário_freeradius"; exit;
Inserindo informações na base de dados:
mysql -u “usuário” -p “senha do usuário radius” “database” < /etc/freeradius/sql/mysql/schema.sql mysql -u “usuário” -p “senha do usuário radius” “database” < /etc/freeradius/sql/mysql/nas.sql
Editar o arquivo /etc/freeradius/sql.conf, colocando a senha do usuário Radius:
passwrod = "senha do usuário radius"
E descomente a linha do mesmo arquivo ( /etc/freeradius/sql.conf ) :
readclients = yes
Reinicie o FreeRadius:
service freeradius restart
Cabeamento Estruturado
Atividades Concluídas:
- o A central telefônica ao DSLAM - o O DSLAM ao armário de telecom da equipe, através de uma linha telefone + DSL - o armário da equipe a uma área de trabalho. - O cabeamento permitiu a conexão do modem DSL no armário de telecom. - As tomadas da área de trabalho para conexão com Telefone e o Modem ADSL.
Programação para Redes de Computadores
Os Arquivos PHP (pagina Web) Encontram-se dentro da pasta: /var/www/teletec
- Edição do Arquivo Verificação.php:
Esta pagina PHP verifica se o login e a senha do administrador esta correto. Se estiver correto vai para a pagina "principal.php" se não volta para "login.php".
<? session_start(); $login = $_POST['login']; $senha = $_POST['senha']; if ( ( $login == "LOGIN-DO-ADMIN" ) && ( $senha == "SENHA-DO-ADMIN" ) ){ $_SESSION['autorizado'] = $login; Header ("Location: principal.php"); }else{ Header ("Location: login.php"); } ?>
- Edição do Arquivo sair.php:
Esta pagina PHP faz o administrador "deslogar" ("logoff") e depois volta para pagina "login.php"
<? session_start(); session_destroy(); Header ("Location: login.php"); ?>
- Edição do arquivo principal.php:
Esta é a principal pagina PHP do site, nela verificamos os clientes criados e armazenados no banco de dados, redirecionamos para pagina que modifica os dominios (alterar.php), redirecionamos para pagina que remover os dominios (excluir.php)e tambem redirecionamos para a pagina que adiciona os dominios (adicionar.php). Quando é redirecionado para pagina de modificação e remoção tambem é enviado uma variavel com o dominio do cliente para saber qual usuario deve ser modificado ou alterado.
<.? .session_start(); .if (!isset($_SESSION['autorizado'])){ .header ("Location: login.php"); .}else{ .?> <.html> <.head> <.meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> <.title>Administrcao de Dominios</title> <./head> <.body>
<.p><a href="sair.php">Sair</a>
<.p>
<.p style="text-align:center;margin-left:auto;margin-right:auto;">Cliente Dominio Acao
<.? $conexao = mysql_connect("localhost","www-data","orelha1234"); $base_ok = mysql_select_db("teletec",$conexao); $consulta = "SELECT * from clientes"; $resultado = mysql_query($consulta,$conexao); while($linha = mysql_fetch_array($resultado)){ $cliente = $linha['cliente']; $dominio = $linha['dominio']; .?> <.form> <.p style="text-align:center;margin-left:auto;margin-right:auto;"> <.a name="cliente" id="cliente" href="alterar.php?id=<? echo $linha['dominio'];?>"> <?echo $.linha['cliente'];?></a>
<.? echo $linha['dominio'];?> <a href="excluir.php?id=<? echo $linha['dominio'];?>"> Excluir</a>
<./form> <.? .} .mysql_free_result($resultado); .mysql_close($conexao); .} .?> <.p style="text-align:right;margin-left:auto;margin-right:0;">
<.a href="adicionar.php">Adicionar novo dominio</a>
<./body> <./html>
- Edição do Arquivo mod-dominio.php:
Esta pagina PHP recebe três variaveis com o dominio antigo do clinete, o novo dominio e o novo nome do cliente, estas variaveis são repassadas para o script "mod-dominio.sh" e este é executado modificando o dominio e o nome do cliente, depois de executar o script as informações do banco de dados tambem são modificadas e o serviço APACHE2 é reiniciado. Após todo este processamento a pagina é redirecionada para 'principal.php".
<.? session_start(); if (!isset($_SESSION['autorizado'])){ header ("Location: login.php"); }else{ $cliente = $_POST['cliente']; $dominio = $_POST['dominio']; $antigo = $_POST['antigo'];; if (empty($dominio)) { $dominio = "invalido"; } if (preg_match('/^[a-z0-9]+/', $dominio)){ }else{ $dominio = "invalido"; } $arquivo = '/etc/bind/named.conf'; $linhas = array(); exec("cat $arquivo",$linhas); for ($i = 0 ; $i < sizeof($linhas); $i++){ if ($linhas[$i] == "include \"/etc/bind/$dominio.conf\";"){ $dominio = "invalido"; } } if ($dominio == "invalido"){ header ("Location: alterar.php"); }else{ $script = "sudo /etc/teletec/mod-dominio.sh $antigo '$cliente' $dominio"; exec("$script"); exec("/etc/init.d/apache2 restart"); $conexao = mysql_connect("localhost","www-data","orelha1234"); $base_ok = mysql_select_db("teletec",$conexao); $deletar = "DELETE FROM clientes WHERE dominio='$antigo.teletec.sj.ifsc.edu.br'"; mysql_query($deletar,$conexao); mysql_close($conexao); $conexao = mysql_connect("localhost","www-data","orelha1234"); $base_ok = mysql_select_db("teletec",$conexao); $inserir = "INSERT INTO clientes (cliente,dominio) VALUES ('$cliente','$dominio.teletec.sj.ifsc.edu.br')"; mysql_query($inserir,$conexao); mysql_close($conexao); header ("Location: http://www.teletec.sj.ifsc.edu.br/principal.php"); } .} ?.>
- Edição do Arquivo login.php:
Esta pagina PHP recolhe o login e a senha fornecidas pelo administrador atraves de um formulario e manda para a pagina PHP de processamento que verifica se esta correto.
.<? .session_start(); .if (isset($_SESSION['autorizado'])){ .Header ("Location: principal.php"); .}else{ .?> <.html> <.head> <.meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> <.title>Hospedagem Web</title> <./head> <.body>
<.p>
<.p>Sistemas de Hospedagem de Sitios Web
<.p>
<.form name="formTeste" action="verificacao.php" method="post"> <.p>Usuário:
<.input type="text" name="login"> <.p>Senha:
<.input type="password" name="senha"> <.input type="submit" name="b_enviar" value="Entrar"> <./form>
<.p>
<.? } .?> <./body> <./html>
- Edição do Arquivo Index.php:
Esta pagina apenas redireciona para "login.php"
<.? Header ("Location: login.php"); .?>
- Edição do Arquivo excluir.php:
Esta pagina PHP faz uma verificação, se o administrador realmente querer excluir o dominio é mandado o dominio do clinete em uma variavel para a pagina PHP de processamento "del-dominio.php" e a pagina é redirecionada para la, mais se o usuario não quiser escluir é mandado novamente para p pagina "principal.php".
<.? session_start(); if (!isset($_SESSION['autorizado'])){ header ("Location: login.php"); }else{ $id=$_GET['id']; $parte1 = explode(".", $id); $antigo = $parte1[0]; ?.> <.html> <head> <.meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> <.title>Excluir o cliente</title> <./head> <.body>
<.p>Voce realmente deseja excluir o cliente?
<.p><a href="del-dominio.php?id=<?echo $antigo;?>">Sim</a> <a
.href="principal.php">Nao</a>
<.p>
<? } .?> <./body> <./html>
- Edição do Arquivo del-dominio.php:
Esta pagina PHP é uma pagina de processamento que recebe em uma variavel o nome do dominio que sera removido e transfere esta variavel para o script em bash "del-dominio.sh" ja executa o script, depois este dominio é removido do banco de dados e o serviço APACHE2 é reiniciado. Após todo o processamento a pagina é redirecionada para "principal.php".
<.? session_start(); if (!isset($_SESSION['autorizado'])){ header ("Location: login.php"); }else{ $dominio = $_GET['id']; $script = "/etc/teletec/del-dominio.sh $dominio"; exec("$script"); exec("sudo /etc/init.d/apache2 restart"); $conexao = mysql_connect("localhost","www-data","orelha1234"); $base_ok = mysql_select_db("teletec",$conexao); $deletar = "DELETE FROM clientes WHERE dominio='$dominio.teletec.sj.ifsc.edu.br'"; mysql_query($deletar,$conexao); mysql_close($conexao); header ("Location: http://www.teletec.sj.ifsc.edu.br/principal.php"); } ?.>
- Edição do Arquivo alterar.php:
Nesta pagina PHP o administrador informa o novo nome do cliente e o novo dominio, estas informações são gravadas em uma variavel que será mandada para a pagina PHP que vai fazer todo o trabalho de processamento (mod-dominio.php).
<.? session_start(); if (!isset($_SESSION['autorizado'])){ header ("Location: login.php"); }else{ $id=$_GET['id']; $parte1 = explode(".", $id); $antigo = $parte1[0]; ?.> <.html> <.head> <.meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> <.title>Alterar Dominio</title> </.head> <.body>
<.p><.a href="principal.php">Voltar </a>
<.form name="formTeste" action="mod-dominio.php" method="post"> <.p>Novo nome do cliente:
<.input type="text" name="cliente"> <.p>Novo dominio:
<.input type="text" name="dominio"> <.input type="hidden" name="antigo" value="<?echo $antigo;?>"> <.input type="submit" name="b_enviar" value="Alterar"> <./form> <.? } ?.> <./body> <./html>
- Edição do Arquivo adicionar.php:
Esta pagina PHP recolhe duas variaveis atraves do formulrios, em uma esta o nome do clinete e na outra o dominio escolhido, estas variaveis são repassadas para a pagina de processamento que vai adicionar este novo subdominio (add-dominio.php).Depois ela é redirecionada para a pagina de processamento "add-dominio.php".
<.? session_start(); if (!isset($_SESSION['autorizado'])){ header ("Location: login.php"); .}else{ .?> <.html> <.head> <.meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> <.title>Adicionar Cliente</title> <./head> <.body>
<.p><.a href="principal.php">Voltar </a>
<.form name="formTeste" action="add-dominio.php" method="post"> <.p>Nome do cliente:
<.input type="text" name="cliente"> <.p>Dominio:
<.input type="text" name="dominio"> <.input type="submit" name="b_enviar" value="Criar"> <./form> <.? .} .?> <./body> <./html>
- Edição do Arquivo add-dominio.php:
Esta pagina PHP é uma pagina de processamento que recebe duas variaveis, na primeira esta o nome do dominio que sera removido e na segunda está o dominio do cliente, estas variaveis são transferidas para o script em bash "add-dominio.sh" que é executado, depois este dominio é adicionado no banco de dados e o serviço APACHE2 é reiniciado. Após todo o processamento a pagina é redirecionada para "principal.php".
<.? session_start(); if (!isset($_SESSION['autorizado'])){ header ("Location: login.php"); }else{ $cliente = $_POST['cliente']; $dominio = $_POST['dominio']; if (empty($dominio)) { $dominio = "invalido"; } if (preg_match('/^[a-z0-9]+/', $dominio)){ }else{ $dominio = "invalido"; } $arquivo = '/etc/bind/named.conf'; $linhas = array(); exec("cat $arquivo",$linhas); for ($i = 0 ; $i < sizeof($linhas); $i++){ if ($linhas[$i] == "include \"/etc/bind/$dominio.conf\";"){ $dominio = "invalido"; } } if ($dominio == "invalido"){ header ("Location: adicionar.php"); }else{ $script = "sudo /etc/teletec/add-dominio.sh '$cliente' $dominio"; exec("$script"); exec("/etc/init.d/apache2 restart"); $conexao = mysql_connect("localhost","www-data","orelha1234"); $base_ok = mysql_select_db("teletec",$conexao); $inserir = "INSERT INTO clientes (cliente,dominio) VALUES ('$cliente','$dominio.teletec.sj.ifsc.edu.br')"; mysql_query($inserir,$conexao); mysql_close($conexao); header ("Location: http://www.teletec.sj.ifsc.edu.br/principal.php"); } } ?.>
Os Arquivos .sh (scripts que adicionam, removem ou alteram os usuários no servidor) Encontram-se dentro da pasta: /etc/teletec
- Edição do Arquivo mod-dominio.sh: Script em bash que altera o dominio do cliente (Subdominio, E-mail e Pagina WEB):
O script de modificação na verdade exclui o dominio criado e cria um novo, os scripts de remover e adicionar estão juntos neste script.
#!/bin/bash #Leonardo #echo -n "Dominio: " #read antigo #IFS=$'\n' #for linha in `cat /etc/bind/named.conf`; do # if [ $linha = 'include "/etc/bind/'$antigo'.conf";' ];then # valido=sim # break # else # valido=nao # fi #done #if [ $valido = nao ];then # echo -e " * Você entrou com um dominio inválido!\t\t\t \e[31m [ ERRO ] \e[m" # echo -e " * O dominio não existe ou esta em branco.\n" # exit #fi #echo -n "Novo nome para o cliente: " #read nome #echo -n "Novo dominio: " #read dominio #echo=${dominio:=nulo} #IFS=$'\n' #for linha in `cat /etc/bind/named.conf`; do # if [ $linha = 'include "/etc/bind/'$dominio'.conf";' ];then # dominio=existe # break # fi #done #if [ $dominio != nulo ] && [ $dominio != existe ];then antigo=$1 nome=$2 dominio=$3 sudo sed -i '/\/etc\/bind\/'$antigo'\.conf/Id' /etc/bind/named.conf sudo rm /etc/bind/$antigo.conf sudo rm /etc/bind/$antigo.zone sudo rm /etc/apache2/sites-enabled/$antigo-default sudo rm -r /var/www/$antigo sudo sed -i '/'$antigo'\.teletec\.sj\.ifsc\.edu\.br Subdominio-'$antigo'/Id' /etc/postfix/virtual sudo sed -i '/'$antigo'@teletec\.sj\.ifsc\.edu\.br '$antigo'/Id' /etc/postfix/virtual sudo sed -i '/'$antigo'\.teletec\.sj\.ifsc\.edu\.br OK/Id' /etc/postfix/mydomains sudo userdel -r $antigo
sudo echo 'include "/etc/bind/'$dominio'.conf";' >> /etc/bind/named.conf numero=`date | cut -d ":" -f 3 | cut -d " " -f 1` novoserial=$((1000000000+$numero)) sudo sed s/padrao/$dominio/g /etc/bind/padrao.conf > /etc/bind/$dominio.conf sudo sed s/padrao/$dominio/g /etc/bind/padrao.zone | sed s/2011061504/$novoserial/g > /etc/bind/$dominio.zone sudo /etc/init.d/bind9 restart sudo sed s/padrao/$dominio/g /etc/apache2/sites-available/padrao-default > /etc/apache2/sites-enabled/$dominio-default mkdir /var/www/$dominio sed s/dominio/$dominio/g /var/www/padrao/index.html | sed s/nome/"$nome"/g > /var/www/$dominio/index.html sudo echo ' ' >> /etc/postfix/virtual sudo echo $dominio'.teletec.sj.ifsc.edu.br Subdominio-'$dominio >> /etc/postfix/virtual sudo echo $dominio'@teletec.sj.ifsc.edu.br '$dominio >> /etc/postfix/virtual sudo echo $dominio'.teletec.sj.ifsc.edu.br OK' >> /etc/postfix/mydomains sudo postmap /etc/postfix/virtual sudo postmap /etc/postfix/mydomains sudo /etc/init.d/postfix restart # echo -e " * Dominio modificado com sucesso!\t\t\t\t[ OK ]\n" # else # echo -e " * Você entrou com um dominio inválido!\t\t\t \e[31m [ ERRO ] \e[m" # echo -e " * O dominio ja existe ou esta em branco.\n" #fi
- Edição do Arquivo del-dominio.sh: Script em bash que remove o cliente (Subdominio, E-mail e Pagina WEB):
Exclui todos os arquivos de configuração criados para este cliente e retira as linhas de configuração adicionadas em arquivos como o "named.conf", "virtual" e "mydomains", por ultimo os serviçoes DNS e POSTFIX são reiniciados ( o APACHE2 é reiniciado na pagina PHP).Também é removido o usuario criado no servidor.
#!/bin/bash #Leonardo #echo -n "Dominio: " #read dominio #IFS=$'\n' #for linha in `cat /etc/bind/named.conf`; do # if [ $linha = 'include "/etc/bind/'$dominio'.conf";' ];then dominio=$1 sudo sed -i '/\/etc\/bind\/'$dominio'\.conf/Id' /etc/bind/named.conf sudo rm /etc/bind/$dominio.conf sudo rm /etc/bind/$dominio.zone sudo /etc/init.d/bind9 restart sudo rm /etc/apache2/sites-enabled/$dominio-default sudo rm -r /var/www/$dominio sudo userdel -r $dominio sudo sed -i '/'$dominio'\.teletec\.sj\.ifsc\.edu\.br Subdominio-'$dominio'/Id' /etc/postfix/virtual sudo sed -i '/'$dominio'@teletec\.sj\.ifsc\.edu\.br '$dominio'/Id' /etc/postfix/virtual sudo sed -i '/'$dominio'\.teletec\.sj\.ifsc\.edu\.br OK/Id' /etc/postfix/mydomains sudo postmap /etc/postfix/virtual sudo postmap /etc/postfix/mydomains sudo /etc/init.d/postfix restart # echo -e " * Dominio removido com sucesso!\t\t\t\t[ OK ]\n" # exit # fi #done # echo -e " * Você entrou com um dominio inválido!\t\t\t \e[31m [ ERRO ] \e[m" # echo -e " * O dominio não existe ou esta em branco.\n"
- Edição do Arquivo add-dominio.sh: Script em bash que adiciona o cliente (Subdominio, E-mail e Pagina WEB):
Sub-dominio: O script pega como base arquivos padrões ja criados e configurados ( padrao.conf e padrao.zone ), altera todas as palavras "padrao" destes arvivos pelo dominio escolhido pelo usuario e salva como "dominio-escolhido".zone e "dominio-escolhido".conf. Alem disso ele tambem inclui o caminho do arquivo de configuração ".conf" no "named.conf".
Pagina-Web: Assim como no sub-dominio, o script troca as palavras "padrao" que estão em um arquivo padrao de configuração ( padrao-default) pelo dominio escolhido pelo cliente, criando um novo arquivo de configuração com nome "dominio-escolhido"-default. Tambem cria uma pagina web html padrao.
E-mail: O script adiciona as linhas de configuração do e-mail do cliente nos arquivos "virtual" e "mydomains". Também é criado um usuario no servidor com login e senha igual ao dominio escolhido.
Após fazer as confgurações o script reinicia o DNS e o POSTFIX. (o APACHE2 é reiniciado na pagina PHP).
#!/bin/bash # Leonardo #echo -n "Nome do cliente: " #read nome #echo -n "Dominio: " #read dominio #echo=${dominio:=nulo} #IFS=$'\n' #for linha in `cat /etc/bind/named.conf`; do # if [ $linha = 'include "/etc/bind/'$dominio'.conf";' ];then # dominio=existe # break # fi #done # #if [ $dominio != nulo ] && [ $dominio != existe ];then nome=$1 dominio=$2 sudo echo 'include "/etc/bind/'$dominio'.conf";' >> /etc/bind/named.conf numero=`date | cut -d ":" -f 3 | cut -d " " -f 1` novoserial=$((1000000000+$numero)) sudo sed s/padrao/$dominio/g /etc/bind/padrao.conf > /etc/bind/$dominio.conf sudo sed s/padrao/$dominio/g /etc/bind/padrao.zone | sed s/2011061504/$novoserial/g > /etc/bind/$dominio.zone sudo /etc/init.d/bind9 restart sudo sed s/padrao/$dominio/g /etc/apache2/sites-available/padrao-default > /etc/apache2/sites-enabled/$dominio-default sudo mkdir /var/www/$dominio sudo sed s/dominio/$dominio/g /var/www/padrao/index.html | sed s/nome/"$nome"/g > /var/www/$dominio/index.html sudo useradd -md /home/$dominio $dominio sudo usermod -p $(openssl passwd -1 $dominio) $dominio sudo echo ' ' >> /etc/postfix/virtual sudo echo $dominio'.teletec.sj.ifsc.edu.br Subdominio-'$dominio >> /etc/postfix/virtual sudo echo $dominio'@teletec.sj.ifsc.edu.br '$dominio >> /etc/postfix/virtual sudo echo $dominio'.teletec.sj.ifsc.edu.br OK' >> /etc/postfix/mydomains sudo postmap /etc/postfix/virtual sudo postmap /etc/postfix/mydomains sudo /etc/init.d/postfix restart # echo -e " * Dominio criado com sucesso!\t\t\t\t[ OK ]\n" # else # echo -e " * Você entrou com um dominio inválido!\t\t\t \e[31m [ ERRO ] \e[m" # echo -e " * O dominio ja existe ou esta em branco.\n" #fi