Exemplo n.º 1
0
 /**
  * 控制器执行主逻辑函数
  */
 public function invoke($uri = null)
 {
     // 调用父类初始化函数,注册自定义的异常和错误处理逻辑
     parent::init();
     $path = explode('?', $uri);
     $parts = array_slice(explode('/', $path[0]), 2);
     if ($parts[0] === "authorize") {
         $oauth = new PDOOAuth2();
         if ($_POST) {
             $oauth->finishClientAuthorization($_POST["accept"] == "Yep", $_POST);
         }
         $auth_params = $oauth->getAuthorizeParams();
         $inputs = "";
         foreach ($auth_params as $k => $v) {
             $inputs = $inputs . '<input type="hidden" name="' . $k . '" value="' . $v . '" />';
         }
         $content = '<html>' . '<head>Authorize</head>' . '<body>' . '<form method="post" action="http://web.miniyun.cn/miniyun_oauth2/api.php/1/oauth2/authorize">' . $inputs . 'Do you authorize the app to do its thing?' . '<p>' . ' <input type="submit" name="accept" value="Yep" />' . '<input type="submit" name="accept" value="Nope" />' . ' </p>' . '</form>' . '</body>' . ' </html>';
         echo $content;
     } elseif ($parts[0] === "token") {
         $oauth = new PDOOAuth2();
         $token = $oauth->grantAccessToken();
         #添加登陆日志
         $deviceId = $oauth->getVariable("device_id");
         MiniLog::getInstance()->createLogin($deviceId);
         #返回site_id,便于与cloud.miniyun.cn通信
         $token["site_id"] = MiniSiteUtils::getSiteID();
         echo json_encode($token);
     }
 }
Exemplo n.º 2
0
 /**
  * 获得站点信息
  */
 public static function getSiteInfo()
 {
     $data = array();
     $data['version'] = APP_VERSION;
     $data['status'] = "done";
     $data['app_name'] = 100;
     $data['app_logo'] = MiniHttp::getSystemParam("absoluteUrl") . "/static/images/logo.png";
     $data['default_size'] = 100;
     $data['can_register'] = true;
     $data['register_url'] = "";
     //产品名称
     $value = MiniOption::getInstance()->getOptionValue('site_name');
     if (isset($value)) {
         $data['app_name'] = $value;
     }
     //站点ID
     $data['code'] = MiniSiteUtils::getSiteCode();
     $data['site_id'] = MiniSiteUtils::getSiteID();
     $data['wx_token'] = MiniSiteUtils::getWxToken();
     //产品Logo
     $value = MiniOption::getInstance()->getOptionValue('site_logo_url');
     if (isset($value)) {
         $data['app_logo'] = MiniHttp::getSystemParam("absoluteUrl") . $value;
     }
     //判断系统是否可以注册
     $enableReg = MiniOption::getInstance()->getOptionValue("user_register_enabled");
     if (isset($enableReg) && $enableReg == "0") {
         $data['can_register'] = false;
     }
     //系统注册入口是否在第3方
     $value = MiniOption::getInstance()->getOptionValue("user_create_url");
     if (isset($value) && !empty($value)) {
         $data['register_url'] = $value;
     }
     // 32M
     $blockSize = 4 * 1024 * 1024;
     // 内存配置需要
     $memoryLimit = CUtils::return_bytes(ini_get('memory_limit'));
     if ($memoryLimit < 4 * $blockSize) {
         $blockSize = $memoryLimit / 4;
     }
     $postMaxSize = CUtils::return_bytes(ini_get('post_max_size'));
     $uploadMaxFileSize = CUtils::return_bytes(ini_get('upload_max_filesize'));
     $min = $postMaxSize > $uploadMaxFileSize ? $uploadMaxFileSize : $postMaxSize;
     $data['block_size'] = $min > $blockSize ? $blockSize : $min;
     if ($data['block_size'] == $postMaxSize && $data['block_size'] == $uploadMaxFileSize) {
         $data['block_size'] = $data['block_size'] - 104858;
     }
     // 获取忘记密码使用短信口子地址
     $forgetPasswordUrl = MiniHttp::getSystemParam("absoluteUrl");
     $data['forget_password_url'] = $forgetPasswordUrl;
     return $data;
 }
