Добавлена проверка на root для создания БД ( Fixes #5 )

This commit is contained in:
Jack Stdin 2016-02-14 15:23:38 +03:00
parent 165f4c9b2c
commit a0a3ec83c6
2 changed files with 36 additions and 6 deletions

View File

@ -40,6 +40,7 @@ sudo apt-get install python-setuptools
sudo easy_install pip sudo easy_install pip
sudo pip install --upgrade pip sudo pip install --upgrade pip
``` ```
2. PostgreSql 9.5 и выше (из-за синтаксиса _ON CONFLICT ... DO_) 2. PostgreSql 9.5 и выше (из-за синтаксиса _ON CONFLICT ... DO_)
Для Windows, как обычно, [качаем](http://www.enterprisedb.com/products-services-training/pgdownload#windows) - ставим, для Debian: Для Windows, как обычно, [качаем](http://www.enterprisedb.com/products-services-training/pgdownload#windows) - ставим, для Debian:
``` ```
@ -49,6 +50,7 @@ sudo apt-get update
sudo apt-get install postgresql-9.5 sudo apt-get install postgresql-9.5
``` ```
Затем создайте пользователя и базу данных. Затем создайте пользователя и базу данных.
3. Sphinx 2.2.1 и новее: 3. Sphinx 2.2.1 и новее:
[Windows](http://sphinxsearch.com/downloads/release/), Debian: [Windows](http://sphinxsearch.com/downloads/release/), Debian:
``` ```
@ -61,6 +63,7 @@ sudo apt-get install postgresql-server-dev-9.5
make make
sudo make install sudo make install
``` ```
4. Web-сервер с поддержкой WSGI, любой, по Вашему желанию. 4. Web-сервер с поддержкой WSGI, любой, по Вашему желанию.
### Windows ### Windows
@ -77,17 +80,26 @@ python -m pip install https://github.com/Romamo/sphinxapi/zipball/master
``` ```
sudo apt-get install python-dev libxml2 libxml2-dev libxslt-dev sudo apt-get install python-dev libxml2 libxml2-dev libxslt-dev
``` ```
1. Установить unrar (non-free) 2. Установить unrar (non-free)
``` ```
sudo sh -c 'echo deb ftp://ftp.us.debian.org/debian/ stable main non-free > /etc/apt/sources.list.d/non-free.list' sudo sh -c 'echo deb ftp://ftp.us.debian.org/debian/ stable main non-free > /etc/apt/sources.list.d/non-free.list'
sudo apt-get update sudo apt-get update
sudo apt-get install unrar sudo apt-get install unrar
``` ```
2. Установить sphinxapi последней версии: 3. Установить sphinxapi последней версии:
``` ```
pip install https://github.com/Romamo/sphinxapi/zipball/master pip install https://github.com/Romamo/sphinxapi/zipball/master
``` ```
3. Установить, собственно, нашу штуку: 4. Установить, собственно, приложение:
- полностью:
``` ```
pip install --target=d:\somewhere\other\than\the\default https://github.com/jar3b/... sudo mkdir -p /var/www/py-phias
sudo chown www-fias: /var/www/py-phias
wget https://github.com/jar3b/py-phias/archive/v0.0.1.tar.gz
sudo -u www-fias tar xzf v0.0.1.tar.gz -C /var/www/py-phias --strip-components=1
sudo pip install -r requirements.txt
```
- как библиотеку:
```
python -m pip install ....
``` ```

View File

@ -1,13 +1,24 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import ctypes
import logging import logging
import optparse import optparse
import os
import sys import sys
from aore.miscutils.sphinx import SphinxHelper from aore.miscutils.sphinx import SphinxHelper
from aore.updater.soapreceiver import SoapReceiver from aore.updater.soapreceiver import SoapReceiver
from aore.updater.updater import Updater from aore.updater.updater import Updater
logging.basicConfig(format='%(asctime)s %(message)s', level=logging.INFO) logging.basicConfig(format='%(asctime)s %(message)s', level=logging.WARNING)
def is_root():
try:
is_admin = os.getuid() == 0
except AttributeError:
is_admin = ctypes.windll.shell32.IsUserAnAdmin() != 0
return is_admin
def print_fias_versions(): def print_fias_versions():
@ -92,7 +103,7 @@ def main():
options, arguments = p.parse_args() options, arguments = p.parse_args()
# if no arguments # if no arguments
if len(sys.argv)<2: if len(sys.argv) < 2:
print("Py-Phias manager. Try manage.py --help for options.") print("Py-Phias manager. Try manage.py --help for options.")
return return
@ -103,6 +114,10 @@ def main():
# Manage DB # Manage DB
if options.database: if options.database:
if not is_root():
print "This option need to be run with elevated privileges."
return
# create new database # create new database
aoupdater = Updater(options.source) aoupdater = Updater(options.source)
allowed_updates = None allowed_updates = None
@ -118,6 +133,9 @@ def main():
# Manage Sphinx # Manage Sphinx
if options.sphinx and options.indexer_path and options.output_conf: if options.sphinx and options.indexer_path and options.output_conf:
if not is_root():
print "This option need to be run with elevated privileges."
return
sphinxh = SphinxHelper() sphinxh = SphinxHelper()
sphinxh.configure_indexer(options.indexer_path, options.output_conf) sphinxh.configure_indexer(options.indexer_path, options.output_conf)