Guest User

Untitled

a guest
Apr 7th, 2018
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.70 KB | None | 0 0
  1. package ru.caffeineim.protocols.icq;
  2.  
  3. /**
  4.  * User: Terminator
  5.  * Date: 19.09.2011
  6.  * Time: 15:10:37
  7.  */
  8. import ru.caffeineim.protocols.icq.core.OscarConnection;
  9. import ru.caffeineim.protocols.icq.exceptions.ContactListOperationException;
  10. import ru.caffeineim.protocols.icq.exceptions.ConvertStringException;
  11. import ru.caffeineim.protocols.icq.integration.events.*;
  12. import ru.caffeineim.protocols.icq.integration.listeners.MessagingListener;
  13. import ru.caffeineim.protocols.icq.integration.listeners.XStatusListener;
  14. import ru.caffeineim.protocols.icq.setting.enumerations.StatusModeEnum;
  15. import ru.caffeineim.protocols.icq.setting.enumerations.XStatusModeEnum;
  16. import ru.caffeineim.protocols.icq.setting.enumerations.ClientModeEnum;
  17. import ru.caffeineim.protocols.icq.integration.OscarInterface;
  18. import ru.caffeineim.protocols.icq.integration.listeners.OurStatusListener;
  19. import ru.caffeineim.protocols.icq.integration.listeners.MetaInfoListener;
  20. import ru.caffeineim.protocols.icq.setting.enumerations.PrivateStatus;
  21. import ru.caffeineim.protocols.icq.setting.enumerations.StatusFlagEnum;
  22.  
  23. /**
  24. * @author Prolubnikov Dmitry
  25. * private status , meta info change - rehscm
  26. */
  27. public class ICQProtocol implements OurStatusListener, MessagingListener, XStatusListener, MetaInfoListener {
  28. private OscarConnection con = null;
  29. private MetaAckResults metas= null;
  30. //private AbstractProps props;
  31. private boolean connecting = false;
  32. public String server= "login.icq.com";
  33. public int port = 5190;
  34. public String screenName = "9430777";
  35. public String password = "пароль";
  36.  
  37.     @Override
  38. public void onShortUserInfo(MetaShortUserInfoEvent e) {
  39. System.out.println(e);
  40. }
  41.  
  42.     @Override
  43. public void IncomingUserEvent(IncomingUserEvent e) {
  44. //To change body of implemented methods use File | Settings | File Templates.
  45. }
  46.  
  47.     @Override
  48. public void onRegisterNewUINFailed(UINRegistrationFailedEvent e) {
  49. //To change body of implemented methods use File | Settings | File Templates.
  50. }
  51.  
  52.     @Override
  53. public void onRegisterNewUINSuccess(UINRegistrationSuccessEvent e) {
  54. //To change body of implemented methods use File | Settings | File Templates.
  55. }
  56.  
  57.     @Override
  58. public void onAffilationsUserInfo(MetaAffilationsUserInfoEvent e) {
  59. if(metas != null) metas.addMetaResult(e);
  60. //        System.out.println(e);
  61. if(metas != null)
  62. sendMsg(metas.getOwnerUIN(), metas.getTextResult());
  63. }
  64.  
  65.     @Override
  66. public void onNotesUserInfo(MetaNoteUserInfoEvent e) {
  67. if(metas != null) metas.addMetaResult(e);
  68. //        System.out.println(e);
  69. }
  70.  
  71.     @Override
  72. public void onMoreUserInfo(MetaMoreUserInfoEvent e) {
  73. if(metas != null) metas.addMetaResult(e);
  74. //System.out.println(e);
  75. }
  76.  
  77.     @Override
  78. public void onInterestsUserInfo(MetaInterestsUserInfoEvent e) {
  79. if(metas != null) metas.addMetaResult(e);
  80. //System.out.println(e);
  81. }
  82.  
  83.     @Override
  84. public void onWorkUserInfo(MetaWorkUserInfoEvent e) {
  85. if(metas != null) metas.addMetaResult(e);
  86. //System.out.println(e);
  87. }
  88.  
  89.     @Override
  90. public void onEmailUserInfo(MetaEmailUserInfoEvent e) {
  91. //System.out.println(e);
  92. }
  93.  
  94.     @Override
  95. public void onBasicUserInfo(MetaBasicUserInfoEvent e) {
  96. if(metas != null) metas.addMetaResult(e);
  97. //System.out.println(e);
  98. }
  99.  
  100. public ICQProtocol() { }
  101.        
  102. public void reConnect() {
  103. Disconnect();
  104. Connect();
  105. }
  106.  
  107. public void Connect() {
  108. try {
  109. con = new OscarConnection(server, port, screenName, password, true, false);
  110. con.addMessagingListener(this);
  111. con.addXStatusListener(this);
  112. con.addOurStatusListener(this);
  113. con.addMetaInfoListener(this);
  114. con.connect();
  115. } catch (Exception ex) {
  116. connecting=false;
  117. }
  118. }
  119.  
  120.     @SuppressWarnings("CallToThreadDumpStack")
  121. public void Disconnect() {
  122. if(con == null) return;
  123. connecting=false;
  124. try {
  125. try {
  126. con.close();
  127. } catch (Exception ex ) {
  128. ex.printStackTrace();
  129. }
  130. con.removeMessagingListener(this);
  131. con.removeXStatusListener(this);
  132. con.removeOurStatusListener(this);
  133. con = null;
  134. } catch (Exception ex ) {
  135. ex.printStackTrace();
  136. }
  137. }
  138.  
  139. public boolean isOnLine() {
  140. return connecting;
  141. }
  142.  
  143.     @SuppressWarnings("CallToThreadDumpStack")
  144. public synchronized void sendMsg(String sn, String msg) {//отправка сообщения
  145. try {
  146. OscarInterface.sendBasicMessage(con, sn, msg);
  147. } catch (ConvertStringException e) {
  148. System.out.println(msg);
  149. e.printStackTrace();
  150. }
  151. }
  152.  
  153.     @SuppressWarnings("CallToThreadDumpStack")
  154. public void authRequest(String uin, String msg){//запрос авторизации
  155. try {
  156. con.getContactList().sendAuthRequestMessage(uin, msg);
  157. } catch (ContactListOperationException ex) {
  158. ex.printStackTrace();
  159. }
  160. }
  161.  
  162.     @Override
  163. public void onIncomingMessage(IncomingMessageEvent e) {//прием сообщение
  164. System.out.println("BaseUin:" + screenName + " UIN:" + e.getSenderID() + " MSG: " + e.getMessage());
  165. try {
  166. int i = Integer.parseInt(e.getMessage());
  167.  
  168. OscarInterface.changePrivateStatus(con, PrivateStatus.VIS_LIST);
  169. if(i == 1) OscarInterface.changeClient(con, new ClientModeEnum(ClientModeEnum.CAP_QIP)); //установка клиента
  170. if(i == 2) OscarInterface.changeFlagStatus(con, new StatusFlagEnum(StatusFlagEnum.WEBAWARE)); //установка флаг статуса
  171. if(i == 3) sendMsg(e.getSenderID(), "сообщение из ботика)");
  172.  
  173. //if((i < 0) || (i > 5)) {
  174. ////sendMsg(e.getSenderID(), "нет такого статуса");
  175. //requestUserInfo(e.getSenderID(), Integer.toString(i));
  176. //}else {
  177. //PrivateStatus ps = PrivateStatus.UNVIS_ALL;
  178. //switch (i) {
  179. //case 1 : ps = PrivateStatus.VIS_ALL; break;
  180. //case 2 : ps = PrivateStatus.UNVIS_ALL; break;
  181. //case 3 : ps = PrivateStatus.VIS_LIST; break;
  182. //case 4 : ps = PrivateStatus.UNVIS_LIST; break;
  183. //case 5 : ps = PrivateStatus.CONTACT_LIST; break;
  184. //}
  185. //OscarInterface.changePrivateStatus(con, ps);
  186. //OscarInterface.changeXStatus(con, new XStatusModeEnum(XStatusModeEnum.DRINKING_BEER), new ClientModeEnum(ClientModeEnum.CAP_QIP));
  187. //sendMsg(e.getSenderID(), "установлен новый приватный статус: "+ps.getDescription());
  188. //}
  189.  
  190. } catch (Exception e2) {
  191. System.out.println(e2.getMessage());
  192.  
  193. //String text = e.getMessage().trim();
  194. //if(text.length() > 3) {
  195. //FullUserInfo info = new FullUserInfo();
  196. //// если имя короче шести шести символов, то пол Ж. если длиннее то пол М
  197. //info.setLastName(text);
  198. //int gender = text.length() > 6 ? 2 : 1;
  199. //info.setGender(gender);
  200. //OscarInterface.changeOwnInfo(con, screenName, info);
  201. //}
  202.  
  203. }
  204. }
  205.  
  206.     @Override
  207. public void onOfflineMessage(OfflineMessageEvent e) {
  208. System.out.println("OFFLINE BaseUin:" + screenName + " UIN:" + e.getSenderUin() + " MSG: " + e.getMessage());
  209. }
  210.  
  211. public void requestUserInfo(String oUIN, String tUIN) {
  212. metas = new MetaAckResults(oUIN, tUIN);
  213. OscarInterface.requestFullUserInfo(con, tUIN);
  214. }
  215.  
  216.     @Override
  217. public void onLogout(Exception exception) {
  218. connecting=false;
  219. System.out.println("UIN: " + screenName + " отключён ("+exception+").");
  220. }
  221.  
  222.     @Override
  223. public void onLogin() {
  224. connecting = true;
  225. OscarInterface.changeStatus(con, new StatusModeEnum(StatusModeEnum.HOME));
  226. OscarInterface.changeXStatus(con, new XStatusModeEnum(XStatusModeEnum.ANGRY), new ClientModeEnum(ClientModeEnum.CAP_QIP));
  227. System.out.println("UIN - " + screenName + " online");
  228. //
  229. con.getContactList();
  230. //
  231. OscarInterface.requestOfflineMessages(con);
  232. }
  233.  
  234.     @Override
  235. public void onAuthorizationFailed(LoginErrorEvent e) {
  236. connecting=false;
  237. System.out.println("Ошибка авторизации UIN: "+screenName+" ("+e.getErrorMessage()+").");
  238. }
  239.  
  240.     @Override
  241. public void onXStatusRequest(XStatusRequestEvent e) {
  242. try {
  243. OscarInterface.sendXStatus(con, new XStatusModeEnum(XStatusModeEnum.ANGRY),"тема","сообщение",
  244. e.getTime(), e.getMsgID(), e.getSenderID(), e.getSenderTcpVersion());
  245. //System.out.println("e.getTime() ="+ e.getTime());
  246. //System.out.println("e.getMsgID() ="+ e.getMsgID());
  247. //System.out.println("e.getSenderID() ="+ e.getSenderID());
  248. //System.out.println("e.getSenderTcpVersion() ="+ e.getSenderTcpVersion());
  249. }catch(ConvertStringException ex) {
  250. System.err.println(ex.getMessage());
  251. }
  252. }
  253.  
  254.     @Override
  255. public void onStatusResponse(StatusEvent e) { }//читаем статус пользователя
  256.     @Override
  257. public void onXStatusResponse(XStatusResponseEvent e) { }//читаем хстатус пользователя
  258.     @Override
  259. public void onIncomingUrl(IncomingUrlEvent e) {}
  260.     @Override
  261. public void onMessageAck(MessageAckEvent e) {}
  262.     @Override
  263. public void onMessageError(MessageErrorEvent e) {}
  264.     @Override
  265. public void onMessageMissed(MessageMissedEvent e) {}
  266.  
  267. public static  void main(String[] args) {
  268. ICQProtocol prot = new ICQProtocol();
  269. prot.Connect();
  270. }
  271.  
  272. }
Add Comment
Please, Sign In to add comment