Top.Mail.Ru
? ?

acisi, posts by tag: python - LiveJournal

Entries by tag: python

api.acisi.ru (Часть первая)
acisi, фото
Imageacisi
Решил все-так немного задокументировать, а то уже сам запутался чего там нагорожено, потом по группам разнесу. В большинстве случаев в случае успешной операции выдается [OK], в случае ошибки [ERROR], ну и в логических операциях [TRUE] и [FALSE].

А в целом это web-интерфейс для моей библиотеки которая по частям использовалась и сейчас используется в куче разномастных проектиков и проектищ :)))

http://api.acisi.ru/okpage - Выводит страницу содержащую [OK] (Это небольшая часть моего прокси-детектора).
http://api.acisi.ru/norm_ip?arg1=219.134.213.10 - Проверяет переданный IP-адрес на корректность (лишние разряды, буквы, в целом стандарт IPv4).
http://api.acisi.ru/intranet?arg1=192.168.12.3 - Определяем принадлежит ли указанный адрес диапазону зарезервированных для внутренних подсетей.
http://api.acisi.ru/ipextract?arg1=http://hidemyass.com/proxy-list/6 - Извлекаем IP-адреса присутствующие на WEB-странице (Обходит всякие хитрожопые защиты, кроме картинок конечно, но такой задачи заказчик и не ставил)
http://api.acisi.ru/nmapqueue?arg1=183.89.78.32 - Многопоточный nmap сканер, заданный IP-адрес ставит в очередь на обработку, в процессе обработки у него будет сменятся статус, в конце обработки будут выведены результаты сканирования. Из особенностей использование конвейера, что позволило загружать в систему тысячи хостов для анализа и потом по окончании сканирования разбирать результаты. Использовался в системе массового обнаружения уязвимостей.

Завтра продолжение...

try/except и postgresql
acisi, фото
Imageacisi
Оказывается использовать конструкцию try: except: при дополнении записей в таблицу исходя из критерия уникальности ключа не самая умная идея.
Объем базы данных 159 мб, а объем лога ошибок 6,9 гб. Соответственно место на VPS закончилось. Вот такой вот небольшой курьез :) Придется переписывать логику на более гуманную. А то лог забит ошибками вида:

2013-11-17 06:45:22 NOVT ERROR: duplicate key value violates unique constraint "idx_ip_port"
2013-11-17 06:45:22 NOVT DETAIL: Key (ip, port)=(200.195.138.45, 3128) already exists.
2013-11-17 06:45:22 NOVT STATEMENT: INSERT INTO acisi_http_proxy(ip,port) VALUES ('200.195.138.45',3128)
2013-11-17 06:45:51 NOVT ERROR: duplicate key value violates unique constraint "idx_ip_port"
2013-11-17 06:45:51 NOVT DETAIL: Key (ip, port)=(119.59.81.118, 8080) already exists.

Графический web интерфейс для Samba4
acisi, фото
Imageacisi
В прошлой заметке я писал, о Российской разработке web интерфейса к четвертой самбе. Собственно человек причастный к работе этого НИИ мне ответил следующее:

Ответ первый:
В 20011 году государство произвело реструктуризацию НИИ, что привело к
закрытию большого числа начатых ею проектов, в том числе и проекта
Swat 2.
Продолжение:
Не могу никак прокомментировать прогресс, т.к. с командой этим занимавшейся я пересекался мало,
успели позаниматься они проектом тоже мало (по времени), и после "реструктуризации" контакт с ними
у меня потерялся.


Следовательно вопрос можно считать закрытым и начинать собственную разработку с нуля. Тем более, как
я понял зарубежным коллегам тоже порадовать нечем. Все как-то крайне уныло.

Могу порадовать небольшим скриншотиком того, что удалось создать за два дня.

наработки

И кстати, если среди многоуважаемых ЖЖ-друзей есть заинтересованные в данном проекте можем поработать.
У меня наработок вагон и маленькая тележка, только склеивай :) Да и дизайнер толковый бы не помешал.

Разработка ведется на питоне с джангой.

Python3 LDAP support
acisi, фото
Imageacisi
Возвращаясь к текущим вопросам расскажу как собрать поддержку LDAP в Python3.

# apt-get install python3-dev
# apt-get install libldap2-dev
# apt-get install libsasl2-dev
# pip-3.3 install https://github.com/broiledmeat/python3-ldap/tarball/master


Derrick Staples, клевый чувак :) Я уже сам хотел за допиливание взяться, но обошлось. Иначе на неделю бы точно засел.
Tags: ,

Установка модуля mod_wsgi в Opensuse 12.3 (python 2.7)
acisi, фото
Imageacisi
1. Скачиваем исходные коды проекта:
wget http://modwsgi.googlecode.com/files/mod_wsgi-3.4.tar.gz

