diff options
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/db_access/client_side_db.py | 33 | ||||
| -rwxr-xr-x | scripts/profiling/spam.py | 44 | 
2 files changed, 49 insertions, 28 deletions
| diff --git a/scripts/db_access/client_side_db.py b/scripts/db_access/client_side_db.py index f43b2f14..25eebfbe 100644 --- a/scripts/db_access/client_side_db.py +++ b/scripts/db_access/client_side_db.py @@ -106,18 +106,18 @@ def _get_soledad_info(username, provider, passphrase, basedir):          if choice != '':              host = hostnames[int(choice) - 1]      server_url = 'https://%s:%d/user-%s' % \ -              (soledad_hosts[host]['hostname'], soledad_hosts[host]['port'], -               auth[2]['id']) +        (soledad_hosts[host]['hostname'], soledad_hosts[host]['port'], +         auth[2]['id'])      # get provider ca certificate      ca_cert = requests.get('https://%s/ca.crt' % provider, verify=False).text      cert_file = os.path.join(basedir, 'ca.crt')      with open(cert_file, 'w') as f: -      f.write(ca_cert) +        f.write(ca_cert)      return auth[2]['id'], server_url, cert_file, auth[2]['token']  def _get_soledad_instance(uuid, passphrase, basedir, server_url, cert_file, -        token): +                          token):      # setup soledad info      logger.info('UUID is %s' % uuid)      logger.info('Server URL is %s' % server_url) @@ -138,8 +138,8 @@ def _get_soledad_instance(uuid, passphrase, basedir, server_url, cert_file,  def _get_keymanager_instance(username, provider, soledad, token, -        ca_cert_path=None, api_uri=None, api_version=None, uid=None, -        gpgbinary=None): +                             ca_cert_path=None, api_uri=None, api_version=None, +                             uid=None, gpgbinary=None):      return KeyManager(          "{username}@{provider}".format(username=username, provider=provider),          "http://uri", @@ -173,6 +173,9 @@ def _parse_args():          '--sync', '-s', action='store_true',          help='synchronize with the server replica')      parser.add_argument( +        '--repeat-sync', '-r', action='store_true', +        help='repeat synchronization until no new data is received') +    parser.add_argument(          '--export-public-key', help="export the public key to a file")      parser.add_argument(          '--export-private-key', help="export the private key to a file") @@ -209,7 +212,8 @@ def _get_basedir(args):  @inlineCallbacks  def _export_key(args, km, fname, private=False):      address = args.username + "@" + args.provider -    pkey = yield km.get_key(address, OpenPGPKey, private=private, fetch_remote=False) +    pkey = yield km.get_key( +        address, OpenPGPKey, private=private, fetch_remote=False)      with open(args.export_private_key, "w") as f:          f.write(pkey.key_data) @@ -240,7 +244,8 @@ def _main(soledad, km, args):          if args.create_docs:              for i in xrange(args.create_docs):                  t = time.time() -                logger.debug("Creating doc %d/%d..." % (i + 1, args.create_docs)) +                logger.debug( +                    "Creating doc %d/%d..." % (i + 1, args.create_docs))                  content = {                      'datetime': time.strftime(                          "%Y-%m-%d %H:%M:%S", time.gmtime(t)), @@ -251,6 +256,12 @@ def _main(soledad, km, args):                  yield soledad.create_doc(content)          if args.sync:              yield soledad.sync() +        if args.repeat_sync: +            old_gen = 0 +            new_gen = yield soledad.sync() +            while old_gen != new_gen: +                old_gen = new_gen +                new_gen = yield soledad.sync()          if args.get_all_docs:              yield _get_all_docs(soledad)          if args.export_private_key: @@ -258,7 +269,8 @@ def _main(soledad, km, args):          if args.export_public_key:              yield _export_key(args, km, args.expoert_public_key, private=False)          if args.export_incoming_messages: -            yield _export_incoming_messages(soledad, args.export_incoming_messages) +            yield _export_incoming_messages( +                soledad, args.export_incoming_messages)      except Exception as e:          logger.error(e)      finally: @@ -274,7 +286,8 @@ if __name__ == '__main__':      if not args.use_auth_data:          # get auth data from server          uuid, server_url, cert_file, token = \ -            _get_soledad_info(args.username, args.provider, passphrase, basedir) +            _get_soledad_info( +                args.username, args.provider, passphrase, basedir)      else:          # load auth data from file          with open(args.use_auth_data) as f: diff --git a/scripts/profiling/spam.py b/scripts/profiling/spam.py index 3f8d5207..76a5ed97 100755 --- a/scripts/profiling/spam.py +++ b/scripts/profiling/spam.py @@ -7,12 +7,12 @@ import string  import smtplib  import threading  import logging +import dns.resolver  from argparse import ArgumentParser -SMTP_HOST = 'chipmonk.cdev.bitmask.net' -SMTP_PORT = 465 +SMTP_DEFAULT_PORT = 465  NUMBER_OF_THREADS = 20 @@ -20,7 +20,7 @@ logger = logging.getLogger(__name__)  LOG_FORMAT = '%(asctime)s %(message)s' -def _send_email(host, port, subject, to_addr, from_addr, body_text): +def _send_email(server, port, subject, to_addr, from_addr, body_text):      """      Send an email      """ @@ -32,12 +32,12 @@ def _send_email(host, port, subject, to_addr, from_addr, body_text):              body_text              ), "\r\n")      logger.debug("setting up smtp...") -    server = smtplib.SMTP_SSL(host, port) +    smtp = smtplib.SMTP_SSL(server, port)      logger.info(          "sending message: (%s, %s, %s, %i)" -        % (from_addr, to_addr, host, port)) -    server.sendmail(from_addr, [to_addr], body) -    server.quit() +        % (from_addr, to_addr, server, port)) +    smtp.sendmail(from_addr, [to_addr], body) +    smtp.quit()  def _parse_args(): @@ -49,10 +49,10 @@ def _parse_args():          'number_of_messages', type=int,          help='The amount of messages email address to spam')      parser.add_argument( -        '--server', '-s', default=SMTP_HOST, +        '--server', '-s',          help='The SMTP server to use')      parser.add_argument( -        '--port', '-p', default=SMTP_PORT, +        '--port', '-p', default=SMTP_DEFAULT_PORT,          help='The SMTP port to use')      parser.add_argument(          '--threads', '-t', default=NUMBER_OF_THREADS, @@ -65,11 +65,11 @@ def _parse_args():  class EmailSenderThread(threading.Thread): -    def __init__(self, host, port, subject, to_addr, from_addr, body_text, -            finished_fun): +    def __init__(self, server, port, subject, to_addr, from_addr, body_text, +                 finished_fun):          threading.Thread.__init__(self)          logger.debug("initilizing thread...") -        self._host = host +        self._server = server          self._port = port          self._subject = subject          self._to_addr = to_addr @@ -80,16 +80,16 @@ class EmailSenderThread(threading.Thread):      def run(self):          logger.debug("running thread...")          _send_email( -            self._host, self._port, self._subject, self._to_addr, +            self._server, self._port, self._subject, self._to_addr,              self._from_addr, self._body_text)          self._finished_fun() -def _launch_email_thread(host, port, subject, to_addr, from_addr, body_text, -        finished_fun): +def _launch_email_thread(server, port, subject, to_addr, from_addr, body_text, +                         finished_fun):      logger.debug("will launch email thread...")      thread = EmailSenderThread( -        host, port, subject, to_addr, from_addr, body_text, finished_fun) +        server, port, subject, to_addr, from_addr, body_text, finished_fun)      thread.start()      return thread @@ -107,7 +107,7 @@ class FinishedThreads(object):  def _send_messages(args): -    host = args.server +    server = args.server      port = args.port      subject = "Message from Soledad script"      to_addr = args.target_address @@ -121,6 +121,14 @@ def _send_messages(args):          level = logging.INFO      logging.basicConfig(format=LOG_FORMAT, level=level) +    # get MX configuration +    if not server: +        logger.info("Resolving MX server...") +        _, domain = to_addr.split("@", 1) +        result = dns.resolver.query(domain, "MX") +        server = result[0].exchange.to_text() +        logger.info("MX server is: %s" % server) +      semaphore = threading.Semaphore(args.threads)      threads = []      finished_threads = FinishedThreads() @@ -133,7 +141,7 @@ def _send_messages(args):          semaphore.acquire()          threads.append(              _launch_email_thread( -               host, port, subject, to_addr, from_addr, body_text, +               server, port, subject, to_addr, from_addr, body_text,                 _finished_fun))      for t in threads: | 
