CVE-2019-25096 (published 2023-01-05T08:15Z)

A vulnerability has been found in soerennb eXtplorer up to 2.1.12 and classified as problematic. Affected by this vulnerability is an unknown functionality. The manipulation leads to cross site scripting. The attack can be launched remotely. Upgrading to version 2.1.13 is able to address this issue. The patch is named b8fcb888f4ff5e171c16797a4b075c6c6f50bf46. It is recommended to upgrade the affected component. The associated identifier of this vulnerability is VDB-217435.

CVSS v3 base score: 6.1, MEDIUM (CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N)

Weakness information:
cwe_id: CWE-79
cwe_name: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')
description: The product does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users.
extended_description: 
            Cross-site scripting (XSS) vulnerabilities occur when:
            
               Untrusted data enters a web application, typically from a web request.
               The web application dynamically generates a web page that contains this untrusted data.
               During page generation, the application does not prevent the data from containing content that is executable by a web browser, such as JavaScript, HTML tags, HTML attributes, mouse events, Flash, ActiveX, etc.
               A victim visits the generated web page through a web browser, which contains malicious script that was injected using the untrusted data.
               Since the script comes from a web page that was sent by the web server, the victim's web browser executes the malicious script in the context of the web server's domain.
               This effectively violates the intention of the web browser's same-origin policy, which states that scripts in one domain should not be able to access resources or run code in a different domain.
            
            There are three main kinds of XSS:
            
               
                  Type 1: Reflected XSS (or Non-Persistent) - 
         			The server reads data directly from the HTTP request and reflects it back in the HTTP response. Reflected XSS exploits occur when an attacker causes a victim to supply dangerous content to a vulnerable web application, which is then reflected back to the victim and executed by the web browser. The most common mechanism for delivering malicious content is to include it as a parameter in a URL that is posted publicly or e-mailed directly to the victim. URLs constructed in this manner constitute the core of many phishing schemes, whereby an attacker convinces a victim to visit a URL that refers to a vulnerable site. After the site reflects the attacker's content back to the victim, the content is executed by the victim's browser.
               
                  Type 2: Stored XSS (or Persistent) - 
               The application stores dangerous data in a database, message forum, visitor log, or other trusted data store. At a later time, the dangerous data is subsequently read back into the application and included in dynamic content. From an attacker's perspective, the optimal place to inject malicious content is in an area that is displayed to either many users or particularly interesting users. Interesting users typically have elevated privileges in the application or interact with sensitive data that is valuable to the attacker. If one of these users executes malicious content, the attacker may be able to perform privileged operations on behalf of the user or gain access to sensitive data belonging to the user. For example, the attacker might inject XSS into a log message, which might not be handled properly when an administrator views the logs.
            
               
                  Type 0: DOM-Based XSS - 
               In DOM-based XSS, the client performs the injection of XSS into the page; in the other types, the server performs the injection. DOM-based XSS generally involves server-controlled, trusted script that is sent to the client, such as Javascript that performs sanity checks on a form before the user submits it. If the server-supplied script processes user-supplied data and then injects it back into the web page (such as with dynamic HTML), then DOM-based XSS is possible.
            
            
            Once the malicious script is injected, the attacker can perform a variety of malicious activities. The attacker could transfer private information, such as cookies that may include session information, from the victim's machine to the attacker. The attacker could send malicious requests to a web site on behalf of the victim, which could be especially dangerous to the site if the victim has administrator privileges to manage that site. Phishing attacks could be used to emulate trusted web sites and trick the victim into entering a password, allowing the attacker to compromise the victim's account on that web site. Finally, the script could exploit a vulnerability in the web browser itself possibly taking over the victim's machine, sometimes referred to as "drive-by hacking."
            In many cases, the attack can be launched without the victim even being aware of it. Even with careful users, attackers frequently use a variety of methods to encode the malicious portion of the attack, such as URL encoding or Unicode, so the request looks less suspicious.
         
         

Fix information:
repo_url: https://github.com/soerennb/extplorer
commit_details: repo_url: https://github.com/soerennb/extplorer
author: Sören
author_date: 2019-05-15 10:53:07+02:00
msg: - fixed various security issues reported by Mario Korth:
  * potential XSS
  * Arbitrary file read
  * Path traversal in listing directory contents
  * Path traversal in archive feature
