PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : (PHP) - Suche - JDownloader DLC Creator Script



katze
13.04.2017, 02:47
Also ich weiß das es eine API von JD gibt mit einem extrem veralteten Script das mcrypt verwendet.
Mcrypt macht jedoch ab php 5.5 probleme. Downgraden ist nicht akzeptabel.
Kennt jemand zufällig ein script ohne API? Falls das überhaupt möglich ist :/

Der Log zeigt folgenden Fehler an:


2017/04/13 03:29:17 [error] 15210#0: *187 FastCGI sent in stderr: "PHP message: PHP Warning: mcrypt_generic(): 15 is not a valid MCrypt resource in /home/httpdocs/dlcapi/dlcapi_inc_crypt.php on line 316
PHP message: PHP Warning: mcrypt_generic_deinit(): 15 is not a valid MCrypt resource in /home/httpdocs/dlcapi/dlcapi_inc_crypt.php on line 318
PHP message: PHP Warning: mcrypt_module_close(): 15 is not a valid MCrypt resource in /home/httpdocs/dlcapi/dlcapi_inc_crypt.php on line 319
PHP message: PHP Warning: mcrypt_generic(): 16 is not a valid MCrypt resource in /home/httpdocs/dlcapi/dlcapi_inc_crypt.php on line 324
PHP message: PHP Warning: mcrypt_generic_deinit(): 16 is not a valid MCrypt resource in /home/httpdocs/dlcapi/dlcapi_inc_crypt.php on line 325
PHP message: PHP Warning: mcrypt_module_close(): 16 is not a valid MCrypt resource in /home/httpdocs/dlcapi/dlcapi_inc_crypt.php on line 326
PHP message: PHP Warning: mdecrypt_generic(): 17 is not a valid MCrypt resource in /home/httpdocs/dlcapi/dlcapi_inc_crypt.php on line 334
PHP message: PHP Warning: mcrypt_generic_deinit(): 17 is not a valid MCrypt resource in /home/httpdocs/dlcapi/dlcapi_inc_crypt.php on line 336


Der Sourcecode des Files



<?php
require_once("dlcapi_includes.php");

function debug($str,$force=0){
if(!$force &&!DLC_API_DEBUG)return;
echo "<pre>";
echo htmlentities(print_r($str,true));
echo "</pre>";
}

function dlcInterndataEncode($str){
if($str==NULL)$str="n.A.";
return base64_encode(trim($str));
}
function isDLCValue($arg){
return $arg!=NULL && strlen($arg)>0;
}
function getDLCPasswordString($pwList){
$ret="";
$list=array();
$emtpy=true;
for($i=0; $i<count($pwList);$i++){
if($pwList[$i] && strlen(trim($pwList[$i]))>0){
$empty=false;
array_push($list,'"'.$pwList[$i].'"');
}
}
if($empty||!$list || count($list)==0)return "";
return '{'.implode(', ',$list).'}';
}

