国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java獲取ejabberd在線用戶賬號(hào)Jid

learn_shifeng / 2328人閱讀

摘要:背景公司需求為導(dǎo)出在線用戶信息,其中第一步便是取到在線用戶,本文選擇去網(wǎng)頁取爬取在線用戶頁面,獲得返回報(bào)文后進(jìn)行截取獲得用戶賬號(hào)。后續(xù)方便進(jìn)行取緩存數(shù)據(jù)獲取必要的數(shù)據(jù)為導(dǎo)出做準(zhǔn)備。

背景

公司需求為導(dǎo)出在線用戶信息,其中第一步便是取到在線用戶,本文選擇去ejabberd網(wǎng)頁取爬取在線用戶頁面,獲得返回報(bào)文后進(jìn)行截取獲得用戶賬號(hào)。后續(xù)方便進(jìn)行取緩存數(shù)據(jù)獲取必要的數(shù)據(jù)為導(dǎo)出excel做準(zhǔn)備。

主要代碼 連接ejabberd,獲取返回報(bào)文
    /**
     * 請求ejabbered集群管理頁面的post請求方法
     * 
     * @param url
     * @param userNameAndPwd
     * @return
     */
    public static String sendPost(String urlAddress, String userNameAndPwd) {
        String reponseStr = "";
        BufferedReader in = null;
        String line = "";
        try {
            URL url = new URL(urlAddress);
            URLConnection connection = url.openConnection();
            logger.debug("與ejabberd建立連接的地址為:"+urlAddress);
            connection.setDoOutput(true);
            connection.setRequestProperty("Pragma:", "no-cache");
            connection.setRequestProperty("Accept",
                    "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8");
            connection.setRequestProperty("Cache-Control", "no-cache");
            connection.setRequestProperty("Content-Type", "text/xml");
            connection.setRequestProperty("User-Agent",
                    "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36");
            connection.setRequestProperty("Authorization", "Basic " + userNameAndPwd);
            connection.connect();
            // 定義 BufferedReader輸入流來讀取URL的響應(yīng)
            in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            while ((line = in.readLine()) != null) {
                reponseStr += line;
            }
            logger.info("請求回執(zhí):" + reponseStr);
        } catch (Exception e) {
            logger.error(e);
        }
        return reponseStr;
    }
返回報(bào)文樣例


    
        ejabberd Web Admin
        
        
        
        
    
    
        
        
    

報(bào)文為頁面html,分為導(dǎo)航欄、內(nèi)容等部分,我們關(guān)注內(nèi)容部分即可;下面a標(biāo)簽內(nèi)為我們想要的在線用戶賬號(hào)(多個(gè)用戶則為多個(gè)a標(biāo)簽)

            

Online Users

wxin@sihua1.com
截取返回報(bào)文,獲得在線用戶賬號(hào)Jid
package com.onewaveinc.utils;

//省略了import部分
...
/**
 * 此類原為導(dǎo)出excel表格,其中獲取在線用戶賬號(hào)為其中一步;
 * 從ejabberd返回報(bào)文進(jìn)行解析截取用戶賬號(hào)
 * @author wxin
 *
 */
public class ExportXMPPUserInfo {

    private UserManager userManager;
    private UserChannelLoginManager userChannelLoginManager;
    private String path;
//    private final static String CONNECTED_USERS ="connected_users";
    /**
     * 加載ejabbered集群的管理頁面賬號(hào)信息至內(nèi)存
     */
    private Map ejabberedUserMap=new HashMap();
    /**
     * 加載ejabbered集群的url
     */
    private Map ejabberedUrlMap=new HashMap();
    
    private String xmppManageListStr;
    private ChannelManager channelManager;
    private MemcachedFactory memcachedFactory;
    private static Logger logger = Logger.getInstance(ExportXMPPUserInfo.class);
    
    private String zipPath;
    
    /**
     * 定時(shí)導(dǎo)出XMPP每個(gè)機(jī)房(一個(gè)集群)的在線用戶的信息
     * 導(dǎo)出信息:用戶賬號(hào),mac地址,登陸的IP,登陸域名,機(jī)頂盒的型號(hào),版本,和以及登陸所在節(jié)點(diǎn)的ip,
     * 顯示 登陸的時(shí)間,登陸的時(shí)長(現(xiàn)在的時(shí)間減去登陸的時(shí)間)。
     */
    public  void getEjabberdJid() {
        try {
            List channelList = new ArrayList();
            try {
                channelList =  channelManager.findChannelIdList();
            } catch (Exception e) {
                e.printStackTrace();
            }
            String serverName = "";
            String serverDomain = "";
            String urlAddress = "";
            String userNameAndPwd = "";
            String respStr = "";
            String usersUrlAddress = "";
            String usersRespStr = "";
            for (Channel channel : channelList) {
                serverName = channel.getName();
                serverDomain = channel.getHost();
                logger.info("此次處理的集群名稱為:" + serverName);
                //獲取所有在線用戶賬號(hào)
                urlAddress = ejabberedUrlMap.get(serverName)+"server/"+ serverDomain +"/online-users";
                userNameAndPwd = ejabberedUserMap.get(serverName);
                respStr = HttpUtil.sendPost(urlAddress, userNameAndPwd);
                List jidList = new ArrayList();
                jidList = getJidList(respStr);                
            }
        } catch (Exception e) {
            result = "failed";
            e.printStackTrace();
        }
        return result;
        
    }

