microperl 5.8.8 auf der Fritz!Box

bodega

Aktives Mitglied
Mitglied seit
6 Jun 2006
Beiträge
1,980
Punkte für Reaktionen
1
Punkte
0
So...
hab mir mal nen Spass erlaubt und gestern Abend microperl für die Fritz!Box kompiliert.
Lasst euch nur nicht vom Namen täuschen! Die Binary ist 2 MB groß (+libs von 11 MB :-o )

Code:
# ./microperl --help

Usage: ./microperl [switches] [--] [programfile] [arguments]
  -0[octal]       specify record separator (\0, if no argument)
  -a              autosplit mode with -n or -p (splits $_ into @F)
  -C[number/list] enables the listed Unicode features
  -c              check syntax only (runs BEGIN and CHECK blocks)
  -d[:debugger]   run program under debugger
  -D[number/list] set debugging flags (argument is a bit mask or alphabets)
  -e program      one line of program (several -e's allowed, omit programfile)
  -f              don't do $sitelib/sitecustomize.pl at startup
  -F/pattern/     split() pattern for -a switch (//'s are optional)
  -i[extension]   edit <> files in place (makes backup if extension supplied)
  -Idirectory     specify @INC/#include directory (several -I's allowed)
  -l[octal]       enable line ending processing, specifies line terminator
  -[mM][-]module  execute "use/no module..." before executing program
  -n              assume "while (<>) { ... }" loop around program
  -p              assume loop like -n but print line also, like sed
  -P              run program through C preprocessor before compilation
  -s              enable rudimentary parsing for switches after programfile
  -S              look for programfile using PATH environment variable
  -t              enable tainting warnings
  -T              enable tainting checks
  -u              dump core after parsing program
  -U              allow unsafe operations
  -v              print version, subversion (includes VERY IMPORTANT perl info)
  -V[:variable]   print configuration summary (or a single Config.pm variable)
  -w              enable many useful warnings (RECOMMENDED)
  -W              enable all warnings
  -x[directory]   strip off text before #!perl line and perhaps cd to directory
  -X              disable all warnings
Leider schaff ich es nicht, CSPAN Module einzubinden. Es ist auch fraglich, ob's überhaupt möglich ist :confused:

Um auf die Libs zu verweisen, einfach den -I Parameter anhängen: ./microperl -Ivar/media/ftp/usb/lib app.pl

Hier ein paar Infos: http://www.foo.be/docs/tpj/issues/vol5_3/tpj0503-0003.html

ps: ich hab nur microperl kompiliert, nicht das ganze perl.
Es kann sein, das die Libs eventuell nicht richtig funzen... da hatte ich noch keine Zeit zum testen (bis auf ein paar kleinere Perl-Skripte...)
 

Anhänge

Zuletzt bearbeitet:

bodega

Aktives Mitglied
Mitglied seit
6 Jun 2006
Beiträge
1,980
Punkte für Reaktionen
1
Punkte
0
So.. hab's gestern mal weiter getestet und es funzt prima.

In Verbindung mit dem mini_httpd ist das ein adäquater PHP-Ersatz.
Hab damit mal ein Webinterface für meinen Anrufbeantworter gebaut ;)
Läuft auch alles recht flott, trotz der 2 MB Binary...

Die Libs sind nicht zwingend notwendig.

Falls es jemand schafft, Sockets::IO einzubinden, möge er das bitte posten :p ...
 
Zuletzt bearbeitet:

bodega

Aktives Mitglied
Mitglied seit
6 Jun 2006
Beiträge
1,980
Punkte für Reaktionen
1
Punkte
0
eben nochmal ne neue version... bei der letzten gingen die $ENV Variablen nicht. Also kein richtiges cgi/perl ohne post/get...

hiermit gehts nun... ;)

Code:
my @param = $ENV{'QUERY_STRING'};
print  @param;
 

Anhänge

3ffect0R

Neuer User
Mitglied seit
21 Nov 2006
Beiträge
3
Punkte für Reaktionen
0
Punkte
0
Ersteinmal vielen dank von mir, gute Arbeit ;)

Aber nun meine Frage, wie bringe ich das Programm zum laufen? :D
Mini HTTPD läuft problemlos, aber Perl geht immer wieder aus nachdem ich per telnet das Kommando:
Code:
./microperl
eingebe.

Wie kriege ich das richtig zum laufen? Bitte um Hilfe :)
 
Zuletzt bearbeitet:

jesus.christ

Mitglied
Mitglied seit
25 Jun 2005
Beiträge
494
Punkte für Reaktionen
0
Punkte
0
hm. Dann könnte man auch vom CTorrent das Webinterface nutzen, wenn das gescheit läuft... zusammen mit nem Swapfile könnte man dann so endlich den Webtransmission loswerden. Wenn jemandem langweilig ist dann kanns ja mal jemand testen, ansonsten mach ich das dann, wenn ich die Zeit finde, meine ext3-Platte unter dem 2.6er-Kernel läuft und das jemand auch dafür kompiliert :D
 