function getCCFPasswordString($pwList){
$ret="";
$list=array();
$emtpy=true;
for($i=0; $i<count($pwList);$i++){
if($pwList[$i] && strlen(trim($pwList[$i]))>0){
$empty=false;
array_push($list,$pwList[$i]);
}
}
if($empty||!$list || count($list)==0)return "";
return implode(', ',$list);
}
function createDLCXML($links,$app=NULL,$url=NULL,$version=N ULL){
if(!isDLCValue($app))$app=DLC_CONTENT_GENERATOR_NA ME;
if(!isDLCValue($url))$url=DLC_CONTENT_GENERATOR_UR L;
if(!isDLCValue($version))$version=DLC_API_VERSION;

$header='<dlc>
<header>
<generator>
<app>'.dlcInterndataEncode($app).'</app>
<version>'.dlcInterndataEncode($version).'</version>
<url>'.dlcInterndataEncode($url).'</url>
</generator>
<tribute>
<name>'.dlcInterndataEncode($links["uploader"]).'</name>
</tribute>
<dlcxmlversion>'.dlcInterndataEncode("20_02_2008").'</dlcxmlversion>
</header>';
$content='
<content>';
for($i=0; $i<count($links["packages"]);$i++){
$package=$links["packages"][$i];
$password=getDLCPasswordString($package["passwords"]);
$name=$package["name"];
$comment=$package["comment"];
$category=$package["category"];
$packageLinks=$package["links"];

if(count($package["links"])>0){
$content.='
<package name="'.dlcInterndataEncode($name)."\"";
if(isDLCValue($password))$content.=" passwords=\"".dlcInterndataEncode($password)."\"";
if(isDLCValue($comment))$content.=" comment=\"".dlcInterndataEncode($comment)."\"";
if(isDLCValue($category))$content.=" category=\"".dlcInterndataEncode($category)."\"";
$content.='>';
for( $l=0; $l<count($packageLinks);$l++){
$content.='
<file>
<url>'.dlcInterndataEncode($packageLinks[$l]["url"]).'</url>';
if($packageLinks[$l]["filename"]&&strlen($packageLinks[$l]["filename"])>1){
$content.='
<filename>'.dlcInterndataEncode($packageLinks[$l]["filename"]).'</filename>';
}
if($packageLinks[$l]["size"]&&strlen($packageLinks[$l]["size"])>1){
$content.='
<size>'.dlcInterndataEncode($packageLinks[$l]["size"]).'</size>';
}
$content.='
</file>';
}
$content.='
</package>';
}

}
$content.='
</content>
</dlc>';



return $header.$content;

}
function ccfInternEncode($str){
return utf8_encode($str);
}

function createCCFXML($links){
$del="";
$content='<xml version="1.0" encoding="utf-8">';
$content='';
$content.=$del;
$content.='<CryptLoad>';
$content.=$del;
for($i=0; $i<count($links["packages"]);$i++){
$package=$links["packages"][$i];
$password=getCCFPasswordString($package["passwords"]);
$name=$package["name"];
$comment=($package["comment"]&&strlen($package["comment"])>0)?$package["comment"]:"("."create by DLCAPI".")";
$category=$package["category"];
$packageLinks=$package["links"];
if(count($package["links"])>0){
$content.=' <Package service="" name="'.ccfInternEncode($name).'" url="Directlinks">';
$content.=$del;
$content.=' <Options>';
$content.=$del;
$content.=$comment?' <Kommentar>'.ccfInternEncode($comment).'</Kommentar>':' <Kommentar />';
$content.=$del;
$content.=$password?' <Passwort>'.ccfInternEncode($password).'</Passwort>':' <Passwort />';
$content.=$del;
$content.=' </Options>';
$content.=$del;

for( $l=0; $l<count($packageLinks);$l++){
if(!$packageLinks[$l]["filename"]||strlen(trim($packageLinks[$l]["filename"]))==0){
$info=pathinfo($packageLinks[$l]["url"]);
$packageLinks[$l]["filename"]=$info["basename"];
}
$content.=' <Download Url="'.ccfInternEncode($packageLinks[$l]["url"]).'">';
$content.=$del;
$content.=' <FileSize>'.ccfInternEncode(($packageLinks[$l]["size"]?$packageLinks[$l]["size"]:"0")).'</FileSize>';
$content.=$del;
$content.=' <Url>'.ccfInternEncode($packageLinks[$l]["url"]).'</Url>';
$content.=$del;
$content.=$packageLinks[$l]["filename"]?' <FileName>'.ccfInternEncode($packageLinks[$l]["filename"]).'</FileName>':' <FileName/>';
$content.=$del;
$content.=' </Download>';
$content.=$del;
}
$content.=' </Package>';
$content.=$del;

}
}
$content.='</CryptLoad>';
return $content;

}
function dataToLinklist($links){

$ret=array();
for($i=0; $i<count($links["packages"]);$i++){
$package=$links["packages"][$i];
$packageLinks=$package["links"];

if(count($package["links"])>0){
for( $l=0; $l<count($packageLinks);$l++){
array_push($ret,$packageLinks[$l]["url"]);
}
}
}

return $ret;

}

function getAthCXRedirect($service){
$url=parse_url($service);
$fp = @fsockopen($url["host"], 80);
if(!$fp)return $service;

fputs($fp, "GET ".$url["path"]." HTTP/1.1\r\n");
fputs($fp, "Host: ".$url["host"]."\r\n");
fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
fputs($fp, "Connection: close\r\n\r\n");
while(!feof($fp)) {
$res .= fgets($fp, 1024);

if(strpos($res,"Location:")>0){
$tmp=explode("Location:",$res);
fclose($fp);

return trim($tmp[1]);
break;
}
}

fclose($fp);
return $service;
}

