/*
%#=====================================================================
%#
%# Publick Dock - FTP Version
%#
%#-------+------------+-----------+------------------------------------
%# rev | date | author | comment
%#-------+------------+-----------+------------------------------------
%# 00.00 | 2002.11.01 | H.Umemura | Debug
%#-------+------------+-----------+------------------------------------
%# 1.14 | 2008.06.21 | K.Teramoto| Debug
%#-------+------------+-----------+------------------------------------
%# | | |
%#-------+------------+-----------+------------------------------------
%#
%# (C) 2002-2008 Ray Group McRay Corporation.
%# All rights reserved.
%#
%#-------------------------------------------------------------------*/
/* mcray settings */
define("FTPROOT","/DATA");
define("FTPDISK","/dev/sdb1");
define("FTPGROUP","50");
define("FTPHOST","pd.mcray.co.jp");
define("WEBHOST","pd.mcray.co.jp");
define("WEBPRES","/PublicPresentation");
define("VALIDMX","ray.co.jp,digisite.co.jp,mcray.co.jp");
define("VALIDIP","122.216.194.170,210.150.40.5,192.168.111.*,192.168.114.*,192.168.124.*,192.168.104.*,192.168.200.*");
define("ROOTMAIL","root@mcray.co.jp");
define("LOGIN_FALSE","false");
define("MD5CRYPT","false");
/* */
/* digisite settings
define("FTPROOT","/data");
define("FTPDISK","/dev/hdb");
define("FTPGROUP","50");
define("FTPHOST","ftp.digisite.co.jp");
define("WEBHOST","pd.digisite.co.jp");
define("WEBPRES","/PublicPresentation");
define("VALIDMX","ray.co.jp,digisite.co.jp,mcray.co.jp");
define("VALIDIP","192.168.0.0");
//define("VALIDIP","222.6.41.68");
define("ROOTMAIL","root@digisite.co.jp");
define("LOGIN_FALSE","true");
define("MD5CRYPT","false");
*/
define("DEBUG" , "false");
#define("DEBUG" , "true");
define("SSH_USER","root");
define("SSH_HOST","localhost");
#define("SSH_HOST","ftpserver.mcray.co.jp");
define ("COPYRIGHT","©2008 McRay Corporation. All rights reserved.");
global $errorMsg ;
global $presenMode ;
global $cmstr;
function db_connect() {
$db_hostname = "localhost";
$db_name = "makeftp";
$db_user = "root";
$db_passwd = "23ken74";
$link_id = mysql_connect($db_hostname, $db_user, $db_passwd) or die("Could not connect Database");
$sdb = mysql_select_db($db_name, $link_id) or die("The Database can not be used\n");
if($sdb == FALSE) return FALSE;
return TRUE;
}
function date_diff(DateTime $d1, DateTime $d2){
$s1 = date_format($d1,'U');
$s2 = date_format($d2,'U');
return $s1 - $s2;
}
function printTitle($type=1){
global $errorMsg ;
switch($type){
case 0 :
$title='
';
break ;
default :
$title='
';
if(strlen($errorMsg)>0){
$title .= " | " ;
$title .= " " ;
$title .= " " ;
$title .= $errorMsg ;
$title .= " | " ;
}
$title.='
| |
' ;
break ;
}
print($title) ;
}
function printMenu($type=1,$ftpuserdata=""){
global $presenMode ;
if(!$presenMode){
$menu = '
' ;
if($type==2){
$menu .= '
| FTPアカウント情報 |
| ユーザー名 |
| '.$ftpuserdata[ftpname].' |
| パスワード |
| '.$ftpuserdata[pw].' |
| Web公開 |
| '.getopenweb($ftpuserdata[openweb]).' |
| 作成日 |
| '.getdate_h($ftpuserdata[ctime]).' |
| 自動削除日 |
| '.getdate_h($ftpuserdata[expire]).' |
';
}
}else{
$menu = '
' ;
}
print ($menu) ;
}
function getpasswd($username)
{
global $presenMode ;
if($username==""){
return "" ;
}
if(!$presenMode){
$sql = "select pw from user where usermail='".$username."'" ;
$result = mysql_query($sql) ;
$row = mysql_fetch_row($result);
return ($row[0]);
}else{
$sql = "select pw,openweb from ftpuser where ftpname='".$username."'" ;
$result = mysql_query($sql) ;
$row = mysql_fetch_row($result);
if($row[1]=="true"){
return ($row[0]);
}else{
return false ;
}
}
}
function getFtpUserList($mailaddr){
$sql = "select * from ftpuser where adminuser='".$mailaddr."' order by ctime" ;
$result = mysql_query($sql) ;
$index = 0 ;
while ($row = mysql_fetch_array($result)) {
$ftps[$index] = $row ;
$tmp = shell_exec('du -ks '.FTPROOT.'/'.$ftps[$index][ftpname]);
unset($regs);
ereg("^[0-9]+",$tmp,$regs) ;
$ftps[$index][volume] = size_h((int)$regs[0] * 1024) ;
$index++ ;
}
mysql_free_result($result);
return $ftps ;
}
function getFtpUser($ftp){
$sql = "select * from ftpuser where ftpname='".$ftp."'" ;
$result = mysql_query($sql) ;
$index = 0 ;
$ftp = mysql_fetch_array($result);
$tmp = shell_exec('du -ks '.FTPROOT.'/'.$ftp[ftpname]);
unset($regs);
ereg("^[0-9]+",$tmp,$regs) ;
$ftp[volume] = size_h((int)$regs[0] * 1024) ;
mysql_free_result($result);
return $ftp ;
}
function size_h($size){
$tmp =(float)$size;
if($tmp>1024){
$size_h=$tmp/1024;
$unit="KByte";
}
if($tmp>(1024*1024)){
$size_h=$tmp/(1024*1024);
$unit="MByte";
}
if($tmp>(1024*1024*1204)){
$size_h=$tmp/(1024*1024*1024);
$unit="GByte";
}
return round($size_h,1)." ".$unit ;
}
function desCrypt($str)
{
$chrTbl = array(
'a','b','c','d','e','f','g','h','i','j','k','l',
'm','n','o','p','q','r','s','t','u','v','w','x',
'y','z','A','B','C','D','E','F','G','H','I','J',
'K','L','M','N','O','P','Q','R','S','T','U','V',
'W','X','Y','Z','0','1','2','3','4','5','6','7',
'8','9'
);
list($usec, $sec) = explode(' ', microtime());
$seed=(float) $sec + ((float) $usec * 100000);
mt_srand($seed);
if(MD5CRYPT=="true"){
$salt="$1$" ;
for($i=0;$i<12;++$i){
$i1 = mt_rand(0,count($chrTbl)-1);
$salt.=$chrTbl[$i1];
}
}else{
$i1 = mt_rand(0,count($chrTbl)-1);
$i2 = mt_rand(0,count($chrTbl)-1);
$salt = $chrTbl[$i1].$chrTbl[$i2] ;
}
return crypt($str,$salt) ;
}
function insertUser(&$userdata)
{
$sql = "insert into user set " ;
$sql .= "usermail='".$userdata[usermail]."'," ;
$sql .= "pw='".$userdata[pw]."' " ;
$result = mysql_query($sql) ;
return mysql_errno() ;
}
function insertFtpuser(&$userdata)
{
$userdata[ctime]=date("Y/m/d");
$ExDate = date_create();
switch($userdata[expire]){
case "1w" : $term ="+1 week" ; break ;
case "2w" : $term ="+2 week" ; break ;
case "3w" : $term ="+3 week" ; break ;
case "1m" : $term ="+1 month" ; break ;
case "2m" : $term ="+2 month" ; break ;
case "3m" : $term ="+3 month" ; break ;
case "4m" : $term ="+4 month" ; break ;
case "5m" : $term ="+5 month" ; break ;
case "6m" : $term ="+6 month" ; break ;
case "1y" : $term ="+1 year" ; break ;
}
date_modify($ExDate,$term);
$userdata[expire] = date_format($ExDate,"Y/m/d");
$sql = "insert into ftpuser set " ;
$sql .= "adminuser='".$userdata[adminuser]."'," ;
$sql .= "ftpname='".$userdata[ftpname]."'," ;
$sql .= "pw='".$userdata[pw]."'," ;
$sql .= "openweb='".$userdata[openweb]."'," ;
$sql .= "ctime='".$userdata[ctime]."'," ;
$sql .= "expire='".$userdata[expire]."' " ;
$result = mysql_query($sql) ;
return mysql_errno() ;
}
function updateFtpuser(&$userdata)
{
$ExDate = date_create($userdata['expire']);
$ToDay = date_create();
$term ="";
if(date_diff($ExDate,$ToDay) < 0 ) {
$ExDate = $ToDay;
$term = "+1 day";
}
switch($userdata[plusexpire]){
case "0w" : break ;
case "1w" : $term ="+1 week" ; break ;
case "2w" : $term ="+2 week" ; break ;
case "3w" : $term ="+3 week" ; break ;
case "1m" : $term ="+1 month" ; break ;
case "2m" : $term ="+2 month" ; break ;
case "3m" : $term ="+3 month" ; break ;
case "4m" : $term ="+4 month" ; break ;
case "5m" : $term ="+5 month" ; break ;
case "6m" : $term ="+6 month" ; break ;
case "1y" : $term ="+1 year" ; break ;
}
date_modify($ExDate,$term);
$userdata[expire] = date_format($ExDate,"Y/m/d");
$sql = "update ftpuser set " ;
$sql .= "adminuser='".$userdata[adminuser]."'," ;
$sql .= "pw='".$userdata[pw]."'," ;
$sql .= "openweb='".$userdata[openweb]."'," ;
$sql .= "ctime='".$userdata[ctime]."'," ;
$sql .= "expire='".$userdata[expire]."' " ;
$sql .= "where ftpname='".$userdata[ftpname]."' " ;
$result = mysql_query($sql) ;
return mysql_errno() ;
}
function deleteFtpuser(&$userdata)
{
$sql = "delete from ftpuser where " ;
$sql .= "adminuser='".$userdata[adminuser]."' and " ;
$sql .= "ftpname='".$userdata[ftpname]."' " ;
$result = mysql_query($sql) ;
return mysql_errno() ;
}
function printopenweb($openweb){
if($openweb=="true"){
print("する");
}else{
print("しない");
}
}
function getopenweb($openweb){
if($openweb=="true"){
return("する");
}else{
return("しない");
}
}
function printdate_h($date){
print(getdate_h($date));
return;
}
function getdate_h($date){
$DateW = date_create($date);
$ymd = date_format($DateW,'Y/m/d');
//str_replace('-','/',$ymd[0]);
return(" ".$ymd." ");
}
function array_csort() {
$args = func_get_args();
$marray = array_shift($args);
$msortline = "return(array_multisort(";
foreach ($args as $arg) {
$i++;
if (is_string($arg)) {
foreach ($marray as $row) {
$sortarr[$i][] = $row[$arg];
}
} else {
$sortarr[$i] = $arg;
}
$msortline .= "\$sortarr[".$i."],";
}
$msortline .= "\$marray));";
eval($msortline);
return $marray;
}
function disk_space($dev){
$out = trim(shell_exec ('df -k | grep "'.$dev.'"')) ;
ereg("^([^ ]+) +([^ ]+) +([^ ]+) +([^ ]+) +([^ ]+) +",$out,$tmp) ;
return (string)((float)$tmp[4] * 1024.0) ;
}
// start
if(ereg("^".escapeshellcmd(WEBPRES),$_SERVER[REQUEST_URI])){
$presenMode = true ;
}else{
$presenMode = false ;
}
session_start();
if (DEBUG=="true") {
print($_SERVER[REQUEST_URI]);
}
if(!$presenMode){
$page = "login" ;
}else{
$page = "prlogin" ;
}
if(!db_connect()) {
print ("Cannot connect!");
}
else {
if(DEBUG=="true") print("Connect.");
}
if(DEBUG=="true") {
print " $_SESSION[usermail] $_SESSION[pw] ";
print getpasswd($_SESSION[usermail]);
print_r(debug_backtrace());
}
if(isset($_SESSION[usermail])&&isset($_SESSION[pw])&&getpasswd($_SESSION[usermail])==$_SESSION[pw]){
if(DEBUG=="true"){
print ("--Password OK!-- imagename= $_GET[imagename]");
print ("-dl:$_GET[download] user:$_GET[user] mc:$_GET[mc]");
}
if(isset($_GET[imagename])){
set_time_limit(0);
$imagename = $_GET[imagename] ;
mb_http_output("pass");
if(isset($_SESSION[open_images]["$imagename"])){
if(isset($_GET[thum])&&$thum=exif_thumbnail($_SESSION[open_images]["$imagename"])){
header ("Content-Length: ".strlen($thum));
echo($thum);
exit;
}
mb_http_output("pass");
$filesize = filesize($_SESSION[open_images]["$imagename"]);
header ("Content-Length: $filesize");
readfile($_SESSION[open_images]["$imagename"]);
exit;
}else{
mb_http_output("pass");
readfile("images/nazo.gif");
exit;
}
}elseif(isset($_GET[download])&&isset($_GET[user])&&isset($_GET[mc])){
set_time_limit(0);
$file_location = FTPROOT."/".$_GET[user]."/".$_GET[download] ;
$file_location = mb_convert_encoding($file_location,$_GET[mc],"auto");
$fileinfo=pathinfo($file_location);
$c_name = $fileinfo[basename] ;
$c_name = mb_convert_encoding($c_name,"SJIS","auto");
$filesize = filesize($file_location);
header ("Accept-Ranges: none");
header ("Content-Length: $filesize");
header ("Content-Type: application/octet-stream");
header ("Content-Disposition: attachment;filename=".$c_name.";");
mb_http_output("pass");
$fp=fopen("$file_location","rb");
@fpassthru($fp);
fclose($fp);
exit;
}
}
$remember[usermail]=$_COOKIE[remember1] ;
$remember[pw] =$_COOKIE[remember2] ;
$validip=explode(",",VALIDIP);
$invalid_flag = true ;
for($i=0;$i");
print_r(debug_backtrace());
}
if($presenMode){
if(!isset($_POST[fromwait])){
$scr_mode="wait" ;
}else{
if(DEBUG=="true") {
header("Connection: Keep-alive");
print("src_mode= $src_mode");
print("ob_start called\n");
}
ob_start();
switch($scr_mode){
case "prlogin" :
case "browse" :
case "logout" :
break ;
default :
unset($_SESSION);
unset($_POST);
$scr_mode="";
break ;
}
}
}else{
if($invalid_flag){
$scr_mode="global" ;
}else{
if(!isset($_POST[fromwait])){
$scr_mode="wait" ;
}else{
if(DEBUG=="true") {
print("ob_start called");
header("Connection: Keep-alive");
}
ob_start();
}
}
}
switch($scr_mode){
case "prlogin":
if($presenMode){
$loginError="
";
if($_POST[usermail]!=""){
$_SESSION[usermail]=$_POST[usermail] ;
}
if($_POST[pw]!=""){
$_SESSION[pw] =$_POST[pw] ;
}
if(isset($_SESSION[usermail])&&isset($_SESSION[pw])&&getpasswd($_SESSION[usermail])==$_SESSION[pw]){
$page="wait" ;
$_POST[mode]="browse";
}else{
unset($_SESSION[usermail]);
unset($_SESSION[pw]);
$loginError = "ログイン情報が違います。ユーザー名とパスワードをもう一度確かめてください。";
$page="prlogin";
}
}
break ;
case "global":
unset($_SESSION[usermail]);
unset($_SESSION[pw]);
$page="global";
break ;
case "login":
if(!$presenMode){
$loginError="
";
if($_POST[usermail]!=""){
$_SESSION[usermail]=$_POST[usermail] ;
}
if($_POST[pw]!=""){
$_SESSION[pw] =$_POST[pw] ;
}
if(isset($_SESSION[usermail])&&isset($_SESSION[pw])&&getpasswd($_SESSION[usermail])==$_SESSION[pw]){
if($_POST[savepw]=="1"){
setcookie("remember1",$_SESSION[usermail],time()+(605400*2));//2week keep
setcookie("remember2",$_SESSION[pw],time()+(605400*2));
}
$page="summary" ;
$ftpusers = getFtpUserList($_SESSION[usermail]) ;
}else{
unset($_SESSION[usermail]);
unset($_SESSION[pw]);
$remember[usermail]=$_POST[usermail] ;
$remember[pw] =$_POST[pw] ;
$loginError = "ログイン情報が違います。メールアドレスとパスワードをもう一度確かめてください。
初めて使用する方は、メールアドレスが登録されていません。
一番下の'初めて使用する方はこちら'をクリックしてアドレスとパスワードを登録してください。";
$page="login";
}
}else{
unset($_SESSION[usermail]);
unset($_SESSION[pw]);
$page="prlogin";
}
break ;
case "mail":
if(!$presenMode){
$loginError="
";
$email = explode('@',$_POST[usermail]);
unset($_SESSION[usermail]);
unset($_SESSION[pw]);
$remember[usermail]=$_POST[usermail] ;
$remember[pw] =$_POST[pw] ;
if($email[1]!=""){
$mailhost = $email[1];
$mailhost = $mailhost.".";
if (getmxrr($mailhost, $mxhosts) == FALSE && gethostbyname($mailhost) == $mailhost){
$loginError = '正しいメールアドレスではありません。入力を確認してください。';
$page="login";
}else{
$validmx=explode(",",VALIDMX);
$mailhost_ok=false ;
for($i=0;$i\n";
$headers .= "X-Sender: PublicDockMaster<".ROOTMAIL.">\n";
$headers .= "X-Mailer: PublicDock Auto Mailer\n";
$headers .= "X-Priority: 3\n";
$headers .= "Return-Path: PublicDockMaster<".ROOTMAIL.">\n";
$headers .= "bcc:".ROOTMAIL."\n";
$subject = "PublicDockのログインについて" ;
$recipient = "<".$_POST[usermail].">" ;
$body = "お疲れ様です。\n";
$body.= "\n" ;
$body.= "パブリック・ドックのログイン情報は以下の通りです。\n" ;
$body.= "メール・アドレス : ".$_POST[usermail]."\n" ;
$body.= "パスワード : ".$pass."\n" ;
$body.= "\n" ;
$body.= "アクセスするホームページは、\n" ;
$body.= "http://".$_SERVER[HTTP_HOST].$_SERVER[REQUEST_URI]."\n" ;
$body.= "です。\n" ;
$body.= "\n" ;
$body.= "では。\n" ;
$body.= "\n" ;
$body.= "※このメールは、ユーザーの要求により自動送信されています。\n" ;
mb_language("Japanese");
mb_internal_encoding("UTF-8");
$ret=mb_send_mail($recipient,$subject,$body,$headers);
if($ret){
$loginError = "メールを送信しました。受信後再度試してください。";
$page="login";
}else{
$loginError = "メール送信に失敗しました。管理者に連絡してください。";
$page="login";
}
}else{
$loginError = "このメールアドレスは登録されていません。
\"初めて使用する方はこちら\"をクリックしてメールアドレスとパスワードを登録してください。";
$page="login";
}
}else{
$loginError = "許可されていないメールアドレスです。社用メールのみ利用可能です。";
$page="login";
}
}
}else{
$loginError = '"E-Mail Address"の欄に、送信先メール入力して"パスワードを忘れた方はこちら"をクリックしてください。';
$page="login";
}
}else{
unset($_SESSION[usermail]);
unset($_SESSION[pw]);
$page="prlogin";
}
break ;
case "new":
if(!$presenMode){
unset($_SESSION[usermail]);
unset($_SESSION[pw]);
$remember[usermail]=$_POST[newusermail] ;
$remember[pw] =$_POST[newpw] ;
$loginError = '"E-Mail Address"と"パスワード"を入力してください。
登録後は、このメールアドレスとパスワードでログイン可能になります。';
$page="new";
}else{
unset($_SESSION[usermail]);
unset($_SESSION[pw]);
$page="prlogin";
}
break ;
case "newsubmit":
if(!$presenMode){
unset($_SESSION[usermail]);
unset($_SESSION[pw]);
$remember[usermail]=$_POST[newusermail] ;
$remember[pw] =$_POST[newpw] ;
$loginError="
";
$email = explode('@',$_POST[newusermail]);
if($email[1]!=""){
$mailhost = $email[1];
$mailhost = $mailhost.".";
if (getmxrr($mailhost, $mxhosts) == FALSE && gethostbyname($mailhost) == $mailhost){
$loginError = '正しいメールアドレスではありません。入力を確認してください。';
$page="new";
}else{
$validmx=explode(",",VALIDMX);
$mailhost_ok=false ;
for($i=0;$i4&&($_POST[newpw]==$_POST[renewpw])){
$userdata[usermail]=$_POST[newusermail];
$userdata[pw]=$_POST[newpw];
if(insertUser($userdata)==0){
$headers = "From: PublicDockMaster<".ROOTMAIL.">\n";
$headers .= "X-Sender: PublicDockMaster<".ROOTMAIL.">\n";
$headers .= "X-Mailer: PublicDock Auto Mailer\n";
$headers .= "X-Priority: 3\n";
$headers .= "Return-Path: PublicDockMaster<".ROOTMAIL.">\n";
$headers .= "bcc:".ROOTMAIL."\n";
$subject = "PublicDockの登録終了しました" ;
$recipient = "<".$_POST[newusermail].">" ;
$body = "お疲れ様です。\n";
$body.= "\n" ;
$body.= "パブリック・ドックのログイン情報は以下の通りです。\n" ;
$body.= "\n" ;
$body.= "メール・アドレス : ".$_POST[newusermail]."\n" ;
$body.= "パスワード : ".$_POST[newpw]."\n" ;
$body.= "\n" ;
$body.= "アクセスするホームページは、\n" ;
$body.= "http://".$_SERVER[HTTP_HOST].$_SERVER[REQUEST_URI]."\n" ;
$body.= "です。\n" ;
$body.= "\n" ;
$body.= "では。\n" ;
$body.= "\n" ;
$body.= "※このメールは確認の為、自動送信されています。もし身に覚えの無い方は、管理者に連絡してください。\n" ;
mb_language("Japanese");
mb_internal_encoding("UTF-8");
$ret=mb_send_mail($recipient,$subject,$body,$headers);
if($ret){
$loginError = "全て正常に終了しました。利用可能になりました。
登録情報をメールで送信しましたのでご確認ください。";
$page="login";
}else{
$loginError = "登録は正常に終わりました。利用可能になりました。";
$page="login";
}
}else{
$loginError = "データベースの登録に失敗しました。管理者に連絡してください。";
$page="new";
}
}else{
$loginError = "パスワード入力に誤りがあります。再入力欄も含めて確認してください。
また、パスワードは4文字以上にしてください。";
$page="new";
}
}else{
$loginError = "このメールアドレスはすでに登録されています。
見に覚えの無い方は、管理者に連絡してください。";
$page="new";
}
}else{
$loginError = "許可されていないメールアドレスです。社用メールのみ利用可能です。";
$page="new";
}
}
}else{
$loginError = "\"E-Mail Address\"の欄の入力が正しくありません。入力を確認してください。";
$page="new";
}
}else{
unset($_SESSION[usermail]);
unset($_SESSION[pw]);
$page="prlogin";
}
break ;
case "logout":
if(!$presenMode){
unset($_SESSION[usermail]);
unset($_SESSION[pw]);
$page="login";
}else{
unset($_SESSION[usermail]);
unset($_SESSION[pw]);
$page="prlogin";
}
break ;
case "newftp":
if(!$presenMode){
if(isset($_SESSION[usermail])&&isset($_SESSION[pw])&&getpasswd($_SESSION[usermail])==$_SESSION[pw]){
$page="newftp" ;
$ftpusers = getFtpUserList($_SESSION[usermail]) ;
}else{
unset($_SESSION[usermail]);
unset($_SESSION[pw]);
$page="login";
}
}else{
unset($_SESSION[usermail]);
unset($_SESSION[pw]);
$page="prlogin";
}
break ;
case "newftpsubmit":
if(!$presenMode){
if(isset($_SESSION[usermail])&&isset($_SESSION[pw])&&getpasswd($_SESSION[usermail])==$_SESSION[pw]){
$page="newftp" ;
$ftpusers = getFtpUserList($_SESSION[usermail]) ;
$maxuser = count($ftpusers) ;
$ftpuser_ok = true ;
$errorMsg = "" ;
for($i=0;$i<$maxuser;++$i){
if($_POST[ftpname]==$ftpusers[$i][ftpname]){
$ftpuser_ok= false ;
$errorMsg .= "このユーザー名は、".$ftpusers[$i][adminuser]." さんが使用しております。他の名前にしてください。
" ;
break ;
}
}
if(strlen($_POST[pw])<4){
$ftpuser_ok= false ;
$errorMsg .= "パスワードは、4文字以上を使用してください。" ;
}
$ftpuserdata = $_POST ;
if($ftpuser_ok){
$page="newftpok";
$ftpuserdata[despw] = desCrypt($ftpuserdata[pw]) ;
$cmd = "/usr/sbin/useradd -g ".FTPGROUP." -d ".FTPROOT."/".$ftpuserdata[ftpname]." -p ".$ftpuserdata[despw]." ";
if(LOGIN_FALSE=="true"){
$cmd .= "-s /sbin/nologin " ;
}
$cmd .= $ftpuserdata[ftpname] ;
$cmd .= ";chmod g+rx ".FTPROOT."/".$ftpuserdata[ftpname] ;
$arg = escapeshellarg($cmd) ;
$cmstr = "ssh -l ".SSH_USER." ".SSH_HOST." ".$arg." 2>&1";
$out = shell_exec($cmstr);
if(strlen($out)==0){
$ftpuserdata[adminuser]=$_SESSION[usermail] ;
if(insertFtpuser($ftpuserdata)!=0){
$page="newftp" ;
$errorMsg = "データベース登録でエラーになりました。
".mysql_error() ;
$cmd .= "/usr/sbin/userdel -r ".$ftpuserdata[ftpname] ;
$arg = escapeshellarg($cmd);
$cmstr = "ssh -l ".SSH_USER." ".SSH_HOST." ".$arg." 2>&1";
$out = shell_exec($cmstr);
}else{
$headers = "From: PublicDockMaster<".ROOTMAIL.">\n";
$headers .= "X-Sender: PublicDockMaster<".ROOTMAIL.">\n";
$headers .= "X-Mailer: PublicDock Auto Mailer\n";
$headers .= "X-Priority: 3\n";
$headers .= "Return-Path: PublicDockMaster<".ROOTMAIL.">\n";
$headers .= "bcc:".ROOTMAIL."\n";
$subject = "FTPアカウント(".$ftpuserdata[ftpname].")作成完了" ;
$recipient = "<".$ftpuserdata[adminuser].">" ;
$body = "お疲れ様です。\n";
$body.= "\n" ;
$body.= FTPHOST." 上にFTP用アカウントが作成されました。\n" ;
$body.= "以下の情報を、客先と関連スタッフに連絡してご利用ください。\n" ;
if($ftpuserdata[openweb]=="true"){
$body.= "また、Webブラウザで閲覧・ダウンロードが出来るように設定されました。\n" ;
$body.= "下記アドレスにアクセスするとログイン画面が表示されます。\n" ;
$body.= "FTP用のユーザー名とパスワードを入力すると閲覧・ダウンロードができます。\n" ;
}
$body.= "\n" ;
$body.= "FTPサーバー:".FTPHOST."\n" ;
$body.= "ユーザー名 = ".$ftpuserdata[ftpname]."\n";
$body.= "パスワード = ".$ftpuserdata[pw]."\n";
$body.= "\n" ;
if($ftpuserdata[openweb]=="true"){
$body.= "Web公開アドレス:\n http://".WEBHOST.WEBPRES."\n" ;
$body.= "(InternetExplorer5,6/Netscape6,7/Safari1.0v85で利用可能です。)\n" ;
$body.= "\n" ;
$body.= " ftp://".$ftpuserdata[ftpname].":".$ftpuserdata[pw]."@".WEBHOST."\n" ;
$body.= "(Netscape4.7以前はこちらをご利用ください)\n" ;
$body.= "\n" ;
}
$body.= "有効期限 :".getdate_h($ftpuserdata[expire])."\n" ;
$body.= "\n" ;
$body.= "有効期限を過ぎると、自動的にアカウント情報とファイルは削除され、利用できなくなります。\n" ;
$body.= "\n" ;
$body.= "※このメールは確認の為、自動送信されています。もし身に覚えの無い方は、管理者に連絡してください。\n" ;
mb_language("Japanese");
mb_internal_encoding("UTF-8");
$ret=mb_send_mail($recipient,$subject,$body,$headers);
if($ret){
$errorMsg = "作成したFTPアカウント情報をメールで送信しましたのでご確認ください。";
}else{
$errorMsg = "作成したFTPアカウント情報をメールで送信しようとしましたが失敗しました。
管理者に連絡してください。
FTPアカウントは正常に作成されましたので、利用可能です。";
}
}
$expire = $ftpuserdata[expire] ;
}else{
$page="newftp" ;
$errorMsg = $out1."システムコマンド(ユーザー登録)にて下記のエラーが発生しました。
".$out ;
}
}
}else{
unset($_SESSION[usermail]);
unset($_SESSION[pw]);
$page="login";
}
}else{
unset($_SESSION[usermail]);
unset($_SESSION[pw]);
$page="prlogin";
}
break ;
case "edtftp":
if(!$presenMode){
if(isset($_SESSION[usermail])&&isset($_SESSION[pw])&&getpasswd($_SESSION[usermail])==$_SESSION[pw]){
$page="edtftp" ;
$ftpusers = getFtpUserList($_SESSION[usermail]) ;
}else{
unset($_SESSION[usermail]);
unset($_SESSION[pw]);
$page="login";
}
}else{
unset($_SESSION[usermail]);
unset($_SESSION[pw]);
$page="prlogin";
}
break ;
case "edtuser":
if(!$presenMode){
if(isset($_SESSION[usermail])&&isset($_SESSION[pw])&&getpasswd($_SESSION[usermail])==$_SESSION[pw]){
$page="edtuser" ;
$ftpuserdata = getFtpUser($_POST[userid]) ;
}else{
unset($_SESSION[usermail]);
unset($_SESSION[pw]);
$page="login";
}
}else{
unset($_SESSION[usermail]);
unset($_SESSION[pw]);
$page="prlogin";
}
break ;
case "edtftpsubmit":
if(!$presenMode){
if(isset($_SESSION[usermail])&&isset($_SESSION[pw])&&getpasswd($_SESSION[usermail])==$_SESSION[pw]){
$page="edtuser" ;
$ftpuser_ok = true ;
$errorMsg = "" ;
// check password
if(strlen($_POST[pw])<4){
$ftpuser_ok= false ;
$errorMsg .= "パスワードは、4文字以上を使用してください。" ;
}
$ftpuserdata = $_POST ;
if($ftpuser_ok){
$page="newftpok";
$ftpuserdata[despw] = desCrypt($ftpuserdata[pw]) ;
$cmd = "/usr/sbin/usermod -p ".$ftpuserdata[despw]." ";
$cmd .= $ftpuserdata[ftpname] ;
$arg = escapeshellarg($cmd) ;
$cmstr = "ssh -l ".SSH_USER." ".SSH_HOST." ".$arg." 2>&1";
$out = shell_exec($cmstr);
if(strlen($out)==0){
$ftpuserdata[adminuser]=$_SESSION[usermail] ;
if(updateFtpuser($ftpuserdata)!=0){
$page="edtuser" ;
$errorMsg = "データベース変更でエラーになりました。
".mysql_error() ;
}else{
$headers = "From: PublicDockMaster<".ROOTMAIL.">\n";
$headers .= "X-Sender: PublicDockMaster<".ROOTMAIL.">\n";
$headers .= "X-Mailer: PublicDock Auto Mailer\n";
$headers .= "X-Priority: 3\n";
$headers .= "Return-Path: PublicDockMaster<".ROOTMAIL.">\n";
$headers .= "bcc:".ROOTMAIL."\n";
$subject = "FTPアカウント (".$ftpuserdata[ftpname].") 変更完了" ;
$recipient = "<".$ftpuserdata[adminuser].">" ;
$body = "お疲れ様です。\n";
$body.= "\n" ;
$body.= FTPHOST." 上にFTP用アカウントが変更されました。\n" ;
$body.= "以下の情報を、客先と関連スタッフに連絡してご利用ください。\n" ;
if($ftpuserdata[openweb]=="true"){
$body.= "また、Webブラウザで閲覧・ダウンロードが出来るように設定されました。\n" ;
$body.= "下記アドレスにアクセスするとログイン画面が表示されます。\n" ;
$body.= "FTP用のユーザー名とパスワードを入力すると閲覧・ダウンロードができます。\n" ;
}
$body.= "\n" ;
$body.= "FTPサーバー:".FTPHOST."\n" ;
$body.= "ユーザー名 = ".$ftpuserdata[ftpname]."\n";
$body.= "パスワード = ".$ftpuserdata[pw]."\n";
$body.= "\n" ;
if($ftpuserdata[openweb]=="true"){
$body.= "Web公開アドレス:\n http://".WEBHOST.WEBPRES."\n" ;
$body.= "(InternetExplorer5,6/Netscape6,7/Safari1.0v85で利用可能です。)\n" ;
$body.= "\n" ;
$body.= " ftp://".$ftpuserdata[ftpname].":".$ftpuserdata[pw]."@".WEBHOST."\n" ;
$body.= "(Netscape4.7以前はこちらをご利用ください)\n" ;
$body.= "\n" ;
}
$body.= "有効期限 :".getdate_h($ftpuserdata[expire])."\n" ;
$body.= "\n" ;
$body.= "有効期限を過ぎると、自動的にアカウント情報とファイルは削除され、利用できなくなります。\n" ;
$body.= "\n" ;
$body.= "※このメールは確認の為、自動送信されています。もし身に覚えの無い方は、管理者に連絡してください。\n" ;
mb_language("Japanese");
mb_internal_encoding("UTF-8");
$ret=mb_send_mail($recipient,$subject,$body,$headers);
if($ret){
$errorMsg = "作成したFTPアカウント情報をメールで送信しましたのでご確認ください。";
}else{
$errorMsg = "作成したFTPアカウント情報をメールで送信しようとしましたが失敗しました。
管理者に連絡してください。
FTPアカウントは正常に作成されましたので、利用可能です。";
}
}
$expire = $ftpuserdata[expire] ;
}else{
$page="edtuser" ;
$errorMsg = "システムコマンド(ユーザー変更)にて下記のエラーが発生しました。
".$out ;
}
}
}else{
unset($_SESSION[usermail]);
unset($_SESSION[pw]);
$page="login";
}
}else{
unset($_SESSION[usermail]);
unset($_SESSION[pw]);
$page="prlogin";
}
break ;
case "delftp":
if(!$presenMode){
if(isset($_SESSION[usermail])&&isset($_SESSION[pw])&&getpasswd($_SESSION[usermail])==$_SESSION[pw]){
$page="delftp" ;
$ftpusers = getFtpUserList($_SESSION[usermail]) ;
}else{
unset($_SESSION[usermail]);
unset($_SESSION[pw]);
$page="login";
}
}else{
unset($_SESSION[usermail]);
unset($_SESSION[pw]);
$page="prlogin";
}
break ;
case "deluser":
if(!$presenMode){
if(isset($_SESSION[usermail])&&isset($_SESSION[pw])&&getpasswd($_SESSION[usermail])==$_SESSION[pw]){
$page="deluser" ;
$ftpuserdata = getFtpUser($_POST[userid]) ;
}else{
unset($_SESSION[usermail]);
unset($_SESSION[pw]);
$page="login";
}
}else{
unset($_SESSION[usermail]);
unset($_SESSION[pw]);
$page="prlogin";
}
break ;
case "delftpsubmit":
if(!$presenMode){
if(isset($_SESSION[usermail])&&isset($_SESSION[pw])&&getpasswd($_SESSION[usermail])==$_SESSION[pw]){
$page="delftp" ;
$ftpuser_ok = true ;
$errorMsg = "" ;
$ftpuserdata = $_POST ;
$cmd = "/usr/sbin/userdel -r ".$ftpuserdata[ftpname];
$arg = escapeshellarg($cmd) ;
$cmstr = "ssh -l ".SSH_USER." ".SSH_HOST." ".$arg." 2>&1";
$out = shell_exec($cmstr);
if(strlen($out)!=0){
$page="deluser" ;
$errorMsg = "システムコマンド(ユーザー削除)にて下記のエラーが発生しました。
".$out ;
}
$ftpuserdata[adminuser]=$_SESSION[usermail] ;
if(deleteFtpuser($ftpuserdata)!=0){
$page="deluser" ;
$errorMsg .= "データベース削除でエラーになりました。
".mysql_error() ;
}
if(strlen($errorMsg)==0){
$errorMsg = "FTPアカウント(".$ftpuserdata[ftpname].")を削除しました。";
$headers = "From: PublicDockMaster<".ROOTMAIL.">\n";
$headers .= "X-Sender: PublicDockMaster<".ROOTMAIL.">\n";
$headers .= "X-Mailer: PublicDock Auto Mailer\n";
$headers .= "X-Priority: 3\n";
$headers .= "Return-Path: PublicDockMaster<".ROOTMAIL.">\n";
$headers .= "bcc:".ROOTMAIL."\n";
$subject = "FTPアカウント(".$ftpuserdata[ftpname].")削除完了" ;
$recipient = "<".$ftpuserdata[adminuser].">" ;
$body = "お疲れ様です。\n";
$body.= "\n" ;
$body.= FTPHOST." 上にFTP用アカウント(".$ftpuserdata[ftpname].")が、\n" ;
$body.= "ユーザーの要求により削除されました。\n" ;
$body.= "\n" ;
$body.= "※このメールは確認の為、自動送信されています。もし身に覚えの無い方は、管理者に連絡してください。\n" ;
mb_language("Japanese");
mb_internal_encoding("UTF-8");
$ret=mb_send_mail($recipient,$subject,$body,$headers);
if(!$ret){
$errorMsg = "削除したFTPアカウント情報をメールで送信しようとしましたが失敗しました。
管理者に連絡してください。
FTPアカウントは正常に削除されました。";
}
}
if($page=="delftp"){
$ftpusers = getFtpUserList($_SESSION[usermail]) ;
}
}else{
unset($_SESSION[usermail]);
unset($_SESSION[pw]);
$page="login";
}
}else{
unset($_SESSION[usermail]);
unset($_SESSION[pw]);
$page="prlogin";
}
break ;
case "browse":
if(isset($_SESSION[usermail])&&isset($_SESSION[pw])&&getpasswd($_SESSION[usermail])==$_SESSION[pw]){
$page="browse" ;
if(!$presenMode){
$ftpuserdata = getFtpUser($_POST[userid]) ;
}else{
$ftpuserdata = getFtpUser($_SESSION[usermail]) ;
if($ftpuserdata[ftpname]==""){
unset($_SESSION[usermail]);
unset($_SESSION[pw]);
$page="prlogin";
break;
}
}
$path = FTPROOT."/".$ftpuserdata[ftpname];
$browsepath = "/" ;
if($_POST[chdir]=="/")$_POST[chdir]="";
if(strlen($_POST[chdir])!=0){
$path.=$_POST[chdir];
$browsepath = $_POST[chdir] ;
}
if($_POST[org_enc]!=""){
$path=mb_convert_encoding($path,$_POST[org_enc],"auto");
}
if($_POST[open]==""){
unset($_SESSION[open_images]);
}else{
$open_images = explode(",",$_POST[open]);
}
if(DEBUG=="true") print("
PATH=$path ");
$dir = opendir($path);
$dindex = $findex = 0;
while ($file = readdir($dir)){
if(DEBUG=="true") print("File=$file ");
if(ereg("^\.",$file)) continue ; // skip dot files
$time = filemtime("$path/$file");
if(is_dir("$path/$file")){ // handle directory
$org_enc=mb_detect_encoding("$path/$file");
$dbrowsedata[$dindex][icon] = "images/folder.gif" ;
if($org_enc!=""){
$dbrowsedata[$dindex][name] = mb_convert_encoding($file,"UTF-8","auto") ;
}else{
$dbrowsedata[$dindex][name] = $file ;
}
$dbrowsedata[$dindex][time] = date('Y/m/d H:i', $time) ;
$dbrowsedata[$dindex][enc] = $org_enc ;
++$dindex;
}else{ // handle file
$org_enc=mb_detect_encoding("$path/$file");
if(DEBUG=="true") {
print(" File:$path/$file Encode:$org_enc ");
}
$fbrowsedata[$findex][icon] = "images/file.gif" ;
if($org_enc!=""){
$fbrowsedata[$findex][name] = mb_convert_encoding($file,"UTF-8","auto") ;
}else{
$fbrowsedata[$findex][name] = $file;
}
$fbrowsedata[$findex][size] = size_h(filesize ("$path/$file")) ;
$fbrowsedata[$findex][time] = date('Y/m/d H:i', $time) ;
$fbrowsedata[$findex][enc] = $org_enc ;
$fbrowsedata[$findex][exif_code] = $org_enc ;
$imagetype = @exif_imagetype ("$path/$file") ;
$fbrowsedata[$findex][exif_code] = $imagetype ;
if(DEBUG=="true") {
print(" Type:$imagetype. ");
}
switch($imagetype){
case 1: //IMAGETYPE_GIF :
case 3: //IMAGETYPE_PNG :
case 4: //IMAGETYPE_SWF :
$fbrowsedata[$findex][open] = "ok" ;
$fbrowsedata[$findex][opened] = "false" ;
$fbrowsedata[$findex][embed] = "false" ;
for($i=0;$i720){
$yres=$yres*(720/$xres);
$xres=720;
}
$fbrowsedata[$findex][option]=" width=$xres height=$yres" ;
}
}
}
break ;
case 2: //IMAGETYPE_JPG :
$fbrowsedata[$findex][open] = "ok" ;
$fbrowsedata[$findex][opened] = "false" ;
$fbrowsedata[$findex][embed] = "false" ;
if(exif_thumbnail("$path/$file")){
$fbrowsedata[$findex][thum]=true;
$_SESSION[open_images][$fbrowsedata[$findex][name]] = "$path/$file" ;
}
for($i=0;$i720){
$yres=$yres*(720/$xres);
$xres=720;
}
$fbrowsedata[$findex][option]=" width=$xres height=$yres" ;
}
}
}
break ;
case 7: //IMAGETYPE_TIFF_II :
$fbrowsedata[$findex][open] = "ok" ;
$fbrowsedata[$findex][opened] = "false" ;
$fbrowsedata[$findex][embed] = "false" ;
if(exif_thumbnail("$path/$file")){
$fbrowsedata[$findex][thum]=true;
$_SESSION[open_images][$fbrowsedata[$findex][name]] = "$path/$file" ;
}
for($i=0;$i720){
$yres=$yres*(720/$xres);
$xres=720;
}
$fbrowsedata[$findex][option]="width=\"$xres\" height=\"$yres\"" ;
}
}
}
break ;
case 8: //IMAGETYPE_TIFF_MM :
$fbrowsedata[$findex][open] = "ok" ;
$fbrowsedata[$findex][opened] = "false" ;
$fbrowsedata[$findex][embed] = "true" ;
if(exif_thumbnail("$path/$file")){
$fbrowsedata[$findex][thum]=true;
$_SESSION[open_images][$fbrowsedata[$findex][name]] = "$path/$file" ;
}
for($i=0;$i720){
$yres=$yres*(720/$xres);
$xres=720;
}
$fbrowsedata[$findex][option]=" width=\"$xres\" height=\"$yres\"" ;
}
}
}
break ;
case 6: //IMAGETYPE_BMP :
case 9: //IMAGETYPE_JPC :
case 10: //IMAGETYPE_JP2 :
case 11: //IMAGETYPE_JPX :
case 15: //IMAGETYPE_QUICKTIME :
$fbrowsedata[$findex][open] = "ok" ;
$fbrowsedata[$findex][opened] = "false" ;
$fbrowsedata[$findex][embed] = "true" ;
for($i=0;$i
PublicDock - FTP Version
}?>
if(DEBUG=="true") {
print(" page=$page ");
}
ob_end_flush();
switch($page){
//======================================
//
// login page output
//
//======================================
case 'prlogin' :
?>
| |
|
|
|
FTP Version.
【プレゼンテーション・モード】 |
|
|
|
|
| |
|
|
break;
//======================================
//
// global page output
//
//======================================
case 'global' :
?>
| |
|
|
|
FTP Version.
【メンテナンス・モード】 |
| アクセス制限をかけております。ご利用できません。 |
|
|
|
| |
|
|
break;
//======================================
//
// login page output
//
//======================================
case 'login' :
?>
break;
//======================================
//
// new page output
//
//======================================
case 'new' :
?>
| |
|
|
|
FTP Version.
(C) 2008 McRay Corporation. All rights reserved. |
|
|
|
|
| |
|
|
break;
//======================================
//
// newftp page output
//
//======================================
case 'newftp' :
?>
break;
//======================================
//
// newftpok page output
//
//======================================
case 'newftpok' :
?>
break;
//======================================
//
// edtftp page output
//
//======================================
case 'edtftp' :
?>
break;
//======================================
//
// edtuser page output
//
//======================================
case 'edtuser' :
?>
break;
//======================================
//
// delftp page output
//
//======================================
case 'delftp' :
?>
break;
//======================================
//
// deluser page output
//
//======================================
case 'deluser' :
?>
break;
//======================================
//
// browse page output
//
//======================================
case 'browse' :
if(DEBUG=="true") print ("browsing mode ");
?>
break;
//======================================
//
// summary page output
//
//======================================
case 'wait' :
?>
if(isset($_SESSION[usermail])&&isset($_SESSION[pw])&&getpasswd($_SESSION[usermail])==$_SESSION[pw]){
?>
|
|
}
?>
if(isset($_SESSION[usermail])&&isset($_SESSION[pw])&&getpasswd($_SESSION[usermail])==$_SESSION[pw]){
?>
|
}
?>
break;
//======================================
//
// summary page output
//
//======================================
case 'summary' :
?>
|
|
|
あなたが作成したFTPアカウントは、現在 件です。 ディスクの空き容量は です。
| ユーザー名 |
パスワード |
Web公開 |
使用量 |
作成日付 |
自動削除 |
$maxftp = count($ftpusers) ;
for($i=0;$i<$maxftp;++$i){
?>
|
|
|
|
|
|
}// end of for
?>
|
|
break;
}
?>
if($page!="wait")ob_end_flush();
?>