상세 컨텐츠

본문 제목

LuCI

프로그래밍/OpenWrt

by wlwwlwwlw 2022. 6. 21. 17:51

본문

LuCI 

  • MVC(Model View Controller)구조를 사용한다. 

       Model : OpenWrt의 모든 configuration을 저장하는 UCI모델을 사용

       View : HTML page을 생성하는데 사용

       Controller : 사용자로부터 요청된 URL을 가져와서 동적으로 페이지를 생성하는 LuCI 코드의 매핑 세트

  • 임베디드 디바이스를 위한 깨끗하고 확장가능하고 쉽게 유지관리 할 수 있는 무료의 Web User Interface이다.
  • 인터페이스를 model, veiw 와 같은 논리적인 부분으로 나누며, 객체지향 라이브러리 및 템플릿을 사용한다.
  • Lua 프로그래밍 언어를 사용한다.
  • 향상된 성능, 작은 설치 크기, 빠른 실행시간, 간단한 유지관리를 보장한다.

 

MVC (Model View Controller)

Controller

Luci dispatching tree를 사용하는데 이는 controller index() 함수에 의해 실행된다.

(dispatching tree 관련 함수는 dispatcher.lua 에 정의되어 있음)

dispatching tree에 함수를 등록하기 위해서 entry() 함수를 사용하며, entry() 함수는 4개의 argument를 갖는다.

entry(path, target, title=nil, order=nil)
path : 트리의 위치를 설명한다.
          ex) entry({"admin", "system", "reboot"}, call("action_reboot"), _("Reboot"), 90)
                위 예제의 경우 admin.system.reboot에 노드를 삽입한다는 의미 
target : 사용자가 모든 노드를 요청할 때 취할 action을 설명한다. 
            allias, template, post, call, cbi 등이 있다.  
title : 메뉴에서 사용자가 보게되는 제목을 정의한다.
order : 메뉴에서 같은 레벨의 노드가 정렬되는 수 

 

Model

cbi 모델은 UCI config 구조와 HTML 양식을 설명하는 Lua 파일이다. 모든 cbi 모델 파일은 Map 유형의 객체를 반환해야한다.

Map(config, title, description)
config : 매핑될 config 파일 이름, /etc/config 하위 폴더에서 확인 가능하다. 
title : LuCI 웹에 보여지는 제목
description : LuCI 웹에 보여지는 설명