Zuletzt bearbeitet:

bodega

Aktives Mitglied
Mitglied seit
6 Jun 2006
Beiträge
1,980
Punkte für Reaktionen
1
Punkte
0
mini_httpd starte ich mit '-c **.cgi'.

Die .cgi Datei könnte dann z.B. so aussehen:
Code:
#!../../microperl/microperl -I../../microperl/microperl/lib 

#use strict;
#use warnings;
#use Carp;
warn();

my $test = "Hallo";
my $my_param;

# HTML Header
show_html_head("Hallo");

# Parameter auslesen
$my_param = strip_params("parameter=");

print "Parameter: $my_param";

# HTML footer
show_html_foot();


# --------------------------------------------------------------------------------------------------------
# - Functions ---------------------------------------------------------------------------------------------
# --------------------------------------------------------------------------------------------------------


sub show_html_head
{
	print "Content-type: text/html\n\n";
	print "<html><head><title>@_[0]</title>\n";
	print "<meta name='author' content='maz'>\n";
	print "<meta name='copyright' content='maz'>\n";
	print "<meta name='Content-Type' content='text/html; charset=iso-8859-1'>\n";
	print "<link id='cssindex' href='style.css' type='text/css' rel='stylesheet'>\n";
	print "</head><body>\n";
}

sub show_html_foot
{
	print "<hr>\n";
	print "<a href=\"index.html\"><b><<< zurück</b></a>\n";
	print "</font></body>\n";
}


# --------------------------------------------------------------------------------------------------------
# Environment Parameter strippen ($ENV{'QUERY_STRING'})
#
# Parameter: Key (z.B. controller= bei ..?controller=3&...)
# Rückgabe: Wert
# --------------------------------------------------------------------------------------------------------
sub strip_params($)
{
	my $prefix = "&";
	my $param = "&";	
	my $value = @_[0];
	my $ret = "";

	# Get params...
	$param .= $ENV{'QUERY_STRING'};

	# URL decode (%2F,...)
	$param =~ s/\%([A-Fa-f0-9]{2})/pack('C', hex($1))/seg;
	# + durch ' ' ersetzen
	$param =~ s/\+/" "/seg; 

	# URL encode
	#$param =~ s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg;

	# Präfixe durchlaufen (? oder &)
	if(index($param, "@prefixes[$i]$value") >= 0)
	{
		my $idx1 = -1;
		my $idx2 = -1;

		$idx1 = index($param, "$prefix$value");
		$idx2 = index($param, "$prefix", $idx1+1);

		if($idx2<0)
		{
			$idx2 = length($param); # - $idx1 + length($value);
		} 

		
		$ret = (substr($param, $idx1+length($value)+1, $idx2-$idx1-length($value)-1));
	}

	if(!(($ret) eq ""))
	{
		# Falls gefunden, abbrechen...
		return $ret;
	} else {
		#print "- @prefixes[$i] -";
	}
}
Hab das jetzt mal so aus einem alten Projekt ausgeschnitten. Das mit dem strippen der Environments kriegt man bestimmt besser hin ;). Die Libs (-I../../microperl/microperl/lib) müssen nicht unbedingt angegeben werden.
Microperl ist auch kein richtiges Perl. Der Vorteil sind ganz klar die Standard-C Routinen (string.h, stdio.h,..) die damit verwendet werden können.
 

3ffect0R

Neuer User
Mitglied seit
21 Nov 2006
Beiträge
3
Punkte für Reaktionen
0
Punkte
0
Hm, wenn ich das Perl Script über den ./microperl kommentar.pl laufen lasse, zeigt er die richtige Ausgabe an. Aber wenn ich es über den Browser aufrufe, zeigt er mir den kompletten Quelltext der Perl Datei =(

Kann mir wer helfen? Das Script ist im gleichen Verzeichnis wie Microperl, dementsprechend lautet die erste Zeile
Code:
#!microperl
Was mache ich falsch?
 

u.g

Aktives Mitglied
Mitglied seit
27 Mrz 2005
Beiträge
1,399
Punkte für Reaktionen
0
Punkte
36
@ 3ffect0R:
Hast du mini_httpd auch so gestartet wie in #6 ?

@ bodega:
Der Vorteil sind ganz klar die Standard-C Routinen (string.h, stdio.h,..) die damit verwendet werden können.
Hast du dafür vielleicht mal ein Beispiel-Script ? Wäre nett ...
 

bodega

Aktives Mitglied
Mitglied seit
6 Jun 2006
Beiträge
1,980
Punkte für Reaktionen
1
Punkte
0
@u.g
ups.. das mit den Standard-C Routinen war etwas anders gemeint:
equivalent sind natürlich die Funktionen aber nicht die Funktionsnamen.
Z.B. Stringmanipulation oder Datei Lese-/Schreibroutinen. Das waren so ein paar Dinge, die mir an Bourne Shell gefehlt haben, bzw. schwer zu realisieren waren. Header Dateien kann man leider nicht einbinden. Ich dachte zwar, man könnte stdlib.h einbinden, aber das muss ich revidieren! Zuviel C tut W ;) - Ich hab deswegen auch mal #2 geändert.
Nichts desto trotz, man könnte microperl um Funktionen erweitern. Mit CPAN Modulen wäre es natürlich noch besser.

