aMule Forum

Please login or register.

Login with username, password and session length
Advanced search  

News:

We're back! (IN POG FORM)

Pages: [1] 2

Author Topic: recomendación/petición para amule-demonio  (Read 12221 times)

tx2z

  • Approved Newbie
  • *
  • Karma: 0
  • Offline Offline
  • Posts: 8
    • http://tsmcm.bitacoras.com
recomendación/petición para amule-demonio
« on: April 07, 2006, 01:49:18 PM »

Hola, llevo usando amule bastante tiempo en ubuntu y la verdad q me gusta bastante. El problema era que cuando lo dejaba encendido mucho tiempo al volver a mirarlo iba demasiado lento y era bastante incordio, asi q decidí usar el demonio de amule (amuled) con amulegui (el amuleweb no me gusta mucho). Hasta ahora ningún problema y todo va como la seda... :D , lo unico que cuando quiero iniciarlo tengo que dar a dos lanzadores que he hecho (al demonio y a la gui cuando quiero verlo)

Bueno, a lo que iba (q me lio). ¿seria posible que amuled se iconificara en el area de notificación del sistema y cuando dieses ahi se cargase amulegui? Esto libraria al sistema de bastantes recursos y el uso sería igual que el de amule normal.

Quizá se podría hacer de otra forma: ¿Se podria hacer un script (seguro que si, lo que pasa que yo no se  :P) para que iniciase amuled y amulegui si le pinchas por primera vez y si ya esta corriendo el demonio lanzase solo amulegui? Se colocaria este script como un lanzador en el panel y serviría para lo mismo que lo otro.

Bueno, eso es todo. Un saludo.

Gracias por el amule (es un gran trabajo).
Logged

Kry

  • Ex-developer
  • Retired admin
  • Hero Member
  • *****
  • Karma: -665
  • Offline Offline
  • Posts: 5823
Re: recomendación/petición para amule-demonio
« Reply #1 on: April 07, 2006, 09:46:35 PM »

Lo primero no porque el amuled no es un programa grafico. Lo segundo ya seria mas posible, e incluso facil, asi que dejo al siguiente que responda que te cree el script ;)
Logged

AnimAlf

  • Full Member
  • ***
  • Karma: 3
  • Offline Offline
  • Posts: 225
    • Home
Re: recomendación/petición para amule-demonio
« Reply #2 on: April 08, 2006, 05:48:38 PM »

que buen rollo

tx2z:
Quote
lo que pasa que yo no se
bueno, yo no vayas a creer que se.

Pero si utilizas linux y perl, creo que me puedo acercar a lo que deseas

dinos bajo que sistema operativo lo utilizas si utilizas linux y perl, se podría partir de aquí:

Code: [Select]
#!/usr/bin/perl -w
use Gtk2::TrayIcon;
use strict;

Gtk2->init;
my $pic = Gtk2::Gdk::Pixbuf->new_from_file ("/usr/share/pixmaps/amule.xpm");
my $img = Gtk2::Image->new_from_pixbuf($pic->scale_simple(24, 24, 'tiles'));

my $tray= Gtk2::TrayIcon->new("trayicon");
my $paraEvent = Gtk2::EventBox->new;

$paraEvent->add($img);
$tray->add($paraEvent);

$tray->signal_connect (button_press_event => sub{Gtk2->main_quit;1});
$tray->show_all;

Gtk2->main;

tx2z

  • Approved Newbie
  • *
  • Karma: 0
  • Offline Offline
  • Posts: 8
    • http://tsmcm.bitacoras.com
Re: recomendación/petición para amule-demonio
« Reply #3 on: April 08, 2006, 07:28:45 PM »

jo, he estado leyendo el script y me he dado cuenta q no tengo ni idea de eso (es perl no?). Con eso se conseguiría hacer un icono en el area de notificación ¿no? pero no leo nada de amuled por nigún lado  :] jejeje

Vamos, el resultado de usarlo es ninguno. (dándole permisos de ejecución).

Yo me habia imaginado algo como:

ejecuta amuled amulegui
si amuled esta ejecuntandose
ejecuta solo amulegui

(asi es como entiendo yo los scrips :P)


Uso ubuntu dapper (no pude aguantar). perl está instalado, pero no todos lo paquetes (quizá haga falta alguno de los q no tengo)

Un saludo y muchas gracias
Logged

AnimAlf

  • Full Member
  • ***
  • Karma: 3
  • Offline Offline
  • Posts: 225
    • Home
Re: recomendación/petición para amule-demonio
« Reply #4 on: April 08, 2006, 11:35:11 PM »

¿No dije que puede partir? sinonimo de empezar, arrancar ...

para que seguir si yo no lo necesito. Y si tu ubieses sido usuario de Mac, Windows o otro ... deiferente a linux no hace falta seguir.

Crea el Icono del emule y responde a eventos.

Te van a tener que ayudar entonces ... es bien sencillo terminarlo con fork sobre amulecmd y enviando SIGN_KILL

A proposito, en perl utiliza CPAN

perl -MCPAN -e shell
install nombre::paquete::que::sea

bye
« Last Edit: April 08, 2006, 11:36:10 PM by AnimAlf »
Logged

tx2z

  • Approved Newbie
  • *
  • Karma: 0
  • Offline Offline
  • Posts: 8
    • http://tsmcm.bitacoras.com
Re: recomendación/petición para amule-demonio
« Reply #5 on: April 10, 2006, 12:14:46 AM »

ok gracias de todas maneras... ya te dije q no tengo ni idea de esto de los scritps...

bueno, estudiare el tema entonces a ver si saco algo en claro

Un saludo
Logged

AnimAlf

  • Full Member
  • ***
  • Karma: 3
  • Offline Offline
  • Posts: 225
    • Home
Re: recomendación/petición para amule-demonio
« Reply #6 on: April 10, 2006, 01:48:45 PM »

Yo es que no se mucho. Lo del fork exec y SIGTERM lo he digo enseguida, pero aplicarlo ya es otra cosa, para uno que esta verde como yo. Si me sale bien sigo el hilo.

AnimAlf

  • Full Member
  • ***
  • Karma: 3
  • Offline Offline
  • Posts: 225
    • Home
Re: recomendación/petición para amule-demonio
« Reply #7 on: April 10, 2006, 09:18:24 PM »

