Add proper login and follow/unfollow to MyFreeCamsClient
This commit is contained in:
parent
9ef9841a19
commit
b80fbd4c30
|
@ -100,7 +100,7 @@ public class MyFreeCams implements Site {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean supportsFollow() {
|
public boolean supportsFollow() {
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -17,6 +17,7 @@ import java.util.concurrent.TimeUnit;
|
||||||
import java.util.concurrent.locks.Lock;
|
import java.util.concurrent.locks.Lock;
|
||||||
import java.util.concurrent.locks.ReentrantLock;
|
import java.util.concurrent.locks.ReentrantLock;
|
||||||
|
|
||||||
|
import org.eclipse.jetty.util.StringUtil;
|
||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
@ -26,6 +27,8 @@ import com.google.common.collect.EvictingQueue;
|
||||||
import com.squareup.moshi.JsonAdapter;
|
import com.squareup.moshi.JsonAdapter;
|
||||||
import com.squareup.moshi.Moshi;
|
import com.squareup.moshi.Moshi;
|
||||||
|
|
||||||
|
import ctbrec.Config;
|
||||||
|
import okhttp3.Cookie;
|
||||||
import okhttp3.Request;
|
import okhttp3.Request;
|
||||||
import okhttp3.Response;
|
import okhttp3.Response;
|
||||||
import okhttp3.WebSocket;
|
import okhttp3.WebSocket;
|
||||||
|
@ -52,6 +55,8 @@ public class MyFreeCamsClient {
|
||||||
private Integer cxid;
|
private Integer cxid;
|
||||||
private int[] ctx;
|
private int[] ctx;
|
||||||
private String ctxenc;
|
private String ctxenc;
|
||||||
|
private String chatToken;
|
||||||
|
private int sessionId;
|
||||||
|
|
||||||
private EvictingQueue<String> receivedTextHistory = EvictingQueue.create(100);
|
private EvictingQueue<String> receivedTextHistory = EvictingQueue.create(100);
|
||||||
|
|
||||||
|
@ -125,17 +130,10 @@ public class MyFreeCamsClient {
|
||||||
try {
|
try {
|
||||||
LOG.trace("open: [{}]", response.body().string());
|
LOG.trace("open: [{}]", response.body().string());
|
||||||
webSocket.send("hello fcserver\n");
|
webSocket.send("hello fcserver\n");
|
||||||
// webSocket.send("fcsws_20180422\n");
|
webSocket.send("fcsws_20180422\n");
|
||||||
// webSocket.send("1 0 0 81 0 %7B%22err%22%3A0%2C%22start%22%3A1540159843072%2C%22stop%22%3A1540159844121%2C%22a%22%3A6392%2C%22time%22%3A1540159844%2C%22key%22%3A%228da80f985c9db390809713dac71df297%22%2C%22cid%22%3A%22c504d684%22%2C%22pid%22%3A1%2C%22site%22%3A%22www%22%7D\n");
|
// TODO find out, what the values in the json message mean, at the moment we hust send 0s, which seems to work, too
|
||||||
// TxCmd Sending - nType: 1, nTo: 0, nArg1: 20080909, nArg2: 0, sMsg:guest:guest
|
// webSocket.send("1 0 0 81 0 %7B%22err%22%3A0%2C%22start%22%3A1540159843072%2C%22stop%22%3A1540159844121%2C%22a%22%3A6392%2C%22time%22%3A1540159844%2C%22key%22%3A%228da80f985c9db390809713dac71df297%22%2C%22cid%22%3A%22c504d684%22%2C%22pid%22%3A1%2C%22site%22%3A%22www%22%7D\n");
|
||||||
// String username = Config.getInstance().getSettings().username;
|
webSocket.send("1 0 0 81 0 %7B%22err%22%3A0%2C%22start%22%3A0%2C%22stop%22%3A0%2C%22a%22%3A0%2C%22time%22%3A0%2C%22key%22%3A%22%22%2C%22cid%22%3A%22%22%2C%22pid%22%3A1%2C%22site%22%3A%22www%22%7D\n");
|
||||||
// if(username != null && !username.trim().isEmpty()) {
|
|
||||||
// mfc.getHttpClient().login();
|
|
||||||
// Cookie passcode = mfc.getHttpClient().getCookie("passcode");
|
|
||||||
// webSocket.send("1 0 0 20080909 0 "+username+":"+passcode+"\n");
|
|
||||||
// } else {
|
|
||||||
webSocket.send("1 0 0 20080909 0 guest:guest\n");
|
|
||||||
// }
|
|
||||||
startKeepAlive(webSocket);
|
startKeepAlive(webSocket);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
@ -179,12 +177,8 @@ public class MyFreeCamsClient {
|
||||||
case NULL:
|
case NULL:
|
||||||
break;
|
break;
|
||||||
case LOGIN:
|
case LOGIN:
|
||||||
// System.out.println("LOGIN");
|
LOG.debug("LOGIN: {}", message);
|
||||||
// System.out.println("Sender " + message.getSender());
|
sessionId = message.getReceiver();
|
||||||
// System.out.println("Receiver " + message.getReceiver());
|
|
||||||
// System.out.println("Arg1 " + message.getArg1());
|
|
||||||
// System.out.println("Arg2 " + message.getArg2());
|
|
||||||
// System.out.println("Msg " + message.getMessage());
|
|
||||||
break;
|
break;
|
||||||
case DETAILS:
|
case DETAILS:
|
||||||
case ROOMHELPER:
|
case ROOMHELPER:
|
||||||
|
@ -205,7 +199,7 @@ public class MyFreeCamsClient {
|
||||||
SessionState sessionState = adapter.fromJson(message.getMessage());
|
SessionState sessionState = adapter.fromJson(message.getMessage());
|
||||||
updateSessionState(sessionState);
|
updateSessionState(sessionState);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
LOG.error("Couldn't parse session state message", e);
|
LOG.error("Couldn't parse session state message {}", message, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -222,44 +216,46 @@ public class MyFreeCamsClient {
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case EXTDATA:
|
case EXTDATA:
|
||||||
// if(message.getReceiver() == 0) {
|
if(message.getArg1() == MessageTypes.LOGIN) {
|
||||||
// String key = message.getMessage();
|
chatToken = message.getMessage();
|
||||||
// String username = Config.getInstance().getSettings().username;
|
String username = Config.getInstance().getSettings().username;
|
||||||
// if(username != null && !username.trim().isEmpty()) {
|
if(StringUtil.isNotBlank(username)) {
|
||||||
// boolean login = mfc.getHttpClient().login();
|
boolean login = mfc.getHttpClient().login();
|
||||||
// if(login) {
|
if (login) {
|
||||||
// Cookie passcode = mfc.getHttpClient().getCookie("passcode");
|
Cookie passcode = mfc.getHttpClient().getCookie("passcode");
|
||||||
// System.out.println("1 0 0 20071025 0 "+key+"@1/"+username+":"+passcode+"\n");
|
webSocket.send("1 0 0 20071025 0 " + chatToken + "@1/" + username + ":" + passcode.value() + "\n");
|
||||||
// webSocket.send("1 0 0 20071025 0 "+key+"@1/"+username+":"+passcode+"\n");
|
} else {
|
||||||
// } else {
|
LOG.error("Login failed");
|
||||||
// LOG.error("Login failed");
|
webSocket.send("1 0 0 20080909 0 guest:guest\n");
|
||||||
// }
|
}
|
||||||
// } else {
|
} else {
|
||||||
// webSocket.send("1 0 0 20080909 0 guest:guest\n");
|
webSocket.send("1 0 0 20080909 0 guest:guest\n");
|
||||||
// }
|
}
|
||||||
// }
|
} else if(message.getArg1() == MessageTypes.MANAGELIST) {
|
||||||
// System.out.println("EXTDATA");
|
requestExtData(message.getMessage());
|
||||||
// System.out.println("Sender " + message.getSender());
|
} else {
|
||||||
// System.out.println("Receiver " + message.getReceiver());
|
System.out.println("EXTDATA");
|
||||||
// System.out.println("Arg1 " + message.getArg1());
|
System.out.println(" Sender " + message.getSender());
|
||||||
// System.out.println("Arg2 " + message.getArg2());
|
System.out.println(" Receiver " + message.getReceiver());
|
||||||
// System.out.println("Msg " + message.getMessage());
|
System.out.println(" Arg1 " + message.getArg1());
|
||||||
requestExtData(message.getMessage());
|
System.out.println(" Arg2 " + message.getArg2());
|
||||||
|
System.out.println(" Msg " + message.getMessage());
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case ROOMDATA:
|
case ROOMDATA:
|
||||||
System.out.println("ROOMDATA");
|
System.out.println("ROOMDATA");
|
||||||
System.out.println("Sender " + message.getSender());
|
System.out.println(" Sender " + message.getSender());
|
||||||
System.out.println("Receiver " + message.getReceiver());
|
System.out.println(" Receiver " + message.getReceiver());
|
||||||
System.out.println("Arg1 " + message.getArg1());
|
System.out.println(" Arg1 " + message.getArg1());
|
||||||
System.out.println("Arg2 " + message.getArg2());
|
System.out.println(" Arg2 " + message.getArg2());
|
||||||
System.out.println("Msg " + message.getMessage());
|
System.out.println(" Msg " + message.getMessage());
|
||||||
case UEOPT:
|
case UEOPT:
|
||||||
System.out.println("UEOPT");
|
System.out.println("UEOPT");
|
||||||
System.out.println("Sender " + message.getSender());
|
System.out.println(" Sender " + message.getSender());
|
||||||
System.out.println("Receiver " + message.getReceiver());
|
System.out.println(" Receiver " + message.getReceiver());
|
||||||
System.out.println("Arg1 " + message.getArg1());
|
System.out.println(" Arg1 " + message.getArg1());
|
||||||
System.out.println("Arg2 " + message.getArg2());
|
System.out.println(" Arg2 " + message.getArg2());
|
||||||
System.out.println("Msg " + message.getMessage());
|
System.out.println(" Msg " + message.getMessage());
|
||||||
break;
|
break;
|
||||||
case SLAVEVSHARE:
|
case SLAVEVSHARE:
|
||||||
// LOG.debug("SLAVEVSHARE {}", message);
|
// LOG.debug("SLAVEVSHARE {}", message);
|
||||||
|
@ -312,6 +308,7 @@ public class MyFreeCamsClient {
|
||||||
JSONObject object = new JSONObject(json);
|
JSONObject object = new JSONObject(json);
|
||||||
if(object.has("type") && object.getInt("type") == 21) {
|
if(object.has("type") && object.getInt("type") == 21) {
|
||||||
JSONArray outer = object.getJSONArray("rdata");
|
JSONArray outer = object.getJSONArray("rdata");
|
||||||
|
LOG.debug("{} models", outer.length());
|
||||||
for (int i = 1; i < outer.length(); i++) {
|
for (int i = 1; i < outer.length(); i++) {
|
||||||
JSONArray inner = outer.getJSONArray(i);
|
JSONArray inner = outer.getJSONArray(i);
|
||||||
try {
|
try {
|
||||||
|
@ -436,6 +433,7 @@ public class MyFreeCamsClient {
|
||||||
fout.write(string.getBytes());
|
fout.write(string.getBytes());
|
||||||
fout.write(10);
|
fout.write(10);
|
||||||
}
|
}
|
||||||
|
//System.exit(1);
|
||||||
} catch (Exception e1) {
|
} catch (Exception e1) {
|
||||||
LOG.error("Couldn't write mfc message history to " + logfile);
|
LOG.error("Couldn't write mfc message history to " + logfile);
|
||||||
e1.printStackTrace();
|
e1.printStackTrace();
|
||||||
|
@ -462,6 +460,22 @@ public class MyFreeCamsClient {
|
||||||
return ws;
|
return ws;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected boolean follow(int uid) {
|
||||||
|
if(ws != null) {
|
||||||
|
return ws.send(ADDFRIENDREQ + " " + sessionId + " 0 " + uid + " 1\n");
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected boolean unfollow(int uid) {
|
||||||
|
if(ws != null) {
|
||||||
|
return ws.send(ADDFRIENDREQ + " " + sessionId + " 0 " + uid + " 2\n");
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void startKeepAlive(WebSocket ws) {
|
private void startKeepAlive(WebSocket ws) {
|
||||||
Thread keepAlive = new Thread(() -> {
|
Thread keepAlive = new Thread(() -> {
|
||||||
while(running) {
|
while(running) {
|
||||||
|
@ -535,6 +549,9 @@ public class MyFreeCamsClient {
|
||||||
JsonAdapter<SessionState> adapter = moshi.adapter(SessionState.class).indent(" ");
|
JsonAdapter<SessionState> adapter = moshi.adapter(SessionState.class).indent(" ");
|
||||||
System.out.println(adapter.toJson(state));
|
System.out.println(adapter.toJson(state));
|
||||||
System.out.println(model.getPreview());
|
System.out.println(model.getPreview());
|
||||||
|
System.out.println("H5 " + serverConfig.isOnHtml5VideoServer(state));
|
||||||
|
System.out.println("NG " + serverConfig.isOnNgServer(state));
|
||||||
|
System.out.println("WZ " + serverConfig.isOnWzObsVideoServer(state));
|
||||||
System.out.println("#####################");
|
System.out.println("#####################");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -271,12 +271,12 @@ public class MyFreeCamsModel extends AbstractModel {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean follow() {
|
public boolean follow() {
|
||||||
return false;
|
return site.getClient().follow(getUid());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean unfollow() {
|
public boolean unfollow() {
|
||||||
return false;
|
return site.getClient().unfollow(getUid());
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getUid() {
|
public int getUid() {
|
||||||
|
|
Loading…
Reference in New Issue