summaryrefslogtreecommitdiffstats
path: root/tupkg
diff options
context:
space:
mode:
Diffstat (limited to 'tupkg')
-rwxr-xr-xtupkg/server/tupkgs23
1 files changed, 21 insertions, 2 deletions
diff --git a/tupkg/server/tupkgs b/tupkg/server/tupkgs
index 1aba7947..1c617077 100755
--- a/tupkg/server/tupkgs
+++ b/tupkg/server/tupkgs
@@ -27,15 +27,18 @@ import MySQLdb.connections
import ConfigParser
import getopt
import os.path
+import os
+import time
CACHEDIR = '/var/cache/tupkgs/'
+INCOMINGDIR = '/var/cache/tupkgs/incomplete/'
CONFIGFILE = '/etc/tupkgs.conf'
config = ConfigParser.ConfigParser()
class ClientFile:
def __init__(self, filename, actual_size, actual_md5):
- self.pathname = CACHEDIR + filename
+ self.pathname = INCOMINGDIR + filename
self.filename = filename
self.fd = open(self.pathname, "w+b")
self.actual_size = actual_size
@@ -57,6 +60,13 @@ class ClientFile:
self.fd.seek(cur)
self.md5 = md5sum.hexdigest()
+ def finishDownload(self):
+ self.fd.close();
+ newpathname = CACHEDIR + self.filename
+ os.rename(self.pathname, newpathname)
+ self.pathname = newpathname
+ self.fd = open(self.pathname, "a+b")
+
class ClientSocket(threading.Thread):
def __init__(self, sock, db, **other):
threading.Thread.__init__(self, *other)
@@ -142,6 +152,7 @@ class ClientSocket(threading.Thread):
i.fd.write(self.reliableRead(1024))
count += 1024
i.fd.flush()
+ i.finishDownload()
reply = {'numpkgs': len(self.files)}
for i, v in enumerate(self.files):
v.makeMd5()
@@ -246,6 +257,14 @@ def main(argv=None):
passwd=config.get('mysql', 'password'),
db=config.get('mysql', 'db'))
+ print "Verifying "+CACHEDIR+" and "+INCOMINGDIR+" exist"
+ if not os.path.isdir(CACHEDIR):
+ print "Creating "+CACHEDIR
+ os.mkdir(CACHEDIR, 0755)
+ if not os.path.isdir(INCOMINGDIR):
+ print "Creating "+INCOMINGDIR
+ os.mkdir(INCOMINGDIR, 0755)
+
print "Starting ServerSocket"
servsock = ServerSocket(dbconn, confdict['port'], confdict['maxqueue'])
servsock.start()
@@ -253,7 +272,7 @@ def main(argv=None):
try:
while running:
# Maybe do stuff here?
- pass
+ time.sleep(10)
except KeyboardInterrupt:
running = 0