Pull to refresh

Gyazo на собственном сервере

Software
Привет, хабр!
image
Я и мои друзья давно пользуются программой Gyazo.

Вкратце: маленькая программка, при запуске которой можно сразу выделять область на экране, а как только отпускаешь мышку, область закачивается на сервер gyazo, а в буфер обмена сразу копируется ссылка на него.
Попробовать можно здесь: http://gyazo.com

В последнее время её создатель решил монетизировать свою разработку, и помимо платных фич, включил навязчивую рекламу для не-премиум пользователей.

Сначала, в буфер копировалась не прямая ссылка на картинку, а ссылка на страничку с рекламой. Затем и вовсе прямой файл стал недоступен.

Поскольку gyazo является Open Source проектом, я решил сделать версию «для себя» и без рекламы.
Подробнее под катом.

1. Настройка сервера для изображений.


Нам нужен любой веб-сервер с поддержкой PHP. Оригинальный серверный скрипт является CGI, я решил использовать PHP.

Сам скрипт находится здесь:

<?php
$uri = "http://vps.yurganov.ru/gyazo/";
if(isset($_FILES['imagedata']['name'])) {
        $path = 'i/' . substr(md5(time()), -28) . '.png';
    if(move_uploaded_file($_FILES['imagedata']['tmp_name'], $path)) {
        echo $uri , $path;
    } else{
        echo $uri;
    }
} else {
    echo $uri;
} ?>


Как видно, ничего сверхъестественного.

При попытке отправить файл программой, скрипт переименовывает его в набор символов (уникальность — md5 + time()), а также возвращает ссылку на скриншот.

Я решил складывать изображения не в туже папку, а в папку i/, которой назначил права 777.

2. Подготовка клиентской части.


2.1 Windows-приложение


Приложение для Windows написано на C++, указание на то, какой сервер изображений использовать, прописано прямо в коде программы. Чтобы каждый раз не перекомпилировать, я решил взять за основу версию gyazowin от paulirish, в которой настройки берутся из ini-файла.

; Set up gyazo on your own server using 
;   ruby: http://github.com/gyazo/Gyazo/tree/master/Server/ 
;   php : http://benalman.com/news/2009/10/gyazo-on-your-own-server/

[Configuration]
SERVER = gyazo.com
PATH = /upload.cgi

Поскольку сразу его код работать не захотел, я его чуть-чуть подправил.

Скачать уже скомпилированную версию с ini-файлом можно тут.

Для работы с вашим сервером, в конфиге надо указать:

[Configuration]
SERVER = [ваш домен] - просто с ip-адресом у меня не заработало
PATH = /upload.php - путь до вашего серверного скрипта

Можно также взять оригинальное приложение, и подправить его под себя. (в файле gyazowin.cpp найти строчки SERVER и PATH и заменить как указано выше)

2.2 Mac OS приложение


С Mac версией всё проще — там уже используется внешний файл, где и храниться путь к серверу.

Необходимо установить Gyazo for Mac с официального сайта, затем отредактировать файл script, который находится в /Applications/Gyazo.app/Contents/Resources/ следующим образом:
HOST = 'your domain'
CGI = '/upload.php' - путь до вашего скрипта

После чего продолжить работу как и обычно.

2.3 Linux — приложение


Инструкция по установке Gyazo for Linux.

Путь к серверу, соответственно, тоже нужно поменять в ruby-скрипте.

И что, ты что нибудь выиграл?


image Мгновенная скорость работы
image Отсутствие рекламы
image Все созданные скриншоты у тебя «под боком»
image Надо думать о свободном месте на сервере (за год я использовал около 200Мб, что вобщем не много для единичного использования)
image Ваши друзья вряд ли захотят пользоваться вашим решением, поскольку боятся, что у вас будет доступ к их изображениям

Пример


Оценить скорость работы можно на моём сервере (надеюсь, он не загнется под хабраэффектом):
http://vps.yurganov.ru/gyazo/
Внимание: все созданные скриншоты удаляются по cron раз в 5 минут.

P.S. Галерея файлов


Галерея, который показывает все ваши загруженные файлы в хронологическом порядке находится здесь.

Скачать: http://vps.yurganov.ru/gyazo/distr/gallery.zip.

(Инструкция по установке внутри архива)
Tags:
Hubs:
Total votes 65: ↑57 and ↓8 +49
Views 14K
Comments Comments 88