Changeset 82

Show
Ignore:
Timestamp:
06/13/08 21:30:32 (5 months ago)
Author:
root
Message:

Fix wildcard server send commands and add support for native atxfer

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/op_server.pl

    r77 r82  
    23682368                $canalaqui = 1; 
    23692369            } 
    2370             if ( $key =~ /^Server/i && $val eq $server ) { 
     2370            if ( $key =~ /^Server/i && ( $val eq $server || $server eq "-1" ) ) { 
    23712371                $serveraqui = 1; 
    23722372                log_debug( "$heading server coincide $server = $val\n", 16 ) if DEBUG; 
     
    75697569                        $comando .= "Priority: 1\r\n\r\n"; 
    75707570                    } 
    7571                     send_command_to_manager( $comando, $p[ $button_server{$datosflash} ], 
    7572                         0, $astmanproxy_servers[ $button_server{$datosflash} ] ); 
     7571                    if ( $button_server{$datosflash} == -1 ) { 
     7572                        send_command_to_managers($comando); 
     7573                    } 
     7574                    else { 
     7575                        send_command_to_manager( $comando, $p[ $button_server{$datosflash} ], 
     7576                            0, $astmanproxy_servers[ $button_server{$datosflash} ] ); 
     7577                    } 
    75737578 
    75747579                    $tab = substr( $tab, 0, -1 ) if DEBUG; 
     
    76167621                        $comando .= "Priority: 1\r\n\r\n"; 
    76177622                    } 
    7618                     send_command_to_manager( $comando, $p[ $button_server{$datosflash} ], 
    7619                         0, $astmanproxy_servers[ $button_server{$datosflash} ] ); 
     7623                    if ( $button_server{$datosflash} == -1 ) { 
     7624                        send_command_to_managers($comando); 
     7625                    } 
     7626                    else { 
     7627                        send_command_to_manager( $comando, $p[ $button_server{$datosflash} ], 
     7628                            0, $astmanproxy_servers[ $button_server{$datosflash} ] ); 
     7629                    } 
    76207630 
    76217631                    $tab = substr( $tab, 0, -1 ) if DEBUG; 
     
    76627672                $comando .= "\r\n"; 
    76637673 
    7664                 send_command_to_manager( $comando, $p[ $button_server{$datosflash} ], 
    7665                     0, $astmanproxy_servers[ $button_server{$datosflash} ] ); 
     7674                if ( $button_server{$datosflash} == -1 ) { 
     7675                    send_command_to_managers($comando); 
     7676                } 
     7677                else { 
     7678                    send_command_to_manager( $comando, $p[ $button_server{$datosflash} ], 
     7679                        0, $astmanproxy_servers[ $button_server{$datosflash} ] ); 
     7680                } 
    76667681                $tab = substr( $tab, 0, -1 ) if DEBUG; 
    76677682                return; 
     
    77117726                    $comando .= "ActionID: monitor-$monaction-$ses\r\n"; 
    77127727                    $comando .= $extracomand . "\r\n"; 
    7713                     send_command_to_manager( $comando, $p[ $button_server{$datosflash} ], 
    7714                         0, $astmanproxy_servers[ $button_server{$datosflash} ] ); 
     7728                    if ( $button_server{$datosflash} == -1 ) { 
     7729                        send_command_to_managers($comando); 
     7730                    } 
     7731                    else { 
     7732                        send_command_to_manager( $comando, $p[ $button_server{$datosflash} ], 
     7733                            0, $astmanproxy_servers[ $button_server{$datosflash} ] ); 
     7734                    } 
    77157735                } 
    77167736            } 
     
    77247744                    $comando .= "Channel: $_\r\n\r\n"; 
    77257745                    log_debug( "-- Command received: $accion chan $_", 32 ) if DEBUG; 
    7726                     send_command_to_manager( $comando, $p[ $button_server{$datosflash} ], 
    7727                         0, $astmanproxy_servers[ $button_server{$datosflash} ] ); 
    7728  
    7729                     # $comando = "Action: Command\r\n"; 
    7730                     # $comando .= "Command: soft hangup $_\r\n\r\n"; 
    7731                     # send_command_to_manager($comando, $p[$button_server{$datosflash}]); 
     7746 
     7747                    if ( $button_server{$datosflash} == -1 ) { 
     7748                        send_command_to_managers($comando); 
     7749                    } 
     7750                    else { 
     7751                        send_command_to_manager( $comando, $p[ $button_server{$datosflash} ], 
     7752                            0, $astmanproxy_servers[ $button_server{$datosflash} ] ); 
     7753                    } 
    77327754                } 
    77337755            } 
     
    77427764                $comando .= "ActionID: meetmemute$boton_con_contexto\r\n"; 
    77437765                $comando .= "Command: meetme mute $conference $meetmemember\r\n\r\n"; 
    7744                 send_command_to_manager( $comando, $p[ $button_server{$boton_con_contexto} ], 
    7745                     0, $astmanproxy_servers[ $button_server{$boton_con_contexto} ] ); 
     7766 
     7767                if ( $button_server{$boton_con_contexto} == -1 ) { 
     7768                    send_command_to_managers($comando); 
     7769                } 
     7770                else { 
     7771                    send_command_to_manager( $comando, $p[ $button_server{$boton_con_contexto} ], 
     7772                        0, $astmanproxy_servers[ $button_server{$boton_con_contexto} ] ); 
     7773                } 
    77467774            } 
    77477775            elsif ( $accion =~ /^meetmeunmute/ ) { 
     
    77557783                $comando .= "ActionID: meetmeunmute$boton_con_contexto\r\n"; 
    77567784                $comando .= "Command: meetme unmute $conference $meetmemember\r\n\r\n"; 
    7757                 send_command_to_manager( $comando, $p[ $button_server{$boton_con_contexto} ], 
    7758                     0, $astmanproxy_servers[ $button_server{$boton_con_contexto} ] ); 
    7759             } 
    7760  
     7785 
     7786                if ( $button_server{$boton_con_contexto} == -1 ) { 
     7787                    send_command_to_managers($comando); 
     7788                } 
     7789                else { 
     7790                    send_command_to_manager( $comando, $p[ $button_server{$boton_con_contexto} ], 
     7791                        0, $astmanproxy_servers[ $button_server{$boton_con_contexto} ] ); 
     7792                } 
     7793            } 
     7794 
     7795            elsif ( $accion =~ /^atxfer/ ) { 
     7796                log_debug( "$heading ATXFER extension_transfer($origin_channel)", 1 ) if DEBUG; 
     7797                my $nro_boton_destino = $accion; 
     7798                $nro_boton_destino =~ s/^atxfer//g; 
     7799                my $contextoaagregar = ""; 
     7800                if ( $panelcontext ne "GENERAL" ) { 
     7801                    $contextoaagregar = "&$panelcontext"; 
     7802                } 
     7803                my $indice    = $origin_server . "^" . $origin_channel . $contextoaagregar; 
     7804                my $originate = $extension_transfer{$indice}; 
     7805                $originate =~ s/-?\d+\^(.*)/$1/; 
     7806                foreach ( keys(%buttons) ) { 
     7807                    log_debug( "$heading comparing $buttons{$_} with btn_destino $btn_destino", 1 ) if DEBUG; 
     7808                    if ( $buttons{$_} eq $btn_destino ) { 
     7809                        if ( $canal =~ /^_/ ) { 
     7810                            my @canalarray = @{ $sesbot{$btn_destino} }; 
     7811                            my $canalses   = $canalarray[0]; 
     7812                            my ( $newcanal, $newses ) = separate_session_from_channel($canalses); 
     7813                            $canal = $newcanal; 
     7814                        } 
     7815                        $canal =~ s/(.*)=(.*)/$1/g; 
     7816                        log_debug( "$heading match for $btn_destino the channel is $canal", 1 ) 
     7817                          if DEBUG; 
     7818                        my @links            = extraer_todos_los_enlaces_de_un_canal( $canal, $button_server{$datosflash} ); 
     7819                        my @canal_transferir = @{ $sesbot{$btn_destino} }; 
     7820 
     7821                        my $cuantos = @links; 
     7822                        if ( $cuantos <= 0 ) { 
     7823                                                 
     7824                            $canal_destino = retrieve_extension($origin_server . "^" . $origin_channel); 
     7825                            if ( $canal_destino ne "-1" ) { 
     7826                                if ( $canal_destino =~ /\@/ ) { 
     7827                                    ( $canal_destino, $contexto ) = split( /\@/, $canal_destino ); 
     7828                                } 
     7829                            } 
     7830                            $comando = "Action: Originate\r\n"; 
     7831                            $comando .= "Channel: $destino\r\n"; 
     7832                            $comando .= "Exten: $canal_destino\r\n"; 
     7833                            $comando .= "Context: $contexto\r\n"; 
     7834                            $comando .= "Priority: 1\r\n\r\n"; 
     7835                        } 
     7836                        else { 
     7837 
     7838                            log_debug( "** $canal_transferir[0] $links[0] will be transferred to $origin_channel ($originate)", 1 ) 
     7839                              if DEBUG; 
     7840 
     7841                            my ( $vmext, $vmctx ) = split( /@/, $originate ); 
     7842                            $comando = "Action: Atxfer\r\n"; 
     7843                            $comando .= "Channel: " . $canal_transferir[0] . "\r\n"; 
     7844                            $comando .= "Exten: $vmext\r\n"; 
     7845                            $comando .= "Context: $vmctx\r\n"; 
     7846                            $comando .= "ActionID: atxfer\r\n"; 
     7847                        } 
     7848                        if ( $button_server{$nro_boton_destino} == -1 ) { 
     7849                            send_command_to_managers($comando); 
     7850                        } 
     7851                        else { 
     7852                            send_command_to_manager( $comando, $p[ $button_server{$nro_boton_destino} ], 
     7853                                0, $astmanproxy_servers[ $button_server{$nro_boton_destino} ] ); 
     7854                        } 
     7855                        last; 
     7856                    } 
     7857                } 
     7858            } 
    77617859            elsif ( $accion =~ /^conference/ ) { 
    77627860                log_debug( "$heading CONFERENCE extension_transfer($origin_channel)", 1 ) if DEBUG; 
     
    77647862                my $indice    = $origin_server . "^" . $origin_channel; 
    77657863                my $originate = $extension_transfer{$indice}; 
    7766                 $originate =~ s/\d+\^(.*)/$1/; 
     7864                $originate =~ s/-?\d+\^(.*)/$1/; 
    77677865                foreach ( keys(%buttons) ) { 
    77687866                    log_debug( "$heading comparo $buttons{$_} con btn_destino $btn_destino", 1 ) if DEBUG; 
     
    78287926                            } 
    78297927                        } 
    7830                         send_command_to_manager( $comando, $p[ $button_server{$datosflash} ], 
    7831                             0, $astmanproxy_servers[ $button_server{$datosflash} ] ); 
     7928                        if ( $button_server{$datosflash} == -1 ) { 
     7929                            send_command_to_managers($comando); 
     7930                        } 
     7931                        else { 
     7932                            send_command_to_manager( $comando, $p[ $button_server{$datosflash} ], 
     7933                                0, $astmanproxy_servers[ $button_server{$datosflash} ] ); 
     7934                        } 
    78327935                        last; 
    78337936                    } 
     
    78417944                    $comando .= "Command: database put clid $destino "; 
    78427945                    $comando .= "\"$clid\"\r\n\r\n"; 
    7843                     send_command_to_manager( $comando, $p[ $button_server{$datosflash} ], 
    7844                         0, $astmanproxy_servers[ $button_server{$datosflash} ] ); 
     7946                    if ( $button_server{$datosflash} == -1 ) { 
     7947                        send_command_to_managers($comando); 
     7948                    } 
     7949                    else { 
     7950                        send_command_to_manager( $comando, $p[ $button_server{$datosflash} ], 
     7951                            0, $astmanproxy_servers[ $button_server{$datosflash} ] ); 
     7952                    } 
    78457953                } 
    78467954 
     
    78777985                        $comando .= "Channel2: $links[0]\r\n"; 
    78787986                        $comando .= "Timeout: $parktimeout\r\n\r\n"; 
    7879                         send_command_to_manager( $comando, $p[ $button_server{$datosflash} ], 
    7880                             0, $astmanproxy_servers[ $button_server{$datosflash} ] ); 
     7987                        if ( $button_server{$datosflash} == -1 ) { 
     7988                            send_command_to_managers($comando); 
     7989                        } 
     7990                        else { 
     7991                            send_command_to_manager( $comando, $p[ $button_server{$datosflash} ], 
     7992                                0, $astmanproxy_servers[ $button_server{$datosflash} ] ); 
     7993                        } 
    78817994                    } 
    78827995                    else { 
     
    78918004                            } 
    78928005                            $comando .= "Priority: 1\r\n\r\n"; 
    7893                             send_command_to_manager( $comando, $p[ $button_server{$datosflash} ], 
    7894                                 0, $astmanproxy_servers[ $button_server{$datosflash} ] ); 
     8006                            if ( $button_server{$datosflash} == -1 ) { 
     8007                                send_command_to_managers($comando); 
     8008                            } 
     8009                            else { 
     8010                                send_command_to_manager( $comando, $p[ $button_server{$datosflash} ], 
     8011                                    0, $astmanproxy_servers[ $button_server{$datosflash} ] ); 
     8012                            } 
    78958013 
    78968014                            if ( $calltimeout > 0 ) { 
     
    79008018                                $comando .= "ActionID: timeout|$valor|$calltimeout\r\n"; 
    79018019                                $comando .= "\r\n"; 
    7902                                 send_command_to_manager( $comando, $p[ $button_server{$datosflash} ], 
    7903                                     , 0, $astmanproxy_servers[ $button_server{$datosflash} ] ); 
     8020                                if ( $button_server{$datosflash} == -1 ) { 
     8021                                    send_command_to_managers($comando); 
     8022                                } 
     8023                                else { 
     8024                                    send_command_to_manager( $comando, $p[ $button_server{$datosflash} ], 
     8025                                        , 0, $astmanproxy_servers[ $button_server{$datosflash} ] ); 
     8026                                } 
    79048027                            } 
    79058028 
     
    79238046                    $comando .= "Command: database put clid $destino "; 
    79248047                    $comando .= "\"$clid\"\r\n\r\n"; 
    7925                     send_command_to_manager( $comando, $p[ $button_server{$datosflash} ], 
    7926                         0, $astmanproxy_servers[ $button_server{$datosflash} ] ); 
     8048                    if ( $button_server{$datosflash} == -1 ) { 
     8049                        send_command_to_managers($comando); 
     8050                    } 
     8051                    else { 
     8052                        send_command_to_manager( $comando, $p[ $button_server{$datosflash} ], 
     8053                            0, $astmanproxy_servers[ $button_server{$datosflash} ] ); 
     8054                    } 
    79278055                } 
    79288056 
     
    80048132                    $comando .= "\r\n"; 
    80058133                } 
    8006                 send_command_to_manager( $comando, $p[ $button_server{$datosflash} ], 
    8007                     0, $astmanproxy_servers[ $button_server{$datosflash} ] ); 
     8134                if ( $button_server{$datosflash} == -1 ) { 
     8135                    send_command_to_managers($comando); 
     8136                } 
     8137                else { 
     8138                    send_command_to_manager( $comando, $p[ $button_server{$datosflash} ], 
     8139                        0, $astmanproxy_servers[ $button_server{$datosflash} ] ); 
     8140                } 
    80088141            } 
    80098142            elsif ( $accion =~ /^dial/ ) { 
     
    80258158                $comando .= "Priority: 1\r\n"; 
    80268159                $comando .= "\r\n"; 
    8027                 send_command_to_manager( $comando, $servidor_dial, 0, $astmanproxy_servers[ $button_server{$datosflash} ] ); 
     8160                if ( $button_server{$datosflash} == -1 ) { 
     8161                    send_command_to_managers($comando); 
     8162                } 
     8163                else { 
     8164                    send_command_to_manager( $comando, $servidor_dial, 0, $astmanproxy_servers[ $button_server{$datosflash} ] ); 
     8165                } 
    80288166            } 
    80298167        } 
     
    91479285} 
    91489286 
     9287sub send_command_to_managers { 
     9288    my $comando = shift; 
     9289    foreach (@p) { 
     9290        send_command_to_manager( $comando, $_ ); 
     9291    } 
     9292} 
     9293 
    91499294sub send_command_to_manager { 
    91509295    my $comando            = shift; 
     
    91549299    my @todos_sockets      = (); 
    91559300 
    9156     if ( !defined($socket) && $astmanproxy_server eq "" ) { 
    9157         log_debug( "No socket defined nor astmanproxy", 32 ) if DEBUG; 
    9158         return; 
    9159    
     9301    #    if ( !defined($socket) && $astmanproxy_server eq "" ) { 
     9302    #        log_debug( "No socket defined nor astmanproxy", 32 ) if DEBUG; 
     9303    #        return; 
     9304    #   
    91609305 
    91619306    if ( !defined($noneedtoauth) ) { 
     
    95709715 
    95719716    if ( !$keys_socket{$socket} ) { 
    9572         print "nocrypt = 1\n"; 
    95739717        $nocrypt = 1; 
    95749718    }