<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    用VSCode進行服務器Lua代碼遠程調試

    VSole2021-10-13 16:42:40

    在過去的遠程代碼調試場景中,需要調試遠程服務器上的Lua代碼,需要登錄服務器,進行代碼的編輯。或者將服務器上的代碼進行下載,然后編輯后再上傳到服務器上。

    有了VSCode及SSH遠程訪問插件,Lua遠程Debug插件后,遠程調試服務器上的Lua代碼變的簡單了,只要打開VSC點擊要鏈接訪問的服務器,通的VSC的SSH插件訪問,省去的了Lua源文件下載、編輯、上傳的過程,并且Debug的操作一并可以在VSC編輯器中完成。

    使用VSC進行遠程調試, 為了不對root用戶下的配置數據產生污染和影響,最好辦法是獨立創建一個用戶,在新建的用戶創建訪問key等配置文件,如果不再需要相關的配置,就可以直接刪除掉這個用戶。

    后續如果做Lua遠程開發調試,需要在特定用戶的根目錄下,安裝Luarocks第三方庫,或者安裝VSC SSH插件、遠程調試插件。這些文件都是放到特定用戶名的目錄下,為了保證各種開發環境的插件和第三方庫,不產生不必要的沖突,可以針對特定語言開發環境創建用戶,完成種類型的代碼調試工作。接下來,就介紹整個遠程調試工作的上半部分。

    1. 服務器創建用戶

    創建一個新的Linux用戶,如下:

    useradd lua -m
    

    加-m參數,會在/home目錄下,對應創建一個lua文件夾。之后我們創建的.ssh相關文件,Luarocks本地安裝的庫的文件,都在這個目錄下。

    passwd lua
    

    創建完新用戶后,要修改一下用戶的密碼,在之后使用sudo執行root權限時,也要使用這個密碼。

    2. 給用戶賦予ROOT權限

    使用visudo命令打開root管理配置文件,找到如下配置,如下:

    # User privilege specificationroot    ALL=(ALL:ALL) ALLcandylab ALL=(ALL:ALL) ALLlua     ALL=(ALL:ALL) ALL
    

    在配置文件中加入Lua用戶的權限配置。

    3. 給當前用戶設置公私鑰

    ssh-keygen -t rsa -b 4096 -C "lua"
    

    命令執行后,會創建的一個公私鑰,在/home/lua/.ssh文件夾中。這兩個文件展示不需要。需要的是.ssh這個文件夾。

    這個命令,我們要在本地Windows客戶端上,或者有桌面系統的Linux、Mac OS系統中某個用戶下執行,也會同樣的生成公私鑰,比如我們在windows上執行這個命令,使用的用戶是Candylab,會在C:\users\candylab.ssh文件夾中生成id_rsa和id_rsa.pub,這兩個文件。

    然后,我們需要將公鑰文件,id_rsa.pub內容進行復制,在遠程服務器上創建的一個叫authorized_keys的文件,將公鑰的內容貼入進去。這樣VSC才可以通過SSH遠程插件訪問進入遠程服務器。在遠程服務器上創建這個文件后,可以在客戶端的命令行窗口中,進行測試,如下:

    cd c:\user\lua\.sshssh -i id_rsa lua@192.168.1.5
    

    如果可以成功登錄,說明客戶端與服務器之間的SSH正常通信訪問是沒問題的。如果在用VSC的SSH插件與服務器進行通信,出現know_hosts文件沖突,可將本地的know_hosts文件刪除。

    	
    
    
    [10:31:25.425] "install" terminal command done[10:31:25.426] Install terminal quit with output: 過程試圖寫入的管道不存在。[10:31:25.426] Received install output: 過程試圖寫入的管道不存在。[10:31:25.427] Failed to parse remote port from server output[10:31:25.427] Resolver error: Error:
    
    

    有時候雖然最后的報錯都是“過程度圖寫入的管道不存在”,但不一定是由know_hosts沖突引起的。比如,我在家中的VSC與單位工作時的VSC的配置是同步的,不同的是git安裝目錄位置不一樣,在單位同步過來的SSH客戶端的SSH執行命令位置,是家里電腦的git安裝目錄位,就找不到OpenSSH可以執行程序,使用了Windows自帶的OpenSSH,也會造成這個提示,無法連接遠程服務器。

    4. 配置VSC客戶端

    在用VSC的SSH插件訪問之前,我們需要在.ssh目錄下配置一個叫config文件,VSC的SSH插件在訪問的遠程服務器時候,會讀取這個文件,如下:


    Host 192.168.1.11 HostName 192.168.1.11 User lua IdentityFile C://users//candylab//.ssh//id_rsa
    

    Host的是主機的別名,HostName是主機有IP,User就訪問的用戶名,IdentifiFile就是指定私鑰文件。

    5. 安裝VSC服務器端插件

    如果想實現Lua遠程調試,需要在VSC的插件選項卡里,搜索到指定的插件,進行安裝,VSC會通過SSH協議向遠程調試的服務器端程序,上傳到遠程服務器上之后,即可在客戶端進行遠程Lua程序的調試。

    6. 安裝Luarocks

    Luarocks是安裝第三方Lua庫的管理工具。可以通過Luarocks快速的安裝所需要的各種Lua庫,Luarocks的庫可以直接按名字進行遠程安裝,又可以先下載,然后再進行本地化安裝。可以裝將庫只裝到當前用戶的目錄,又可以將庫裝到公用目錄。

    大多的Luarocks教程,主要介紹  Luarocks Install 為主,并不過多的區分是遠程安裝,或是本地安裝,此篇中,對此加以詳細一些的介紹。

    安裝可以用系統工具安裝,也可以用二進制包安裝,也可以用源碼安裝都可以,沒有特殊的情況,推薦使用二進制方式進行安裝。

    如果是在Windows平臺上安裝,只要下載二進制的安裝就可以了,如下:

    https://github.com/rjpcomputing/luaforwindows/releaseshttps://github.com/rjpcomputing/luaforwindows
    

    如果Linxu的上安裝就比較方便,以下:

    apt install luarocks
    

    apt這種安裝方式,會根據不同的操作系統,安裝不同版本的Luarocks,并不一定是最新版本。

    6.1 Luarocks的庫安裝

    Luarocks安裝的第三方庫,可以安裝在當前用戶,也可以安裝在系統公用目錄, root用戶都可以。可以先下載rock文件的再進行安裝,也可以用Luarocks的Install命令安裝。

    sudo luarocks install markdown
    

    用管理員安裝的rock,是安裝在/usr/local

    luarocks install markdown --local
    

    如果加上--local參數,rock是安裝在/home/lua/.luarocks,如果用--local時,不要加sudo, 直接安裝到當前目錄的用戶。安裝后用 sudo luarocks list 顯示的root用戶安裝過的Rock,是沒有安裝Markdown庫的。Luarocks list顯示當前用戶安裝的rock,才能顯示出來安裝的Rock有Markdown。

    如果你在當前用戶,運行lua5.3,require"markdown",Lua會提示找不到這個包。需要export出/home/candylab/.luarocks這個目錄位置,設置到環境變量,或者直接在Lua源文件中設置環境變量。

    6.2 Luarocks遠程安裝

    Luarocks遠程安裝比較簡便,直接使用Luarocks的 Install命令來安裝,以Markdown庫作為例子進行安裝舉例。

    luarocks install markdown
    

    再用Luarocks list就可以列出已經安裝過的包。

     luarocks list
    

    6.3 Luarocks本地安裝

    Luarocks可能會在安裝的過程中,出現網絡狀況不好的情況,Rock文件很難從官方網站上下載下來,這種情況,我們可以通過其他路徑,非安裝的其他機器上下載Rock文件,然后在上傳到對應的機器上進行安裝。

    wget http://luarocks.org/markdown-0.33-1.src.rockluarocks unpack markdown-0.33-1.src.rockcd markdown-0.33-1\markdown\
    

    6.3.1 Luarocks 2.02版本下安裝

    luarocks make markdown-0.33-1.rockspec  --local--lua-dir d:\gnu\lua\5.1
    

    還可以加上gcc的編譯參數,帶上debug信息,coredump的時候也好用bt看調用棧信息。

    CC="gcc -g"
    

    安裝本地用戶目標,非系統目錄。

    luarocks install markdown --local
    

    6.3.2 Luarocks 3.7版本下安裝

    Luarocks3.7版本中有--local這個參數, Luarocks安裝不成.so的純 Lua庫是不需要引用Lua執行文件和.H頭文件的位置的,像早期的LFS這種庫,就需要指點相應文件目錄的位置。并且可以通過下面的命令告訴Luarocks,lua.h的位置。

    luarocks config variables.LUA_INCDIR <dir>
    

    6.3.3 Lua Path

    Luarocks 3.7 可以看到Lua的Path信息,如下:

    luarocks path
    

    6.3.4 lua-dir 與 LUA_INCDIR

    如果Path信息里沒有相關的信息,需要在執行Luarocks進行指定。

    luarocks-admin --lua-dir d:\gnu\lua\5.1 LUA_INCDIR='d:\gnu\lua\5.1\include'
    

    如果是在Ubuntu Linux上安裝LFS這種庫,就需發lua.h文件,以Lua 5.3為例,需要安裝Lua開發包,這樣也可以不用在安裝時指定.H文件的位置。

    sudo apt install liblua5.3-dev
    

    安裝Develop開發包,安裝時才能找到 .H文件。為了方便查找,也可以裝一個mlocate.

    sudo apt install mlocate
    

    然后,我們在當前用戶的Home目錄中安裝lFS。

    luarocks install luafilesystem --local
    

    安裝過程中,會自動執行如下的動作。

    Installing https://luarocks.org/luafilesystem-1.8.0-1.src.rockgcc -O2 -fPIC -I/usr/include/lua5.3 -c src/lfs.c -o src/lfs.ogcc -shared -o lfs.so -L/usr/local/lib src/lfs.oluafilesystem 1.8.0-1 is now installed in /home/lua/.luarocks (license: MIT/X11)
    

    Luafilesystem是.so文件和.lua庫安裝位置是不同的。

    /home/lua/.luarocks/lib/lua/5.3
    

    6.4 Lua庫使用

    因為上面采用了--local的方式進行安裝的,所以庫文件是在當前用戶目錄的,需設置環境變量,或者在Lua程序代碼指明的,下面采用在Lua代碼中指明的方式進行調用。

    package.path = package.path..";/home/lua/.luarocks/share/lua/5.3/?.lua";package.cpath = package.cpath..";/home/lua/.luarocks/lib/lua/5.3/?.so";
    require "markdown"require "lfs"
    text1="## test"md = markdown(text1)
    for entry in lfs.dir("../") do        print(entry)end
    

    package.path指明的是.Lua庫文件的位置。package.cpath指明的是.so庫文件的位置。

    7. Heng靜態網站生成框架

    7.1 介紹

    Heng是基于OpenResty的一個軟件,Web框架功能集合靜態網站生成工具,可以將Markdown文件集,生成靜態的HTML文件。

    Heng采用的是純腳本的安裝方式, 純Lua代碼,可以直接進行解譯執行,并不需要makefile進行Lua、或其他庫之間的依賴關聯。項目代碼規模比較小,直接使用shell腳本進行安裝管理。

    git clone https://github.com/未定/heng.gitcd hengsudo sh install.sh
    

    Heng的操作常用操作用命令方式完成,如下:

    Heng v0.1, a Lua web framework based on OpenResty.
    Usage: Heng COMMAND [OPTIONS]
    Commands: new [name]             Create a new application start                  Starts the server stop                   Stops the server restart                Restart the server  version                Show version of framework build                  Convert Markdown to HTML path                   Show framework install path help                   Show help tips
    

    Start、Stop、Restart命令是用于開始、關閉、重啟OpenResty服務,而Build命令是執行Markdown翻譯成HTML的工作。

    Heng的常用操作由命令行來完成。使用簡潔的命令行操作,進行OpenResty服務的開始、關閉、重啟,Markdown文件的構建。Heng支持簡單模板支持,用于索引Markdown文件生成的HTML文件目錄,并且提供了一個簡單的路由展示功能。

    7.2 安裝

    git clone https://github.com/未定/heng.gitcd hengsudo sh install.sh
    

    7.3 創建項目

    hi new heng
    

    7.4 創建應用

    local bjson = require "utils.bjson"local app = require "heng"
    app:get("/heng", function(self)    return "heng"end)
    app:get("/json", function(self)    local t = bjson.decode(self.req.body)    return t   end)
    return app
    
    

    7.5 啟動服務

    hi start hi stop hi restart
    

    7.6 測試接口

    curl -X GET  http://0.0.0.0:8888/json -d  '{"key":"value"}'
    

    返回結果:

    {"key":"value"}
    

    8. 總結

    這一篇主要介紹了基于VSC進行遠程調試的工作準備,以及相關軟件的安裝部署,重點并沒有在VSC的配置,與代碼調試處理上,后面將介紹更多遠程調試的細節,和針對操作過程中出現的相關問題的解決。

    markdownlua
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    在過去的遠程代碼調試場景中,需要調試遠程服務器上的Lua代碼,需要登錄服務器,進行代碼的編輯。或者將服務器上的代碼進行下載,然后編輯后再上傳到服務器上。 有了VSCode及SSH遠程訪問插件,Lua遠程Debug插件后,遠程調試服務器上的Lua代碼變的簡單了,只要打開VSC點擊要鏈接訪問的服務器,通的VSC的SSH插件訪問,省去的了Lua源文件下載、編輯、上傳的過程,并且Debug的操作一并可
    二. Apifox 做的改進1. Apifox的整體功能定位Apifox 是 API 文檔、API 調試、API Mock、API 自動化測試一體化協作平臺。支持 Markdown 所見即所得地編寫非 API 文檔的普通文檔。API 文檔支持密碼保護和生效時間,可生成多份不同內容和權限的文檔。支持綁定接口,接口發生變化時,自動更新測試用例。支持執行循環次數和用例之間設置時間間隔。
    gomarkdown/markdown 是 Go 語言的一個流行模塊,它旨在快速地將 Markdown 文檔轉化為 HTML 頁面。而此次發現的漏洞,來源于作者在編寫其語法樹 Parser 的時候無意的一次 unescape。
    簡介閑來沒事,做一個自動化recon的工具,簡化操作流程。可以對域名或ip進行whois查詢,dns記錄查詢,ip端口掃描,http屏幕快照。最終生成markdown格式的報告,可使用Obsidian或vscode的markdown notes插件打開,借助雙向鏈接功能,方便跳轉查看。依賴的程序amass子域名查找 下載地址masscan掃描全部端口,發現開放端口。nmap服務掃描,針對masscan發現的端口進行具體的服務掃描。
    而且,到目前為止,也沒有逃脫接口文檔要靠手寫生成的命運,還要去學swagger 注解,這樣一來,學習成本有了,工作效率也提高不上去。B.支持導入postman,swagger等多達20多種格式的接口數據,零成本實現項目遷移C.支持導出swagger,html,word 格式的接口文檔,也不綁架用戶,你想遷移到其他系統也大大方方成全你。
    「二維碼 生成器」在線的二維碼生成器。最方便的用法是把當前的頁面生成二維碼,方便手機掃碼快速訪問。「Github 加速器」一鍵加速 Github 訪問速度,當 Github 訪問慢的時候點擊右鍵直加速,同時支持多個加速鏡像。「crxMouse Chrome Gestures」對于國產瀏覽器自帶鼠標手勢的功能,真覺得很方便!「Clear Cache」點擊圖標即可清除緩存、cookie 等,開發必備!「Postman」相信開發者朋友一定知道這款插件,非常方便的調用和調試 API 接口。
    今天給大家推薦的這款開源項目是基于 GitHub 的 Web 筆記應用,可以根據這個開源項目搭建自己的一個 Web筆記管理工具。這款開源項目,名稱為:BatNoter,可將 GitHub 倉庫作為個人筆記存儲庫,并支持筆記分類、搜索、Markdown 快捷編輯與預覽、書簽管理等內容。BatNoter API、是這個反應應用程序使用的 REST API 的后端實現。
    一、先看效果1、生成yapi文檔的效果2、生成postman格式數據并導入接口測試類后的效果(如postman、apifox等工具)3、生成markdown格式文檔的效果二、安裝1、安裝EasyYapi插件idea的頂部菜單欄選擇 文件 -> 設置 -> 插件,然后再marketplace里搜索easyYapi安裝即可安裝完成后設置底部回出現EasyApi的欄目,選中進行配置修改(我主要是改了下圖
    每個黑客都會遇到這個,第一個賞金。我實際上無法解釋它的感覺,但我知道你們中的大多數人都能理解它的感覺。當我們開始在 Web 應用程序安全中進行漏洞賞金時,我們大多數人都會從 XSS開始,故事從這里開始。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类