#!/usr/bin/php <?php function sign_url($url, $password, $expires = false) { if ($expires === false) { $expires = time() + 60 * 60 * 12; } $parts = parse_url($url); if (isset($parts['query'])) { $sign = sprintf("%s?%s&expires=%s&pass=%s", $parts['path'], $parts['query'], $expires, $password); $new = sprintf("%s://%s%s?%s&expires=%s&token=", $parts['scheme'], $parts['host'], $parts['path'], $parts['query'], $expires); } else { $sign = sprintf("%s?expires=%s&pass=%s", $parts['path'], $expires, $password); $new = sprintf("%s://%s%s?expires=%s&token=", $parts['scheme'], $parts['host'], $parts['path'], $expires); } $token = md5($sign); return sprintf("%s%s", $new, $token); } $expires = time() + 60 * 60 * 12; $password = "******"; foreach (array_slice($_SERVER['argv'], 1) as $url) { printf("%s\n", sign_url($url, $password, $expires)); }
/** * @param Attachment $attachment * @param string|null $var * @param array $params * @param bool|null $sign * * @return null|string */ function attach_url($attachment, string $var = null, $params = [], bool $sign = null) { if (!$attachment instanceof Attachment) { return null; } $route = config('attach.route'); $sign = is_null($sign) ? config('attach.sign') : $sign; $name = is_string($route) ? $route : array_get($route, 'as'); $filename = $attachment->getAttachmentKey() . (is_null($var) ? '' : '.' . $var) . '.' . $attachment->extension; $url = route($name, $params + compact('filename')); if ($sign) { return sign_url($url); } return $url; }