🎉 Added files

This commit is contained in:
2025-01-26 18:33:45 +01:00
commit 40149d87b3
301 changed files with 81911 additions and 0 deletions

33
rayphp/r3s/README Normal file
View File

@ -0,0 +1,33 @@
R3S: Raydium Server Side Scripts
--------------------------------
With this files and a HTTP/PHP server, you can build very
quickly a data repository server, allowing clients to get new files
(and refresh old ones) from this server.
Files are all stored in the same directory, since
the client will rebuilt directory structure by itself.
R3S support uploading, but you can also use a FTP server since Raydium
client applications allows this.
With R3S, FTP is slower than HTTP since no compression is used (R3S protocol
is using gzip with HTTP) but is the only correct solution with big files, since
most HTTP servers and proxies limits requests size.
See configuration file, and place data in $data_dir directory.
Please, note that Apache (or any other HTTP server) must have write rights
in $data_dir directory:
# chgrp apache files/
# chown g+w files/
(You may have to change "apache" to "httpd", "www-data" or something else).
For security reasons (uploaded PHP scripts), you should deny direct access
to the "file/" directory with Apache:
<Directory /home/raydium/repository/files>
Deny from all
</Directory>
You can create a .welcome message (one line only) in this directory.
A .lock file in this directory will lock all upload support for this repository.

16
rayphp/r3s/config.inc.php Normal file
View File

@ -0,0 +1,16 @@
<?
// Raydium Server Side repository Scripts (R3S) configuration file.
// files directory:
$data_dir="files/";
# Upload params:
# Note: You can also use an FTP server.
$upload_accept=true;
$upload["user"]="anonymous";
$upload["pass"]="nopass";
// Minimum delay (in seconds) for each upload request:
$brute_force_delay=1;
?>

270
rayphp/r3s/index.php Normal file
View File

