reikernx commited on
Commit
b483071
·
verified ·
1 Parent(s): 1a6e182

Update server.js

Browse files
Files changed (1) hide show
  1. server.js +96 -29
server.js CHANGED
@@ -45,7 +45,7 @@ async function getAuthenticatedPage() {
45
  return authenticatedPage;
46
  }
47
 
48
- // Login function
49
  async function performLogin() {
50
  if (isLoggedIn) return true;
51
 
@@ -53,6 +53,8 @@ async function performLogin() {
53
 
54
  try {
55
  console.log('Performing login...');
 
 
56
 
57
  // Navigate to login page
58
  await page.goto('https://getsms.cc/auth/login', {
@@ -60,53 +62,118 @@ async function performLogin() {
60
  timeout: 30000
61
  });
62
 
 
 
63
  // Wait for form to be visible
64
  await page.waitForSelector('form#login', { timeout: 10000 });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
65
 
66
- // Clear any existing input and fill credentials
67
- await page.click('input[name="mail"]', { clickCount: 3 });
68
- await page.type('input[name="mail"]', process.env.LOGIN_EMAIL, { delay: 100 });
69
- await new Promise(resolve => setTimeout(resolve, 500));
70
 
71
- await page.click('input[name="password"]', { clickCount: 3 });
72
- await page.type('input[name="password"]', process.env.LOGIN_PASSWORD, { delay: 100 });
73
  await new Promise(resolve => setTimeout(resolve, 1000));
74
 
75
- // Submit form and wait for navigation
76
- await Promise.all([
77
- page.waitForNavigation({ waitUntil: 'networkidle2', timeout: 15000 }),
78
- page.click('input[type="submit"]')
79
- ]);
 
 
80
 
81
- // Additional wait for any redirects
82
- await new Promise(resolve => setTimeout(resolve, 2000));
 
 
 
 
 
 
 
 
83
 
84
- // Check current URL and page content for login success
85
  const currentUrl = page.url();
86
- console.log('Current URL after login:', currentUrl);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
 
88
  // More comprehensive login success check
89
- const loginSuccess = await page.evaluate(() => {
90
  const url = window.location.href;
91
- const hasLogoutButton = document.querySelector('[href*="logout"]') !== null;
92
- const hasUserMenu = document.querySelector('.user-menu, .dropdown-toggle') !== null;
93
- const notOnLoginPage = !url.includes('/auth/login');
94
- const hasWelcomeText = document.body.innerText.toLowerCase().includes('welcome') ||
95
- document.body.innerText.toLowerCase().includes('dashboard');
 
 
 
 
 
 
 
 
96
 
97
- return notOnLoginPage || hasLogoutButton || hasUserMenu || hasWelcomeText;
 
 
 
 
 
 
 
98
  });
99
 
100
- if (loginSuccess && !currentUrl.includes('/auth/login')) {
 
 
101
  isLoggedIn = true;
102
- console.log('Login successful - authenticated session established');
103
  return true;
104
  } else {
105
- console.log('Login failed - still on login page or no auth indicators found');
106
 
107
- // Debug: Get page content to see what happened
108
- const pageText = await page.evaluate(() => document.body.innerText);
109
- console.log('Page content snippet:', pageText.substring(0, 500));
 
 
110
 
111
  return false;
112
  }
 
45
  return authenticatedPage;
46
  }
47
 
48
+ // Login function with extensive debugging
49
  async function performLogin() {
50
  if (isLoggedIn) return true;
51
 
 
53
 
54
  try {
55
  console.log('Performing login...');
56
+ console.log('Using email:', process.env.LOGIN_EMAIL ? 'Found' : 'Missing');
57
+ console.log('Using password:', process.env.LOGIN_PASSWORD ? 'Found' : 'Missing');
58
 
59
  // Navigate to login page
60
  await page.goto('https://getsms.cc/auth/login', {
 
62
  timeout: 30000
63
  });
64
 
65
+ console.log('Loaded login page');
66
+
67
  // Wait for form to be visible
68
  await page.waitForSelector('form#login', { timeout: 10000 });
69
+ console.log('Found login form');
70
+
71
+ // Take screenshot before login (for debugging)
72
+ // await page.screenshot({ path: 'before-login.png' });
73
+
74
+ // Clear and fill email field
75
+ await page.evaluate(() => {
76
+ const emailField = document.querySelector('input[name="mail"]');
77
+ if (emailField) emailField.value = '';
78
+ });
79
+ await page.focus('input[name="mail"]');
80
+ await page.type('input[name="mail"]', process.env.LOGIN_EMAIL, { delay: 50 });
81
+
82
+ // Clear and fill password field
83
+ await page.evaluate(() => {
84
+ const passwordField = document.querySelector('input[name="password"]');
85
+ if (passwordField) passwordField.value = '';
86
+ });
87
+ await page.focus('input[name="password"]');
88
+ await page.type('input[name="password"]', process.env.LOGIN_PASSWORD, { delay: 50 });
89
 
90
+ console.log('Filled login form');
 
 
 
91
 
92
+ // Wait a moment before submitting
 
93
  await new Promise(resolve => setTimeout(resolve, 1000));
94
 
95
+ // Submit form with different approach
96
+ await page.evaluate(() => {
97
+ const form = document.querySelector('form#login');
98
+ if (form) {
99
+ form.submit();
100
+ }
101
+ });
102
 
103
+ console.log('Submitted form, waiting for response...');
104
+
105
+ // Wait for either navigation or page update
106
+ try {
107
+ await page.waitForNavigation({ waitUntil: 'networkidle2', timeout: 15000 });
108
+ console.log('Navigation detected');
109
+ } catch (e) {
110
+ console.log('No navigation, checking for page updates...');
111
+ await new Promise(resolve => setTimeout(resolve, 3000));
112
+ }
113
 
 
114
  const currentUrl = page.url();
115
+ console.log('Current URL after login attempt:', currentUrl);
116
+
117
+ // Take screenshot after login (for debugging)
118
+ // await page.screenshot({ path: 'after-login.png' });
119
+
120
+ // Check for error messages on the page
121
+ const errorMessage = await page.evaluate(() => {
122
+ const errorElements = document.querySelectorAll('.alert-danger, .text-danger, .error, .alert-error');
123
+ for (let el of errorElements) {
124
+ if (el.textContent.trim()) {
125
+ return el.textContent.trim();
126
+ }
127
+ }
128
+ return null;
129
+ });
130
+
131
+ if (errorMessage) {
132
+ console.log('Login error message:', errorMessage);
133
+ return false;
134
+ }
135
 
136
  // More comprehensive login success check
137
+ const loginCheck = await page.evaluate(() => {
138
  const url = window.location.href;
139
+ const bodyText = document.body.innerText.toLowerCase();
140
+
141
+ // Check various indicators of successful login
142
+ const indicators = {
143
+ notOnLoginPage: !url.includes('/auth/login'),
144
+ hasLogoutLink: document.querySelector('[href*="logout"]') !== null,
145
+ hasUserDropdown: document.querySelector('.dropdown-toggle') !== null,
146
+ hasUserProfile: document.querySelector('.user-profile') !== null,
147
+ hasDashboard: bodyText.includes('dashboard'),
148
+ hasWelcome: bodyText.includes('welcome'),
149
+ hasMyAccount: bodyText.includes('my account'),
150
+ urlIndicatesSuccess: url.includes('/dashboard') || url.includes('/account') || url === 'https://getsms.cc/'
151
+ };
152
 
153
+ console.log('Login indicators:', indicators);
154
+
155
+ return {
156
+ success: Object.values(indicators).some(v => v),
157
+ indicators,
158
+ url,
159
+ pageTitle: document.title
160
+ };
161
  });
162
 
163
+ console.log('Login check result:', loginCheck);
164
+
165
+ if (loginCheck.success) {
166
  isLoggedIn = true;
167
+ console.log('Login successful - authenticated session established');
168
  return true;
169
  } else {
170
+ console.log('Login failed - no success indicators found');
171
 
172
+ // Get page content for debugging
173
+ const pageContent = await page.evaluate(() => {
174
+ return document.body.innerText.substring(0, 1000);
175
+ });
176
+ console.log('Page content after login:', pageContent);
177
 
178
  return false;
179
  }