Туториал: fb2 на iPhone

Jan 11, 2010 18:52

(На правах предисловия.) Раз уж я весь из себя такой кладезь знаний по части айфона, буду время от времени делиться, в надежде на то, что кто-нибудь придёт сюда по наводке поисковиков и приобщится заодно ко всяким другим интересностям.

Как известно, нормальная читалка формата fb2 для айфона только одна, да и та в App Store, и её бесплатная версия может качать книги только с одного-единственного демонстрационного сайта, ручная же загрузка в неё файлов с компьютера невозможна. Правила App Store на этот счёт строги.

Итак, инструкция:
1. Ставим на джейлбрейкнутый айфон с установленным и настроенным (см. Прил. А) веб-сервером lighttpd программу ShortBook LE из App Store.
2. Закачиваем файл в формате fb2, не нарушающий ничьих авторских прав, в ~/Media/ или куда у вас указывает корень веб-сервера.
3. Дописываем в файл /etc/hosts строку:
127.0.0.1www.shortki.com
4. Запускаем ShortBook LE, жмём "Добавить книгу" (плюсик), и "качаем" файл в формате fb2, не нарушающий ничьих авторских прав, из своего домашнего раздела в песочницу читалки.
5. Радуемся тому, как тонко отечественным разработчикам удалось предоставить всем желающим возможность закачивать в свою программу любые файлы, не нарушив при этом правил App Store :)

Приложение А: настройка lighttpd

После установки сервера из репозиториев нужно задать ему конфигурационный файл и настроить запуск сервера при загрузке телефона. Версия lighttpd для системы 2.x, если я правильно помню, автоматически запускалась сама, и даже чуть ли не с конфигурацией по умолчанию поставлялась, а вот на 3.x уже пришлось поковыряться самому. Вот файлы, которыми пользуюсь я:

/etc/lighttpd.conf:

server.document-root = "/var/mobile/"
# server.port = 80 # Default
#server.bind = "127.0.0.1" # Default: All
server.modules = ( "mod_cgi" )
server.tag = "iPhone lighttpd"

#server.pid-file = "/var/run/lighttpd.pid"

accesslog.filename = "/var/log/lighttpd/access.log"
server.errorlog = "/var/log/lighttpd/error.log"

dir-listing.activate = "enable"
index-file.names = ( "index.php", "index.py", "index.pl", "index.cgi", "index.html", "default.html" )
url.access-deny = ( "~", ".inc" )
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi", ".cgi", ".py" )

cgi.assign = ( ".pl" => "/usr/bin/perl", ".py" => "/usr/bin/python", ".rb" => "/usr/local/bin/ruby", ".cgi" => "", ".sh" => "" )

mimetype.assign = (
".pdf" => "application/pdf",
".sig" => "application/pgp-signature",
".spl" => "application/futuresplash",
".class" => "application/octet-stream",
".ps" => "application/postscript",
".torrent" => "application/x-bittorrent",
".dvi" => "application/x-dvi",
".gz" => "application/x-gzip",
".pac" => "application/x-ns-proxy-autoconfig",
".swf" => "application/x-shockwave-flash",
".tar.gz" => "application/x-tgz",
".tgz" => "application/x-tgz",
".tar" => "application/x-tar",
".zip" => "application/zip",
".mp3" => "audio/mpeg",
".m3u" => "audio/x-mpegurl",
".wma" => "audio/x-ms-wma",
".wax" => "audio/x-ms-wax",
".ogg" => "application/ogg",
".wav" => "audio/x-wav",
".gif" => "image/gif",
".jpg" => "image/jpeg",
".jpeg" => "image/jpeg",
".png" => "image/png",
".xbm" => "image/x-xbitmap",
".xpm" => "image/x-xpixmap",
".xwd" => "image/x-xwindowdump",
".css" => "text/css",
".html" => "text/html",
".htm" => "text/html",
".js" => "text/javascript",
".asc" => "text/plain",
".c" => "text/plain",
".cpp" => "text/plain",
".log" => "text/plain",
".conf" => "text/plain",
".text" => "text/plain",
".txt" => "text/plain",
".dtd" => "text/xml",
".xml" => "text/xml",
".mpeg" => "video/mpeg",
".mpg" => "video/mpeg",
".mov" => "video/quicktime",
".qt" => "video/quicktime",
".avi" => "video/x-msvideo",
".asf" => "video/x-ms-asf",
".asx" => "video/x-ms-asf",
".wmv" => "video/x-ms-wmv",
".bz2" => "application/x-bzip",
".tbz" => "application/x-bzip-compressed-tar",
".tar.bz2" => "application/x-bzip-compressed-tar",
# default mime type
"" => "application/octet-stream",
)
Фактически, это дефолтный файл с настроенными путями к корневой директории сервера и логам. Директорию /var/log/lighttpd/ нужно создать руками.

/System/Library/com.lighttpd.plist:

Label
    lighttpd
    Program
    /usr/sbin/lighttpd
    ProgramArguments

/usr/sbin/lighttpd-angel
        -f/etc/lighttpd.conf
        -D

RunAtLoad

OnDemand

KeepAlive

SucessfulExit

Здесь нужно указать свой путь к конфигурационному файлу (у меня /etc/lighttpd.conf). После перезагрузки lighttpd будет работать, и даже сам подниматься заново после падений.

Ещё одна хорошая читалка называется GoodReader, она платная, но ничего лучше для txt и (частично) pdf пока не нашлось. Своих пяти (ЕМНИП) долларов вполне стоит.

красноглазики, айфон, хозяйке на заметку

Previous post Next post
Up