26

Odp: Status portów - do testów

steel_rat napisał/a:

Jeśli nie chcecie tracić konfiguracji po każdym upgradzie routera polecam dodać do
"Kopia zapasowa/firmware" =>  "konfiguracja"

wpisu

/etc/user_defined_ports.json

Wtedy przeżyje on upgrade.


Dobra zadzialalo ale ta zmiana gdzies tam jest dziwna, nie lepiej pakiet zrobic?

27

Odp: Status portów - do testów

roblad napisał/a:

Dobra zadzialalo ale ta zmiana gdzies tam jest dziwna, nie lepiej pakiet zrobic?

"Status portów" jest normalnie w systemie, nikt z tego pakietu nie zrobi, bo i po co?

Kwestia tylko dopisania tej linijki w jakimś jeszcze nieznanym mi miejscu i użytkownik nawet nie zauważy, że musi coś specjalnie robić, a będzie pamiętało ustawienia.

Używasz moich pakietów/obrazów z github?
Chcesz abym dalej je rozwijał i tworzył nowe?
Postaw kawę

28

Odp: Status portów - do testów

Tylko pod warunkiem że obraz jest zmodyfikowany na poziomie kompilacji.
Jeśli ktoś dodaje do działającego routera to musi jeszcze wpisać w
"Kopia zapasowa/firmware" =>  "konfiguracja"

/www/luci-static/resources/view/status/include/29_ports.js
/usr/share/rpcd/acl.d/luci-mod-status-index.json

29

Odp: Status portów - do testów

@IceG: pytanie: czemu zdecydowałeś się na trzymanie tego w zewnętrznym dodatkowym pliku zamiast np. robić dodatkowy opis  w /etc/config/network np. w sekcji device dla danego portu?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

30

Odp: Status portów - do testów

Cezary napisał/a:

@IceG: pytanie: czemu zdecydowałeś się na trzymanie tego w zewnętrznym dodatkowym pliku zamiast np. robić dodatkowy opis  w /etc/config/network np. w sekcji device dla danego portu?

Nie chcialem tych ustawien mieszać z plikami konfiguracyjnymi i zewnetrzny plik najłatwiej mi się w ten zamysł wpasował.

Używasz moich pakietów/obrazów z github?
Chcesz abym dalej je rozwijał i tworzył nowe?
Postaw kawę

31

Odp: Status portów - do testów

@IceG Poprawiłem 29_ports.js, nie trzeba nic zmieniać w luci-mod-status-index.json i nie trzeba korzystać z user_defined_ports.json.
Wszystko jest w /etc/config/network.
Konfig network wygląda jak niżej

config interface 'lan2'
    option device 'lan2'
    option role 'lan'
    option originalLabel 'lan2'
    option label 'lan2'

config interface 'lan3'
    option device 'lan3'
    option role 'lan'
    option originalLabel 'lan3'
    option label 'lan3'

config interface 'lan4'
    option device 'lan4'
    option role 'lan'
    option originalLabel 'lan4'
    option label 'lan4'

config interface 'wan'
    option device 'wan'
    option role 'wan'
    option originalLabel 'wan'
    option label 'wan'

Tylko, że w LuCi jest widoczna lista tych dodatkowych interfejsów z informacją
"Unsupported protocol type. Install protocol extensions..."
Może to kogoś denerwować.

32

Odp: Status portów - do testów

Focus napisał/a:

@IceG Poprawiłem 29_ports.js, nie trzeba nic zmieniać w luci-mod-status-index.json i nie trzeba korzystać z user_defined_ports.json.
Wszystko jest w /etc/config/network.
Konfig network wygląda jak niżej

config interface 'lan2'
    option device 'lan2'
    option role 'lan'
    option originalLabel 'lan2'
    option label 'lan2'

config interface 'lan3'
    option device 'lan3'
    option role 'lan'
    option originalLabel 'lan3'
    option label 'lan3'

