Neues Makro

Die Erstellung eines Makros ist eine besonders einfache Art, die Funktionalität von WebGUI zu erweitern. Die Voraussetzung dafür ist, dass Sie sich ein wenig mit Perl und den Konfigurationsdateien von WebGUI auskennen.

Als Beispiel wird hier ein neues Makro als Ersatz für das Makro ^Execute(programm);  gezeigt. "Execute" erlaubt keine Argumente zum auszuführenden Programm. Im Beispiel wird das abgeändert.

Die Schritte sind:

  1. Gehen Sie zum Makro-Verzeichnis "<WebGUI-Root>/lib/WebGUI/Macro"
  2. Kopieren eines vergleichbaren Makros
    cp Execute.pm MLexecute.pm
  3. Ändern MLexecute.pm
  4. Original:
    package WebGUI::Macro::Execute;

    #-------------------------------------------------------------------
    # WebGUI is Copyright 2001-2009 Plain Black Corporation.
    #-------------------------------------------------------------------
    # Please read the legal notices (docs/legal.txt) and the license
    # (docs/license.txt) that came with this distribution before using
    # this software.
    #-------------------------------------------------------------------
    # http://www.plainblack.com info@plainblack.com
    #-------------------------------------------------------------------

    use strict;

    =head1 NAME

    Package WebGUI::Macro::Execute

    =head1 DESCRIPTION

    Allows a content manager or administrator to execute an external program.

    =head2 process ( system_call )

    =head3 system_call

    The system call to execute. STDOUT from the call will be captured and
    returned. Calls containing the words passwd, shadow or .conf will
    be blocked and an error message returned instead.

    =cut


    #-------------------------------------------------------------------
    sub process {
    my $session = shift;
    my @param = @_;
    if ($param[0] =~ /passwd/ || $param[0] =~ /shadow/ || $param[0] =~ /\.conf/) {
    my $i18n = WebGUI::International->new($session, 'Macro_Execute');
    return $i18n->get('execute error');
    } else {
    return `$param[0]`;
    }
    }



    Geänderte Version:
    package WebGUI::Macro::MLexecute;

    #...

    use strict;

    =head1 NAME

    Package WebGUI::Macro::MLexecute

    =head1 DESCRIPTION

    Allows a content manager or administrator to execute an external program with one argument.

    =head2 process ( system_call )

    =head3 system_call

    #...
    =cut


    #-------------------------------------------------------------------
    sub process {
    my $session = shift;
    my @param = @_;
    if ($param[0] =~ /passwd/ || $param[0] =~ /shadow/ || $param[0] =~ /\.conf/) {
    my $i18n = WebGUI::International->new($session, 'Macro_Execute');
    return $i18n->get('execute error');
    } else {
    return `$param[0] $param[1]`;
    }
    }

    1;

  5. Makro aufnehmen in <WebGUI-Root>/etc/WebGUI.conf:
    "macros" : {
    "@" : "At_username",
    "#" : "Hash_userId",
    "/" : "Slash_gatewayUrl",
    "a" : "a_account",
    "AdminBar" : "AdminBar",
    "AdminText" : "AdminText",
    "AdminToggle" : "AdminToggle",
    "AdSpace" : "AdSpace",
    "AOIHits" : "AOIHits",
    "AOIRank" : "AOIRank",
    "AssetProxy" : "AssetProxy",
    "BackToSite" : "BackToSite",
    "CanEditText" : "CanEditText",
    "CartItemCount" : "CartItemCount",
    "c" : "c_companyName",
    "D" : "D_date",
    "DeactivateAccount": "DeactivateAccount",
    "EditableToggle" : "EditableToggle",
    "e" : "e_companyEmail",
    "Extras" : "Extras",
    # Watch Out! Might be dangerous!
    "MLexecute" : "MLexecute",
    ...
  6. Webserver neu starten

Jetzt kan man mit  ^MLexecute("Programm" , "Argument"); z.B. auch ein Programm ausführen, das eine Website-URL zerlegt in Servername und Variabelen, diese bearbeitet und als Ergebnis auf die Seite bringt.

Um eine Seite eines anderen Servers ohne Bearbeitung auf Ihre Website zu bringen gibt es übrigens das Asset oder Inhaltsobjekt "HttpProxy".

(Das Programm muss es natürlich auf Ihr System geben!)

Beachten Sie bitte, dass das obige Beispiel alle Programme auf Ihren Server ausfürhren kann, insofern der Webserver dazu berechtigt ist!

 

Schlüsselworte: makro

©2020 WebGUI Professional. All Rights Reserved.
Impressum