function getBetween($find1, $find2, $string) {
$parse = explode($find1, $string, 2);
$parse = @substr($parse[1], 0, @strpos($parse[1], $find2));
return $parse;
}


function getDLCPair(){
$expires=DLC_KEY_PAIR_EXPIRES_AFTER;

$keyData=@mysql_fetch_array(@mysql_query("SELECT * FROM `".DLC_MYSQL_TABLE."_2`"));

$plainKey=$keyData[1];
$encodedKey=$keyData[2];
$updateTime=$keyData[0];

if(!$plainKey ||!$encodedKey||($updateTime+$expires)<time()){
debug("INFO: Fetch new Key");

srand((float)microtime() * 1000000);
$key= substr(md5(md5(time().rand(0,10000)).rand(0,10000) ),0,16);
$encKey=encryptDLCKey($key);

if($encKey==NULL){
debug("ERROR: Could not get new DLC Pair.");
return array($plainKey,$encodedKey);
}
mysql_query('TRUNCATE TABLE `'.DLC_MYSQL_TABLE.'_2`');

$sql = 'INSERT INTO `'.DLC_MYSQL_TABLE.'_2` (`time`, `plain`, `crypt`) VALUES (\''.time().'\', \''.$encKey[0].'\', \''.$encKey[1].'\');';
mysql_query($sql);


return array(trim($encKey[0]),trim($encKey[1]));
}

return array($plainKey,$encodedKey);


}

function callDLCService($service,$key){
$red=getAthCXRedirect($service);
if($red==NULL){
debug("WARNING:Could not resolve ".$service);
return NULL;
}else{
debug("INFO Resolved ".$service." to ".$red);
}
$ret=postRequest($red,"&data=".$key."&lid=".base64_encode(DLC_CONTENT_GENERATOR_NAME_ID."_".DLC_EMAIL."_".DLCCRYPT_MAINSERVICES."_".DLC_KEY_PAIR_EXPIRES_AFTER)."&version=".DLC_API_VERSION);

if($ret==NULL){
debug("WARNING: Could not get Key from ".$red);
return NULL;
}

if(strpos($ret,"</rc>")==false){
debug("WARNING: service not available ".$red);
return NULL;
}
$key=getBetween("<rc>","</rc>",$ret);
$plain=getBetween("<rcp>","</rcp>",$ret);

if($key==NULL|| strlen($key)!=88){
debug("Key ".$ret);
debug("WARNING: OLD CLIENT OR SERVER VERSION");
return NULL;
}
return array($plain,$key);
}

function getServices(){
$services=array();
if(DLCCRYPT_SERVICES_MIRROR_1)array_push($services ,DLCCRYPT_SERVICES_MIRROR_1);
if(DLCCRYPT_SERVICES_MIRROR_2)array_push($services ,DLCCRYPT_SERVICES_MIRROR_2);
if(DLCCRYPT_SERVICES_MIRROR_3)array_push($services ,DLCCRYPT_SERVICES_MIRROR_3);
if(DLCCRYPT_SERVICES_MIRROR_4)array_push($services ,DLCCRYPT_SERVICES_MIRROR_4);
return $services;
}
function encryptDLCKey($key){
$services=getServices();


$main=DLCCRYPT_MAINSERVICES;
srand((float)microtime() * 1000000);
shuffle($services);
if($main!=NULL){
$dlcKey=callDLCService($main,$key);
}
if($dlcKey!=NULL)return $dlcKey;
foreach ($services as $service) {
$dlcKey=callDLCService($service,$key);
if($dlcKey!=NULL)break;
}
if($dlcKey!=NULL)return $dlcKey;
return NULL;
}

