/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 été enregistré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('&', '&', $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çu\" accesskey=\"p\" />\n". |
"<input type=\"button\" value=\"Annulation\" onclick=\"document.location='".$this->href("")."';\" /></div>\n". |
$this->FormClose(); |
/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 |