Kategori arşivi: Web

Flash Player, 12 Ocak itibarıyla da artık video oynatamayacak

Web tarayıcıları üzerinde animasyonların, reklamların, videoların görüntülemesini sağlayan, birçok oyunu çalıştıran tarayıcı eklentisi Adobe Flash Player’ın kullanımına 31 Aralık 2020 tarihi itibariyle son verildiği açıklandı.

1996 yılından bu yana tarayıcılarda videoların oynatılması ve online oyunların oynanmasını sağlamak amacıyla kullanılan Flash, yıllar içerisinde güvenlik sorunları nedeniyle hem yeni nesil tarayıcılarda hem de akıllı telefonlarda istenilen verimi sağlayamadı.

Bununla beraber geliştiricisi Adobe firması, Flash için daha fazla güvenlik güncellemesi sunmayacağını açıklayarak, “Adobe Flash Player’i kullandığınız için teşekkür ederiz. 31 Aralık itibarıyla Flash Player’e destek vermeyi kestik. Sisteminizin güvenliğini sağlamaya yardımcı olmak için, Flash Player içeriğini acilen kaldırmanızı tavsiye ediyoruz.” mesajı ile kullanıcılarından uygulamayı silmesini istedi.

Flash ilk ortaya çıktığı yıllarda internet çok daha düşük hızlardaydı ancak Flash, kullanıcılara içeriği daha yüksek hızda indirebilme imkânı sunuyordu.

Flash, animasyonlardan çok daha fazlası olmakla beraber YouTube gibi web sitelerinin yüksek kaliteli videolar yayımlamasına da izin veriyordu. 2009’a kadar internete bağlı masaüstü bilgisayarların neredeyse tamamına Flash yüklenmişti.

Ancak internet dünyası mobil cihazlara doğru kayarken Adobe yeterli seviyede teknolojiye ayak uyduramadı.

Dönemin popüler cihazlarının üreticisi Apple’ın kurucusu Steve Jobs, Flash’ın dokunmatik bir ekranda kullanımının zahmetli ve güvenilmez olduğunu söylerken Flash’ın telefonun pil ömrünü de azalttığını savunuyordu.

Videoların, animasyonların Flash yerine HTML5 ve diğer açık teknolojilerle sunulabileceğini aktaran Jobs, bunun da Flash’ı bir akıllı telefon veya tablette gereksiz hale getirebileceğini söylüyordu.

Sonrasında Adobe, Flash Player’ın akıllı telefonlarda çalışan bir sürümünü geliştirdi ancak internet değişmişti. Facebook, Netflix ve YouTube gibi büyük markalar halihazırda Flash olmadan akıllı telefonlara video oynatabilir hale gelmişti bile.

Bunun üzerinde Kasım 2011’de Adobe, mobil cihazlar için Flash’ın geliştirilmesini sonlandırdı ve sadece masaüstü bilgisayarlar için Flash üretilmeye devam etti, ancak yazılım birçok güvenlik açığı hala mevcuttu.

Sırasıyla 2015 yılında Apple Safari web tarayıcısında eklentiyi varsayılan olarak devre dışı bıraktı, Google’ın tarayıcı uygulaması Chrome da Flash içeriklerini engellemeye başladı ve diğer tarayıcılar da takip etti.

Bunlar üzerine Adobe 2017 yılında yaptığı açıklamada, 2020’de Flash’ı kullanımdan kaldıracağını ilan etmişti.

Web Site İstenilen Boyutlarda Mobil, Geniş Ekran Görüntüleme

Web siteniz ya da herhangi bir web sitesinin tasarım aşamasında düzeltmeler yapabilmek, hataları tespit edebilmek için mobil veya değişik ölçülerde geniş ekranlarda nasıl göründüğünü görebilmek önemlidir.

Bu hizmeti veren web siteleri ve tarayıcı eklentileri mevcut olmakla beraber Mozilla Firefox tarayıcısının temel özelliği olarak bu uygulama mevcuttur.

Yapmanız gereken ilgili web sitesi açıkken klavyede “CTRL” + “SHIFT” + “M” tuşlarına basmak. Bu işlemin ardından üstte açılan menüde istediğiniz ölçüleri girebilir, ekran yönünü belirtebilir ve dokunma simülasyonu ile sayfanın dokunmatik ekranda nasıl çalıştığını kontrol edebilirsiniz.

EBA Eğitim Bilişim Ağı Windows 7 Üzerinde Kullanımı ve Hataların Giderilmesi

EBA canlı ders uygulamasını Windows 7 üzerinde sorunsuz çalıştırmak için bazı ayarlamalar ve güncelleştirmeleri yapmanız gerekmekte.

Öncelikle bu bağlantıdan EBA CANLI DERS uygulamasını indirin. Mevcut sürüm güncellemelere göre değişiklik gösterebilir.

Windows 7 güncelleştirme desteğini kesmiş olsa da destek çekildiği ana kadar çıkan güncellemeleri hala otomatik olarak alabilmekte. Öncelikle tüm Windows 7 güncelleştirmelerini yaparak en güncel haline getirin.