function encryptDLCXML($xml){
$xml=base64_encode($xml);
$pair=getDLCPair();
debug("INFO Current: ");
debug($pair);
if($pair==NULL)return NULL;
$key=$pair[0];
$KEY=$pair[1];
debug("Keylength: ".strlen($key));
$cp = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', 'cbc', '');
@mcrypt_generic_init($cp, $key,$key);

$enc = mcrypt_generic($cp, $xml);

@mcrypt_generic_deinit($cp);
@mcrypt_module_close($cp);


$cp = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', 'cbc', '');
@mcrypt_generic_init($cp, $key,$key);
$enc = mcrypt_generic($cp, $xml);
@mcrypt_generic_deinit($cp);
@mcrypt_module_close($cp);
$enc=base64_encode($enc);
debug("ENC OK");

$cp = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', 'cbc', '');

@mcrypt_generic_init($cp, $key,$key);

$dec = mdecrypt_generic($cp, base64_decode($enc));

mcrypt_generic_deinit($cp);

mcrypt_module_close($cp);
debug("DEC ".base64_decode($dec));
return $enc.$KEY;
}
function createDLC($links,$app=NULL,$url=NULL,$version=NULL ){

$xml=createDLCXML($links,$app,$url,$version);
return encryptDLCXML($xml);
}

function createCCF($links){
if(!defined("CCF_KEY_10"))die("Error: CCF Keyfile is not installed");
$xml=createCCFXML($links);
return encryptCCFXML($xml);
}

function filterString($str){
$ret="";
$allowed = "QWERTZUIOPÜASDFGHJKLÖÄYXCVBNMqwertzuiopasdfghjk lyxcvbnm;:,._-&%(){}#~+ 1234567890<>='\"/";
$char="";
for( $i=0; $i<strlen($str);$i++){
if(!(strpos($allowed,( $char=substr($str,$i,1)))===false)){
$ret.=$char;
}
}
return $ret;
}
function getBetweenAll($find1, $find2, $string){
$elements = array();
while($word = getBetween($find1, $find2, $string)){
array_push($elements, $word);
$string = str_replace($find1.$word.$find2, null, $string);
}
return $elements;
}
function encryptCCFXML($xml){
//$xml=chr(0xEF).chr(0xBB).chr(0xBF).$xml;
$xml=utf8_encode($xml);
$keyList=array(CCF_KEY_10,CCF_KEY_08,CCF_KEY_07);
$ivList=array(CCF_IV_10,CCF_IV_08,CCF_IV_07);
$block=MCRYPT_RIJNDAEL_128;
$mode=MCRYPT_MODE_CBC;
$cp = mcrypt_module_open($block, '', $mode, '');
@mcrypt_generic_init($cp, base16Decode($keyList[0]),base16Decode($ivList[0]));
$enc = mcrypt_generic($cp, $xml);
mcrypt_generic_deinit($cp);
mcrypt_module_close($cp);
return $enc;
}

function string2hex($str)
{
if (trim($str)!="")
{
$hex="";
$length=strlen($str);
for ($i=0; $i<$length; $i++)
{
if ($i>0) $bound="-"; else $bound="";
$hex.=$bound.str_pad(dechex(ord($str[$i])), 2, 0, STR_PAD_LEFT)."(".$str[$i].")";
}
return $hex;
}
}



