def enableUser(): email = sys.argv[1] ploud_config.initializeConfig() dsn = PLOUD.dsn models.initialize_sql(dsn) config = Configurator() config.manager.push({'registry': config.registry, 'request': None}) conn = ploud_config.PLOUD_POOL.getconn() cursor = conn.cursor() cursor.execute("SELECT email FROM waitinglist " "WHERE completed = %s and email=%s",(False,email)) row = cursor.fetchone() if row is None: print "Can't find email: %s"%email return transaction.begin() password = ''.join( [random.choice(ALLOWED_SITE_NAME_CHARS) for i in range(8)]) user = models.User(email, password) user.type = 0 token = user.token ptah.get_session().add(user) print email, token signup.send_activation(email, token) cursor.execute("UPDATE waitinglist SET completed = %s WHERE email=%s", (True, email)) cursor.close() conn.commit() transaction.commit()
def waitingList(): ploud_config.initializeConfig() try: srch = sys.argv[1] except: srch = "" conn = ploud_config.PLOUD_POOL.getconn() cursor = conn.cursor() if not srch: cursor.execute("SELECT email, requested FROM waitinglist WHERE completed = FALSE ORDER BY id") else: cursor.execute( "SELECT email, requested FROM waitinglist " "WHERE email LIKE %s and completed = FALSE ORDER by id ", (srch,), ) rows = cursor.fetchall() for row in rows: print "%s: %s" % row print "Total found: %s" % len(rows) cursor.close() ploud_config.PLOUD_POOL.putconn(conn)
def maintenanceAction(): action = sys.argv[1] try: sid = int(sys.argv[2]) except: sid = None ploud_config.initializeConfig() conn = ploud_config.PLOUD_POOL.getconn() cursor = conn.cursor() if sid: cursor.execute("SELECT host FROM vhost WHERE id = %s", (sid,)) else: cursor.execute("SELECT host FROM vhost ORDER BY id") hosts = cursor.fetchall() if not hosts: print "No hosts found." return host = APACHE.host mn = Maintenance(host) for row in hosts: mn.execute(row[0], action) while not mn.stopThreads(True): pass print "Done"
def cleanupRemoved(): ploud_config.initializeConfig() conn = ploud_config.PLOUD_POOL.getconn() cursor = conn.cursor() cursor.execute('SELECT id, site_name FROM sites WHERE removed = TRUE ORDER by id') for sid, site_name in cursor.fetchall(): print 'Removeing %s(%s)...'%(sid, site_name), clients = ploud_config.CLIENTS_POOL.getconn() c = clients.cursor() for tb in ('blob_chunk', 'commit_lock', 'object_state'): try: c.execute('DROP TABLE ploud%s_%s CASCADE'%(sid, tb)) except: pass try: c.execute('DROP SEQUENCE ploud%s_zoid_seq'%sid) except: pass c.close() clients.commit() ploud_config.CLIENTS_POOL.putconn(clients) cursor.execute("DELETE FROM sites WHERE id = %s",(sid,)) print ' removed' cursor.close() conn.commit() ploud_config.PLOUD_POOL.putconn(conn)
def userInfo(): ploud_config.initializeConfig() id = sys.argv[1] conn = ploud_config.PLOUD_POOL.getconn() cursor = conn.cursor() cursor.execute("SELECT * FROM users WHERE id = %s", (id,)) rec = cursor.fetchone() if rec is None: print "User id is not found." return print "User:"******"Email:", rec[1] print "Joined:", rec[3] print "Policy:", rec[-1] policy = POLICIES[rec[-1]] cursor.execute( "SELECT id,site_name,typeof,size,bwin+bwout,disabled,last_accessed FROM sites " "WHERE user_id = %s and removed = FALSE order by site_name", (id,), ) data = cursor.fetchall() print "Number of sites:", len(data) size = 0 bandwidth = 0 for site in data: size += site[3] bandwidth += site[4] print "Database size: %0.2fMb (%0.1f%%)" % (size / 1048576.0, size / (policy.dbsize / 100.0)) print "Bandwidth: %0.2fMb (%0.1f%%)" % (bandwidth / 1048576.0, bandwidth / (policy.bandwidth / 100.0)) print "--------------------------------------------------" for site in data: print "Site id/type: %s/%s" % (site[0], site[2]) print "Site name:", site[1] print "Last accessed:", site[6] print "Disabled:", site[5] print "Database size: %0.2fMb (%0.1f%%)" % (site[3] / 1048576.0, site[3] / (size / 100.0)) print "Bandwidth: %0.2fMb (%0.1f%%)" % (site[4] / 1048576.0, site[4] / (bandwidth / 100.0)) print "=================================================" cursor.close() ploud_config.PLOUD_POOL.putconn(conn)
def listSites(): ploud_config.initializeConfig() try: srch = sys.argv[1] except: srch = '' conn = ploud_config.PLOUD_POOL.getconn() cursor = conn.cursor() cursor.execute("SELECT id, email FROM users") users = dict([(id, email) for id, email in cursor.fetchall()]) if not srch: cursor.execute("SELECT id, site_name, user_id, bwin+bwout, size, last_accessed " "FROM sites ORDER BY id") else: cursor.execute("SELECT id, site_name, user_id, bwin+bwout, size, last_accessed " "FROM sites WHERE site_name LIKE %s ORDER BY id",(srch,)) bwsize = 0 dbsize = 0 total = 0 for id, site_name, user_id, bw, size, last_accessed in cursor.fetchall(): total += 1 bwsize += bw dbsize += size cursor.execute("SELECT host FROM vhost WHERE id = %s",(id,)) vhosts = [row[0] for row in cursor.fetchall()] print '%0.5d: '%id, print 'db: %3.2f Mb | '%(size/1048576.0), print 'bw: %0.2f Mb | '%(bw/1048576.0), try: print ' %s | '%last_accessed.strftime("%d/%m/%y %H:%M"), except: print ' date is not set | ', print '%s | %s | '%(users[user_id], site_name), print ', '.join(vhosts) print "Total: %s"%total print 'Bandwidth:', '%0.2f Mb'%(bwsize/1048576.0) print 'Database size:', '%0.2f Mb'%(dbsize/1048576.0) cursor.close() ploud_config.PLOUD_POOL.putconn(conn)
def enableUser(): email = sys.argv[1] ploud_config.initializeConfig() conn = ploud_config.PLOUD_POOL.getconn() cursor = conn.cursor() cursor.execute("SELECT email FROM waitinglist " "WHERE completed = %s and email=%s", (False, email)) row = cursor.fetchone() if row is None: print "Can't find email: %s" % email return print row cursor.close() conn.commit()
def setUp(test): config.loadPackage('ploud.frontend') testing.setUpConfig(test) testing.setUpTestAsModule(test, 'ploud.TESTS') ploud.TESTS = sys.modules['ploud.TESTS'] initialize_sql('sqlite://') smtplib.SMTP = SMTP global configFile hnd, configFile = tempfile.mkstemp() f = open(configFile, 'wb') f.write("""[frontend]\nregistration=true""") f.close() ploud_config.initializeConfig(configFile, True) pyramid_config = Configurator() pyramid_config.begin()
def listUsers(): ploud_config.initializeConfig() try: srch = sys.argv[1] except: srch = "" conn = ploud_config.PLOUD_POOL.getconn() cursor = conn.cursor() if not srch: cursor.execute("SELECT id, email FROM users ORDER BY id") else: cursor.execute("SELECT id, email FROM users WHERE email LIKE %s ORDER BY id", (srch,)) rows = cursor.fetchall() for row in rows: print "%s: %s" % row print "Total found: %s" % len(rows) cursor.close() ploud_config.PLOUD_POOL.putconn(conn)
def pack(): import ZODB from relstorage.options import Options from relstorage.storage import RelStorage from ploud.relstorage import local, PostgreSQLAdapter ploud_config.initializeConfig() conn = ploud_config.PLOUD_POOL.getconn() cursor = conn.cursor() clients_conn = ploud_config.CLIENTS_POOL.getconn() clients_cursor = clients_conn.cursor() options = Options( keep_history = False, blob_dir = '/tmp/ploud_pack_blobs', shared_blob_dir = False) dsn = "dbname=%(database)s user=%(user)s password=%(password)s "\ "host=%(host)s "%ploud_config.CLIENTS_DSN try: shutil.rmtree('/tmp/ploud_pack_blobs') except: pass ids = [] if (sys.argv) > 1: for id in sys.argv[1:]: try: ids.append(int(id)) except: pass if ids: force = 1 cursor.execute("SELECT id,site_name,packed,packed_size,size FROM sites WHERE id in (%s) ORDER BY id"%(str(ids)[1:-1])) else: force = 0 cursor.execute("SELECT id,site_name,packed,packed_size,size FROM sites ORDER BY id") for row in cursor.fetchall(): uid, name, packed, packed_size, size = row local.prefix = 'ploud%s_'%uid # pack if db size is more than 115% of packed db size if not force and packed_size and (size/(packed_size/100.0) < 115): print "Skiping '%s' %s"%(name, uid) continue clients_cursor.execute("DELETE FROM object_ref") clients_cursor.execute("DELETE FROM object_refs_added") clients_cursor.execute("DELETE FROM pack_object") clients_cursor.execute("COMMIT") print "Packing '%s' %s:"%(name, uid), t1 = datetime.now() pgadapter = PostgreSQLAdapter( ploud_config.CLIENTS_POOL, ploud_config.CLIENTS_POOL, dsn, options=options) storage = RelStorage(pgadapter, options=options) db = ZODB.DB(storage, database_name='main', cache_size=15000, cache_byte_size=10485760) db.pack() db.close() storage.release() del storage del db del pgadapter psize = dbsize.dbsize(clients_cursor, uid) print "size: %0.2fmb was %0.2fmb %s"%( psize/(1024*1024.0), size/(1024*1024.0), str(datetime.now()-t1)[:-5]) cursor.execute("UPDATE sites SET packed=%s, packed_size=%s, size=%s WHERE id=%s", (datetime.now(), psize, psize, uid)) cursor.execute('commit') try: shutil.rmtree('/tmp/ploud_pack_blobs') except: pass clients_cursor.close() ploud_config.CLIENTS_POOL.putconn(clients_conn) cursor.close() ploud_config.PLOUD_POOL.putconn(conn)