StateData#state.myname, StateData#state.nick),
StateData#state.user, El),
Body = xml:get_path_s(El, [{elem, "body"}, cdata]),
+ case Body of
+ "/quote " ++ Rest ->
+ ?SEND(Rest ++ "\r\n");
+ _ ->
+ Body1 =
+ case Body of
+ [$/, $m, $e, $ | Rest] ->
+ "\001ACTION " ++ Rest ++ "\001";
+ _ ->
+ Body
+ end,
+ Strings = string:tokens(Body1, "\n"),
+ Res = lists:concat(
+ lists:map(
+ fun(S) ->
+ io_lib:format(
+ "PRIVMSG #~s :~s\r\n",
+ [Channel, S])
+ end, Strings)),
+ ?SEND(Res)
+ end;
+ Subject ->
+ Strings = string:tokens(Subject, "\n"),
+ Res = lists:concat(
+ lists:map(
+ fun(S) ->
+ io_lib:format("TOPIC #~s :~s\r\n",
+ [Channel, S])
+ end, Strings)),
+ ?SEND(Res)
+ end;
+ "chat" ->
+ Body = xml:get_path_s(El, [{elem, "body"}, cdata]),
+ case Body of
+ "/quote " ++ Rest ->
+ ?SEND(Rest ++ "\r\n");
+ _ ->
Body1 = case Body of
[$/, $m, $e, $ | Rest] ->
"\001ACTION " ++ Rest ++ "\001";
Res = lists:concat(
lists:map(
fun(S) ->
- io_lib:format("PRIVMSG #~s :~s\r\n",
- [Channel, S])
- end, Strings)),
- ?SEND(Res);
- Subject ->
- Strings = string:tokens(Subject, "\n"),
- Res = lists:concat(
- lists:map(
- fun(S) ->
- io_lib:format("TOPIC #~s :~s\r\n",
- [Channel, S])
+ io_lib:format("PRIVMSG ~s :~s\r\n",
+ [Resource, S])
end, Strings)),
?SEND(Res)
end;
- "chat" ->
- Body = xml:get_path_s(El, [{elem, "body"}, cdata]),
- Body1 = case Body of
- [$/, $m, $e, $ | Rest] ->
- "\001ACTION " ++ Rest ++ "\001";
- _ ->
- Body
- end,
- Strings = string:tokens(Body1, "\n"),
- Res = lists:concat(
- lists:map(
- fun(S) ->
- io_lib:format("PRIVMSG ~s :~s\r\n",
- [Resource, S])
- end, Strings)),
- ?SEND(Res);
"error" ->
stop;
_ ->
case xml:get_attr_s("type", Attrs) of
"chat" ->
Body = xml:get_path_s(El, [{elem, "body"}, cdata]),
- Body1 = case Body of
- [$/, $m, $e, $ | Rest] ->
- "\001ACTION " ++ Rest ++ "\001";
- _ ->
- Body
- end,
- Strings = string:tokens(Body1, "\n"),
- Res = lists:concat(
- lists:map(
- fun(S) ->
- io_lib:format("PRIVMSG ~s :~s\r\n",
- [Nick, S])
- end, Strings)),
- ?SEND(Res);
+ case Body of
+ "/quote " ++ Rest ->
+ ?SEND(Rest ++ "\r\n");
+ _ ->
+ Body1 = case Body of
+ [$/, $m, $e, $ | Rest] ->
+ "\001ACTION " ++ Rest ++ "\001";
+ _ ->
+ Body
+ end,
+ Strings = string:tokens(Body1, "\n"),
+ Res = lists:concat(
+ lists:map(
+ fun(S) ->
+ io_lib:format("PRIVMSG ~s :~s\r\n",
+ [Nick, S])
+ end, Strings)),
+ ?SEND(Res)
+ end;
"error" ->
stop;
_ ->
?INFO_MSG("started: ~p", [{SockMod, Socket}]),
case SockMod of
gen_tcp ->
- inet:setopts(Socket, [{packet, http}]);
+ inet:setopts(Socket, [{packet, http}, {recbuf, 8192}]);
ssl ->
- ssl:setopts(Socket, [{packet, http}])
+ ssl:setopts(Socket, [{packet, http}, {recbuf, 8192}])
end,
{ok, proc_lib:spawn_link(ejabberd_http,
receive_headers,
data = Data} = Request) ->
case catch parse_request(Data) of
{ok, ID1, Key, NewKey, Packet} ->
- ID = case ID1 of
- "0" ->
- NewID = sha:sha(term_to_binary({now(), make_ref()})),
- {ok, Pid} = start(NewID, ""),
- mnesia:transaction(
- fun() ->
- mnesia:write(#http_poll{id = NewID,
- pid = Pid})
- end),
- NewID;
- _ ->
- ID1
- end,
+ ID = if
+ (ID1 == "0") or (ID1 == "mobile") ->
+ NewID = sha:sha(term_to_binary({now(), make_ref()})),
+ {ok, Pid} = start(NewID, ""),
+ mnesia:transaction(
+ fun() ->
+ mnesia:write(#http_poll{id = NewID,
+ pid = Pid})
+ end),
+ NewID;
+ true ->
+ ID1
+ end,
case http_put(ID, Key, NewKey, Packet) of
{error, not_exists} ->
{200, ?BAD_REQUEST, ""};
if
ID == ID1 ->
{200, [?CT], OutPacket};
+ ID1 == "mobile" ->
+ {200, [?CT], [ID, $\n, OutPacket]};
true ->
Cookie = "ID=" ++ ID ++ "; expires=-1",
{200, [?CT, {"Set-Cookie", Cookie}],