Hugo Cisneiros, [email protected]
Última atualização em 04/02/2003
Quem acessa IRC deve saber o que é um file server. Um file server é um “programa” de IRC que fica em um certo canal, servindo arquivos livremente para as outras pessoas. No Windows isso já é uma realidade bem comum, mas no Linux é algo um pouco ainda oculto. Este tutorial ensina à qualquer usuário que tenha uma conta shell em um sistema Linux à montar seu file server, e não necessita nem de interface gráfica.
Para fazer isso, utilizarei o seguinte:
- screen – http://www.gnu.org/software/screen/ – Um programinha muito bom que serve como um “gerenciador de janelas” para o modo texto do Linux. As distibuições geralmente vêm com ele, então possivelmente não será necessário baixar e compilar o programa, pois ou você já tem instalado, ou deve vir um pacote pronto na sua distribuição. Verifique se o programa está instalado com o comando: “which screen“. Se aparecer o cominho do executável, então ele existe, se não aparecer nada, tem que ser instalado 🙂
- X-Chat – http://www.xchat.org – O X-Chat é um cliente de IRC muito bom que inicialmente foi feito pra GTK+ (gráfico). Mas como o autor fez o programa de forma modular, ele criou como demonstração um pequeno front-end em modo texto. O front-end não é muito bom, mas serve muito bem para o que queremos no momento. Baixe o código-fonte do X-Chat estável mais novo, pois iremos compilar apenas o modo-texto e usar em conjunto com o programa screen.
- Obsidian File Server – http://tlm.conectiva.com.br/fserver_linux/obsidian-0.9.1-pre3.pl – Este é um script feito em perl que introduz um file server muito bom no X-Chat.
Compilando o X-Chat
Primeiro de tudo vamos compilar o front-end texto do X-Chat. Supondo que você já tenha baixado o código-fonte do programa, vamos aos passos da compilação:
$ tar jpfx xchat-1.8.11.tar.bz2 $ cd xchat-1.8.11 $ ./configure --disable-gtkfe --disable-glib --disable-gnome --disable-zvt --disable-gdk-pixbuf --disable-xlib --disable-glibtest --disable-gtktest
[...configurando a compilação...]
xchat 1.8.11
Building GTK+ Interface .... : no Building TEXT Interface .... : yes
gnome-libs .......... : no gnome panel ......... : no perl ................ : yes gdk-pixbuf........... : no python .............. : no mmx tinting ......... : yes zvt shell tab ....... : no nls/gettext ......... : yes plugin interface .... : yes glib replace ........ : yes link with socks5 .... : no translation tables .. : yes openssl support ..... : no japanese conversion . : no ipv6 support ........ : no hebrew support ...... : no
$ make
[...compilando...]
$ cd src/fe-text $ strip -s xchat-text
|
Pronto. Se tudo ocorreu bem, o X-Chat foi compilado com êxito. Agora vamos criar um diretório que vai ser o “home” do file server. Eu procuro sempre deixar o file server com um usuário especial para ele. Então vou criar o usuário fserver, com o seu diretório home sendo o /var/fserver, pois aqui a partição que tem mais espaço é o /var. Não se esqueça deste diretório home, pois usaremos em outros lugares neste tutorial.
# adduser fserver -d /var/fserver # passwd fserver Changing password for user fserver. New password: Retype new password: passwd: all authentication tokens updated successfully.
|
Agora logue-se como este usuário, ou execute o comando “su – fserver“, que te transforma no usuário fserver. Vamos criar então a estrutura de diretórios do file server:
$ pwd /var/fserver $ mkdir bin .xchat incoming fserver
|
Agora vamos colocar os arquivos necessários para o funcionamento do file server. Antes de mais nada, você precisará colocar o programa xchat-text dentro do diretório bin do usuário fserver. Vá no diretório onde você descompactou e compilou o código-fonte do xchat e copie:
$ cd src/fe-text $ cp xchat-text /var/fserver/bin
|
Agora execute o xchat-text para ele criar os arquivos de configuração padrões do x-chat. Depois aperte CTRL+C para sair do mesmo. Vamos então criar o script que irá iniciar o file server. Crie um arquivo chamado “/var/fserver/bin/fserver” e coloque o seguinte conteúdo:
#!/bin/bash # case $1 in start) screen -A -m -d -S fserver /var/fserver/bin/xchat-text ;; stop) screen -r fserver ;; esac
|
Depois transforme este arquivo em executável:
$ chmod +x /var/fserver/bin/fserver
|
Este script quando executado, chamará o programa screen para rodar em background o programa xchat-text. Mas se ele está em background, como diremos à ele para conectar a um certo servidor e entrar em um certo canal? Para isso faremos um script em perl. Crie o arquivo “/var/fserver/.xchat/script.pl” com o seguinte conteúdo:
#!/usr/bin/perl -w
# Função que entra identifica o nick, liga o file server e entra nos canais sub entrarcanais { IRC::command("/nickserv identify minhasenha"); IRC::command("/fs on"); IRC::command("/join #canal"); }
# Inicialmente conectar no servidor e depois de 1 minuto (6000 milisegundos), # executar a função acima "entrarcanais" IRC::command("/server irc.brasnet.org"); IRC::add_timeout_handler(60000,"entrarcanais");
# Função que de 5 em 5 minutos atualiza o file server sub flushfiles { IRC::command("/fs on"); IRC::command("/fs update_files"); IRC::add_timeout_handler(300000,"flushfiles"); }
# Ativa o timer que executa a fução flushfiles em 5 minutos IRC::add_timeout_handler(300000,"flushfiles");
|
Pronto, agora quando o xchat-text for iniciado, ele automaticamente vai carregar este script em perl. Agora falta configuramos melhor o xchat. Por padrão, a interface texto não cria um xchat.conf muito decente. Então sobrescreva o arquivo “/var/fserver/.xchat/xchat.conf” colocando o seguinte conteúdo:
auto_indent = 1 auto_resume = 1 auto_unmark_away = 0 autodccchat = 1 autodccsend = 1 autodialog = 1 autoopendccchatwindow = 1 autoopendccrecvwindow = 1 autoopendccsendwindow = 1 autoreconnect = 1 autoreconnectonfail = 1 autorejoin = 1 autosave = 1 autosaveurl = 0 awayreason = I'm busy background_dialog_pic = background_pic = ban_type = 0 beep_msg = 1 beep_chans = 0 bluestring = chanmodebuttons = 1 channelbox = 0 cmdchar = / colorednicks = 0 ctcp_number_limit = 5 ctcp_time_limit = 30 dcc_blocksize = 4096 dcc_ip = dcc_permissions = 420 dcc_remove = 0 dcc_send_fillspaces = 1 dcc_stall_timeout = 60 dcc_timeout = 180 dccdir = /var/fserver/incoming dccwithnick = 0 dialog_height = 100 dialog_indent_nicks = 1 dialog_indent_pixels = 80 dialog_show_separator = 1 dialog_tint = 1 dialog_tint_blue = 151 dialog_tint_green = 151 dialog_tint_red = 151 dialog_transparent = 1 dialog_width = 300 dialog_wordwrap = 1 dnsprogram = host doubleclickuser = /QUOTE WHOIS %s fastdccsend = 1 filterbeep = 0 first_dcc_send_port = 0 font_dialog_normal = -misc-fixed-medium-r-semicondensed-*-13-*-*-*-c-*-iso8859-15 font_normal = -misc-fixed-medium-r-semicondensed-*-13-*-*-*-c-*-iso8859-1 font_shell = fudgeservernotice = 0 hide_version = 0 hidemenu = 0 hideuserlist = 0 hilight_notify = 0 hilightnick = 1 host_in_userlist = 0 hostname = indent_nicks = 1 indent_pixels = 80 inputgad_superfocus = 1 invisible = 0 ip_from_server = 1 lagometer = 2 last_dcc_send_port = 0 limitedtabhighlight = 1 logging = 0 logmask = %s,%c.xchatlog mail_check = 0 mainwindow_height = 477 mainwindow_left = 121 mainwindow_save = 1 mainwindow_top = 178 mainwindow_width = 714 max_auto_indent = 256 max_lines = 3000 msg_number_limit = 5 msg_time_limit = 30 newtabs_to_front = 1 nick_suffix = : nickcompletion = 1 nickgad = 1 nickname1 = Nick1DoFserver nickname2 = Nick2DoFserver nickname3 = Nick3DoFserver notices_tabs = 0 notify_timeout = 15 nu_color = 4 old_nickcompletion = 0 paned_userlist = 0 partreason = Client Exiting percascii = 0 perccolor = 1 perlwarnings = 0 persist_chans = 1 pingtimeout = 0 priv_msg_tabs = 1 proxy_host = proxy_port = 0 proxy_type = 0 quitreason = Client Exiting raw_modes = 0 realname = Campo Nome reconnect_delay = 10 servernotice = 1 show_away_message = 1 show_away_once = 1 show_invite_in_front_session = 0 show_notify_in_front_session = 0 show_separator = 1 skipmotd = 0 skipserverlist = 1 stamp_format = [%H:%M:%S] stripcolor = 0 style_inputbox = 1 style_namelistgad = 0 tabchannels = 1 tabs_position = 0 thin_separator = 1 throttle = 1 throttlemeter = 2 timestamp = 0 timestamp_logs = 0 timestamp_log_format = %b %d %H:%M:%S tint = 1 tint_blue = 151 tint_green = 151 tint_red = 151 topicbar = 1 transparent = 1 trans_file = treeview = 0 truncchans = 0 use_fontset = 1 use_server_tab = 0 use_trans = 0 userhost = 1 userlist_sort = 0 userlist_icons = 1 userlistbuttons = 1 username = fserver wallops = 1 whois_on_notifyonline = 0 windows_as_tabs = 1 wordwrap = 1
|
Sim, este é um arquivo de configuração para o X-Chat modo gráfico, mas as opções que tem a mais não vão influenciar em nada, e tudo que queremos vai estar aí. Você só precisa modificar as linhas que estão em negrito, que são os campos de Nick, Nome Real, Username, entre outros. Veja que também a linha “dccdir = /var/fserver/incoming” dirá que todo arquivo que o file server pegar vai para este diretório. Nesta configuração o DCC Get está habilitado para pegar automaticamente os arquivos, mas se você quiser desabilitar isso, mude no arquivo acima o valor da variável “autodccsend” para 0.
Agora só falta uma coisa: O File Server! Mas é bem simples. Coloque o arquivo “obsidian-0.9.1-pre3.pl” que você baixou no diretório “/var/fserver/.xchat“. O X-Chat irá carregar este script automaticamente na inicialização. E parar configurar, crie um arquivo chamado “/var/fserver/.xchat/obsidian.conf” com o seguinte conteúdo:
debug:0 ctcptrigger:1 restorequeues:1 autoon:1 notice_as_msg:0 short_notice:0 raw_chnl_msg:1 raw_wlcm_msg:0 open_tab_early:1 close_tab_auto:0 case_cmd:0 case_file:0 fs_sensitive:0 count_sends:1 send_small_now:1 ads_when_full:1 priority_op:1 priority_voice:1 max_users:10 max_sends:3 max_queues:20 slots_big:1 slots_med:4 slots_small:10 size_big:30000000 size_med:1000000 max_fails:5 min_speed:0 idle_time:180 trigger:!boboalegre serve_no_notify:#testchnl2 serve_hidden:#testchnl3 notify_to_voice:#testchnl2 notify_channels:#canal notify_timeout:0 root_dir:/var/fserver/fserver note:Aqui estão alguns arquivos!! XUGUEM! auto_backup:60 logo:^C14[^C13Oßsidian FServe^C14]^C c1:^C13 c2:^C14 c3:^C13 c4:^C15
|
As linhas em negrito são as principais que você tem que mudar. Vou explicá-las:
- priority_op:1 – Dá prioridade para os OPs no file server, ou seja, eles entram na frente de todo mundo na fila dos queues! 🙂
- priority_voice:1 – Mesma coisa do item acima, só que para os que tem voice.
- max_users:10 – Quantos usuários podem dar uma olhada no file server ao mesmo tempo.
- max_sends:5 – Quantos envios simultâneos o file server pode fazer (1 por pessoa).
- max_queues:50 – Quantos queues (ou slots) podem ser ocupados no file server.
- slots_big:1 – Quantos slots uma pessoa pode ter com arquivos grandes.
- slots_med:4 – Quantos slots uma pessoa pode ter com arquivos médios.
- slots_small:10 – Quantos slots uma pessoa pode ter com arquivos pequenos.
- size_big:30000000 – Qual o tamanho em bytes para um arquivo ser considerado grande (Aqui: 30MB
- size_med:1000000 – Qual o tamanho em bytes para um arquivo ser considerado médio (Aqui: 1MB)
- max_fails:5 – Quantas falhas a transfer6encia pode ter até ser cancelado o slot/queue.
- trigger:!boboalegre – Qual o trigger do file server.
- notify_channels:#canal – Quais canais notificar, separados por virgula
- notify_timeout:0 – De quanto em quanto tempo anunciar o file server? (0 = Modo em Silêncio)
- root_dir:/var/fserver/fserver – Diretório onde ficam os arquivos do file server
- note:Aqui estão alguns arquivos!! XUGUEM! – Mensagem do file server
Você pode mexer nas outras opções também, mas eu não recomendo. Vá testando os valores até você ver que ficou perfeito para você e seu file server. Agora é só rodar o file server com o seguinte comando:
$ /var/fserver/bin/fserver start
|
E esperar um pouco para que seu file server entre no canal já funcionando. Caso você queira mexer no file server interativamente, você pode a qualquer momento chegar no prompt de comando e digitar:
Isso irá restaurar a janela do file server, e você poderá utilizar ele como quiser. Inclusive mudar as configurações em tempo real com o comando “/fs“. Para poder voltar ao prompt de comando sem ter que sair do xchat-text, utilize a seqüência de teclas CTRL+A D (CTRL+A, solta e aperta D logo em seguida).
Prooooooooooonto! Foi tão difícil assim? Esse método é ótimo para as pessoas que tem várias máquinas rodando Linux por aí, principalmente porque você pode controlar os file servers via SSH, sem a necessidade de interface gráfica nenhuma. Mas isso tudo funciona com interface gráfica também, é só colocar o script perl do obsidian e o arquivo de configuração no diretório .xchat do seu home, que ao xchat gráfico iniciar, ele também irá carregar o script com as configurações. Boa sorte!
Fonte: http://www.devin.com.br/eitch/fserver_linux/
Sobre o autor