Exemplo n.º 3
0
 /**
  * 控制器执行主逻辑函数
  * @param $uri 地址
  * @return mixed $value 返回最终需要执行完的结果
  */
 public function invoke($uri = null)
 {
     $user = MUserManager::getInstance()->getCurrentUser();
     $device = MUserManager::getInstance()->getCurrentDevice();
     $data = array();
     $data['user_name'] = $user["user_name"];
     $data['display_name'] = $user["nick"];
     $data['id'] = $user["id"];
     $data['uid'] = $user["user_uuid"];
     $data['space'] = (double) $user["space"];
     $data['used_space'] = (double) $user["usedSpace"];
     $data['email'] = $user["email"];
     $data['phone'] = $user["phone"];
     $data['avatar'] = $user["avatar"];
     $data['mult_user'] = false;
     $data['site_id'] = MiniSiteUtils::getSiteID();
     $data["device_id"] = $device["id"];
     $value = MiniOption::getInstance()->getOptionValue('site_company');
     if (isset($value)) {
         $license['company'] = $value;
     } else {
         $license['company'] = "";
     }
     $license['licensestr'] = "";
     //免费版本
     $license['is_vip'] = false;
     // 目前针对iis服务器,使客户端禁用put协议
     if (isset($_SERVER['SERVER_SOFTWARE']) && strpos(strtolower($_SERVER['SERVER_SOFTWARE']), 'iis') !== false) {
         $data['disable_put'] = true;
     }
     // 32M
     $blockSize = 4 * 1024 * 1024;
     // 内存配置需要
     $mem_limit = CUtils::return_bytes(ini_get('memory_limit'));
     if ($mem_limit < 4 * $blockSize) {
         $blockSize = $mem_limit / 4;
     }
     $postMaxSize = CUtils::return_bytes(ini_get('post_max_size'));
     $uploadMaxFileSize = CUtils::return_bytes(ini_get('upload_max_filesize'));
     $min = $postMaxSize > $uploadMaxFileSize ? $uploadMaxFileSize : $postMaxSize;
     $data['block_size'] = $min > $blockSize ? $blockSize : $min;
     if ($data['block_size'] == $postMaxSize && $data['block_size'] == $uploadMaxFileSize) {
         $data['block_size'] = $data['block_size'] - 104858;
     }
     echo json_encode($data);
 }
Exemplo n.º 4
0
 /**
  * 全文检索
  * @param string $key 关键字
  * @param string $path 路径
  * @return array
  */
 public function search($key, $path)
 {
     $siteId = MiniSiteUtils::getSiteID();
     $searchItems = $this->searchKeyWordAndSiteId($siteId, $key);
     $values = array();
     foreach ($searchItems as $searchItem) {
         //遍历,查询文件signature,根据signature判断当前用户有无浏览该文件权限
         $version = MiniVersion::getInstance()->getBySignature($searchItem["signature"]);
         //反向查询系统所有的文件记录
         $fileList = MiniFile::getInstance()->getAllByVersionId($version["id"]);
         foreach ($fileList as $file) {
             //对具有相同signature的文件进行过滤
             $filePath = $file['file_path'];
             $isInString = strpos($filePath, $path);
             if ($isInString === false) {
                 continue;
             }
             $userId = (int) $this->user['id'];
             $permission = UserPermissionBiz::getInstance()->getPermission($filePath, $userId);
             if ($permission['permission'] == '000000000' || $permission['permission'] == '011111111') {
                 //没有读权限则不显示出来
                 continue;
             }
             if (empty($permission)) {
                 //如果上面读权限为空,则说明没有共享,这时当前用户只能看见自己的文件
                 $pathArr = explode('/', $filePath);
                 $masterId = $pathArr[1];
                 if ($masterId != $userId) {
                     continue;
                 }
             }
             $item = array();
             $item['signature'] = $searchItem["signature"];
             //相同的signature可能对应多个文件
             $item['file_name'] = $file['file_name'];
             $item['file_path'] = $filePath;
             $item['summary'] = $searchItem["summary"];
             array_push($values, $item);
         }
     }
     return $values;
 }
Exemplo n.º 5
0
 /**
  * 把文档进行转换
  * @param array $version
  * @param string $mimeType 如mineType为空,则使用version.mime_type
  */
 private function pushFileConvert($version, $mimeType)
 {
     if (empty($mimeType)) {
         $mimeType = $version["mime_type"];
     }
     $miniHost = PluginMiniDocOption::getInstance()->getMiniyunHost();
     $siteId = MiniSiteUtils::getSiteID();
     $signature = $version["file_signature"];
     $node = PluginMiniDocNode::getInstance()->getConvertNode($signature);
     if (!empty($node)) {
         $url = $node["host"] . '/api.php?route=file/convert';
         $downloadUrl = $miniHost . "api.php?route=module/miniDoc/download&signature=" . $signature;
         $callbackUrl = $miniHost . "api.php?route=module/miniDoc/report&node_id=" . $node["id"] . "&signature=" . $signature;
         $data = array('signature' => $signature, 'site_id' => $siteId, 'mime_type' => $mimeType, 'download_url' => $downloadUrl, "callback_url" => $callbackUrl);
         $http = new HttpClient();
         $http->post($url, $data);
         $result = $http->get_body();
         $result = json_decode($result, true);
         if ($result['status'] == 1) {
             $this->updateDocConvertStatus($node["id"], $version["file_signature"], 1);
         }
     }
 }
