Files
web-discuz/uc_server/plugin/replacemykey/plugin.php
2025-06-27 21:04:18 +08:00

54 lines
1.4 KiB
PHP
Executable File

<?php
!defined('IN_UC') && exit('Access Denied');
class control extends pluginbase {
function control() {
$this->pluginbase();
}
function onindex() {
if($this->submitcheck()) {
if(!getgpc('reconfkey', 'P')) {
$this->message('replacemykey_no_confirm', 'BACK');
}
if($this->_replacemykey()) {
$this->message('replacemykey_succeed', 'BACK');
} else {
$this->message('replacemykey_false', 'BACK');
}
}
$this->view->display('plugin_replacemykey');
}
function _replacemykey() {
$oldmykey = UC_MYKEY;
$newmykey = $this->generate_key();
$configfile = UC_ROOT.'./data/config.inc.php';
if(!is_writable($configfile)) {
return false;
}
$config = file_get_contents($configfile);
$config = preg_replace("/define\('UC_MYKEY',\s*'.*?'\);/i", "define('UC_MYKEY', '$newmykey');", $config);
if(file_put_contents($configfile, $config) === false) {
return false;
}
$apps = $this->db->fetch_all("SELECT appid, authkey FROM ".UC_DBTABLEPRE."applications", 'appid');
foreach($apps as $k => $v) {
if($tmp = $this->authcode($v['authkey'], 'DECODE', $oldmykey)) {
$appid = $v['appid'];
$appkey = $this->authcode($tmp, 'ENCODE', $newmykey);
$this->db->query("UPDATE ".UC_DBTABLEPRE."applications SET authkey='$appkey' WHERE appid='$appid'");
if($this->db->errno()) {
return false;
}
}
}
return true;
}
}