Inspirado no mecanismo de busca de coelhos do Facebook. A versão atualmente aberta no Github é bem antiga e tinha algumas dependências antigas, então eu pensei que seria mais fácil escrever uma mais moderna. Este ainda é bastante básico e provavelmente tem orifícios de segurança que eu encontrarei mais tarde. Só queria tirar algo do chão e adicionarei mais recursos que permitirão o tempo.
Visite o link para configurar usando esta versão que estou hospedando.
Lista de comandos atualmente suportados
g [insert query] Pesquisando Googlep [insert class number] Faça uma pesquisa da Piazza, meio personalizada apenas para Jack lolfb [insert query] pesquisando no Facebook. Padrões na página inicial do FBcpp [insert query] Procura os termos sintáticos de CPP em cppreference.comw [insert query] pesquisam a Wikipedia, padrão na página da Wikipedia em inglêsyt [insert query] Faça uma pesquisa no YouTube. Se não for passado a consulta, os padrões da página inicial do YouTubegm [insert number from 0-n where n = number of gmail accounts - 1] abre o gmail. Se nenhum argumento específico, abre a primeira conta. Pode abrir contas alternativas com argumentoshelp retorna uma lista de comandos utilizáveis Eu acho que estender isso é bastante intuitivo por enquanto. Basta adicionar novos métodos à classe de comandos. Pode ser um pouco confuso porque tudo está acontecendo no arquivo jack_bunny.py , provavelmente modularei isso mais tarde, quando tiver tempo.
Eu hospedei isso em um servidor Amazon EC2, configurado com Nginx e Gunicorn, então vou percorrer as etapas pelas quais passei.
A primeira etapa é clonar este repositório no servidor em que você deseja executá -lo e baixar todas as dependências. Tudo isso deve estar no arquivo requirements.txt para que algo como pip3 install -r /path/to/requirements.txt deve funcionar. Se você tiver algum problema, as únicas bibliotecas do Python que realmente usam são flask e wikipedia , portanto, o download delas deve resolver algum problema.
Existem pacotes adicionais que você precisa para hospedar isso. O primeiro é nginx . Para instalar isso, você pode simplesmente usar sudo apt-get install nginx . Também precisaremos instalar gunicorn e fazer isso, você pode usar pip3 install gunicorn .
A idéia por trás disso é que usaremos gunicorn para executar isso na host local em algum porto não utilizado. Em seguida, usaremos nginx como proxy reverso para que ele entregue a solicitação que recebeu ao gunicorn e, em seguida, gunicorn servirá ao nginx , que será fornecido ao usuário.
Então, como fazemos isso?
Primeiro, queremos fazer gunicorn correndo. O comando para executar é gunicorn jack_bunny:app -p jack_bunny.pid -D . Neste comando, jack_bunny representa o nome do arquivo sem o .py e app representam o aplicativo Flask. Adicionamos a tag -D para que isso esteja em execução em segundo plano, mesmo quando fecharmos. O -p jack_bunny.pid salva o process_id nesse arquivo; portanto, se você quiser matar esse processo, poderá matar -9.
Agora, precisamos configurar nginx porque isso ainda está sendo executado localmente.
Eu criei este novo arquivo de configuração em /etc/nginx/sites-available/jack_bunny
# /etc/nginx/sites-available/jack_bunny
# Redirect www.[insert server name].com to [insert server name].com
server {
server_name www.[insert server name].com;
rewrite ^ http://[insert server name].com/ permanent;
}
# Handle requests to [insert server name].com on port 80
server {
listen 80;
server_name [insert server name].com;
# Handle all locations
location / {
# Pass the request to Gunicorn
proxy_pass http://127.0.0.1:8000;
# Set some HTTP headers so that our app knows where the
# request really came from
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Então eu criei o Symlink aqui.
$ sudo ln -s
/etc/nginx/sites-available/jack_bunny
/etc/nginx/sites-enabled/jack_bunny
Depois de reiniciar nginx você deve estar pronto!
Se você tiver alguns problemas de configuração nginx , verifique os logs de erros para ver o que poderia estar dando errado. Uma coisa em que encontrei foi o nome do meu servidor muito longo e isso me deu algum erro de nome de hash do servidor. Eu resolvi isso adicionando a linha server_names_hash_bucket_size 128; para o meu arquivo de configuração nginx aqui /etc/nginx/nginx.conf .
Existem várias maneiras de implantar um aplicativo de frasco em um servidor, para que você não precise fazer isso. Achei que este é o caminho mais rápido. Para referência, este é o guia que eu segui, é bastante detalhado.