@ -0,0 +1,270 @@
<?
// Raydium Server Side repository script
// name this file "index.php", and place data in $data_dir directory.
require("config.inc.php");
if(file_exists(".lock") && $upload_accept)
$upload_accept=false;
function GorP($var)
{
global $_GET,$_POST;
if(isset($_POST[$var]))
return $_POST[$var];
if(isset($_GET[$var]))
return $_GET[$var];
return "";
}
function _opendir($directory)
{
$list=array();
$dir=@opendir($directory);
$i=0;
while($entry=@readdir($dir))
{
$key=filemtime($directory.'/'.$entry);
$key.="-$i";
$list[$key]=$entry;
$i++;
}
@closedir($dir);
krsort($list);
return $list;
}
function _readdir(&$list)
{
$ret=current($list);
next($list);
return $ret;
}
function decompress_file($gz,$final)
{
$fp=gzopen($gz,"r");
if(!$fp) die("FAILED: Cannot open gz file");
while(!gzeof($fp))
{
$data.=gzread($fp,128);
}
gzclose($fp);
$fp=fopen($final,"wb");
if(!$fp)
{
echo "FAILED: Cannot create file '$final' on this server";
return false;
}
fwrite($fp,$data);
fclose($fp);
unlink($gz);
return true;
}
function head()
{
if(file_exists(".welcome"))
{
$str=file(".welcome");
$str=$str[0];
}
else
$str="R3S <a href=\"http://raydium.org/\">Raydium</a> data repository";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Raydium 3D Game Engine</title>
<style type="text/css">
<!--BODY {color: #424242; font-family: Verdana,Arial,Helvetica,sans-serif,monospace; margin: 0; padding: 0; }
A.blk {color: black;}
A {color: #F19137;}
A:HOVER {color: #227CBF;}
.topbanner {background-color: #FFCC00; border: 0; border-bottom: 1px dashed #5E5E5E; text-align: right;margin: 0; height: 15px; font-size: x-small; padding: 0;}
.topbanner A {color: Black;}.topbanner A:HOVER {color: #F19137; text-decoration: none;}
.topbanner UL {list-style: none; border: 0; margin: 0;}
.topbanner LI {display: inline; margin: 3px;}
#contenu {margin: 0 10% 0 170px; position: absolute; left:5px; top: 45px; width: 800px;}
.publi_bloc { border-bottom: 2px dotted #FFCC00; margin-bottom: 20px;}
.publi_head {border-bottom: 1px dashed #A9A9A9; border-left: 10px solid #FFCC00;}
.publi_head h2 { margin: 0px; padding-left: 10px;}
.publi_head h2 a { color: #424242; text-decoration: none; }
.publi_head h2 a:hover { color: #727272; text-decoration: none; }
.publi_info {text-align: right; color: #A9A9A9;}
.publi_info a {color: #A9A9A9; text-decoration: none;}
.publi_info a:hover {color: #696969; text-decoration: none;}
.publi_corps{ padding: 10px;}
IMG {border: 1px solid; margin: 5px;}
.tables {background: #f3f3f3;border-collapse:collapse;margin-left: auto; margin-right: auto;}
.tables TD {border-style: solid; border-color:black; border-width:1px; text-align: center; padding-left: 5px; padding-right: 5px;}
.redfont { color: #dd0000;}
.greenfont { color: #00dd00;}
.noborder { border : 0;}
.border_one { border: 1px dashed #ACACAC; background-color: #EEEEEE; }-->
</style>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
</head>
<body>
<div class="topbanner">
<ul>
<li>Raydium Server Side Scripts (R3S) - Data Repository for Raydium 3D Game Engine - <a href="http://raydium.org/">http://raydium.org</a></li>
</ul>
</div>
<div id="contenu">
<div class="contenu">
<div class="publi_bloc">
<div class="publi_head">
<strong>&nbsp;R3S message</strong> &gt; home<h2><?=$str;?></h2>
</div>
<div class="publi_corps">
<?
}
function tail()
{
echo "</div></div></div></div></body></html>";
}
function home()
{
global $data_dir,$upload_accept;
head();
echo "<h3>Available files:</h3>\n";
echo "<table border=0 cellpadding=2>";
if ($dh = _opendir($data_dir))
{
while (($file = _readdir($dh)) !== false)
{
if($file[0]==".") continue;
$size=filesize($data_dir.$file);
$total_size+=$size;
echo "<tr><td><b><a href=\"?type=getBin&file=$file\">$file</a></b></td><td align=right>$size byte(s)</td><td>&nbsp;</td><td>".date("Y-m-d H:i:s",filemtime($data_dir.$file))."</td></tr>";
}
}
echo "<tr><td>&nbsp;</td></tr>";
echo "<tr><td><b>Total size</b></td><td align=right>".sprintf("%.2f",$total_size/1024/1024)." MB</td></tr";
echo "</table><br>";
echo "You can add this URL in your <i>rayphp/repositories.*</i> files.<br>";
if($upload_accept) $up="supports"; else $up="does not supports";
echo "This server $up data uploading.<br><br>";
tail();
}
function main($file,$type,$username,$password,$data)
{
global $data_dir,$upload,$upload_accept,$brute_force_delay;
global $HTTP_POST_FILES;
if($type=="")
{
home();
return;
}
$file=rawurldecode($file);
$file=str_replace("/","",$file);
$file=$data_dir.$file;
if($type=="listRepos")
{
if($file==$data_dir)
$file="$data_dir/*";
foreach((array)glob($file) as $file)
{
if($file[0]!='.')
echo trim(str_replace("/","",substr($file,strlen($data_dir))))."\n";
}
return;
}
// For all next operations, consider $file as mandatory ...
if($file=="") return;
if($type=="putGzip")
{
if(!$upload_accept)
{
echo "FAILED: Upload is not activated on this server !";
return;
}
sleep($brute_force_delay);
$username=rawurldecode($username);
$password=rawurldecode($password);
if($username!=$upload["user"] || $password!=$upload["pass"])
{
echo "FAILED: invalid user/pass ($username/$password)";
return;
}
$filegz=$file.".tmp.gz";
if(file_exists($HTTP_POST_FILES["data"]["tmp_name"]))
{
move_uploaded_file($HTTP_POST_FILES["data"]["tmp_name"], $filegz);
}
else die("FAILED: Cannot find data in this request");
if(!decompress_file($filegz,$file)) return;
chmod($file,0664);
echo "+ SUCCESS: file uploaded";
return;
}
if(!file_exists($file)) die("FAILED: file not found");
if($type=="getGzip")
{
$fp=fopen($file,"rb");
if(!$fp) die("FAILED: file not found");
$data=fread($fp,filesize($file));
fclose($fp);
$tmp=tempnam("./","delme");
$fp=gzopen($tmp,"wb");
if(!$fp) return;
gzwrite($fp,$data);
gzclose($fp);
//$dat=gzencode($data);
//echo $dat;
//echo date("s");
readfile($tmp);
unlink($tmp);
//echo $tmp;
}
if($type=="getDate")
{
echo filemtime($file);
}
if($type=="getBin")
{
header('Content-type: application/octet-stream');
header('Content-Transfer-Encoding: Binary');
header('Content-length: '.filesize($file));
header('Content-Disposition: attachment; filename="'.basename($file).'"');
readfile($file);
}
} // end main()
main(GorP("file"),GorP("type"),GorP("username"),GorP("password"),GorP("data"));
?>