Форум сайта python.su
#!/usr/bin/env python2
# -*- coding: UTF-8 -*-
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import *
import sys, pika, threading
class RabThread(threading.Thread):
def run(self):
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = connection.channel()
channel.queue_declare(queue='pdf_render')
def callback(ch, method, properties, body):
print "[x] callback Received %r" % (body,)
url_load(body)
channel.basic_consume(callback,queue='pdf_render',no_ack=True)
channel.start_consuming()
if __name__=="__main__":
def url_load(url_str):
print "[+] rabbit taken url:",url_str
web.load(QUrl(url_str))
return 0
def printIt():
print "[*] Page print"
web.print_(printer)
return 0
app = QApplication(sys.argv)
web = QWebView()
web.load(QUrl("http://gmail.com"))
web.show()
printer = QPrinter()
printer.setPageSize(QPrinter.A4)
printer.setOutputFormat(QPrinter.PdfFormat)
printer.setOutputFileName("tmp.pdf")
RabThread().start()
QObject.connect(web, SIGNAL("loadFinished(bool)"), printIt)
sys.exit(app.exec_())
[*] Page print
[x] callback Received 'http://site.com'
QObject: Cannot create children for a parent that is in a different thread.
[+] rabbit taken url: http://site.com
(Parent is QNetworkAccessManager(0x2e60aa0), parent's thread is QThread(0x2a42ef0), current thread is QThread(0x331a0e0)
1) Авторизация на сайте, получение и сохранение cookie:Вот что я накодил:
curl -v –cookie-jar /tmp/cloud.txt –data “action_method=GET&user=ЛОГИН&pass=ПАРОЛЬ” https://support.selectel.ru/
2) Непосредственно команда для запуска машины:
curl -v –cookie /tmp/cloud.txt "https://support.selectel.ru/cloud/proxy.php?uuid=ИДЕНТИФИКАТОР_МАШИНЫ&;action=vm-start";;;
3) Удаление cookie:
rm /tmp/cloud.txt
import urllib
import urllib2
urllib2.install_opener(urllib2.build_opener(urllib2.HTTPCookieProcessor))
def main() :
params = urllib.urlencode({
'user' : "**",
'pass': "****"
})
f = urllib2.urlopen(
"https://support.selectel.ru/",
params)
start = urllib2.urlopen("https://support.selectel.ru/cloud/proxy.php?uuid=4405&;action=vm-start", params)
raw_input()
main()
// пример использования VerQueryValue
// вывод для avtapi.dl выглядит как:
/*
CompanyName: Корпорация Майкрософт
FileDescription: Программа вызова TAPI 3.0 и просмотра конференций многоадресной IP-рассылки
FileVersion: 5.1.2600.0 (xpclient.010817-1148)
InternalName: AVTAPI
LegalCopyright: c Корпорация Active Voice, 1998. Все права защищены.
LegalTradeMarks: нет информации
OriginalFilename: AVTAPI
ProductName: Операционная система MicrosoftR WindowsR
ProductVersion: 5.1.2600.0
Comments: нет информации
Author: нет информации
*/
#include <tchar.h>
#include <windows.h>
#include <stdio.h>
#pragma comment (lib, "version.lib") // указываем библиотеку, содержащую GetFileVersionInfoSize и т.п.
// наша функа
void PrintVersionStringInfo(const TCHAR *fileName)
{
PLONG infoBuffer; // буфер, куда будем читать информацию
DWORD infoSize; // и его размер
struct LANGANDCODEPAGE { // структура для получения кодовых страниц по языкам трансляции ресурсов файла
WORD wLanguage;
WORD wCodePage;
} *pLangCodePage;
// имена параметров, значения которых будем запрашивать
const TCHAR *paramNames[] = {
_T("CompanyName"),
_T("FileDescription"),
_T("FileVersion"),
_T("InternalName"),
_T("LegalCopyright"),
_T("LegalTradeMarks"),
_T("OriginalFilename"),
_T("ProductName"),
_T("ProductVersion"),
_T("Comments"),
_T("Author")
};
TCHAR paramNameBuf[256]; // здесь формируем имя параметра
TCHAR *paramValue; // здесь будет указатель на значение параметра, который нам вернет функция VerQueryValue
UINT paramSz; // здесь будет длина значения параметра, который нам вернет функция VerQueryValue
// получаем размер информации о версии файла
infoSize = GetFileVersionInfoSize(fileName, NULL);
if ( infoSize > 0 )
{
// выделяем память
infoBuffer = (PLONG) malloc(infoSize);
// получаем информацию
if ( 0 != GetFileVersionInfo(fileName, NULL, infoSize, infoBuffer) )
{
// информация находится блоками в виде "\StringFileInfo\кодовая_страница\имя_параметра
// т.к. мы не знаем заранее сколько и какие локализации (кодовая_страница) ресурсов имеются в файле,
// то будем перебирать их все
UINT cpSz;
// получаем список кодовых страниц
if ( VerQueryValue(infoBuffer, // наш буфер, содержащий информацию
_T("\\VarFileInfo\\Translation"),// запрашиваем имеющиеся трансляции
(LPVOID*) &pLangCodePage, // сюда функция вернет нам указатель на начало интересующих нас данных
&cpSz) ) // а сюда - размер этих данных
{
// перебираем все кодовые страницы
for (int cpIdx = 0; cpIdx < (int)(cpSz/sizeof(struct LANGANDCODEPAGE)); cpIdx++ )
{
// перебираем имена параметров
for (int paramIdx = 0; paramIdx < sizeof(paramNames)/sizeof(char*); paramIdx++)
{
// формируем имя параметра ( \StringFileInfo\кодовая_страница\имя_параметра )
_stprintf(paramNameBuf, _T("\\StringFileInfo\\%04x%04x\\%s"),
pLangCodePage[cpIdx].wLanguage, // ну, или можно сделать фильтр для
pLangCodePage[cpIdx].wCodePage, // какой-то отдельной кодовой страницы
paramNames[paramIdx]);
// получаем значение параметра
if ( VerQueryValue(infoBuffer, paramNameBuf, (LPVOID*)¶mValue, ¶mSz));
// и выводим его на экран
/*
PrintRusLine(paramValue, paramNames[paramIdx]);
else
PrintRusLine(_T("нет информации"), paramNames[paramIdx]);*/
}
}
}
}
free(infoBuffer);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
PrintVersionStringInfo( _T("d:\\user32.dll") );
return 0;
}
import ctypes as ct
import struct
import sys
versionGetter = ct.windll.LoadLibrary("d:\\version.dll")
testfile = "d:\\user32.dll"
class LANGANDCODEPAGE(ct.Structure):
_fields_ = [("wLanguage", ct.c_ushort),
("wCodePage", ct.c_ushort)]
n = versionGetter.GetFileVersionInfoSizeW(testfile, 0)
print("FileVersionInfoSize: ", n)
infoBuffer = ct.create_string_buffer(n)
versionGetter.GetFileVersionInfoW(testfile, 0, n, ct.byref(infoBuffer))
tt = struct.unpack(str(n//4) + "L", infoBuffer)
print(tt)
cpSz = ct.c_uint(0)
langAndCodePage = LANGANDCODEPAGE(0, 0)
versionGetter.VerQueryValueW(infoBuffer, "\\VarFileInfo\\Translation", \
ct.byref(langAndCodePage), ct.byref(cpSz)) #КОСЯК ТУТ!
print("cpSz: ", cpSz.value)
print("wLanguage :", langAndCodePage.wLanguage, " wCodePage: ", langAndCodePage.wCodePage)
'''
buffer = ct.create_string_buffer(4)
versionGetter.VerQueryValueW(infoBuffer, "\\VarFileInfo\\Translation", \
buffer, ct.byref(cpSz))
print("cpSz: ", cpSz.value)
tt2 = struct.unpack("2H", buffer)
print(tt2)
'''
class WND(QtGui.QMainWindow):
def __init__(self, STR):
...
self.scrRect = QtGui.QDesktopWidget().screenGeometry()
self.move(self.scrRect.width() - self.width(), -4)
import sys
import socket
import pyrad.packet
from pyrad.client import Client
from pyrad.dictionary import Dictionary
#pyrad.client.timeout=10
srv = Client(server="******", secret="*********", authport=1812,
dict=Dictionary("dictionary"))
req = srv.CreateAuthPacket(code=pyrad.packet.AccessRequest)
req["User-Name"]="90000003"
req["NAS-IP-Address"]="*******"
req["Calling-Station-Id"]="90000003"
req["Called-Station-Id"]="7926******"
req["h323-gw-id"]="***********"
req["h323-remote-address"]="80.***.***.***"
req["h323-conf-id"]="C0C44122 2DD611CC A417ACEB 04AF8742"
try:
reply=srv.SendPacket(req)
except pyrad.client.Timeout:
print "radius server does not reply"
sys.exit(1)
except socket.error,error:
print "Network Error: " + error[1]
if reply.code==pyrad.packet.AccessAccept:
print "access accepted"
else:
print "access denied"
print "Attributes returned by server:"
for i in reply.keys():
print "%s: %s" % (i,reply[i])
class WebSocket(threading.Thread):
users={}
queries = deque()
server=0
address=0
port=0
connections=0
stopkey = False
def __init__(self, address, port, connections):
threading.Thread.__init__(self)
logging.debug('W.%s',self.getName())
self.address = address
self.port = port
self.connections = connections
def run(self):
self.server = socket.socket ( socket.AF_INET, socket.SOCK_STREAM )
self.server.bind ( ( self.address, self.port ) )
self.server.listen ( self.connections )
logging.debug('W.start wsserver ')
while True:
if(self.stopkey):
break
else:
conn,address = self.server.accept()
self.add_user(conn,address)
def stop(self):
for user in self.users.itervalues():
logging.debug('W.stopping user %s', user)
user.stop()
logging.debug('W.stop wsserver ')
self.stopkey = True
self.server.shutdown(socket.SHUT_RDWR)
self.server.close()
class WebSocketThread(threading.Thread):
stopkey = False
def __init__ ( self, conn,adress,websocket,user_id ):
self.conn = conn
self.adress = adress
self.websocket = websocket
self.user_id = user_id
threading.Thread.__init__( self )
logging.debug('W.user %s',self.getName())
def run ( self ):
self.handshake()
while True:
if(self.stopkey):
logging.debug('WS.stop user %s',self.user_id )
self.conn.close()
break
else:
self.interact()
def stop(self):
self.stopkey = True
def interact(self):
data = self.recv_data(512)
data = data.decode('utf-8', 'ignore')
data_split = data[1:].split(",")
logging.debug(data_split)
if(data_split[0]=="WORK"):
query = ['W',self.user_id]
self.websocket.query(query)
if(data_split[0]=="RESULT"):
query = ['R',[string.atoi(data_split[1],10),string.atoi(data_split[2],10)]]
self.websocket.query(query)
if(data_split[0]==""):
self.stop()
br = mechanize.Browser()
br.retrieve(link, filename)
198 else:
199 self.__cache.write(data)
200 self.__cache.seek(pos)
class Main:
def __init__(self):
app.screen='normal'
self.fields=[
(u"To",'text',u''),
(u"From",'text', u''),
(u"Message",'text', u''),
]
self.form=Form(self.fields,flags=FFormDoubleSpaced|FFormEditModeOnly)
self.form.menu=[(u'Send',self.sendpost)]
self.form.execute()
def sendpost(self):
params = urllib.urlencode({'send': to, 'by':from, 'text': message})
(...код самого post...)
appuifw.note(u"Okay", "conf")
# Declare the state
states = (
('ccode','exclusive'),
)
# Match the first {. Enter ccode state.
def t_ccode(t):
r'\{'
t.lexer.code_start = t.lexer.lexpos # Record the starting position
t.lexer.level = 1 # Initial brace level
t.lexer.begin('ccode') # Enter 'ccode' state
# Rules for the ccode state
def t_ccode_lbrace(t):
r'\{'
t.lexer.level +=1
def t_ccode_rbrace(t):
r'\}'
t.lexer.level -=1
# If closing brace, return the code fragment
if t.lexer.level == 0:
t.value = t.lexer.lexdata[t.lexer.code_start:t.lexer.lexpos+1]
t.type = "CCODE"
t.lexer.lineno += t.value.count('\n')
t.lexer.begin('INITIAL')
return t
# C or C++ comment (ignore)
def t_ccode_comment(t):
r'(/\*(.|\n)*?*/)|(//.*)'
pass
# C string
def t_ccode_string(t):
r'\"([^\\\n]|(\\.))*?\"'
# C character literal
def t_ccode_char(t):
r'\'([^\\\n]|(\\.))*?\''
# Any sequence of non-whitespace characters (not braces, strings)
def t_ccode_nonspace(t):
r'[^\s\{\}\'\"]+'
# Ignored characters (whitespace)
t_ccode_ignore = " \t\n"
# For bad characters, we just skip over it
def t_ccode_error(t):
t.lexer.skip(1)