Wie erstelle ich ein eigenes Plugin?

Games, Plugins, Utils, Tools, 3rdParty, etc...
animal
Interessierter
Interessierter
Beiträge: 45
Registriert: Freitag 18. Oktober 2002, 20:56

Beitrag von animal »

hallo

Pluginmenü:
https://tuxbox.org/forum/viewtopic.php?p=195399#195399
oder
plugin.so die nicht mehr gepatched werden muss:
https://tuxbox.org/forum/viewtopic.php?p=194843#194843

\hallo
essu
Tuxboxer
Tuxboxer
Beiträge: 2452
Registriert: Montag 21. Oktober 2002, 10:04

Beitrag von essu »

@animal:
Ich hab mal versucht es zu kompilieren, allerdings fehlt mir da das nötige Knowhow, der Fehler der auftrat bezog sich auf Little oder Big Endian, weiss nicht mehr genau...
Schon gelesen ???
ENIGMA-DOC
animal
Interessierter
Interessierter
Beiträge: 45
Registriert: Freitag 18. Oktober 2002, 20:56

Beitrag von animal »

hallo

Code: Alles auswählen

#include <stdio.h>
#include <plugin.h>
void plugin_exec()
{
  char scriptname[256], puffer[10000], *ptr1, *ptr2;
   int xx;
   xx=open("/proc/self/maps",0);
   read(xx, puffer, 9999);
   //printf("%s\n",puffer);
    (unsigned int)ptr1 = strchr(puffer,'/');
    (unsigned int)ptr2 = strchr(puffer,'.');

    strncpy(scriptname, ptr1, ptr2 - ptr1);

    scriptname[ptr2 - ptr1] = '\0';

    printf("Scriptname = %s\n",scriptname);

 system(scriptname);
}
und mit :
powerpc-tuxbox-linux-gnu-gcc -shared -I . shellplugin.c -o shellplugin.so
compilieren

animal
essu
Tuxboxer
Tuxboxer
Beiträge: 2452
Registriert: Montag 21. Oktober 2002, 10:04

Beitrag von essu »

THX, werds mal probieren
Schon gelesen ???
ENIGMA-DOC
essu
Tuxboxer
Tuxboxer
Beiträge: 2452
Registriert: Montag 21. Oktober 2002, 10:04

Beitrag von essu »

Jetzt siehts bei mir so aus:

Code: Alles auswählen

Segmentation fault
Schon gelesen ???
ENIGMA-DOC
animal
Interessierter
Interessierter
Beiträge: 45
Registriert: Freitag 18. Oktober 2002, 20:56

Beitrag von animal »

hast du auch eine shellplugin.cfg erstellt ?? und wie sieht die aus.
die xxx.cfg muss wie die xxx.so datei benannt werden.
das script einfach xxx (ohne extension) nennen.

bei mir funktioniert es.
Holger_R
Beiträge: 2
Registriert: Mittwoch 3. März 2004, 17:21

Beitrag von Holger_R »

Hi!
Wollt nur mal aufs ursprüngliche Thema zurückführen und Interess für 3 Personen beantragen!

Holger
essu
Tuxboxer
Tuxboxer
Beiträge: 2452
Registriert: Montag 21. Oktober 2002, 10:04

Beitrag von essu »

Alles so gemacht, wie dus beschrieben hast. Die cfg:

Code: Alles auswählen

type=2
name=Shellplugin
desc=test
needfb=1
needrc=1
needvtxtpid=0
needoffsets=0
Schon gelesen ???
ENIGMA-DOC
animal
Interessierter
Interessierter
Beiträge: 45
Registriert: Freitag 18. Oktober 2002, 20:56

Beitrag von animal »

du hast PN
essu
Tuxboxer
Tuxboxer
Beiträge: 2452
Registriert: Montag 21. Oktober 2002, 10:04

Beitrag von essu »

animal hat geschrieben:du hast PN
Nö...(aber gestern gabs wohl auch ziemliche Probleme bei berlios)

Ich nehme mal an, du willst mir das compiled shellplugin.so schicken, das ist sehr nett, aber mir gehts auch um das Verständnis des Ganzen. Warum habe ich die obige Fehlermeldung?
Schon gelesen ???
ENIGMA-DOC
Gorcon
Tuxboxer
Tuxboxer
Beiträge: 5873
Registriert: Samstag 23. Februar 2002, 22:46

Beitrag von Gorcon »

Kurze Zwischenfrage:
Ist es eigentlich möglich von einem Plugin ein anderes aufzurufen?
Ich möchte zB. das die Box rebootet wenn das Plugin (austauschen der cam-alpha.bin) fertig ist rebootet.
Ein Plugin reboot funktioniert aleine aber wenn ich reboot in der Shell des anderen Plugins aufrufe gehts nicht. Auch das Shell selbst aufrufen bringt nichts.

