2014-12-29 17:08:13 +00:00
|
|
|
#!/bin/python
|
|
|
|
#
|
|
|
|
# Cryptonote tipbot
|
|
|
|
# Copyright 2014 moneromooo
|
|
|
|
# Inspired by "Simple Python IRC bot" by berend
|
|
|
|
#
|
|
|
|
# The Cryptonote tipbot is free software; you can redistribute it and/or
|
|
|
|
# modify it under the terms of the GNU General Public License as published
|
|
|
|
# by the Free Software Foundation; either version 2, or (at your option)
|
|
|
|
# any later version.
|
|
|
|
#
|
|
|
|
|
|
|
|
import redis
|
|
|
|
from tipbot.log import log_error, log_warn, log_info, log_log
|
|
|
|
|
|
|
|
redisdb = None
|
|
|
|
|
|
|
|
def connect_to_redis(host,port):
|
|
|
|
log_info('Connecting to Redis at %s:%u' % (host, port))
|
|
|
|
try:
|
|
|
|
global redisdb
|
|
|
|
redisdb = redis.Redis(host=host,port=port)
|
|
|
|
return redisdb
|
|
|
|
except Exception, e:
|
|
|
|
log_error( 'Error initializing redis: %s' % str(e))
|
|
|
|
exit()
|
|
|
|
|
|
|
|
def redis_pipeline():
|
|
|
|
return redisdb.pipeline()
|
|
|
|
|
2015-01-11 22:32:18 +00:00
|
|
|
def redis_exists(k):
|
|
|
|
return redisdb.exists(k)
|
|
|
|
|
2014-12-29 17:08:13 +00:00
|
|
|
def redis_get(k):
|
|
|
|
return redisdb.get(k)
|
|
|
|
|
|
|
|
def redis_set(k,v):
|
|
|
|
return redisdb.set(k,v)
|
|
|
|
|
2014-12-30 22:48:44 +00:00
|
|
|
def redis_hexists(t,k):
|
|
|
|
return redisdb.hexists(t,k)
|
|
|
|
|
2014-12-29 17:08:13 +00:00
|
|
|
def redis_hget(t,k):
|
|
|
|
return redisdb.hget(t,k)
|
|
|
|
|
|
|
|
def redis_hgetall(t):
|
|
|
|
return redisdb.hgetall(t)
|
|
|
|
|
|
|
|
def redis_hset(t,k,v):
|
|
|
|
return redisdb.hset(t,k,v)
|
|
|
|
|
|
|
|
def redis_hincrby(t,k,v):
|
|
|
|
return redisdb.hincrby(t,k,v)
|
|
|
|
|
2015-01-13 23:19:05 +00:00
|
|
|
def redis_hdel(t,k):
|
|
|
|
return redisdb.hdel(t,k)
|
|
|
|
|
2015-01-09 14:43:01 +00:00
|
|
|
def redis_incrby(k,v):
|
|
|
|
return redisdb.incrby(k,v)
|
|
|
|
|
2015-01-12 21:35:24 +00:00
|
|
|
def redis_sadd(k,v):
|
|
|
|
return redisdb.sadd(k,v)
|
|
|
|
|
|
|
|
def redis_smembers(k):
|
|
|
|
return redisdb.smembers(k)
|
|
|
|
|
2015-01-25 23:14:36 +00:00
|
|
|
def redis_sismember(k,v):
|
|
|
|
return redisdb.sismember(k,v)
|
|
|
|
|
2015-01-17 00:06:01 +00:00
|
|
|
def redis_rpush(k,v):
|
|
|
|
return redisdb.rpush(k,v)
|
|
|
|
|
|
|
|
def redis_lpop(k):
|
|
|
|
return redisdb.lpop(k)
|
|
|
|
|
2015-02-05 18:30:39 +00:00
|
|
|
def redis_llen(k):
|
|
|
|
return redisdb.llen(k)
|
|
|
|
|
2015-01-17 00:06:01 +00:00
|
|
|
def redis_lindex(k,n):
|
|
|
|
return redisdb.lindex(k,n)
|
|
|
|
|
2015-02-05 18:30:39 +00:00
|
|
|
def redis_lset(k,i,v):
|
|
|
|
return redisdb.lset(k,i,v)
|
|
|
|
|
2015-01-19 23:46:31 +00:00
|
|
|
def redis_zincrby(t,k,s):
|
|
|
|
return redisdb.zincrby(t,k,s)
|
|
|
|
|
2015-01-22 18:20:35 +00:00
|
|
|
def redis_zscore(t,k):
|
|
|
|
return redisdb.zscore(t,k)
|
|
|
|
|
|
|
|
def redis_zrangebylex(t,x0,x1):
|
|
|
|
return redisdb.zrangebylex(t,x0,x1)
|
|
|
|
|
|
|
|
def redis_keys(s):
|
|
|
|
return redisdb.keys(s)
|
|
|
|
|
2015-01-11 22:32:18 +00:00
|
|
|
def redis_delete(k):
|
|
|
|
return redisdb.delete(k)
|
|
|
|
|
2014-12-29 17:08:13 +00:00
|
|
|
|
2015-01-09 23:14:28 +00:00
|
|
|
def CompatibilityCheck():
|
|
|
|
try:
|
|
|
|
r = redis.Redis()
|
|
|
|
if not r.pipeline: raise RuntimeError('pipeline call not found')
|
|
|
|
p = r.pipeline()
|
2015-01-11 22:32:18 +00:00
|
|
|
if not p.exists: raise RuntimeError('exists call not found')
|
2015-01-09 23:14:28 +00:00
|
|
|
if not p.get: raise RuntimeError('get call not found')
|
|
|
|
if not p.set: raise RuntimeError('set call not found')
|
|
|
|
if not p.hexists: raise RuntimeError('hexists call not found')
|
|
|
|
if not p.hget: raise RuntimeError('hget call not found')
|
|
|
|
if not p.hgetall: raise RuntimeError('hgetall call not found')
|
|
|
|
if not p.hset: raise RuntimeError('hset call not found')
|
|
|
|
if not p.hincrby: raise RuntimeError('hincrby call not found')
|
2015-01-13 23:19:05 +00:00
|
|
|
if not p.hdel: raise RuntimeError('hdel call not found')
|
2015-01-09 23:14:28 +00:00
|
|
|
if not p.incrby: raise RuntimeError('incrby call not found')
|
2015-01-12 21:35:24 +00:00
|
|
|
if not p.sadd: raise RuntimeError('sadd call not found')
|
|
|
|
if not p.smembers: raise RuntimeError('smembers call not found')
|
2015-01-25 23:14:36 +00:00
|
|
|
if not p.sismember: raise RuntimeError('sismember call not found')
|
2015-01-17 00:06:01 +00:00
|
|
|
if not p.rpush: raise RuntimeError('rpush call not found')
|
|
|
|
if not p.lpop: raise RuntimeError('lpop call not found')
|
2015-02-05 18:30:39 +00:00
|
|
|
if not p.llen: raise RuntimeError('llen call not found')
|
2015-01-17 00:06:01 +00:00
|
|
|
if not p.lindex: raise RuntimeError('lindex call not found')
|
2015-02-05 18:30:39 +00:00
|
|
|
if not p.lset: raise RuntimeError('lset call not found')
|
2015-01-19 23:46:31 +00:00
|
|
|
if not p.zincrby: raise RuntimeError('zincrby call not found')
|
2015-01-22 18:20:35 +00:00
|
|
|
if not p.zscore: raise RuntimeError('zscore call not found')
|
|
|
|
if not p.zrangebylex: raise RuntimeError('zrangebylex call not found')
|
|
|
|
if not p.keys: raise RuntimeError('keys call not found')
|
2015-01-09 23:14:28 +00:00
|
|
|
if not p.execute: raise RuntimeError('execute call not found')
|
2015-01-11 22:32:18 +00:00
|
|
|
if not p.delete: raise RuntimeError('delete call not found')
|
2015-01-09 23:14:28 +00:00
|
|
|
except Exception,e:
|
|
|
|
log_error('Error checking redis compatibility: %s' % str(e))
|
|
|
|
exit(1)
|
|
|
|
|
|
|
|
CompatibilityCheck()
|
|
|
|
|