function decryptCCF($dat){
$keyList=array(CCF_KEY_10,CCF_KEY_08,CCF_KEY_07);
$ivList=array(CCF_IV_10,CCF_IV_08,CCF_IV_07);
$vList=array(CCF_ID_10,CCF_ID_08,CCF_ID_07);

$block=MCRYPT_RIJNDAEL_128;
$mode=MCRYPT_MODE_CBC;
$i=0;
$xml="";
while($i<count($keyList)){

$cp = mcrypt_module_open($block, '', $mode, '');
@mcrypt_generic_init($cp, base16Decode($keyList[$i]),base16Decode($ivList[$i]));
$enc = filterString(mdecrypt_generic($cp, $dat));
mcrypt_generic_deinit($cp);
mcrypt_module_close($cp);
if(strpos(strtolower($enc), "cryptload")>0){
$xml=trim($enc);
break;
}
$i++;
}

$ret=array();
$ret["version"]=$vList[$i];
$ret["linknum"]=0;
$ret["packagenum"]=0;
$ret["password"]="";
$ret["comment"]="";
$ret["uploader"]="CCF2DLC";
$ret["packages"]=array();
$ret["string"]=$xml;
$comment=getBetween('Kommentar>','<',$xml);
$pw=getBetween('Passwort>','<',$xml);
$packages=getBetweenAll("Package","/Package",$xml);
for( $i=0; $i<count($packages);$i++){
$name=getBetween('name="','"',$packages[$i]);
$links=getBetweenAll("<Download","/Download",$packages[$i]);

$ret["packages"][$i]=array();
$ret["packages"][$i]["name"]=$name;
$ret["packages"][$i]["links"]=array();

for($ii=0;$ii<count($links);$ii++){
$link=getBetween("<Url>","</Url>",$links[$ii]);
$name=getBetween("<FileName>","</FileName>",$links[$ii]);
$size=getBetween("<FileSize>","</FileSize>",$links[$ii]);
array_push($ret["packages"][$i]["links"],array("url"=>$link,"filename"=>$name,"size"=>$size));
}
$ret["linknum"]+=count($links);
$ret["packagenum"]++;
$ret["packages"][$i]["passwords"]=array($pw);
$ret["packages"][$i]["comment"]=$comment;
$ret["packages"][$i]["category"]="";
$ret["password"].=$pw." ";
$ret["comment"].=$comment." ";




}
$ret["password"]=trim($ret["password"]);
$ret["comment"]=trim($ret["comment"]);
return $ret;

// debug($xml);


}




function createRSDF($links){
if(!defined('RSDF_KEY'))die("Error: RSDF Keyfile is not installed");
$ret="";
$key = base16Decode(RSDF_KEY);
$iv = base16Decode(RSDF_IV);

$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CFB, '');
mcrypt_generic_init($td, $key, $iv);
$linkList=dataToLinklist($links);
for( $i=0; $i<count($linkList);$i++){
$ret.=base64_encode(mcrypt_generic($td,$linkList[$i]));
$ret.="\r\n";
}

mcrypt_generic_deinit($td);
mcrypt_module_close($td);
$ret= base16Encode($ret);
return $ret;

}
function decryptRSDF($rsdfData){
$key = base16Decode(RSDF_KEY);
$iv = base16Decode(RSDF_IV);
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CFB, '');
mcrypt_generic_init($td, $key, $iv);

$rsdfLinks = base16Decode($rsdfData);

$rsdfLinks = explode("\r\n", $rsdfLinks);
$links = array();
foreach ($rsdfLinks as $link) {
if (strlen(filterString($link)) > 2){
$encoded = base64_decode(filterString($link));

$decoded = mdecrypt_generic($td, $encoded);

if(strlen(trim($decoded))>0){
$links[sizeof($links)] = str_replace("http://anonym.to/?", "", str_replace("CCF: ", "", $decoded));
}
}
}
mcrypt_generic_deinit($td);
mcrypt_module_close($td);

$ret=array(array("packagename"=>"rsdf2dlc","links"=>$links,"password"=>"","comment"=>""));
$ret["linknum"]=count($links);
$ret["packagenum"]=1;
$ret["password"]="";
$ret["comment"]="";
return $ret;
}


function base16Decode($arg){
$ret="";
for($i=0;$i<strlen($arg);$i+=2){
$tmp=substr($arg,$i,2);
$int=hexdec($tmp);
$ret.=chr ($int);
}
return $ret;
}

//Encodiert einen String als Base16

function base16Encode($arg){

$ret="";

for($i=0;$i<strlen($arg);$i++){
$tmp=ord($arg[$i]);
$hex=dechex($tmp);
while(strlen($hex)<2)$hex="0".$hex;
$ret.=$hex;
}

return $ret;



}