Code: Alles auswählen

#!/bin/sh 
cd /var/tuxbox/plugins
wget -q http://127.0.0.1/control/message?popup=Kabel%20Karte%20Aktiviert!!
rm /var/tuxbox/ucodes/cam-alpha.bin
cp /var/tuxbox/ucodes/cam-alpha_kabel.bin /var/tuxbox/ucodes/cam-alpha.bin
reboot
exit; 
Gruß Gorcon
animal
Interessierter
Interessierter
Beiträge: 45
Registriert: Freitag 18. Oktober 2002, 20:56

Beitrag von animal »

malzeit

@Holger_R: bin auch interessiert aber ein neuer thread währe sicher sinnvoll zb "eigene Plugins (LazyT-Liga)" und wenn LazyT uns mal starthilfe geben kann werden sicher mehr mitarbeiten. ich hab schon einiges aus seinen sourcen gebastelt aber einige dinge sind noch immer ein spanisches dorf. InterestCounter+=3;

@essu: ok dann anders. du rufst das plugin aber schon über die blaue taste auf und nicht über die shell? wo erscheint das segmentation fault in der konsole (neutrino sürzt ab??) oder wie??

@Gorcon: hab dein script definitiv geprüft und meine box rebootet. was sagt die serielle konsole?

/malzeit

animal
Gorcon
Tuxboxer
Tuxboxer
Beiträge: 5873
Registriert: Samstag 23. Februar 2002, 22:46

Beitrag von Gorcon »

Code: Alles auswählen

[CPlugins] try exec...
: not found/plugins/shell5: 6: reboot
[CPlugins] exec done...
/dev/input/event1: No such file or directory
Gruß Gorcon
animal
Interessierter
Interessierter
Beiträge: 45
Registriert: Freitag 18. Oktober 2002, 20:56

Beitrag von animal »

hi Gorcon

du hast aber nicht meine version verwendet da gibt es mehr infos.
heisst dein script shell5 ?
ist es in /var/tuxbox/plugins/ ?
hast du die rechte des scripts auf 755 oder ähnlich gesetzt ?

deine terminaleinstellung ist eigenartig da anscheinend irgendwie überschrieben wird
sollte so aussehen

Code: Alles auswählen

[CPlugins] try exec... 
sh: /var/tuxbox/plugins/shell5 not found 
[CPlugins] exec done... 
animal
Gorcon
Tuxboxer
Tuxboxer
Beiträge: 5873
Registriert: Samstag 23. Februar 2002, 22:46

Beitrag von Gorcon »

du hast aber nicht meine version verwendet da gibt es mehr infos.
Nein
heisst dein script shell5 ?
Ja.
ist es in /var/tuxbox/plugins/ ?
Jaein, die shell.so und shell.cfg ist in /lib/tuxbox/plugins/ der Rest in /var/tuxbox/plugins/
hast du die rechte des scripts auf 755 oder ähnlich gesetzt ?
Ja, das script funktioniert ja auch, nur bootet die Box nicht neu.
Ein extra Reboot Plugin funktioniert problemlos.
Gruß Gorcon
animal
Interessierter
Interessierter
Beiträge: 45
Registriert: Freitag 18. Oktober 2002, 20:56

Beitrag von animal »

hast du ein script welches "reboot" heisst?

füge nach jeder zeile ein

Code: Alles auswählen

 #!/bin/sh 
cd /var/tuxbox/plugins 
echo "verz gewechselt..."
wget -q http://127.0.0.1/control/message?popup=Kabel%20Karte%20Aktiviert!!
echo "popup gesendet..." 
rm /var/tuxbox/ucodes/cam-alpha.bin 
echo "cam-alpha gelöscht..."
cp /var/tuxbox/ucodes/cam-alpha_kabel.bin /var/tuxbox/ucodes/cam-alpha.bin 
echo "neue cam-alpha kopiert reboot..."

/bin/busybox reboot 

echo "dies ist ein nachricht aus dem jenseits......"
exit; 
check die konsole
sonst fällt mir auch nichts mehr ein

animal
Zuletzt geändert von animal am Dienstag 16. März 2004, 17:26, insgesamt 1-mal geändert.
Gorcon
Tuxboxer
Tuxboxer
Beiträge: 5873
Registriert: Samstag 23. Februar 2002, 22:46

Beitrag von Gorcon »

Welchen Editor verwendest Du?
Irgendwie habe ich den Editor in Verdacht. :roll: ich verwende im Moment Ultraedit.
Gruß Gorcon
animal
Interessierter
Interessierter
Beiträge: 45
Registriert: Freitag 18. Oktober 2002, 20:56

Beitrag von animal »