Exemplo n.º 6
0
 /**
  * 秒传接口
  * @param array $params
  */
 function fileSec($params)
 {
     $signature = $params["signature"];
     $data['success'] = false;
     $data['store_type'] = "miniStore";
     //查询断点文件表
     $node = null;
     $breakFile = PluginMiniBreakFile::getInstance()->getBySignature($signature);
     if (!empty($breakFile)) {
         $node = PluginMiniStoreNode::getInstance()->getNodeById($breakFile["store_node_id"]);
     }
     //如果断点文件不存在或无效则重新分配一个存储节点
     if (empty($node) || $node["status"] === -1) {
         $node = PluginMiniStoreNode::getInstance()->getUploadNode();
         //更新断点表该文件的状态
         PluginMiniBreakFile::getInstance()->create($signature, $node["id"]);
     }
     //回调地址
     $callbackUrl = MiniHttp::getMiniHost() . "api.php?node_id=" . base64_encode($node["id"]);
     foreach ($params as $key => $value) {
         $callbackUrl .= "&" . $key . "=" . base64_encode(urlencode($value));
     }
     $callbackUrl .= "&encode=base64";
     $siteId = MiniSiteUtils::getSiteID();
     $data['callback'] = $callbackUrl;
     //兼容127.0.0.1
     $urlInfo = parse_url($node["host"]);
     if ($urlInfo["host"] == "127.0.0.1") {
         //说明迷你存储在本机,直接把127.0.0.1替换为迷你存储端口
         $defaultHost = MiniHttp::getMiniHost();
         $miniHostInfo = parse_url($defaultHost);
         $node['host'] = $miniHostInfo["scheme"] . "://" . $miniHostInfo["host"] . ":" . $urlInfo["port"] . $miniHostInfo["path"];
     }
     $data['url'] = $node["host"] . "/api.php";
     echo json_encode($data);
     exit;
 }
Exemplo n.º 7
0
 /**
  * 用户登录
  * @return array|bool
  * @throws
  */
 public function oauth2()
 {
     $isExtend = apply_filters("license_expired");
     if ($isExtend === 1) {
         $userName = MiniHttp::getParam("username", "");
         if ($userName !== "admin") {
             throw new MiniException(440);
         }
     }
     $oauth = new PDOOAuth2();
     $token = $oauth->grantAccessToken();
     #添加登陆日志
     $deviceId = $oauth->getVariable("device_id");
     MiniLog::getInstance()->createLogin($deviceId);
     #返回site_id,便于与cloud.miniyun.cn通信
     $token["site_id"] = MiniSiteUtils::getSiteID();
     return $token;
 }
 /**
  * 为searchFile对象生成索引编制对象
  * @param string $nodeIds
  * @param string $signature
  */
 public function createTask($nodeIds, $signature)
 {
     $miniHost = PluginMiniSearchOption::getInstance()->getMiniyunHost();
     $siteId = MiniSiteUtils::getSiteID();
     $ids = explode(",", $nodeIds);
     //为索引服务器生成索引记录记录
     //剔除已生成的索引记录
     $nodes = PluginMiniSearchNode::getInstance()->getValidNodeList();
     $needCreateTaskNodeIds = array();
     foreach ($nodes as $node) {
         $existed = false;
         $nodeId = $node["id"];
         foreach ($ids as $id) {
             if ($id == $nodeId) {
                 $existed = true;
             }
         }
         if (!$existed) {
             array_push($needCreateTaskNodeIds, $node["id"]);
         }
     }
     foreach ($needCreateTaskNodeIds as $nodeId) {
         $task = SearchBuildTask::model()->find("file_signature=:file_signature and node_id=:node_id", array("file_signature" => $signature, "node_id" => $nodeId));
         if (!isset($task)) {
             $task = new SearchBuildTask();
             $task->file_signature = $signature;
             $task->node_id = $nodeId;
             $task->status = 0;
             $task->save();
         }
         //向迷你搜索服务器发送编制索引任务
         $this->buildTask($miniHost, $siteId, $task);
     }
 }