function checkRapidshareLinks($links){
$linkstring="";
$urls="";
for( $i=0; $i<count($links);$i++){
$linkstring.=$links[$i]."\r\n";
if(!(strpos(trim($links[$i]),"rapidshare")===false)){
$urls.=$links[$i]."\r\n";
}
}
$erg = PostToHost("rapidshare.com", "/cgi-bin/checkfiles.cgi", "http://rapidshare.com/de/checkfiles.html", "urls=".$urls);
$ret=array();

$i=0;


$ret["ok"]=0;
$ret["bad"]=0;
$ret["total"]=0;
$ret["rapidshare"]=0;
$ret["error"]=0;
if(strpos($erg,"invalid")>0)$ret["error"]++;

foreach(explode("\n", $linkstring) as $link) {
$help = explode("/", trim($link));
if(!strlen(trim($link)))continue;
$ret["total"]++;
if(strpos(trim($link),"rapidshare")===false){
array_push($ret,array($i,2,trim($link)));
}else{
$ret["rapidshare"]++;

if(strpos($erg,$help[4]." (". $help[5].") not found") > 0) {
array_push($ret,array($i,0,trim($link)));
$ret["bad"]++;

}else{
array_push($ret,array($i,1,trim($link)));
$ret["ok"]++;
}
}
$i++;
}

return $ret;

}
function PostToHost($host, $path, $referer, $data_to_send) {
$fp = fsockopen($host, 80);
fputs($fp, "POST $path HTTP/1.1\r\n");
fputs($fp, "Host: $host\r\n");
fputs($fp, "Referer: $referer\r\n");
fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
fputs($fp, "Content-length: ". strlen($data_to_send) ."\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $data_to_send);

while(!feof($fp)) {
$res .= fgets($fp, 128);
}

fclose($fp);
return $res;
}

function urlListToXML($list,$uploader,$packagename,$pw,$com ment,$category){

$dlc=array();
$dlc["uploader"]=$uploader;
$dlc["packages"]=array();
$package=array("name"=>$packagename,"passwords"=>array($pw),"comment"=>$comment,"category"=>$category,"links"=>array());
for( $i=0;$i<count($list);$i++){
$url=pathinfo($list[$i]);
$name=$url["basename"];
$link=array("url"=>$list[$i],"filename"=>$name,"size"=>0);
array_push($package["links"],$link);
}

array_push($dlc["packages"],$package);

return $dlc;

}

function createContainerdataModel($uploadername="unknown"){
$ret=array();
$ret["uploader"]=$uploadername;
$ret["packages"]=array();
return $ret;
}
function addFilePackage(&$model,$packagename="package",$passwords=array(),$comment="no comment",$category="various"){
$package=array();
$package["name"]=$packagename;
$package["passwords"]=$passwords;
$package["comment"]=$comment;
$package["category"]=$category;
$package["links"]=array();
array_push($model["packages"],$package);
return count($model["packages"])-1;
}
function addLink(&$model,$packageID,$url,$filename="",$filesize=0){
$link=array("url"=>$url,"filename"=>$filename,"size"=>$filesize);
array_push($model["packages"][$packageID]["links"],$link);
return $link;

}

debug("DLCAPI v. ".DLC_API_VERSION." loaded. Set \$DLC_API_DEBUG=0; to disabled this messages---");






?>




Die Api hab ich von der JD Seite

http://jdownloader.org/knowledge/wiki/linkprotection/container/dlcapi
JDownloader.org - Official Homepage (http://jdownloader.org/knowledge/wiki/linkprotection/container/dlcapi)

Bin für jeden Tip dankbar :)

Uranjitsu
13.04.2017, 07:03
Das Script müsste lediglich angepasst werden.
Als Alternative zum mcrypt, kannst du openssl_encrypt (http://php.net/manual/en/function.openssl-encrypt.php) nutzen.
Allerdings ist der Algorythmus etwas anders: PHP replace mcrypt with openssl - Stack Overflow (http://stackoverflow.com/questions/9993909/php-replace-mcrypt-with-openssl)
Hier auch noch was: php - Replacing mcrypt_encrypt with openssl_encrypt - Stack Overflow (http://stackoverflow.com/questions/38359165/replacing-mcrypt-encrypt-with-openssl-encrypt)

Man muss schauen, wie man das am besten umsetzt.

Das sieht sogar vielversprechender aus: openssl - php: mcrypt_encrypt to openssl_encrypt, and OPENSSL_ZERO_PADDING problems - Stack Overflow (http://stackoverflow.com/questions/41181905/php-mcrypt-encrypt-to-openssl-encrypt-and-openssl-zero-padding-problems)

katze
13.04.2017, 12:39
Danke für den Tip.
API wurde heute seitens JD gefixed, nun funktioniert sie auch wieder mit mcrypt :)