config interface 'lan4'
    option device 'lan4'
    option role 'lan'
    option originalLabel 'lan4'
    option label 'lan4'

config interface 'wan'
    option device 'wan'
    option role 'wan'
    option originalLabel 'wan'
    option label 'wan'

Tylko, że w LuCi jest widoczna lista tych dodatkowych interfejsów z informacją
"Unsupported protocol type. Install protocol extensions..."
Może to kogoś denerwować.


i gdzie nowy jest?

33

Odp: Status portów - do testów

roblad napisał/a:

i gdzie nowy jest?

U mnie smile

34

Odp: Status portów - do testów

Focus napisał/a:
roblad napisał/a:

i gdzie nowy jest?

U mnie smile

A ja sobie tak poprawilem dodając coś,a teraz codziennie mnie rano wita czule :-) i jest to u mnie :-)

35 (edytowany przez IceG 2025-10-16 12:17:01)

Odp: Status portów - do testów

Focus napisał/a:

@IceG Poprawiłem 29_ports.js, nie trzeba nic zmieniać w luci-mod-status-index.json i nie trzeba korzystać z user_defined_ports.json.
Wszystko jest w /etc/config/network.

Tylko, że w LuCi jest widoczna lista tych dodatkowych interfejsów z informacją
"Unsupported protocol type. Install protocol extensions..."
Może to kogoś denerwować.

Ale to ze uzywalem wlasnego pliku z ustawieniami nie nalezy traktowac jako bledu, ot taka sobie fanaberia / koncepcja. Macie ochote, nie pasuje Komus moje rozwiazanie prosze bardzo mozna robic po swojemu. Im wieksza inicjatywa uzytkownikow tym wieksza szansa na to ze OpenWrt bedzie bardziej przyjazne dla uzytkownikow i moze ciut mniej odstraszajace.

Pozniej wrzuce na mojego githuba aktualna wersje pliku ktora uzywam, jak ktos bedzie zainteresowany dodaniem tego do siebie to bedzie dostepne.

P.S.
Swoja droga powinny byc ankiety na forum OpenWrt ws. brakujacych funkcjonalnosci dla Lucyny, moze to by cos tknelo ekipe deweloperow. Z drugiej strony patrzac na czekajaca liste bledow / poprawek na githubie to pomysl do kosza.

Używasz moich pakietów/obrazów z github?
Chcesz abym dalej je rozwijał i tworzył nowe?
Postaw kawę

36

Odp: Status portów - do testów

Projekt oficjalnie nie jest prowadzony przez kogoś konkretnego, każdy robi co chce, jak chce i kiedy chce. Nie ma wytycznych w jakim kierunku to ma iść, rzeczy które powinny być zrobione są systematycznie zlewane, nie ma określonych deadlineów czy dat releaseów. Więc taka ankieta była by tylko kolejnym tworem istniejącym wirtualnie.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

37 (edytowany przez Focus 2025-10-16 15:27:16)

Odp: Status portów - do testów

OK. W kodzie @IceG w /www/luci-static/resources/view/status/include/29_ports.js usunąłem pozycję

var USER_PORTS_FILE = '/etc/user_defined_ports.json';


Szukamy pozycji function loadUserPorts i zamieniamy na to

function loadUserPorts() {
    return uci.load('network').then(function() {
        var ports = [];
        var sections = uci.sections('network', 'interface');
                sections.forEach(function(s) {
            if (s.device) {
                ports.push({
                    device: s.device,
                    label: s['.name'],  
                    description: s.description || '', 
                    role: s.role || '', 
                    originalLabel: s.originalLabel || s['.name']
                });
            }
        });
        if (ports.length === 0) {
            console.log('No ports found');
            return null;
        }
        return ports;
    }).catch(function(err) {
        console.error('Failed to load ports:', err);
        return null;
    });
}

Szukamy pozycji function saveUserPorts i zamieniamy na to

