diff --git a/README.md b/README.md index ecea202..e6753ea 100755 --- a/README.md +++ b/README.md @@ -1,9 +1,4 @@ -## EasyImage 简单图床 2.0 -> 始于2018年7月,支持多文件上传,简单无数据库,返回图片url,markdown,bbscode,html的一款图床程序 -演示地址:[https://png.cm/](https://png.cm/) -之前一直用的图床程序是:[PHP多图长传程序2.4.3](https://www.jb51.net/codes/40544.html) -由于版本过老并且使用falsh上传,在当前html5流行大势所趋下,遂利用基础知识新写了一个以html5为默认上传并且支持flash,向下兼容至IE9。 -***本程序环境要求极低,适用于单一场景(游客上传)和个人使用,不适于多用户复杂场景*** +## EasyImage2.0 简单图床 [![EasyImage2.0 GitHub's stars](https://img.shields.io/github/stars/icret/easyImage2.0?style=social)](https://github.com/icret/EasyImages2.0/stargazers) [![EasyImage2.0 GitHub's forks](https://img.shields.io/github/forks/icret/easyimage2.0?style=social)](https://github.com/icret/EasyImages2.0/network/members) @@ -12,720 +7,64 @@ [![jsdelivr](https://data.jsdelivr.com/v1/package/gh/icret/EasyImages2.0/badge)](https://cdn.jsdelivr.net/gh/icret/EasyImages2.0@EasyImage2.0/) [![License](https://img.shields.io/badge/license-GPL_V2.0-yellowgreen.svg)](https://github.com/icret/EasyImages2.0/blob/master/LICENSE) [![QQ group](https://pub.idqqimg.com/wpa/images/group.png)](https://jq.qq.com/?_wv=1027&k=jfXRHU8Y) - ->[演示](https://png.cm/) | [Chrome/Edge 插件](https://github.com/icret/EasyImage-Browser-Extension) | [使用手册](https://www.kancloud.cn/easyimage/easyimage/) | [社区讨论](https://github.com/icret/EasyImages2.0/discussions) | [Telegram](https://t.me/Easy_Image) -> +[演示](https://png.cm/) · [手册](https://www.kancloud.cn/easyimage/easyimage/) · [社区](https://github.com/icret/EasyImages2.0/discussions) · [Telegram](https://t.me/Easy_Image) - 插件: [Chrome](/doc/Chrome插件.md) · [Edge](/doc/Edge插件.md) · [PicGo](/doc/使用PicGo上传.md) · [ShareX](/doc/使用ShareX上传.md) + +目录: [安装](/doc/安装图床.md) | [安全](/doc/安全配置.md) | [API](/doc/API.md) | [鉴黄](/doc/鉴黄.md) | [升级](/doc/图床更新升级.md) | [常见问题](/doc/常见问题.md) | [环境/兼容](#环境要求) | [更新日志](/doc/更新日志.md) | [打赏开发者](/doc/打赏开发者.md) | [鸣谢](#鸣谢) | [许可证](#开源许可) + +> 始于2018年7月,支持多文件上传,简单无数据库,返回图片url,markdown,bbscode,html的一款图床程序 +演示地址:[https://png.cm/](https://png.cm/) +之前一直用的图床程序是:[PHP多图长传程序2.4.3](https://www.jb51.net/codes/40544.html) +由于版本过老并且使用falsh上传,在当前html5流行大势所趋下,遂利用基础知识新写了一个以html5为默认上传并且支持flash,向下兼容至IE9。 +***本程序环境要求极低,适用于单一场景(游客上传)和个人使用,不适于多用户复杂场景*** >本人善写bug 发现bug可提交 [issues](https://github.com/icret/EasyImages2.0/issues) 追求稳定请下载 [稳定版](https://github.com/icret/EasyImages2.0/releases) -## 目录 - -[特点](#特点)-[注意](#常见问题)-[安装](#安装)-[升级](#程序升级)-[安全](#安全配置)-[API](#API上传)-[鉴黄](#鉴黄)-[更新日志](#更新日志)-[支持开发者](#支持开发者)-[界面演示](#界面演示)-[兼容](#兼容)-[鸣谢](#鸣谢)-[许可证](#开源许可) - ## 特点 -- [x] 支持仅登录后上传 -- [x] 支持设置图片质量 -- [x] 支持文字/图片水印 -- [x] 支持设置图片指定宽/高 -- [x] 支持上传图片转换为指定格式 -- [x] 支持限制最低宽度/高度上传 -- [x] 支持API -- [x] 在线管理图片 -- [x] 支持网站统计 -- [x] 支持设置广告 -- [x] 支持图片鉴黄 -- [x] 支持自定义代码 -- [x] 支持上传IP黑白名单 -- [x] 支持创建仅上传用户 -- [x] 对于安装环境要求极低 -- [x] 更多功能支持请安装尝试··· +* [x] 支持仅登录后上传 +* [x] 支持设置图片质量 +* [x] 支持文字/图片水印 +* [x] 支持设置图片指定宽/高 +* [x] 支持上传图片转换为指定格式 +* [x] 支持限制最低宽度/高度上传 +* [x] 支持API +* [x] 在线管理图片 +* [x] 支持网站统计 +* [x] 支持设置广告 +* [x] 支持图片鉴黄 +* [x] 支持自定义代码 +* [x] 支持上传IP黑白名单 +* [x] 支持创建仅上传用户 +* [x] 对于安装环境要求极低 +* [x] 更多功能支持请安装尝试··· -## 安装 -> 推荐环境:Nginx + PHP≥7.0 + linux -#### windows: -- 下载简单图床 [最新版](https://github.com/icret/EasyImages2.0/archive/refs/heads/master.zip)|[稳定版](https://github.com/icret/EasyImages2.0/releases) 上传至web根目录 - -#### Linux: - -- `git clone https://github.com/icret/EasyImages2.0.git` 至安装目录 - -- 赋予安装目录www:www和0755权限: -```shell -chmod -R 755 /安装目录 -chown -R www:www /安装目录 -``` - -#### BT宝塔面板 -- 安装环境 Ngixn(推荐) / Apache + PHP(推荐≥7.0) -- 软件商店搜索`简单图床`一键部署 - ->更多安装方式和问题请查阅->[使用手册](https://www.kancloud.cn/easyimage/easyimage/2625222) - -## 常见问题 - -1. 请将所有文件赋予`0755`和`www`权限 -2. 对`PHP`不太熟悉的请不要将图床程序放置于二级目录 -3. 请关闭防跨站或删除域名文件夹内的`user.ini`文件 如`宝塔面板`|`军哥lnmp` -4. 网站域名与图片域名必须填写,如果只有一个域名请填写成一样的 -5. 首次使用会执行安装程序并并在`config`目录生成`install.lock` 跳过安装流程请删除`install`目录 -6. 首次访问首页会检查环境并在`config`目录下生成`EasyImage.lock` -7. 可以使用谷歌浏览器的调试模式查看错误`F12->console` -8. 提示 `upload File size exceeds the maximum value` 调整`PHP`上传大小 -9. 提示 `undefined function imagecreatefromwebp()`GD没安装webp, 以此类推 -10. 提示 `Warning: is_dir(): open_basedir restriction in effect`解决方法同`3` -11. 无法上传/访问/不显示验证码: 1. 权限问题见问题`1` 2. CDN缓存了 3. 防火墙拦截 -12. 宝塔或者其他环境安装成功但是上传失败,多数原因是防火墙拦截上传,取消拦截即可 -13. `Fatal error: Allowed memory size......`主机内存或分配给PHP的内存不够 解决方法百度 -14. 开启原图保护功能后打开图片链接显示`404`是因为`nginx`或`Apache`页面缓存导致的,`Nginx`解决办法: -```Nginx -# 把Nginx这段配置删掉 -location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ -{ - expires 30d; - error_log /dev/null; - access_log /dev/null; -} -``` - -#### API上传 -
通过API上传示例 -- html示例 - -```html -
- - -
-``` -- Python示例 -```python -import requests - -url = "https://png.cm/api/index.php" - -payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"token\"\r\n\r\n8337effca0ddfcd9c5899f3509b23657\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"image\"\r\n\r\n195124.jpg\r\n-----011000010111000001101001--\r\n\r\n" -headers = {"content-type": "multipart/form-data; boundary=---011000010111000001101001"} - -response = requests.request("POST", url, data=payload, headers=headers) - -print(response.text) -``` -- curl示例 - -```curl -curl --request POST \ - --url https://png.cm/api/index.php \ - --header 'content-type: multipart/form-data' \ - --form token=8337effca0ddfcd9c5899f3509b23657 \ - --form image=@195124.jpg -``` -- JQuery示例 -```jQuery -const form = new FormData(); -form.append("token", "8337effca0ddfcd9c5899f3509b23657"); -form.append("image", "195124.jpg"); - -const settings = { - "async": true, - "crossDomain": true, - "url": "https://png.cm/api/index.php", - "method": "POST", - "headers": {}, - "processData": false, - "contentType": false, - "mimeType": "multipart/form-data", - "data": form -}; - -$.ajax(settings).done(function (response) { - console.log(response); -}); -``` -
- -- 需要开启图床安全->API上传示例 -- 上传成功后返回JSON -```json - { - "result":"success","code":200, - "url":"https:\/\/i2.100024.xyz\/2023\/01\/24\/10gwv0y-0.webp", - "srcName":"195124", - "thumb":"https:\/\/png.cm\/application\/thumb.php?img=\/i\/2023\/01\/24\/10gwv0y-0.webp", - "del":"https:\/\/png.cm\/application\/del.php?hash=bW8vWG4vcG8yM2pLQzRJUGI0dHlTZkN4L2grVmtwUTFhd1A4czJsbHlMST0=" - } -``` - ## 程序升级 - -- 备份`config`目录(没有增加上传用户和api可以只保留`config.php`文件)和`上传文件目录` -- 将新程序下载至网站目录解压覆盖,然后将备份的文件替换既完成升级 -- 如果出现错误请在设置中把所有设置中底部按钮 `保存` 一次 - -## 安全配置 - -- Apache环境在上传目录添加配置文件`.htaccess` 使上传目录不可运行PHP程序(默认已经存在) - -```Apache - -Order allow,deny -Deny from all - -``` -- Nginx环境禁止多个目录运行`PHP`程序: - -```Nginx - # "i|public"是你要禁止的目录 放到listen段落之后才生效 - location ~* ^/(i|public)/.*\.(php|php5)$ - { - deny all; - } -``` - -- Lighthttpd环境禁止多个目录运行`PHP`程序: - -```Lighthttpd -$HTTP["url"] =~ "^/(i|public)/" { - fastcgi.server = () -} -``` - -## 鉴黄 -图床支持moderatecontent和nsfwjs方式鉴黄 -- moderatecontent: - 1. 注册[moderatecontent](https://client.moderatecontent.com/)并获取Token - 2. 后台API设置中填入Moderate Key - 3. 后台图片安全图片鉴黄以moderatecontent方式 - -- nsfwjs [nsfwjs docker](https://hub.docker.com/r/icret/nsfw_restful_api) - 1. 确定已安装`docker`和`docker-compose` - 2. 拉取镜像 `docker pull icret/nsfw_restful_api:latest` 或者直接 `docker run -p 3307:3307 -d icret/nsfw_restful_api` - 3. 后台API设置中填入网址 比如:`http://IP:3307/api/nsfw/classify?url=` - 4. 后台图片安全图片鉴黄以nsfwjs方式 - 5. 如果你使用别的nsfwjs api,必须返回json 并且格式如下: - -```json -[{ - "className": "Drawing", - "probability": 0.824431836605072 -}, { - "className": "Hentai", - "probability": 0.16360442340373993 -}, { - "className": "Neutral", - "probability": 0.007620695047080517 -}, { - "className": "Porn", - "probability": 0.004154415801167488 -}, { - "className": "Sexy", - "probability": 0.00018858206749428064 -}] -``` - -## 更新日志 - -
点击查看2.0版更新日志 - -* 2023-02-05 v2.7.4 dev -- 此版本将作为优化和修复bugs - -* 2023-02-05 v2.7.3 -- 修复设置中手动压缩失败! -- 优化排版 - -* 2023-02-05 v2.7.2 -- 增加删除单条历史上传记录 -- 增加 [web-indexr](https://github.com/rehiy/web-indexr) 文件管理, 正在实验中 -- - 作为 [Tinyfilemanager](https://github.com/prasathmani/tinyfilemanager) 的替代品 更轻量化 简单化 -- 修复开启登录上传后,上传者账号上传失败 [#87](https://github.com/icret/EasyImages2.0/issues/87#issue-1569794639) -- 修复检测登录状态错误 -- 优化排版和移动端显示 - -* 2023-02-01 v2.7.1 -- 更新版本号 - -* 2023-02-01 v2.7.0 -- 增加限制游客上传 -- 增加上传历史记录 -- 增加粘贴上传状态 -- 增加广场非图片图标 -- 增加前端显示缩略图链接 -- 增加每日获取Bing图片背景 -- 增加图片详细信息管理登录后显示更多信息 -- 增加解析上传IP地址 (使用方法参考提示信息) -- 修复图片详细信息中随机图片排版混乱 -- 替换访问生成缩略图代码 -- 更新一些组件 -- 调整前端显示 -- 优化代码 - -* 2023-01-21 v2.6.9 Happy New Year -- 修复BMP格式无法增加水印(不建议开启,非常耗时) -- 修复上传用户组会串联变成管理员权限 [#61](https://github.com/icret/EasyImages2.0/issues/61) -- 增加了上传提示和登录提示 -- 增加自定义存储分类路径 设置方法参考 [PHP date() 函数](https://www.runoob.com/php/php-date.html) -- 更改后台部分管理设置的位置 -- 优化操作逻辑和信息提示 - - -* 2022-12-30 v2.6.8 -- 上传组件支持到 PHP 8.2 -- 修复下载任意文件漏洞 [#75](https://github.com/icret/EasyImages2.0/issues/75) -- 增加自定义底部信息 -- 增加自定义管理提示 -- 增加图床模式 - - 危险:除图片外不验证文件是否正常,也代表可以上传任意指定格式! -- 增加上传时生成缩略图(仅设置直链缩略图时生效),低配vps负载较大,影响前端上传速度! -- 其他一些优化 - -* 2022-09-20 v2.6.7 -- 优化后台显示 -- 增加控制缩略图尺寸 -- 修复启用Opcache带来的问题 [#57](https://github.com/icret/EasyImages2.0/issues/57) - -* 2022-07-10 v2.6.6 -- 增加文件uuid命名 -- 界面美化 - -* 2022-07-10 v2.6.6 -- 增加图片信息显示随机图片 -- 增加文件雪花命名 -- 增加举报入口 -- 更新组件 - -* 2022-05-27 v2.6.5 -- 更改文件位置 - -* 2022-05-26 v2.6.4 -- 更改版本显示方式 - -* 2022-05-26 v2.6.3 -- 增加图片下载 -- 增加简单暗黑模式 -- 增加读取上传日志 -- 增加广场浏览往日限制 - - 有助于防爬虫抓取 -- 增加登陆验证码开关(默认关闭) -- 删除图片详情页Exif信息 -- 文件管理中图片使用缩略图显示 -- 更改广场->信息中图片长宽获取方式 - -- 优化图片详情页/广场UI/日志/用户/api 列表 - -* 2022-05-04 v2.6.2 -- 增加API/用户文件浏览和删除 -- 增加转换webp后也会添加水印 - - 转换成webp后不建议开启水印,会增大图片体积 - - webp水印消耗更多PHP内存,PHP8以上有很大概率失败 -- 更改广场页面返回顶部 -- 优化了管理界面UI -- 修复一些bug - -* 2022-05-03 v2.6.1 -- 增加登陆用户有效期 -- 增加管理员/登陆用户/Token专用目录 -- 增加转换图片格式后压缩图片(不建议同时开启后端压缩) -- 增加隐藏存储路径(网站域名与图片域名不同且图片域名需绑定到图片目录) -- 直链缩略图支持bmp,webp -- 本次更新较大,建议重新安装! - -* 2022-04-29 v2.6.0 -- 修复源图缺陷 -- 修复API回收不能还原问题 -- 布局修改 -- 登录页美化 -- 屏蔽登陆页面chrome类浏览器自动填充 - -* 2022-04-02 v2.5.9 -- 增加安装提示 -- 增加忘记密码提示 -- 增加检测水印图片/水印字体是否存在 -- 修复登陆逻辑 -- 修复广场重复显示图片 -- 修改广场删除/回收样式 -- 调整了广告的位置 -- 调整后台设置分表 - -* 2022-04-02 v2.5.8 -- 修复在PHP8环境下的bugs -- 修复删除token产生的bug -- 更改顶部广告位置 -- 更改广场样式 - -* 2022-3-30 v2.5.7 -- 增加弹窗公告 -- 恢复文件管理 -- 微调了广场样式 -- 微调了删除文件 -- 删除了base.php -- 日志记录上传IP端口 -- 日志记录通过API上传的ID -- 修复管理页面短标签bug [#30](https://github.com/icret/EasyImages2.0/issues/30#issue-1185821542) -- 修复图片回收中批量删除失败 -- 修复广场预览ico格式文件失败 -- 修复个别浏览器显示二维遮住网页 [#28](https://github.com/icret/EasyImages2.0/issues/28#issue-1180675728) -- 缩略图最大生成与用户设置最大上传关联 -- 安全检测中检测本地域名改为检测局域网 - -* 2022-3-13 v2.5.6 -- 修复加密删除后不能正确提示 -- 修复webp转换其他格式失败 -- 修复文字水印透明度不生效 -- 修复jscolor显示不正确 -- 增加原图保护 -- 增加检测版本 - -* 2022-3-4 v2.5.5 -- 增加设置页面检测是否开启登录上传 -- 将footer固定在底部 -- 移除function_API.php -- 修复TimThumb不支持bmp格式的bug -- 修复TimThumb不支持webp动态图片bug - -* 2022-2-29 v2.5.4 -- 增加Token有效期 -- 增加回收图片按钮 -- 增加加密删除回收站 -- 修复广场标题 - -* 2022-2-21 v2.5.3 -- 增加图床数据开放 -- 增加自定义服务条款 -- 升级 Viewer.js 到 v1.10.4 -- 将页面选择记录从cookie改为本地存储 -- 修复实时生成缩略图导致的页面布局异常 -- 优化显示代码 -- 不出意外今年将只修复bug和兼容问题 - -* 2022-2-19 v2.5.2 -- 增加简繁体转换 -- 增加管理页面记录当前操作页 -- 修复一处暴露路径bug - -* 2022-2-13 v2.5.1 -- 增加异步执行鉴黄 -- 取消检测imagick扩展 -- 修复可能导致检测弹窗弹出失败 - -* 2022-2-7 v2.5.0 -- 修复静态文件调用失败 - -* 2022-2-6 v2.4.9 -- 修复静态文件引用 - -* 2022-2-6 v2.4.9 -- 修复flash和silverlight路径引用(>IE9不影响) -- markdown html alt值改为源文件名 -- 升级jquery-3.4.1至3.6.0 -- 调整了静态文件位置 - -* 2022-2-5 v2.4.8 -- 调整缩略图内存至128M -- 修复无可疑图片时显示错误 -- 修复转换为webp时会复制一份bug -- 修复开启登录上传后无法上传的bug -- 插件检测的敏感信息转移到管理目录 -- 增加安装时检测.user.ini -- 增加检测鉴黄接口是否可以正确访问 -- 增加异步处理文件,上传完毕后处理速度变快了 -- 增加 [nsfwjs](https://github.com/infinitered/nsfwjs) 接口方式检测违规图片 - - 作者测试时用的`docker`搭建 `docker`地址:[zengdawei/nsfw_restful_api -](https://hub.docker.com/r/zengdawei/nsfw_restful_api) - - 使用注意 程序期望nsfwjs返回json 并且如下格式: -```json -[ - { - "className": "Drawing", - "probability": 0.824431836605072 - }, - { - "className": "Hentai", - "probability": 0.16360442340373993 - }, - { - "className": "Neutral", - "probability": 0.007620695047080517 - }, - { - "className": "Porn", - "probability": 0.004154415801167488 - }, - { - "className": "Sexy", - "probability": 0.00018858206749428064 - } -] -``` -- 增加WordPress上大名鼎鼎的实时缩略图生成TimThumb - - TimeThumb为本图床修改版,会缓存到缓存文件夹方便下次调用 - -* 2022-1-27 v2.4.7 -- 优化页面排版 -- 更改部分命名 -- 增加后端压缩率 -- 增加可以显示多条公告 -- 增加上传后是否显示删除 -- 增加可以关闭广场/统计导航|页面 -- 调整登录和退出文件位置 -- 调整二维码内容为每个页面 -- 更换验证码库并不再区分大小写 -- 修复一处有概率暴露图片绝对路径的bug - -* 2022-1-22 v2.4.6 -- 视图优化 -- 删除重复内容 -- 增加图片信息页面 -- 增加上传黑/白名单 -- 修复因关闭上传日志而导致的无法鉴黄和后端压缩图片 -- 修复安装时更改管理员账号失败 -- 修复更改管理员账户后无法退出 - -* 2022-1-13 v2.4.5 -- 修复一处权限问题 -- 修复恢复可疑图片 -- 增加复制提示 -- 增加默认上传后首选显示链接 - -* 2022-1-3 v2.4.5 beta -- 增加复制提示 -- 更新安装代码 -- 更改前端样式 -- 更新上传格式 -- 重构了密码验证 -- 使用md5存储密码 -- 增加后台设置提示 -- 增加更改网站配色 -- 增加缩略图索引格式 -- 调整后台分类及位置 -- 增加在线修改账号密码 -- 增加以源文件名称命名 -- 增加缩略图两种生成方式和开关 -- 修复开启前端压缩导致的上传图片异常 -- 屏蔽因缺少PHP扩展而不能生成缩略图的格式 - -* 2021-12-25 v2.4.4 -- 更改favicon.ico -- 修复缩略图数量统计 -- 增加缩略图生成开关 -- 日志增加更多文件信息 -- 前端增加裁剪和压缩质量 -- 上传失败将会输出更多信息 -- 修复前端压缩图片不能关闭问题 -- 修复上传设置中错误和页面显示 -- 调整网站设置->上传设置的排序 -- 将快捷操作中心转移到网站设置中 -- 修复因生成缩略图导致的前端数据返回失败 -- 增加简单图床chrome浏览器插件,可自行配置网站->[EasyImage-Browser-Extension](https://github.com/icret/EasyImage-Browser-Extension) - -* 2021-11-17 v2.4.3 -- 增加登录验证码 -- 二级目录安装 -- 一些优化 - -* 2021-11-14 v2.4.2 -- 增加上传日志 - -* 2021-11-12 v2.4.1 -- 增加缓存周期配置 -- 增加上传统计 -- 增加viewjs -- 更新依赖件 -- 修复统计错误 - -* 2021-11-9 v2.4.0 -- 增加统计缓存 -- 增加最近30天上传统计与占用空间图表 -- 增加初始化安装(可能会不支持二级目录安装,可删除install文件夹初始化) -- 增加在线编辑配置(之前是需要修改config.php文件,现在可以直接网站端修改了) -- 删除广场会导致浏览速度变慢的代码 -- 删除快捷配置会导致浏览速度变慢的代码 - -* 2021-11-3 v2.3.2 -- 增加广场图片缓存 -- 重构广场样式 - -* 2021-11-3 v2.3.1 -- 增加监黄接口 -- 增加审核违规图片 -- 修复对php5.6的支持 -- 修复二级目录的安装 - -* 2021-10-24 v2.3.0 -- 将服务器环境监测改为第一次打开时自动检测(如需再次展示需删除config目录下的EasyImage.lock) -- 增加快捷操作中心显示服务信息 -- 增加对上传文件的命名方式(详见config.php文件里的注释) -- 增加隐私政策、服务条款、DMCA -- 增加自定义静态文件CDN源 -- 增加dns-prefetch -- 删除了tinyfilemanager文件管理(感觉没什么用) -- 一些bug得以修复 - -* 2021-5-22 v2.2.0 -- 增加根目录静态属性 -- 增加浏览页面懒加载 -- 增加浏览页面启用选定日期查看图片 -- 增加版本检测 ***每月10日06点和25日01点检测Github是否更新*** -- 增加上传压缩 ***此压缩有可能使图片变大!特别是小图片 也有一定概率改变图片方向*** -- 增加批量压缩目录 ***TinyPng或本机压缩,本机压缩出现的问题*** -- 修复title -- 修复二级目录安装 -- 修复对PHP5.6的兼容 ***建议使用php7.0及以上!*** - -* 2021-5-8 v2.1.1 -- 修复上传界面上传失败提示信息bug -- 浏览页面重构 -- 删除页面添加登录删除 -- 调整首页显示 -- 将调整图片长宽放置前端,减小资源开销 -- 其他小调整 - -* 2021-5-2 v2.1 -- 将tinyfilemanager配置文件简单翻译并集成到config.php -- 增加底部自定义信息 -- 增加检测PHP环境,给与提示 -- 增加删除图片url(服务器不会保存删除链接) -- 恢复随机浏览20张上传图片 可以设定浏览数量和关闭浏览 -- - 随机浏览图片可以在线删除 -- 可以使用 https://png.cm/libs/list.php?num=100 定义浏览数量 -- 修复一些调用 -- 更改二维码显示方式 -- 开启api 需要token验证上传 -- 重构并修复check.php相关文件 -- 重构部分代码 -- 更改目录结构 -- 增加安全性配置 -- * Apache配置文件默认设置上传目录不可运行 - -```Apache -RewriteEngine on RewriteCond % !^$ -RewriteRule i/(.*).(php)$ – [F] -RewriteRule public/(.*).(php)$ – [F] -RewriteRule config/(.*).(php)$ – [F] -``` - -- * Nginx请在Nginx配置: - -```Nginx - # 禁止运行php的目录 - location ~* ^/(i|public|config)/.*\.(php|php5)$ - { - deny all; - } -``` -- - 或者参考:https://blog.png.cm/939.html -- 一些精简 - -* 2021-4-14 v2.0.2.1 Dev1 -- 更新静态文件版本 -- 请所有更新过2.0.2.1版本升级到此版本 -- 更改一些描述 -- md5提交登录验证 -- 登录上传也显示公告 - -* 2021-03-28 v2.0.2.1 -- 更新管理程序,修复部分漏洞 -- 修复不能等比例缩小图片 -- 支持php8 - -* 2019-6-26 v2.0.2.0 -- 精简压缩代码,使得不再压缩后反而变大 -- 删除异域上传功能,不再支持异域上传 -- 修复开启登录后无法粘贴密码 -- 后台控制上传数量,上传格式 -- 其他一些优化 - -* 2019-6-14 v2.0.1.9 -- 增加复制链接按钮 -- 增加暂停上传按钮 -- 增加QQ截图,剪切板上传 -- 增加文字/图片水印透明度 -- 恢复开启/关闭api上传 -- 恢复支持水印文字颜色 -- 恢复支持远程上传图片 -- 修复安装时候的权限 -- 修复管理无法多选的问题 -- 修复上传透明png背景变为纯黑的问题 -- 修复成功上传图片但前端无法获取链接 -- 修复在centos64 lnmp1.6 php7.1环境下的图片信息读取问题 -- 修改图片压缩方式,速度更快,相比之前提高5倍以上 -- 更改管理路径 -- 更改上传路径,文件名更短 -- 更改上传显示方式为缩略图 -- 关闭添加图片后自动上传 -- 纪念一下2019年,将版本号改为2.0.1.9 - -* 2019-5-23 v2.0 -- 在继承上个版本(1.6.4)的基础上进行了全新优化 -- 修复上传经常失败的问题 -- 删除一些不常用但会增加功耗的过程 -- 全新的压缩 将文件继续缩小 -- 全新的目录系统,精简代码 -- 设置仅允许在config.php修改,注释更加明了,即使没有代码基础也可以操作 -- 增加新的文件管理系统,感谢 tinyfilemanager -- ~~支持文字/图片水印 可自定义文字颜色~~ -- ~~支持文字水印背景颜色~~ -- ~~支持文字水印透明度~~ -- ~~支持删除远程上传文件~~ -> 不再支持删除远程文件 -- ~~(支持开启/关闭api自定义文字水印)~~ -- ~~支持删除自定义删除图片(仅管理员)~~ -
- -
与1.6.4版本差别 - -##### 不建议再使用 [EasyImage 1.6.4版本](https://github.com/icret/easyImages) - -- 在继承上个版本([1.6.4](https://github.com/icret/easyImages "1.6.4"))的基础上进行了全新优化 -- 修复上传经常失败的问题 -- 删除一些不常用但会增加功耗的过程 (删除的在下边会有标记) -- 全新的压缩 将文件继续缩小 -- 全新的目录系统,精简代码 -- 设置仅允许在config.php修改,注释更加明了,即使没有代码基础也可以操作 -- 增加新的文件管理系统,感谢 tinyfilemanager -- ~~支持文字/图片水印 可自定义文字颜色~~ -- ~~支持文字水印背景颜色~~ -- ~~支持文字水印透明度~~ -- ~~支持删除远程上传文件~~ -> 不再支持删除远程文件 -- ~~(支持开启/关闭api自定义文字水印)~~ -- ~~支持删除自定义删除图片(仅管理员)~~ - -
- - ## 支持开发者 - - | 支付宝支持 | 微信支持 | - | :---------------------------------------: | :-------------------------------------: | - | ![支付宝支持](./public/images/alipay.jpg) | ![微信支持](./public/images/wechat.jpg) | - ## 界面演示 - ![简单图床 - 上传界面](./install/README/674074848.png) - ![简单图床 - 广场界面](./install/README/3053540273.png) - ![简单图床 - 后台界面](./install/README/2657944724.png) - ![简单图床 - 统计界面](./install/README/1305032567.png) - ![简单图床 - 图片信息](./install/README/info.png) - ![简单图床 - 上传日志](./install/README/log.png) + ![简单图床 - 上传界面](./docs/images/README/674074848.png) + ![简单图床 - 广场界面](./docs/images/README/3053540273.png) + ![简单图床 - 后台界面](./docs/images/README/2657944724.png) + ![简单图床 - 统计界面](./docs/images/README/1305032567.png) + ![简单图床 - 图片信息](./docs/images/README/info.png) + ![简单图床 - 上传日志](./docs/images/README/log.png) - -## 兼容 +## 环境要求 +> 推荐环境:Nginx + PHP≥7.0 + linux - - 最低`PHP 5.6`,推荐`PHP≥7.0`及以上版本,需要PHP支持`Fileinfo,iconv,zip,mbstring,openssl`扩展,如果缺失会导致无法上传/删除图片 - - 文件上传视图提供文件列表管理和文件批量上传功能,允许拖拽(需要`HTML5`支持)来添加上传文件,支持上传大图片,优先使用`HTML5`旧得浏览器自动使用`Flash和Silverlight`的方式兼容 +- ##### 兼容 + + >最低`PHP 5.6`,推荐`PHP≥7.0`及以上版本,需要PHP支持`Fileinfo,iconv,zip,mbstring,openssl`扩展,如果缺失会导致无法上传/删除图片 + 文件上传视图提供文件列表管理和文件批量上传功能,允许拖拽(需要`HTML5`支持)来添加上传文件,支持上传大图片,优先使用`HTML5`旧得浏览器自动使用`Flash和Silverlight`的方式兼容 ## 鸣谢 - - [verot](https://github.com/verot/class.upload.php "verot" ) - - [ZUI](https://github.com/easysoft/zui "ZUI" ) +- [verot](https://github.com/verot/class.upload.php "verot" ) +- [ZUI](https://github.com/easysoft/zui "ZUI" ) ## 开源许可 - [GPL-2.0](https://github.com/icret/EasyImages2.0/blob/master/LICENSE) - - Copyright © 2018 EasyImage dev By [Icret](https://github.com/icret) - - * have fun! + - Copyright © 2018 EasyImage Developer By [Icret](https://github.com/icret) -[![项目状态](https://repobeats.axiom.co/api/embed/0922803f14091f0686de26fee5196b9984b106a4.svg "Repobeats analytics image")](https://png.cm) -[![Stargazers over time](https://starchart.cc/icret/EasyImages2.0.svg)](https://github.com/icret/EasyImages2.0/stargazers) +* have fun! + +[![Stargazers over time](https://starchart.cc/icret/EasyImages2.0.svg)](https://github.com/icret/EasyImages2.0/stargazers) \ No newline at end of file diff --git a/admin/admin.inc.php b/admin/admin.inc.php index b0d121b..fad3097 100755 --- a/admin/admin.inc.php +++ b/admin/admin.inc.php @@ -11,19 +11,38 @@ require_once APP_ROOT . '/config/config.guest.php'; if (!is_who_login('admin')) { echo ' '; header("refresh:2;url=" . $config['domain'] . "/admin/index.php"); require_once APP_ROOT . '/application/footer.php'; exit; } +// 定义文件位置 +$config_file = APP_ROOT . '/config/config.php'; // config.php +$api_key_file = APP_ROOT . '/config/api_key.php'; // api_key.php +$guest_config_file = APP_ROOT . '/config/config.guest.php'; // config.guest.php + + // 修改config配置 if (isset($_POST['update'])) { $postArr = $_POST; + + if (isset($postArr['user'])) { + if ($postArr['user'] == $guestConfig[$postArr['user']]) + echo ' + + '; + exit(header("refresh:1;")); + } + $new_config = array_replace($config, $postArr); - $config_file = APP_ROOT . '/config/config.php'; cache_write($config_file, $new_config); echo ' + '; header("refresh:1;url=/admin/admin.inc.php"); } @@ -130,8 +145,7 @@ if (isset($_GET['stop_guest'])) { // 删除用户 if (isset($_GET['delete_guest'])) { unset($guestConfig[$_GET['delete_guest']]); - $config_file = APP_ROOT . '/config/config.guest.php'; - cache_write($config_file, $guestConfig, 'guestConfig'); + cache_write($guest_config_file, $guestConfig, 'guestConfig'); echo ' + '; + exit(header("refresh:3;")); + } + $postArr = array('user' => $postArr['user'], 'password' => $postArr['password']); + + $new_config = array_replace($config, $postArr); + cache_write($config_file, $new_config); + echo ' + + '; + header("refresh:1;"); +} + // 添加上传账号 修改config.guest.php if (isset($_POST['uploader_form'])) { // 禁止与管理员登录名相同 if ($_POST['uploader_user'] == $config['user']) { echo ' '; - exit(header("refresh:1;")); + exit(header("refresh:3;")); } // 写入上传者用户数据 $postArr = array( @@ -166,8 +209,7 @@ if (isset($_POST['uploader_form'])) { ) ); $new_config = array_replace($guestConfig, $postArr); - $config_file = APP_ROOT . '/config/config.guest.php'; - cache_write($config_file, $new_config, 'guestConfig'); + cache_write($guest_config_file, $new_config, 'guestConfig'); echo ' + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/sw.js b/docs/sw.js new file mode 100644 index 0000000..4a94652 --- /dev/null +++ b/docs/sw.js @@ -0,0 +1,83 @@ +/* =========================================================== + * docsify sw.js + * =========================================================== + * Copyright 2016 @huxpro + * Licensed under Apache 2.0 + * Register service worker. + * ========================================================== */ + +const RUNTIME = 'docsify' +const HOSTNAME_WHITELIST = [ + self.location.hostname, + 'fonts.gstatic.com', + 'fonts.googleapis.com', + 'cdn.jsdelivr.net' +] + +// The Util Function to hack URLs of intercepted requests +const getFixedUrl = (req) => { + var now = Date.now() + var url = new URL(req.url) + + // 1. fixed http URL + // Just keep syncing with location.protocol + // fetch(httpURL) belongs to active mixed content. + // And fetch(httpRequest) is not supported yet. + url.protocol = self.location.protocol + + // 2. add query for caching-busting. + // Github Pages served with Cache-Control: max-age=600 + // max-age on mutable content is error-prone, with SW life of bugs can even extend. + // Until cache mode of Fetch API landed, we have to workaround cache-busting with query string. + // Cache-Control-Bug: https://bugs.chromium.org/p/chromium/issues/detail?id=453190 + if (url.hostname === self.location.hostname) { + url.search += (url.search ? '&' : '?') + 'cache-bust=' + now + } + return url.href +} + +/** + * @Lifecycle Activate + * New one activated when old isnt being used. + * + * waitUntil(): activating ====> activated + */ +self.addEventListener('activate', event => { + event.waitUntil(self.clients.claim()) +}) + +/** + * @Functional Fetch + * All network requests are being intercepted here. + * + * void respondWith(Promise r) + */ +self.addEventListener('fetch', event => { + // Skip some of cross-origin requests, like those for Google Analytics. + if (HOSTNAME_WHITELIST.indexOf(new URL(event.request.url).hostname) > -1) { + // Stale-while-revalidate + // similar to HTTP's stale-while-revalidate: https://www.mnot.net/blog/2007/12/12/stale + // Upgrade from Jake's to Surma's: https://gist.github.com/surma/eb441223daaedf880801ad80006389f1 + const cached = caches.match(event.request) + const fixedUrl = getFixedUrl(event.request) + const fetched = fetch(fixedUrl, { cache: 'no-store' }) + const fetchedCopy = fetched.then(resp => resp.clone()) + + // Call respondWith() with whatever we get first. + // If the fetch fails (e.g disconnected), wait for the cache. + // If there’s nothing in cache, wait for the fetch. + // If neither yields a response, return offline pages. + event.respondWith( + Promise.race([fetched.catch(_ => cached), cached]) + .then(resp => resp || fetched) + .catch(_ => { /* eat any errors */ }) + ) + + // Update the cache with the version we fetched (only for ok status) + event.waitUntil( + Promise.all([fetchedCopy, caches.open(RUNTIME)]) + .then(([response, cache]) => response.ok && cache.put(event.request, response)) + .catch(_ => { /* eat any errors */ }) + ) + } +}) \ No newline at end of file diff --git a/docs/update.md b/docs/update.md new file mode 100644 index 0000000..760c0c1 --- /dev/null +++ b/docs/update.md @@ -0,0 +1,464 @@ +![项目状态](https://repobeats.axiom.co/api/embed/0922803f14091f0686de26fee5196b9984b106a4.svg "Repobeats analytics image") + +* 2023-02-05 v2.7.4 dev +- 此版本将作为优化和修复bugs + +* 2023-02-05 v2.7.3 +- 修复设置中手动压缩失败! +- 优化排版 + +* 2023-02-05 v2.7.2 +- 增加删除单条历史上传记录 +- 增加 [web-indexr](https://github.com/rehiy/web-indexr) 文件管理, 正在实验中 +- - 作为 [Tinyfilemanager](https://github.com/prasathmani/tinyfilemanager) 的替代品 更轻量化 简单化 +- 修复开启登录上传后,上传者账号上传失败 [#87](https://github.com/icret/EasyImages2.0/issues/87#issue-1569794639) +- 修复检测登录状态错误 +- 优化排版和移动端显示 + +* 2023-02-01 v2.7.1 +- 更新版本号 + +* 2023-02-01 v2.7.0 +- 增加限制游客上传 +- 增加上传历史记录 +- 增加粘贴上传状态 +- 增加广场非图片图标 +- 增加前端显示缩略图链接 +- 增加每日获取Bing图片背景 +- 增加图片详细信息管理登录后显示更多信息 +- 增加解析上传IP地址 (使用方法参考提示信息) +- 修复图片详细信息中随机图片排版混乱 +- 替换访问生成缩略图代码 +- 更新一些组件 +- 调整前端显示 +- 优化代码 + +* 2023-01-21 v2.6.9 Happy New Year +- 修复BMP格式无法增加水印(不建议开启,非常耗时) +- 修复上传用户组会串联变成管理员权限 [#61](https://github.com/icret/EasyImages2.0/issues/61) +- 增加了上传提示和登录提示 +- 增加自定义存储分类路径 设置方法参考 [PHP date() 函数](https://www.runoob.com/php/php-date.html) +- 更改后台部分管理设置的位置 +- 优化操作逻辑和信息提示 + + +* 2022-12-30 v2.6.8 +- 上传组件支持到 PHP 8.2 +- 修复下载任意文件漏洞 [#75](https://github.com/icret/EasyImages2.0/issues/75) +- 增加自定义底部信息 +- 增加自定义管理提示 +- 增加图床模式 + - 危险:除图片外不验证文件是否正常,也代表可以上传任意指定格式! +- 增加上传时生成缩略图(仅设置直链缩略图时生效),低配vps负载较大,影响前端上传速度! +- 其他一些优化 + +* 2022-09-20 v2.6.7 +- 优化后台显示 +- 增加控制缩略图尺寸 +- 修复启用Opcache带来的问题 [#57](https://github.com/icret/EasyImages2.0/issues/57) + +* 2022-07-10 v2.6.6 +- 增加文件uuid命名 +- 界面美化 + +* 2022-07-10 v2.6.6 +- 增加图片信息显示随机图片 +- 增加文件雪花命名 +- 增加举报入口 +- 更新组件 + +* 2022-05-27 v2.6.5 +- 更改文件位置 + +* 2022-05-26 v2.6.4 +- 更改版本显示方式 + +* 2022-05-26 v2.6.3 +- 增加图片下载 +- 增加简单暗黑模式 +- 增加读取上传日志 +- 增加广场浏览往日限制 + - 有助于防爬虫抓取 +- 增加登陆验证码开关(默认关闭) +- 删除图片详情页Exif信息 +- 文件管理中图片使用缩略图显示 +- 更改广场->信息中图片长宽获取方式 + +- 优化图片详情页/广场UI/日志/用户/api 列表 + +* 2022-05-04 v2.6.2 +- 增加API/用户文件浏览和删除 +- 增加转换webp后也会添加水印 + - 转换成webp后不建议开启水印,会增大图片体积 + - webp水印消耗更多PHP内存,PHP8以上有很大概率失败 +- 更改广场页面返回顶部 +- 优化了管理界面UI +- 修复一些bug + +* 2022-05-03 v2.6.1 +- 增加登陆用户有效期 +- 增加管理员/登陆用户/Token专用目录 +- 增加转换图片格式后压缩图片(不建议同时开启后端压缩) +- 增加隐藏存储路径(网站域名与图片域名不同且图片域名需绑定到图片目录) +- 直链缩略图支持bmp,webp +- 本次更新较大,建议重新安装! + +* 2022-04-29 v2.6.0 +- 修复源图缺陷 +- 修复API回收不能还原问题 +- 布局修改 +- 登录页美化 +- 屏蔽登陆页面chrome类浏览器自动填充 + +* 2022-04-02 v2.5.9 +- 增加安装提示 +- 增加忘记密码提示 +- 增加检测水印图片/水印字体是否存在 +- 修复登陆逻辑 +- 修复广场重复显示图片 +- 修改广场删除/回收样式 +- 调整了广告的位置 +- 调整后台设置分表 + +* 2022-04-02 v2.5.8 +- 修复在PHP8环境下的bugs +- 修复删除token产生的bug +- 更改顶部广告位置 +- 更改广场样式 + +* 2022-3-30 v2.5.7 +- 增加弹窗公告 +- 恢复文件管理 +- 微调了广场样式 +- 微调了删除文件 +- 删除了base.php +- 日志记录上传IP端口 +- 日志记录通过API上传的ID +- 修复管理页面短标签bug [#30](https://github.com/icret/EasyImages2.0/issues/30#issue-1185821542) +- 修复图片回收中批量删除失败 +- 修复广场预览ico格式文件失败 +- 修复个别浏览器显示二维遮住网页 [#28](https://github.com/icret/EasyImages2.0/issues/28#issue-1180675728) +- 缩略图最大生成与用户设置最大上传关联 +- 安全检测中检测本地域名改为检测局域网 + +* 2022-3-13 v2.5.6 +- 修复加密删除后不能正确提示 +- 修复webp转换其他格式失败 +- 修复文字水印透明度不生效 +- 修复jscolor显示不正确 +- 增加原图保护 +- 增加检测版本 + +* 2022-3-4 v2.5.5 +- 增加设置页面检测是否开启登录上传 +- 将footer固定在底部 +- 移除function_API.php +- 修复TimThumb不支持bmp格式的bug +- 修复TimThumb不支持webp动态图片bug + +* 2022-2-29 v2.5.4 +- 增加Token有效期 +- 增加回收图片按钮 +- 增加加密删除回收站 +- 修复广场标题 + +* 2022-2-21 v2.5.3 +- 增加图床数据开放 +- 增加自定义服务条款 +- 升级 Viewer.js 到 v1.10.4 +- 将页面选择记录从cookie改为本地存储 +- 修复实时生成缩略图导致的页面布局异常 +- 优化显示代码 +- 不出意外今年将只修复bug和兼容问题 + +* 2022-2-19 v2.5.2 +- 增加简繁体转换 +- 增加管理页面记录当前操作页 +- 修复一处暴露路径bug + +* 2022-2-13 v2.5.1 +- 增加异步执行鉴黄 +- 取消检测imagick扩展 +- 修复可能导致检测弹窗弹出失败 + +* 2022-2-7 v2.5.0 +- 修复静态文件调用失败 + +* 2022-2-6 v2.4.9 +- 修复静态文件引用 + +* 2022-2-6 v2.4.9 +- 修复flash和silverlight路径引用(>IE9不影响) +- markdown html alt值改为源文件名 +- 升级jquery-3.4.1至3.6.0 +- 调整了静态文件位置 + +* 2022-2-5 v2.4.8 +- 调整缩略图内存至128M +- 修复无可疑图片时显示错误 +- 修复转换为webp时会复制一份bug +- 修复开启登录上传后无法上传的bug +- 插件检测的敏感信息转移到管理目录 +- 增加安装时检测.user.ini +- 增加检测鉴黄接口是否可以正确访问 +- 增加异步处理文件,上传完毕后处理速度变快了 +- 增加 [nsfwjs](https://github.com/infinitered/nsfwjs) 接口方式检测违规图片 + - 作者测试时用的`docker`搭建 `docker`地址:[zengdawei/nsfw_restful_api +](https://hub.docker.com/r/zengdawei/nsfw_restful_api) + - 使用注意 程序期望nsfwjs返回json 并且如下格式: +```json +[ + { + "className": "Drawing", + "probability": 0.824431836605072 + }, + { + "className": "Hentai", + "probability": 0.16360442340373993 + }, + { + "className": "Neutral", + "probability": 0.007620695047080517 + }, + { + "className": "Porn", + "probability": 0.004154415801167488 + }, + { + "className": "Sexy", + "probability": 0.00018858206749428064 + } +] +``` +- 增加WordPress上大名鼎鼎的实时缩略图生成TimThumb + - TimeThumb为本图床修改版,会缓存到缓存文件夹方便下次调用 + +* 2022-1-27 v2.4.7 +- 优化页面排版 +- 更改部分命名 +- 增加后端压缩率 +- 增加可以显示多条公告 +- 增加上传后是否显示删除 +- 增加可以关闭广场/统计导航|页面 +- 调整登录和退出文件位置 +- 调整二维码内容为每个页面 +- 更换验证码库并不再区分大小写 +- 修复一处有概率暴露图片绝对路径的bug + +* 2022-1-22 v2.4.6 +- 视图优化 +- 删除重复内容 +- 增加图片信息页面 +- 增加上传黑/白名单 +- 修复因关闭上传日志而导致的无法鉴黄和后端压缩图片 +- 修复安装时更改管理员账号失败 +- 修复更改管理员账户后无法退出 + +* 2022-1-13 v2.4.5 +- 修复一处权限问题 +- 修复恢复可疑图片 +- 增加复制提示 +- 增加默认上传后首选显示链接 + +* 2022-1-3 v2.4.5 beta +- 增加复制提示 +- 更新安装代码 +- 更改前端样式 +- 更新上传格式 +- 重构了密码验证 +- 使用md5存储密码 +- 增加后台设置提示 +- 增加更改网站配色 +- 增加缩略图索引格式 +- 调整后台分类及位置 +- 增加在线修改账号密码 +- 增加以源文件名称命名 +- 增加缩略图两种生成方式和开关 +- 修复开启前端压缩导致的上传图片异常 +- 屏蔽因缺少PHP扩展而不能生成缩略图的格式 + +* 2021-12-25 v2.4.4 +- 更改favicon.ico +- 修复缩略图数量统计 +- 增加缩略图生成开关 +- 日志增加更多文件信息 +- 前端增加裁剪和压缩质量 +- 上传失败将会输出更多信息 +- 修复前端压缩图片不能关闭问题 +- 修复上传设置中错误和页面显示 +- 调整网站设置->上传设置的排序 +- 将快捷操作中心转移到网站设置中 +- 修复因生成缩略图导致的前端数据返回失败 +- 增加简单图床chrome浏览器插件,可自行配置网站->[EasyImage-Browser-Extension](https://github.com/icret/EasyImage-Browser-Extension) + +* 2021-11-17 v2.4.3 +- 增加登录验证码 +- 二级目录安装 +- 一些优化 + +* 2021-11-14 v2.4.2 +- 增加上传日志 + +* 2021-11-12 v2.4.1 +- 增加缓存周期配置 +- 增加上传统计 +- 增加viewjs +- 更新依赖件 +- 修复统计错误 + +* 2021-11-9 v2.4.0 +- 增加统计缓存 +- 增加最近30天上传统计与占用空间图表 +- 增加初始化安装(可能会不支持二级目录安装,可删除install文件夹初始化) +- 增加在线编辑配置(之前是需要修改config.php文件,现在可以直接网站端修改了) +- 删除广场会导致浏览速度变慢的代码 +- 删除快捷配置会导致浏览速度变慢的代码 + +* 2021-11-3 v2.3.2 +- 增加广场图片缓存 +- 重构广场样式 + +* 2021-11-3 v2.3.1 +- 增加监黄接口 +- 增加审核违规图片 +- 修复对php5.6的支持 +- 修复二级目录的安装 + +* 2021-10-24 v2.3.0 +- 将服务器环境监测改为第一次打开时自动检测(如需再次展示需删除config目录下的EasyImage.lock) +- 增加快捷操作中心显示服务信息 +- 增加对上传文件的命名方式(详见config.php文件里的注释) +- 增加隐私政策、服务条款、DMCA +- 增加自定义静态文件CDN源 +- 增加dns-prefetch +- 删除了tinyfilemanager文件管理(感觉没什么用) +- 一些bug得以修复 + +* 2021-5-22 v2.2.0 +- 增加根目录静态属性 +- 增加浏览页面懒加载 +- 增加浏览页面启用选定日期查看图片 +- 增加版本检测 ***每月10日06点和25日01点检测Github是否更新*** +- 增加上传压缩 ***此压缩有可能使图片变大!特别是小图片 也有一定概率改变图片方向*** +- 增加批量压缩目录 ***TinyPng或本机压缩,本机压缩出现的问题*** +- 修复title +- 修复二级目录安装 +- 修复对PHP5.6的兼容 ***建议使用php7.0及以上!*** + +* 2021-5-8 v2.1.1 +- 修复上传界面上传失败提示信息bug +- 浏览页面重构 +- 删除页面添加登录删除 +- 调整首页显示 +- 将调整图片长宽放置前端,减小资源开销 +- 其他小调整 + +* 2021-5-2 v2.1 +- 将tinyfilemanager配置文件简单翻译并集成到config.php +- 增加底部自定义信息 +- 增加检测PHP环境,给与提示 +- 增加删除图片url(服务器不会保存删除链接) +- 恢复随机浏览20张上传图片 可以设定浏览数量和关闭浏览 +- - 随机浏览图片可以在线删除 +- 可以使用 https://png.cm/libs/list.php?num=100 定义浏览数量 +- 修复一些调用 +- 更改二维码显示方式 +- 开启api 需要token验证上传 +- 重构并修复check.php相关文件 +- 重构部分代码 +- 更改目录结构 +- 增加安全性配置 +- * Apache配置文件默认设置上传目录不可运行 + +```Apache +RewriteEngine on RewriteCond % !^$ +RewriteRule i/(.*).(php)$ – [F] +RewriteRule public/(.*).(php)$ – [F] +RewriteRule config/(.*).(php)$ – [F] +``` + +- * Nginx请在Nginx配置: + +```Nginx + # 禁止运行php的目录 + location ~* ^/(i|public|config)/.*\.(php|php5)$ + { + deny all; + } +``` +- - 或者参考:https://blog.png.cm/939.html +- 一些精简 + +* 2021-4-14 v2.0.2.1 Dev1 +- 更新静态文件版本 +- 请所有更新过2.0.2.1版本升级到此版本 +- 更改一些描述 +- md5提交登录验证 +- 登录上传也显示公告 + +* 2021-03-28 v2.0.2.1 +- 更新管理程序,修复部分漏洞 +- 修复不能等比例缩小图片 +- 支持php8 + +* 2019-6-26 v2.0.2.0 +- 精简压缩代码,使得不再压缩后反而变大 +- 删除异域上传功能,不再支持异域上传 +- 修复开启登录后无法粘贴密码 +- 后台控制上传数量,上传格式 +- 其他一些优化 + +* 2019-6-14 v2.0.1.9 +- 增加复制链接按钮 +- 增加暂停上传按钮 +- 增加QQ截图,剪切板上传 +- 增加文字/图片水印透明度 +- 恢复开启/关闭api上传 +- 恢复支持水印文字颜色 +- 恢复支持远程上传图片 +- 修复安装时候的权限 +- 修复管理无法多选的问题 +- 修复上传透明png背景变为纯黑的问题 +- 修复成功上传图片但前端无法获取链接 +- 修复在centos64 lnmp1.6 php7.1环境下的图片信息读取问题 +- 修改图片压缩方式,速度更快,相比之前提高5倍以上 +- 更改管理路径 +- 更改上传路径,文件名更短 +- 更改上传显示方式为缩略图 +- 关闭添加图片后自动上传 +- 纪念一下2019年,将版本号改为2.0.1.9 + +* 2019-5-23 v2.0 +- 在继承上个版本(1.6.4)的基础上进行了全新优化 +- 修复上传经常失败的问题 +- 删除一些不常用但会增加功耗的过程 +- 全新的压缩 将文件继续缩小 +- 全新的目录系统,精简代码 +- 设置仅允许在config.php修改,注释更加明了,即使没有代码基础也可以操作 +- 增加新的文件管理系统,感谢 tinyfilemanager +- ~~支持文字/图片水印 可自定义文字颜色~~ +- ~~支持文字水印背景颜色~~ +- ~~支持文字水印透明度~~ +- ~~支持删除远程上传文件~~ -> 不再支持删除远程文件 +- ~~(支持开启/关闭api自定义文字水印)~~ +- ~~支持删除自定义删除图片(仅管理员)~~ + +
与1.6.4版本差别 + +##### 不建议再使用 [EasyImage 1.6.4版本](https://github.com/icret/easyImages) + +- 在继承上个版本([1.6.4](https://github.com/icret/easyImages "1.6.4"))的基础上进行了全新优化 +- 修复上传经常失败的问题 +- 删除一些不常用但会增加功耗的过程 (删除的在下边会有标记) +- 全新的压缩 将文件继续缩小 +- 全新的目录系统,精简代码 +- 设置仅允许在config.php修改,注释更加明了,即使没有代码基础也可以操作 +- 增加新的文件管理系统,感谢 tinyfilemanager +- ~~支持文字/图片水印 可自定义文字颜色~~ +- ~~支持文字水印背景颜色~~ +- ~~支持文字水印透明度~~ +- ~~支持删除远程上传文件~~ -> 不再支持删除远程文件 +- ~~(支持开启/关闭api自定义文字水印)~~ +- ~~支持删除自定义删除图片(仅管理员)~~ + +
\ No newline at end of file diff --git a/docs/三方安装指南.md b/docs/三方安装指南.md new file mode 100644 index 0000000..b3cbdff --- /dev/null +++ b/docs/三方安装指南.md @@ -0,0 +1,11 @@ +- 由热心TG网友`Derek DDS`制作的`Docker`版本 +https://github.com/DDS-Derek/EasyImage-Docker +https://hub.docker.com/r/ddsderek/easyimage + +- 由热心网友`咕咕` 制作的使用教程 + - 宝塔版使用教程 +https://blog.laoda.de/archives/aapanel-install-easyimage + - docker 版使用教程 +https://blog.laoda.de/archives/docker-compose-install-easyimage + - 视频安装教程 视频地址 https://www.bilibili.com/video/BV1Ya411e7ES?zw + \ No newline at end of file diff --git a/docs/使用PicGo上传.md b/docs/使用PicGo上传.md new file mode 100644 index 0000000..1e9a2ce --- /dev/null +++ b/docs/使用PicGo上传.md @@ -0,0 +1,18 @@ +##### 1. 下载最新版[PicGo-windows版][1]或者[PicGo-mac版][2](我下载的版本是:PicGo-Setup-2.3.1-x64) +##### 2. 安装后在插件设置中搜索`web-uploader 1.1.1` 并安装(下载插件可能需要[node.js][3]插件) +##### 3. 图床设置-自定义Web图床中按照如下方式填写,然后点击确定并设置为默认图床。 +##### 4. 登录图床后台->图床安全->高级设置->开启API上传 + +```json +API地址:https://png.cm/api/index.php // 输入你的网站api地址 +POST参数名: image +JSON路径: url +自定义Body: {"token":"1c17b11693cb5ec63859b091c5b9c1b2"} // 这里输入你网站生成的token +``` + +![EasyImage简单图床使用PicGo上传图片](images/4128197507.png) + + + [1]: https://github.com/Molunerfinn/PicGo/releases + [2]: https://github.com/Molunerfinn/PicGo/releases + [3]: https://nodejs.org/zh-cn/ diff --git a/docs/使用ShareX上传.md b/docs/使用ShareX上传.md new file mode 100644 index 0000000..ab3c5a6 --- /dev/null +++ b/docs/使用ShareX上传.md @@ -0,0 +1,29 @@ +- 登录图床后台->图床安全->高级设置->开启API上传 +- 下载[ShareX](https://getsharex.com/downloads/),然后打开目标->自定义上传目标->导入下面代码即可上传。 +![使用ShareX上传](images/f54adf65a4ds56f.png) + +- 需要注意,`RequestURL`需要替换成自己的域名,token也需要修改成自己的! + +```json +{ + "Version": "13.5.0", + "Name": "简单图床API图片上传", + "DestinationType": "ImageUploader", + "RequestMethod": "POST", + "RequestURL": "https://png.cm/api/index.php", + "Body": "MultipartFormData", + "Arguments": { + "token": "8337effca0ddfcd9c5899f3509b23657" + }, + "FileFormName": "image", + "URL": "$json:url$", + "ThumbnailURL": "$json:thumb$", + "DeletionURL": "$json:del$", + "ErrorMessage": "$json:message$" +} +``` +![](images/ShareX_UwVwPnC3MJ.png) + +- 上边设置好以后 设置为默认上传 + +![](images/ShareX_luVGfPaU9E.png) \ No newline at end of file diff --git a/docs/公共查询.md b/docs/公共查询.md new file mode 100644 index 0000000..6605483 --- /dev/null +++ b/docs/公共查询.md @@ -0,0 +1,39 @@ +可用让网站提供一些可用对外展示的数据 +- 首先在`图片安全`开启开放数据 +- 根据需要选择要对外展示的数据 +![](images/QQ截图20220222162359.png) +现在就可以直接访问指定参数的链接获得数据了。 +例如获得已经建立的文件夹:http://127.0.0.1/api/public.php?show=dir +![](images/QQ截图20220222162603.png) + +jQuery调用演示代码 + +```html + + + +``` + +或者 + +```html +

今日上传loading...张图片

+

本站已托管loading...张图片

+ + + + +``` diff --git a/docs/分离相关.md b/docs/分离相关.md new file mode 100644 index 0000000..4354d98 --- /dev/null +++ b/docs/分离相关.md @@ -0,0 +1,10 @@ + +- 用户分离 +上传者用户上传的图片与游客上传的图片分别建立文件夹 +- Token分离 +使用token上传的用户将以Token ID创建文件夹 +- 管理分离 +为管理员创建单独的上传目录 + +##### 注意 +- 广场仅显示游客上传,不显示`用户分离` `Token分离` `管理分离` 的图片 diff --git a/docs/后台管理.md b/docs/后台管理.md new file mode 100644 index 0000000..4a681f2 --- /dev/null +++ b/docs/后台管理.md @@ -0,0 +1,3 @@ +- EasyImage的后台管理非常丰富,所有的更改均有注明 + +![配置中心-EasyImage2.0简单图床](images/微信截图_20220427152523.png) \ No newline at end of file diff --git a/docs/图床更新升级.md b/docs/图床更新升级.md new file mode 100644 index 0000000..2173b4b --- /dev/null +++ b/docs/图床更新升级.md @@ -0,0 +1,20 @@ +##### 正常升级 +1. 备份`config`目录(没有增加上传用户和api可以只保留`config.php`文件)和`上传文件目录` +2. 将新程序下载至网站目录解压覆盖,然后将备份的文件替换既完成升级 +3. 如果出现错误请在设置中把所有底部设置点击一次`保存` + +##### docker升级 +1. 删除容器,镜像 +2. 保留挂载在主机上的配置文件 +3. 重新执行一边安装代码 + +##### 更新后显示当前版本与Github版本不一致? +- 删除`/admin/logs/verson`文件夹 + - 删除后并未获取版本? 答案:PHP没装curl或文件权限问题 + +- 2.6.5 之前的版本: +1. 打开`/config/config.php`文件找到当前版本号替换成最新版本号 + +***** +- 可以在设置->系统信息->图床信息中查看当前版本和Github最新版本 +- 每个月获取2次,因为PHP不能定时任务,所以不一定能正确获取 \ No newline at end of file diff --git a/docs/安全配置.md b/docs/安全配置.md new file mode 100644 index 0000000..6b8374a --- /dev/null +++ b/docs/安全配置.md @@ -0,0 +1,26 @@ +- Apache环境在上传目录添加配置文件`.htaccess` 使上传目录不可运行PHP程序(默认已经存在) + +```Apache + +Order allow,deny +Deny from all + +``` + +- Nginx环境禁止多个目录运行`PHP`程序: + +```Nginx + # "i|public"是你要禁止的目录 放到listen段落之后才生效 + location ~* ^/(i|public)/.*\.(php|php5)$ + { + deny all; + } +``` + +- Lighthttpd环境禁止多个目录运行`PHP`程序: + +```Lighthttpd +$HTTP["url"] =~ "^/(i|public)/" { + fastcgi.server = () +} +```w \ No newline at end of file diff --git a/docs/安装图床.md b/docs/安装图床.md new file mode 100644 index 0000000..a5f7786 --- /dev/null +++ b/docs/安装图床.md @@ -0,0 +1,18 @@ +> 推荐环境:Nginx + PHP≥7.0 + linux + +#### windows: +- 下载简单图床 [最新版](https://github.com/icret/EasyImages2.0/archive/refs/heads/master.zip)|[稳定版](https://github.com/icret/EasyImages2.0/releases) 上传至web根目录 + +#### Linux: + +- `git clone https://github.com/icret/EasyImages2.0.git` 至安装目录 + +- 赋予安装目录www:www和0755权限: +```shell +chmod -R 755 /安装目录 +chown -R www:www /安装目录 +``` + +#### BT宝塔面板 +- 安装环境 Ngixn(推荐) / Apache + PHP(推荐≥7.0) +- 软件商店搜索`简单图床`一键部署 diff --git a/docs/安装扩展.md b/docs/安装扩展.md new file mode 100644 index 0000000..4b6728f --- /dev/null +++ b/docs/安装扩展.md @@ -0,0 +1,11 @@ +- 安装PHP扩展 + +- Lnmp + +[lnmp安装扩展教程](https://www.vpser.net/manage/lnmp-php-install-ext.html) + +- 宝塔面板: + +打开宝塔后台->软件商店->已安装->选择php->设置->安装Fileinfo、iconv、zip、mbstring、openssl扩展(如果没有就是已经安装了)。 +![](images/微信截图_20211029180211.png) + diff --git a/docs/常见问题.md b/docs/常见问题.md new file mode 100644 index 0000000..e4c72da --- /dev/null +++ b/docs/常见问题.md @@ -0,0 +1,24 @@ +1. 请将所有文件赋予`0755`和`www`权限 +2. 对`PHP`不太熟悉的请不要将图床程序放置于二级目录 +3. 请关闭防跨站或删除域名文件夹内的`user.ini`文件 如`宝塔面板`|`军哥lnmp` +4. 网站域名与图片域名必须填写,如果只有一个域名请填写成一样的 +5. 首次使用会执行安装程序并并在`config`目录生成`install.lock` 跳过安装流程请删除`install`目录 +6. 首次访问首页会检查环境并在`config`目录下生成`EasyImage.lock` +7. 可以使用谷歌浏览器的调试模式查看错误`F12->console` +8. 提示 `upload File size exceeds the maximum value` 调整`PHP`上传大小 +9. 提示 `undefined function imagecreatefromwebp()`GD没安装webp, 以此类推 +10. 提示 `Warning: is_dir(): open_basedir restriction in effect`解决方法同`3` +11. 无法上传/访问/不显示验证码: 1. 权限问题见问题`1` 2. CDN缓存了 3. 防火墙拦截 +12. 宝塔或者其他环境安装成功但是上传失败,多数原因是防火墙拦截上传,取消拦截即可 +13. `Fatal error: Allowed memory size......`主机内存或分配给PHP的内存不够 解决方法百度 +14. 开启原图保护功能后打开图片链接显示`404`是因为`nginx`或`Apache`页面缓存导致的,`Nginx`解决办法: + +```Nginx +# 把Nginx这段配置删掉 +location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ +{ + expires 30d; + error_log /dev/null; + access_log /dev/null; +} +``` diff --git a/docs/打赏开发者.md b/docs/打赏开发者.md new file mode 100644 index 0000000..d6d815f --- /dev/null +++ b/docs/打赏开发者.md @@ -0,0 +1,6 @@ + +- 使用软件是对作者的最大鼓励,非常感谢你的打赏! + + | 支付宝支持 | 微信支持 | + | :---------------------------------------: | :-------------------------------------: | + | ![支付宝支持](../public/images/alipay.jpg) | ![微信支持](../public/images/wechat.jpg) | \ No newline at end of file diff --git a/docs/更改域名-服务器.md b/docs/更改域名-服务器.md new file mode 100644 index 0000000..4209534 --- /dev/null +++ b/docs/更改域名-服务器.md @@ -0,0 +1,10 @@ +- 更改域名 + +1. 更改图床域名 +登录网站后台->网站设置->网站域名->将新域名填入 +2. 更改图片域名 +登录网站后台->网站设置->图片域名->将新域名填入 + +- 更改服务器 +1. 将域名解析到新服务器 +2. 将网站整体搬运至新服务器 \ No newline at end of file diff --git a/docs/苹果快捷指令上传.md b/docs/苹果快捷指令上传.md new file mode 100644 index 0000000..86bfedb --- /dev/null +++ b/docs/苹果快捷指令上传.md @@ -0,0 +1,3 @@ +- 苹果快捷指令直接访问下面链接即可: +- 登录图床后台->图床安全->高级设置->开启API上传 +[https://www.icloud.com/shortcuts/857b1921c1aa4d679470fcfed583cb1c](https://www.icloud.com/shortcuts/857b1921c1aa4d679470fcfed583cb1c) diff --git a/docs/许可证.md b/docs/许可证.md new file mode 100644 index 0000000..113ad69 --- /dev/null +++ b/docs/许可证.md @@ -0,0 +1,2 @@ + - [GPL-2.0](https://github.com/icret/EasyImages2.0/blob/master/LICENSE) + - Copyright © 2018 EasyImage Developer By [Icret](https://github.com/icret) \ No newline at end of file diff --git a/docs/跳过安装引导.md b/docs/跳过安装引导.md new file mode 100644 index 0000000..bddcc03 --- /dev/null +++ b/docs/跳过安装引导.md @@ -0,0 +1,8 @@ +有时候因为虚拟机或者其他的原因无法使用程序提供的安装页面引导,可以跳过安装引导 + +- 跳过安装引导流程 +1. 删除`install`目录 +2. 修改`/caonfig/config.php`文件中的`domain`网站网址和`imgurl`图片网址 ,网址末尾不能加`/` +3. 后续更改可以通过访问网站的设置页面修改 +4. 虽然不经过安装引导,但是安装页面上所有需要满足的条件必须支持 +![图床要求](images/1-001.png) diff --git a/docs/鉴黄.md b/docs/鉴黄.md new file mode 100644 index 0000000..3f9a6a0 --- /dev/null +++ b/docs/鉴黄.md @@ -0,0 +1,31 @@ +图床支持moderatecontent和nsfwjs方式鉴黄 +- moderatecontent: + 1. 注册[moderatecontent](https://client.moderatecontent.com/)并获取Token + 2. 后台API设置中填入Moderate Key + 3. 后台图片安全图片鉴黄以moderatecontent方式 + +- nsfwjs [nsfwjs docker](https://hub.docker.com/r/icret/nsfw_restful_api) + 1. 确定已安装`docker`和`docker-compose` + 2. 拉取镜像 `docker pull icret/nsfw_restful_api:latest` 或者直接 `docker run -p 3307:3307 -d icret/nsfw_restful_api` + 3. 后台API设置中填入网址 比如:`http://IP:3307/api/nsfw/classify?url=` + 4. 后台图片安全图片鉴黄以nsfwjs方式 + 5. 如果你使用别的nsfwjs api,必须返回`json`并且格式如下: + +```json +[{ + "className": "Drawing", + "probability": 0.824431836605072 +}, { + "className": "Hentai", + "probability": 0.16360442340373993 +}, { + "className": "Neutral", + "probability": 0.007620695047080517 +}, { + "className": "Porn", + "probability": 0.004154415801167488 +}, { + "className": "Sexy", + "probability": 0.00018858206749428064 +}] +``` \ No newline at end of file diff --git a/docs/隐藏存储路径.md b/docs/隐藏存储路径.md new file mode 100644 index 0000000..913fcb1 --- /dev/null +++ b/docs/隐藏存储路径.md @@ -0,0 +1,7 @@ +- 默认上传链接格式为: https://i2.100024.xyz/2023/02/06/1w0b5z.webp 其中`/i/`是由上传设置->存储路径设置的; +- 如果想隐藏`/i/`目录,需打开 图床安全->隐藏*目录,然后将图片域名绑定到`/i/`目录 + +- 注意: +1. 图片链接会隐藏你设置的存储路径 例如`/i/` +2. 网站与图片域名不能相同 +3. 图片域名需绑定到存储路径 \ No newline at end of file diff --git a/install/README/info.png b/install/README/info.png deleted file mode 100755 index 79d7006..0000000 Binary files a/install/README/info.png and /dev/null differ diff --git a/install/contorl.php b/install/contorl.php index 2b9f87d..71cd80e 100755 --- a/install/contorl.php +++ b/install/contorl.php @@ -53,6 +53,7 @@ if (isset($_POST['del_extra_files'])) { @unlink(APP_ROOT . '/config/EasyIamge.lock'); @deldir(APP_ROOT . "/.github"); @deldir(APP_ROOT . "/.git"); + @deldir(APP_ROOT . "/docs"); } catch (Exception $e) { echo $e->getMessage(); }