Subversion Repositories Applications.papyrus

Compare Revisions

No changes between revisions

Ignore whitespace Rev 1693 → Rev 1694

/trunk/client/integrateur_wikini/bibliotheque/hashcash/wp-hashcash-getkey.php
New file
0,0 → 1,149
<?php
 
require_once(realpath(dirname(__FILE__) . '/') . '/secret/wp-hashcash.lib');
 
header("Pragma: no-cache");
header("Expires: 0");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
$expired = array();
 
$function_name = hashcash_random_string(rand(6,18));
$expired [] = $function_name;
 
$js = "function $function_name (){";
 
$type = rand(0, 3) * 0;
switch($type){
/* Addition of n times of field value / n, + modulus:
Time guarantee: 100 iterations or less */
case 0:
$eax = hashcash_random_string(rand(8,10), $expired);
$expired [] = $eax;
$val = hashcash_field_value();
$inc = rand($val / 100, $val - 1);
$n = floor($val / $inc);
$r = $val % $inc;
$js .= "var $eax = $inc; ";
for($i = 0; $i < $n - 1; $i++){
$js .= "$eax += $inc; ";
}
$js .= "$eax += $r; ";
$js .= "return $eax; ";
break;
/* Conversion from binary:
Time guarantee: log(n) iterations or less */
case 1:
$eax = hashcash_random_string(rand(8,10), $expired);
$expired [] = $eax;
$ebx = hashcash_random_string(rand(8,10), $expired);
$expired [] = $ebx;
$ecx = hashcash_random_string(rand(8,10), $expired);
$expired [] = $ecx;
$val = hashcash_field_value();
$binval = strrev(base_convert($val, 10, 2));
$js .= "var $eax = \"$binval\"; ";
$js .= "var $ebx = 0; ";
$js .= "var $ecx = 0; ";
$js .= "while($ecx < $eax.length){ ";
$js .= "if($eax.charAt($ecx) == \"1\") { ";
$js .= "$ebx += Math.pow(2, $ecx); ";
$js .= "} ";
$js .= "$ecx++; ";
$js .= "} ";
$js .= "return $ebx; ";
break;
/* Multiplication of square roots:
Time guarantee: constant time */
case 2:
$val = hashcash_field_value();
$sqrt = floor(sqrt($val));
$r = $val - ($sqrt * $sqrt);
$js .= "return $sqrt * $sqrt + $r; ";
break;
/* Sum of random numbers to the final value:
Time guarantee: log(n) expected value */
case 3:
$val = hashcash_field_value();
$js .= "return ";
 
$i = 0;
while($val > 0){
if($i++ > 0)
$js .= "+";
$temp = rand(1, $val);
$val -= $temp;
$js .= $temp;
}
 
$js .= ";";
break;
}
$js .= "} $function_name ();";
 
// pack bytes
function strToLongs($s) {
$l = array();
// pad $s to some multiple of 4
$s = preg_split('//', $s, -1, PREG_SPLIT_NO_EMPTY);
while(count($s) % 4 != 0){
$s [] = ' ';
}
 
for ($i = 0; $i < ceil(count($s)/4); $i++) {
$l[$i] = ord($s[$i*4]) + (ord($s[$i*4+1]) << 8) + (ord($s[$i*4+2]) << 16) + (ord($s[$i*4+3]) << 24);
}
 
return $l;
}
 
// xor all the bytes with a random key
$key = rand(21474836, 2126008810);
$js = strToLongs($js);
 
for($i = 0; $i < count($js); $i++){
$js[$i] = $js[$i] ^ $key;
}
 
// libs function encapsulation
$libs_name = hashcash_random_string(rand(6,18), $expired);
$expired [] = $libs_name;
 
$libs = "function $libs_name(){";
 
// write bytes to javascript, xor with key
$data_name = hashcash_random_string(rand(6,18), $expired);
$expired [] = $data_name;
 
