bs-community / blessing-skin-plugins Goto Github PK
View Code? Open in Web Editor NEWOfficial plugins for Blessing Skin.
License: MIT License
Official plugins for Blessing Skin.
License: MIT License
通过正版验证之后,是不是可以通过Mojang启动器登录已部署Yggdrasil API的服务器?
因为有的插件不支持uuid模式,当玩家更改名称后,会被服务器当成新的玩家处理,希望能出一个插件不让玩家修改名称
建议增加对NamelessMC的支持
建议Blessing Skin 账号修改密码 yggdrasil 令牌 立即失效
当在皮肤站正版验证成功后,往FastLogin数据表添加相关记录,以让FastLogin在游戏中将玩家自动标记为正版玩家
谢谢
希望可以在用户管理界面显示一个用户是否是正版
Hi,
I'm using a modified version of Helios launcher to use Yggdrasil API on my Blessing Skin instance.
The launcher asks me for login before letting me launch Minecraft (so I cannot use Authlib-injector).
I replaced all occurences of authserver.mojang.com to my server Yggdrasil address and replaced endpoints/authenticate
, /invalidate
,... by /authserver/authenticate
, /authserver/invalidate
,...
When I log in with a username it says that the user does not exists and when I log in with my email (with 3 players added) it says I don't have a Premium account cause the server response fires a code (screenshot below in comments)
Can you help me debugging this ?
The script which manage connection to Yggdrasil :
https://github.com/Terebros-MC/HeliosLauncher/blob/master/app/assets/js/mojang.js
BS版本:v4.0.4
插件版本:2.0.0
服务器环境:MySQL 5.6.16-log/Nginx 1.13.6.2/PHP-7.2
初次安装点击启用插件后报错:
详细信息:SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'where email
= ? limit 1' at line 1 (SQL: select * where email
= 【本账户邮箱】 limit 1)
已自行解决,现提交issue供开发者参考。
invitation-codes插件在注册页面的placeholder框内不显示“邀请码”或“Invitation Code”。而是显示“Iinvitation-codes.placeholder”。
解决方法:
在plugins/invitation-codes/lang文件夹的en和zh_CN文件夹中,编辑”front-end.yml“文件,
将
placeholder: 邀请码
改为
placeholder: "邀请码"
将
placeholder: Invitation Code
改为
placeholder: "Invitation Code"
问题即可解决
希望邮箱限制插件不限制正版验证的邮箱后缀,(一般买正版的不会滥用这个吧)
经过在 LittleSkin 上的测试,在使用最新版本的举报插件时,若管理员执行的操作不止一种,会重复奖励积分给用户。
我的暴力解决方案是检查数据表中举报状态这个字段的值是否为 0,若是,则奖励积分;若不是,则不再奖励积分。
应该在向数据库插入记录前检查是否存在已有的。
使用nginx后,Yggdrasil 的皮肤在游戏内无法加载,但是按照常见问题中的访问url可以加载皮肤图片(之前使用apache没有这个问题)
Blessing Skin
版本 5.0.0
应用环境 production
是否处于调试状态 No
Laravel 版本 7.18.0
服务器
PHP 版本 7.4.11
Web 服务软件 nginx/1.18.0
操作系统 Linux 3.10.0-957.27.2.el7.x86_64 x86_64
无
使用nginx
刚刚更新的注册邀请码插件3.0.0中无法在注册页面中插入相关表格
blessing.event.on('mounted', ({ el }) => {
$("main").before('<div class="input-group mb-3"><input class="form-control" id="invitation-code" required="required" type="text" placeholder="邀请码"> <div class="input-group-append"><div class="input-group-text"><span class="fas fa-id-card"></span></div></div></div>');
})
这样修改后可以显示出相关表格,但有点强迫症 input在form外边了,应该是mounted事件的时间有问题,在之前就触发了这个事件
5.0.0beta2安装腾讯COS5插件后无法使用
500 Internal Server Error
详细信息:Target class [parsedown] does not exist. (View: /mcskin/plugins/textures-qcloud-cos/views/config.blade.php)
报错如图
等待大佬支援 @g-plane
laravel translator 的 locale 不应该为 NULL,如果是 NULL,会在调用 trans 函数翻译文本时,在 spatie/laravel-translation-loader/src/TranslationLoaderManager.php:27
处抛出错误,错误信息是 Argument 1 passed to Spatie\TranslationLoader\TranslationLoaderManager::getTranslationsForTranslationLoaders() must be of the type string, null given, called in ...
,即 locale 必须为字符串类型,而不能是 NULL。
上述错误体现在实际使用上,就是 hmcl 在输入错误密码后,会提示网络错误,并且用 wireshark 抓包后,显示 500 ,并且响应体为空(错误信息的渲染也需要调用 trans 函数)
yggdrasil-api 的 plugins/yggdrasil-api/src/Controllers/AuthController.php:285
执行了 setLocale ,而并未对 locale 类型进行检查,这会导致数据库中的 NULL 通过这里传递到 laravel translator ,导致上面的错误。
建议:
这是在启动器输入错误密码,服务器返回 500 时,服务器的错误日志:https://paste.ubuntu.com/p/37xqrvYM3d/
这是在尝试找到问题原因时,在 vendor/laravel/framework/src/Illuminate/Translation/Translator.php:409
处设置了 if(!$locale) throw new Error();
断点后,服务器的错误日志(即调用栈):https://paste.ubuntu.com/p/7ypxjk3XXw/
全新安装 blessing-skin-server 5.0 ,通过手动解压,执行 artisan plugin:enable ,安装 yggdrasil-api 插件。
用管理员账户尝试登陆游戏,并且输入错误的密码。
你好,我的服务器需要人工审核新用户,能不能弄一个这样的插件或者功能?谢谢!
用户只要未进入服务器便不会生成UUID/
用户重命名后进入服务器UUID重新生成,导致游戏内数据重置
新功能请求
请在面板里添加邮箱后缀限制,防止一些免费匿名邮箱的垃圾邮件攻击
SQLSTATE[42000]: Syntax error or access violation: 1103 Incorrect table name '' (SQL: select * from `` where email
= [email protected] limit 1)
SyncWithAuthme.php
下的
// 初始化在 Authme 那边注册的用户
User::where('realname', '<>', '')
->get()
->filter(function ($user) {
return $user->players->count() == 0;
})
->each(function ($user) {
$user->nickname = $user->realname;
$user->score = option('user_initial_score');
$user->register_at = Carbon::now();
$user->last_sign_at = Carbon::now()->subDay();
$user->save();
$player = new Player;
$player->name = $user->realname;
$player->uid = $user->uid;
$player->tid_skin = 0;
$player->save();
});
建议增加对Flarum论坛程序进行数据对接,让玩家使用这个论坛系统账号密码登录皮肤站,使用MIT公共协议,数据库+论坛结构简单。
API 规范在 yushijinhun/authlib-injector#90 中已经详细叙述,下面讨论的主要是 BS 具体实现的问题。
Yggdrasil 的材质上传 API 中,并没有参数用于设置材质的公开 / 私密。在我看来,材质应当默认私密,理由如下:
@tnqzh123 指出默认私密存在的问题:
材质上传 API 中没有材质名称参数,因此 BS 需要为其指定一个临时材质名称。
API 规范建议客户端包含一项 filename
参数,即材质文件名。如果这一参数存在,则可以考虑用在临时材质名称中。
在我看来,可以用这种方法构造临时材质名称:upload-{filename}-{datetime}
。其中 {filename}
即请求参数中的 filename
,如果未包含则用 unnamed
替代。{datetime}
即时间戳,格式为 yyyyMMddHHmmss
通过这一 API 上传的材质,由于其名称是临时指定的,因此不宜直接公开。我认为,在用户将材质设为公开前,应先要求他修改材质名称。(注:可能并不是特别需要这一功能)
如果我们将原先上传的材质保留,那么在多次上传材质后,用户很可能会遇到积分不足的情况,此时他就不得不删除一些旧材质。如果我们在用户上传材质时,删除原先材质,就可以尽量避免这种情况的出现。
这一问题有待进一步的讨论。在此我先抛出下面几个问题:
建议增加对phpbb论坛程序进行数据对接,让玩家使用这个论坛系统账号密码登录皮肤站,毕竟这个论坛系统比Discuz开放,他用的是GNU通用公共许可协议。
重现:当登陆并选择角色完成一次后,启动器再次利用access-token登录时,yggdrasil-api返回的将是没有角色。需要退出登陆,并重新输入密码获取access-token
增加材质标签插件,理想情况下的具体具体细节如下:
Demo 可以参考 WordPress 的「标签」功能。
上述功能不一定要全部实现,但最好在可行的情况下实现尽量多的功能。
Edit by @tnqzh123
(纯用户视角,自己不会写,有能写的朋友考虑一下😂感谢)
如果您或您所使用的皮肤站安装有「正版验证」插件,并且您的账号经过了正版验证,则可以使用 任意一款启动器(只需要允许自定义 JVM 参数),然后在启动器的设置中修改 JVM 参数以使游戏客户端加载 authlib-injector 即可。
使用 HMCL 的外置登录能正常地登入服务器。然而,正版启动器(最新版 authlib-injector.jar 已放到正确位置)中添加启动参数(-javaagent:authlib-injector.jar=我的皮肤站地址/api/yggdrasil
),无法正常登入服务器。有趣的是,在 HMCL 中使用正版登录,然后添加上述启动参数依然无法登入服务器。不知是插件的问题还是启动参数未正确填写的问题。如果是启动参数未正确填写的问题,请问应该如何填写呢(wiki上并未就此展开介绍)?
如果可以的话,希望能在wiki上写得更清楚一点。
你们的皮肤站真的很好用!麻烦开发者了!谢谢!
我使用oneinstack的lamp,php 7.3.5, apache 2.4, 使用论坛对接插件对接flarum,报错提示
Array to string conversion (View: _/data/wwwroot/skin.axtjblog.cc/plugins/forum-integration/views/config.blade.php)https://skin.axtjblog.cc/laravel.log,并且会导致后面无法登录
Blessing Skin 版本 :v5.0.0 - Crescent Moon Dance(非自行构建)
PHP 版本 :php7.3.4nts_p
Apache / Nginx : Apache
ZipArchive::extractTo(): File exists
[1] app\Services\Unzip.php#L30
[2] app\Http\Controllers\MarketController.php#L69
[3] app\Http\Middleware\CheckRole.php#L22
[4] app\Http\Middleware\FireUserAuthenticated.php#L15
[5] app\Http\Middleware\EnsureEmailFilled.php#L17
[6] app\Http\Middleware\RejectBannedUser.php#L23
[7] app\Http\Middleware\RedirectToSetup.php#L28
[8] app\Http\Middleware\EnforceEverGreen.php#L23
[9] app\Http\Middleware\DetectLanguagePrefer.php#L30
[10] app\Http\Middleware\ConvertEmptyStringsToNull.php#L23
如果我启用信任代理插件会导致全站500
(非框架的500,是直接返回的服务器状态代码中的500内部错误)
这个问题在5.0.0正式版中也发生过
120位看起来有点长,建议默认在16位即可
或者提供选项设置
把源码拉下来之后发现根目录和插件目录里好像都没有 composer.json
和 package.json
欸...
启用插件时会出现SQL语句错误导致的严重错误,错误信息如下
SQLSTATE[42000]: Syntax error or access violation: 1103 Incorrect table name "(SQL: select * from '' where 'email'= 登录邮箱 limit 1"
是语句缺失了表名导致的(好像WHERE条件的单引号也有问题...我不太会=w=)
没找到相关代码故提出Issue
之前有人提过这个。。。
是我的问题还是什么。。。
php : 7.2.16
nginx : 1.16.0
mysql : 5.6.43
500 Internal Server Error
详细信息:SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where email
= ? limit 1' at line 1 (SQL: select * where email
= 内容被隐藏 limit 1)
/api/profiles/minecraft
不能正确处理重复的查询
["character1", "character1"]
这样重复的查询请求时,响应中应只包含一个 character1
角色的信息,但事实上会包含两个 character1
。sessionserver/session/minecraft/profile/:uuid
未指定unsigned=false
时,默认应不包含signature
unsigned
参数时,该API的查询结果会包含signature,但按照规范是不应包含的。这样做(在数字签名过程中)会造成不必要的性能损耗。/authserver/refresh
不应该允许改变选中的角色
400 Bad Request
。/sessionserver/session/minecraft/join
应要求请求中包含的角色与令牌绑定的角色一致
403 Forbidden
。/authserver/validate
在 accessToken 不正确时,应返回 403 Forbidden
,实际为 400 Bad Request
。/sessionserver/session/minecraft/join
在 accessToken 不正确时,应返回 403 Forbidden
,实际为 400 Bad Request
。/sessionserver/session/minecraft/join
当请求中的角色不属于用户自己时,应返回 403 Forbidden
,实际为 400 Bad Request
。/sessionserver/session/minecraft/join
当请求中的角色不存在时,应返回 403 Forbidden
,实际为 400 Bad Request
。
今天实验发现,正版启动器无法直接加入使用authlib-injector的服务器,此前该正版账号已经在皮肤站做了正版验证。会提示“failed to verify username”
今后的版本是否可以正版玩家在皮肤站验证后直接加入authlib服务器,或许可以参考
YggdrasilOfficialProxy的实现原理
https://github.com/printempw/blessing-skin-plugins/blob/5098e833f93bbc118abc52628b3a614b85162ec8/import-v2-data/views/master.tpl#L9
应为 ../../resources/assets/dist/css/install.css
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.