it-консалтинг и аутсорсинг
что мы делаем контакты блог

Про скачку

Борис Поляк 28.07.2012

Я понимаю, что сейчас все будут писать по 10.8, но мы проявим выдержку. Тем временем — публичный обмен файлами.

Многие привыкли использовать для этого FTP, но FTP не поддерживается мобильными устройствами, работает не за каждым файрволлом, а ссылки вида ftp://example.org/file.zip иногда приводят людей в смущение.

Поэтому мы предложили одному из наших клиентов использовать вместо FTP встроенный в Mac OS X Server веб-сервер. Клиент выкладывает файл в нужную папку по AFP (внутри сети), затем копирует публичную ссылку на этот файл и отправляет ее по почте своему клиенту.

Чтобы копировать публичную ссылку, мы составили маленький плагин для контекстного меню в Automator:

Этот элемент использует вот такой скрипт:

# Variables
local_path=$1 #The path passed from the user

local_root=/Volumes/Shared#The path to where the web share should be mouned

public_url=”http://exam.ple/Shared” #The path at which the $local_root is shared

# Declaring necessary functions

urlencode () {
tab=”`echo -en “\x9″`”
i=”$@”
i=${i//’ ‘/%20} ; i=${i//$tab/%09}
echo “$i”
i=””
}

popup () {
/usr/bin/osascript <<-EOF
tell application “System Events”
activate
display dialog “$@”
end tell
EOF

}
if [ ! -f “$local_path” ]
then
popup “ОШИБКА! Файл не найден. Возможно, вы выбрали папку или произошла другая ошибка.”
exit 0; # We have to do that to avoid automator errors
fi
if [[ “$local_path” == “$local_root/”* ]]
then
# This happens if the file is at $local_root and the public URL should be generated
url=$( urlencode ${local_path#”$local_root/”} );
url=$public_url/$url
echo $url | pbcopy
popup “Публичная ссылка на файл успешно скопирована в ваш буфер обмена.”
else
# This happens if the file is not at $local_root
popup “ОШИБКА! Выбранный файл должен находиться в публичной веб-папке! Пожалуйста, скопируйте файл туда и попробуйте еще раз.”
exit 0;
fi

Этот скрипт проверяет, что файл находится в нужной папке (смонтированной сетевой папке), переменная local_root, и добавляет к нему публичный URL этой папки — public_url.

Если файл находится там, где надо, сервис скопирует URL в буфер обмена и сообщит вам об этом (а также о возможных ошибках) при помощи osascript:

Конечно, еще лучше было бы не выставлять службы на Mac OS X Server в Интернет, использовать индивидуальную аутентификацию и “облачные” сервисы, способые вовремя удалять файлы, как только они будут скачаны — но на их настройку потребуется чуть больше, чем 15 минут времени!