108 Commits
2.0.2 ... 2.4.0

Author SHA1 Message Date
Prasath Mani
1c86942097 Redesign login screen, Removed remember me checkbox, Security vulnerability fix #270, User role have Preview and Search option #265, #222 2019-12-29 10:30:23 +05:30
Prasath Mani
9a499734c5 Merge pull request from GHSA-w72h-v37j-rrwr
* Fix the RCE vuln via Upload from URL

This commit attemps to fix the Remote Code Execution
(authenticated) via Upload from URL. Some notes about
the proposed solution:

* A new function (fm_is_file_allowed) has been created to
validate if the filename is allowed. This function gets the
the filename as parameter and returns true if it validates
as allowed. Otherwise returns false (the default).

* It's better to have such validatation(s) in one place
instead of spread all over the code. There are other places in
the application where the filename is validated and they should
all be refactored to call this function. Then we can focus
all needed validations in one place only!

NOTE: This refactoring was not done - the only goal was to fix
this security vulnerability only.

* The fm_is_file_allowed() function validates the filename
based on its extension only. No other validatation(s) have been
implemented in this commit.

* File extensions are assumed to be case-insensitive.
For example, php == PHP == Php == PhP, etc. This is consitent
with some web servers. Without this, the user will have to populate
the $allowed_extensions with all possible allowed combinations.

* Although, there is one drawback to the current solution, which
is that all files must have an extension to be uploaded. This is not
consitent with modern filesystems. Maybe a better solution would be
to automatically append an extension to the filename if no
extension has been found (e.g., .html or .txt which are generally
considered to be harmless). This must be decided by the
application's maintainers.

* Fix the RCE vulns via new/rename file

Sanitize the arguments to stat using escapeshellarg()

