$MarkupExpr["crypt"] = 'MiscCrypt($pagename, @$argp, @$args)'; function MiscCrypt($pagename, $opt, $args) { #echo "pre opt=". print_r($opt, true) . "
\n"; if (defined('WikiSh')) WikiShCompatible($pagename, $opt, $args); #echo "post args=". print_r($args, true) . "
\n"; #echo "post opt=". print_r($opt, true) . "
\n"; #echo "post salt=$opt[salt]
\n"; #echo "IN: " . implode(" ", $args) . ", OUT=" . ($opt['salt'] ? crypt(implode(" ", $args), $opt['salt']) : crypt(implode(" ", $args))) . "
\n"; if ($opt['salt']) $rtn = crypt(implode(" ", $args), $opt['salt']); else $rtn = crypt(implode(" ", $args)); if (defined('WikiSh')) return(wshPostProcess($pagename, $opt, (array)$rtn)); else return($rtn); } # OPTIONS: # -l ltrim() # -r rtrim() $MarkupExpr["trim"] = 'MiscTrim($pagename, @$argp, @$args)'; function MiscTrim($pagename, $opt, $args) { if (defined('WikiSh')) WikiShCompatible($pagename, $opt, $args); if ($opt['l']) $rtn = ltrim($args[0]); elseif ($opt['r']) $rtn = rtrim($args[0]); else $rtn = trim($args[0]); if (defined('WikiSh')) return(wshPostProcess($pagename, $opt, (array)$rtn)); else return($rtn); } # OPTIONS: # -f|--file -- do a hash of the file (singular) instead of the string # -note that only a single file can be hashed - subsequent args will be # (silently) ignored # --raw -- pass true as the 3rd option to hash() # (other WikiSh options like --xargs, --stdout, --encrypt, --decrypt, etc.) # Arg#1 = name of algorithm (md5, sha1, etc.) $MarkupExpr["hash"] = 'MiscHash($pagename, @$argp, @$args)'; function MiscHash($pagename, $opt, $args) { if (defined('WikiSh')) WikiShCompatible($pagename, $opt, $args); $algo = array_shift($args); if (@$opt['f'] || @$opt['file']) { if (defined('WikiSh')) $page = ShReadPage($pagename, $opt, $arg[0]); else $page = RetrieveAuthPage($args[0], 'read', false); $val = $page['text']; } else { $val = implode(" ", $args); } $rtn = hash($algo, $val, (@$opt['raw'])); if (defined('WikiSh')) return(wshPostProcess($pagename, $opt, (array)$rtn)); else return($rtn); } # {(hash_hmac [OPTIONS] )} # OPTIONS: # -f|--file -- do a hash of the file (singular) instead of the string # -note that only a single file can be hashed - subsequent args will be # (silently) ignored # --raw -- pass true as the 3rd option to hash() # --key:KEY -- the key (required!) # (other WikiSh options like --xargs, --stdout, --encrypt, --decrypt, etc.) # Arg#1 = name of algorithm (md5, sha1, etc.) $MarkupExpr["hash_hmac"] = 'MiscHashHmac($pagename, @$argp, @$args)'; function MiscHashHmac($pagename, $opt, $args) { if (defined('WikiSh')) WikiShCompatible($pagename, $opt, $args); if (!isset($opt['key'])) { if (defined('WikiSh')) WikiShStdErr($pagename, $opt, "ERROR: MiscHashHmac: No KEY specified."); else echo "ERROR: MiscHashHmac: No KEY specified
\n"; return(''); } $algo = array_shift($args); if (@$opt['f'] || @$opt['file']) { if (defined('WikiSh')) $page = ShReadPage($pagename, $opt, $arg[0]); else $page = RetrieveAuthPage($args[0], 'read', false); $val = $page['text']; } else { $val = implode(" ", $args); } #echo "hash_hmac: algo=$algo, val=$val, key=$opt[key]
\n"; $rtn = hash_hmac($algo, $val, $opt['key'], (@$opt['raw'])); if (defined('WikiSh')) return(wshPostProcess($pagename, $opt, (array)$rtn)); else return($rtn); } $MarkupExpr["crc32"] = 'MiscCrc32($pagename, @$argp, @$args)'; function MiscCrc32($pagename, $opt, $args) { if (defined('WikiSh')) WikiShCompatible($pagename, $opt, $args); $rtn = sprintf("%u", crc32(implode(" ", $args))); if (defined('WikiSh')) return(wshPostProcess($pagename, $opt, (array)$rtn)); else return($rtn); } $MarkupExpr["base64_encode"] = 'MiscBase64_Encode($pagename, @$argp, @$args)'; function MiscBase64_Encode($pagename, $opt, $args) { if (defined('WikiSh')) WikiShCompatible($pagename, $opt, $args); $rtn = base64_encode(implode(" ", $args)); if (defined('WikiSh')) { wdbg(3, "Base64_Encode: returning \"$rtn\" via wshPostProcess"); return(wshPostProcess($pagename, $opt, (array)$rtn)); } else { wdbg(3, "Base64_Encode: returning \"$rtn\" directly"); return($rtn); } } $MarkupExpr["base64_decode"] = 'MiscBase64_Decode($pagename, @$argp, @$args)'; function MiscBase64_Decode($pagename, $opt, $args) { if (defined('WikiSh')) WikiShCompatible($pagename, $opt, $args); $rtn = base64_decode(implode(" ", $args)); if (defined('WikiSh')) return(wshPostProcess($pagename, $opt, (array)$rtn)); else return($rtn); } $MarkupExpr["makepagename"] = 'MiscMakePageName($pagename, @$argp, @$args)'; function MiscMakePageName($pagename, $opt, $args) { if (defined('WikiSh')) WikiShCompatible($pagename, $opt, $args); $rtn = MakePageName($opt['REFPAGE']?$opt['REFPAGE']:$pagename, implode(" ", $args)); if (defined('WikiSh')) return(wshPostProcess($pagename, $opt, (array)$rtn)); else return($rtn); } $MarkupExpr["writeptv"] = 'MiscWritePTV($pagename, @$argp, @$args)'; function MiscWritePTV($pagename, $opt, $args) { if (!defined('toolbox')) { echo "The MX WritePTV depends on the cookbook toolbox.php which is not installed. Aborting.
\n"; return(false); } if (defined('WikiSh')) { WikiShCompatible($pagename, $opt, $args); # If vars were specified var=${var} then must expand vars in $opt foreach ($opt as $k => $v) { wshExpandVars($pagename,$opt,$v); $opt[$k] = $v; } } if (isset($opt['fmt'])) $fmt = $opt['fmt']; dbg(1, "opt[]=",$opt['']); dbg(1, "opt:", $opt); dbg(1, "args:", $args); if (!$args[0]) { # Let's just go away quietly... dbg(4, "MiscWritePTV: WARNING: No page specified"); return(false); } # Get rid of the [] and the [#] elements... $newopt = array_diff_key($opt, array(''=>0, '#'=>0, 'fmt'=>0)); $newopt = str_replace('\n', "\n", $newopt); dbg(1, "newopt:", $newopt); if (writeptv($pagename, $args[0], array_keys($newopt), $newopt, $fmt)) return(''); else return("ERROR: WritePTV Failed"); }