.titleBar { margin-bottom: 5px!important; }

microperl 5.8.8 auf der Fritz!Box

Dieses Thema im Forum "FRITZ!Box Fon: Modifikationen" wurde erstellt von bodega, 21 Sep. 2006.

  1. bodega

    bodega Aktives Mitglied

    Registriert seit:
    6 Juni 2006
    Beiträge:
    1,980
    Zustimmungen:
    1
    Punkte für Erfolge:
    0
    Ort:
    NRW
    #1 bodega, 21 Sep. 2006
    Zuletzt bearbeitet: 21 Sep. 2006
    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:

  2. bodega

    bodega Aktives Mitglied

    Registriert seit:
    6 Juni 2006
    Beiträge:
    1,980
    Zustimmungen:
    1
    Punkte für Erfolge:
    0
    Ort:
    NRW
    #2 bodega, 22 Sep. 2006
    Zuletzt bearbeitet: 25 Dez. 2006
    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 ...
     
  3. bodega

    bodega Aktives Mitglied

    Registriert seit:
    6 Juni 2006
    Beiträge:
    1,980
    Zustimmungen:
    1
    Punkte für Erfolge:
    0
    Ort:
    NRW
    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:

  4. 3ffect0R

    3ffect0R Neuer User

    Registriert seit:
    21 Nov. 2006
    Beiträge:
    3
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #4 3ffect0R, 23 Dez. 2006
    Zuletzt bearbeitet: 23 Dez. 2006
    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 :)
     
  5. jesus.christ

    jesus.christ Mitglied

    Registriert seit:
    25 Juni 2005
    Beiträge:
    494
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    Diplom-Wirtschaftsinformatiker
    Ort:
    Mannheim
    #5 jesus.christ, 23 Dez. 2006
    Zuletzt bearbeitet: 23 Dez. 2006
    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
     
  6. bodega

    bodega Aktives Mitglied

    Registriert seit:
    6 Juni 2006
    Beiträge:
    1,980
    Zustimmungen:
    1
    Punkte für Erfolge:
    0
    Ort:
    NRW
    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.
     
  7. 3ffect0R

    3ffect0R Neuer User

    Registriert seit:
    21 Nov. 2006
    Beiträge:
    3
    Zustimmungen:
    0
    Punkte für Erfolge:
    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?
     
  8. u.g

    u.g Aktives Mitglied

    Registriert seit:
    27 März 2005
    Beiträge:
    1,398
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    @ 3ffect0R:
    Hast du mini_httpd auch so gestartet wie in #6 ?

    @ bodega:
    Hast du dafür vielleicht mal ein Beispiel-Script ? Wäre nett ...
     
  9. bodega

    bodega Aktives Mitglied

    Registriert seit:
    6 Juni 2006
    Beiträge:
    1,980
    Zustimmungen:
    1
    Punkte für Erfolge:
    0
    Ort:
    NRW
    #9 bodega, 25 Dez. 2006
    Zuletzt bearbeitet: 25 Dez. 2006
    @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.
     
  10. 3ffect0R

    3ffect0R Neuer User

    Registriert seit:
    21 Nov. 2006
    Beiträge:
    3
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
  11. jesus.christ

    jesus.christ Mitglied

    Registriert seit:
    25 Juni 2005
    Beiträge:
    494
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    Diplom-Wirtschaftsinformatiker
    Ort:
    Mannheim
    Sicher, dass der Pfad zum microperl stimmt?
     
  12. u.g

    u.g Aktives Mitglied

    Registriert seit:
    27 März 2005
    Beiträge:
    1,398
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    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/*"'
     
  13. bodega

    bodega Aktives Mitglied

    Registriert seit:
    6 Juni 2006
    Beiträge:
    1,980
    Zustimmungen:
    1
    Punkte für Erfolge:
    0
    Ort:
    NRW
    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.
     
  14. xtomcatx

    xtomcatx Neuer User

    Registriert seit:
    21 Dez. 2006
    Beiträge:
    11
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    als erstes würde ich mal Rechte vergeben, wie bodega schon sagt.
    Beispielsweise chmod 755 kommentar.pl
     
  15. Fritz!Boy

    Fritz!Boy Neuer User

    Registriert seit:
    11 Nov. 2006
    Beiträge:
    12
    Zustimmungen:
    0
    Punkte für Erfolge:
    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
     
  16. jesus.christ

    jesus.christ Mitglied

    Registriert seit:
    25 Juni 2005
    Beiträge:
    494
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    Diplom-Wirtschaftsinformatiker
    Ort:
    Mannheim
    ebenso Hostname und Fcntl... :D Wäre dankbar für Hinweise^^
     
  17. Scaleo

    Scaleo Neuer User

    Registriert seit:
    20 März 2006
    Beiträge:
    159
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    Informatik Student
    Ort:
    Bayern
    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?
     
  18. wichard

    wichard IPPF-Promi

    Registriert seit:
    16 Juni 2005
    Beiträge:
    6,954
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Ort:
    Aachen
    So, wie ab Beitrag 6 beschrieben.
     
  19. Scaleo

    Scaleo Neuer User

    Registriert seit:
    20 März 2006
    Beiträge:
    159
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    Informatik Student
    Ort:
    Bayern
    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
     
  20. it-micha

    it-micha Gesperrt

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