    /**
     * 截取用戶jidList
     * @param respStr
     * @return List jidList
     */
    public List getJidList(String respStr) {
        List jidList = new ArrayList();
        int indexOne = respStr.indexOf("

Online Users

")+"

Online Users

".length(); int indexTwo = respStr.indexOf("
"); if (-1 != indexOne && -1 != indexTwo && indexTwo > indexOne) { String usersStr = respStr.substring(indexOne, indexTwo); logger.debug("在線用戶列表為:"+ usersStr); String []infoArr = usersStr.split("
"); logger.debug("按照進(jìn)行拆分用戶列表" + Arrays.toString(infoArr)); for (String userInfo : infoArr) { indexOne = userInfo.indexOf("/">")+"/">".length(); String newUserInfo = userInfo.substring(indexOne); logger.debug("正在處理用戶JID為"+newUserInfo); jidList.add(newUserInfo); } } return jidList; } /** * 加載各個(gè)Ejabbered集群的Node節(jié)點(diǎn) * 此方法在初始化時(shí)進(jìn)行(init-method="queryEjabberedNodes") * xmppManageListStr數(shù)據(jù)格式為:xmpp,admin@sihua1.com,1=http://10.223.138.137:5280/admin/;... * 單個(gè)元素為 imoss系統(tǒng)中的集群名稱,管理員賬號(hào),管理員密碼=ejaader集群管理地址,多個(gè)采用英文分號(hào)分隔 */ public void queryEjabberedNodes(){ try { if(StringUtils.isNotBlank(xmppManageListStr)){ String[] strArrayOne=xmppManageListStr.split(";"); for(String strTempOne:strArrayOne){ String[] arr=strTempOne.split("="); String[] strArrayTwo=arr[0].split(","); logger.info("strArrayTwo[0]="+strArrayTwo[0]+",strArrayTwo[1]=" +strArrayTwo[1]+",strArrayTwo[2]="+strArrayTwo[2] +",arr[1]="+arr[1]); ejabberedUrlMap.put(strArrayTwo[0], arr[1]); String encodeUserAndPwd=Base64Uitl.encode((strArrayTwo[1]+":"+strArrayTwo[2]).getBytes()); ejabberedUserMap.put(strArrayTwo[0], encodeUserAndPwd); } } } catch (Exception e) { logger.error("處理配置項(xiàng)xmpp.management.url.list產(chǎn)生異常!",e); } } //省略了getter、setter部分 } 補(bǔ)充說明

ExportXMPPUserInfo.queryEjabberedNodes()在配置中配置為init-method,在初始化階段就已經(jīng)運(yùn)行:將發(fā)送url、賬號(hào)密碼提前寫入map中。

配置

        ...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/72686.html

相關(guān)文章

  • 團(tuán)隊(duì)協(xié)作工具 Worktile 技術(shù)架構(gòu)揭秘

    摘要:現(xiàn)在已經(jīng)成為的官方標(biāo)準(zhǔn),如,以及的擴(kuò)展協(xié)議。作者簡介李會(huì)軍,聯(lián)合創(chuàng)始人,關(guān)注團(tuán)隊(duì)協(xié)作領(lǐng)域,致力于用工具解決中小團(tuán)隊(duì)的協(xié)作問題。 Worktile自上線兩年多以來,以良好的用戶體驗(yàn)和穩(wěn)定的服務(wù),獲得了用戶的認(rèn)可和喜愛。截止筆者寫這篇文章的時(shí)候,已經(jīng)有超過10萬家團(tuán)隊(duì)在使用Worktile。作為團(tuán)隊(duì)協(xié)作工具,從技術(shù)上分析首先要解決如下幾個(gè)問題: 基于Web的跨平臺(tái)設(shè)計(jì),讓用戶在任何地方都...

    heartFollower 評論0 收藏0
  • 即時(shí)通訊之客戶端篇StropheJs.

    摘要:解析的最終結(jié)果是,上下線通知。解析的結(jié)果是,同時(shí)可以通過和構(gòu)建父子級(jí)別元素。單聊發(fā)送查詢歸檔歷史記錄漫游查詢歸檔之前,首先是要確保歸檔存庫成功,服務(wù)端查看傳送門,自行處理,參見。栽過的坑轉(zhuǎn)的時(shí)候回調(diào)函數(shù)丟失參考文獻(xiàn)高級(jí)編程使用和 摘要 小編是個(gè)寫了幾年php的碼農(nóng), 接觸純Js的項(xiàng)目這也是頭一次,另外,IM的服務(wù)端是Java(tigase框架) ,為了解決舊版本BOSH(長輪詢)即時(shí)消...

    ChristmasBoy 評論0 收藏0
  • saltstack-api使用詳解

    摘要:本文介紹下的簡單使用。介紹本身就提供了一套算完整的,使用來實(shí)現(xiàn)的,供外部的程序調(diào)用。安裝需要安裝,然后進(jìn)行一些配置才可以正常使用,安裝方法有兩種。命令在中使用方式是客戶端方法參數(shù)例子。重啟再次測試,。 簡述 接觸了saltstack感覺十分強(qiáng)大,非常適合做自動(dòng)化運(yùn)維。本文介紹下salt-api的簡單使用。后續(xù)打算用django + saltsatck做一個(gè)web界面的自動(dòng)化運(yùn)維平臺(tái)。 ...

    A Loity 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<