Ultraedit ist voll OK unter linux konsole mcedit und auf der box vi.
unter UE muss man aufpassen ob er auch in UNIX abspeichert. kann man konvertieren unter File->Conversions->DOS to UNIX. Wenn du beim UE noch FTP einrichtest kannst direkt auf der box arbeiten.

check mal die variante oben und nimm als serielles Terminal dem Bootmanager der funktioniert immer da müsste man doch genau sehen was und wo was passiert.

animal
Gorcon
Tuxboxer
Tuxboxer
Beiträge: 5873
Registriert: Samstag 23. Februar 2002, 22:46

Beitrag von Gorcon »

Super jetzt hats geklappt. Es lag an der Konvertierung.
War schon eben am Verzweifeln weil eben garnichts mehr ging.
Das Rebooten klappt jetzt mit dem gleichen skript wie ich es oben gepostet habe.
Vielen Dank für Deine Hilfe :wink:
Gruß Gorcon
essu
Tuxboxer
Tuxboxer
Beiträge: 2452
Registriert: Montag 21. Oktober 2002, 10:04

Beitrag von essu »

animal hat geschrieben: @essu: ok dann anders. du rufst das plugin aber schon über die blaue taste auf und nicht über die shell? wo erscheint das segmentation fault in der konsole (neutrino sürzt ab??) oder wie??
Sorry, immer, wenn ich versucht habe zu antworten war das forum down:

Nein, ich hatte das Plugin in meiner Verblendung per telnet aufgerufen, per blaue taste klappt es.
Allerdings möchte ich ja, dass ein ln -s auf shellplugin.so genügt um beliebige andere shellplugins aufzurufen, das scheint aber wohl nicht zu gehen, lässt sich das realisieren?
BTW: shellplugin.so ist bei mir 16K gross, scheint mir ziemlich viel...
Schon gelesen ???
ENIGMA-DOC
animal
Interessierter
Interessierter
Beiträge: 45
Registriert: Freitag 18. Oktober 2002, 20:56

Beitrag von animal »

hi essu

du musst es noch strippen:
powerpc-tuxbox-linux-gnu-strip shellplugin.so
dann hat es nur mehr 9.3k ist auch noch zu viel ich hab auch noch einen alten compiler da geht es auf 4,6k zurück.

leider erkennt das plugin nur den eigenen namen (d.h. man braucht nicht mehr zu patchen) aber nicht den des aufrufenden links.

ich könnte mir vorstellen vor dem start von neutrino kopien mit den gewünschten namen im /tmp anzulegen und auf diese in /var/tuxbox/plugins zu linken es müssten aber auch die scripts ins /tmp

hab auch schon mein shellmenü fertig zum testen da wird nur mehr in der shellmenu.cfg zusätzlich der angezeigte name und der name des scripts angegeben (dzt max 10 scripts)

wenns interessiert melden

animal
essu
Tuxboxer
Tuxboxer
Beiträge: 2452
Registriert: Montag 21. Oktober 2002, 10:04

Beitrag von essu »

Danke für deine Hilfe.

Klar bin ich auch an deinem shellmenü interessiert.
Schon gelesen ???
ENIGMA-DOC
Gorcon
Tuxboxer
Tuxboxer
Beiträge: 5873
Registriert: Samstag 23. Februar 2002, 22:46

Beitrag von Gorcon »

Ich habe noch ne Frage.
Wie kann ich einen Befehl verzögert ausführen?
Es geht darum das ich mit dem shell das oben angegeben ist erst zB. die cam-alpha austausche und dabei wird ein Massage Popup auf den Bildschirm gebracht. dann soll die Box rebooten. nur wird mir das Popup viel zu kurz angezeigt ich möchte also eine Zeitverzögerung von zB. 2-3sek haben bis der Befehl "reboot" ausgeführt wird.
Gruß Gorcon
essu
Tuxboxer
Tuxboxer
Beiträge: 2452
Registriert: Montag 21. Oktober 2002, 10:04

Beitrag von essu »

sleep n [n=sekunden]
Schon gelesen ???
ENIGMA-DOC
Gorcon
Tuxboxer
Tuxboxer
Beiträge: 5873
Registriert: Samstag 23. Februar 2002, 22:46

Beitrag von Gorcon »

Danke. Klappt aber leider nicht.
Irgendwie kommt laufend die Formatierung des Shells durcheinander. (nicht sichtbar)
Wenn ich das skript änder in diesem Fall eine Zeile einfüge geht auf einmal der Kopierbefehl nicht mehr obwohl ich da nichts drann geändert habe. :-? Ich nutze jetzt schon extra UltraEdit auch im Unix Modus aber mal geht mal nicht.
Das Einfügen des "sleep" Befehls brachte eigentlich garnichts. :o
Ich habe jetzt aber erst mal kein Bock mehr mal morgen weiter sehen.
Aber trotzdem Danke. :wink:
Gruß Gorcon