últimas modificaciones en el archivo de este mensaje
Code: [Select]
#!/usr/bin/perl -w
#
# file aMulet.pl
# Copyright by AnimAlf
#
# This lines are under the GNU General Public License.
# http://www.gnu.org/copyleft/gpl.html
#
# aMulet - la t final en catalán le indica diminutivo
#          También se traduce como amuleto

use strict;

my $binaMuled = 'amuled -f';
my $apppid = "$ENV{HOME}/.tx2z.pid";
my $logMode = "msg"; # debug warning msg
my $verbose = 1; # true false

if (!defined($ENV{'DISPLAY'})){
  print &appRel . "\nATENCIÓN: Este script necesita ser ejecutado bajo las X Window\n";
  exit -1;
}

eval "use Gtk2::TrayIcon;";
if ($@) {
  print &appRel;
  print "\n\nATENCIÓN: Este script necesita el módulo Gtk2::TrayIcon\n\n";
  print "Puede instalarlo a través de CPAN del siguiente modo:\n\n";
  print "\t\tperl -MCPAN -e shell\n";
  print "\t\tinstall Gtk2::TrayIcon\n\n";
  print "bye\n";
  exit -1;
}

my $modUniCode;
eval "use Unicode::MapUTF8 qw(from_utf8);";
$modUniCode = !$@;

my $config = {};
my @appList = ( 'aMuleGui', 'wxCas', 'aLinkCreator');

# Los procesos hijo envían esta señal al padre cuando terminan y ésta
# debe ser atendida, si no se quedan zombies hasta que termine el padre.
$SIG{CHLD} = \&finalHijo;

# Si se recibe cualquier señal que pueda provocar la interrupción del
# normal funcionamiento, entonces nos encargamos de finalizar correctamente.
$SIG{TERM} = $SIG{QUIT} = $SIG{HUP} = $SIG{INT} = \&finalizar;

# TODO: Hacer algo si finaliza la sesión de las X. No se cómo detectarlo.

# Iniciando Gtk2
Gtk2->init;

# Comprobaciones iniciales. Cargar configuración.
if (!&inicializar){
  logsys ("msg", &appRel ." ha abortado el arranque.");
  unlink $apppid or die "No puedo eliminar el archivo de bloqueo";
  exit -1;
}
logsys ("msg", &appRel ." iniciado");

# Formas Gtk2
my $menu = Gtk2::Menu->new();
my $menu_opciones = Gtk2::MenuItem->new("opciones");
my $menu_aLinkCreator = Gtk2::MenuItem->new("aLinkCreator");
my $menu_wxCas = Gtk2::MenuItem->new("wxCas");
my $menu_aMuleGui = Gtk2::MenuItem->new("aMuleGui");
my $menu_verLog = Gtk2::MenuItem->new("aMule log");
my $menuSalir = Gtk2::MenuItem->new("Salir");
my $pic;
eval {$pic = Gtk2::Gdk::Pixbuf->new_from_file ($config->{'iconPath'});};
if ($@){
  my @aMulet_xpm = ('18 24 17 1', '       c None', '.      c #312A28', '+      c #524842',
           '@      c #D42238', '#      c #835128', '$      c #985A20', '%      c #6A6B6A',
           '&      c #AA7B50', '*      c #EC5867', '=      c #BF7B3F', '-      c #C9792F',
           ';      c #898989', '>      c #E39854', ',      c #CB9D83', '"      c #A9AAAA',
           ')      c #CDCBC9', '!      c #F4F5F3', '                  ',
           '          $       ',
           '         !>       ',
           '  #!    )$$       ',
           '  ##    #-$       ',
           '  )##$  -,#       ',
           '   .+##)$,)       ',
           '    ...$,!"       ',
           '    ".$=-$"       ',
           '     ;==-!=       ',
           '     " >!  "      ',
           '     ; !&  ;      ',
           '     " !)))"      ',
           '     """"""!      ',
           '    %!."""");     ',
           '    ;))";;;"%;;)  ',
           '  ">-)";;;;"->""  ',
           '  )-=$,;;%@,->$)  ',
           '  ;%--#=>>**+%%;  ',
           ' +....&=>>>>#!))! ',
           '%"-=##$>>>>=&$--;;',
           '+)-=##&=>>>=#=->)+',
           '%;;=$+.+>>++$->,;%', ' "              . ');
  $pic = Gtk2::Gdk::Pixbuf->new_from_xpm_data (@aMulet_xpm);
  logsys ("warning", "Error al cargar el icono: " . $config->{'iconPath'});
  logsys ("msg", "Se procede a cargar el icono interno.");
}
my $img= Gtk2::Image->new_from_pixbuf($pic->scale_simple(18, 24, "tiles"));
my $tray= Gtk2::TrayIcon->new("trayicon");
my $paraEvent = Gtk2::EventBox->new;
my $trayTooltip = Gtk2::Tooltips->new;
my $SeparadorMenu1 = Gtk2::SeparatorMenuItem->new;
my $SeparadorMenu2 = Gtk2::SeparatorMenuItem->new;
my $SeparadorMenu3 = Gtk2::SeparatorMenuItem->new;

$menu->append($menu_verLog);
$menu->append($SeparadorMenu1);
$menu->append($menu_opciones);
$menu->append($SeparadorMenu2);
$menu->append($menu_aLinkCreator);
$menu->append($menu_wxCas);
$menu->append($menu_aMuleGui);
$menu->append($SeparadorMenu3);
$menu->append($menuSalir);

$paraEvent->add($img);
$tray->add($paraEvent);
$trayTooltip->set_tip($tray, &appRel ." - Click derecho para opciones");

# Tratamiento de señales
logsys ("debug", "Asignación de señales");
$tray->signal_connect ('button-press-event' => \&ClickOnIcon);
$menu_opciones->signal_connect('activate' => \&opcionesGui);
$menu_verLog->signal_connect('activate' => \&visorTexto);
$menu_aLinkCreator->signal_connect('activate' => sub {&extAppStatus('aLinkCreator')});
$menu_wxCas->signal_connect('activate' => sub {&extAppStatus('wxCas')});
$menu_aMuleGui->signal_connect('activate' => sub {&extAppStatus('aMuleGui')});
$menuSalir->signal_connect('activate' => \&finalizar);

# show sobre los witgets para que sean visibles
logsys ("debug", "Show sobre los witgets");
$menu->show_all;
$tray->show_all;
&popUpsAct;
# iniciando bucle de mensajes
logsys ("debug", "Inicio del bucle de mensajes");
Gtk2->main;
# Fin. Aquí termina el flujo.

