westdc-zf1/tools/proftp.php

73 lines
3.0 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
$link = pg_connect("dbname=metadata user=gis password=gispassword host=210.77.68.241");
if (!$link)
{
die("Error in connection: " . pg_last_error());
}
//安全检查只接受来自westdc.westgis.ac.cn的访问
if(@$_SERVER['HTTP_CLIENT_IP']){
$onlineip=$_SERVER['HTTP_CLIENT_IP'];
}elseif(@$_SERVER['HTTP_X_FORWARDED_FOR']){
$onlineip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}else{
$onlineip=$_SERVER['REMOTE_ADDR'];
}
if ($onlineip!='210.77.68.241' && $onlineip!='2001:cc0:f006::9')
die("error! You are not permitted to visit this page.".$onlineip);
//文件生成
$onlineappid=(int)@$_GET['onlineappid'];
$offlineappid=(int)@$_GET['offlineappid'];
if (!($onlineappid>0 || $offlineappid>0))
{
die("Error in parameter.");
}
$sql="select dataorder.userid,dataset.path from dataorder left join dataset on dataorder.uuid=dataset.uuid
where dataorder.status in (0,5) and dataset.host='ftp2.westgis.ac.cn' and dataset.path<>'' and dataorder.selection is null";
if ($onlineappid>0)
$sql.=" and dataorder.onlineappid=".$onlineappid;
else if ($offlineappid>0)
$sql.=" and dataorder.offlineappid=".$offlineappid;
$result = pg_query($link, $sql);
$numrows = pg_num_rows($result);
// Loop on rows in the result set.
$content='';
for($ri = 0; $ri < $numrows; $ri++)
{
$row = pg_fetch_array($result, $ri);
$content.='# path: '.$row['path']."\n";
$content.='mkdir -p "/home/ftp/westdc_'.$row['userid'].'/'.preg_replace('/^.+[\\\\\\/]/', '', rtrim($row['path'],'/')).'"'."\n";
$content.='mount --bind "'.$row['path'].'" "/home/ftp/westdc_'.$row['userid'].'/'.preg_replace('/^.+[\\\\\\/]/', '', rtrim($row['path'],'/')).'"'."\n";
}
$sql="select distinct dataorder.userid,dataset.path,dataservice.uuid from dataorder left join dataset on dataorder.uuid=dataset.uuid left join dataservice on dataorder.uuid=dataservice.uuid
where dataorder.status in (0,5) and dataset.host='ftp2.westgis.ac.cn' and dataset.path<>'' and dataorder.selection is not null and dataservice.service_type in (1,2)";
if ($onlineappid>0)
$sql.=" and dataorder.onlineappid=".$onlineappid;
else if ($offlineappid>0)
$sql.=" and dataorder.offlineappid=".$offlineappid;
$result = pg_query($link, $sql);
$numrows = pg_num_rows($result);
$basepath='/disk1/WestDC/wsndata/';
for($ri = 0; $ri < $numrows; $ri++)
{
$row = pg_fetch_array($result, $ri);
$content.='# path: '.$row['path']."\n";
$content.='mkdir -p "/home/ftp/westdc_'.$row['userid'].'/wsn_'.$row['userid'].'"'."\n";
$content.='mount --bind "'.$basepath.'wsn_'.$row['userid'].'" "/home/ftp/westdc_'.$row['userid'].'/wsn_'.$row['userid'].'"'."\n";
}
$filename='./proftp-user.sh';
if (!empty($content))
if (!file_put_contents($filename, $content, LOCK_EX))
{
sleep(1);
if (!file_put_contents($filename, $content, LOCK_EX))
{
sleep(1);
if (!file_put_contents($filename, $content, LOCK_EX))
die("error in write proftp-user.sh");
}
}
pg_free_result($result);
pg_close($link);
?>