Warning: session_start(): open(/var/lib/php/sessions/sess_9svpv0a07959uuppih8t9nk3vb, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
!7
sclass PrivateChat extends DynPrintLog {
S receiver, msg;
bool sign, verifyBeforeSend;
transient StefansOS_ConnectToServer connector;
S switchableFields() { ret 'verifyBeforeSend; }
visualize {
ret centerAndSouthWithMargins(
super.visualize(),
westCenterAndEastWithMargin(
jLine(
jLabel("Send to"),
jMinWidth(100, jLiveValueTextField_bothWays(dm_fieldLiveValue('receiver))),
jLabel(":")),
onEnterAndCtrlEnter(jLiveValueTextField_bothWays(dm_fieldLiveValue('msg)), rThread sendMsg),
jLine(
jLiveValueCheckBox("Sign", dm_fieldLiveValue('sign)),
jbutton("Send", rThread sendMsg))));
}
void sendMsg {
postMsg(receiver, msg, sign);
setField(msg := "");
}
void postSigned(S receiver, S msg) { postMsg(receiver, msg, true); }
void postMsg(S receiver, S msg, bool sign) {
if (empty(receiver = trim(receiver))) ret;
if (!possibleComputerID(receiver)) ret with infoBox("Not a computer ID: " + receiver);
if (empty(msg = trim(msg))) ret;
print("Sending to " + receiver + ": " + shorten(msg, 200));
if (sign) msg = signWithComputerIDAndDate(msg);
vmBus_send('sendingToPrivateChat, receiver, msg);
//logQuotedWithDate(javaxDataDir("OS Chat/sent.log"), msg);
connector.sendLine("privateChat:" + receiver + " " + quote(msg));
}
start {
thread { exportComputerPublicKeyToServerMechList(); }
ownResource(connector = new StefansOS_ConnectToServer);
connector.onLine = voidfunc(S line) {
new Matches m;
if (startsWith(line, "privately from ", m)) {
S s = m.rest();
int i = indexOf(s, ':');
S sender = takeFirst(s, i);
S msg = unquote(substring(s, i+2));
if (!startsWith(msg, "done ")) // XXX
printWithIndent(sender + " >> ", shorten(msg, 1000));
vmBus_send('gotFromPrivateChat, sender, msg);
//logQuotedWithDate(stefansOS_chat_receivedLogFile(), msg);
}
};
connector.startWithSubs("privateChat");
}
}