找到10206个回复
acme也是通过api对接的,php-sdk-letsencrpty github一堆
上次看了一个国外的Moonlight ,但是还是不太行,后来发现还是不如远程控制来的快稳定,试试 网易的GameViewer,其实我也一直在找一款可以多人同屏的软件,我在想要不要弄python搞一个,最合适的方式是,找一个公网电脑作为主机,其他人直接控制,如果没有公网,需要服务器中继,那样延迟也会大大提示,python对视频的处理没有那么突出,控制很好实现
你可以使用ACME协议(Let’s Encrypt使用的协议)的PHP客户端,例如acmephp。以下是一个基本的示例脚本,用于申请Let’s Encrypt证书:
<?php require 'vendor/autoload.php'; use AcmePhp\Ssl\Generator\KeyPairGenerator; use AcmePhp\Ssl\Parser\KeyParser; use AcmePhp\Ssl\Signer\DataSigner; use AcmePhp\Core\Http\Base64SafeEncoder; use AcmePhp\Core\Http\SecureHttpClient; use AcmePhp\Core\AcmeClient; use AcmePhp\Core\Challenge\Http\HttpDataExtractor; use AcmePhp\Core\Challenge\Http\HttpChallengeHandler; use AcmePhp\Core\Challenge\Http\HttpChallengeVerifier; // 生成密钥对 $keyPairGenerator = new KeyPairGenerator(); $keyPair = $keyPairGenerator->generateKeyPair(); // 创建安全的HTTP客户端 $secureHttpClient = new SecureHttpClient( $keyPair, new KeyParser(), new DataSigner(), new Base64SafeEncoder() ); // 创建ACME客户端 $acmeClient = new AcmeClient($secureHttpClient); // 注册账户 $acmeClient->registerAccount('[email protected]'); // 请求证书 $domains = ['your-domain.com', 'www.your-domain.com']; $order = $acmeClient->requestOrder($domains); // 处理HTTP挑战 $httpChallengeHandler = new HttpChallengeHandler(); $httpDataExtractor = new HttpDataExtractor(); foreach ($order->getAuthorizationsChallenges() as $authorizationChallenges) { $domain = $authorizationChallenges->getLocation()->getDomain(); $challenge = $authorizationChallenges->getHttpChallenge(); $httpChallengeHandler->handle($challenge, $httpDataExtractor->getCheckPath($challenge)); $acmeClient->challenge($challenge); $httpChallengeHandler->cleanUp($domain, $httpDataExtractor->getFilePath($challenge)); } // 生成域名密钥对 $domainKeyPair = $keyPairGenerator->generateKeyPair(); // 请求证书签名 $certificate = $acmeClient->requestCertificate($order, $domainKeyPair); // 保存证书和私钥 file_put_contents('/etc/letsencrypt/live/your-domain.com/cert.pem', $certificate->getPEM()); file_put_contents('/etc/letsencrypt/live/your-domain.com/private.pem', $domainKeyPair->getPrivateKey()->getPEM()); >
这个脚本首先生成一个密钥对,然后使用这个密钥对注册一个新的ACME账户。然后,它请求一个新的证书订单,处理HTTP挑战,最后请求证书签名。
请注意,这只是一个基本的示例,你可能需要根据你的具体需求进行修改。例如,你可能需要处理DNS挑战而不是HTTP挑战,或者你可能需要在不同的位置存储证书和私钥。
此外,你需要使用composer安装acmephp:
composer require acmephp/core
在运行此脚本之前,请确保你已经正确配置了你的web服务器,以便Let’s Encrypt的服务器可以访问到用于HTTP挑战的文件。你还需要确保你有权限写入证书和私钥的目录。
最后,这个脚本没有处理证书的续期。你可能需要设置一个cron job或其他类型的定时任务,定期运行类似的脚本来续期你的证书。
希望这个信息对你有所帮助!如果你有任何问题或需要进一步的帮助,随时向我提问。😊
厉害啊!
同求
从旧的 org.suyu_emu.suyu 包迁移数据
mv ~/.var/app/dev.suyu_emu.suyu ~/.var/app/dev.suyu_emu.suyu.bak mv ~/.var/app/org.suyu_emu.suyu ~/.var/app/dev.suyu_emu.suyu sudo flatpak remove org.suyu_emu.suyu
如果因为文件管理器不兼容导致无法选择文件夹,可以这样安装固件:
下载网盘里的“Switch固件/固件备份”,然后把里面的压缩包解压到以下文件夹,覆盖原有的
nand
文件夹:~/.var/app/dev.suyu_emu.suyu/data/suyu
然后这样添加游戏文件夹的方法:
打开这个文件
~/.var/app/dev.suyu_emu.suyu/config/suyu/qt-config.ini
在末尾添加如下内容(自己修改/home/kylin/Games为你想要的文件夹):
Paths\gamedirs\4\path=/home/kylin/Games Paths\gamedirs\4\deep_scan\default=true Paths\gamedirs\4\deep_scan=false Paths\gamedirs\4\expanded\default=true Paths\gamedirs\4\expanded=true
如果因为文件管理器不兼容导致无法选择文件夹,可以这样安装固件:
下载网盘里的“Switch固件/固件备份”,然后把里面的压缩包解压到以下文件夹,覆盖原有的
nand
文件夹:~/.var/app/dev.suyu_emu.suyu/data/suyu
然后这样添加游戏文件夹的方法:
打开这个文件
~/.var/app/dev.suyu_emu.suyu/config/suyu/qt-config.ini
在末尾添加如下内容(自己修改/home/kylin/Games为你想要的文件夹):
Paths\gamedirs\4\path=/home/kylin/Games Paths\gamedirs\4\deep_scan\default=true Paths\gamedirs\4\deep_scan=false Paths\gamedirs\4\expanded\default=true Paths\gamedirs\4\expanded=true
同求
小米MIX2s(白)
@老虎会游泳 找到了个解决方案
在windows安装
复制粘贴到Linux上就能用了
@寻梦xunm,@咯叽,@老虎会游泳,找到一个项目,很不错的想法,通过peerjs库创建链接,客户机通过canvas画出来,可惜项目没人维护,今天上班摸鱼看看能不能改改
https://github.com/ZeusWPI/multiplayer-ruffle
真相大白了
所以现在虎绿林的php版本是?
主要是,我要紧跟虎绿林的php版本走,
欢迎老虎用Go重写葫芦林