2. Распаковываем:
tar xvf ./mod_wsgi-3.4.tar.gz

3. Устанавливаем недостающие пакеты и создаем несколько симлинков (без симлинков сборщик не поймет какой тип сборки апача используется и будет ругаться на отсутствующий mpm.h):
#zypper install apache2-devel
#zypper install python-devel
#ln -s /usr/include/apache2-prefork/mpm.h /usr/include/apache2/mpm.h
#ln -s /usr/include/apache2-prefork/mpm_default.h /usr/include/apache2/mpm_default.h


4. Выполняем сборку и установку:
#make
#make_install


5. Добавляем модуль в sysconfig (/etc/sysconfig/apache2, секция APACHE_MODULES):
После перезапуска apache в настройках модудей появится запись о зарегистрированном модуле.
#cat /etc/apache2/sysconfig.d/loadmodule.conf | grep wsgi
LoadModule wsgi_module /usr/lib/apache2/mod_wsgi.so

131 книга по языку программирования python
Image
Imageacisi
Небольшая компиляция коллекции книг, справочников и самоучителей по языку программирования python второй и третьей версии. В основном всякий шлак, но попадаются интересные экземпляры.
Скачивать тут:
python_books.7z (696M)

Перечень книг в архиве:
2004 Dive Into Python Apress
A Byte of Python, v1.20 (for Python 2.x) (2005)
A Byte of Python, v1.92 (for Python 3.0) (2009)
Addison Wesley - Python Programming with the Java Class Libraries - Jython.chm
Addison Wesley - Text processing in python.chm
A Learner's Guide to Programming Using the Python Language (2009)
Apress.Foundations.of.Python.3.Network.Programming.2nd.Edition.Dec.2010
A Primer on Scientific Programming with Python (2009)
A Primer on Scientific Programming with Python, 2nd Edition (2011)
Beginning Game Development with Python and Pygame - From Novice to Professional (2007)
Beginning Python (2005)
Beginning Python - From Novice to Professional (2005) - BBL
Beginning Python From Novice to Professional
Beginning Python - From Novice to Professional, Second Edition (2008)
Beginning Python
Beginning Python - Using Python 2.6 and Python 3.1 (2010)
Beginning Python Visualization - Crafting Visual Transformation Scripts (2009)
Bioinformatics Programming Using Python, First Edition (2009)
CherryPy Essentials - Rapid Python Web Application Development (2007)
Computer Programming - Python - Programming Language Tutorial (2002 Van Rossum)
Core Python Applns. Pgmg. 3rd ed. - W. Chun (Pearson, 2012) BBS
Core Python Programming
Core Python Programming, Second Edition (2006)
Dive Into Python 3 (2011)
Dive Into Python 3, r867 (2010)
Dive Into Python 3, r870 (2010)
diveintopython
Django 1.0 Template development
Django 1.0 Web Site Development
Expert Python Programming (2008)
Read more...Collapse )
Tags:

Удаление файлов в хранилище которые находились там более 6-и дней
Image
Imageacisi
Задача ставилась специфичным образом, метод с датой создания и изменения не подходит, пришлось извращаться со списками файлов, собственно в первом приближении получилось так:

Чудно все-таки LiveJournal отступы коверкает.

iimport os
import datetime
from datetime import timedelta
import os.path

# 6-ть дней
sixdays = timedelta(days=6)
# текущая дата для списка файлов
curent=datetime.datetime.now()
str_date=str(curent.year)+'.'+str(curent.month)+'.'+str(curent.day)
# Составляем список всех файлов в каталоге на сегодня
filelist=open( 'C:\\acisi\\lists\\'+str_date+'.txt', 'w' )
tree = os.walk('\\\\shd\\Scan')
for d, dirs, files in tree:
    for f in files:
        print (d+'\\'+f)
        filelist.write(d+'\\'+f+'\n')
filelist.close()
# Удаляем файлы из списка 6-и дневной давности
# Дата 6-и дневной давности
sixfromcurent=curent-sixdays
str_date=str(sixfromcurent.year)+'.'+str(sixfromcurent.month)+'.'+str(sixfromcurent.day)
print (str_date)
# Читаем файл и пытаемся удалять файлы
if not os.path.exists( 'C:\\acisi\\lists\\'+str_date+'.txt'):
    print ('Файла за указанную дату не существует!')
else:
    print ('Удаляем файлы!')
    filelist=open( 'C:\\acisi\\lists\\'+str_date+'.txt', 'r' )
    for line in filelist.readlines():
        line=line.replace('\n','')
        if (line !=''):
            try:
                print ('Удаление файла: '+line)
                os.remove(line)
            except:
                print ('Ошибка удаления файла: '+line)

Image