35-Openwrt rpcd

rpcd package里面包含了多個(gè)模塊桩盲,session,ubus插件等,是opewnrt的基礎(chǔ)組件,只是很少關(guān)注到昼浦。

1、session會(huì)話機(jī)制

rpcd工具包里面提供了標(biāo)準(zhǔn)的session生成霞揉、更新有额、老化機(jī)制,可以供其他模式使用慕蔚,在openwrt上面就是uhttpd會(huì)使用到丐黄。

1.1 查看命令支持:

root@openwrt:/# ubus -v list session
'session' @a0264f96
        "create":{"timeout":"Integer"}
        "list":{"ubus_rpc_session":"String"}
        "grant":{"ubus_rpc_session":"String","scope":"String","objects":"Array"}
        "revoke":{"ubus_rpc_session":"String","scope":"String","objects":"Array"}
        "access":{"ubus_rpc_session":"String","scope":"String","object":"String","function":"String"}
        "set":{"ubus_rpc_session":"String","values":"Table"}
        "get":{"ubus_rpc_session":"String","keys":"Array"}
        "unset":{"ubus_rpc_session":"String","keys":"Array"}
        "destroy":{"ubus_rpc_session":"String"}
        "login":{"username":"String","password":"String","timeout":"Integer"}

1.2 創(chuàng)建session

ubus call session create '{"timeout": 3600}'
{
        "ubus_rpc_session": "8c1af812b4b148fcbb92434c74cf61c1",
        "timeout": 3600,
        "expires": 3600,
        "acls": {

        },
        "data": {

        }
}

另外一種創(chuàng)建session的方法,通過(guò)賬號(hào)密碼登錄生成孔飒,這種就是我們web經(jīng)常用的灌闺,用戶輸入賬號(hào)密碼,驗(yàn)證成功則生成session坏瞄。

root@zihome:~# ubus call session login '{"username": "root","password":"admin"}'
{
        "ubus_rpc_session": "f6267d1a1614debca586cb96f0eb3586",
        "timeout": 300,
        "expires": 300,
        "acls": {
                "access-group": {
                        "unauthenticated": [
                                "read"
                        ]
                },
                "ubus": {
                        "session": [
                                "access",
                                "login"
                        ]
                }
        },
        "data": {
                "username": "root"
        }
}

1.3 列出所有session信息

可以看到剩余時(shí)間expires會(huì)倒計(jì)時(shí)減少桂对,還有這個(gè)session的acl、data信息鸠匀。

root@openwrt:~# ubus call session list
{
        "ubus_rpc_session": "693837073d22c086964053a64d38595e",
        "timeout": 300,
        "expires": 119,
        "acls": {
                "access-group": {
                        "unauthenticated": [
                                "read"
                        ]
                },
                "ubus": {
                        "session": [
                                "access",
                                "login"
                        ]
                }
        },
        "data": {
                "username": "root"
        }
}
1.4 獲取指定session是否存在

在uhttpd應(yīng)用中蕉斜,需要判斷這個(gè)session是否還在有效期內(nèi)。

  • 如果不再有效期內(nèi)缀棍,web頁(yè)面就要回返到登錄頁(yè)面宅此;
  • 如果在有效期內(nèi),那就更新expires時(shí)間到timeout時(shí)間爬范,重新開始計(jì)時(shí)父腕。

使用get接口獲取,如果session不在有效期就返回失斍嗥佟璧亮;在有效期就返回data萧诫,同時(shí)更新時(shí)間戳。

root@openwrt:~# ubus call session get '{"ubus_rpc_session": "10b583862c4ef8df9242eea92dbed255"}'
Command failed: Not found
root@openwrt:~# ubus call session get '{"ubus_rpc_session": "b57ced1afb3d0bc01848fc7b0c8ffcf1"}'
{
        "values": {
                "username": "root"
        }
}

當(dāng)然使用list也可以枝嘶,也會(huì)刷新時(shí)間戳帘饶。

root@openwrt:~# ubus call session list '{"ubus_rpc_session": "b57ced1afb3d0bc01848fc7b0c8ffcf1"}'
{
        "ubus_rpc_session": "b57ced1afb3d0bc01848fc7b0c8ffcf1",
        "timeout": 300,
        "expires": 300,
        "acls": {
                "access-group": {
                        "unauthenticated": [
                                "read"
                        ]
                },
                "ubus": {
                        "session": [
                                "access",
                                "login"
                        ]
                }
        },
        "data": {
                "username": "root"
        }
}

