Skip to content

Commit b87f7e4

Browse files
committed
add rotating ea desktop token
1 parent 673f196 commit b87f7e4

File tree

2 files changed

+64
-0
lines changed

2 files changed

+64
-0
lines changed

src/connectors/mongo.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ pub struct BackendCookie {
5959
pub sid: String,
6060
pub remid: String,
6161
pub ea_access_token: Option<String>,
62+
pub valid: Option<bool>,
6263
}
6364

6465
impl From<BackendCookie> for Cookie {
@@ -185,6 +186,7 @@ impl MongoClient {
185186
sid: cookie.sid.clone(),
186187
remid: cookie.remid.clone(),
187188
ea_access_token: Some(ea_access_token.clone()),
189+
valid: Some(true),
188190
};
189191
let options = ReplaceOptions::builder().upsert(true).build();
190192
self.backend_cookies
@@ -204,6 +206,22 @@ impl MongoClient {
204206
))
205207
}
206208

209+
pub async fn get_cookies_by_id(&mut self, id: &str) -> anyhow::Result<(Cookie, String, bool)> {
210+
let backend_cookie = match self
211+
.backend_cookies
212+
.find_one(bson::doc! {"_id": id})
213+
.await?
214+
{
215+
Some(result) => result,
216+
None => anyhow::bail!("no cookie"),
217+
};
218+
Ok((
219+
backend_cookie.clone().into(),
220+
backend_cookie.ea_access_token.unwrap_or_default(),
221+
backend_cookie.valid.unwrap_or_default(),
222+
))
223+
}
224+
207225
pub async fn get_random_cookie(&mut self) -> anyhow::Result<Cookie> {
208226
let mut cookie_check = self
209227
.cookie_check

src/main.rs

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -392,6 +392,52 @@ async fn main() -> anyhow::Result<()> {
392392
atomic::Ordering::Relaxed,
393393
);
394394
} else {
395+
// rotating ea desktop token
396+
for i in 6..11 {
397+
let (mut ea_cookie, mut list_ea_access_token, valid) = match mongo_client
398+
.get_cookies_by_id(&format!("desktop-api{}", i))
399+
.await
400+
{
401+
Ok(result) => result,
402+
Err(e) => {
403+
log::warn!("Cookie failed, {}", e);
404+
(
405+
bf_sparta::cookie::Cookie {
406+
sid: "".to_string(),
407+
remid: "".to_string(),
408+
},
409+
"".to_string(),
410+
false,
411+
)
412+
}
413+
};
414+
if valid {
415+
match check_ea_desktop_session::get_session_info(list_ea_access_token).await {
416+
Ok(_) => {
417+
log::info!("ea desktop {}: Finished auth check!", i);
418+
}
419+
Err(e) => {
420+
log::error!("Failed kingston_grpc, auth_check reason: {:#?}", e);
421+
match ea_desktop_access_token(ea_cookie.clone()).await {
422+
Ok(res) => {
423+
(list_ea_access_token, ea_cookie) = res;
424+
mongo_client
425+
.push_new_cookies(
426+
&format!("desktop-api{}", i),
427+
&ea_cookie,
428+
list_ea_access_token.clone(),
429+
)
430+
.await?;
431+
}
432+
Err(e) => {
433+
log::error!("access_token for ea desktop failed: {:#?}", e)
434+
}
435+
};
436+
}
437+
};
438+
}
439+
}
440+
395441
let ten_mins = last_ran + chrono::Duration::minutes(10);
396442
log::info!(
397443
"Waiting {:#?} minutes before next run",

0 commit comments

Comments
 (0)