#############
# Funciones #
#############
# Respuesta a la señal de los hijos (cuando terminan la mandan)
sub finalHijo {
  $SIG{CHLD} = \&finalHijo;
  my $pid = wait;
  return unless $config->{$pid}; # El system() realiza un fork() también.
  logsys ("msg", "Acaba de finalizar: " . $config->{$pid} .
    " [" . $config->{$config->{$pid} . 'Pid'} . "]");
  undef $config->{$config->{$pid} . 'Pid'};
  undef $config->{$pid};
}

# finalizar correctamente y eliminar bloqueo
sub finalizar {
  $SIG{TERM} = $SIG{QUIT} = $SIG{HUP} = $SIG{INT} = \&finalizar;
  logsys ("msg", "Finalizando ...");
  #Finalizar el bucle de mensajes
  Gtk2->main_quit;
  #Comprobar que no quede ninguna aplicación hijo en funcionamiento
  #y si existe eliminarlas antes de finalizar no vayan a quedar zombies.
  logsys ("msg", "Finalizando posibles hijos");
  # Ahora la señal de retorno del hijo la trataremos aquí.
  $SIG{CHLD} = 'DEFAULT';
  foreach my $app (@appList) {
    if (defined $config->{$app . "Pid"}){
      logsys ("msg", "[$app] está en marcha. Finalizándolo ...");
      kill ('SIGTERM', $config->{$app . "Pid"});
      waitpid($config->{$app . "Pid"}, 0);
    }
  }
  logsys ("msg", "No quedan procesos hijo de " . &appRel . " en el sistema");
  #TODO Si archivo de bloqueo es usado para log volcar a otro sitio.
  logsys ("warning", "TODO: volcar archivo log a log final [si se le ordena]");
  logsys ("msg", "Terminada la ejecución");
  logsys ("msg", "bye ;-)\n\n".&appRel."\n");
  # borrar archivo de bloqueo
  unlink $apppid or die "No puedo eliminar el archivo de bloqueo $apppid";
}

# flushChars transforma utf8 a iso-8859-1
sub flushChars {
  my ($tmpStr) = @_;
  $tmpStr =~ s/([\200-\377]+)/from_utf8({ -string => $1, -charset => 'ISO-8859-1'})/eg
    if $modUniCode;
  return $tmpStr;
}

#logsys Mini sistema de logs.
sub logsys {
  my ($mode, $text) = @_;
  my $tmpStr;
  if (open LOG, ">>$apppid") {
    if (($logMode eq "debug" && ($mode eq "debug" or $mode eq "warning")) ||
      ($logMode eq "warning" && ($mode eq "warning" or $mode eq "msg")) ||
($logMode eq "msg" && $mode eq "msg")){
          my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime (time);
          $year += 1900; $mon ++;
          $tmpStr="[" . uc($mode) . "] " . sprintf("%02d",$mday) . "-" .
           sprintf("%02d",$mon) . "-$year " . sprintf("%02d",$hour) . ":" .
           sprintf("%02d",$min) . ":" . sprintf("%02d",$sec) . " $text\n";
          print LOG $tmpStr; print $tmpStr if $verbose;
    }
    close LOG;
  }
}

# ClickOnIcon se lanzará tras un click en el TrayIcon.
# Para diferenciar el botón del ratón que se pulsó.
sub ClickOnIcon {
  logsys ("debug", "sub: ClickOnIcon start");
  my ($widget, $event) = @_;
  return 1 if $event->button == 2;
  $menu->popup(undef, undef, undef, undef, $event->button,$event->time) if $event->button == 3;
  &extAppStatus($config->{'appOnClick'}) if $event->button == 1;
}

# extAppStatus lanzará una instancia de la aplicación si no existe
sub extAppStatus {
  logsys ("debug", "sub: extAppStatus start");
  my ($refApp) = @_;
  $config->{ $refApp . 'Pid'} = fork()
    unless ($config->{ $refApp . 'Pid'}); # Crea un proceso hijo
  die "error al hacer fork: $!" if !defined($config->{$refApp . 'Pid'});
  if ( $config->{$refApp . 'Pid'} == 0) { # Si se trata del proceso hijo
    logsys ("msg", "Iniciando proceso hijo con [$refApp]");
    if ($config->{$refApp . 'Ok'}) {
      $SIG{TERM} = $SIG{QUIT} = $SIG{HUP} = $SIG{INT} = 'DEFAULT';
      logsys ("warning", "Redirección de STDOUT para $refApp a $apppid");
      open STDOUT, ">>$apppid";
      exec ($config->{$refApp . 'App'}) ||
        die "ATENCIÓN: Falló la ejecución de $refApp";
    } else {exit -1}
  } else { # Circuito del proceso padre
    logsys ("msg", "Circuito del proceso padre [hijo=>$refApp pid:"
      . $config->{$refApp . 'Pid'} . "]");
    # Asigno una clave en la configuración con el valor de la pid con el padre
    $config->{$config->{$refApp . 'Pid'}} = $refApp
      unless $config->{$config->{$refApp . 'Pid'}};
    # a ejecutar por el proceso padre
    # TODO: Enviar setFocus a la aplicación
    #
  }
}

# appRel nombre y versión del script
sub appRel {
  $0=~/.*\/(.*)$/;
  my $fileRun = $1;
  $fileRun = $0 unless $fileRun;
  $fileRun = "aMulet.pl [$1]" if $fileRun ne 'aMulet.pl';
  return $fileRun . " v.1.1 beta";
}

# popUpsAct des/activar apartados del menú
sub popUpsAct {
  $menu_aLinkCreator->set_sensitive($config->{'aLinkCreatorOk'});
  $menu_wxCas->set_sensitive($config->{'wxCasOk'});
  $menu_aMuleGui->set_sensitive($config->{'aMuleGuiOk'});
}

# pathsVerify comprobar la ruta de las aplicaciones
sub pathsVerify{
  foreach my $app (@appList) {
    $config->{$app . 'Ok'} = (-x $config->{$app . 'App'});
  }
}

