JetBrains License Server PHP版 - 情留メ蚊子's Blog


本站和网页 http://www.94qing.com/jetbrains-license-server.html 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

JetBrains License Server PHP版 - 情留メ蚊子's Blog 情留メ蚊子's Blog 文章归档 标签云 友情链接 雁过留声 工具箱 订阅 登录 最新消息:2016-11-22由WordPress转到Typecho 你的位置: 情留メ蚊子's Blog > PHP > JetBrains License Server PHP版 JetBrains License Server PHP版 PHP 个人作品 情留メ蚊子 6年前 (2017-05-01) 37941浏览 !本文可能 超过2年没有更新,今后内容也许不会被维护或者支持,部分内容可能具有时效性,涉及技术细节或者软件使用方面,本文不保证相应的技术更新和实践可操作性。 PhpStorm 是我常用的IDE ReSharper 是帮助VS成为更佳的IDE 上面这两个软件已经成为了我现在开发中不可缺失的软件了 之前一直使用lanyus提供的授权服务器,但是这些域名都已遭JetBrains封杀。 自己有不想单独去运行lanyus提供的本地版本。所以一直使用别人提供的域名,但是不怎么稳定,所以自己考虑使用PHP写一个。 使用需要注意的 需要开启openssl 可以直接使用php运行 授权服务类 <?php
/**
* JetBrains许可服务器
* @author 情留メ蚊子 <qlwz@qq.com>
* @link http://www.94qing.com
* @version 1.0.0.0 By 2017-04-24
*/
class JetBrainsLicenseServer
// 授权给谁
public $licensee = 'qlwz';
// license 有效时间(单位:毫秒),默认约为7天多(607875500),原厂server传递的数值。
public $prolongationPeriod = 607875500;
// RSA 私钥
public $privateKey = <<<Eof
-----BEGIN RSA PRIVATE KEY-----
MIIBOwIBAAJBALecq3BwAI4YJZwhJ+snnDFj3lF3DMqNPorV6y5ZKXCiCMqj8OeO
mxk4YZW9aaV9ckl/zlAOI0mpB3pDT+Xlj2sCAwEAAQJAW6/aVD05qbsZHMvZuS2A
a5FpNNj0BDlf38hOtkhDzz/hkYb+EBYLLvldhgsD0OvRNy8yhz7EjaUqLCB0juIN
4QIhAMsJQ3xiJemnJ2pD65iRNCC/Kr7jtxbbBwa6ZFLjp12pAiEA54JCn41fF8GZ
90b9L5dtFQB2/yIcGX4Xo7bCvl8DaPMCIBgOZ+2T33QYtwXTOFXiVm/O1qy5ZFcT
6ng0m3BqwsjJAiEAqna/l7wAyP1E4U7kHqbhKxWsiTAUgLDXtzRbMNHFMQECIQCA
xlpXEPqnC3P8if0G9xHomqJ531rOJuzB8fNtRFmxnA==
-----END RSA PRIVATE KEY-----
Eof;
public function ping($salt, $isAnswer = false)
$str = '<PingResponse><message></message><responseCode>OK</responseCode><salt>%s</salt></PingResponse>';
$out = sprintf($str, $salt);
return $isAnswer ? $this->writeAnswer($out) : $out;
public function obtainTicket($salt, $isAnswer = false)
$ticketId = 1;
$str = "<ObtainTicketResponse><message></message><prolongationPeriod>%u</prolongationPeriod><responseCode>OK</responseCode><salt>%s</salt><ticketId>%d</ticketId><ticketProperties>licensee=%s\tlicenseType=0\t</ticketProperties></ObtainTicketResponse>";
$out = sprintf($str, $this->prolongationPeriod, $salt, $ticketId, $this->licensee);
return $isAnswer ? $this->writeAnswer($out) : $out;
public function prolongTicket($salt, $isAnswer = false)
$ticketId = 1;
$str = '<ProlongTicketResponse><message></message><responseCode>OK</responseCode><salt>%s</salt><ticketId>%d</ticketId></ProlongTicketResponse>';
$out = sprintf($str, $salt, $ticketId);
return $isAnswer ? $this->writeAnswer($out) : $out;
public function releaseTicket($salt, $isAnswer = false)
$str = '<ReleaseTicketResponse><message></message><responseCode>OK</responseCode><salt>%s</salt></ReleaseTicketResponse>';
$out = sprintf($str, $salt);
return $isAnswer ? $this->writeAnswer($out) : $out;
public function writeAnswer($str)
$signature = $this->sign($str);
$signatureHex = bin2hex($signature);
$out = sprintf("<!-- %s -->\n%s", $signatureHex, $str);
return $out;
private function sign($data)
if (empty ($data)) {
return null;
$pkeyid = openssl_get_privatekey($this->privateKey);
if (empty ($pkeyid)) {
return null;
$signature = '';
$verify = openssl_sign($data, $signature, $pkeyid, OPENSSL_ALGO_MD5);
openssl_free_key($pkeyid);
return $verify ? $signature : null;
使用JetBrainsLicenseServer类 <?php
include 'JetBrainsLicenseServer.php';
$uri = htmlspecialchars($_SERVER['REQUEST_URI']);
if (stripos($uri, '/rpc/ping.action') !== false) {
$method = 'ping';
} elseif (stripos($uri, '/rpc/obtainTicket.action') !== false) {
$method = 'obtainTicket';
} elseif (stripos($uri, '/rpc/prolongTicket.action') !== false) {
$method = 'prolongTicket';
} elseif (stripos($uri, '/rpc/releaseTicket.action') !== false) {
$method = 'releaseTicket';
} else {
show404();
exit();
$jblicsvr = new JetBrainsLicenseServer();
$salt = htmlspecialchars(isset ($_GET['salt']) ? $_GET['salt'] : null);
if (!$salt) {
if (preg_match('/(&amp;|&|\?)salt=(?<salt>.*?)(&|$)/', $uri, $result)) {
$salt = $result['salt'];
if (!$salt || !method_exists($jblicsvr, $method)) {
show404();
echo $jblicsvr->$method ($salt, true);
exit();
function show404($msg = '')
$protocol = htmlspecialchars($_SERVER['SERVER_PROTOCOL']) ?: 'HTTP/1.0';
header($protocol . ' 404 Not Found');
header('Status: 404 Not Found');
echo $msg ?: 'Not Found';
exit ();
使用重定向 RewriteRule ^rpc/(ping|obtainTicket|prolongTicket|releaseTicket).action$ jblicsvr.php [QSA,PT,L]
使用方法 软件授权软件选择License server Licese server address填写 a. http://xxxx/jblicsvr.php? b. http://xxxx/jblicsvr.php (如果使用该地址出错,则使用上面的地址) c. http://xxxx (使用重定向后) 继续浏览有关 JetBrains 授权 的文章 分享到 上一篇 Ajax评论 AjaxComment For Typecho 与本文相关的文章 ASP整合UCenter API ASP For UCenterQlwz Package开源:LiteFetion(C#)QQ机器人QQRobot API Services正式发布QQ登录 For WordPress压缩HTML代码 CompressHTML For Typecho修改子分类链接与一级分类一样滑动验证码QapTchaAjax评论 AjaxComment For TypechoJetBrains License Server PHP版CSDN免积分下载器(失效)PHP压缩HTML代码 近期文章JetBrains License Server PHP版2017年05月01日Ajax评论 AjaxComment For Typecho2017年01月12日压缩HTML代码 CompressHTML For Typecho2016年11月23日PHP压缩HTML代码2016年11月23日CSDN免积分下载器(失效)2012年03月19日文章归档2017年05月 (1)2017年01月 (1)2016年11月 (2)2012年03月 (4)2012年02月 (4)分类目录PHP (8)个人作品 (7)更多标签云原创 (11)插件 (5)WordPress (4)Typecho (2)作品 (1)CSDN (1)C# (1)开源 (1)飞信 (1)QQ (1)机器人 (1)Asp (1)UCenter (1)压缩 (1)函数 (1)JetBrains (1)授权 (1) 版权所有,保留一切权利! 2022 情留メ蚊子's Blog Powered by Typecho. Theme D8 by themebetter 备案号:粤ICP备08119471号-1 加载中……