function saveUserPorts(ports) {
    return uci.load('network').then(function () {
        const sections = uci.sections('network', 'interface');
        ports.forEach(function (port) {
            let existingSection = null;
            for (let i = 0; i < sections.length; i++) {
                const s = sections[i];
                if (s.device === port.device && s.originalLabel === port.originalLabel) {
                    existingSection = s;
                    break;
                }
            }
            let sectionName;
            if (existingSection) {
                sectionName = existingSection['.name'];
                if (sectionName !== port.label) {
                    uci.remove('network', sectionName);
                    sectionName = uci.add('network', 'interface', port.label);
                }
            } else {

                sectionName = uci.add('network', 'interface', port.label);
            }
            uci.set('network', sectionName, 'device', port.device || '');
            uci.set('network', sectionName, 'description', port.description || '');
            uci.set('network', sectionName, 'role', port.role || '');
            uci.set('network', sectionName, 'originalLabel', port.originalLabel || '');
            uci.set('network', sectionName, 'label', port.label || '');
        });
        return uci.save('network')
            .then(() => uci.apply('network'))
            .then(() => {
                console.log('Ports saved successfully');
                return true;
            });
    }).catch(function (err) {
        console.error('Failed to save ports:', err);
        ui.addNotification(null, E('p', {}, [
            _('Save Error: could not save network config'),
            E('br'),
            E('small', {}, _('Original error: %s').format(err.message))
        ]), 'error');
        throw err;
    });
}

U mnie na ZTE MF286D działa.

38

Odp: Status portów - do testów

OK wrzuciłem mój aktualny plik na github. Inna bajka czy ktoś będzie zainteresowany smile.

Cezary napisał/a:

Projekt oficjalnie nie jest prowadzony przez kogoś konkretnego, każdy robi co chce, jak chce i kiedy chce. Nie ma wytycznych w jakim kierunku to ma iść, rzeczy które powinny być zrobione są systematycznie zlewane, nie ma określonych deadlineów czy dat releaseów. Więc taka ankieta była by tylko kolejnym tworem istniejącym wirtualnie.

Czytam któryś raz to co Cezary napisałeś, mało to pozytywne, ale wiele też tłumaczy (dlaczego latami może czegoś nie być, dlaczego powstają dedykowane forki OpenWrt).

Dobrze że jest to forum, Twoja Cezary praca, praca forumowiczów, może czasem i moja myślę że kilku użytkownikom (mobilnego neta i nie tylko) pomogła w tej nierównej walce z tak prowadzonym OpenWrt.

Używasz moich pakietów/obrazów z github?
Chcesz abym dalej je rozwijał i tworzył nowe?
Postaw kawę

39

Odp: Status portów - do testów

@IceG, teraz działa.
Dzięki.
Od razu jakoś tak czytelniej po dodaniu opisu - nie trzeba pamiętać co gdzie wpięte.
Potestujemy i zrób tak jak radził @Cezary PR. może akurat wrzucą to do oficjalnego wydania.

40

Odp: Status portów - do testów

Cezary, czy umieszczenie własnego skryptu w /www/cgi-bin/xxx względem bezpieczeństwa będzie dobrym pomysłem, czy raczej nic swojego tam nie dodawać?

41

Odp: Status portów - do testów

Jezeli nie zrobisz autoryzacji i będzie można go wykonywać ot tak sobie to średni pomysł. Jeszcze zależy co on będzie robił.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

42 (edytowany przez Focus 2025-10-23 22:19:57)

Odp: Status portów - do testów

No właśnie z tą autoryzacją jest problem.
Czy samo umieszczenie w uhttpd pozycji option auth_basic '1', będzie już jakimś zabezpieczeniem, czy lepiej isReadonlyView = !L.hasViewPermission?
Nie mam pojęcia jak to zabezpieczyć.
Przy pobieraniu zagrożenie raczej mniejsze, najwyżej ktoś pobierze to co było do pobrania, ale przy wysyłaniu to już może narobić problemu.

