Jump to content

Serafim

Forum Members
  • Posts

    11
  • Joined

  • Last visited

Equipment

  • Keenetic
    Kn-1919

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Serafim's Achievements

Member

Member (2/5)

3

Reputation

  1. Дело в том, что встраивания в фирваре я не производил. Запускаю параллельно с основным интерфейсом сайт на другом порту( в данном случае 81) под тем же nginx. Команда на запуск подается после запуска entware через s файл , находящийся в /opt/etc/init.d . Для размещения собственного кода в интерфейс распаковываю файл App…..Js из каталога scrips сайта и работаю с ним.
  2. Доброго дня! Отвечаю, для чего мне это понадобилось: http://imdtech.ru/technologies/netimd_keenetic/. Задача была простая: добавить модуль симметричного шифрования и управление им. Цепочка решения : собрать модуль и приложение управления под keenetic-sdk, добавить в entware, затем приступил к интерфейсу - добавил контроллер angularjs. Могу читать и редактировать настроечный файл. Осталось научить работать с моим приложением. Видимо копаем в сторону NodeJs. Жаль что не удалось через exec в web интерфейсе получить управление своей программой. До этого момента для решения по Web интерфейсу использовал nginx встроенный .
  3. Собираю все интернет-интерфейсы, сопоставляю названия keenetic и entware: 1. /opt/etc/ndm/ifstatechanged.d/100-netimd #!/bin/sh # # File place: /opt/etc/ndm/ifstatechanged.d # source /opt/etc/netimd/netimd.func OnIfStateChanged exit 0 2. /opt/etc/netimd/netimd.func #!/bin/sh export iface_list_entware="" NETIMD=netimd NETIMD_MOD=$NETIMD"v" NETIMD_APP=$NETIMD"con" NETIMD_APW=$NETIMD_APP" -web" CFG_FILE="-cfg -file" NETIMD_CFG_PATH="/opt/etc/"$NETIMD"/" IFACE_NAMES_FILE=$NETIMD_CFG_PATH"pub.dev" EXCL_IFACE_NAMES_FILE=$NETIMD_CFG_PATH"excl.dev" LINK_DEV=$NETIMD_CFG_PATH"link.dev" NDMC_SHOW_IFACE="ndmc -c show interface" SECURITY_LEVEL="security-level" SECURITY_LEVEL_PUBLIC=$SECURITY_LEVEL": public" # excluded_ifaces="ra tun gre ppp etho im" #stringContain() { [ -z "${2##*$1*}" ]; } iface_is_not_in_excluded_file() { if_name=$1 if grep -q "$if_name" "$EXCL_IFACE_NAMES_FILE"; then retval=0 else retval=1 fi return "$retval" } iface_needed() { if_name=$1 if [ -z "$if_name" -a "$if_name" != " " ] || \ [[ $if_name == "lo" ]]; then retval=0 else retval=1 arr=$(echo $excluded_ifaces | tr " " ) for item in $arr do #echo "$item $if_name" if [[ $if_name == $item* ]]; then retval=0 break; fi done if [ "$retval" -eq 1 ]; then iface_is_not_in_excluded_file $if_name retval=$? fi fi return "$retval" } iface_keenetic_security_level_public() { retval=0 if_name=$1 if ! [ -z "$if_name" -a "$if_name" != " " ]; then ret=$($NDMC_SHOW_IFACE "$if_name" | grep "$SECURITY_LEVEL_PUBLIC") if ! [ -z "$ret" ]; then retval=1 fi fi return "$retval" } iface_keenetic_security_level() { if_name=$1 echo $($NDMC_SHOW_IFACE "$if_name" | grep "$SECURITY_LEVEL" | awk '{print $2}') } get_entware_iface_list() { #iface_list_long=$(ifconfig | grep "Ethernet" | awk '{print $1}') iface_list_long=$(ip a | grep "mtu" | awk '{print $2}') #echo $iface_list_long for iface_name in $iface_list_long ; do iface_name=${iface_name::-1} iface_needed $iface_name retval=$? if [ "$retval" == 0 ] then #echo "iface $iface_name not needed" continue; fi bInclude=1 for iface_name2 in $iface_list_long ; do iface_name2=${iface_name2::-1} if [[ "$iface_name2" == "$iface_name" ]]; then continue; elif [[ $iface_name2 != *"@"* ]]; then continue; elif [[ $iface_name2 == *"@"* ]]; then #echo "==> $iface_name2" if [[ "$iface_name2" == *"$iface_name" ]]; then #echo "found $iface_name in $iface_name2" bInclude=0 break; fi fi done if [[ $bInclude -eq 0 ]]; then continue; fi if [[ $iface_name == *"@"* ]]; then iface_name=$(echo "$iface_name" | cut -d "@" -f1) fi #echo $iface_name iface_list_entware="$iface_list_entware$iface_name " done #echo $iface_list_entware } get_keenetic_iface_descr() { if_name=$1 #echo "$if_name" echo $($NDMC_SHOW_IFACE "$if_name" | grep "description" | cut -d ":" -f 2 | cut -c 2- ) } get_keenetic_iface_state() { if_name=$1 #echo "$if_name" echo $($NDMC_SHOW_IFACE "$if_name" | grep "state:" | cut -d ":" -f 2) } is_netimd_on_iface_exist() { if_name="im"${1:2} ! [ -z $( (ip a show $if_name | grep $if_name | \ cut -d "@" -f1 | cut -d " " -f 2) 2> /dev/null) ] #! [ -z $(ifconfig $if_name | grep $if_name | cut -d " " -f1 > /dev/null 2>&1 ) ] } CheckFile() { filename=$1 if [ -f $filename ]; then while IFS= read -r line do #echo "$line" if_linux=$(echo $line | cut -d " " -f 1) if_keenetic=$(echo $line | cut -d " " -f 2 | tr -d "\r") #echo "$if_linux $if_keenetic" if is_netimd_on_iface_exist $if_linux; then netimd_exist="Y" else netimd_exist=" " fi #if_descr="" #if_state="" if_descr=$(get_keenetic_iface_descr $if_keenetic) if_state=$(get_keenetic_iface_state $if_keenetic) echo "$if_linux $if_keenetic $if_state im=$netimd_exist $if_descr" done < $filename fi } OnIfStateChanged () { # Create file if not exist: if ! [ -f $IFACE_NAMES_FILE ]; then touch $IFACE_NAMES_FILE; fi #if ! grep -q "${id}" "$IFACE_NAMES_FILE"; then iface_needed ${system_name} retval=$? if [ "$retval" == 0 ]; then exit 0 fi #iface_descr=$(get_keenetic_iface_descr ${id}) #iface_im=$(is_netimd_on_iface_exist ${system_name}) #if [ -z "$iface_im" ]; then # status="0" #else # status="1" #fi seclevel=$(iface_keenetic_security_level ${id}) #logger "netimd: sec=$seclevel ${id} -> ${system_name}" if [ -z "$seclevel" ]; then exit 0 fi if ! [[ $seclevel == "public" ]]; then exit 0 fi if grep -q "${system_name}" "$IFACE_NAMES_FILE"; then exit 0 fi # Add record in file if not exist: echo "${system_name} ${id}" >> $IFACE_NAMES_FILE #logger "add: ${id} -> ${system_name}" } 3. Результат в /opt/etc/netimd/pub.dev: apcli0 WifiMaster0/WifiStation0 eth2.2 FastEthernet0/Vlan2 cdc_br0 CdcEthernet0
×
×
  • Create New...