Hier die Sprachelemente:
http://btfmx1.fs.uni-bayreuth.de/html/selfhtml/tgc.htm

@3ffect0R
Wenn du nur nur Quelltext siehst, probiere es mal mit folgender Zeile:
Code:
#!/var/x/miniperl
printf "Content-type: text/html\n\n";
printf "<html>....";
Der Content-Type ist hierbei nötig.
 
Zuletzt bearbeitet:

jesus.christ

Mitglied
Mitglied seit
25 Jun 2005
Beiträge
494
Punkte für Reaktionen
0
Punkte
0
Sicher, dass der Pfad zum microperl stimmt?
 

u.g

Aktives Mitglied
Mitglied seit
27 Mrz 2005
Beiträge
1,399
Punkte für Reaktionen
0
Punkte
36
3ffect0R schrieb:
Er will trotzalledem net....
Entweder benennst du die pl-Datei in .cgi um, oder verschiebst alle CGIs (+micro_perl?) nach cgi-bin und startest mini_httpd mit '-c "cgi-bin/*"'
 

bodega

Aktives Mitglied
Mitglied seit
6 Jun 2006
Beiträge
1,980
Punkte für Reaktionen
1
Punkte
0
Mhh.. sieht so aus, als ob du microperl im root hast (#!/microperl).
Nimm einfach die volle Pfadangabe und benenn das Skript in .cgi um.
Ach ja, ausführbar machen mit 'chmod +x script.cgi' könnte auch noch helfen.
 

xtomcatx

Neuer User
Mitglied seit
21 Dez 2006
Beiträge
11
Punkte für Reaktionen
0
Punkte
0
als erstes würde ich mal Rechte vergeben, wie bodega schon sagt.
Beispielsweise chmod 755 kommentar.pl
 

Fritz!Boy

Neuer User
Mitglied seit
11 Nov 2006
Beiträge
12
Punkte für Reaktionen
0
Punkte
0
Hallo bodega,
ich suche für meine 7170 auch eine Anrufbeantworter Lösung, allerdings nicht für SIP Accounts, sondern für meine ISDN MSNs.
Verfolge im Augenblick die geposteten Threads zum Thema Asterisk. Insbesondere das die USB Stick Variante von SPB.
Habe aber noch nichts installiert...

Frage: Könntest du dein Web-Interface einmal näher beschreiben?

Viele Grüße,
Michael
 

jesus.christ

Mitglied
Mitglied seit
25 Jun 2005
Beiträge
494
Punkte für Reaktionen
0
Punkte
0
bodega schrieb:
Falls es jemand schafft, Sockets::IO einzubinden, möge er das bitte posten :p ...
ebenso Hostname und Fcntl... :D Wäre dankbar für Hinweise^^
 

Scaleo

Neuer User
Mitglied seit
20 Mrz 2006
Beiträge
159
Punkte für Reaktionen
0
Punkte
0
kann des mal jemand erklären. ich hab des microperl auf einem usb stick und den mini http, der minihttpd läuft. so wie kann ich des perl nun starten und'/oder installiern. bitte um kleines how to. muss ich dann den webserver anders starten wenn ja wie?
 

wichard

IPPF-Promi
Mitglied seit
16 Jun 2005
Beiträge
6,954
Punkte für Reaktionen
0
Punkte
36
So, wie ab Beitrag 6 beschrieben.
 

Scaleo

Neuer User
Mitglied seit
20 Mrz 2006
Beiträge
159
Punkte für Reaktionen
0
Punkte
0
Edit Ghostwalker: 2 Beiträge zusammengefasst.

geht des auch bissl genauer schritt für schritt, bin immernoch newbie

wo muss des pearl liegen?
wie starte ich es?
wie kann ich es mitdem webserver verbinden?

2. Beitrag:
wo muss diese cgi datei liegen die in #6 erwähnt ist.

Wäre schön wenn antworten kämen
 

it-micha

Gesperrt
Mitglied seit
18 Jan 2007
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
wie kann ich das microperl in Verbinung mit dem Apachen Web Server starten (wurde hier im Forum beahndelt)
 

3CX PBX - GRATIS
Linux / Win / Cloud

Statistik des Forums

Themen
231,813
Beiträge
2,015,538
Mitglieder
348,859
Neuestes Mitglied
Munichkom