Edit.
@IceG dodał Save i Upload, zrobił to w json i spoko.
Trochę przeróbki i mogę pobrać konfig bez json.
Problem pojawia się jak chcę zrobić upload bez ingerencji w RPC - ACL.
Teoretycznie i praktycznie upload idzie zrobić przez /www/cgi-bin ale nie wiem jak to autoryzować.

43 (edytowany przez Cezary 2025-10-24 06:15:58)

Odp: Status portów - do testów

Upload robisz przez cgi-io (on robi /www/cgi-bin/cgi-upload). Sam w sobie do wykonania operacji wymaga tokenu, więc bez autoryzacji w luci tego się nie wykona. z cgi-io korzzsta np. luci-app-filemanager czy luci-app-attendedsysupgrade. luci-app-openvpn  też z tego korzysta, ale on jest w lua, więc lekko zły przykład.

O ile w ogóle uploadowany plik chcesz zapisywać bezpośrednio we flash. Bo jeżeli nie i będziesz dalej go przerabiał w js to możesz po prostu załadować plik w przegladarce - jak tak mam w easyconfig przy odczytywaniu konfiga openvpn czy wireguarda.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

44 (edytowany przez lexmark3200 2025-10-24 15:45:00)

Odp: Status portów - do testów

@IceG, a nie myślałeś zrobić skrypt np. w bash do prostej zamiany pliku 29_ports.js oraz edycji luci-mod-status-index.json ?
U siebie kopiuje folder z plikiem 29_ports.js oraz wykonywalny skrypt do /tmp/, odpalam, robi to co podajesz w opisie i usuwa z /tmp/ po wykonaniu zadania, nic poza wydaniem polecenia uruchamiajacego mój skrypt nie trzeba robić.
Może warto dołożyć, chyba, że zrobisz paczkę (pakiet) który ogarnie to z automatu.

45

Odp: Status portów - do testów

lexmark3200 napisał/a:

@IceG, a nie myślałeś zrobić skrypt np. w bash do prostej zamiany pliku 29_ports.js oraz edycji luci-mod-status-index.json ?
U siebie kopiuje folder z plikiem 29_ports.js oraz wykonywalny skrypt do /tmp/, odpalam, robi to co podajesz w opisie i usuwa z /tmp/ po wykonaniu zadania, nic poza wydaniem polecenia uruchamiajacego mój skrypt nie trzeba robić.
Może warto dołożyć, chyba, że zrobisz paczkę (pakiet) który ogarnie to z automatu.

Serio, nie myślałem nad skryptem do tego. Pewnie prędzej ktoś obcykany zrobiłby łatki i one by podmieniały zawartość plików (o ile nic by się nie zmieniło w podstawowej wersji). Pakiet to też kombinacja alpejska bo zapewne trzeba by zmieniać nazwy plików (kompilacja może nie puścić tych samych plików w 2 różnych miejscach) i później w postinstalacji podmieniać (chyba że się mylę).

Ogólnie ingerujemy w  pliki systemowe co utrudnia mocno wszelkie działania.

Używasz moich pakietów/obrazów z github?
Chcesz abym dalej je rozwijał i tworzył nowe?
Postaw kawę

46

Odp: Status portów - do testów

Zamiast zmieniać /usr/share/rpcd/acl.d/luci-mod-status-index.json
można dodać /usr/share/rpcd/acl.d/luci-ports.json z kodem

{
  "luci-ports": {
    "description": "Access to custom ports",
    "read": {
      "uci": [ "*" ],
      "ubus": {
        "luci": [ "getBuiltinEthernetPorts" ],
        "file": [ "read", "write" ]
      },
      "file": {
        "/etc/user_defined_ports.json": [ "read" ],
        "/www/luci-static/resources/view/status/include/29_ports.js": [ "read" ]
      }
    },
    "write": {
      "file": {
        "/etc/user_defined_ports.json": [ "write" ]
      },
      "ubus": {
        "file": [ "write" ],
        "luci": [ "getBuiltinEthernetPorts" ]
      }
    }
  }
}