# inicializar comprobaciones iniciales
sub inicializar {
  my $tmpStr;
  my $runDaemon;

  # Comprobar si ya estamos en marcha
  if (-f $apppid){
    my $appVerify=0;
    # Comprobar si realmente la aplicación está en marcha.
    if (open(APPPID, $apppid)){
      my $line;
      while ($line = ) {
        chop($line); last;
      }
      close(APPPID);
      $appVerify=&isRunProcess($line);
    }
    if ($appVerify){
      $tmpStr = "" .appRel . " ya está funcionando!\n\n";
      $SIG{TERM} = $SIG{QUIT} = $SIG{HUP} = $SIG{INT} = 'DEFAULT';
      &showMessage( 'error', flushChars($tmpStr), 'ok');
      exit -1;
    } else {unlink $apppid}
  }

  # Iniciar Bloqueo
  logsys ("msg", "Iniciando archivo de bloqueo");
  if (open LOG, ">$apppid"){print LOG "$$\n"}
  # Cargar la configuración
  logsys ("msg", "Cargando la configuración");
  &loadConfig;

  # Comprobar el estado del aMule como servicio
  if ($config->{'aMuledOn'}){
    logsys ("msg", "Iniciando la verificación de la existencia de amuled");
    if (open(PROCESOS,"ps -A |")){
      while (){
        $runDaemon = 1 if ($_ =~ /amuled/);
      }
      close PROCESOS;
    }
    if (!$runDaemon) { $runDaemon = 1;
      logsys ("msg", "No se detecta. Iniciando amuled ...");
      if (open(AMULED,"$binaMuled |")){
        my $aMuleRun;
        while (){
          logsys ("msg", $_);
          logsys ("msg", "ATENCIÓN: Cambie la orden [$binaMuled] bajo su responsabilidad") if $_ =~ /binary requires/;
          undef $runDaemon if $_ =~ /binary requires/;
          $aMuleRun = 1 if $_ =~ /Raising current running instance/;
        }
        close AMULED;
        if ($aMuleRun){
          logsys ("msg", "*"x56 );
          logsys ("msg", "*"x5 ." Se ha detectado que el aMule está en marcha " ."*"x6 );
          logsys ("msg", "*"x56 );
          logsys ("msg", "aMulet.pl se diseñó pensando en las herramientas remotas" );
          logsys ("msg", "*"x56 );
          logsys ("msg", "* FUNCIONARÍA, pero no veo la necesidad de ello.  STOP!!" );
          logsys ("msg", "*"x56 );
          undef $runDaemon;
        };
        logsys ("msg", "El amuled ha sido puesto en marcha.") if $runDaemon;
      } else {
        undef $runDaemon;
        logsys ("msg", "No se ha podido ejecutar el amuled!");
        logsys ("msg", "Se puede indicar en la configuración que se salte este paso");
        $tmpStr = "No se ha podido ejecutar aMuled.\n\n";
        $tmpStr .= "¿Desactivo la opción de arrancar el amuled en la configuración?\n\n";
        $tmpStr .= "Desactive esta opción si el aMuled está residente en otra máquina de su red.";
        $tmpStr .= "\n\nNo he detectado el aMuleGui." unless $config->{'aMuleGuiOk'};
        $tmpStr .= "\nDeberá indicar donde está situado éste en la configuración" unless $config->{'aMuleGuiOk'};
        my $confirmacion= &showMessage( 'question', flushChars($tmpStr), 'yes-no');
        if ($confirmacion eq 'yes'){
          $config->{'aMuledOn'}=0;
          &saveConfig;
          $runDaemon = 1;
        };
      }
    } else {logsys ("msg", "El aMuled ha sido detectado :))");}
  } else {
    $runDaemon = 1;
    logsys ("msg", "ATENCIÓN No se detectará ni arrancará el aMuled");
    logsys ("msg", "         Se puede modificar esto en la configuración");
  }

  # Comprobar que la aplicación se arranca tras el click en el icono existe.
  # No afectará al retorno de la función.
  if ($runDaemon){
    logsys ("msg", "Verificando la aplicación que responde al click del icono.");
    if (!$config->{$config->{'appOnClick'} . 'Ok'}){
         $tmpStr = "Debe indicar en la configuración dónde residen el ejecutable\n";
         $tmpStr .= "de la aplicación $config->{'appOnClick'} o escoger otra\n";
         $tmpStr .= "aplicación que responda al click en el icono";
      &showMessage( 'warning', flushChars($tmpStr), 'ok');
      &opcionesGui;
    }
  } # TODO: Intentar mostrarlo como modal y esperar respuesta.
  return $runDaemon;
}

# visorTexto Crea una ventana Gtk en la que muestra el logfile del aMule
sub visorTexto {
  logsys ("debug", "sub: visorTexto start");
  my ($widget, $event) = @_;
  logsys ("debug", "Deshabilitando la llamada en el menú");
  $widget->set_sensitive(0);
  my $visorTextWin = Gtk2::Window->new("toplevel");
  my $vbox = Gtk2::VBox->new;
  my $scrolledwindow = Gtk2::ScrolledWindow->new;
  my $textBuffer = Gtk2::TextBuffer->new;
  my $ok = Gtk2::Button->new_from_stock("gtk-close");
  my $textView = Gtk2::TextView->new_with_buffer($textBuffer);
  my $LineaLog;

  $visorTextWin->set_title('Visor de Texto');
  $visorTextWin->set_position('center');
  $visorTextWin->set_default_size(640, 300);
  logsys ("debug", "Leyendo " . $config->{'aMuleDir'} . "/logfile");
  open (LOGFILE, $config->{'aMuleDir'} . "/logfile") || logsys ("warning", $config->{'aMuleDir'} . "/logfile: $!");
  while () {$LineaLog .= $_;}
  close LOGFILE;
  $textView->set_editable(0);
  $textView->set_cursor_visible(0);
  $textBuffer->set_text($LineaLog);
  $scrolledwindow->set_policy('automatic', 'automatic');

  $scrolledwindow->add($textView);
  $vbox->add($scrolledwindow );
  $vbox->pack_end($ok, 0, 0, 3);
  $visorTextWin->add($vbox);

  $ok->signal_connect("clicked", sub { $visorTextWin->destroy; } );
  $visorTextWin->signal_connect('destroy' => sub { $widget->set_sensitive(1); });
  logsys ("msg", "Mostrando la ventana de logs");
  $visorTextWin->show_all;
}

# isRunProcess comprobará si un proceso está en ejecución
sub isRunProcess {
  my ($proceso) = @_;
  my $runDaemon = 0;
  if (open(PROCESOS,"ps -A |")){
    while (){$runDaemon = 1 if $_ =~ /^$proceso\s/;}
    close PROCESOS;
  }
  return $runDaemon;
}

