ersteinmal "wow". mit den skripten hast du dir schon eine menge arbeit gemacht. das werden die meisten gar nicht zu schätzen wissen ... mir persönlich ist das ein wenig zu viel "herumgescripte", aber das ist wohl geschmackssache. ich brauche vieles davon nicht. updates z.b. plane ich direkt per opkg zu installieren, ohne einen script wrapper. auch die ganze swap geschichte ist in meinem fall unnötig. insofern fällt da schon einmal vieles weg/usr/bin/oscam ist ein shellscript.
Schau mal in /lib/oscamfunctions.sh da sind die meisten Calls enthalten.
dafür muss ich mich erst mit der monitor schnittstelle an sich vertraut machen.Da kannste auch sehen wie der watchdog mittels ncat an der monitorschnittstelle schnüffelt.
Einen Großteil der Funktionalität solltest's damit in deinem Build auch umsetzen können.
könntest du das vielleicht ein wenig ausführen? pcsc brauche ich in meinem fall nicht (smartreader). eine usbbus überwachung hört sich aber durchaus interessant an. was genau passiert hiert?Was hält fehlt ist die unmittelbare usbbus Überwachung und der pcsc "Hold".
folgende "verbesserungsvorschläge" stelle ich aber einfach nochmal in raum:Es wäre auch mal Schick d n bschl Manöverkritik zu bekommen.
ersteinmal "wow". mit den skripten hast du dir schon eine menge arbeit gemacht. das werden die meisten gar nicht zu schätzen wissen ... mir persönlich ist das ein wenig zu viel "herumgescripte", aber das ist wohl geschmackssache. ich brauche vieles davon nicht. updates z.b. plane ich direkt per opkg zu installieren, ohne einen script wrapper. auch die ganze swap geschichte ist in meinem fall unnötig. insofern fällt da schon einmal vieles weg.
dafür muss ich mich erst mit der monitor schnittstelle an sich vertraut machen.
könntest du das vielleicht ein wenig ausführen? pcsc brauche ich in meinem fall nicht (smartreader). eine usbbus überwachung hört sich aber durchaus interessant an. was genau passiert hiert?
- dein oscam läuft als root. das ist eine sehr schlechte idee und nicht nötig. gerade bei sovielen netzwerkfunktionen, wie sie oscam anbietet, ist nicht auszuschließen, dass da irgendwo sicherheitsbedrohliche bugs drinstecken. dann hätte man im schlimmsten falle den router übernommen. von da an erwartet den besitzer des netzwerk nichts gutes mehr. oscam lässt sich wunderbar auch mit normalen benutzerrechten ausführen. nur mit ports < 1024 und der gruppenzugehörigkeit der reader muss man aufpassen, sieheSie müssen registriert sein, um Links zu sehen..
Das watchdog logfile gibts nicht mehr. Ich habs einfach mal wegfallen lassen und keiner hats gemerkt -> ergo es interessiert keine Sau!- ich würde dir empfehlen ein eigenes verzeichnis für die logfiles anzulegen, z.b. /var/log/oscam. das macht das ganze einfacher durchschaubar.
- die paketzugehörigkeit ist nicht unbedingt "logisch". das "oscam" skript ist teil des "oscam_watchdog" pakets und überhaupt scheint es da recht viele überschneidungen zu geben. vielleicht würde es sinn machen die beiden pakete zu vereinen, oder aber besser zu trennen. in dieser form ist das ein ganz schönes wirr-warr.
- warum ist oscam ohne anticasc support kompiliert?
- dein howto ist in punkt 4.2 fehlerhaft. dort ist von "/etc/oscam/oscam.user" die rede. richtig wäre aber "/etc/config/oscam/oscam.user".
wo kommen eigentlich die binaries "lsusb" uns "usleep" her? selbst geschrieben/kompiliert? oder gibt es da etwas vorgefertigtes?
hab mir mal den quellcode angesehen. ein paar mehr kommandos gibt es schon, sieheDas ist recht easy. Da ist ewig nichts weiterentwickelt worden und es gibt nur 5 Kommandos.
[TABLE="class: code"]
[TR]
[TH][URL="http://www.streamboard.tv/oscam/browser/trunk/module-monitor.c#L776"]776[/URL][/TH]
[TD] static const char *cmd[] = {"login",[/TD]
[/TR]
[TR]
[TH][URL="http://www.streamboard.tv/oscam/browser/trunk/module-monitor.c#L777"]777[/URL][/TH]
[TD] "exit",[/TD]
[/TR]
[TR]
[TH][URL="http://www.streamboard.tv/oscam/browser/trunk/module-monitor.c#L778"]778[/URL][/TH]
[TD] "log",[/TD]
[/TR]
[TR]
[TH][URL="http://www.streamboard.tv/oscam/browser/trunk/module-monitor.c#L779"]779[/URL][/TH]
[TD] "status",[/TD]
[/TR]
[TR]
[TH][URL="http://www.streamboard.tv/oscam/browser/trunk/module-monitor.c#L780"]780[/URL][/TH]
[TD] "shutdown",[/TD]
[/TR]
[TR]
[TH][URL="http://www.streamboard.tv/oscam/browser/trunk/module-monitor.c#L781"]781[/URL][/TH]
[TD] "reload",[/TD]
[/TR]
[TR]
[TH][URL="http://www.streamboard.tv/oscam/browser/trunk/module-monitor.c#L782"]782[/URL][/TH]
[TD] "details",[/TD]
[/TR]
[TR]
[TH][URL="http://www.streamboard.tv/oscam/browser/trunk/module-monitor.c#L783"]783[/URL][/TH]
[TD] "version",[/TD]
[/TR]
[TR]
[TH][URL="http://www.streamboard.tv/oscam/browser/trunk/module-monitor.c#L784"]784[/URL][/TH]
[TD] "debug",[/TD]
[/TR]
[TR]
[TH][URL="http://www.streamboard.tv/oscam/browser/trunk/module-monitor.c#L785"]785[/URL][/TH]
[TD] "getuser",[/TD]
[/TR]
[TR]
[TH][URL="http://www.streamboard.tv/oscam/browser/trunk/module-monitor.c#L786"]786[/URL][/TH]
[TD] "setuser",[/TD]
[/TR]
[TR]
[TH][URL="http://www.streamboard.tv/oscam/browser/trunk/module-monitor.c#L787"]787[/URL][/TH]
[TD] "setserver",[/TD]
[/TR]
[TR]
[TH][URL="http://www.streamboard.tv/oscam/browser/trunk/module-monitor.c#L788"]788[/URL][/TH]
[TD] "commands",[/TD]
[/TR]
[TR]
[TH][URL="http://www.streamboard.tv/oscam/browser/trunk/module-monitor.c#L789"]789[/URL][/TH]
[TD] "keepalive",[/TD]
[/TR]
[TR]
[TH][URL="http://www.streamboard.tv/oscam/browser/trunk/module-monitor.c#L790"]790[/URL][/TH]
[TD] "reread"[/TD]
[/TR]
[TR]
[TH][URL="http://www.streamboard.tv/oscam/browser/trunk/module-monitor.c#L791"]791[/URL][/TH]
[TD]#ifdef WEBIF[/TD]
[/TR]
[TR]
[TH][URL="http://www.streamboard.tv/oscam/browser/trunk/module-monitor.c#L792"]792[/URL][/TH]
[TD] ,"restart"[/TD]
[/TR]
[TR]
[TH][URL="http://www.streamboard.tv/oscam/browser/trunk/module-monitor.c#L793"]793[/URL][/TH]
[TD]#endif[/TD]
[/TR]
[TR]
[TH][URL="http://www.streamboard.tv/oscam/browser/trunk/module-monitor.c#L794"]794[/URL][/TH]
[TD] };[/TD]
[/TR]
[/TABLE]
Ja, ist klar.Wichtig ist halt nocrypt zu verwenden dann kannste mit netcat / telnet ran und dranrum polken.
mir ist nur noch nicht so ganz klar wie ich jetzt feststelle, dass oscam hängt. meinst du mit "trysomethingelse" das man irgendwas probiert und guckt, ob sich noch was tut? prinzipiell prüft man damit ja nur, ob oscam noch auf eingaben am monitorport reagiert und nicht unbedingt, ob es probleme mit den readern gibt?ncat -u $routerip $monitorport
dann einfach:
login $user $pass
log on
keepalive
trysomethingelse
ok, das war wohl ein wenig vor meiner zeit. aus reinem interesse: inwiefern ist denn linux heute nicht mehr monolitisch? so wie ich das sehe ist das nämlich nach wie vor der fall, allerdings wird halt auch vieles im userspace gehandhabt, z.b. eben pcsc, usw.Es ist so, das Wenn ein Device die Biege macht es im Kernel eine "unresponsive" Funktion gibt.
Als erstes werden die Device Funktionen isoliert. Vor vielen vielen Monden als der Linux kernel noch strikt Monolitischen
Aufbaus war, Ist der ganze Hobel einfach mal nur eingefroren dann. so Pentium 2 rum war das
kann ich gerade nicht nachvollziehen. wo findet sich dieser aufruf? inwiefern startest du hier etwas neu? wo kann ich mehr darüber erfahren?In diesen Moment hake ich ein und kille oscam, und starte usbbus neu ala:
echo 0 > /sys/bus/usb/devicec/$toter_blinke_schnuffi_des_grauens/remove
kann ich gerade auch nicht wirklich nachvollziehen. wieso schmeißt du es nicht raus, wenn es unnötig ist?Dann greift auch schon die Netcat seitige überwachung und merkt "hier iss watt im dutten digger ick dreh ma anne Knöppe".
Im Prinzip ist dieses Feature überflüssig geworden mit der Monitor schnittstelle. (Watchdog 1.04 gloobe)
ja, das leuchtet mir soweit ein.Bis dahin wurde nur im Logfile rumgeschnüffelt, welches ja einfach anhielt wenn oscam "freezte" bei Readerfehlern. (1/4 Fällen)
das einzige "problem" ist das anlegen bzw. löschen des benutzers. adduser gibt es nicht (zumindest nicht ohne shadow-useradd und shadow-userdel). Ich habe das in etwa so gelöst:Das ist auf jedenfall sehr sinnvoll, da hätte ich auch mal selber drauf kommen können. Das wird höchstwahrscheinlich umgesezt.
Wobei aber auch noch ne firewall da ist. Wenn wir nun ein "Loch" im cccam Protokoll hätten ist der Drops eh gelutscht.
define Package/oscam/postinst
#!/bin/sh
echo "oscam:*:102:102::/etc/config/oscam:" >> /etc/passwd
echo "oscam:!:102:" >> /etc/group
endef
define Package/oscam/postrm
#!/bin/sh
sed -i '/^oscam/d' /etc/passwd /etc/group
endef
start() {
logger "Starting OSCam"
[ -d /var/log/oscam ] || (mkdir -p /var/log/oscam && chown oscam:oscam /var/log/oscam)
sudo -u oscam /usr/bin/oscam -b
}
ok, hatte mich gewundert. war mir nicht sicher, ob es an meiner config liegt, da ich einiges geändert hatte.Das watchdog logfile gibts nicht mehr. Ich habs einfach mal wegfallen lassen und keiner hats gemerkt -> ergo es interessiert keine Sau!
Also loggt der Watchdog nur noch in den Syslog.
ja, ist sicher richtig. weißt/siehst du eigentlich wie viele user es gibt? aus reinem interesse heraus.95% der User beschäftigen sich eh nicht mit diesem Hintergrund.
ich fand die beschreibung halt ganz interessant. aber stimmt schon, wenn man seinen peers nicht vertrauen kann, dann sollte man es lassen.Ich hatte hier mal durchgefragt, was wir denn nun so wirklich brauchen.
Von den ganzen Modulen die da im Oscam verfügbar sind machen einige ja garkeinen Sinn am Router.
Da kam herraus das anticasc ein Payserver funktion ist. Ich weiss ehrlich gesagt nicht was die kann.
Deshalb ist durch das Voting rausgeflogen.
ja, die funktion habe ich schon begriffen. wollte nur wissen, ob du das selbst geschrieben hast, oder ob es da ein template oder sowas gibt.lsusb ist einfach nur ein script welches aus proc die Daten ausbuddelt. vendor und produktid. Was anderes tut das originale lsusb auch nicht nur halt in #c
in jedem fall praktisch. wobei das "originale" halt nicht für jede zeile ein neuen prozess starten mussUnd mein lsusb ist 661 bytes groß und das originale irgendwas um die 40kb. Un meiner haut gleich die Serials raus
wobei die größe der binary schon "enorm" ist für so etwas triviales. hab da fast mehr vermutet bei 2 kb. das rührt aber wohl dann von der dazugelinkten standardbibliothek?usleep ist glaube das kleinste c Programm der welt.
gut zu wissen. aber ist das nicht etwas, dass man direkt in oscam fixen sollte? werde ich mir bei gelegenheit mal ansehen.Die Monitor schnittstelle am Oscam hat ein Problem. Wenn da 2 Kommandos innerhalt einer millisekunde
anreisen, geht oscam flöten. Darum muss zwischen den Kommandos ne Pause sein. Die wollte ich aber kleiner einer Sekunde halten.
mir ist nur noch nicht so ganz klar wie ich jetzt feststelle, dass oscam hängt. meinst du mit "trysomethingelse" das man irgendwas probiert und guckt, ob sich noch was tut? prinzipiell prüft man damit ja nur, ob oscam noch auf eingaben am monitorport reagiert und nicht unbedingt, ob es probleme mit den readern gibt?
root@OpenWrt:~# ncat -u 127.0.0.1 1000
login dein_login dein_passwort
[AS0000]1|dein_login logged in
keepalive
[KS1000]keepalive_ack
cws=1
(echo -e "login $MON_USR $MON_PWD";
usleep;
while [ $cws -le 1 ]; do
echo -e "login $MON_USR $MON_PWD";
usleep;
echo -e "keepalive";
usleep;
done
echo -e "exit") | ncat -u $LOCALHOST $MON_PORT 2>/dev/null
if test -z $(grep keepalive_ack);then
$RAISE_HELL_OUT_THAT_FUCKING_SKULL
fi
Früher war es so das wenn ein Modul (war ja damals noch keins eigentlich), sagen wir ein Kernelmodul für die PS2 Schnittstelle "gepanict" ist war das Komplette System (Kernel) hin.ok, das war wohl ein wenig vor meiner zeit. aus reinem interesse: inwiefern ist denn linux heute nicht mehr monolitisch? so wie ich das sehe ist das nämlich nach wie vor der fall, allerdings wird halt auch vieles im userspace gehandhabt, z.b. eben pcsc, usw.
Schau mal in /sys/bus/devices nach da gibts diverse Möglichkeiten. Im Rahmen vom Kerneldebugging hatte ich viel darüber gelernt.kann ich gerade nicht nachvollziehen. wo findet sich dieser aufruf? inwiefern startest du hier etwas neu? wo kann ich mehr darüber erfahren?
Weil es bei einem Toten reder es in unter einer Sekunde schafft. Ich habe nichtmal nen Freezer dann.kann ich gerade auch nicht wirklich nachvollziehen. wieso schmeißt du es nicht raus, wenn es unnötig ist?
das einzige "problem" ist das anlegen bzw. löschen des benutzers. adduser gibt es nicht (zumindest nicht ohne shadow-useradd und shadow-userdel). Ich habe das in etwa so gelöst:
!#/bin/sh
if test $(grep $1 /etc/passwd) -lt 1;then
echo "oscam:*:102:102::/etc/config/oscam:" >> /etc/passwd
fi)
if test $(grep $1 /etc/passwd) -lt 1;then
echo "oscam:!:102:" >> /etc/group
fi
define Package/oscam/postinst
/usr/bin/adduser.sh oscam
endef
define Package/oscam/postrm
#!/bin/sh
sed -i '/^oscam/d' /etc/passwd /etc/group
endef
Ne das sehe ich nicht. Ich überwache hier doch keinenja, ist sicher richtig. weißt/siehst du eigentlich wie viele user es gibt? aus reinem interesse heraus.
Ich habe das mal für mein Ipad Geschrieben - ist praktisch ne BSD basis. Ich kann mit nen usb Tuner Sky auf meinem Ipad guggnja, die funktion habe ich schon begriffen. wollte nur wissen, ob du das selbst geschrieben hast, oder ob es da ein template oder sowas gibt.
jenau so isset. Aber baue die mal ne oscamüberwachung mit Oscam. Du merkst schnell das du da 5 Kommandos hintereinander anflanschen musst. so dann noch ne sek davor noch eine danach,wobei die größe der binary schon "enorm" ist für so etwas triviales. hab da fast mehr vermutet bei 2 kb. das rührt aber wohl dann von der dazugelinkten standardbibliothek?
gut zu wissen. aber ist das nicht etwas, dass man direkt in oscam fixen sollte? werde ich mir bei gelegenheit mal ansehen.
apropos selbst geschriebenes: was genau ist usbwatch bzw. was macht es.
und vielen lieben dank für deine schnellen und ausführlichen antworten. sehr hilfreich und keineswegs selbstverständlich, dass man auf so kooperative und schnell reagierende mitglieder stößt!
[COLOR=#0000FF][FONT=consolas]void[/FONT][/COLOR][COLOR=#000000][FONT=consolas] reset([/FONT][/COLOR][COLOR=#0000FF][FONT=consolas]int[/FONT][/COLOR][COLOR=#000000][FONT=consolas] argc, [/FONT][/COLOR][COLOR=#0000FF][FONT=consolas]char[/FONT][/COLOR][COLOR=#000000][FONT=consolas] **argv)
[/FONT][/COLOR]{[COLOR=#0000FF]const[/COLOR] [COLOR=#0000FF]char[/COLOR] *filename;[COLOR=#0000FF]int[/COLOR] fd;
filename = argv[1];
fd = [COLOR=#0000FF]open[/COLOR](filename, O_WRONLY);
ioctl(fd, USBDEVFS_RESET, 0);
[COLOR=#0000FF]close[/COLOR](fd);
[COLOR=#0000FF]return[/COLOR];[COLOR=#000000][FONT=consolas]}[/FONT][/COLOR]
Wir verwenden Cookies und ähnliche Technologien für folgende Zwecke:
Akzeptieren Sie Cookies und diese Technologien?
Wir verwenden Cookies und ähnliche Technologien für folgende Zwecke:
Akzeptieren Sie Cookies und diese Technologien?