47

Odp: Status portów - do testów

Można też gwiazdki dodać i nie przejmować się uprawnieniami. Ale to jest niepoprawne ideologicznie.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

48 (edytowany przez Focus 2025-11-02 08:59:26)

Odp: Status portów - do testów

Można zrobić z tego pakiet ale trzeba dodatkowo zrobić backup oryginalnego 29_ports.js, bo przy odinstalowaniu pakietu 29_ports.js też zostanie usunięty.
Można też zrobić skrypt ale znowu trzeba zrobić backup.
Jak na tak mało istotną rzecz, na którą prawie nikt nie zwraca uwagi, a czasami nawet nie korzysta, bo ma swconfig to robienie pakietów i skryptów mija się z celem.

Idąc na skróty robimy wszystko w terminalu bez dodatkowych pakietów i skryptów.

Robimy kopię zapasową (backup) 29_ports.js

cp /www/luci-static/resources/view/status/include/29_ports.js \
   /www/luci-static/resources/view/status/include/29_ports.js.old

Następnie robimy luci-ports.json

cat > /usr/share/rpcd/acl.d/luci-ports.json << 'EOF'
{
  "luci-ports": {
    "description": "Access to custom ports",
    "read": {
      "uci": [ "*" ],
      "ubus": {
        "luci": [ "getBuiltinEthernetPorts" ],
        "file": [ "read", "write" ]
      },
      "file": {
        "/etc/user_defined_ports.json": [ "read" ],
        "/www/luci-static/resources/view/status/include/29_ports.js": [ "read" ]
      }
    },
    "write": {
      "file": {
        "/etc/user_defined_ports.json": [ "write" ]
      },
      "ubus": {
        "file": [ "write" ],
        "luci": [ "getBuiltinEthernetPorts" ]
      }
    }
  }
}
EOF

Nadajemy uprawnienia na wszelki wypadek

chmod 644 /usr/share/rpcd/acl.d/luci-ports.json

Instalujemy 29_ports.js od @IceG

rm -f /www/luci-static/resources/view/status/include/29_ports.js && 
wget -O /www/luci-static/resources/view/status/include/29_ports.js https://raw.githubusercontent.com/4IceG/Port_status/refs/heads/main/29_ports.js

Nadajemy uprawnienia na wszelki wypadek

chmod 644 /www/luci-static/resources/view/status/include/29_ports.js

Na koniec restart usług

service rpcd restart
lub
/etc/init.d/rpcd restart
/etc/init.d/uhttpd restart

Edit.
Przywrócenie wszystkiego do stanu pierwotnego (trzeba mieć backup 29_ports.js.old)

rm /www/luci-static/resources/view/status/include/29_ports.js

cp /www/luci-static/resources/view/status/include/29_ports.js.old /www/luci-static/resources/view/status/include/29_ports.js

rm /www/luci-static/resources/view/status/include/29_ports.js.old

rm /usr/share/rpcd/acl.d/luci-ports.json

49

Odp: Status portów - do testów

@IceG, czy jesteś w stanie w makeDraggable dodać touchstart, touchmove, touchend z jednoczesnym zablokowaniem funkcji zapisu obrazu przy dłuższym przytrzymaniu?

50

Odp: Status portów - do testów

Focus napisał/a:

@IceG, czy jesteś w stanie w makeDraggable dodać touchstart, touchmove, touchend z jednoczesnym zablokowaniem funkcji zapisu obrazu przy dłuższym przytrzymaniu?

Nie planowalem robic zadnych dodatkowych zmian, cos nie tak dziala, co chcesz/potrzebujesz uzyskac?

Używasz moich pakietów/obrazów z github?
Chcesz abym dalej je rozwijał i tworzył nowe?
Postaw kawę