# opcionesGui muestra la ventana de opciones
sub opcionesGui {
  my ($widget, $event) = @_;
  logsys ("debug", "Deshabilitando la llamada en el menú");
  $widget->set_sensitive(0) if defined $widget;
  my $guiOpciones = Gtk2::Window->new;
  my $vboxPrincipal = Gtk2::VBox->new;
  my $notebook = Gtk2::Notebook->new;
  my $select_aMuleGui = Gtk2::RadioButton->new('appOnClick', 'aMuleGui');
  my @grupo = $select_aMuleGui->get_group;
  my $select_alc = Gtk2::RadioButton->new_with_label(@grupo, 'aLinkCreator');
  my $select_wxcas = Gtk2::RadioButton->new_with_label(@grupo, 'wxCas');
  my $check_aMuled_on = new Gtk2::CheckButton->new(flushChars('Arrancar aMule como servicio al principio (si no lo está)'));
  my $vBoxTabRutas = Gtk2::VBox->new;
  my $vBoxTabAbout = Gtk2::VBox->new;
  my $hboxPrincipal = Gtk2::HBox->new;
  my $hBoxTabRutas1 = Gtk2::HBox->new;
  my $hBoxTabRutas2 = Gtk2::HBox->new;
  my $hBoxTabRutas3 = Gtk2::HBox->new(1);
  my $hseparator1 = Gtk2::HSeparator->new;
  my $hseparator2 = Gtk2::HSeparator->new;
  my $hseparator3 = Gtk2::HSeparator->new;
  my $labelTabRutas = Gtk2::Label->new('General');
  my $labelTabAbout = Gtk2::Label->new('About');
  my $labelTabRut1 = Gtk2::Label->new('Relacionado con el Servicio amuled');
  my $labelTabRut2 = Gtk2::Label->new('aMule Home Dir');
  my $labelTabRut3 = Gtk2::Label->new('Ruta a las aplicaciones');
  my $labelTabRut4 = Gtk2::Label->new('aMuleGui: ');
  my $labelTabRut5 = Gtk2::Label->new('wxCas: ');
  my $labelTabRut6 = Gtk2::Label->new('aLinkCreator: ');
  my $labelTabRut7 = Gtk2::Label->new(flushChars('Icono que se mostrará en la barra'));
  my $labelTabRut8 = Gtk2::Label->new('Icono:');
  my $labelTabRut9 = Gtk2::Label->new(flushChars('¿Qué aplicación arrancará tras hacer click en el icono?'));
  my $labelAbout1 = Gtk2::Label->new('aMulet.pl');
  my $labelAbout2 = Gtk2::Label->new('by AnimAlf - AnimAlf@engendro.sytes.net');
  my $labelAbout3 = Gtk2::Label->new('una idea de tx2z en http://forum.amule.org');
  my $labelAbout4 = Gtk2::Label->new('Distribuido bajo la licencia GPL');
  my $labelAbout5 = Gtk2::Label->new('http://www.gnu.org/copyleft/gpl.html');
  my $edit_home_aMule = Gtk2::Entry->new;
  my $edit_aMuleGui_path = Gtk2::Entry->new;
  my $edit_wxcas_path = Gtk2::Entry->new;
  my $edit_alc_path = Gtk2::Entry->new;
  my $edit_icon_path = Gtk2::Entry->new;
  my $btnOk = Gtk2::Button->new_from_stock("gtk-apply");
  my $btnCancel = Gtk2::Button->new_from_stock("gtk-cancel");
  my $btnRutas1 = Gtk2::Button->new('...');
  my $btnRutas2 = Gtk2::Button->new('...');
  my $btnRutas3 = Gtk2::Button->new('...');
  my $btnRutas4 = Gtk2::Button->new('...');
  my $btnRutas5 = Gtk2::Button->new('Selecciona');
  my $tableTabRutas = Gtk2::Table->new(3, 3, 0 );

  # Posicionando en la ventana principal
  $guiOpciones->add($vboxPrincipal);
  # Posicionando en el notebook (contenedor de pestañas)
  $vboxPrincipal->add($notebook);

  # primera pestaña
  $notebook->append_page($vBoxTabRutas, $labelTabRutas);

  $vBoxTabRutas->pack_start($labelTabRut1,     0, 0, 3);
  $vBoxTabRutas->pack_start($hBoxTabRutas1,    0, 0, 3);

  $hBoxTabRutas1->pack_start($labelTabRut2,    0, 0, 3);
  $hBoxTabRutas1->add($edit_home_aMule);
  $hBoxTabRutas1->pack_end($btnRutas1,         0, 0, 3);
  $vBoxTabRutas->pack_start($check_aMuled_on,  0, 0, 3);

  $vBoxTabRutas->pack_start($hseparator2,      0, 0, 3);
  $vBoxTabRutas->pack_start($labelTabRut3,     0, 0, 3);
  $vBoxTabRutas->pack_start($tableTabRutas,    0, 0, 3);
   
  $tableTabRutas->attach($labelTabRut4,        0, 1, 0, 1, ['fill'], [], 0, 0 );
  $tableTabRutas->attach($edit_aMuleGui_path,  1, 2, 0, 1, ['expand', 'fill'], [], 0, 0 );
  $tableTabRutas->attach($btnRutas2,           2, 3, 0, 1, ['fill'], [], 0, 0 );
  $tableTabRutas->attach($labelTabRut5,        0, 1, 1, 2, ['fill'], [], 0, 0 );
  $tableTabRutas->attach($edit_wxcas_path,     1, 2, 1, 2, ['expand', 'fill'], [], 0, 0 );
  $tableTabRutas->attach($btnRutas3,           2, 3, 1, 2, ['fill'], [], 0, 0 );
  $tableTabRutas->attach($labelTabRut6,        0, 1, 2, 3, ['fill'], [], 0, 0 );
  $tableTabRutas->attach($edit_alc_path,       1, 2, 2, 3, ['expand', 'fill'], [], 0, 0 );
  $tableTabRutas->attach($btnRutas4,           2, 3, 2, 3, ['fill'], [], 0, 0 );

  $vBoxTabRutas->pack_start($hseparator1,      0, 0, 3);
  $vBoxTabRutas->pack_start($labelTabRut9,     0, 0, 3);
  $vBoxTabRutas->pack_start($hBoxTabRutas3,    0, 0, 3);
  $hBoxTabRutas3->pack_start($select_aMuleGui, 0, 0, 3);
  $hBoxTabRutas3->pack_start($select_alc,      0, 0, 3);
  $hBoxTabRutas3->pack_start($select_wxcas,    0, 0, 3);

  $vBoxTabRutas->pack_end($hBoxTabRutas2,      0, 0, 3);

  $hBoxTabRutas2->pack_start($labelTabRut8,    0, 0, 3);
  $hBoxTabRutas2->add($edit_icon_path);
  $hBoxTabRutas2->pack_end($btnRutas5,         0, 0, 3);

  $vBoxTabRutas->pack_end($labelTabRut7,       0, 0, 3);
  $vBoxTabRutas->pack_end($hseparator3,        0, 0, 3);

  # Segunda pestaña
  $notebook->append_page($vBoxTabAbout, $labelTabAbout);
  $vBoxTabAbout->pack_start($labelAbout1,      0, 0, 3);
  $vBoxTabAbout->pack_start($labelAbout2,      0, 0, 3);
  $vBoxTabAbout->pack_start($labelAbout3,      0, 0, 3);
  $vBoxTabAbout->pack_start($labelAbout4,      0, 0, 3);
  $vBoxTabAbout->pack_start($labelAbout5,      0, 0, 3);

  # Posicionando en la parte inferior de la ventana principal
  $vboxPrincipal->pack_end($hboxPrincipal,     0, 0, 3);
  $hboxPrincipal->pack_start($btnOk,           0, 0, 3);
  $hboxPrincipal->pack_end($btnCancel,         0, 0, 3);

  $labelAbout1->set_markup('' . appRel . ' ');
  #TODO: Intentar conseguir una UrlLabel, fácil con gnome-open (pero y si no existe gnome?)
  #http://forum.amule.org/thread.php?threadid=9751
  $labelAbout3->set_markup('Una idea de tx2z en http://forum.amule.org');

  # Propiedades de la ventana principal
  $guiOpciones->set_title('Opciones aMulet.pl');
  $guiOpciones->set_position('center');
  #TODO: Intentar que actuase como una ventana modal, como el showMessage
  #      y el punto de la llamada esperase la respuesta ok-cancel
  logsys ("msg", "Mostrando la ventana de opciones");
  logsys ("warning", "*"x36) unless $widget;
  logsys ("warning", "TODO: Que sea modal tipo showMessage") unless $widget;
  logsys ("warning", "*"x36) unless $widget;

  # Propiedades del notebook
  $notebook->set_tab_pos('top');
  $notebook->set_show_tabs  (1);
  $notebook->set_show_border(1);
  $notebook->set_scrollable (0);
  $notebook->set_tab_hborder(2);
  $notebook->set_tab_vborder(2);

  # alineando de algunas etiquetas
  $labelTabRut4->set_alignment(1,0.5);
  $labelTabRut5->set_alignment(1,0.5);
  $labelTabRut6->set_alignment(1,0.5);

  # Asignando la configuración.
  $edit_home_aMule->set_text($config->{'aMuleDir'});
  $edit_aMuleGui_path->set_text($config->{'aMuleGuiApp'});
  $edit_wxcas_path->set_text($config->{'wxCasApp'});
  $edit_alc_path->set_text($config->{'aLinkCreatorApp'});
  $edit_icon_path->set_text($config->{'iconPath'});

  $check_aMuled_on->set_active($config->{'aMuledOn'});

  $select_wxcas->set_active($config->{'appOnClick'} eq 'wxCas');
  $select_alc->set_active($config->{'appOnClick'} eq 'aLinkCreator');
  $select_aMuleGui->set_active($config->{'appOnClick'} eq 'aMuleGui');

  $select_wxcas->set_sensitive($config->{'wxCasOk'});
  $select_alc->set_sensitive($config->{'aLinkCreatorOk'});
  $select_aMuleGui->set_sensitive($config->{'aMuleGuiOk'});

  # Lo mostramos todo
  $guiOpciones->show_all;
  # La asignación de señales
  $btnOk->signal_connect("clicked", sub {
      my ($tmpStr, $tmpStr1);

      $tmpStr1 = 'wxCas' if $select_wxcas->get_active;
      $tmpStr1 = 'aLinkCreator' if $select_alc->get_active;
      $tmpStr1 = 'aMuleGui' if $select_aMuleGui->get_active;

      $tmpStr .= $edit_home_aMule->get_text . ": No es un directorio\n"
        if !(-d $edit_home_aMule->get_text);
      $tmpStr .= $edit_aMuleGui_path->get_text . ": No es un ejecutable (o no existe)\n"
        if !(-x $edit_aMuleGui_path->get_text);
      $tmpStr .= $edit_wxcas_path->get_text . ": No es un ejecutable (o no existe)\n"
        if !(-x $edit_wxcas_path->get_text);
      $tmpStr .= $edit_alc_path->get_text . ": No es un ejecutable (o no existe)\n"
        if !(-x $edit_alc_path->get_text);
      $tmpStr .= $edit_icon_path->get_text . ": No parece que exista\n"
        if !(-e $edit_icon_path->get_text);

      if (defined $tmpStr){
          $tmpStr = "Se ha detectado lo siguiente:\n\n$tmpStr\n\n" . flushChars("¿Desea continuar de todos modos?");
          my $confirmacion= &showMessage( 'question', $tmpStr, 'yes-no');
          return if ($confirmacion eq 'no');
      }

      $config->{'appOnClick'} = 'wxCas' if $select_wxcas->get_active;
      $config->{'appOnClick'} = 'aLinkCreator' if $select_alc->get_active;
      $config->{'appOnClick'} = 'aMuleGui' if $select_aMuleGui->get_active;

      $config->{'aMuleDir'} = $edit_home_aMule->get_text;
      $config->{'aMuleGuiApp'} = $edit_aMuleGui_path->get_text;
      $config->{'wxCasApp'} = $edit_wxcas_path->get_text;
      $config->{'aLinkCreatorApp'} = $edit_alc_path->get_text;
      &showMessage( 'info', flushChars("El icono cambiará cuando reinicie la aplicación."), 'ok')
        if $config->{'iconPath'} ne $edit_icon_path->get_text;
      $config->{'iconPath'} = $edit_icon_path->get_text;

      $config->{'aMuledOn'} = $check_aMuled_on->get_active;

      &saveConfig; pathsVerify; popUpsAct;
      $guiOpciones->destroy;
    }
  );
  $btnCancel->signal_connect("clicked", sub { $guiOpciones->destroy; } );
  $guiOpciones->signal_connect('destroy' => sub {$widget->set_sensitive(1) if defined $widget;});
  $btnRutas1->signal_connect('clicked' => sub { dialogOpen($edit_home_aMule,
    'Seleccione el directorio home de aMule', 'select-folder'); });
  $btnRutas2->signal_connect('clicked' => sub { dialogOpen($edit_aMuleGui_path,
    flushChars('Seleccione la aplicación aMuleGui'), 'open'); });
  $btnRutas3->signal_connect('clicked' => sub { dialogOpen($edit_wxcas_path,
    flushChars('Seleccione la aplicación wxCas'), 'open'); });
  $btnRutas4->signal_connect('clicked' => sub { dialogOpen($edit_alc_path,
    flushChars('Seleccione la aplicación aLinCreator'), 'open'); });
  $btnRutas5->signal_connect('clicked' => sub { dialogOpen($edit_icon_path,
    flushChars('Seleccione el icono que utilizará aMulet'), 'open'); });
}

