function stdapi_fs_sha1($req, &$pkt) { $path_tlv = packet_get_tlv($req, TLV_TYPE_FILE_PATH); $path = cononicalize_path($path_tlv['value']); if (is_callable("sha1_file")) { $sha1 = sha1_file($path); } else { $sha1 = sha1(file_get_contents($path)); } $sha1 = pack("H*", $sha1); # Ghetto abuse of file name type to indicate the sha1 result packet_add_tlv($pkt, create_tlv(TLV_TYPE_FILE_NAME, $sha1)); return ERROR_SUCCESS; }
function stdapi_fs_search($req, &$pkt) { my_print("doing search"); $root_tlv = packet_get_tlv($req, TLV_TYPE_SEARCH_ROOT); $root = cononicalize_path($root_tlv['value']); $glob_tlv = packet_get_tlv($req, TLV_TYPE_SEARCH_GLOB); $glob = cononicalize_path($glob_tlv['value']); $recurse_tlv = packet_get_tlv($req, TLV_TYPE_SEARCH_RECURSE); $recurse = $recurse_tlv['value']; if (!$root) { $root = '.'; } my_print("glob: {$glob}, root: {$root}, recurse: {$recurse}"); $flags = GLOB_PATH; if ($recurse) { $flags |= GLOB_RECURSE; } $files = safe_glob($root . "/" . $glob, $flags); if ($files and is_array($files)) { dump_array($files); foreach ($files as $file) { $file_tlvs = ""; $s = stat($file); $p = dirname($file); $f = basename($file); $file_tlvs .= tlv_pack(create_tlv(TLV_TYPE_FILE_PATH, $p)); $file_tlvs .= tlv_pack(create_tlv(TLV_TYPE_FILE_NAME, $f)); $file_tlvs .= tlv_pack(create_tlv(TLV_TYPE_FILE_SIZE, $s['size'])); packet_add_tlv($pkt, create_tlv(TLV_TYPE_SEARCH_RESULTS, $file_tlvs)); } } return ERROR_SUCCESS; }
function stdapi_fs_sha1($req, &$pkt) { $path_tlv = packet_get_tlv($req, TLV_TYPE_FILE_PATH); $path = cononicalize_path($path_tlv['value']); if (is_callable("sha1_file")) { $sha1 = sha1_file($path); } else { $sha1 = sha1(file_get_contents($path)); } $sha1 = pack("H*", $sha1); packet_add_tlv($pkt, create_tlv(TLV_TYPE_FILE_HASH, $sha1)); return ERROR_SUCCESS; }
function stdapi_fs_delete_file($req, &$pkt) { my_print("doing delete"); $path_tlv = packet_get_tlv($req, TLV_TYPE_FILE_PATH); $path = cononicalize_path($path_tlv['value']); if ($path && is_file($path)) { $worked = @unlink($path); return $worked ? ERROR_SUCCESS : ERROR_FAILURE; } else { return ERROR_FAILURE; } }