diff --git a/src/main/java/ctbrec/sites/bonga/BongaCamsHttpClient.java b/src/main/java/ctbrec/sites/bonga/BongaCamsHttpClient.java index 26e08381..80f4c303 100644 --- a/src/main/java/ctbrec/sites/bonga/BongaCamsHttpClient.java +++ b/src/main/java/ctbrec/sites/bonga/BongaCamsHttpClient.java @@ -36,6 +36,13 @@ public class BongaCamsHttpClient extends HttpClient { return true; } + boolean cookiesWorked = checkLoginSuccess(); + if(cookiesWorked) { + loggedIn = true; + LOG.debug("Logged in with cookies"); + return true; + } + BlockingQueue queue = new LinkedBlockingQueue<>(); Runnable showDialog = () -> { diff --git a/src/main/java/ctbrec/sites/cam4/Cam4HttpClient.java b/src/main/java/ctbrec/sites/cam4/Cam4HttpClient.java index f6434401..968d1de4 100644 --- a/src/main/java/ctbrec/sites/cam4/Cam4HttpClient.java +++ b/src/main/java/ctbrec/sites/cam4/Cam4HttpClient.java @@ -33,6 +33,13 @@ public class Cam4HttpClient extends HttpClient { return true; } + boolean cookiesWorked = checkLoginSuccess(); + if(cookiesWorked) { + loggedIn = true; + LOG.debug("Logged in with cookies"); + return true; + } + BlockingQueue queue = new LinkedBlockingQueue<>(); Runnable showDialog = () -> { diff --git a/src/main/java/ctbrec/sites/camsoda/CamsodaHttpClient.java b/src/main/java/ctbrec/sites/camsoda/CamsodaHttpClient.java index b6148863..fbb90d6c 100644 --- a/src/main/java/ctbrec/sites/camsoda/CamsodaHttpClient.java +++ b/src/main/java/ctbrec/sites/camsoda/CamsodaHttpClient.java @@ -39,6 +39,13 @@ public class CamsodaHttpClient extends HttpClient { return true; } + // persisted cookies might let us log in + if(checkLoginSuccess()) { + loggedIn = true; + LOG.debug("Logged in with cookies"); + return true; + } + String url = Camsoda.BASE_URI + "/api/v1/auth/login"; FormBody body = new FormBody.Builder() .add("username", Config.getInstance().getSettings().camsodaUsername) diff --git a/src/main/java/ctbrec/sites/chaturbate/ChaturbateHttpClient.java b/src/main/java/ctbrec/sites/chaturbate/ChaturbateHttpClient.java index 06ce6262..58e1f059 100644 --- a/src/main/java/ctbrec/sites/chaturbate/ChaturbateHttpClient.java +++ b/src/main/java/ctbrec/sites/chaturbate/ChaturbateHttpClient.java @@ -42,6 +42,16 @@ public class ChaturbateHttpClient extends HttpClient { @Override public boolean login() throws IOException { + if(loggedIn) { + return true; + } + + if(checkLogin()) { + loggedIn = true; + LOG.debug("Logged in with cookies"); + return true; + } + try { Request login = new Request.Builder() .url(Chaturbate.BASE_URI + "/auth/login/") @@ -86,6 +96,24 @@ public class ChaturbateHttpClient extends HttpClient { return loggedIn; } + private boolean checkLogin() throws IOException { + String url = "https://chaturbate.com/p/" + Config.getInstance().getSettings().username + "/"; + Request req = new Request.Builder().url(url).build(); + Response resp = execute(req); + if (resp.isSuccessful()) { + String profilePage = resp.body().string(); + try { + HtmlParser.getText(profilePage, "span.tokencount"); + return true; + } catch(Exception e) { + LOG.debug("Token tag not found. Login failed"); + return false; + } + } else { + throw new IOException("HTTP response: " + resp.code() + " - " + resp.message()); + } + } + @Override public Response execute(Request req, boolean requiresLogin) throws IOException { Response resp = super.execute(req, requiresLogin); diff --git a/src/main/java/ctbrec/sites/mfc/MyFreeCamsHttpClient.java b/src/main/java/ctbrec/sites/mfc/MyFreeCamsHttpClient.java index 7d49237b..62c6229c 100644 --- a/src/main/java/ctbrec/sites/mfc/MyFreeCamsHttpClient.java +++ b/src/main/java/ctbrec/sites/mfc/MyFreeCamsHttpClient.java @@ -5,11 +5,13 @@ import java.util.List; import java.util.NoSuchElementException; import java.util.Objects; +import org.jsoup.select.Elements; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ctbrec.Config; import ctbrec.io.HttpClient; +import ctbrec.ui.HtmlParser; import okhttp3.Cookie; import okhttp3.CookieJar; import okhttp3.FormBody; @@ -34,6 +36,12 @@ public class MyFreeCamsHttpClient extends HttpClient { return true; } + if(checkLogin()) { + loggedIn = true; + LOG.debug("Logged in with cookies"); + return true; + } + String username = Config.getInstance().getSettings().mfcUsername; String password = Config.getInstance().getSettings().mfcPassword; RequestBody body = new FormBody.Builder() @@ -65,6 +73,25 @@ public class MyFreeCamsHttpClient extends HttpClient { } } + private boolean checkLogin() throws IOException { + Request req = new Request.Builder().url(MyFreeCams.BASE_URI + "/php/account.php?request=status").build(); + Response resp = execute(req); + if(resp.isSuccessful()) { + String content = resp.body().string(); + try { + Elements tags = HtmlParser.getTags(content, "div.content > p > b"); + tags.get(2).text(); + return true; + } catch(Exception e) { + LOG.debug("Token tag not found. Login failed"); + return false; + } + } else { + resp.close(); + throw new IOException(resp.code() + " " + resp.message()); + } + } + public WebSocket newWebSocket(Request req, WebSocketListener webSocketListener) { return client.newWebSocket(req, webSocketListener); }