$libs .= "var $data_name = new Array(" . count($js) . "); ";
for($i = 0; $i < count($js); $i++){
$libs .= $data_name . '[' . $i . '] = ' . $js[$i] . ' ^ ' . $key .'; ';
}
 
// convert bytes back to string
$libs .= " var a = new Array($data_name.length); ";
$libs .= "for (var i=0; i<" . $data_name . ".length; i++) { ";
$libs .= 'a[i] = String.fromCharCode(' . $data_name .'[i] & 0xFF, ' . $data_name . '[i]>>>8 & 0xFF, ';
$libs .= $data_name . '[i]>>>16 & 0xFF, ' . $data_name . '[i]>>>24 & 0xFF); } ';
$libs .= "return eval(a.join('')); ";
 
// call libs function
$libs .= "} $libs_name();";
 
// return code
echo $libs;
?>
/trunk/client/integrateur_wikini/bibliotheque/hashcash/secret/.htaccess
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/client/integrateur_wikini/bibliotheque/hashcash/secret/.htaccess
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/client/integrateur_wikini/bibliotheque/hashcash/secret/wp-hashcash.lib
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/client/integrateur_wikini/bibliotheque/hashcash/secret/wp-hashcash.lib
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/client/integrateur_wikini/bibliotheque/hashcash/secret/wp-hashcash.key
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/client/integrateur_wikini/bibliotheque/hashcash/secret/wp-hashcash.key
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/client/integrateur_wikini/bibliotheque/hashcash/wp-hashcash-js.php
New file
0,0 → 1,94
<?php
ob_start("ob_gzhandler");
require_once(realpath(dirname(__FILE__) . '/') . '/secret/wp-hashcash.lib');
$field_id = hashcash_random_string(rand(6,18));
$fn_enable_name = hashcash_random_string(rand(6,18));
?>
 
addLoadEvent(<?php echo $fn_enable_name; ?>);
 
function createHiddenField(){
var inp = document.createElement('input');
inp.setAttribute('type', 'hidden');
inp.setAttribute('id', '<?php echo $field_id; ?>');
inp.setAttribute('name', 'hashcash_value');
inp.setAttribute('value', '-1');
var e = document.getElementsByName('<?php echo HASHCASH_FORM_NAME; ?>');
e[0].appendChild(inp);
}
 
function addVerbage(){
var e = document.getElementById('<?php echo HASHCASH_FORM_ID; ?>');
var p = document.createElement('p');
p.innerHTML = '<?php echo str_replace("'", "\'", hashcash_verbage()); ?>';
e.appendChild(p);
}
 
function <?php echo $fn_enable_name;?>(){
createHiddenField();
addVerbage();
loadHashCashKey('<?php
echo $_GET['siteurl']; ?>/client/integrateur_wikini/bibliotheque/hashcash/wp-hashcash-getkey.php', '<?php echo $field_id; ?>');
}
 
function loadHashCashKey(fragment_url, e_id) {
var xmlhttp=createXMLHttp();
var element = document.getElementById(e_id);
 
xmlhttp.open("GET", fragment_url, true);
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
element.value = eval(xmlhttp.responseText);
}
}
 
xmlhttp.send(null);
}
 
function getElementsByClass(searchClass,node,tag) {
var classElements = new Array();
if ( node == null )
node = document;
if ( tag == null )
tag = '*';
var els = node.getElementsByTagName(tag);
var elsLen = els.length;
var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
for (i = 0, j = 0; i < elsLen; i++) {
if ( pattern.test(els[i].className) ) {
classElements[j] = els[i];
j++;
}
}
return classElements;
}
 