Ardından “Denetim Masası” > “Windows Güvenlik Duvarı” > “Windows Güvenlik Duvarını Etkinleştir veya Devre Dışı Bırak” bölümüne girip, çıkan ekranda güvenlik duvarını kapat seçeneklerini seçip “Tamam” a tıklayın.

“Başlat” a tıklayıp arama bölümüne “inetcpl.cpl” yazarak Internet Explorer ayarlarına erişin. Bu ekranda üst menüden “Gelişmiş” bölümüne girin ve TLS 1.0 kullan, TLS 1.1 kullan ve TLS 1.2 kullan seçeneklerini seçip “Uygula” ve ardından “Tamam” ı seçerek çıkış yapın.

Devamında eğer MSVCP140.dll hatası alıyorsanız, işletim sisteminize göre

Eğer 64-bit windows 7 kullanıyorsanız

https://aka.ms/vs/16/release/vc_redist.x64.exe

Eğer 32-bit windows kullanıyorsanız

https://aka.ms/vs/16/release/vc_redist.x86.exe

indirip kurun.

 

Sentora Web Panel Tamamen Kaldırma

Kurulum sırasında problem yaşadıysanız ve sıfırdan sistem kurmadan Sentora Web Panel kurulumunu tekrar yapmak istiyorsanız öncelikle sistemden tamamen kaldırmanız gerekmekte. Üste tekrar kurulum mümkün olmadığı için girmeniz gereken komutlar şu şekilde;

service mysqld stop;
service proftpd stop;
service httpd stop;
yum -y remove httpd;
yum -y remove php;
yum -y remove php-pear;
yum -y remove php-mysql;
yum -y remove php-cli;
yum -y remove php-common;
yum -y remove mysql*;
yum -y remove mariadb mariadb-server;
yum remove mariadb mariadb-server;
yum -y remove phpMyAdmin;
yum -y remove postfix;
yum -y remove dovecot;
yum -y remove sendmail;
yum -y remove proftp* vsftpd;
yum -y remove bind;
yum -y remove bind-libs;
yum -y remove pdns;
yum -y remove pdns-backend-mysql;
yum -y remove pdns-server;
yum -y remove pdns-server-backend-mysql;
yum clean all;
rm -rf /usr/bin/zppy;
rm -rf /usr/bin/setso;
rm -rf /usr/bin/setzadmin;
rm -rf /var/zpanel;
rm -rf /etc/zpanel;
rm -rf /var/sentora;
rm -rf /etc/sentora;
rm -rf /var/lib/mysql;
rm -f /root/passwords.txt;
rm -rf ~/.my.cnf;
rm -rf /var/spool/vacation/vacation.pl;
rm -rf /var/lib/dovecot/sieve;
rm /etc/my.cnf;
rm ~/.my.cnf;

Sentora Web Panel Kurulumu

Sentora eski adıyla Zpanel web panelini linux kurulu sisteminize ücretsiz olarak kurabilirsiniz.

Öncelikle Centos veya Ubuntu dağıtımlarından birini kullanmanız gerekmekte. Diğer linux dağıtımlarına da kurulum mümkün olmakla beraber hatalar oluşabiliyor. Centos için 6.0 sürümünde 7.0 sürümüne göre Sentora Web Panel daha sağlıklı çalışıyor. Kurulum için sırasıyla yapmanız gerekenler:

Centos 7.4 ve üstü sürümlerde kurulum öncesi Proftpd kontrolü yapmanızda fayda var. Sentora kurulumunda proftpd hatası alırsanız çözüm için temiz bir Centos kurulumu üzerinden işlem yapmanız gerekecektir.

Bu yüzden önce;

yum info proftpd

ile proftpd mevcut mu kontrol edin. Yoksa;

yum install epel-release
yum install proftpd

Proftpd kurulumunu gerçekleştirin.

