Como posso desativar a internet para colegas de quarto que não pagaram a conta este mês?

56

Eu tenho vários colegas de quarto que dividem minha conta de internet comigo todo mês. Às vezes, eles se esquecem de me pagar e eu tenho que importuná-los pelo dinheiro.

Se depois de 3 dias de pestering eles ainda não tiverem pago, eu crio uma regra de firewall no meu roteador baseado em unix que bloqueia o tráfego para o endereço MAC deles. Isso prova ser muito eficaz em conseguir que colegas de quarto delinqüentes paguem o dinheiro.

Como eu poderia automatizar a adição / remoção de um endereço mac a uma regra de firewall no terceiro dia de cada mês? Eu gostaria de uma maneira simples de desbloqueá-los pelo resto do mês, uma vez que eles pagam.

Atualmente estou usando o pfsense. Embora exista um módulo de portal cativo , ele não oferece suporte à regulamentação do acesso por usuário / por mês.

Como eu poderia automatizar o bloqueio / desbloqueio do acesso à internet de colegas de quarto?

    
por spuder 02.01.2014 / 03:25

3 respostas

33

  1. Crie um script bash que adicione regras restritas de iptables.
  2. Coloque este script no cron mensal.
  3. Dentro do script bash, faça uma condição - se o arquivo ~/do_not_block_friends existir e sua hora de modificação estiver dentro do período do mês ( stat -c %y filename ) - não execute o script.
  4. Depois de pagar, você faz touch ~/do_not_block_friends .

O script será executado e verá que do_not_block_friends foi modificado, portanto, ele não executará o comando iptables.

Se eles não pagaram você - o script irá bloqueá-los.

Depois que você pagar, execute outro script preparado para desbloqueá-lo.

Este é um plano geral sem muitos detalhes, mas não acho que seja difícil descobrir o resto.

Editar :

Aqui está uma maneira mais simples de escrever esse script:

#!/bin/bash

count='find ~ -maxdepth 1 -type f -name do_not_block_friends -mtime -31 | wc -l'

if [ "$count" -eq 1 ]; then

# Friends have paid. Do nothing;

else

# Friends have not paid. Run iptables command;

fi

Usamos o comando find com as seguintes opções:

  • maxdepth 1 - Não procura recursivo
  • type f - Pesquisar por arquivo
  • name - Pesquise por este nome
  • mtime -31 - Localizar arquivo que foi modificado há menos de 31 dias

wc -l contará a quantidade de linhas geradas pelo comando. Será 0 se os amigos não tiverem pago (nada encontrado) e será 1 se os amigos pagarem e nós touch control file.

Esse script não calcula a quantidade de dias no mês e o padrão é 31, acho que não há problema, pois não estamos construindo o sistema de faturamento comercial, mas acredito que até isso possa ser calculado no bash.

    
por 02.01.2014 / 03:42
14

Pode ser mais do que você está procurando, mas você já pensou em configurar credenciais sem fio usando a autenticação 802.1x em relação ao RADIUS como back-end?

O RADIUS pode ser configurado para verificar qualquer validador que você deseje (algo que você provavelmente terá que criar scripts e armazenar em um banco de dados ou algo assim) para ver se seus colegas pagaram seu aluguel. Quando eles autenticam e pagam, o RADIUS os autentica. Caso contrário, isso não acontece. O aspecto positivo disso é que você não está confiando na filtragem de endereços MAC. Dessa forma, se você tiver colegas de quarto experientes em tecnologia, eles não conseguirão ignorar facilmente os controles que você estabeleceu.

    
por 09.01.2014 / 23:33
1

Verifique se sua conta bancária ou outra solução de transação que você pode usar (PayPal?) fornece uma forma de notificação automática de pagamento, como:

  • notificação por e-mail por transação
  • e-mail de resumo de transação diária
  • alguma API decente

Se algum desses métodos estiver disponível, tudo o que resta é escrever um script simples que monitore os pagamentos. Você pode apenas analisar os e-mails do banco buscando os pagamentos mensais de seus amigos. Você precisaria de um arquivo de configuração armazenando o número da conta ou ID de cada amigo, soma para pagar (também pode ser uma constante global) e endereço MAC.

O script ajustaria as entradas do firewall de acordo com o status de pagamento mensal.

Em seguida, informe seus amigos sobre as opções de pagamento disponíveis e, ao configurar seu firewall, lembre-se de fornecer aos seus amigos acesso ao mecanismo de pagamento para que eles possam pagar quando perder o período de carência de três dias:)

    
por 14.01.2014 / 18:14