summaryrefslogtreecommitdiffstats
path: root/module
diff options
context:
space:
mode:
authorGravatar RaNaN <Mast3rRaNaN@hotmail.de> 2011-12-08 19:01:49 +0100
committerGravatar RaNaN <Mast3rRaNaN@hotmail.de> 2011-12-08 19:01:49 +0100
commit991755b2ddbba46ddc77c46e066660220fa0c418 (patch)
treec02915f840de9024150dbd0f865831405b6cadb9 /module
parentfixed order consistence, fixed typo in json_app (diff)
downloadpyload-991755b2ddbba46ddc77c46e066660220fa0c418.tar.xz
partial revert
Diffstat (limited to 'module')
-rw-r--r--module/database/FileDatabase.py59
-rw-r--r--module/lib/thrift/transport/TSSLSocket.py176
2 files changed, 7 insertions, 228 deletions
diff --git a/module/database/FileDatabase.py b/module/database/FileDatabase.py
index 6c7bfe1de..1df8998b0 100644
--- a/module/database/FileDatabase.py
+++ b/module/database/FileDatabase.py
@@ -169,10 +169,8 @@ class FileHandler:
self.core.pullManager.addEvent(e)
self.core.hookManager.dispatchEvent("packageDeleted", id)
- #if id in self.packageCache:
- # del self.packageCache[id]
-
- self.packageCache = {} # force order refresh
+ if id in self.packageCache:
+ del self.packageCache[id]
#----------------------------------------------------------------------
@lock
@@ -437,8 +435,6 @@ class FileHandler:
pack = self.getPackage(id)
e = InsertEvent("pack", id, pack.order, "collector" if not pack.queue else "queue")
self.core.pullManager.addEvent(e)
-
- self.packageCache = {} # force order refresh
@lock
@change
@@ -461,11 +457,9 @@ class FileHandler:
p.order = position
self.db.commit()
-
- e = InsertEvent("pack", id, pack.order, "collector" if not pack.queue else "queue")
- self.core.pullManager.addEvent(e)
- self.packageCache = {} # force order refresh
+ e = ReloadAllEvent("collector" if not p.queue else "queue")
+ self.core.pullManager.addEvent(e)
@lock
@change
@@ -492,11 +486,10 @@ class FileHandler:
self.cache[id].order = position
self.db.commit()
-
- e = InsertEvent("file", id, f["order"], "collector" if not self.getPackage(f["package"]).queue else "queue")
+
+ e = ReloadAllEvent("collector" if not self.getPackage(f["package"]).queue else "queue")
+
self.core.pullManager.addEvent(e)
-
- self.cache = {} # force order refresh
@change
def updateFileInfo(self, data, pid):
@@ -548,9 +541,6 @@ class FileHandler:
deleted.append(id)
self.deletePackage(int(id))
-
- self.packageCache = {} # force order refresh
-
return deleted
@lock
@@ -558,11 +548,6 @@ class FileHandler:
def restartFailed(self):
""" restart all failed links """
self.db.restartFailed()
-
- @lock
- @change
- def fixPackageOrder(self, queue=0):
- self.db.fixPackageOrder(queue)
class FileMethods():
@style.queue
@@ -864,42 +849,12 @@ class FileMethods():
@style.queue
def deleteFinished(self):
self.c.execute("DELETE FROM links WHERE status IN (0,4)")
- self.c.execute("DELETE FROM links WHERE status IN (0,4)")
self.c.execute("DELETE FROM packages WHERE NOT EXISTS(SELECT 1 FROM links WHERE packages.id=links.package)")
@style.queue
def restartFailed(self):
self.c.execute("UPDATE links SET status=3,error='' WHERE status IN (8, 9)")
-
-
- @style.queue
- def fixPackageOrder(self, queue=0):
- found = 0
- order = 0
- i = 0
- self.c.execute("SELECT count(*) FROM packages WHERE queue = ?", (queue, ))
- count = self.c.fetchone()[0]
- if count == 0:
- return
- while order < count:
- self.c.execute("SELECT id FROM packages WHERE packageorder = ? AND queue = ?", (i, queue))
- all = self.c.fetchall()
- if len(all) == 0:
- i += 1
- elif len(all) == 1:
- self.c.execute("UPDATE packages SET packageorder=? WHERE id = ?", (order, all[0][0]))
- order += 1
- i += 1
- elif len(all) > 1:
- self.c.execute("UPDATE packages SET packageorder=? WHERE id = ?", (order, all[0][0]))
- order += 1
- i += len(all)
- del all[0]
- self.c.execute("UPDATE packages SET packageorder=packageorder+? WHERE packageorder >= ? AND queue=?", (len(all), order, queue))
- for r in all:
- self.c.execute("UPDATE packages SET packageorder=? WHERE id = ?", order, r[0])
- order += 1
@style.queue
diff --git a/module/lib/thrift/transport/TSSLSocket.py b/module/lib/thrift/transport/TSSLSocket.py
deleted file mode 100644
index be358448a..000000000
--- a/module/lib/thrift/transport/TSSLSocket.py
+++ /dev/null
@@ -1,176 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-import os
-import socket
-import ssl
-
-from thrift.transport import TSocket
-from thrift.transport.TTransport import TTransportException
-
-class TSSLSocket(TSocket.TSocket):
- """
- SSL implementation of client-side TSocket
-
- This class creates outbound sockets wrapped using the
- python standard ssl module for encrypted connections.
-
- The protocol used is set using the class variable
- SSL_VERSION, which must be one of ssl.PROTOCOL_* and
- defaults to ssl.PROTOCOL_TLSv1 for greatest security.
- """
- SSL_VERSION = ssl.PROTOCOL_TLSv1
-
- def __init__(self, host='localhost', port=9090, validate=True, ca_certs=None, unix_socket=None):
- """
- @param validate: Set to False to disable SSL certificate validation entirely.
- @type validate: bool
- @param ca_certs: Filename to the Certificate Authority pem file, possibly a
- file downloaded from: http://curl.haxx.se/ca/cacert.pem This is passed to
- the ssl_wrap function as the 'ca_certs' parameter.
- @type ca_certs: str
-
- Raises an IOError exception if validate is True and the ca_certs file is
- None, not present or unreadable.
- """
- self.validate = validate
- self.is_valid = False
- self.peercert = None
- if not validate:
- self.cert_reqs = ssl.CERT_NONE
- else:
- self.cert_reqs = ssl.CERT_REQUIRED
- self.ca_certs = ca_certs
- if validate:
- if ca_certs is None or not os.access(ca_certs, os.R_OK):
- raise IOError('Certificate Authority ca_certs file "%s" is not readable, cannot validate SSL certificates.' % (ca_certs))
- TSocket.TSocket.__init__(self, host, port, unix_socket)
-
- def open(self):
- try:
- res0 = self._resolveAddr()
- for res in res0:
- sock_family, sock_type= res[0:2]
- ip_port = res[4]
- plain_sock = socket.socket(sock_family, sock_type)
- self.handle = ssl.wrap_socket(plain_sock, ssl_version=self.SSL_VERSION,
- do_handshake_on_connect=True, ca_certs=self.ca_certs, cert_reqs=self.cert_reqs)
- self.handle.settimeout(self._timeout)
- try:
- self.handle.connect(ip_port)
- except socket.error, e:
- if res is not res0[-1]:
- continue
- else:
- raise e
- break
- except socket.error, e:
- if self._unix_socket:
- message = 'Could not connect to secure socket %s' % self._unix_socket
- else:
- message = 'Could not connect to %s:%d' % (self.host, self.port)
- raise TTransportException(type=TTransportException.NOT_OPEN, message=message)
- if self.validate:
- self._validate_cert()
-
- def _validate_cert(self):
- """internal method to validate the peer's SSL certificate, and to check the
- commonName of the certificate to ensure it matches the hostname we
- used to make this connection. Does not support subjectAltName records
- in certificates.
-
- raises TTransportException if the certificate fails validation."""
- cert = self.handle.getpeercert()
- self.peercert = cert
- if 'subject' not in cert:
- raise TTransportException(type=TTransportException.NOT_OPEN,
- message='No SSL certificate found from %s:%s' % (self.host, self.port))
- fields = cert['subject']
- for field in fields:
- # ensure structure we get back is what we expect
- if not isinstance(field, tuple):
- continue
- cert_pair = field[0]
- if len(cert_pair) < 2:
- continue
- cert_key, cert_value = cert_pair[0:2]
- if cert_key != 'commonName':
- continue
- certhost = cert_value
- if certhost == self.host:
- # success, cert commonName matches desired hostname
- self.is_valid = True
- return
- else:
- raise TTransportException(type=TTransportException.UNKNOWN,
- message='Host name we connected to "%s" doesn\'t match certificate provided commonName "%s"' % (self.host, certhost))
- raise TTransportException(type=TTransportException.UNKNOWN,
- message='Could not validate SSL certificate from host "%s". Cert=%s' % (self.host, cert))
-
-class TSSLServerSocket(TSocket.TServerSocket):
- """
- SSL implementation of TServerSocket
-
- This uses the ssl module's wrap_socket() method to provide SSL
- negotiated encryption.
- """
- SSL_VERSION = ssl.PROTOCOL_TLSv1
-
- def __init__(self, host=None, port=9090, certfile='cert.pem', unix_socket=None):
- """Initialize a TSSLServerSocket
-
- @param certfile: The filename of the server certificate file, defaults to cert.pem
- @type certfile: str
- @param host: The hostname or IP to bind the listen socket to, i.e. 'localhost' for only allowing
- local network connections. Pass None to bind to all interfaces.
- @type host: str
- @param port: The port to listen on for inbound connections.
- @type port: int
- """
- self.setCertfile(certfile)
- TSocket.TServerSocket.__init__(self, host, port)
-
- def setCertfile(self, certfile):
- """Set or change the server certificate file used to wrap new connections.
-
- @param certfile: The filename of the server certificate, i.e. '/etc/certs/server.pem'
- @type certfile: str
-
- Raises an IOError exception if the certfile is not present or unreadable.
- """
- if not os.access(certfile, os.R_OK):
- raise IOError('No such certfile found: %s' % (certfile))
- self.certfile = certfile
-
- def accept(self):
- plain_client, addr = self.handle.accept()
- try:
- client = ssl.wrap_socket(plain_client, certfile=self.certfile,
- server_side=True, ssl_version=self.SSL_VERSION)
- except ssl.SSLError, ssl_exc:
- # failed handshake/ssl wrap, close socket to client
- plain_client.close()
- # raise ssl_exc
- # We can't raise the exception, because it kills most TServer derived serve()
- # methods.
- # Instead, return None, and let the TServer instance deal with it in
- # other exception handling. (but TSimpleServer dies anyway)
- return None
- result = TSocket.TSocket()
- result.setHandle(client)
- return result