# loadConfig carga la configuración o la crea si no existe
sub loadConfig {
  if ( open( CONFIGFILE, "$ENV{HOME}/.aMule/amulet.rc" ) ) {
    while () {
      if ( $_ =~ /(\w+)\s=\s(.+)/ ) { $config->{$1} = $2 }
    }
    close CONFIGFILE;
  } else {
    # es la primera vez.
    mkdir "$ENV{HOME}/.aMule" unless (-d "$ENV{HOME}/.aMule");
    $config = { # Por defecto
      'aMuleDir'        => "$ENV{'HOME'}/.aMule",
      'aMuleGuiApp'     => 'amulegui',
      'wxCasApp'        => 'wxcas',
      'aLinkCreatorApp' => 'alc',
      'iconPath'        => '/usr/share/pixmaps/amule.xpm',
      'appOnClick'      => 'aMuleGui',
      'aMuledOn'        => 1
    };
    foreach my $app (@appList) {
      $config->{$app . 'App'} = which($config->{$app . 'App'});
    }
    pathsVerify;
    &saveConfig;
  }
  pathsVerify;
}

# saveConfig guarda la configuración en un archivo
sub saveConfig {
  my @keyList = ('aMuleDir', 'aMuleGuiApp', 'wxCasApp',
    'aLinkCreatorApp', 'iconPath', 'appOnClick', 'aMuledOn');
  if ( open( CONFIGFILE, '>', "$ENV{HOME}/.aMule/amulet.rc" ) ) {
    foreach my $key (@keyList) {
      print CONFIGFILE "$key = $config->{$key}\n" if $config->{$key} ne '';
    }
    close CONFIGFILE;
  }else {logSys("warning", "No se puede escribir en el archivo de configuración!");}
};

