made all cache files be saved in data/
[p2pool.git] / p2pool / main.py
index 18b850f..dd32c60 100644 (file)
@@ -8,7 +8,6 @@ import datetime
 import itertools
 import os
 import random
-import sqlite3
 import struct
 import sys
 import time
@@ -23,7 +22,7 @@ from nattraverso import portmapper, ipdiscover
 
 import bitcoin.p2p as bitcoin_p2p, bitcoin.getwork as bitcoin_getwork, bitcoin.data as bitcoin_data
 from bitcoin import worker_interface
-from util import db, expiring_dict, jsonrpc, variable, deferral, math
+from util import expiring_dict, jsonrpc, variable, deferral, math
 from . import p2p, skiplists, networks
 import p2pool, p2pool.data as p2pool_data
 
@@ -52,7 +51,7 @@ def get_payout_script2(bitcoind, net):
     defer.returnValue(bitcoin_data.pubkey_to_script2(pubkey))
 
 @defer.inlineCallbacks
-def main(args, net):
+def main(args, net, datadir_path):
     try:
         print 'p2pool (version %s)' % (p2pool.__version__,)
         print
@@ -98,7 +97,7 @@ def main(args, net):
         
         tracker = p2pool_data.OkayTracker(net)
         shared_share_hashes = set()
-        ss = p2pool_data.ShareStore(os.path.join(os.path.dirname(sys.argv[0]), net.NAME + '_shares.'), net)
+        ss = p2pool_data.ShareStore(os.path.join(datadir_path, 'shares.'), net)
         known_verified = set()
         print "Loading shares..."
         for i, (mode, contents) in enumerate(ss.get_shares()):
@@ -314,11 +313,21 @@ def main(args, net):
         if net.NAME == 'litecoin':
             nodes.add(((yield reactor.resolve('liteco.in')), net.P2P_PORT))
         
+        addrs = {}
+        try:
+            addrs = dict(eval(x) for x in open(os.path.join(datadir_path, 'addrs.txt')))
+        except:
+            print "error reading addrs"
+        
+        def save_addrs():
+            open(os.path.join(datadir_path, 'addrs.txt'), 'w').writelines(repr(x) + '\n' for x in addrs.iteritems())
+        task.LoopingCall(save_addrs).start(60)
+        
         p2p_node = p2p.Node(
             current_work=current_work,
             port=args.p2pool_port,
             net=net,
-            addr_store=db.SQLiteDict(sqlite3.connect(os.path.join(os.path.dirname(sys.argv[0]), 'addrs.dat'), isolation_level=None), net.NAME),
+            addr_store=addrs,
             preferred_addrs=set(map(parse, args.p2pool_nodes)) | nodes,
         )
         p2p_node.handle_shares = p2p_shares
@@ -754,8 +763,12 @@ def run():
     
     net = networks.nets[args.net_name + ('_testnet' if args.testnet else '')]
     
+    datadir_path = os.path.join(os.path.dirname(sys.argv[0]), 'data', net.NAME)
+    if not os.path.exists(datadir_path):
+        os.makedirs(datadir_path)
+    
     if args.logfile is None:
-        args.logfile = os.path.join(os.path.dirname(sys.argv[0]), net.NAME + '.log')
+        args.logfile = os.path.join(datadir_path, 'log')
     
     class LogFile(object):
         def __init__(self, filename):
@@ -840,5 +853,5 @@ def run():
     if (args.merged_url is None) ^ (args.merged_userpass is None):
         parser.error('must specify --merged-url and --merged-userpass')
     
-    reactor.callWhenRunning(main, args, net)
+    reactor.callWhenRunning(main, args, net, datadir_path)
     reactor.run()