Skip to content

Commit

Permalink
Merge pull request #13 from SlavikMIPT/develop
Browse files Browse the repository at this point in the history
variable chat_id is disabled
  • Loading branch information
SlavikMIPT committed Jun 17, 2019
2 parents 469f036 + d7204f8 commit 7abfcf5
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 25 deletions.
15 changes: 7 additions & 8 deletions dedupfs/dedupfs.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

#!/usr/bin/python

# Documentation. {{{1
Expand Down Expand Up @@ -66,7 +65,7 @@

from subprocess import Popen, PIPE

chat_id = 12345
# chat_id = 709766994
def main(): # {{{1
"""
This function enables using dedupfs.py as a shell script that creates FUSE
Expand Down Expand Up @@ -801,7 +800,7 @@ def __write_blocks(self, inode, buf, apparent_size): # {{{3
row = self.conn.execute('SELECT id FROM hashes WHERE hash = ?', (encoded_digest,)).fetchone()
if row:
hash_id = row[0]
existing_block = self.decompress(self.__get_block_from_telegram(str(chat_id), digest.encode('hex')))
existing_block = self.decompress(self.__get_block_from_telegram(digest.encode('hex')))
# Check for hash collisions.
if new_block != existing_block:
# Found a hash collision: dump debugging info and exit.
Expand All @@ -821,7 +820,7 @@ def __write_blocks(self, inode, buf, apparent_size): # {{{3
self.conn.execute('INSERT INTO "index" (inode, hash_id, block_nr) VALUES (?, ?, ?)',
(inode, hash_id, block_nr))
else:
process = Popen(["python3.6", "download_service.py", "upload", str(chat_id), digest.encode('hex')], stdin=PIPE,
process = Popen(["python3.6", "download_service.py", "upload", digest.encode('hex')], stdin=PIPE,
bufsize=-1)
process.stdin.write(self.compress(new_block))
process.stdin.close()
Expand Down Expand Up @@ -883,7 +882,7 @@ def __remove(self, path, check_empty=False): # {{{3

def __verify_write(self, block, digest, block_nr, inode): # {{{3
if self.verify_writes:
saved_value = self.decompress(self.__get_block_from_telegram(str(chat_id), digest.encode('hex')))
saved_value = self.decompress(self.__get_block_from_telegram(digest.encode('hex')))
if saved_value != block:
# The data block was corrupted when it was written or read.
dumpfile_corruption = '/tmp/dedupfs-corruption-%i' % time.time()
Expand Down Expand Up @@ -1169,9 +1168,9 @@ def __rollback_changes(self, nested=False): # {{{3
self.logger.info('Rolling back changes')
self.conn.rollback()

def __get_block_from_telegram(self, chat_id, digest):
def __get_block_from_telegram(self, digest):
buf = tempfile.NamedTemporaryFile()
process = Popen(["python3.6", "download_service.py", "download", str(chat_id), str(digest)], stdout=buf,
process = Popen(["python3.6", "download_service.py", "download", str(digest)], stdout=buf,
bufsize=-1, shell=False)
process.wait()
buf.seek(0)
Expand All @@ -1192,7 +1191,7 @@ def __get_file_buffer(self, path): # {{{3
for row in self.conn.execute(query, (inode,)).fetchall():
# TODO Make the file system more robust against failure by doing
# something sensible when self.blocks.has_key(digest) is false.
buf.write(self.decompress(self.__get_block_from_telegram(str(chat_id),str(row[0]))))
buf.write(self.decompress(self.__get_block_from_telegram(str(row[0]))))
self.buffers[path] = buf
return buf

Expand Down
33 changes: 16 additions & 17 deletions download_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,15 +84,17 @@ def on_upload_progress(send_bytes, total_bytes):
return 0

#
def download_block(chat_id, hash_uid):
def download_block(hash_uid,chat_id=None):
try:
hash_uid = str(hash_uid)
chat_id = str(chat_id)
if chat_id:
chat_id = str(chat_id)
chat_id = int(chat_id) if chat_id.isdigit() else chat_id
os.chdir(path_home)
if not client.is_connected():
client.start()
chat_id = int(chat_id) if chat_id.isdigit() else chat_id
entity = client.get_entity(chat_id)

entity = client.get_entity(client.get_me())
messages = client.get_messages(entity, limit=40,search=hash_uid)
for i in range(len(messages)):
msg = messages[i]
Expand All @@ -109,15 +111,16 @@ def download_block(chat_id, hash_uid):
client.disconnect()


def upload_block(bytesin, chat_id, hash_uid):
def upload_block(bytesin, hash_uid,chat_id=None):
try:
hash_uid = str(hash_uid)
chat_id = str(chat_id)
if chat_id:
chat_id = str(chat_id)
chat_id = int(chat_id) if chat_id.isdigit() else chat_id
os.chdir(path_home)
if not client.is_connected():
client.start()
chat_id = int(chat_id) if chat_id.isdigit() else chat_id
entity = client.get_entity(chat_id)
entity = client.get_entity(client.get_me())
message = client.send_file(entity,
file=bytesin,
caption=f'{hash_uid}',
Expand All @@ -138,15 +141,13 @@ def main(argv):
try:
service = str(argv[1])
if service == 'download':
chat_id = str(argv[2])
uid = str(argv[3])
download_block(chat_id=chat_id, hash_uid=uid)
uid = str(argv[2])
download_block(hash_uid=uid)
return 0
elif service == 'upload':
data = sys.stdin.buffer.read()
chat_id = str(argv[2])
uid = str(argv[3])
upload_block(bytesin=data, chat_id=chat_id, hash_uid=uid)
uid = str(argv[2])
upload_block(bytesin=data, hash_uid=uid)
return 0

except Exception as e:
Expand All @@ -160,6 +161,4 @@ def main(argv):
if __name__ == '__main__':
import sys

main(sys.argv[0:])

# download_block("slavikmr","d46610254a0afb93228832bdb6122d27e4bcb6c8")
main(sys.argv[0:])

0 comments on commit 7abfcf5

Please sign in to comment.