Co-authored-by: Jorge Morgado <jorge@morgado.ch>
2019-12-28 19:23:47 +05:30
Prasath Mani
1eac82f55a Create SECURITY.md 2019-12-27 21:41:49 +05:30
Ufuk Güler
c2938925d8 Turkish language support (#269) 2019-12-27 11:42:02 +05:30
Whale
b84fdbf008 Compatible with macOS (#258) 2019-12-27 11:39:52 +05:30
RMKATBST
7c376df205 Fix for search function not working if "$hide_Cols=true" on non-Windows systems (#267)
Setting $hide_Cols=true while having FM_IS_WIN=false will lead to a "Type error" when setting up the dataTable. The desired page is generated, but the Search function does not work, as the dataTable is broken.

With this fix the dataTable is written accordingly, with either FM_IS_WIN or $hide_Cols set or unset.
2019-12-20 14:50:57 +05:30
Prasath Mani
7a7a44de9b Open document files? #262 2019-12-06 16:26:36 +05:30
Prasath Mani
3e19ba0243 No message / status / information when saving edited file #257 and when saving an edit show a warning ( alert ) #213 2019-11-29 12:26:25 +05:30
Prasath Mani
bf8b715c13 Notice Error. #252 2019-11-15 12:21:31 +05:30
Prasath Mani
4a8bd014af Bug fix and PR #245, #241, #240 2019-11-05 16:50:15 +05:30
B Bharath Kumar Reddy
a5b2b459cd Feature Font Size Choose Options / Bug Fix Settings not visible in auth=false (#240) 2019-11-05 16:32:25 +05:30
刘明野
4f2eecc108 Update Simplified Chinese (#241) 2019-11-05 16:31:29 +05:30
Nguyen The Anh
13e130c29f Show current process ID in Status bar + Make fm_get_filesize function much more concise (#245) 2019-11-05 16:27:57 +05:30
Lukas Lenhardt
57ac3391e5 Fixed help links (#238) 2019-10-04 12:44:05 +05:30
Prasath Mani
29ca36a18b Missing select all feature ? #234 2019-10-01 16:20:30 +05:30
Prasath Mani
c76a3a2fc5 Updated new version vendor cdn links and Fixed - Bug when filename contains a space at the beginning #198 2019-09-24 18:17:09 +05:30
Prasath Mani
0cb8ad86a5 Update README.md 2019-09-23 10:23:10 +05:30
Max Base
567fcb6a25 Adding the Persian language by Max Base (#217)
Add Persian, Farsi Language. (فارسی)
Max Base, Asrez Team
2019-09-03 11:25:21 +05:30
Prasath Mani
4353cc7378 Remove duplicate and format file 2019-08-24 14:55:20 +05:30
Roni
a0a7ceeea0 Add +PT (#208) 2019-08-24 14:49:28 +05:30
Roni
73abdcdaad echo "Folder" (#209)
{ echo "Folder"; } > { echo lng('Folder'); }
2019-08-23 08:12:57 +05:30
Manuel Martins
059c70e05e Update tinyfilemanager.php (#206)
FastCGI sent in stderr: "PHP message: PHP Warning:  Use of undefined constant online_viewer - assumed 'online_viewer' (this will throw an Error in a future version of PHP) in /www/admin/index.php on line 1383
2019-08-22 11:26:32 +05:30
Prasath Mani
8b6a984864 Merge branch 'master' of https://github.com/prasathmani/tinyfilemanager 2019-07-31 09:39:31 +05:30
Prasath Mani
c18051dd5b File upload error: uppercase and strtolower() #202 2019-07-31 09:39:02 +05:30
Prasath Mani
d593cefde7 Create FUNDING.yml 2019-07-27 09:42:10 +05:30
Prasath Mani
b6f552a79c Cannot edit aspx File #200 2019-07-26 17:07:57 +05:30
Prasath Mani
3114fa92e3 Some language strings are missing. And other... #192
view file is insecure #187
Get files size (recursive) #186
There is no possibility for translation for some hints (title =) #185
View dirSize instead of word "Folder" #184
Document type detection #183
Stored Cross-site Scripting (XSS) Vulnerability detected in File Names #180
strings in code #177
Remove tracking #164
2019-07-23 12:56:01 +05:30
typewriter1
21094a66ee Fix spelling of "copyied" after copying file (#196)
Should be "copied".
2019-07-23 09:42:22 +05:30
Vebu
5386b89aaf Update tinyfilemanager.php (#194) 2019-07-23 09:42:00 +05:30
Vebu
b579489148 Update translation.json (#193)
Please add Czech translation
2019-07-23 09:41:13 +05:30
TheFax
9131db13a7 Updated italian translation (#182)
Added also "Move" that was missing in the file.
2019-07-23 09:40:47 +05:30
elhoussam
8d40ebcdd7 Improve Multilanguage Support (#179)
* Add Arabic Translation

* add some keywords and handling Fixed keywords [untranslated]

* add new translation words

* improve existing translation words
2019-07-23 09:40:26 +05:30
Yehuda Eisenberg
ea29092aea Add Save by ajax request (#175)
Add Save by ajax request, Instead of saving it to a post request and reloading the page each time.
2019-07-23 09:39:00 +05:30
Prasath Mani
1696ebf0fc IP whitelisting and/or blacklisting #171
Add Microsoft Office online view option #169
2019-05-19 12:31:49 +05:30
Yehuda Eisenberg
ffc34859cc Add Hebrew Language (#174)
Add Hebrew Language
2019-05-19 11:13:58 +05:30
elhoussam
9d472720a9 Add Arabic Translation (#176) 2019-05-19 11:10:56 +05:30
Kevin @ Navigram
498804f8a5 Basic IP white- and blacklisting (#178) 2019-05-19 11:10:20 +05:30
Prasath Mani
4b4b48242e PHP Warning: count() #173 2019-05-13 15:59:02 +05:30
Prasath Mani
f67a343f48 When uploading it doesnt override, insteads it crates a new filename #172
Add Custom Title and Favicon options #156
2019-05-13 15:48:29 +05:30
Daniel Kranich
f956ae3abc Add Custom Title and Favicon options (#156)
Added variables so the admin can set a custom title and favicon.
2019-05-07 15:13:37 +05:30
Prasath Mani
7a9730dfe1 Added .MKV format support and minor ui changes, #163. 2019-05-03 16:47:35 +05:30
Vu Thanh Tai
62e58a6597 add vietnamese language (#162) 2019-05-03 12:40:36 +05:30
Anton Dalmau Mines
0c5ee15ea3 Update translation.json (#151) 2019-05-03 12:38:45 +05:30
Prasath Mani
ae971c8b99 Fix for path traversal vulnerability, reported by - @hhc0null/Hiroki MATSUKUMA 2019-04-03 17:20:23 +05:30
Kamil Zarzycki
b546ac168e Add Polish language (#150) 2019-04-03 17:12:55 +05:30
Prasath Mani
285b6b4882 Provide "previous" and "next" to navigate between previews #145
Cross site scripting (XSS) #141
RegEx error | function template #134
2019-03-28 17:06:42 +05:30
Prasath Mani
a8c2fc66d6 prevent overwriting if uploaded file already exists #138,
IE11 aborts upload after 30s #137
2019-03-13 12:26:25 +05:30
Prasath Mani
622264042a Negative filesize on ARMv7 for files over 2GB #127
Max file size? #96
2019-03-03 15:30:47 +05:30
Prasath Mani
bb0e61787c Merge branch 'master' of https://github.com/prasathmani/tinyfilemanager 2019-02-28 15:35:40 +05:30
Prasath Mani
da31717cff Negative filesize on ARMv7 for files over 2GB #127
Simplified Chinese translation #125
Max file size? #96
2019-02-28 15:35:28 +05:30
Romaque Máximo
1b9e0f5e76 Português language added (#126) 2019-02-18 14:59:29 +05:30
Mark Shi
e0cc54b286 Add Simplified Chinese support (#122)
* Add Simplified Chinese support

And distinguish it from Traditional Chinese.

* Add two fields for translation.

* Add two fields for translation.

* Translated.
2019-01-28 22:24:05 +05:30
Prasath Mani
7a0de24a61 Fix : User's sub folder problem #120 2019-01-20 17:02:01 +05:30
Prasath Mani
1a24dc0729 Merge branch 'master' of https://github.com/prasathmani/tinyfilemanager 2019-01-18 17:12:35 +05:30
Prasath Mani
2a390b2247 down file error when larger than php memory limited #110 and Not looking good on phones #93 2019-01-18 17:12:20 +05:30
Prasath Mani
292c00d62f Merge pull request #119 from karavidas/master
Greek laguage added
2019-01-17 18:42:16 +05:30
Lampros Karavidas
30aa3e6f96 Update translation.json 2019-01-17 15:11:03 +02:00
Lampros Karavidas
200f56e8d4 Greek laguage added 2019-01-17 12:35:43 +02:00
Prasath Mani
09f688c625 Saving settings doesn't save #116 2019-01-17 12:34:54 +05:30
Prasath Mani
f26977adb3 Default Languages loading issue fix 2019-01-10 16:23:02 +05:30
Prasath Mani
704bec368f Merge pull request #115 from adit/patch-1
added Indonesia Language
2019-01-06 20:17:09 +05:30
Aditya Pratama
6970bdb7dd add indonesia lang. 2019-01-06 21:37:40 +07:00
Prasath Mani
8802b048b3 Added Version Check
Added new Translation JSON file
New languages added - Spanish, German, Thailand and Chinese
Removed languages from tinyfilemanager.php file
Updated IDE languages and themes
2019-01-06 16:59:02 +05:30
Prasath Mani
e38f312ce5 Merge pull request #112 from jopiortiz/spanish-lang
Spanish Language
2019-01-06 15:44:22 +05:30
Prasath Mani
125e35ed83 Merge branch 'master' into spanish-lang 2019-01-06 15:44:09 +05:30
Prasath Mani
bf64ae9593 Merge pull request #100 from mrwan200/master
Add Thai Language
2019-01-06 15:41:59 +05:30
Prasath Mani
98902b6b80 Merge branch 'master' into master 2019-01-06 15:41:38 +05:30
Prasath Mani
380a6f2877 Merge pull request #104 from emilengler/master
Add German language
2019-01-06 15:39:46 +05:30
jopiortiz
373d04b2ef Crear , looks better 2019-01-04 01:03:30 -03:00
Joaquin
c7708f371f Spanish Language
- Minor fix on the Search input placeholder
2019-01-04 00:32:28 -03:00
Prasath Mani
ba9826fe9c Added check latest version 2018-12-31 14:36:03 +05:30
Prasath Mani
221bc96882 Added Partition size and Memory used #111 2018-12-25 21:48:41 +05:30
Prasath Mani
acf1958350 Merge pull request #111 from alecos71/patch-12
Added Memory Used
2018-12-25 20:15:37 +05:30
Alessandro Marinuzzi
90c079882d improved memory usage + added translations
improved memory usage + added translations
2018-12-25 15:11:20 +01:00
Alessandro Marinuzzi
c22e694e7d improved memory usage
improved memory usage
2018-12-25 14:32:03 +01:00
Alessandro Marinuzzi
8f9da1cb5e Added Memory Used
Added Memory Used
2018-12-25 14:12:58 +01:00
Prasath Mani
c413573952 Improve embed and UI issues 2018-12-22 14:51:06 +05:30
Prasath Mani
89fb960679 Modified UI - Pwd change 2018-12-14 01:20:25 +05:30
Prasath Mani
fb7c4fcebd Modified UI - file upload from url #98 and Code refactor 2018-12-14 00:02:25 +05:30
Prasath Mani
1760168933 Modified Readme 2018-12-13 00:40:23 +05:30
Prasath Mani
9fdfdbfe94 Added - file upload from url #98
Fix: issues to rename files with single quote #105
Fix: Dropzone default timeout 30 seconds #102, #96, #75
Fix:  XSS cross-site attack screen (Chrome) #101
2018-12-13 00:38:16 +05:30
Emil Engler
876282d006 Add German language 2018-12-10 18:22:24 +01:00
Mr. Wan
f7240516ca Update tinyfilemanager.php 2018-12-09 09:39:33 +07:00
Prasath Mani
1a9bf95920 Fix: Not looking good on phones #93 2018-12-06 12:51:29 +05:30
Prasath Mani
9eda119235 Added Editor Toolbar - Themes, Document Mode, Search, Fullscreen, Undo, Redo, ... 2018-12-03 23:58:25 +05:30
Prasath Mani
1ca5add891 Added Russian Language 2018-12-02 14:49:04 +05:30
Prasath Mani
4f40e85604 Fix: Not looking good on phones #93 2018-12-01 13:58:28 +05:30
Prasath Mani
39bec20b7e Fix: undefined constant password_verify #87 and #92, #91 2018-12-01 08:43:24 +05:30
Prasath Mani
8113184b12 Merge pull request #90 from alecos71/patch-9
fixed $tr['en'] with $tr['it']
2018-11-30 09:48:10 +05:30
Alessandro Marinuzzi
479a4a873d Added language entry in list
Added language entry in list
2018-11-29 19:40:24 +01:00
Alessandro Marinuzzi
7f1258c050 fixed $tr['en'] with $tr['it']
Fixed Italian language
2018-11-29 19:20:44 +01:00
Prasath Mani
b995d781fb Merge pull request #89 from simon511000/patch-1
Update tinyfilemanager.php
2018-11-29 22:20:57 +05:30
simon511000
c1b8bfd6ad Update tinyfilemanager.php 2018-11-29 17:31:57 +01:00
Prasath Mani
81f6c81aa8 Merge pull request #88 from alecos71/patch-8
Update tinyfilemanager with Italian Language
2018-11-29 21:37:33 +05:30
Alessandro Marinuzzi
0c0d9e24b8 Update tinyfilemanager.php
Added Italian language
2018-11-29 16:06:41 +01:00
Prasath Mani
f3e2a0bdb2 Multi-language support #2.2.0 2018-11-26 23:56:01 +05:30
Prasath Mani
1f9b2f6b71 Multi-language support #2.2.0 2018-11-26 23:47:58 +05:30
Prasath Mani
f54e269f7e Update README.md 2018-11-24 00:03:55 +05:30
Prasath Mani
ad65b778a2 Add Beerpay's badge 2018-11-23 23:52:41 +05:30
Prasath Mani
764c80d4a9 Merge branch 'master' of https://github.com/prasathmani/tinyfilemanager 2018-11-20 17:52:39 +05:30
Prasath Mani
1accf6739a Normal Text Editor Design Modified 2018-11-20 17:52:13 +05:30
Prasath Mani
b19f325e8e Merge pull request #82 from gbrault/master
Corrected spelling thnaks 2 @gbrault
2018-11-20 17:21:17 +05:30
Gilbert Brault
66115cf3c9 Corrected spelling 2018-11-20 12:42:29 +01:00
Prasath Mani
83a5f1d7b8 Fix : Some bugs about showing up log of button from nowhere and search box bug #81 2018-11-20 12:34:47 +05:30
Prasath Mani
2510e595aa Logo path updated 2018-11-19 23:40:23 +05:30
Prasath Mani
df7312e3c0 Merge pull request #80 from FH3095/master
Fix Undefined variable _SESSION notice
2018-11-16 10:28:33 +05:30
FH3095
1a28a09426 Fix Undefined variable _SESSION notice 2018-11-15 13:34:40 +01:00
Prasath Mani
0d8c314146 Subdirectory search does not work #76 2018-11-14 18:05:39 +05:30
6 changed files with 2829 additions and 872 deletions

6
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1,6 @@
# These are supported funding model platforms
patreon: ccpprogrammers
open_collective: # Replace with a single Open Collective username
ko_fi: tinyfilemanager
custom: ['https://paypal.me/prasathmani']

View File

@@ -1,35 +1,42 @@
# Tiny PHP File Manager # Tiny File Manager
It is a simple, fast and small file manager with single php file. It is also a web code editor. It'll run either online or locally, on Linux, Windows or Mac based platforms. The only requirement is to have PHP 5.5+ available.
[![Live demo](https://img.shields.io/badge/Live-Demo-brightgreen.svg?style=flat-square)](https://tinyfilemanager.github.io/demo/)
[![Live demo](https://img.shields.io/badge/Help-Docs-lightgrey.svg?style=flat-square)](https://tinyfilemanager.github.io/)
[![GitHub Release](https://img.shields.io/github/release/qubyte/rubidium.svg?style=flat-square)](https://github.com/prasathmani/tinyfilemanager/releases)
[![GitHub License](https://img.shields.io/github/license/prasathmani/tinyfilemanager.svg?style=flat-square)](https://github.com/prasathmani/tinyfilemanager/blob/master/LICENSE)
[![Paypal](https://img.shields.io/badge/Donate-Paypal-lightgrey.svg?style=flat-square)](https://www.paypal.me/prasathmani)
> It is web based file manager and it is a simple, fast and small file manager with a single file, multi-language ready web application for storing, editing and managing files and folders online via web browser. The Application runs on PHP 5.5+, a build-in support for managing text files with cloud9 IDE and it supports syntax highlighting for over 150+ languages and over 35+ themes. .
## Demo ## Demo
<a href="https://tinyfilemanager.herokuapp.com" target="_blank">tinyfilemanager.herokuapp.com</a> [Demo](https://tinyfilemanager.github.io/demo/)
Login Details : admin/admin | user/12345 Login Details : admin/admin@123 | user/12345
## Documents ## Documents
<a href="https://tinyfilemanager.github.io/" target="_blank">tinyfilemanager.github.io</a> [TinyFileManager.github.io](https://tinyfilemanager.github.io/) | [Password Generater](https://tinyfilemanager.github.io/docs/pwd.html)
<hr> <hr>
<img src="screenshot.gif" alt="H3K | Tiny File Manager"> [![Tiny File Manager](screenshot.gif)](screenshot.gif)
## Requirements ## Requirements
- PHP 5.5.0 or higher. - PHP 5.5.0 or higher.
- [Zip extension](http://php.net/manual/en/book.zip.php) for zip and unzip actions. - Fileinfo, iconv, zip, tar and mbstring extensions are strongly recommended.
- Fileinfo, iconv and mbstring extensions are strongly recommended.
## How to use ## How to use
Download ZIP with latest version from master branch. Download ZIP with latest version from master branch.
Copy tinyfilemanager.php to your website folder and open it with web browser (e.g. http://yoursite/any_path/tinyfilemanager.php). Just copy the tinyfilemanager.php to your webspace - thats all :)
You can also change the file name from "tinyfilemanager.php" to something else, you know what i meant for.
Default username/password: admin/admin and user/12345. Default username/password: **admin/admin@123** and **user/12345**.
Warning: Please set your own username and password in $auth_users before use. password is encrypted with <code>password_hash()</code>. to generate new password hash <a href="https://tinyfilemanager.github.io/docs/pwd.html" target="_blank">here</a> Warning: Please set your own username and password in `$auth_users` before use. password is encrypted with <code>password_hash()</code>. to generate new password hash [here](https://tinyfilemanager.github.io/docs/pwd.html)
To enable/disable authentication set $use_auth to true or false. To enable/disable authentication set `$use_auth` to true or false.
### Supported constants: ### Supported constants:
@@ -44,22 +51,29 @@ To enable/disable authentication set $use_auth to true or false.
### :loudspeaker: Features ### :loudspeaker: Features
<ul>
<li>:cd: Open Source, light and extremely simple</li>
<li>:information_source: Basic features likes Create, Delete, Modify, View, Download, Copy and Move files </li>
<li>:arrow_double_up: Ajax Upload, Ability to drag & drop, multiple files upload and file extensions filter </li>
<li>:file_folder: Ability to create folders and files</li>
<li>:gift: Ability to compress, extract files</li>
<li>:sunglasses: Support user permissions - based on session and each user root folder mapping</li>
<li>:floppy_disk: Copy direct file URL</li>
<li>:pencil2: Edit text formats file using advanced editor</li>
<li>:page_facing_up: Google Drive viewer helps you preview PDF/DOC/XLS/PPT/etc. 25 MB can be previewed with the Google Drive viewer</li>
<li>:zap: Backup files</li>
<li>:mag_right: Search - Search and Sorting using datatable js</li>
<li>:file_folder: Exclude folders from listing</li>
<li>:bangbang: lots more...</li>
</ul>
###### CDN Used - :cd: Open Source, light and extremely simple
- :iphone: Mobile friendly view for touch devices
- :information_source: Basic features likes Create, Delete, Modify, View, Quick View, Download, Copy and Move files
- :arrow_double_up: Ajax Upload, Ability to drag & drop, upload from URL, multiple files upload and file extensions filter
- :file_folder: Ability to create folders and files
- :gift: Ability to compress, extract files (`zip`, `tar`)
- :sunglasses: Support user permissions - based on session and each user root folder mapping
- :floppy_disk: Copy direct file URL
- :pencil2: Cloud9 IDE - Syntax highlighting for over `150+` languages, Over `35+` themes with your favorite programming style
- :page_facing_up: Google/Microsoft doc viewer helps you preview `PDF/DOC/XLS/PPT/etc`. 25 MB can be previewed with the Google Drive viewer
- :zap: Backup files and IP white and blacklisting
- :mag_right: Search - Search and Sorting using `datatable js`
- :file_folder: Exclude folders from listing
- :globe_with_meridians: Multi-language support (English, Spanish, French, Italian, German, Russian, Thailand, Chinese and more..) for translations `translation.json` is file required
- :bangbang: lots more...
### <a name=license></a>License, Credit
- Available under the [GNU license](https://github.com/prasathmani/tinyfilemanager/blob/master/LICENSE)
- Original concept and development by github.com/alexantr/filemanager
- CDN Used - _jQuery, Bootstrap, Font Awesome, Highlight js, ace js, DropZone js, ekko-lightbox js, and DataTable js_
- To report a bug or request a feature, please file an [issue](https://github.com/prasathmani/tinyfilemanager/issues)
`jQuery | Bootstrap | Font Awesome | Highlight js | ace js | DropZone js | DataTable js`

27
SECURITY.md Normal file
View File

@@ -0,0 +1,27 @@
# Security Policy
## Reporting a Vulnerability
The team takes security bugs seriously. We appreciate your efforts to responsibly disclose your findings, and will make every effort to acknowledge your contributions.
To report a security issue, email [ccpprogrammers@gmail.com](mailto:ccpprogrammers@gmail.com) and include the word "SECURITY" in the subject line.
The team will send a response indicating the next steps in handling your report. After the initial reply to your report you will be kept informed of the progress towards a fix and full announcement.
Report security bugs in third-party modules to the person or team maintaining the module.
## Disclosure Policy
When the security team receives a security bug report, they will assign it to a
primary handler. This person will coordinate the fix and release process,
involving the following steps:
* Confirm the problem and determine the affected versions.
* Audit code to find any potential similar problems.
* Prepare fixes for all releases still under maintenance. These fixes will be
released as fast as possible to npm.
## Comments on this Policy
If you have suggestions on how this process could be improved please submit a
pull request.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 474 KiB

After

Width:  |  Height:  |  Size: 209 KiB

File diff suppressed because one or more lines are too long

1212
translation.json Normal file

File diff suppressed because it is too large Load Diff