Camd3: IPC und Editor einbinden

feissmaik
Entwickler Team
Beiträge: 2576
Registriert: So 17. Apr 2011, 11:39
Been thanked: 1 time
Kontaktdaten:

Re: Camd3: IPC und Editor einbinden

Beitrag von feissmaik »

CDPORT ist der wo sich die Clients hin verbinden können also der CardSharing Port
CDWEB hingegen ist der Port vom WEBIF

Hier der (glaub ich) korrekte Abschnitt für die global.php:

Code: Alles auswählen

$zeile=$zeile2='';
// Auslesen der camd3.config
if (file_exists("$CDCFG")) {
	$server = "UDP_PORT"; 
	$info = "HTTP_PORT"; 
	$file = file("$CDCFG"); 
	for($i=0; $i<count($file); $i++) {
		preg_match("/$server/", trim($file[$i]), $find);
		if (isset($find[0])) {
			$zeile = "$file[$i]";
			$CDPORT = trim(substr(strrchr($zeile, "="), 1));
			if (isset($zeile[0]) AND $zeile[0]=='#') { $CDPORT = "20248"; }
		}
		preg_match("/$info/", trim($file[$i]), $find);
		if (isset($find[0])) {
			$zeile2 = "$file[$i]"; 
			$CDWEB = trim(substr(strrchr($zeile2, "="), 1));
			if (isset($zeile[0]) AND $zeile[0]=='#') { $CDWEB = "9080"; }
		}
	}
}
if(empty($CDPORT))
$CDPORT = "20248";
if(empty($CDWEB))
$CDWEB = "9080";
/EDIT: mmh ich hatte $CDSPORT anstatt $CDPORT - habs oben mal angepasst.... und evtl. Anleitung nochmal überarbeiten
Du musst nicht kämpfen um zu siegen
Benutzeravatar
jensebub
IPC Meister
Beiträge: 1133
Registriert: So 1. Mai 2011, 09:34
Been thanked: 1 time
Kontaktdaten:

Re: Camd3: IPC und Editor einbinden

Beitrag von jensebub »

Nabend,
einen kleinen Fehler in dem Abschnitt "// Auslesen der camd3.config" habe ich noch gefunden,
und die Lösung auch ;) vielleicht weiter oben editieren,...

Code: Alles auswählen

 $CDWEB = trim(substr(strrchr($zeile2, "="), 1));
Gruß
jensebub
feissmaik
Entwickler Team
Beiträge: 2576
Registriert: So 17. Apr 2011, 11:39
Been thanked: 1 time
Kontaktdaten:

Re: Camd3: IPC und Editor einbinden

Beitrag von feissmaik »

*ups* :oops: klein aber fein der Bug - Danke für den Hinweis ;)
Du musst nicht kämpfen um zu siegen
Benutzeravatar
jensebub
IPC Meister
Beiträge: 1133
Registriert: So 1. Mai 2011, 09:34
Been thanked: 1 time
Kontaktdaten:

Re: Camd3: IPC und Editor einbinden

Beitrag von jensebub »

feissmaik hat geschrieben:*ups* :oops: klein aber fein der Bug - Danke für den Hinweis ;)
Ach Quatsch, ich habe zu danken, durch solche Bugs habe ich einiges über mein IPC gelernt ;)
(learning by doing) und immerhin läuft es echt gut.

Gruß
jensebub
ghost1
IPC Neuling
Beiträge: 7
Registriert: Mi 28. Sep 2011, 20:24
Kontaktdaten:

Re: Camd3: IPC und Editor einbinden

Beitrag von ghost1 »

Ich habe mich gestern auch daran versucht, Camd3 zu intergrieren.
Dank der Anleitung bin ich auch schon fast zum Ergebnis gekommen, aber irgendwo hab ich noch nen Bock drin ...

Vielleicht kann mir jemand sagen, wo ich suchen muss, da ich es nicht sehe/finde ...

Betrifft diese beiden Scripte:

home:

Es fehlen die Camd3-Buttons und die Kontrollanzeige wird unter den andern Cams dargestellt; ich vermute, dass es in eine Zeile gehört ...

Bild

und editor:
Bei dem Fehler im Editor vermute ich, dass die Camd3-Einträge unter den anderen einsortiert werden sollen:

Bild
Benutzeravatar
jensebub
IPC Meister
Beiträge: 1133
Registriert: So 1. Mai 2011, 09:34
Been thanked: 1 time
Kontaktdaten:

Re: Camd3: IPC und Editor einbinden

Beitrag von jensebub »

nabend,

zu deinem Sortierungsproblem:
Du hast in der vorangegangenen Zeile ein <br> zuviel, dadurch der Zeilensprung.

und die Button bekommst du so:

nano /var/www/ipc/page/control.php
Suchen nach:

Code: Alles auswählen

$NewCSscript = '/bin/n';
Danach dieses einfügen:

Code: Alles auswählen

$Camd3script = '/bin/camd3';

Gruß
jensebub
ghost1
IPC Neuling
Beiträge: 7
Registriert: Mi 28. Sep 2011, 20:24
Kontaktdaten:

Re: Camd3: IPC und Editor einbinden

Beitrag von ghost1 »

Den Button habe ich gekriegt, in dem ich den Symlink hinterlegt hatte - habe ich glatt vergessen gehabt ...

Bei dem Rest bin ich noch auf der Suche ...
Benutzeravatar
jensebub
IPC Meister
Beiträge: 1133
Registriert: So 1. Mai 2011, 09:34
Been thanked: 1 time
Kontaktdaten:

Re: Camd3: IPC und Editor einbinden

Beitrag von jensebub »

Hallo,
ich denke Dein Problem besteht immernoch,...?!

hier mal der Abschnitt //Processtabelle in der home.php:

Code: Alles auswählen

// Processtabelle
echo "<table>";
if ($RUNCRON <> "")
	{echo "<tr><td> <td class=tabgreen>Cron</td>";}
	else
	{echo "<tr><td> <td class=tabred>Cron</td>";}
if ($RUNCC <> "")
	{echo "<td> - <td class=tabgreen>CCcam</td>";}
	else
	{echo "<td> - <td class=tabred>CCcam</td>";}
if ($RUNOS <> "")
	{echo "<td> - <td class=tabgreen>OScam</td>";}
	else
	{echo "<td> - <td class=tabred>OScam</td>";}
if ($RUNNC <> "")
	{echo "<td> - <td class=tabgreen>NewCS</td>";}
	else
	{echo "<td> - <td class=tabred>NewCS</td>";}
if ($RUNCD <> "")
	{echo "<td> - <td class=tabgreen>Camd3</td></tr>";}
	else
	{echo "<td> - <td class=tabred>Camd3</td></tr>";}
echo "</table>";
?>

Prozesse.JPG
Prozesse.JPG (10.07 KiB) 2600 mal betrachtet
und für dein Problem in der editor.php könntest Du ja mal den Abschnitt posten.

Gruß
jensebub
gollumA
IPC Freak
Beiträge: 152
Registriert: Di 26. Apr 2011, 18:10
Kontaktdaten:

Re: Camd3: IPC und Editor einbinden

Beitrag von gollumA »

Hallo zusammen :)

Habe irgendwo einen Gedanklichen Fehler :roll: :roll:
Bild

Unter Informationen steht der Camd3 Port
Unter Prozesse ist leider nichts zusehen

Was habe ich vergessen ? Hoffe Ihr könnt mir weiterhelfen

:D :D
feissmaik
Entwickler Team
Beiträge: 2576
Registriert: So 17. Apr 2011, 11:39
Been thanked: 1 time
Kontaktdaten:

Re: Camd3: IPC und Editor einbinden

Beitrag von feissmaik »

@gollumA: das was jensebub ein post vor dir hier gepostet hat...


/EDIT:

Eigentlich ist das hier nicht sooo schwer ... man muss sich nur vor Augen führen was hierfür benötigt wird
..der grösste Aufwand entsteht wenn man auch die control.php für camd3 nutzen möchte

- camd3 Binary in /var/emu/camd3/
- camd3 Scripts in /var/emu/script/
- camd3 Einträge in /var/emu/script/functions.sh
Spoiler
Show

Code: Alles auswählen

CDNAME="Camd3"
CDVERSION="camd3.x86"
CDBIN=$CAMBINS/camd3/$CDVERSION
CDCFG="$CAMCONFIGS/camd3.config"
CDSERVERS="$CAMCONFIGS/camd3.servers"
CDUSERS="$CAMCONFIGS/camd3.users"
CDLOG="/var/log/camd3.log"
Nun wäre noch die Frage ob ihr einen "globalen" Befehl für das camd3-Script haben wollt; so wie es zb auch für "/var/emu/script/ipc" usw der Fall ist (ipc->i,cccam->c, oscam->o,newcs->n ...)
Dazu legt man sich einen sog. Symlink (Verknüpfung) im Systemverzeichniss /bin/ an, der auf das jeweilige Script zeigt; indem man folgenden Befehl ausführt: ln -s <ziel> <linkname>
also zb -> ln -s /var/emu/script/camd3 /bin/camd3


Für das IPC WebIf:

- /var/www/ipc/page/global.php
Spoiler
Show
ca. Zeile 29

Code: Alles auswählen