1- root yetkisiyle komut satırı ekranına girin.
2- “bash <(curl -L -Ss http://sentora.org/install)” komutu ile kurulumu başlatın. Eğer bu komut sonrası hata alıyorsanız kurulumu tek tek şu şekilde gerçekleştirebilirsiniz:

yum install wget -y && cd /tmp && wget sentora.org/install && bash install

bunda da hata alırsanız sırasıyla

sudo -i

cd

wget sentora.org/install

wget --no-check-certificate sentora.org/install

wget http://sentora.org/installchmod +x install

sudo ./install

exit

3- Kurulum sırasında domain adı, zaman dilimi gibi bilgileri girip kurulumu tamamlayın. Yeniden başlatma işlemi öncesi verilen şifre bilgilerini kaydedin.

4- zadmin şifresi bazen çalışmamakta. Bu durumda yine root yetkisiyle “setzadmin –set şifre” şeklinde panel erişiminde kullanacağınız zadmin kullanıcısının şifresini belirleyin.

KURULUM SONRASI DÜZELTMELER

PHP 7.1.2 Güncellemesi
bash <(curl -L -Ss http://zppy-repo.dukecitysolutions.com/repo/sentora-live/php7_upgrade/install.sh)

Eğer bu komut sonrası hata alıyorsanız kurulumu tek tek şu şekilde gerçekleştirebilirsiniz:

1: yum install epel*
2: yum update
3:
Centos 6.x
wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
sudo rpm -Uvh remi-release-6*.rpm

CentOS 7.x
wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
sudo rpm -Uvh remi-release-7*.rpm

4: yum update / yum upgrade
5: yum –enablerepo=remi,remi-php71 update
6: reboot

suhosin kurulumu
1: sudo yum install gcc make autoconf libc-dev pkg-config

sudo yum install git

2: git clone https://github.com/sektioneins/suhosin7
3: cd suhosin7
4: phpize /opt/sp/php7.X/bin/phpize
5: PATH=/opt/sp/php7.X/bin:$PATH ./configure
6: make
7: sudo make install
8: sudo bash -c echo extension=suhosin.so > /etc/php.d/suhosin.ini
php -v

FTP Accounts Bölümü Boş Gözüküyorsa

/etc/sentora/panel/modules/ftp_management/code/controller.ext.php   içeriğini aşağıdakiyle

————————————————————————————————-

<?php

/**
* @copyright 2014-2015 Sentora Project (http://www.sentora.org/)
* Sentora is a GPL fork of the ZPanel Project whose original header follows:
*
* ZPanel – A Cross-Platform Open-Source Web Hosting Control panel.
*
* @package ZPanel
* @version $Id$
* @author Bobby Allen – [email protected]
* @copyright (c) 2008-2014 ZPanel Group – http://www.zpanelcp.com/
* @license http://opensource.org/licenses/gpl-3.0.html GNU Public License v3
*
* This program (ZPanel) is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program.  If not, see <http://www.gnu.org/licenses/>.
*
*/
class module_controller extends ctrl_module
{

static $error;
static $alreadyexists;
static $blank;
static $badname;
static $invalidPath;
static $ok;
static $delete;
static $reset;
static $create;

/**
* The ‘worker’ methods.
*/
static function ListClients($uid)
{
global $zdbh;
$sql = “SELECT * FROM x_ftpaccounts WHERE ft_acc_fk=:userid AND ft_deleted_ts IS NULL”;
$numrows = $zdbh->prepare($sql);
$numrows->bindParam(‘:userid’, $uid);
$numrows->execute();

if ($numrows->fetchColumn() <> 0) {
$sql = $zdbh->prepare($sql);
$res = array();
$sql->bindParam(‘:userid’, $uid);
$sql->execute();
while ($rowclients = $sql->fetch()) {
$res[] = array(‘id’ => $rowclients[‘ft_id_pk’],
‘directory’ => runtime_xss::xssClean($rowclients[‘ft_directory_vc’]),
‘access’ => runtime_xss::xssClean($rowclients[‘ft_access_vc’]),
‘password’ => runtime_xss::xssClean($rowclients[‘ft_password_vc’]),
‘username’ => runtime_xss::xssClean($rowclients[‘ft_user_vc’]));
}
return $res;
} else {
return false;
}
}

static function ListCurrentClient($uid)
{
global $zdbh;
$sql = “SELECT * FROM x_ftpaccounts WHERE ft_id_pk=:userid AND ft_deleted_ts IS NULL”;
$numrows = $zdbh->prepare($sql);
$numrows->bindParam(‘:userid’, $uid);
$numrows->execute();

if ($numrows->fetchColumn() <> 0) {
$sql = $zdbh->prepare($sql);
$sql->bindParam(‘:userid’, $uid);
$res = array();
$sql->execute();
while ($rowclients = $sql->fetch()) {
$res[] = array(‘id’ => $rowclients[‘ft_id_pk’],
‘directory’ => runtime_xss::xssClean($rowclients[‘ft_directory_vc’]),
‘access’ => runtime_xss::xssClean($rowclients[‘ft_access_vc’]),
‘password’ => runtime_xss::xssClean($rowclients[‘ft_password_vc’]),
‘username’ => runtime_xss::xssClean($rowclients[‘ft_user_vc’]));
}
return $res;
} else {
return false;
}
}

static function ListMasterDirs($uid)
{
$currentuser = ctrl_users::GetUserDetail($uid);
$res = array();
$handle = @opendir(ctrl_options::GetSystemOption(‘hosted_dir’) . $currentuser[‘username’] . “”);
$chkdir = ctrl_options::GetSystemOption(‘hosted_dir’) . $currentuser[‘username’] . “/”;
if (!$handle) {
// Log an error as the folder cannot be opened…
} else {
while ($file = @readdir($handle)) {
if ($file != ‘.’ && $file != ‘..’ && $file != ‘_errorpages’) {
if (is_dir($chkdir . $file)) {
$res[] = array(‘domains’ => runtime_xss::xssClean($file));
}
}
}
closedir($handle);
}
return $res;
}

static function ListDomainDirs($uid)
{
$currentuser = ctrl_users::GetUserDetail($uid);
$res = array();
$handle = @opendir(ctrl_options::GetSystemOption(‘hosted_dir’) . $currentuser[‘username’] . “/public_html”);
$chkdir = ctrl_options::GetSystemOption(‘hosted_dir’) . $currentuser[‘username’] . “/public_html/”;
if (!$handle) {
// Log an error as the folder cannot be opened…
} else {
while ($file = @readdir($handle)) {
if ($file != “.” && $file != “..” && $file != “_errorpages”) {
if (is_dir($chkdir . $file)) {
$res[] = array(‘domains’ => runtime_xss::xssClean($file));
}
}
}
closedir($handle);
}
return $res;
}

static function ExecuteResetPassword($ft_id_pk, $password)
{
global $zdbh;
global $controller;

// Verify if Current user can Edit FTP Account.
$currentuser = ctrl_users::GetUserDetail($uid);

$sql = “SELECT * FROM x_ftpaccounts WHERE ft_acc_fk=:userid AND ft_id_pk=:editedUsrID AND ft_deleted_ts IS NULL”;
$numrows = $zdbh->prepare($sql);
$numrows->bindParam(‘:userid’, $currentuser[‘userid’]);
$numrows->bindParam(‘:editedUsrID’, $ft_id_pk);
$numrows->execute();

if( $numrows->rowCount() == 0 ) {
return;
}

// Change User Password
runtime_hook::Execute(‘OnBeforeResetFTPPassword’);
$rowftpsql = “SELECT * FROM x_ftpaccounts WHERE ft_id_pk=:ftIdPk”;
$rowftpfind = $zdbh->prepare($rowftpsql);
$rowftpfind->bindParam(‘:ftIdPk’, $ft_id_pk);
$rowftpfind->execute();
$rowftp = $rowftpfind->fetch();

$sql = $zdbh->prepare(“UPDATE x_ftpaccounts SET ft_password_vc=:password WHERE ft_id_pk=:ftpid”);
$sql->bindParam(‘:password’, $password);
$sql->bindParam(‘:ftpid’, $ft_id_pk);
$sql->execute();

self::$reset = true;
// Include FTP server specific file here.
$FtpModuleFile = ‘modules/’ . $controller->GetControllerRequest(‘URL’, ‘module’) . ‘/code/’ . ctrl_options::GetSystemOption(‘ftp_php’);
if (file_exists($FtpModuleFile)) {
include($FtpModuleFile);
}
$retval = TRUE;
runtime_hook::Execute(‘OnAfterResetFTPPassword’);
return $retval;
}

static function ExecuteCreateFTP($uid, $username, $password, $destination, $domainDestination, $access_type, $home)
{
global $zdbh;
global $controller;
$currentuser = ctrl_users::GetUserDetail($uid);
$username = $currentuser[‘username’] . ‘_’ . $username;
runtime_hook::Execute(‘OnBeforeCreateFTPAccount’);
if (fs_director::CheckForEmptyValue(self::CheckForErrors($username, $password))) {
// Check to see if its a new home directory or use a current one…
if ($home == 1) {
$homedirectory_to_use = ‘/’ . str_replace(‘.’, ‘_’, $username);
$full_path = ctrl_options::GetSystemOption(‘hosted_dir’) . $currentuser[‘username’] . $homedirectory_to_use . ‘/’;
// Create the new home directory… (If it doesnt already exist.)
if (!file_exists($full_path)) {
@mkdir($full_path, 777);
@chmod($full_path, 0777);
}
} else if ($home == 3) {
$homedirectory_to_use = ‘/’ . $domainDestination;
} else {
$homedirectory_to_use = ‘/’ . $destination;
}

// Check if Path is inside user home directory.
$full_homeDir  = ctrl_options::GetSystemOption(‘hosted_dir’) . $currentuser[‘username’] . $homedirectory_to_use . ‘/’;
$baseDir       = ctrl_options::GetSystemOption(‘hosted_dir’) . $currentuser[‘username’];
$realPath      = realpath($full_homeDir);

if( 0 !== strpos($realPath, $baseDir))
{
self::$invalidPath = true;
return false;
}

$sql = $zdbh->prepare(“INSERT INTO x_ftpaccounts (ft_acc_fk, ft_user_vc, ft_directory_vc, ft_access_vc, ft_password_vc, ft_created_ts) VALUES (:userid, :username, :homedir, :accesstype, :password, :time)”);
$sql->bindParam(‘:userid’, $currentuser[‘userid’]);
$sql->bindParam(‘:username’, $username);
$sql->bindParam(‘:homedir’, $homedirectory_to_use);
$sql->bindParam(‘:accesstype’, $access_type);
$sql->bindParam(‘:password’, $password);
$sql->bindParam(‘:time’, time());
$sql->execute();
self::$create = true;
// Include FTP server specific file here.
$FtpModuleFile = ‘modules/’ . $controller->GetControllerRequest(‘URL’, ‘module’) . ‘/code/’ . ctrl_options::GetSystemOption(‘ftp_php’);
if (file_exists($FtpModuleFile)) {
include($FtpModuleFile);
}
runtime_hook::Execute(‘OnAfterCreateFTPAccount’);
return true;
}
return false;
}

static function CheckForErrors($username, $password)
{
global $zdbh;
$retval = FALSE;
// Check to make sure the username and password is not blank before we go any further…
if ($username == ” || $password == ”) {
self::$blank = TRUE;
$retval = TRUE;
}
// Check for invalid username
if (!self::IsValidUserName($username)) {
self::$badname = true;
$retval = TRUE;
}
// Check to make sure the cron is not a duplicate…
$sql = “SELECT COUNT(*) FROM x_ftpaccounts WHERE ft_user_vc=:userid AND ft_deleted_ts IS NULL”;
$numrows = $zdbh->prepare($sql);
$numrows->bindParam(‘:userid’, $username);

if ($numrows->execute()) {
if ($numrows->fetchColumn() <> 0) {
self::$alreadyexists = TRUE;
$retval = TRUE;
}
}
return $retval;
}

static function IsValidUserName($username)
{
return preg_match(‘/^[a-z\d_][a-z\d_-]{0,62}$/i’, $username) || preg_match(‘/-$/’, $username) == 1;
}

static function ExecuteDeleteFTP($ft_id_pk, $uid = null)
{
global $zdbh;
global $controller;

// Verify if Current user can Edit FTP Account.
$currentuser = ctrl_users::GetUserDetail($uid);

$sql = “SELECT * FROM x_ftpaccounts WHERE ft_acc_fk=:userid AND ft_id_pk=:editedUsrID AND ft_deleted_ts IS NULL”;
$numrows = $zdbh->prepare($sql);
$numrows->bindParam(‘:userid’, $currentuser[‘userid’]);
$numrows->bindParam(‘:editedUsrID’, $ft_id_pk);
$numrows->execute();

if( $numrows->rowCount() == 0 ) {
return;
}

// Delete User
runtime_hook::Execute(‘OnBeforeDeleteFTPAccount’);
$rowftpsql = “SELECT * FROM x_ftpaccounts WHERE ft_id_pk=:ftIdPk”;
$rowftpfind = $zdbh->prepare($rowftpsql);
$rowftpfind->bindParam(‘:ftIdPk’, $ft_id_pk);
$rowftpfind->execute();
$rowftp = $rowftpfind->fetch();

$sql = $zdbh->prepare(“UPDATE x_ftpaccounts SET ft_deleted_ts=:time WHERE ft_id_pk=:ftpid”);
$sql->bindParam(‘:ftpid’, $ft_id_pk);
$sql->bindParam(‘:time’, $ft_id_pk);
$sql->execute();
self::$delete = true;
// Include FTP server specific file here.
$FtpModuleFile = ‘modules/’ . $controller->GetControllerRequest(‘URL’, ‘module’) . ‘/code/’ . ctrl_options::GetSystemOption(‘ftp_php’);
if (file_exists($FtpModuleFile)) {
include($FtpModuleFile);
}
$retval = TRUE;
runtime_hook::Execute(‘OnAfterDeleteFTPAccount’);
return $retval;
}

/**
* End ‘worker’ methods.
*/

/**
* Webinterface sudo methods.
*/
static function doCreateFTP()
{
global $controller;
runtime_csfr::Protect();
$currentuser = ctrl_users::GetUserDetail();
$formvars = $controller->GetAllControllerRequests(‘FORM’);
if (self::ExecuteCreateFTP($currentuser[‘userid’], $formvars[‘inFTPUsername’], $formvars[‘inPassword’], $formvars[‘inDestination’], $formvars[‘inDomainDestination’], $formvars[‘inAccess’], $formvars[‘inAutoHome’])) {
self::$ok = true;
return true;
} else {
return false;
}
}

static function doDeleteFTP()
{
global $controller;
runtime_csfr::Protect();
$formvars = $controller->GetAllControllerRequests(‘FORM’);
if (self::ExecuteDeleteFTP($formvars[‘inDelete’]))
self::$ok = true;
return true;
}

static function doResetPassword()
{
global $controller;
runtime_csfr::Protect();
$formvars = $controller->GetAllControllerRequests(‘FORM’);
if (self::ExecuteResetPassword($formvars[‘inReset’], $formvars[‘inPassword’]))
self::$ok = true;
return true;
}

static function getClientList()
{
$currentuser = ctrl_users::GetUserDetail();
$clientlist = self::ListClients($currentuser[‘userid’]);
return (!fs_director::CheckForEmptyValue($clientlist)) ? $clientlist : false;
}

static function getDomainDirsList()
{
$currentuser = ctrl_users::GetUserDetail();
$domaindirectories = self::ListDomainDirs($currentuser[‘userid’]);
return (!fs_director::CheckForEmptyValue($domaindirectories)) ? $domaindirectories : false;
}

static function getMasterDirsList()
{
$currentuser = ctrl_users::GetUserDetail();
$domaindirectories = self::ListMasterDirs($currentuser[‘userid’]);
return (!fs_director::CheckForEmptyValue($domaindirectories)) ? $domaindirectories : false;
}

static function doEditFTP()
{
global $controller;
runtime_csfr::Protect();
$currentuser = ctrl_users::GetUserDetail();
$formvars = $controller->GetAllControllerRequests(‘FORM’);
foreach (self::ListClients($currentuser[‘userid’]) as $row) {
if (isset($formvars[‘inDelete_’ . $row[‘id’] . ”])) {
header(“location: ./?module=” . $controller->GetCurrentModule() . “&show=Delete&other=” . $row[‘id’]);
exit;
}
if (isset($formvars[‘inReset_’ . $row[‘id’] . ”])) {
header(“location: ./?module=” . $controller->GetCurrentModule() . “&show=Edit&other=” . $row[‘id’]);
exit;
}
}
return;
}

static function getisCreateFTP()
{
global $controller;
$urlvars = $controller->GetAllControllerRequests(‘URL’);
return !isset($urlvars[‘show’]);
}

static function getisDeleteFTP($uid = null)
{
global $controller;
global $zdbh;

$urlvars = $controller->GetAllControllerRequests(‘URL’);

// Verify if Current user can Edit FTP Account.
// This shall avoid exposing ftp username based on ID lookups.
$currentuser = ctrl_users::GetUserDetail($uid);

$sql = ” SELECT * FROM x_ftpaccounts WHERE ft_acc_fk=:userid AND ft_id_pk=:editedUsrID AND ft_deleted_ts IS NULL”;
$numrows = $zdbh->prepare($sql);
$numrows->bindParam(‘:userid’, $currentuser[‘userid’]);
$numrows->bindParam(‘:editedUsrID’, $urlvars[‘other’]);
$numrows->execute();

if( $numrows->rowCount() == 0 ) {
return;
}

// Show User Info
return (isset($urlvars[‘show’])) && ($urlvars[‘show’] == “Delete”);
}

static function getisEditFTP($uid = null)
{
global $controller;
global $zdbh;

$urlvars     = $controller->GetAllControllerRequests(‘URL’);

// Verify if Current user can Edit FTP Account.
// This shall avoid exposing ftp username based on ID lookups.
$currentuser = ctrl_users::GetUserDetail($uid);

$sql = ” SELECT * FROM x_ftpaccounts WHERE ft_acc_fk=:userid AND ft_id_pk=:editedUsrID AND ft_deleted_ts IS NULL”;
$numrows = $zdbh->prepare($sql);
$numrows->bindParam(‘:userid’, $currentuser[‘userid’]);
$numrows->bindParam(‘:editedUsrID’, $urlvars[‘other’]);
$numrows->execute();

if( $numrows->rowCount() == 0 ) {
return;
}

// Show User Info
return (isset($urlvars[‘show’])) && ($urlvars[‘show’] == “Edit”);
}

static function getEditCurrentName()
{
global $controller;
if ($controller->GetControllerRequest(‘URL’, ‘other’)) {
$current = self::ListCurrentClient($controller->GetControllerRequest(‘URL’, ‘other’));
return $current[0][‘username’];
} else {
return “”;
}
}

static function getEditCurrentID()
{
global $controller;
if ($controller->GetControllerRequest(‘URL’, ‘other’)) {
$current = self::ListCurrentClient($controller->GetControllerRequest(‘URL’, ‘other’));
return $current[0][‘id’];
} else {
return “”;
}
}

static function getQuotaLimit()
{
$currentuser = ctrl_users::GetUserDetail();
return ($currentuser[‘ftpaccountsquota’] < 0 ) or //-1 = unlimited
($currentuser[‘ftpaccountsquota’] > ctrl_users::GetQuotaUsages(‘ftpaccounts’, $currentuser[‘userid’]));
}

static function getFTPUsagepChart()
{
global $controller;
$currentuser = ctrl_users::GetUserDetail();
$maximum = $currentuser[‘ftpaccountsquota’];
if ($maximum < 0) { //-1 = unlimited
if (file_exists(ui_tpl_assetfolderpath::Template() . ‘img/misc/unlimited.png’)) {
return ‘<img src=”‘ . ui_tpl_assetfolderpath::Template() . ‘img/misc/unlimited.png” alt=”‘ . ui_language::translate(‘Unlimited’) . ‘”/>’;
} else {
return ‘<img src=”modules/’ . $controller->GetControllerRequest(‘URL’, ‘module’) . ‘/assets/unlimited.png” alt=”‘ . ui_language::translate(‘Unlimited’) . ‘”/>’;
}
} else {
$used = ctrl_users::GetQuotaUsages(‘ftpaccounts’, $currentuser[‘userid’]);
$free = max($maximum – $used, 0);
return ‘<img src=”etc/lib/pChart2/sentora/z3DPie.php?score=’ . $free . ‘::’ . $used
. ‘&labels=Free: ‘ . $free . ‘::Used: ‘ . $used
. ‘&legendfont=verdana&legendfontsize=8&imagesize=240::190&chartsize=120::90&radius=100&legendsize=150::160″‘
. ‘ alt=”‘ . ui_language::translate(‘Pie chart’) . ‘”/>’;
}
}

static function getResult()
{
if (!fs_director::CheckForEmptyValue(self::$blank)) {
return ui_sysmessage::shout(ui_language::translate(“You must enter a valid username and password to create your FTP account.”), “zannounceerror”);
}
if (!fs_director::CheckForEmptyValue(self::$alreadyexists)) {
return ui_sysmessage::shout(ui_language::translate(“An FTP account with that name already exists.”), “zannounceerror”);
}
if (!fs_director::CheckForEmptyValue(self::$error)) {
return ui_sysmessage::shout(ui_language::translate(“There was an error updating your FTP accounts.”), “zannounceerror”);
}
if (!fs_director::CheckForEmptyValue(self::$badname)) {
return ui_sysmessage::shout(ui_language::translate(“Your ftp account name is not valid. Please enter a valid ftp account name.”), “zannounceerror”);
}
if (!fs_director::CheckForEmptyValue(self::$invalidPath)) {
return ui_sysmessage::shout(ui_language::translate(“Invalid Folder.”), “zannounceok”);
}
if (!fs_director::CheckForEmptyValue(self::$ok)) {
return ui_sysmessage::shout(ui_language::translate(“FTP accounts updated successfully.”), “zannounceok”);
}
return;
}

/**
* Webinterface sudo methods.
*/
}


/etc/sentora/panel/modules/ftp_management/module.zpm   içeriğini aşağıdakiyle

————————————————————————————————-

<div class=”zmodule_content panel” id=”zmodule_header_<@ ModuleName @>”>
<div class=”panel-heading”>
<img src=”<@ ModuleIcon @>” width=”35″ height=”35″ border=”0″ alt=”<@ ModuleName @>”>

<div class=”zmodule_title”>
<@ ModuleName @>
</div>

<div class=”zmodule_desc” id=”zmodule_desc_<@ ModuleName @>”><@ ModuleDesc @></div>

</div>

<@ Result @>

<% if isDeleteFTP %>
<div class=”zform_wrapper alert alert-danger”>
<h2><: Delete FTP account :>: <@ EditCurrentName @> ?</h2>
<p><: Please confirm that you want to delete this FTP account. :></p>
<form action=”./?module=ftp_management&action=DeleteFTP” method=”post”>
<table class=”none” cellpadding=”0″ cellspacing=”0″>
<tr>
<td colspan=”2″ align=”right”>
<input type=”hidden” name=”inDelete” value=”<@ EditCurrentID @>”>
<button class=”button-loader delete btn btn-danger” type=”submit” ><: Delete :></button>
<button class=”button-loader btn btn-default” type=”button” onclick=”window.location.href=’./?module=ftp_management’;return false;”><: Cancel :></button>
</td>
</tr>
</table>
<@ CSFR_Tag @>
</form>
</div>
<% endif %>

<% if isEditFTP %>
<div class=”zform_wrapper”>
<h2><: Reset FTP Password for user :>: <@ EditCurrentName @></h2>
<form action=”./?module=ftp_management&action=ResetPassword” method=”post”>
<table class=”table table-striped”>
<tr>
<th><: Username :>:</th>
<td><@ EditCurrentName @></td>
<td></td>
</tr>
<tr>
<th><: New password :>:</th>
<td><input name=”inPassword” type=”text” id=”input-password” size=”30″ maxlength=”50″ /></td>
<td><button class=”button-loader btn btn-default” type=”submit” name=”inReset” id=”button” value=”<@ EditCurrentID @>”><: Reset Password :>
</button>
<button class=”button-loader btn btn-default” type=”button” onclick=”window.location.href=’./?module=ftp_management’;return false;”><: Cancel :></button></td>
</tr>
<tr>
<th></th>
<td><a href=”#” class=”link-password” id=”generate”><: Generate Password :></a></td>
<td></td>
</tr>
</table>
<@ CSFR_Tag @>
</form>
</div>
<% endif %>

<div class=”zgrid_wrapper”>
<h2><: Current FTP accounts :></h2>
<% if ClientList %>
<form action=”./?module=ftp_management&action=EditFTP” method=”post”>
<table class=”table table-striped”>
<colgroup>
<col>
<col>
<col>
<col>
<col>
</colgroup>
<tr>
<th><: Account name :></th>
<th><: Home directory :></th>
<th><: Permission :></th>
<th><: Password :></th>
<th><button class=”button btn btn-default” id=”btn_sh”>Show Passwords</button></th>
</tr>
<% loop ClientList %>
<tr>
<td><& username &></td>
<td><& directory &></td>
<td><& access &></td>
<td><span class=”passRow” style=”visibility: collapse”><& password &></span></td>
<td>
<button class=”button-loader btn btn-default” type=”submit” name=”inReset_<& id &>” id=”button” value=”inReset_<& id &>”><: Reset Password :></button>
<button class=”button-loader delete btn btn-danger” type=”submit” name=”inDelete_<& id &>” id=”button” value=”inDelete_<& id &>”><: Delete :></button>
</td>
</tr>
<% endloop %>
</table>
<@ CSFR_Tag @>
</form>
<% else %>
<: You do not have any FTP Accounts setup. Create an FTP account using the form below. :>
<% endif %>
</div>

<% if isCreateFTP %>
<div class=”zform_wrapper”>
<table class=”none” width=”100%” cellborder=”0″ cellspacing=”0″><tr valign=”top”>
<tr valign=”top”>
<td>
<h2><: Create a new FTP Account :></h2>
<% if QuotaLimit %>
<form action=”./?module=ftp_management&action=CreateFTP” method=”post”>
<table class=”table table-striped”>
<tr>
<th nowrap=”nowrap”><: Username :>:</th>
<td><# ui_tpl_username #>_<input name=”inFTPUsername” type=”text” id=”inFTPUsername” size=”30″ value=”” maxlength=”50″/></td>
</tr>
<tr>
<th><: Password :>:</th>
<td><input name=”inPassword” type=”password” id=”inPassword” size=”30″ maxlength=”50″ /></td>
</tr>
<tr>
<th nowrap=”nowrap”><: Access type :>:</th>
<td><select name=”inAccess” size=”1″>
<option value=”RO” selected=”selected”><: Read-only :></option>
<option value=”WO”><: Write-only :></option>
<option value=”RW”><: Full access :></option>
</select></td>
</tr>
<tr>
<th nowrap=”nowrap”><: Home directory :>:</th>
<td><input name=”inAutoHome” type=”radio” id=”inAutoHome” value=”1″ onclick=”hide_div(‘showmasterselect’)&hide_div(‘showdomainselect’);” CHECKED />&nbsp;<: Create a new home directory :></td>
</tr>
<tr>
<th>&nbsp;</th>
<td><input name=”inAutoHome” type=”radio” id=”inAutoHome” value=”2″ onclick=”show_div(‘showmasterselect’)&hide_div(‘showdomainselect’);” />&nbsp;<: Set Master home directory :></td>
</tr>
<tr>
<th>&nbsp;</th>
<td>
<div id=”showmasterselect” style=”display:none;”>
<select name=”inDestination” id=”inDestination”>
<option value=””>/ (root)</option>
<% loop MasterDirsList %>
<option value=”<& domains &>”>/<& domains &></option>
<% endloop %>
</select>
</div>
</td>
</tr>
<tr>
<th>&nbsp;</th>
<td><input name=”inAutoHome” type=”radio” id=”inAutoHome” value=”3″ onclick=”show_div(‘showdomainselect’)&hide_div(‘showmasterselect’);” />&nbsp;<: Use Domain directory :></td>
</tr>
<tr>
<th>&nbsp;</th>
<td>
<div id=”showdomainselect” style=”display:none;”>
<select name=”inDomainDestination” id=”inDomainDestination”>
<option value=””>/ (root)</option>
<% loop DomainDirsList %>
<option value=”public_html/<& domains &>”>/<& domains &></option>
<% endloop %>
</select>
</div>
</td>
</tr>
<tr>
<th colspan=”2″ align=”right”>
<button class=”button-loader btn btn-primary” type=”submit” name=”inSubmit” id=”inSubmit” value=””><: Create :></button></th>
</tr>
</table>
<@ CSFR_Tag @>
</form>
<% else %>
<: You have reached your FTP account limit! :>
<% endif %>
</td>
<td align=”right”><@ FTPUsagepChart @></td>
</tr>
</table>
</div>
<% endif %>

</div>

<script type=”text/javascript”>
<!–
function show_div(id) {
var e = document.getElementById(id);
if(e.style.display == ‘none’)
e.style.display = ‘block’;
}
//–>
</script>
<script type=”text/javascript”>
<!–
function hide_div(id) {
var e = document.getElementById(id);
if(e.style.display == ‘block’)
e.style.display = ‘none’;
}
//–>
</script>
<script type=”text/JavaScript”>
$.extend({
password: function (length, special) {
var iteration = 0;
var password = “”;
var randomNumber;
if(special == undefined){
var special = false;
}
while(iteration < length){
randomNumber = (Math.floor((Math.random() * 100)) % 94) + 33;
if(!special){
if ((randomNumber >=33) && (randomNumber <=47)) { continue; }
if ((randomNumber >=58) && (randomNumber <=64)) { continue; }
if ((randomNumber >=91) && (randomNumber <=96)) { continue; }
if ((randomNumber >=123) && (randomNumber <=126)) { continue; }
}
iteration++;
password += String.fromCharCode(randomNumber);
}
return password;
}
});
$(document).ready(function() {
var ShowPass = false;
$(‘.link-password’).click(function(e){
linkId = $(this).attr(‘id’);
if (linkId == ‘generate’){
password = $.password(9,false);
$(‘#input-password’).val(password);
}
e.preventDefault();
});
$(‘#btn_sh’).click(function(e){
if (!ShowPass)
{
$(‘.passRow’).css({‘visibility’: ‘visible’});
$(‘#btn_sh’).html(‘Hide passwords’);
ShowPass = true;
}
else
{
$(‘.passRow’).css({‘visibility’: ‘collapse’});
$(‘#btn_sh’).html(‘Show passwords’);
ShowPass = false;
}
e.preventDefault();
});

});
</script>

————————————————————————————————-

değiştirin.

PHPMYADMIN Export İşlemlerinde Boş Sayfa Geliyorsa

/etc/sentora/panel/etc/apps/phpmyadmin/export.php 864 satırda

break 2;

yi

break;

değiştirin.