Commit e8e7c8f2 authored by mitshel's avatar mitshel
Browse files

Добавлен разбор и использование новых параметрво конфигурации в разделе [httpd]

найдено и исправлено несколько ошибок рефакторинга
Функция translit теперь еще заменяет символ перевода строки пробелом
сервер httpd.py фактически работоспособен, остается его демонизировать
parent 7688267d
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -59,14 +59,29 @@ Alias /opds "/home/www/opds"
в режиме демона командой ./sopdsd.py start

6. Доступ к OPDS каталогу через WWW.

6.1 Использование CGI
Для сервера Apache необходимо разрешить запуск cgi-скрипта ./py/sopds.cgi
при помощи директивы, помещенной в .htacess:
  Options ExecCGI
или
  Options +ExecCGI

6.2 Использование WSGI
Для начала необходимо установить mod_wsgi в Apache
Далее необходимо разрешить запуск wsgi-скрипта ./py/sopds.wsgi
при помощи директив, помещенной в .htacess:
  AddHandler wsgi-script .wsgi
  Options ExecCGI
или
  AddHandler wsgi-script .wsgi
  Options +ExecCGI

Описания по нектороым проблемам, которые могут возникнуть с mod_wsgi: https://code.google.com/p/modwsgi/wiki/IssuesWithExpatLibrary

7. Использование OPDS каталога с устройств поддерживающих OPDS.
Ввести OPDS каталог и следующий URL: your_domain_name/opds/py/sopds.cgi
Либо, если Вы используете WSGI     : your_domain_name/opds/py/sopds.wsgi

8. Обновление версий
- Поскольку при переходе от версии к версии возможно изменение структуры БД необходимо пересоздать ее следующей командой
+24 −1
Original line number Diff line number Diff line
@@ -17,8 +17,9 @@ formats = .pdf .djvu .fb2 .txt
#Некоторым OPDS-клиентам требуется полный путь в HTTP-запросе
#таким образом cgi_path и cover_path - задают такие пути
#если закомментировать эти параметры, то будет применены параметры по умолчанию:
#cgi_path=sopds.cgi и cover_path=../covers
#cgi_path=sopds.cgi, wsgi_path=sopds.wsgi  и cover_path=../covers
cgi_path=/opds/py/sopds.cgi
wsgi_path=/opds/py/sopds.wsgi
cover_path=/opds/covers

# Количество выдаваемых строк на одну страницу
@@ -151,6 +152,28 @@ scan_interval = 360
# по умолчанию scan_on_start = yes
scan_on_start = yes

[httpd]
# Если server = yes, то будет демон sopdsd.py запустит встроенный OPDS-сервер
# по умолчнию server = yes
server = yes

# Номер TCP порта на котором будет работать OPDS-сервер
# по умолчанию port = 8081
port = 8081

# Адрес на котором будет запущено OPDS-сервер
# 0.0.0.0 - указывает что сервер будет работать на всех доступных адресах сервера
bind_address = 0.0.0.0

# Если auth = yes, то встроенный httpd-сервер будет выполнять Basic-авторизацию на основании строки auth_accounts
# по умолчнию auth = no
auth = yes

# Строка accounts должна содержать разделенные пробелам пары user:password
# на основании данных этого параметра при включенном auth = yes будет происходить авторризация на встроенном
# OPDS-сервере
accounts = user:pass user1:pass1

[site]
id=http://sopds.ru/
title=SOPDS.RU | OPDS Catalog
+9 −0
Original line number Diff line number Diff line
@@ -2081,3 +2081,12 @@ AttributeError: 'opdsScanner' object has no attribute 'init_statas'
2014-05-11 12:03:28,518 INFO     Archives skipped : 128
2014-05-11 12:03:28,519 INFO     Bad archives     : 0
2014-05-11 12:03:28,519 INFO     Time estimated:0 hours, 3 minutes, 12 seconds.
2014-05-11 18:00:17,667 INFO      ***** Starting sopds-scan...
2014-05-11 18:03:15,054 INFO     Books added      : 0
2014-05-11 18:03:15,054 INFO     Books skipped    : 5571
2014-05-11 18:03:15,055 INFO     Books DB entries deleted : 0
2014-05-11 18:03:15,055 INFO     Books in archives: 0
2014-05-11 18:03:15,055 INFO     Archives scanned : 35
2014-05-11 18:03:15,056 INFO     Archives skipped : 128
2014-05-11 18:03:15,056 INFO     Bad archives     : 0
2014-05-11 18:03:15,056 INFO     Time estimated:0 hours, 2 minutes, 57 seconds.

py/app.wsgi

deleted100644 → 0
+0 −15
Original line number Diff line number Diff line
import sys
from urllib import parse

def app(environ, start_response):
    " ... "
    message1 = "You use Python %s" % sys.version[:3]
    d = parse.parse_qs(environ['QUERY_STRING'])
    if 'id' in d:
        id = d.get('id')[0]
    else:
        id = 'Bad request'
    start_response("200 OK", [("Content-Type", "text/html")])
    return [message1.encode(), id.encode()]

application = app
Loading