# showMessage Muestra una ventana con un mensaje, y espera respuesta.
sub showMessage {
  #$icon info warning error question
  #$type none ok close cancel yes-no ok-cancel
  my ($icon,$text,$type) = @_;
  my $dialog = Gtk2::MessageDialog->new_with_markup (undef,
     [qw/modal destroy-with-parent/], $icon, $type, sprintf "$text");
  my $retval = $dialog->run;
  $dialog->destroy;
  return $retval;
}

# which Devuelve el path completo a la aplicación.
sub which {
  my $appFile = shift;
  foreach (split(':', $ENV{PATH})) {
    my $tmpStr = "$_/$appFile";
    if (-x $tmpStr) {
      $appFile = $tmpStr;
      last;
    }
  }
  return $appFile;
}

# dialogOpen ventana de selección de archivos o directorios y escribe
# el resultado en en el entry que debe ser el primer parámetro.
sub dialogOpen {
  # $widget debe ser un entry
  # $type open save select-folder create-folder
  my($widget,$caption,$type) =@_;
  my $chooserDialog =  Gtk2::FileChooserDialog->new ($caption, undef, $type,
    'gtk-cancel' => 'cancel', 'gtk-ok' => 'ok');
  my $filename = $chooserDialog->get_filename if 'ok' eq $chooserDialog->run;
  $widget->set_text ($filename) if defined $filename;
  $chooserDialog->destroy;
  return;
}
« Last Edit: April 23, 2006, 08:35:06 PM by AnimAlf »
Logged

AnimAlf

  • Full Member
  • ***
  • Karma: 3
  • Offline Offline
  • Posts: 225
    • Home
Re: recomendación/petición para amule-demonio
« Reply #8 on: April 12, 2006, 12:09:59 AM »

Lo que hace ahora el script es lo siguiente.

Se inicia en la barra de iconos.
Si no encuentra al amuled funcionando lo arranca (opcional).
Tras un click en el icono se hace una llamada al amulegui (o a escoger).
En el menú contextual aparecen:
Lanzadores para el amulegui, el wxCas y el aLinkCreator. Un Visor de logs del aMule.
Lanza una solo proceso por aplicación.
Y sólo en este archivo además se muestra el ratio de subida y bajada en el tooltip y en el about muestra un resumen del contenido de amulesig.dat si está activada esta opción en el aMule
TODO:
  • Intentar pulsar el botón Conectar por código (si se guardó la contraseña) en el aMuleGui.
  • Hacer un setfocus (o similar) sobre la aplicación que esté en marcha en caso de repetir la llamada.
« Last Edit: April 23, 2006, 08:40:38 PM by AnimAlf »
Logged

AnimAlf

  • Full Member
  • ***
  • Karma: 3
  • Offline Offline
  • Posts: 225
    • Home
Help me, please
« Reply #9 on: April 13, 2006, 08:21:03 AM »

Hola, estoy muy entretenido aquí con este escript (¿puedo seguir haciendo esto?)

Necesito ayuda.

Ya veo donde tengo el error
no llamo bien a la señal, creo que tiene que ir la función sóla por una lado y por el otro tiene que ir los argumentos.
signal_connect(instance, detailed_signal, callback, data=NULL)
lo que ahora tengo así:
$menu_wxCasi->signal_connect('activate' => extAppStatus ($wxcas_pid, $appwxcas,"wxCas") );
tendría que ser así o similar:
$menu_wxCas->signal_connect('activate' => \&extAppStatus, (intepid=>$wxcas_pid, interapp=>$appwxcas, interdesc=>"wxCas") );

Pero no se cómo hacer la llamada, veo por donde tiene que ir pero no se como hacerlo. ¿Alguien puede darme una pista?

AnimAlf

  • Full Member
  • ***
  • Karma: 3
  • Offline Offline
  • Posts: 225
    • Home
Re: recomendación/petición para amule-demonio
« Reply #10 on: April 13, 2006, 11:52:29 AM »