$zeile=$zeile2='';
// Auslesen der camd3.config
if (file_exists("$CDCFG")) {
	$server = "UDP_PORT"; 
	$info = "HTTP_PORT"; 
	$file = file("$CDCFG"); 
	for($i=0; $i<count($file); $i++) {
		preg_match("/$server/", trim($file[$i]), $find);
		if (isset($find[0])) {
			$zeile = "$file[$i]";
			$CDSPORT = trim(substr(strrchr($zeile, "="), 1));
			if (isset($zeile[0]) AND $zeile[0]=='#') { $CDSPORT = "20248"; }
		}
		preg_match("/$info/", trim($file[$i]), $find);
		if (isset($find[0])) {
			$zeile2 = "$file[$i]"; 
			$CDWEB = trim(substr(strrchr($zeile2, "="), 1));
			if (isset($zeile[0]) AND $zeile[0]=='#') { $CDWEB = "9080"; }
		}
	}
}
if(empty($CDSPORT))
$CDSPORT = "20248";
if(empty($CDWEB))
$CDWEB = "9080";
- /var/www/ipc/page/home.php
Spoiler
Show
ca. Zeile 33

Code: Alles auswählen

$RUNCD=exec("ps auxw | grep -v grep | grep $CDVERSION | awk {'print $2'}");
ca. Zeile 49

Code: Alles auswählen

echo "<tr><td class=tab>Camd3 Port</td> <td class=tab> &nbsp;&nbsp;:&nbsp;&nbsp; </td> <td class=tab>$CDSPORT</td></tr>";
echo "<tr><td class=tab>Camd3 Web</td> <td class=tab> &nbsp;&nbsp;:&nbsp;&nbsp; </td> <td class=tab>$CDWEB</td></tr>";
ca. Zeile 65

Code: Alles auswählen

if ($RUNCD <> "")
	{echo "<td> - <td class=tabgreen>Camd3</td>";}
	else
	{echo "<td> - <td class=tabred>Camd3</td>";}
- /var/www/ipc/page/logs.php
Spoiler
Show
ca. Zeile 10

Code: Alles auswählen

$Camd3Log = "".$LogDir."/camd3.log";
ca. Zeile 53

