域名池管理系统 - 域名池创建、编辑、删除、获取二维码
{ "title": "域名池管理系统 - 域名池创建、编辑、删除、获取二维码", "description": "这是一个使用ThinkPHP框架构建的域名池管理系统,支持域名池的创建、编辑、删除、获取二维码等功能,方便管理多个域名。", "keywords": "域名池, 域名管理, 域名池管理系统, ThinkPHP, 二维码, 域名池创建, 域名池编辑, 域名池删除", "content": "\u003c?php\n\nnamespace app\u005cindex\u005ccontroller;\n\nuse \u005cBaiduBce\u005cServices\u005cBos\u005cBosClient;\nuse think\u005cLoader;\nuse think\u005cConfig;\n\nconst Header = 'const domains = ';\n\nclass Index\n{\n protected $client;\n protected $bucket;\n\n public function __construct()\n {\n $config = config('bos');\n $this->client = new BosClient($config);\n $this->bucket = $config['bucket'];\n }\n\n public function index()\n {\n if (!session("user")) {\n return redirect("/admin");\n }\n return view();\n }\n\n public function pools()\n {\n return json(0, $this->projects(), '获取域名池列表成功', count($this->projects()));\n }\n\n public function save($id = '', $domains = [])\n {\n $this->client->putObjectFromString($this->bucket, urlencode("{$id}.js"), Header . json_encode($domains));\n }\n\n public function get($id = '')\n {\n return str_replace(Header, '', $this->client->getObjectAsString($this->bucket, urlencode("{$id}.js")));\n }\n\n public function projects()\n {\n $projects = [];\n $i = 0;\n foreach ($this->client->listObjects($this->bucket)->contents as $file) {\n $project = [];\n $i++;\n $filename = $file->key;\n $id = substr($filename, 0, strrpos($filename, '.'));\n try {\n\n $domains = json_decode($this->get($id));\n }catch (\Exception $e) {\n\n }\n $project['id'] = $i;\n $project['domains'] = $domains;\n $project['name'] = $id;\n $project['update_at'] = strtotime($file->lastModified);\n $projects[] = $project;\n }\n return $projects;\n }\n\n public function create_pool($name = ''){\n if ($name == '') {\n return json(-1, null, '创建失败');\n }\n $this->save($name, []);\n return json(0, null, '创建域名池成功');\n }\n\n public function edit_pool($name = '', $domains = ''){\n if ($name == '' || $domains == '') {\n return json(-1, null, '编辑失败');\n }\n $this->save($name, explode("\r\n", $domains));\n return json(0, null, '更新域名池成功');\n }\n\n public function delete_pool($name = ''){\n if ($name == ''){\n return json(-1, null, '编辑失败');\n }\n $this->client->deleteObject($this->bucket, urlencode("{$name}.js"));\n }\n\n public function code($name = ''){\n if ($name == '') {\n return json(-1, null, '获取二维码失败');\n }\n $code = $this->createQRcode(ROOT_PATH . '/public/static/', config('url') . "?" . $name);\n if (!$code) {\n return json(-1, null, '获取二维码失败');\n }javascript:;\n return json(0, $code);\n }\n \n function setConfig($key = 'logo', $value)\n {\n $fileUrl = APP_PATH . "config.php";\n $config = file_get_contents($fileUrl); //加载配置文件\n $config = preg_replace("/'{$key}'.?=>.?'.*?'"/i", "'{$key}' => '{$value}'", $config);\n return file_put_contents($fileUrl, $config); // 写入配置文件\n }\n\n function createQRcode($savePath, $qrData = 'PHP QR Code :)', $qrLevel = 'L', $qrSize = 8, $savePrefix = 'qrcode')\n {\n Loader::import('phpqrcode.phpqrcode');\n $logoPath = config::get('logo');\n if (!isset($savePath)) return '';\n //设置生成png图片的路径\n $PNG_TEMP_DIR = $savePath;\n\n //检测并创建生成文件夹\n if (!file_exists($PNG_TEMP_DIR)) {\n mkdir($PNG_TEMP_DIR);\n }\n $filename = $PNG_TEMP_DIR . 'test.png';\n $errorCorrectionLevel = 'L';\n if (isset($qrLevel) && in_array($qrLevel, ['L', 'M', 'Q', 'H'])) {\n $errorCorrectionLevel = $qrLevel;\n }\n $matrixPointSize = 4;\n if (isset($qrSize)) {\n $matrixPointSize = min(max((int)$qrSize, 1), 10);\n }\n $qrCode=new \QrCode();\n if (isset($qrData)) {\n if (trim($qrData) == '') {\n die('data cannot be empty!');\n }\n //生成文件名 文件路径+图片名字前缀+md5(名称)+.png\n $filename = $PNG_TEMP_DIR . $savePrefix . md5($qrData . '|' . $errorCorrectionLevel . '|' . $matrixPointSize) . '.png';\n //开始生成\n $qrCode::png($qrData, $filename, $errorCorrectionLevel, $matrixPointSize, 2);\n if (isset($logoPath) && !empty($logoPath)) {\n //添加logo\n $logo = imagecreatefromstring(file_get_contents($logoPath));\n $QR = imagecreatefromstring(file_get_contents($filename));\n $QR_width = imagesx($QR);\n $QR_height = imagesy($QR);\n $logo_width = imagesx($logo);\n $logo_height = imagesy($logo);\n $logo_qr_width = $QR_width / 5;\n $scale = $logo_width / $logo_qr_width;\n $logo_qr_height = $logo_height / $scale;\n $from_width = ($QR_width - $logo_qr_width) / 2;\n imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);\n imagepng($QR, $filename);\n }\n } else {\n //默认生成\n $qrCode::png('PHP QR Code :)', $filename, $errorCorrectionLevel, $matrixPointSize, 2);\n }\n if (file_exists($PNG_TEMP_DIR . basename($filename)))\n return basename($filename);\n else\n return FALSE;\n}\n\n}\n
原文地址: https://www.cveoy.top/t/topic/pE0E 著作权归作者所有。请勿转载和采集!