function createXMLHttp() {
if (typeof XMLHttpRequest != "undefined")
return new XMLHttpRequest();
var xhrVersion = [ "MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp","Microsoft.XMLHttp" ];
for (var i = 0; i < xhrVersion.length; i++) {
try {
var xhrObj = new ActiveXObject(xhrVersion[i]);
return xhrObj;
} catch (e) { }
}
return null;
}
 
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
func();
oldonload();
}
}
}
/trunk/client/integrateur_wikini/bibliotheque/hashcash/wp-hashcash-fr_FR.po
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/client/integrateur_wikini/bibliotheque/hashcash/wp-hashcash-fr_FR.po
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/client/integrateur_wikini/bibliotheque/iw_integrateur.fonct.php
21,7 → 21,7
// | along with Foobar; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: iw_integrateur.fonct.php,v 1.19 2006-08-29 20:22:41 ddelon Exp $
// CVS : $Id: iw_integrateur.fonct.php,v 1.20 2007-11-19 09:54:20 ddelon Exp $
/**
* Fonctions de l'integrateur de page Wikini
*
33,7 → 33,7
//Autres auteurs :
*@author Aucun
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.19 $ $Date: 2006-08-29 20:22:41 $
*@version $Revision: 1.20 $ $Date: 2007-11-19 09:54:20 $
*
// +------------------------------------------------------------------------------------------------------+
// | ENTETE du PROGRAMME |
205,6 → 205,13
if ($_POST) {
if ($_POST["submit"] == "Sauver") {
require_once(ADWI_CHEMIN_BIBLIOTHEQUE.'/hashcash/secret/wp-hashcash.lib');
if($_POST["hashcash_value"] != hashcash_field_value()) {
$this->SetMessage("Cette page n\'a pas &eacute;t&eacute; enregistr&eacute;e car ce wiki pense que vous etes un robot !");
$this->Redirect($this->href());
}
// check for overwriting
if ($this->page) {
if ($this->page["id"] != $_POST["previous"]) {
263,6 → 270,42
}
else
{
// Edition
require_once(ADWI_CHEMIN_BIBLIOTHEQUE.'/hashcash/secret/wp-hashcash.lib');
// UPDATE RANDOM SECRET
$curr = @file_get_contents(HASHCASH_SECRET_FILE);
if(empty($curr) || (time() - @filemtime(HASHCASH_SECRET_FILE)) > HASHCASH_REFRESH){
// update our secret
$fp = fopen(HASHCASH_SECRET_FILE, 'w');
if(@flock($fp, LOCK_EX)){
fwrite($fp, rand(21474836, 2126008810));
@flock($fp, LOCK_UN);
}
fclose($fp);
}
if (isset($GLOBALS['_GEN_commun']['url_sauvegarde']) && ($GLOBALS['_GEN_commun']['url_sauvegarde']!='')) {
$a=parse_url(str_replace('&amp;', '&', $GLOBALS['_GEN_commun']['url_sauvegarde']->getUrl()));
}
 
else {
$a = parse_url($this->config['base_url']);
}
$siteurl = ($a['scheme'].'://'.$a['host'].dirname($a['path']));
$ChampsHashcash =
'<link rel="powered" title="Elliott Back\'s Antispam" href="http://elliottback.com" />'.
'<script type="text/javascript" src="' . $siteurl . '/client/integrateur_wikini/bibliotheque/hashcash/wp-hashcash-js.php?siteurl='.$siteurl.'"></script>';
$ACbuttonsBar='';
require_once(IW_CHEMIN_BIBLIO_ACEDITOR."ACeditor.buttonsBar.php");
272,7 → 315,7
"<textarea onkeydown=\"fKeyDown()\" name=\"body\" cols=\"60\" rows=\"40\" wrap=\"soft\" class=\"edit\">\n".
htmlspecialchars($body).
"\n</textarea><br />\n".'<div class="boutons_wiki">'.
($this->config["preview_before_save"] ? "" : "<input name=\"submit\" type=\"submit\" value=\"Sauver\" accesskey=\"s\" />\n").
($this->config["preview_before_save"] ? "" : $ChampsHashcash."<input name=\"submit\" type=\"submit\" value=\"Sauver\" accesskey=\"s\" />\n").
"<input name=\"submit\" type=\"submit\" value=\"Aper&ccedil;u\" accesskey=\"p\" />\n".
"<input type=\"button\" value=\"Annulation\" onclick=\"document.location='".$this->href("")."';\" /></div>\n".
$this->FormClose();