1.5 session清除

主動(dòng)清除這個(gè)session,類似web頁(yè)面的登出群扶。

root@openwrt:~# ubus call session destroy '{"ubus_rpc_session": "e35cd677ad7c9cb584d2915861fcac88"}'

https://openwrt.org/docs/guide-developer/ubus/session

2尖奔、ubus可執(zhí)行文件功能

這個(gè)是openwrt官網(wǎng)對(duì)rpcd的介紹

https://oldwiki.archive.openwrt.org/doc/techref/rpcd

3、ubus_over_http功能

how to use ubus over http in openwrt 12.09
https://www.cnblogs.com/nicephil/p/6768381.html#e4bdbfe794a8e696b9e6b395_2

openwrt-rpcd服務(wù)ACL配置錯(cuò)誤風(fēng)險(xiǎn)分析:https://www.cnblogs.com/hac425/p/9416854.html

cat /etc/config/rpcd 
config login
        option username 'root'
        option password '$p$root'
        list read '*'
        list write '*'

http://10.1.2.203/ubus

{
    "jsonrpc":"2.0",
    "id":1,
    "method":"call",
    "params":[
        "00000000000000000000000000000000",
        "session",
        "login",
        {
            "username":"root",
            "password":"admin"
        }
    ]
}
{
    "jsonrpc":"2.0",
    "id":1,
    "method":"call",
    "params":[
        "bfe0946e9fdaed2c7900e71ebb570f83",
        "file",
        "read",
        {
            "path":"/etc/passwd"
        }
    ]
}

https://openwrt.org/docs/techref/ubus#access_to_ubus_over_http

{ "jsonrpc": "2.0",
  "id": <unique-id-to-identify-request>, 
  "method": "call",
  "params": [
             <ubus_rpc_session>, <ubus_object>, <ubus_method>, 
             { <ubus_arguments> }
            ]
}
{ "jsonrpc": "2.0", "id": 1, "method": "call", "params": [ "c1ed6c7b025d0caca723a816fa61b668", "file", "read", { "path": "/etc/board.json" } ] }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末穷当,一起剝皮案震驚了整個(gè)濱河市提茁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌馁菜,老刑警劉巖茴扁,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異汪疮,居然都是意外死亡峭火,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門智嚷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)卖丸,“玉大人,你說(shuō)我怎么就攤上這事盏道∩越” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵猜嘱,是天一觀的道長(zhǎng)衅枫。 經(jīng)常有香客問(wèn)我,道長(zhǎng)朗伶,這世上最難降的妖魔是什么弦撩? 我笑而不...
    開封第一講書人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮论皆,結(jié)果婚禮上益楼,老公的妹妹穿的比我還像新娘。我一直安慰自己点晴,他們只是感情好感凤,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著觉鼻,像睡著了一般俊扭。 火紅的嫁衣襯著肌膚如雪队橙。 梳的紋絲不亂的頭發(fā)上坠陈,一...
    開封第一講書人閱讀 51,708評(píng)論 1 305
  • 那天萨惑,我揣著相機(jī)與錄音,去河邊找鬼仇矾。 笑死庸蔼,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的贮匕。 我是一名探鬼主播姐仅,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼刻盐!你這毒婦竟也來(lái)了掏膏?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤敦锌,失蹤者是張志新(化名)和其女友劉穎馒疹,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體乙墙,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡颖变,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了听想。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片腥刹。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖汉买,靈堂內(nèi)的尸體忽然破棺而出衔峰,到底是詐尸還是另有隱情,我是刑警寧澤蛙粘,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布朽色,位于F島的核電站,受9級(jí)特大地震影響组题,放射性物質(zhì)發(fā)生泄漏葫男。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一崔列、第九天 我趴在偏房一處隱蔽的房頂上張望梢褐。 院中可真熱鬧,春花似錦赵讯、人聲如沸盈咳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)鱼响。三九已至,卻和暖如春组底,著一層夾襖步出監(jiān)牢的瞬間丈积,已是汗流浹背筐骇。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留江滨,地道東北人铛纬。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像唬滑,于是被迫代替她去往敵國(guó)和親告唆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容