public function __construct($hex) { $this->flightGroupCount = getShort($hex, self::HEADER_FG); $this->messageCount = getShort($hex, self::HEADER_MSG); $this->briefingOfficers = getByte($hex, self::HEADER_BRIEF); $this->capturedOnEject = getBool($hex, self::HEADER_CAPTURED); }
function getFreespace($path) { if (preg_match("#^(https?|ftps?)://#si", $path)) { return false; } $freeBytes = disk_free_space($path); $totalBytes = disk_total_space($path); $usedBytes = $totalBytes - $freeBytes; $percentFree = 100 / $totalBytes * $freeBytes; $percentUsed = 100 / $totalBytes * $usedBytes; echo "All space: " . getByte($totalBytes) . "<br />"; echo "Used space: " . getByte($usedBytes); printf(" (%01.2f%%)", $percentUsed); echo "<br />"; echo "Free space: " . getByte($freeBytes); printf(" (%01.2f%%)", $percentFree); }
public function __construct($byteString) { $this->platformID = getShort($byteString, self::HEADER_START); $this->flightGroupCount = getShort($byteString, self::HEADER_FG); $this->messageCount = getShort($byteString, self::HEADER_MSG); for ($i = 0; $i < self::IFF_COUNT; $i++) { $this->IFFNames[] = getString($byteString, self::HEADER_IFF + $i * self::IFF_LENGTH, self::IFF_LENGTH); } for ($r = 0; $r < self::REGION_COUNT; $r++) { $this->regionNames[] = getString($byteString, self::HEADER_REGION + $r * self::REGION_LENGTH, self::REGION_LENGTH); } for ($c = 0; $c < self::CARGO_COUNT; $c++) { $this->globalCargos[] = new GlobalCargo(substr($byteString, self::HEADER_CARGO + $c * GlobalCargo::LENGTH, GlobalCargo::LENGTH)); } for ($g = 0; $g < self::GG_COUNT; $g++) { $this->globalGroupNames[] = getString($byteString, self::HEADER_GG + $g * self::GG_LENGTH, self::GG_LENGTH); } $this->hangar = getByte($byteString, self::HEADER_HANGAR); $this->timeLimitMinutes = getByte($byteString, self::HEADER_TIME); $this->endMissionWhenComplete = getBool($byteString, self::HEADER_END); $this->briefingOfficer = getByte($byteString, self::HEADER_OFFICER); $this->briefingLogo = getByte($byteString, self::HEADER_LOGO); $this->hex = \Hex::hexToStr($byteString); }
/** 파일 체크 * @class file * @param -dir: 업로드할 디렉토리 -target: $_FILES 중에서 하나만 지정한 key값 -size: 최대용량 제한 -width: 이미지 너비 제한 -height: 이미지 높이 제한 -filename: 파일이름 강제로 지정하기 -is_overwrite: 같은 파일명이 있으면 덮어 씌움 -is_download: 다운로드만 받을 수 있도록 파일명을 조절 -is_exists: 같은 파일명이 있으면 중지 -is_image: 이미지 파일만 허용 -is_none: 파일 없음을 허용 */ function chkFile($param = '') { global $mini, $_FILES; iss($param); $param = param($param); iss($param['dir']); iss($param['target']); iss($param['size']); iss($param['width']); iss($param['height']); iss($param['filename']); iss($param['is_overwrite']); iss($param['is_download']); iss($param['is_exists']); iss($param['is_image']); iss($param['is_none']); if (!is_array($_FILES) && !$param['is_none']) { __error("업로드된 파일이 없습니다"); } if (count($_FILES) < 1) { __error("업로드된 파일이 없거나, 용량을 초과 했습니다."); } if (!$param['dir']) { __error("업로드 디렉토리가 지정되지 않았습니다"); } if (!empty($param['dir']) && !preg_match("/(\\/|\\\\)\$/", $param['dir'])) { $param['dir'] .= "/"; } // 업로드 디렉토리 생성 if (!is_dir($param['dir'])) { if (!@mkdir($param['dir'], 0707)) { __error("[{$param['dir']}] 업로드 디렉토리를 생성할 수 없습니다."); } } $limitsize = getByte(get_cfg_var("upload_max_filesize"), 'decode'); $param['size'] = $param['size'] && $limitsize > $param['size'] ? $param['size'] : $limitsize; foreach ($_FILES as $key => $val) { iss($val['is_image']); //// 타겟 체크 if ($param['target'] && $param['target'] != $key) { continue; } //// 파일 없음 체크 if (!$val['name']) { if ($param['is_none']) { continue; } else { __error("[{$key}] 파일명이 없습니다"); } } else { $filename = $filename_org = $val['name']; $tmp_filename = str($val['name'], 'encode', 1); } //// 기본 error 체크 if (!empty($val['error'])) { switch ($val['error']) { // 스킵 case 'UPLOAD_ERR_OK': case 0: case 'UPLOAD_ERR_NO_FILE': case 4: break; case 'UPLOAD_ERR_INI_SIZE': case 1: __error("[{$tmp_filename}] 파일 용량이 " . ini_get("upload_max_filesize") . "를 초과할 수 없습니다.\\n(php.ini, upload_max_filesize 설정에서 변경가능)"); case 'UPLOAD_ERR_FORM_SIZE': case 2: __error("[{$tmp_filename}] 파일 용량이 초과 되었습니다.\\n(해당 Form 의 MAX_FILE_SIZE 설정에서 변경 가능합니다)"); case 'UPLOAD_ERR_PARTIAL': case 3: __error("[{$tmp_filename}] 업로드된 파일이 올바르지 않습니다"); case 'UPLOAD_ERR_NO_TMP_DIR': case 6: __error("임시 폴더가 없어 파일을 업로드 할 수 없습니다. 서버 관리자에게 문의해 주세요.\\n(설정된 임시 폴더는 " . ini_get("upload_tmp_dir") . " 입니다)"); case 'UPLOAD_ERR_CANT_WRITE': case 7: __error("디스크에 쓰기를 실패 했습니다. 서버 관리자에게 문의해 주세요"); } } //// 파일명 체크 if ($param['filename']) { $filename = $param['filename']; } $filename = str_replace(array("|", "'", "\"", "\\"), "", $filename); $filename = trim($filename); //// 확장자 체크 $val['ext'] = strtolower(substr(strrchr($filename, "."), 1)); //// 이미지 관련 체크 $is_image = getimagesize($val['tmp_name']); if (!empty($is_image) && is_array($is_image)) { $val['is_image'] = 1; $val['width'] = $is_image[0]; $val['height'] = $is_image[1]; } else { $val['is_image'] = 0; } //// 파일타입 $val['type'] = getFileType($val['ext']); if ($val['type'] == 'image' && empty($val['is_image'])) { __error("[{$tmp_filename}] 이미지 파일이 아닙니다"); } if (!$val['is_image'] && $param['is_image']) { __error("[{$tmp_filename}] 이미지 파일만 허용합니다"); } if ($val['is_image']) { if ($param['width'] && $param['width'] < $val['width']) { __error("[{$tmp_filename}] 이미지 너비가 {$param['width']}px 를 초과 했습니다. (현재 {$val['width']}px)"); } if ($param['height'] && $param['height'] < $val['height']) { __error("[{$tmp_filename}] 이미지 높이가 {$param['height']}px 를 초과 했습니다. (현재 {$val['height']}px)"); } } //// 한글제거 if (strCut($filename, 0, 'multi')) { $filename = urlencode($filename); } //// 기호제거 $filename = preg_replace("/[^0-9a-z_\\-\\.]/i", "", $filename); //// 파일명 변경 if ($param['is_download']) { $filename = str_replace(".", "_", $filename); $filename .= ".mb"; } //// 중복 체크 if (file_exists($param['dir'] . $filename) && !$param['is_overwrite']) { if ($param['is_exists']) { __error("[{$tmp_filename}] 중복된 파일명입니다."); } $a = 0; $tmp2_filename = $filename; while (file_exists($param['dir'] . $tmp2_filename)) { $a++; if (strpos($filename, ".") !== false) { $tmp2_filename = preg_replace("/(\\.?[^\\.]+)\$/is", $a . "\\1", $filename); } else { $tmp2_filename = $filename . $a; } } $filename = $tmp2_filename; } //// 내용 중복 if (!empty($val['size']) && !empty($mini['board']['use_file_unique']) && !empty($mini['board']['no'])) { if (sql("SELECT COUNT(*) FROM {$mini['name']['file']} WHERE id={$mini['board']['no']} and hash='" . str(getHash($val), 'encode', 1) . "'")) { __error("[{$tmp_filename}] 이미 같은 파일이 있습니다"); } } //// 용량 체크 if ($param['size'] && $param['size'] < $val['size']) { __error("[{$tmp_filename}] 파일 용량이 " . number_format($param['size']) . " bytes를 초과할 수 없습니다\\n(현재 {$val['size']}bytes)"); } if ($val['size'] <= 0) { __error("[{$tmp_filename}] 파일 용량은 0 byte 이상이어야 합니다"); } //// 변수 입력 $val['path'] = $param['dir'] . $filename; $val['path_only'] = $param['dir']; $val['name_insert'] = $filename; $_FILES[$key] = $val; } }
function lookupSwitch($switch, $value) { $value = getByte($value); return "Unknown lookup switch {$value}"; }
/** 파일 파서 * @class file * @param $name: description * @return */ function parseFile(&$data, $mode = '') { global $mini; //// 초기화 if (!isset($data['hit'])) { $data['hit'] = 0; } if (!isset($data['width'])) { $data['width'] = 0; } if (!isset($data['height'])) { $data['height'] = 0; } if (!isset($data['error'])) { $data['error'] = 0; } $data['size_out'] = getByte($data['size'], 'encode'); $data['date_out'] = date("y-m-d", strtotime($data['date'])); str($data['title'], 'decode'); // 타입에 따른 이름 switch ($data['type']) { case 'image': $data['type_out'] = '이미지'; break; case 'music': $data['type_out'] = '음악'; break; case 'movie': $data['type_out'] = '동영상'; break; case 'swf': case 'flv': $data['type_out'] = '플래쉬'; break; default: $data['type_out'] = '기타'; } // 링크 $data['url_thumb'] = "{$mini['dir']}download.php?mode=thumb&no={$data['no']}"; $data['url_view'] = "{$mini['dir']}download.php?mode=view&no={$data['no']}"; $data['url_download'] = "{$mini['dir']}download.php?no={$data['no']}"; // link 변수 생성 urlToLink($data); if ($mode) { return $data; } }
function getFreespace($path) { $freeBytes = disk_free_space($path); $totalBytes = disk_total_space($path); $usedBytes = $totalBytes - $freeBytes; $percentFree = 100 / $totalBytes * $freeBytes; echo "Speicher gesamt:<br /><strong>" . getByte($totalBytes) . "</strong><br /><br />"; echo "Freier Speicher:<br /><strong>" . getByte($freeBytes); printf(" (%01.2f%%)", $percentFree); echo "</strong>"; }
function _undo($txt, $bpadding, $pattern) { $tl = strlen($txt); $ur = ""; $temp = array(); for ($ui = 0; $ui < $tl; $ui++) { $put = true; $sd = getCode($txt, $ui); $sy = null; $sx = h2d(getByte($sd, $bpadding[$ui])); if ($sx < 8) { if ($sx % 2 == 0) { $put = false; } } if ($put) { if ($bpadding[$ui] == "0") { $sy = getByte($sd, 1); } else { $sy = getByte($sd, 0); } $temp[] = $sy; } } $ull = count($temp); for ($ui = 0; $ui < $ull; $ui += 2) { $ut = "" + $temp[$ui]; $ut .= $temp[$ui + 1]; $ur .= chr(hexdec($ut)); } return unSort($ur, $pattern); }