- added new turkish translations
repository: repo_url: https://github.com/soerennb/extplorer
repo_name: soerennb/extplorer
description: eXtplorer is a PHP-based File Manager
repo_language: PHP
owner: soerennb
file_changes: filename: CHANGELOG.txt
change_type: ModificationType.MODIFY
diff: @@ -2,6 +2,15 @@
 Changelog for eXtplorer
 Version $Id: CHANGELOG.txt 249 2016-12-11 16:11:03Z soeren $
 ****************************
+
+--- version 2.1.13 ---
+- fixed various security issues reported by Mario Korth:
+  * potential XSS 
+  * Arbitrary file read
+  * Path traversal in listing directory contents
+  * Path traversal in archive feature
+- added new turkish translations 
+
 --- version 2.1.12 ---
 - fixed wrong version display
 - fixed empty language selector

programming_language: Markdown
filename: admin.extplorer.php
change_type: ModificationType.MODIFY
diff: @@ -162,6 +162,10 @@ if( class_exists(strtolower($classname)) && is_callable(array($classname,'execac
 				$requestedDir = $dir;
 			}
 			
+			if (!down_home(get_abs_dir($requestedDir))) {
+			    ext_Result::sendResult('', false, $requestedDir.": ".$GLOBALS["error_msg"]["abovehome"]);
+			    $requestedDir = '';
+			}
 			send_dircontents( $requestedDir, extGetParam($_REQUEST,'sendWhat','files') );
 			break;
 	case 'get_dir_selects':

programming_language: PHP
filename: archive.php
change_type: ModificationType.MODIFY
diff: @@ -99,7 +99,7 @@ class ext_Archive extends ext_Action {
 			if( $startfrom == 0 ) {
 				for($i=0;$i<$cnt;$i++) {
 
-					$selitem=stripslashes($GLOBALS['__POST']["selitems"][$i]);
+					$selitem=basename(stripslashes($GLOBALS['__POST']["selitems"][$i]));
 					if( $selitem == 'ext_root') { 
 						$selitem = '';
 					}
@@ -193,7 +193,7 @@ class ext_Archive extends ext_Action {
 			"xtype": "textfield",
 			"fieldLabel": "<?php echo ext_Lang::msg('archive_name', true ) ?>",
 			"name": "name",
-			"value": "<?php echo $GLOBALS['item'] . '.'. $default_archive_type ?>",
+			"value": "<?php echo htmlspecialchars($GLOBALS['item'], ENT_QUOTES) . '.'. $default_archive_type ?>",
 			"width": "200"
 		},
 		{

programming_language: PHP
filename: chmod.php
change_type: ModificationType.MODIFY
diff: @@ -82,7 +82,7 @@ class ext_Chmod extends ext_Action {
 				} else {
 					$mode = bindec($bin);
 				}
-				$item = $GLOBALS['__POST']["selitems"][$i];
+				$item = html_entity_decode($GLOBALS['__POST']["selitems"][$i], ENT_QUOTES);
 				if( ext_isFTPMode() ) {
 					$abs_item = get_item_info( $dir,$item);
 				} else {
@@ -151,7 +151,7 @@ class ext_Chmod extends ext_Action {
 		"labelWidth": 125,
 		"url":"<?php echo basename( $GLOBALS['script_name']) ?>",
 		"dialogtitle": "<?php echo ext_Lang::msg('actperms') ?>",
-		"title" : "<?php echo $text  ?>",
+		"title" : "<?php echo htmlspecialchars($text,ENT_QUOTES)  ?>",
 		"frame": true,
 		"items": [{
 			"layout": "column",
@@ -212,8 +212,8 @@ class ext_Chmod extends ext_Action {
 				params: {
 					"option": "com_extplorer", 
 					"action": "chmod", 
-					"dir": "<?php echo stripslashes($GLOBALS['__POST']["dir"]) ?>", 
-					"selitems[]": ['<?php echo implode("','", $GLOBALS['__POST']["selitems"]) ?>'], 
+					"dir": "<?php echo stripslashes(htmlentities($GLOBALS['__POST']["dir"],ENT_QUOTES)) ?>", 
+					"selitems[]": ['<?php echo htmlentities(implode("','", $GLOBALS['__POST']["selitems"]),ENT_QUOTES) ?>'], 
 					confirm: 'true',
 					token: "<?php echo ext_getToken() ?>"
 				}

programming_language: PHP
filename: functions.php
change_type: ModificationType.MODIFY
diff: @@ -571,10 +571,13 @@ function down_home($abs_dir) {			// dir deeper than home?
 	}
 	$real_home = @realpath($GLOBALS["home_dir"]);
 	$real_dir = @realpath($abs_dir);
+	if( $real_dir == '' ) $real_dir = dirname( $abs_dir );
+	if( $real_home == '' ) $real_home = $_SERVER['DOCUMENT_ROOT'];
+	//echo 'NOW: $real_home = '.$real_home;
+	//echo ', $real_dir = '.$real_dir;
 
-	if($real_home===false || $real_dir===false) {
-		if(@stristr($abs_dir,"\\.\\.")) return false;
-	} else if(strcmp($real_home,@substr($real_dir,0,strlen($real_home)))) {
+	if(@stristr($abs_dir,"\\.\\.")) return false;
+	if(strcmp($real_home,@substr($real_dir,0,strlen($real_home)))) {
 		return false;
 	}
 	return true;

programming_language: PHP
filename: init.php
change_type: ModificationType.MODIFY
diff: @@ -236,6 +236,7 @@ if (ext_isFTPMode() && $dir != '') {
 	$GLOBALS['FTPCONNECTION']->cd( $dir );
 }
 
+//echo "Down home: ".down_home( "/etc/passwd" );exit;
 $abs_dir=get_abs_dir($GLOBALS["dir"]);
 
 if (!file_exists($GLOBALS["home_dir"])) {
@@ -257,7 +258,7 @@ if (!$GLOBALS['ext_conf']['symlink_allow_abovehome']) {
 }
 
 if (!get_is_dir(utf8_decode($abs_dir)) && !get_is_dir($abs_dir.$GLOBALS["separator"])) {
-	ext_Result::sendResult('', false, '"'.$abs_dir.'" - '.$GLOBALS["error_msg"]["direxist"]);
+	ext_Result::sendResult('', false, '"'.htmlspecialchars($abs_dir,ENT_QUOTES).'" - '.$GLOBALS["error_msg"]["direxist"]);
 	$dir = '';
 }
 

programming_language: PHP
filename: mkitem.php
change_type: ModificationType.MODIFY
diff: @@ -68,6 +68,9 @@ class ext_Mkitem extends ext_Action {
 				if( empty( $symlink_target )) {
 					ext_Result::sendResult( 'mkitem', false, 'Please provide a valid <strong>target</strong> for the symbolic link.');
 				}
+				if (!down_home(dirname($symlink_target))) {
+				    ext_Result::sendResult('', false, $symlink_target.": ".$GLOBALS["error_msg"]["abovehome"]);
+				}
 				if( !file_exists($symlink_target) || !is_readable($symlink_target)) {
 					ext_Result::sendResult( 'mkitem', false, 'The file you wanted to make a symbolic link to does not exist or is not accessible by PHP.');
 				}

programming_language: PHP
filename: result.class.php
change_type: ModificationType.MODIFY
diff: @@ -126,7 +126,7 @@ class ext_Result {
 
 				foreach ( $_SESSION['ext_message'] as $msgtype ) {
 					foreach ( $msgtype as $message ) {
-						$messagetxt .= $message .'<br/>';
+					    $messagetxt .= htmlspecialchars($message, ENT_QUOTES ) .'<br/>';
 					}
 					$messagetxt .= '<br /><hr /><br />';
 				}
@@ -143,7 +143,7 @@ class ext_Result {
 
 				foreach ( $_SESSION['ext_error'] as $errortype ) {
 					foreach ( $errortype as $error ) {
-						$messagetxt .= $error .'<br/>';
+					    $messagetxt .=  htmlspecialchars($error, ENT_QUOTES ) .'<br/>';
 					}
 					$messagetxt .= '<br /><hr /><br />';
 				}

programming_language: PHP
filename: search.php
change_type: ModificationType.MODIFY
diff: @@ -248,7 +248,7 @@ function get_result_array($list) {			// print table of found items
 		$array[$i]['file_id'] = md5($s_dir.$s_item);
 		$array[$i]['dir'] = str_ireplace($GLOBALS['home_dir'], '', $dir );
 		$array[$i]['s_dir'] = empty($s_dir) ? '' : $s_dir;
-		$array[$i]['file'] = $s_item;
+		$array[$i]['file'] = htmlentities($s_item, ENT_QUOTES );
 		$array[$i]['link'] = $link;
 		$array[$i]['icon'] = _EXT_URL."/images/$img";
 	}

programming_language: PHP
filename: turkish.php
change_type: ModificationType.MODIFY
diff: @@ -1,6 +1,6 @@
-﻿<?php
+<?php
 
-// Turkish Language for eXtplorer (Translated by Sinan Ata, Tolga'(cumla.blogspot.com))
+// Turkish Language for eXtplorer v2.1.12 (Translated by Mehmet Taş)
 global $_VERSION;
 
 $GLOBALS["charset"] = "UTF-8";
@@ -10,10 +10,10 @@ $GLOBALS["error_msg"] = array(
 	// error
 	"error"			=> "Hata(lar)",
 	"message"		=> "Mesaj(lar)",
-	"back"			=> "Geri Gel",
+	"back"			=> "Geri Al",
 	
 	// root
-	"home"			=> "Ana klasör oluşturulmamış ayarlarınızı kontrol edin.",
+	"home"			=> "Ana klasör oluşturulmamış. Ayarlarınızı kontrol edin.",
 	"abovehome"		=> "Bu klasör ana klasörün üstünde olmamalıdır.",
 	"targetabovehome"	=> "Hedef klasör ana klasörün üstünde olmamalıdır.",
 	
@@ -39,7 +39,7 @@ $GLOBALS["error_msg"] = array(
 	
 	// actions
 	"permread"		=> "İzin gösterimi başarısız.",
-	"permchange"		=> "İzin değiştirme başarısız. (sebebi dosya sahiplik sorunu olabilir)",
+	"permchange"		=> "İzin değiştirme başarısız. (Nedeni dosya sahiplik sorunu olabilir.)",
 	"openfile"		=> "Dosya açılması başarısız.",
 	"savefile"		=> "Dosya kaydı başarısız.",
 	"createfile"		=> "Dosya oluşturma başarısız.",
@@ -56,7 +56,7 @@ $GLOBALS["error_msg"] = array(
 	
 	// misc
 	"miscnofunc"		=> "Fonksiyon kullanılabilir.",
-	"miscfilesize"		=> "Dosya maksimum boyutu aştı.",
+	"miscfilesize"		=> "Dosya en büyük boyutu aştı.",
 	"miscfilepart"		=> "Dosyanın yalnızca bir kısmı yüklenebildi.",
 	"miscnoname"		=> "Bir isim girmelisiniz.",
 	"miscselitems"		=> "Hiçbir öğe(ler) seçmediniz.",
@@ -69,13 +69,13 @@ $GLOBALS["error_msg"] = array(
 	"miscselfremove"	=> "Kendinizi silemezsiniz.",
 	"miscuserexist"		=> "Kullanıcı zaten var.",
 	"miscnofinduser"	=> "Kullanıcı bulunamadı.",
-	"extract_noarchive" => "The File is no extractable Archive.",
+	"extract_noarchive" => "Dosya uygun arşivlenmemiş.",
 	"extract_unknowntype" => "Bilinmeyen arşiv türü",
 
-	'chmod_none_not_allowed' => 'Changing Permissions to <none> is not allowed',
-	'archive_dir_notexists' => 'The Save-To Directory you have specified does not exist.',
-	'archive_dir_unwritable' => 'Please specify a writable directory to save the archive to.',
-	'archive_creation_failed' => 'Failed saving the Archive File'
+	'chmod_none_not_allowed' => 'İzinleri <hiçbiri> olarak değiştirmek yasaktır',
+	'archive_dir_notexists' => 'Belirlediğiniz Kaydetme Dizini mevcut değil.',
+	'archive_dir_unwritable' => 'Arşiv kaydetmek için lütfen yazılabilir dizin belirtin.',
+	'archive_creation_failed' => 'Arşiv Dosyasını Kaydetme Başarısız'
 	
 );
 $GLOBALS["messages"] = array(
@@ -84,20 +84,20 @@ $GLOBALS["messages"] = array(
 	"editlink"		=> "Değiştir",
 	"downlink"		=> "İndir",
 	"uplink"		=> "Yukarı",
-	"homelink"		=> "Başa Dön",
+	"homelink"		=> "Anadizin",
 	"reloadlink"		=> "Yenile",
 	"copylink"		=> "Kopyala",
 	"movelink"		=> "Taşı",
 	"dellink"		=> "Sil",
-	"comprlink"		=> "Depola",
+	"comprlink"		=> "Sıkıştır",
 	"adminlink"		=> "Yönetici",
 	"logoutlink"		=> "Çıkış",
 	"uploadlink"		=> "Yükle",
 	"searchlink"		=> "Ara",
-	"extractlink"	=> "Extract Archive",
-	'chmodlink'		=> 'İzinleri (chmod) Değiştir (Klasör/Dosya(lar))', // new mic
+	"extractlink"	        => "Arşivi Çıkart",
+	'chmodlink'		=> 'İzinleri (Chmod) Değiştir', // new mic
 	'mossysinfolink'	=> 'eXtplorer Sistem Bilgisi (eXtplorer, Server, PHP, mySQL)', // new mic
-	'logolink'		=> 'eXtplorer Websitesine git (yeni pencerede)', // new mic
+	'logolink'		=> 'eXtplorer Websitesine Git (yeni pencerede)', // new mic
 	
 	// list
 	"nameheader"		=> "İsim",
@@ -127,7 +127,7 @@ $GLOBALS["messages"] = array(
 	
 	// user messages, new in eXtplorer 1.3.0
 	'renamelink'	=> 'Yeniden Adlandır',
-	'confirm_delete_file' => 'Bu dosyayı silmek istediğinize eminmisiniz? <br />%s',
+	'confirm_delete_file' => 'Bu dosyayı silmek istediğinizden emin misiniz? <br />%s',
 	'success_delete_file' => 'Öğe(ler) başarıyla silindi.',
 	'success_rename_file' => 'Dizin/dosya %s başarıyla yeniden adlandırıldı  %s.',
 	
@@ -155,29 +155,29 @@ $GLOBALS["messages"] = array(
 	"miscpassword"		=> "Şifre",
 	"miscoldpass"		=> "Eski Şifre",
 	"miscnewpass"		=> "Yeni Şifre",
-	"miscconfpass"		=> "Şifreyi Onayla",
-	"miscconfnewpass"	=> "Yeni Şifeyi Onayla",
+	"miscconfpass"		=> "Şifreyi Onaylayın",
+	"miscconfnewpass"	=> "Yeni Şifeyi Onaylayın",
 	"miscchpass"		=> "Şifre Değiştir",
 	"mischomedir"		=> "Ana Klasör",
 	"mischomeurl"		=> "Baş URL",
-	"miscshowhidden"	=> "Gizli öğeleri Göster",
+	"miscshowhidden"	=> "Gizli Öğeleri Gösterin",
 	"mischidepattern"	=> "Resim Gizle",
 	"miscperms"		=> "İzinler",
 	"miscuseritems"		=> "(isim, ana klasör, gizli öğeleri göster, izinler, Aktif)",
-	"miscadduser"		=> "Kullanıcı ekle",
-	"miscedituser"		=> "'%s' kullanıcısını değiştir",
+	"miscadduser"		=> "Kullanıcı ekleyin",
+	"miscedituser"		=> "'%s' kullanıcısını değiştirin",
 	"miscactive"		=> "Aktif",
 	"misclang"		=> "Dil",
 	"miscnoresult"		=> "Hiç sonuç yok.",
-	"miscsubdirs"		=> "Alt kategorileri de ara",
+	"miscsubdirs"		=> "Alt kategorileri de arayın",
 	"miscpermnames"		=> array("Sadece bakılabilir","Modifiye","Şifre değiştir","Modifiye & Şifre Değiştir",
 					"Yönetici"),
 	"miscyesno"		=> array("Evet","Hayır","E","H"),
-	"miscchmod"		=> array("Sahip", "Grup", "Halk"),
+	"miscchmod"		=> array("Sahip", "Grup", "Genel"),
 
 	// from here all new by mic
 	'miscowner'			=> 'Sahip',
-	'miscownerdesc'		=> '<strong>Açıklama:</strong><br />User (UID) /<br />Group (GID)<br />Current rights:<br /><strong> %s ( %s ) </strong>/<br /><strong> %s ( %s )</strong>',
+	'miscownerdesc'		=> '<strong>Açıklama:</strong><br />Kullanıcı (UID) /<br />Grup (GID)<br />Mevcut Haklar:<br /><strong> %s ( %s ) </strong>/<br /><strong> %s ( %s )</strong>',
 
 	// sysinfo (new by mic)
 	'simamsysinfo'		=> "eXtplorer Sistem Bilgisi",
@@ -185,44 +185,46 @@ $GLOBALS["messages"] = array(
 	'sibuilton'			=> 'İşletim Sistemi',
 	'sidbversion'		=> 'Veritabanı Sürümü (MySQL)',
 	'siphpversion'		=> 'PHP Sürümü',
-	'siphpupdate'		=> 'Bilgi: <span style="color: red;">The PHP version you use is <strong>not</strong> actual!</span><br />To guarantee all functions and features of '.$_VERSION->PRODUCT.' and addons,<br />you should use as minimum <strong>PHP.Version 4.3</strong>!',
-	'siwebserver'		=> 'Webserver',
+	'siphpupdate'		=> 'Bilgi: <span style="color: red;">Kullandığınız PHP sürümü <strong>güncel değil!</strong></span><br />'.$_VERSION->PRODUCT.' tüm ekleriyle fonksiyonlarını ve özelliklerini garantilemek için <br />en düşük <strong>PHP sürümü 4.3</strong> kullanmalısınız!',
+	'siwebserver'		=> 'Web Sunucu',
 	'siwebsphpif'		=> 'WebServer - PHP Interface',
 	'simamboversion'	=> 'eXtplorer Sürümü',
 	'siuseragent'		=> 'Tarayıcı Sürümü',
 	'sirelevantsettings' => 'Önemli PHP Ayarları',
-	'sisafemode'		=> 'Safe Mode',
+	'sisafemode'		=> 'Güvenli Mod',
 	'sibasedir'			=> 'Open basedir',
 	'sidisplayerrors'	=> 'PHP Hataları',
-	'sishortopentags'	=> 'Short Open Tags',
-	'sifileuploads'		=> 'File Uploads',
+	'sishortopentags'	=> 'Kısa Açık Etiketler',
+	'sifileuploads'		=> 'Dosya Yüklemeleri',
 	'simagicquotes'		=> 'Magic Quotes',
-	'siregglobals'		=> 'Register Globals',
+	'siregglobals'		=> 'Genel Kayıtlar',
 	'sioutputbuf'		=> 'Output Buffer',
 	'sisesssavepath'	=> 'Session Savepath',
 	'sisessautostart'	=> 'Session auto start',
-	'sixmlenabled'		=> 'XML enabled',
-	'sizlibenabled'		=> 'ZLIB enabled',
-	'sidisabledfuncs'	=> 'Non enabled functions',
-	'sieditor'			=> 'WYSIWYG Editor',
-	'siconfigfile'		=> 'Config file',
+	'sixmlenabled'		=> 'XML Etkin',
+	'sizlibenabled'		=> 'ZLIB Etkin',
+	'sidisabledfuncs'	=> 'Etkin Olmayan İşlevler',
+	'sieditor'			=> 'WYSIWYG Editör',
+	'siconfigfile'		=> 'Yapılandırma Dosyası',
 	'siphpinfo'			=> 'PHP Bilgisi',
 	'siphpinformation'	=> 'PHP Information',
 	'sipermissions'		=> 'İzinler',
 	'sidirperms'		=> 'Dizin izinleri',
-	'sidirpermsmess'	=> 'To be shure that all functions and features of '.$_VERSION->PRODUCT.' are working correct, following folders should have permission to write [chmod 0777]',
-	'sionoff'			=> array( 'On', 'Off' ),
+	'sidirpermsmess'	=> 'Şu uygulamanın '.$_VERSION->PRODUCT.' tüm işlevleri ve özelliklerinin doğru çalıştığından emin olmak için, aşağıdaki klasörlerin yazma izinleri [chmod 0777] olmalıdır',
+	'sionoff'		=> array( 'Açık', 'Kapalı' ),
 	
-	'extract_warning' => "Gerçekten bu dosyayı çıkartmak istiyormusunuz? Buraya?\\nThis will overwrite existing files when not used carefully!",
-	'extract_success' => "Extraction was successful",
-	'extract_failure' => "Extraction failed",
-	
-	'overwrite_files' => 'Varolan dosyanın üzerine yaz?',
+	'extract_warning'	=> "Gerçekten bu dosyayı buraya çıkartmak istiyor musunuz?<br />Dikkatli kullanılmadığında varolan dosyaların üzerine yazılacak!",
+	'extract_success'	=> "Arşiv Çıkartma Başarılı",
+	'extract_failure'	=> "Arşiv Çıkartma Başarısız",
+        
+
+
+'overwrite_files' => 'Varolan dosyanın üzerine yaz?',
 	"viewlink"		=> "Göster",
 	"actview"		=> "Kaynak dosyasını göster",
 	
 	// added by Paulino Michelazzo (paulino@michelazzo.com.br) to fun_chmod.php file
-	'recurse_subdirs'	=> 'Alt klasörlerede uygula?',
+	'recurse_subdirs'	=> 'Alt Klasörlere Uygulansın mı?',
 	
 	// added by Paulino Michelazzo (paulino@michelazzo.com.br) to footer.php file
 	'check_version'	=> 'Son sürümü kontrol et',
@@ -232,11 +234,11 @@ $GLOBALS["messages"] = array(
 	'newname'		=>	'Yeni İsim',
 	
 	// added by Paulino Michelazzo (paulino@michelazzo.com.br) to fun_edit.php file
-	'returndir'	=>	'Kaydettikten sonra dizine geri dön?',
-	'line'		=> 	'Line',
-	'column'	=>	'Column',
-	'wordwrap'	=>	'Wordwrap: (IE only)',
-	'copyfile'	=>	'Copy file into this filename',
+	'returndir'	=>	'Kaydettikten sonra dizine geri dönülsün mü?',
+	'line'		=> 	'Satır',
+	'column'	=>	'Sütun',
+	'wordwrap'	=>	'Sözcük Kaydırma: (yalnız IE)',
+	'copyfile'	=>	'Dosyayı, bu dosya adına kopyalayın',
 	
 	// Bookmarks
 	'quick_jump' => 'Hızlı Atlama',
@@ -244,34 +246,35 @@ $GLOBALS["messages"] = array(
 	'bookmark_was_added' => 'Bu dizin yer imleri listesine eklendi.',
 	'not_a_bookmark' => 'Bu dizin yer imlerinde değil.',
 	'bookmark_was_removed' => 'Bu dizin yer imleri listesinden çıkartıldı.',
-	'bookmarkfile_not_writable' => "Failed to %s the bookmark.\n The Bookmark File '%s' \nis not writable.",
+	'bookmarkfile_not_writable' => "Yer imi % s konumuna getirilemedi. \n Yer İmi Dosyası '%s' \nis yazılabilir değil.",
 	
 	'lbl_add_bookmark' => 'Bu dizini yerimlerine ekle',
-	'lbl_remove_bookmark' => 'Bu dizini yer imleri listesinden çıkart',
+	'lbl_remove_bookmark' => 'Bu dizini yer imleri listesinden çıkar',
 	
 	'enter_alias_name' => 'Lütfen bu yer imi için takma ad girin',
 	
 	'normal_compression' => 'normal sıkıştırma',
-	'good_compression' => 'iyi sıkıştırma',
-	'best_compression' => 'en iyi sıkıştırma',
+	'good_compression' => 'İyi Sıkıştırma',
+	'best_compression' => 'En İyi Sıkıştırma',
 	'no_compression' => 'sıkıştırma yok',
 	
 	'creating_archive' => 'Arşiv dosyası oluştur...',
 	'processed_x_files' => 'Processed %s of %s Files',
 	
-	'ftp_header' => 'Local FTP Authentication',
-	'ftp_login_lbl' => 'Please enter the login credentials for the FTP server',
+	'ftp_header' => 'Yerel FTP Kimlik Doğrulama',
+	'ftp_login_lbl' => 'FTP Sunucusu Oturum Açma Kimlik Bilgilerini Giriniz',
+	
 	'ftp_login_name' => 'FTP Kullanıcı Adı',
 	'ftp_login_pass' => 'FTP Şifresi',
-	'ftp_hostname_port' => 'FTP Server Hostname and Port <br />(Port is optional)',
+	'ftp_hostname_port' => 'FTP Sunucusu',
 	'ftp_login_check' => 'FTP bağlantısı Kontrol ediliyor...',
-	'ftp_connection_failed' => "FTP servera bağlanılamadı. \nPlease check that the FTP server is running on your server.",
+	'ftp_connection_failed' => "FTP sunucusuna bağlanılamadı. \nFTP sunucusunun çalışıp çalışmadığını kontrol edin.",
 	'ftp_login_failed' => "FTP girişinde hata. Lütfen kullanıcı adı ve şifrenizi kontrol ederek tekrar deneyin.",
 		
-	'switch_file_mode' => 'Şimdiki mod: <strong>%s</strong>. Dilerseniz %s moduna geçebilirsiniz.',
-	'symlink_target' => 'Target of the Symbolic Link',
+	'switch_file_mode' => 'Şimdiki Mod: <strong>%s</strong>. Dilerseniz %s moduna geçebilirsiniz. <br/> Türkçe Çeviri: <a href="https://durualan.com" target="_blank" rel="noopener"><b>Mehmet TAŞ</b></a>',
+	'symlink_target' => 'Sembolik Bağlantı Hedefi',
 	
-	"permchange"		=> "CHMOD Success:",
+	"permchange"		=> "Yazma İzinleri Başarılı:",
 	"savefile"		=> "Dosya kaydedildi.",
 	"moveitem"		=> "Taşıma Tamamlandı.",
 	"copyitem"		=> "Kopyalama Tamamlandı.",
@@ -286,8 +289,8 @@ $GLOBALS["messages"] = array(
 	'actlogin_success' => 'Giriş başarılı!',
 	'actlogin_failure' => 'Giriş hatalı, tekrar deneyin.',
 	'directory_tree' => 'Dizin Ağacı',
-	'browsing_directory' => 'Dizinlere Gözat',
-	'filter_grid' => 'Filtrele',
+	'browsing_directory' => 'Dizinlere Gözatın',
+	'filter_grid' => 'Filtreleyin',
 	'paging_page' => 'Sayfa',
 	'paging_of_X' => 'of {0}',
 	'paging_firstpage' => 'İlk Sayfa',
@@ -298,24 +301,24 @@ $GLOBALS["messages"] = array(
 	'paging_info' => 'Gösterilen Öğeler {0} - {1} of {2}',
 	'paging_noitems' => 'Gösterilecek öğe yok',
 	'aboutlink' => 'Hakkında...',
-	'password_warning_title' => 'Important - Change your Password!',
-	'password_warning_text' => 'The user account you are logged in with (admin with password admin) corresponds to the default eXtplorer priviliged account. Your eXtplorer installation is open to intrusion and you should immediately fix this security hole!',
-	'change_password_success' => 'Your Password has been changed!',
-	'success' => 'Basarili',
+	'password_warning_title' => 'Önemli - Şifrenizi değiştirin!',
+	'password_warning_text' => 'Giriş yapmış olduğunuz kullanıcı hesabı, varsayılan eXtplorer tarafından ayrılan hesaba karşılık gelir. EXtplorer kurulumunuz izinsiz girişe açık ve bu güvenlik açığını hemen düzeltmelisiniz!',
+	'change_password_success' => 'Şifreniz değiştirildi!',
+	'success' => 'Başarılı',
 	'failure' => 'Hata',
-	'dialog_title' => 'Website Dialog',
+	'dialog_title' => 'Website Uyarısı',
 	'upload_processing' => 'Yükleniyor, lütfen bekleyin...',
 	'upload_completed' => 'Yükleme Başarılı!',
-	'acttransfer' => 'Başka Sunucudan Transfer Et',
+	'acttransfer' => 'Başka Sunucudan Transfer Edin',
 	'transfer_processing' => 'Sunucudan sunucuya transfer sürüyor, lütfen bekleyin...',
 	'transfer_completed' => 'Transfer tamamlandı!',
-	'max_file_size' => 'Maksimum Dosya Boyutu',
-	'max_post_size' => 'Maksimum Yükleme Sınırı',
+	'max_file_size' => 'En Büyük Dosya Boyutu',
+	'max_post_size' => 'En Büyük Yükleme Sınırı',
 	'done' => 'Tamam.',
 	'permissions_processing' => 'İzinler uygulanıyor, lütfen bekleyin...',
-	'archive_created' => 'The Archive File has been created!',
-	'save_processing' => 'Saving File...',
-	'current_user' => 'This script currently runs with the permissions of the following user:',
+	'archive_created' => 'Arşiv Dosyası Oluşturuldu!',
+	'save_processing' => 'Dosya Kaydediliyor...',
+	'current_user' => 'Bu uygulama şu anda aşağıdaki kullanıcıların izinleriyle çalışır:',
 	'your_version' => 'Sizin Sürümünüz',
 	'search_processing' => 'Aranıyor, lütfen bekleyin...',
 	'url_to_file' => 'Dosya adresi',

programming_language: PHP
filename: turkish_mimes.php
change_type: ModificationType.MODIFY
diff: @@ -1,13 +1,13 @@
-﻿<?php
+<?php
 
-// Turkish Language for QuiX (Translated by Sinan Ata 'From Turkey'(cumla.blogspot.com))
+// Turkish Language for 2.1.12 (Translated by Mehmet Taş)
 
 $GLOBALS["mimes"]=array(
 	// dir, exe, file
 	"dir"	=> "Klasör",
 	"exe"	=> "Açılabilir Dosya",
 	"file"	=> "Dosya",
-	"symlink"	=> "Symbolic Link",
+	"symlink"=> "Simgesel Bağlantı",
 
 	// text
 	"text"	=> "Metin Dosyası",

programming_language: PHP