Ankündigung

Einklappen
Keine Ankündigung bisher.

KNX - HomeServer - Asterisk

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #16
    OK, mal dann für ganz dumme.

    1.) wie bau ich eibd ein
    2.) wo definiere ich daß ich mit einem Anruf auf dem "virtuellen" Apparat *200 dann irgendwas schalte und danach Hangup?

    Der String selber müsste dann ja ( noch mit Netcat ) lauten:

    exten => *200,1,n,system(echo1 | NC 192.168.XXX.XXX PORT)
    exten => *200,n,Hangup

    so richtig?
    Wo bau ich denn den rein? In der Extensions_custom.conf auf jeden fall gehts mal nicht...
    never fummel a running system...

    Kommentar


      #17
      Hi
      welches Linux hast du da drunter liegen? Debian? red-hat? centos?
      Oder ist das eine Appliance?

      Und: wie hast du deinen Dialplan gebaut - wenn du nicht weißt wo die eine neue Extension einbauen kannst? Ich habe meine extensions.conf selbst aufgebaut - ich vermute deine ist vorkonfiguriert gewesen?

      Gruß
      Thorsten

      Kommentar


        #18
        hmmm, ich habe einen FREEPBX installiert
        vermutlich Debian, woran kann ich das erkennen?
        Den Dialplan macht das WEbinterface, ich kann den aber modifizieren, hierfür gibts eine extensions_custom_conf
        never fummel a running system...

        Kommentar


          #19
          ps, die extension habe ich jetzt hinbekommen, das lag am context-menü, das war falsch. es geht also um eibd..
          never fummel a running system...

          Kommentar


            #20
            hi
            okay - freepbx sieht mir nach centos aus (schade - debian wäre ich fitter...).
            Kannst du dich per putty (ssh) auf die komandozeile der Kiste verbinden?
            Root-Passwort ist bekannt?

            Ach ja: wie kommst du eigentlich auf den Bus? IP-Schnittstelle? Wiregate? Die Frage ist (glaube ich) noch offen...

            Gruß
            Thorsten

            Kommentar


              #21
              ja, putty kein Problem
              Passworte natürlcih bekannt!

              Bus -> IP Schnittstelle vom EIB-markt, funzt primat
              never fummel a running system...

              Kommentar


                #22
                Freepbx ist AFAIR CentOS (also irgendwas wie Redhat, keine Ahnung davon, wenn ich yum nur lese, lege ich Reflexartig die Debian-CD ins laufwerk )

                Die gute Nachricht: das ist im grossen und ganzen dieselbe Suppe, das kopieren der Binaries (groupwrite, libeibclient*.so) aus dem Debian-packerl reicht in schmutzig normalerweise wenn der eibd woanders läuft (was wir immernoch nicht wissen?)
                Eine Installaionsanleitung für eibd unter CentOS - da bin ich echt der falsche für.. Sonst gerne für alle Debian-Geschmacksrichtungen, Dreamboxen/OE und OpenWRT

                @Thorsten: gut, das war mal wieder leicht sarkastisch Ein WG-Plugin ruft dasselbe auf wie vorher der HS, wenn das Plugin 5s pennt, weiss ich wenigstens genau warum - und wer es wo verbockt hat

                Der Hangup bei mir läuft ganz konkret so (hatte ich schonmal irgendwo geschrieben glaub ich):
                HS/WG/Sonstwer ruft
                http://ASTERISK-IP/ast/hangup.php?sExt=12
                12 ist natürlich durch die eigene Extension zu ersetzen.


                Code:
                ~]# cat /var/www/html/ast/hangup.php
                <?php
                /*$sSign = $_REQUEST['sSign'];
                if($sSign!='{084DC422-2FFB-4a6a-977E-DB9C0A1C8B89}') {
                	header("HTTP/1.0 403 Forbidden");
                	return;
                }*/
                //header('Content-type: text/xml');
                $param = "sExt";
                switch($_SERVER['REQUEST_METHOD']) {
                case'GET':
                    if(isset($_GET[$param]))
                    {
                    $sExt=$_GET[$param];
                    break;
                    }
                case'POST':
                    if(isset($_POST[$param]))
                    {
                    $sExt=$_POST[$param];
                    break;
                    }
                }
                print $sExt;
                if ($sExt!="") {
                    function ReadSocket($socket) {
                    	while (!feof($socket)) {
                    		$wrets .= fread($socket, 8192);
                    	}
                    	return $wrets;
                    }
                    
                    /*function ProcessResp($sResp) {
                    	global $sSign, $Query;
                    	echo('<response sSign="'.$sSign.'" nCode="1"><![CDATA[');
                    	echo($sResp);
                	echo(']]></response>');
                    }*/
                    function ProcessResp($sResp) {
                	global $sSign, $Query;
                	$sRespOrig = $sResp;
                	$sResp = strtolower ($sResp);
                	$MarkError = "\r\nresponse: error\r\n";
                	$nLenMarkError = strlen($MarkError);
                	$ixError = strpos($sResp, $MarkError);
                	$nCode = 0;
                	if($ixError!=false) {
                		$nCode = 3;
                	}
                	echo('<response sSign="'.$sSign.'" nCode="'.$nCode.'"><![CDATA[');
                	if($ixError!=false) {
                		$MarkError = "\r\nmessage: ";
                		$ixTmp = strpos($sResp, $MarkError, $ixError);
                		if($ixTmp!=false) {
                			$ixError = $ixTmp;
                			$nLenMarkError = strlen($MarkError);
                		}
                		$ixTmp = strpos($sResp, "\r\n\r\n", $ixError);
                		if($ixTmp==false) {
                			echo(substr($sRespOrig, $ixError+$nLenMarkError));
                		} else {
                			echo(substr($sRespOrig, $ixError+$nLenMarkError, $ixTmp-$ixError-$nLenMarkError));
                		}
                	}
                	echo(']]></response>');	
                    }
                    $sExt = "SIP/".$sExt;
                    $nTimeout = 30000;
                    $nPriority = 1;
                    $sContext = "from-internal";
                
                    $UserName="admin";
                    $Password = "[B]MEINPASSWORT[/B]";
                    //$Query="Action: Originate\r\nChannel: ".$sExt."\r\nContext: ".$sContext."\r\nExten: ".$sNumber."\r\nPriority: ".$nPriority."\r\nTimeout: ".$nTimeout."\r\n";
                    //$Query="Action: Hangup\r\nChannel: ".$sExt."\r\n";
                    //$Query="Action: Sippeers\r\n";
                    //$Query="ACTION: ExtensionState\r\nContext: ".$sContext."\r\nExten: ".$sExt."\r\nActionID: 1\r\n";
                    $Query="ACTION: COMMAND\r\ncommand: Show Channels\r\n";
                    $Query .= "\r\n";
                    $socket = fsockopen("127.0.0.1","5038", $errno, $errstr, $timeout);
                    fputs($socket, "Action: Login\r\n"); 
                    fputs($socket, "UserName: ".$UserName."\r\n"); 
                    fputs($socket, "Secret: ".$Password."\r\n\r\n");
                    fputs($socket, $Query);
                    fputs($socket, "Action: Logoff\r\n\r\n"); 
                    $sResp = ReadSocket($socket);
                    fclose($socket);
                    $aResp = split(" ", $sResp);
                    for ($i=0;$i<count($aResp);$i++) {
                	$sExtRegex = str_replace("/","\/",$sExt);
                	$sValue = trim($aResp[$i]);
                	$sRegex = '/'.$sExtRegex.'/';
                	if ($sValue!="") {
                	     if (preg_match($sRegex, $sValue)) {
                		$iValue = $i;
                	    }
                	}
                    }
                    $Query="Action: Hangup\r\nChannel: ".trim($aResp[$iValue])."\r\n";
                    $Query .= "\r\n";
                    $socket = fsockopen("127.0.0.1","5038", $errno, $errstr, $timeout);
                    fputs($socket, "Action: Login\r\n"); 
                    fputs($socket, "UserName: ".$UserName."\r\n"); 
                    fputs($socket, "Secret: ".$Password."\r\n\r\n");
                    fputs($socket, $Query);
                    fputs($socket, "Action: Logoff\r\n\r\n"); 
                    $sResp = ReadSocket($socket);
                    fclose($socket);
                    ProcessResp($sResp);
                }
                else {
                    print "
                	<form name=\"hangup\" method=\"POST\">
                            <input type=\"text\" name=\"sExt\" value=\"\">
                            <input type=\"submit\" name=\"submit\" value=\"Hangup\">
                        </form>
                    ";
                }
                
                ?>
                Das ganz oben auskommentierte wäre der zärtliche Versuch von etwas security dabei. Das ist vermutlich auch nur grob zusammenkopiert, ich habs nicht geschrieben, sieht wirr aus.. Aber funktioniert (die Umgebung muss sicherlich auch passen, der lokale Asterisk auf 5038/tcp horchen und so, ob das default ist weiss ich nicht, MEINPASSWORT natürlich geändert werden..)

                Makki
                EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                -> Bitte KEINE PNs!

                Kommentar


                  #23
                  nein, eibd ist nirgens vorhanden, nicht mal ein installationsfile....
                  Wie gesagt, Linux-Null-Plan-man...

                  Peter
                  never fummel a running system...

                  Kommentar


                    #24
                    Hi,

                    hm - kein eibd, kein WG, ne linux appliance auf centos - und linux null Ahnung.
                    Ich gebe zu: die Hürden werden höher :-(
                    Vielleicht doch mit der nc-variante probieren ob man weit genug kommt...?

                    Mein "Plan" war jetzt auch erstmal Richtung "groupswrite"-binary unsauber draufzukopieren und los. Aber den eibd als Daemon- auf eine CentOS-Appliance, ohne das fertige Pakete vorliegen... und ohne Linux-Kentnisse vor Ort.

                    @Makki: mein HS macht diese schlafpausen nicht mehr - hatte sie aber auch mal. Leider kann ich nicht mehr sagen wann & was dieses Problem behoben haben.

                    Gruß
                    Thorsten

                    Kommentar


                      #25
                      Aber der Wille zählt.... Wer nicht wagt, der nicht gewinnt ;-)
                      never fummel a running system...

                      Kommentar

                      Lädt...
                      X