El archivo que hay aquí es el terminado el 20 de abril. El código está tomando un camino diferente desde que quiero cazar la señal de termino de sesión X.
Quote
Quote
Como no puedo seguir por donde no conozco. Lo he solucionado así:

No se si ha alguien le interesará este código, pero tras esto está muy estable. Lo hecho hasta ahora lo subo en un Attachment a este mensaje, ya que parece que no da error. Y si el moredador no tiene inconveniente yo seguiré modificando el código en el mensaje en el que está el listado anterior (nunca pensé que aprendería gtk para perl de un modo tan ameno, (Se nota que estoy verde perl y OPP, no creo que sea sencillo hacer llegar los parámetros sin heredar o algo similar, je je, que pronto que creí que se podría solucionar)).

Lo he solucionado dejando la llamada como se que tienen que estar (es decir que no se más de ellas) cuando asigno las señales lo dejo así:
Code: [Select]
$menu_wxCas->signal_connect('activate' => \&extAppStatus );
Luego en extAppStatus comparo el widget de donde procede y asigno los valores ahí:

Code: [Select]
 if ($widget == $menu_wxCas) {$intepid=$wxcas_pid; $interapp=$appwxcas; $interdesc = "wxCas"};
  if (($widget == $menu_aMulegui) or ($widget == $tray)) {$intepid=$amulegui_pid; $interapp=$appgui; $interdesc = "aMuleGUI"};

Jo... esto se esta convirtiendo en un monólogo. Espero que no te importe lector.

He reescrito la función (ahora la veo guapa) solo me queda sustituir el exec que ahora utilizo por open, para ver si así no me queda difunto el proceso. (me refiero durante la ejecución) Al finalizar no dejo nada por ahí haciendo de Elvis  :))

Quote
Quote
había un error en la función extAppStatus. En principio sólo la usaba para lanzar el amulegui, pero tras modificarla para que aceptara las demás aplicaciones (por ahora sólo wxCas), pero pensando en el aLinkCreator. Pues escribía la pid de la aplicación en una variable interna de la función, pero olvidé luego asignarla a la variable pid de la aplicación que corresponda, para que no abriese más que una vez la aplicación.

El descuido está corregido  0:-))

Tengo que cambiarlo, no me gusta nada. Quizás me he puesto nervioso y no me salía ninguna cosa que le mandaba, pero ahora es un lío el interior de la función. Intentaré que al asignar el valor a la variable sea por referencia, para así no tener que asignar dos veces.

Lo he cambiado totalmente. Creo que he revisado todos los puntos por los que el script podría caer.

hasta luego.
Este archivo ya no lo voy a sobreescribir más. Se queda así. Lo considero la primera versión estable.
« Last Edit: April 20, 2006, 03:57:53 AM by AnimAlf »
Logged

tx2z

  • Approved Newbie
  • *
  • Karma: 0
  • Offline Offline
  • Posts: 8
    • http://tsmcm.bitacoras.com
Re: recomendación/petición para amule-demonio
« Reply #11 on: April 14, 2006, 10:18:12 PM »

joer, me voy unos dias y lias una....  :P

Eres un artistazo voy a probarlo y te comento... La verdad q no puedo ayudarte mucho pq no tengo ni idea.

Un saludo y muchas gracias  :baby:
Logged

tx2z

  • Approved Newbie
  • *
  • Karma: 0
  • Offline Offline
  • Posts: 8
    • http://tsmcm.bitacoras.com
Re: recomendación/petición para amule-demonio
« Reply #12 on: April 14, 2006, 11:10:35 PM »

mmmm ejecutarlo me sale:

Code: [Select]
Can't locate Gtk2/TrayIcon.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.7 /usr/local/share/perl/5.8.7 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at ./aMulet.pl line 12.
BEGIN failed--compilation aborted at ./aMulet.pl line 12.

me falta algo por instalar o hago algo mal??

un saludo
Logged

tx2z

  • Approved Newbie
  • *
  • Karma: 0
  • Offline Offline
  • Posts: 8
    • http://tsmcm.bitacoras.com
Re: recomendación/petición para amule-demonio
« Reply #13 on: April 14, 2006, 11:25:05 PM »

vale, instalé libgtk2-trayicon-perl y libgtk2-traymanager-perl y se inicia el script, pero solo me inicia amuled, no pone ningún icono en el  a de notificación:

Code: [Select]
tx2z@portatil:~$ ./aMulet.pl
[DEBUG] Fri Apr 14 23:21:34 2006 Iniciando Gtk2
[MSG] Fri Apr 14 23:21:34 2006 aMulet.pl iniciado
[DEBUG] Fri Apr 14 23:21:34 2006 sub:inicializar start
amuled: OnInit - starting timer
Initialising aMule
Checking if there is an instance already running...
No other instances are running.
amuled: forking to background - see you
parece que no puedo ejecutar el servicio. at ./aMulet.pl line 244.

sigo mirando a ver...

[aqui me he quedado,  por mas que miro el script no se que me puede fallar ¿alguna ayuda?]
« Last Edit: April 14, 2006, 11:50:31 PM by tx2z »
Logged

AnimAlf

  • Full Member
  • ***
  • Karma: 3
  • Offline Offline
  • Posts: 225
    • Home
Re: recomendación/petición para amule-demonio
« Reply #14 on: April 15, 2006, 11:03:17 AM »

Quote
joer, me voy unos dias y lias una....
si, je, je, es que esto es de vicio

Quote
pero solo me inicia amuled, no pone ningún icono en el a de notificación
ahora lo miraré. La primera vez que lo escribií funcionó y ya no lo comprobé, ya que siempre está activo el amuled en mi sistema. Le echaré un vistazo, esto no tendría que pasarte.

Code: [Select]
system ("amuled -f") or die "parece que no puedo ejecutar el servicio." unless $rundemon;Se te para en esta línea, pero lo tendría que hacer esta línea ejecuta el programa y si no lo consigue finaliza, pero parece que a ti te ejecuta el "amuled -f" pero después finaliza igualmente.  ;(

Por ahora lo cambio el die por logsys y así continuará. Voy a echarle un vistazo. (así tendría que funcionarte bien)

También he añadido una opción al menú para mostrar los logs. En el listado ya lo he modificado, y el archivo también está sustituido
Voy a hacer que haga las comprobaciones iniciales. A ver si me sale bien. Y que muestre en panatallla que cosas no son localizadas para corregir la ruta.
« Last Edit: April 15, 2006, 11:31:48 AM by AnimAlf »
Logged
Pages: [1] 2