Code: Alles auswählen

	if ($_POST['Logs'] === "Camd3.log") {
		$LogFile=$Camd3Log;
ca. Zeile 125

Code: Alles auswählen

$Camd3Button='<td><span><input type="submit" name="Logs" value="Camd3.log"/></span></td>';
ca. Zeile 169

Code: Alles auswählen

if (file_exists("$Camd3Log")) { $SHOWbuttons.="$Camd3Button"; }
- /var/www/ipc/page/editor.php
Spoiler
Show
ca. Zeile 16

Code: Alles auswählen

$eFILE['camd3.config']		="/var/etc/camd3.config";
$eFILE['camd3.servers']		="/var/etc/camd3.servers";
$eFILE['camd3.users']	="/var/etc/camd3.users";
ca. Zeile 117

Code: Alles auswählen

// Camd3
$Camd3html.="<hr>".$SPACER2."<font face='Georgia' size='2'color=FF0000><b>Camd3:</b></font><br>";
$F="Camd3.config"; _FS("$F"); $Camd3html.="<hr>".$FSPACER."<a class='editor' href='".$_SELF."?".$F."'>".$F."</a><br><hr>";
$F="Camd3.servers"; _FS("$F"); $Camd3html.="".$FSPACER."<a class='editor' href='".$_SELF."?".$F."'>".$F."</a><br><hr>";
$F="Camd3.users"; _FS("$F"); $Camd3html.="".$FSPACER."<a class='editor' href='".$_SELF."?".$F."'>".$F."</a><br><hr>";
ca. Zeile 137

Code: Alles auswählen

$html.="$Camd3html\n";
- /var/www/ipc/page/control.php
Spoiler
Show
ca. Zeile 7

Code: Alles auswählen

$Camd3script = '/var/emu/script/camd3';
ca. Zeile 62

Code: Alles auswählen

	if ($_POST['CamControl'] === "Start Camd3") {
		exec(''.$PREcmd.''.$Camd3script.' start'.$SUFcmd.'',$output,$return_var);
	} elseif ($_POST['CamControl'] === "Stop Camd3") {
		exec(''.$PREcmd.''.$Camd3script.' stop'.$SUFcmd.'',$output,$return_var);
	} elseif ($_POST['CamControl'] === "Restart Camd3") {
		exec(''.$PREcmd.''.$Camd3script.' restart'.$SUFcmd.'',$output,$return_var);
ca. Zeile 122

Code: Alles auswählen

$RestartCamsCamd3="<input type=\"checkbox\" name=\"CR[]\" value=\"Camd3\" checked>Camd3</input>\n";
ca. Zeile 125

Code: Alles auswählen

$SHOWbuttons.="$RestartCamsCamd3";
ca. Zeile 128

Code: Alles auswählen

$Camd3Buttons ='<input type="submit" value="Start Camd3" name="CamControl"/>';
$Camd3Buttons.='<input type="submit" value="Stop Camd3" name="CamControl"/>';
$Camd3Buttons.='<input type="submit" value="Restart Camd3" name="CamControl"/><br><p>';
ca. Zeile 134

Code: Alles auswählen

if (file_exists("$Camd3script")) { $SHOWbuttons.="$Camd3Buttons\n"; }
ca. Zeile 146

Code: Alles auswählen

	$RUNCD=exec("ps auxw | grep -v grep | grep $CDVERSION | awk {'print $2'}");
ca. Zeile 152

Code: Alles auswählen

	if ($RUNCD <> "")
		{$ProzessStatus.="<td> - <td class=tabgreen>Camd3</td>";}
	else
		{$ProzessStatus.="<td> - <td class=tabred>Camd3</td>";}
Damit das auch funktioniert muss man noch dem WebServer-Benutzer www-data erlauben den jeweiligen Camd3 Befehl über sudo auszuführen, damit der Befehl dann auch als root ausgeführt wird
Um das zu erreichen müssen wir die entsprechende Zeile über den Befehl visudo anpassen - Dieser Befehl öffnet standardmässig eine Datei (/etc/sudoers), allerdings über vi - wenn man stattdessen nano nutzen möchte, führ man einmal vorher folgenden Befehl aus: EDITOR=nano
Aber unbedingt wirklich den Befehl visudo benutzen da der Befehl noch mehr macht als nur die Datei mit einem Editor zu öffnen!

Also wie gesagt, den Befehl visudo ausführen und dann dort nach einer entsprechenden Zeile suchen die ungefähr so aussehen sollte:

Code: Alles auswählen

www-data ALL=NOPASSWD:/bin/c,/bin/o,/bin/n,/bin/i,/etc/init.d/cron,/usr/bin/last,/tmp/reboot
in diese Zeile fügt ihr dann den /pfad/zum/camd3/script ein, also passend für obige Zeilen laut control.php:

Code: Alles auswählen

/var/emu/script/camd3
...fals ihr oben einen Symlink angelegt habt könnt ihr aber natürlich auch /bin/camd3 nehmen...

Die komplette Zeile sollte dann ungefähr so aussehen:

Code: Alles auswählen

www-data ALL=NOPASSWD:/bin/c,/bin/o,/bin/n,/bin/i,/etc/init.d/cron,/usr/bin/last,/tmp/reboot,/var/emu/script/camd3
Zu guter letzt muss jetzt noch das Script für den Befehl i cr angepasst werden (Cam Restart)
-> /var/emu/script/ipc-camrestart.sh

Code: Alles auswählen

#!/bin/bash
#

CCcam=0
OScam=0
NewCS=0
Camd3=0
Cams=""
srcv="0.1"

for emu in "$@"; do
	case $emu in
		[cC][cC][cC][aA][mM])
			CCcam=1 ; Cams="$Cams CCcam"
		;;
		[oO][sS][cC][aA][mM])
			OScam=1 ; Cams="$Cams OScam"
		;;
		[nN][eE][wW][cC][sS])
			NewCS=1 ; Cams="$Cams NewCS"
		;;
		[cC][aA][mM][dD]3)
			Camd3=1 ; Cams="$Cams Camd3"
		;;
		[aA][lL][lL])
			CCcam=1 ; OScam=1 ; NewCS=1 ; Camd3=1 ; Cams="CCcam OScam NewCS Camd3"
		;;
	esac
done
Cams=$(echo $Cams | sort)
cd /var/emu/script
if [ "$CCcam" = "1" ]; then
	./cccam stop
	echo ""; sleep 3
fi
if [ "$OScam" = "1" ]; then
	./oscam restart
	echo ""; sleep 2
fi
if [ "$NewCS" = "1" ]; then
	./newcs restart
	echo ""; sleep 2
fi
if [ "$Camd3" = "1" ]; then
	./camd3 restart
	echo ""; sleep 2
fi
if [ "$CCcam" = "1" ]; then
	./cccam start
	echo ""; sleep 1
fi
if [ ! -z "$Cams" ]; then
	echo "Restart der Cams '$Cams' wurde durchgefuehrt"
	echo ""
else
	echo "Usage: $0 [CCcam OScam NewCS Camd3|all]"
	echo "E.g.: $0 CCcam OScam NewCS"
	echo "E.g.: $0 OScam Camd3"
	echo "E.g.: $0 all"
fi
exit 0

... ;)
Du musst nicht kämpfen um zu siegen
Gesperrt

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste