Skocz do zawartości

Diladele Web Safety - Jak Uruchomić Panel Administracyjny? Apache, Problem


nikita

Rekomendowane odpowiedzi

Łączysz się nie określając portu, zatem wypluwa Ci domyślnego Apachowego vhosta. Możesz albo zmienić 80 na coś innego w qlproxy.conf, albo w configu Apacha.

Mylisz się na jednym porcie (tu 80) może "chodzić" kilka vhostów po to jest dyrektywa ServerName

Odnośnik do komentarza
Udostępnij na innych stronach

Jasne, że może. Jako, że nie mam pojęcia czym jest DWS założyłem jednak, że może istnieć konflikt (np. jeśli serwowana jest osobna usługa na porcie z qlproxy.conf).

 

@nikita: port możesz zmienić w qlproxy.conf, z :80 na np. 6283 i łączyć się przez proxy.diladele.lan:6283

 

Pokaż jeszcze co zwraca:

sestatus
Odnośnik do komentarza
Udostępnij na innych stronach

Na wstępnie dodam, że wyłączyłem sieć bezprzewodową, żeby się nie oszukać z adresami. Tym samym pozostaje jeden adres: 192.168.1.100, którego używam aby otworzyć przeglądarkowe GUI Diladele.

 

Jako że konfiguracja w pliku /etc/httpd/conf.d/qlproxy.conf jest dla apacha 2.2 a w f20 jest 2.4 to musisz zamiast
Order deny,allow
Allow from all

wpisać

Require all granted

i przeładować apacha

 

Świetnie, w końcu jakiś postęp! Udało się zalogować i przejrzałem możliwości konfiguracji. Domyślny ICAP Address (127.0.0.1) zmieniłem na automatycznie wykryty (i swoją drogą zalecany przez kreator) 192.168.1.100. ICAP Port to domyślnie 1344.

 

Następnie dokonałem testowych zmian w subskrypcjach blokowania reklam. Wszystko byłoby OK, gdyby nie fakt niemożliwości przeładowania/zrestartowania servera ICAP, co de facto jest potrzebne do poprawnego wprowadzenia zmian.

 

10450525.jpg?1393168364

 

Wybrałem opcję "save and reload" i:

 

10450557.jpg?1393168604

 

Problem polega na tym, że lokalizacja /usr/sbin nie zawiera pliku "squid3", a plik o nazwie "squid". Wiedząc, że nie ma szans żeby to wypaliło, pomyślałem, że może zmiana nazwy pliku na "squid3" przyniesie jakieś postępy. O dziwo coś poszło do przodu - tutaj wklejka logu: http://wklej.org/id/1280932/

 

Oczywiście dostałem instrukcję jak zrobić to ręcznie:

 

# /etc/init.d/qlproxy stop

# service squid3 stop

#/usr/sbin/squid3 -k parse

# /etc/init.d/qlproxy start

# service squid3 start

 

Przy czym zamiast "service squid3 stop" (Failed to issue method call: Unit squid3.service not loaded) wpisałem "service squid stop".


I na koniec:

[root@new-host sbin]# service squid startRedirecting to /bin/systemctl start  squid.serviceJob for squid.service failed. See 'systemctl status squid.service' and 'journalctl -xn' for details.

I tutaj się chyba zaczyna coś walić.

[root@new-host sbin]# service squid status
Redirecting to /bin/systemctl status  squid.service
squid.service - Squid caching proxy
Loaded: loaded (/usr/lib/systemd/system/squid.service; enabled)
Active: failed (Result: exit-code) since nie 2014-02-23 16:34:38 CET; 1min 45s ago
Process: 3021 ExecStop=/usr/sbin/squid -k shutdown -f $SQUID_CONF (code=exited, status=203/EXEC)
Process: 1116 ExecReload=/usr/sbin/squid $SQUID_OPTS -k reconfigure -f $SQUID_CONF (code=exited, status=0/SUCCESS)
Process: 3082 ExecStart=/usr/sbin/squid $SQUID_OPTS -f $SQUID_CONF (code=exited, status=203/EXEC)
Process: 3077 ExecStartPre=/usr/libexec/squid/cache_swap.sh (code=exited, status=0/SUCCESS)
Main PID: 1018 (code=killed, signal=TERM)
lut 23 16:34:38 new-host.home systemd[1]: Starting Squid caching proxy...
lut 23 16:34:38 new-host.home systemd[1]: squid.service: control process exited, code=exited status=203
lut 23 16:34:38 new-host.home systemd[1]: Failed to start Squid caching proxy.
lut 23 16:34:38 new-host.home systemd[1]: Unit squid.service entered failed state.

Selinux jest wyłączony (zwraca disabled).

 

Zastanawia mnie też kwestia połączenia "klienta" i mam tu pytanie w kwestii portu, ale do tego dojdę później, bo może sprawa sama się rozwiąże po nareperowaniu powyższego :)

Odnośnik do komentarza
Udostępnij na innych stronach

Zamiast zmieniać nazwę, utwórz dowiązanie symboliczne o nazwie squid3 do pliku squid. Jak zmieniłeś nazwę pliku to usługa squid.service nie ma prawa wystartować, bo skąd ma wiedzieć, że nazwa pliku się zmieniła. Podsumowując nigdy nie zmieniaj nazw plików pochodzących z pakietów rpm, inaczej czekają Cie tylko problemy. "Use the ln command Luke" jak rzekł Obi-Wan.

Odnośnik do komentarza
Udostępnij na innych stronach

Dziękuję za informację. Utworzyłem dowiązanie symboliczne, ale dalej się wysypuje:

 

stde: WARNING: Cannot write log file: /var/log/squid/cache.log
stde: /var/log/squid/cache.log: Permission denied
stde: messages will be sent to 'stderr'.
Command '/usr/sbin/squid3 -k parse' succeeded
Running command '/etc/init.d/qlproxy reload'...
stdo: Reloading qlproxy configuration (via systemctl): [FAILED]
stde: Failed to issue method call: Access denied
Command '/etc/init.d/qlproxy reload' failed, exception 'return code 4 is not zero'

Wcześniejsze kroki (aż do ostatniego na czerwono) są oznaczone na zielono ptaszkiem, ale widzę że już wcześniej następuje jakiś problem z dostępem do zapisu logu...

 

Zawartość /etc/init.d/qlproxy: http://wklej.org/id/1281306/

 

Będę wdzięczny za porady.

Odnośnik do komentarza
Udostępnij na innych stronach

Aby program działał pod fedorą musisz zmodyfikować plik /var/opt/quintolabs/qlproxy/console/config/service.py wcześniej zrób kopię.

Oto patch

--- service.py.orig	2014-01-13 21:58:14.000000000 +0100
+++ service.py	2014-02-23 22:13:50.000000000 +0100
@@ -62,8 +62,8 @@
     def get_command(self, is_restart):
         if platform.system() != "FreeBSD":
             return [
-                ["/etc/init.d/qlproxy", "reload"],
-                ["/etc/init.d/qlproxy", "restart"]
+                ["sudo", "/etc/init.d/qlproxy", "reload"],
+                ["sudo", "/etc/init.d/qlproxy", "restart"]
             ][is_restart]
         else:
             # this is FreeBSD, see if we are running in pfSense
@@ -92,7 +92,7 @@
          
         distrib = self.get_distrb()
             
-        if distrib in ['redhat', 'centos']:
+        if distrib in ['redhat', 'centos', 'fedora']:
             return [
                 ["/usr/bin/sudo", "/sbin/service", "squid", "reload"],
                 ["/usr/bin/sudo", "/sbin/service", "squid", "restart"],
@@ -108,7 +108,7 @@
             return ["/usr/local/sbin/squid", "-k", "parse"]
             
         distrib = self.get_distrb()
-        if distrib in ['redhat', 'centos']:
+        if distrib in ['redhat', 'centos', 'fedora']:
             return ["/usr/sbin/squid", "-k", "parse"]
             
         return ["/usr/sbin/squid3", "-k", "parse"]
@@ -118,7 +118,7 @@
             return ["/usr/local/sbin/squid", "-v"]
             
         distrib = self.get_distrb()
-        if distrib in ['redhat', 'centos']:
+        if distrib in ['redhat', 'centos', 'fedora']:
             return ["/usr/sbin/squid", "-v"]
             
         return ["/usr/sbin/squid3", "-v"]

Musisz zapisać go w katalogu /var/opt/quintolabs/qlproxy/console/config/ jako service.py.diff

Następnie w tym samym katalogu wydajesz polecenie patch < service.py.diff i restartujesz apacha
 

Odnośnik do komentarza
Udostępnij na innych stronach

 

[root@new-host config]# patch < service.py.diff
patching file service.py
Hunk #1 FAILED at 62 (different line endings).
Hunk #2 FAILED at 92 (different line endings).
Hunk #3 FAILED at 108 (different line endings).
Hunk #4 FAILED at 118 (different line endings).
4 out of 4 hunks FAILED -- saving rejects to file service.py.rej

Zgaduję, że nie tak się to miało skończyć (?). Zawartość service.py.rej to dokładnie cały Twój cytat. Mimo wszystko po restarcie Apacha bez zmian.

Odnośnik do komentarza
Udostępnij na innych stronach

 

Zgaduję, że nie tak się to miało skończyć (?). Zawartość service.py.rej to dokładnie cały Twój cytat. Mimo wszystko po restarcie Apacha bez zmian.

 

Komunikat Hunk FAILED oznacza, że patch się nie nałożył, powodem są inne standardy zakończenia linii. W orginalnym pliku są windowsowe a w patchu unixowe. Możesz spróbować dodać do programu patch opcje -l lub --binary lub użyć polecenia unix2dos service.py.diff może pomoże . Jeżeli nie, musisz sam w edytorze w pliku service.py zamienić linie zaczynające się - na te zaczynające się +

Odnośnik do komentarza
Udostępnij na innych stronach

No to tak: patch -l < service.py.diff nie pykło. --binary również nie. Zmodyfikowałem więc service.py w następujący sposób (mam nadzieję, że wszystko ok):

#
#
#
import platform
import subprocess
 
from qlproxy.utils import *
 
 
#
#
#
class service_base:
 
    def restart(self, logger):
        self.run_command(logger, self.get_command(True))
         
    def reload(self, logger):
        self.run_command(logger, self.get_command(False))
     
    def run_command(self, logger, command):    
         
        # log it
        logger.append("Running command '%s'..." % " ".join(command))
         
        # we need info about standard handles in case of error
        stdout = None
        stderr = None
         
        try:
            process        = subprocess.Popen(command, stdout = subprocess.PIPE, stderr = subprocess.PIPE)
            stdout, stderr = process.communicate()
            if process.returncode != 0:
                raise Exception("return code %d is not zero" % process.returncode)
                 
        except Exception as e:    
            self.dump(stdout, "stdo", logger)
            self.dump(stderr, "stde", logger)
             
            raise Exception("Command '%s' failed, exception '%s'" % (" ".join(command), e))
             
        self.dump(stdout, "stdo", logger)
        self.dump(stderr, "stde", logger)
             
        # log success  
        logger.append("Command '%s' succeeded" % (" ".join(command)))
         
    def dump(self, lines, prefix, logger):
     
        if lines is None:
            logger.append(prefix + ": <None>")
        else:
            for line in lines.splitlines():
                logger.append("%s: %s" % (prefix, line))
         
 
#
#
#
class service_qlproxy(service_base):
     
    def get_command(self, is_restart):
        if platform.system() != "FreeBSD":
            return [
#               ["/etc/init.d/qlproxy", "reload"],
#               ["/etc/init.d/qlproxy", "restart"]
                ["sudo", "/etc/init.d/qlproxy", "reload"],
                ["sudo", "/etc/init.d/qlproxy", "restart"]
            ][is_restart]
        else:
            # this is FreeBSD, see if we are running in pfSense
            if environment().is_pfsense():
                return [
                    ["/usr/local/etc/rc.d/qlproxyd.sh", "reload"],
                    ["/usr/local/etc/rc.d/qlproxyd.sh", "restart"]
                ][is_restart]
            else:
                return [
                    ["service", "qlproxyd", "reload"],
                    ["service", "qlproxyd", "restart"]
                ][is_restart]
#
#
#
class service_squid(service_base):
 
    def get_command(self, is_restart):
     
        if platform.system() == "FreeBSD":
            return [
                ["sudo", "service", "squid", "reload"],
                ["sudo", "service", "squid", "restart"]
            ][is_restart]
          
        distrib = self.get_distrb()
             
#        if distrib in ['redhat', 'centos']:
         if distrib in ['redhat', 'centos', 'fedora']:
            return [
                ["/usr/bin/sudo", "/sbin/service", "squid", "reload"],
                ["/usr/bin/sudo", "/sbin/service", "squid", "restart"],
            ][is_restart]
         
        return [
            ["/usr/bin/sudo", "/usr/sbin/service", "squid3", "reload"],
            ["/usr/bin/sudo", "/usr/sbin/service", "squid3", "restart"],
        ][is_restart]
             
    def get_command_verify(self):
        if platform.system() == "FreeBSD":
            return ["/usr/local/sbin/squid", "-k", "parse"]
             
        distrib = self.get_distrb()
#       if distrib in ['redhat', 'centos']:
        if distrib in ['redhat', 'centos', 'fedora']:
            return ["/usr/sbin/squid", "-k", "parse"]
             
        return ["/usr/sbin/squid3", "-k", "parse"]
         
    def get_command_squid_version(self):
        if platform.system() == "FreeBSD":
            return ["/usr/local/sbin/squid", "-v"]
             
        distrib = self.get_distrb()
#       if distrib in ['redhat', 'centos']:
        if distrib in ['redhat', 'centos', 'fedora']:
            return ["/usr/sbin/squid", "-v"]
             
        return ["/usr/sbin/squid3", "-v"]
             
    def get_distrb(self):
        distrib = platform.dist()[0].lower()
        if distrib is None or distrib == '':
            distrib = platform.system().lower()
        return distrib
             
    def verify_config(self, logger):
        self.run_command(logger, self.get_command_verify())
         
    def get_version(self, logger):
        self.run_command(logger, self.get_command_squid_version())

Po restarcie Apacha i 192.168.1.100:

IndentationError at /

unexpected indent (service.py, line 98)

Request Method:     GET
Request URL:     http://192.168.1.100/
Django Version:     1.5
Exception Type:     IndentationError
Exception Value:     

unexpected indent (service.py, line 98)

Exception Location:     /var/opt/quintolabs/qlproxy/console/config/views.py in <module>, line 25
Python Executable:     /usr/bin/python
Python Version:     2.7.5
Python Path:     

['/var/opt/quintolabs/qlproxy/console',
 '/usr/lib/python2.7/site-packages/Django-1.5-py2.7.egg',
 '/usr/lib64/python27.zip',
 '/usr/lib64/python2.7',
 '/usr/lib64/python2.7/plat-linux2',
 '/usr/lib64/python2.7/lib-tk',
 '/usr/lib64/python2.7/lib-old',
 '/usr/lib64/python2.7/lib-dynload',
 '/usr/lib64/python2.7/site-packages',
 '/usr/lib64/python2.7/site-packages/gtk-2.0',
 '/usr/lib/python2.7/site-packages']

Server time:     Mon, 24 Feb 2014 12:51:56 -0600
Odnośnik do komentarza
Udostępnij na innych stronach

Tak jak napisane: linia 98 niespodziewane wcięcie.

        if platform.system() == "FreeBSD":
            return [
                ["sudo", "service", "squid", "reload"],
                ["sudo", "service", "squid", "restart"]
            ][is_restart]
          
        distrib = self.get_distrb()
             
#        if distrib in ['redhat', 'centos']:
         if distrib in ['redhat', 'centos', 'fedora']:
            return [
                ["/usr/bin/sudo", "/sbin/service", "squid", "reload"],
                ["/usr/bin/sudo", "/sbin/service", "squid", "restart"],
            ][is_restart]
Zwróć uwagę, że ten "if" poniżej komentarza powinien być na tym samym poziomie co ten wcześniejszy a jest wysunięty o 1 spację. O ile pamiętam w Pythonie to ma kolosalne znaczenie.
Odnośnik do komentarza
Udostępnij na innych stronach

Nawet tego nie dostrzegłem... Świetnie Panowie, rozwiązaliście mój problem i o ile mogę już skonfigurować Diladele po stronie serwera, to mam problem z poprawnym podłączeniem klientów. To nie jest wybitnie skomplikowane, ale przyczyna leży jeszcze po stronie konfiguracji systemu.

 

ICAP Address: 192.168.1.100

ICAP Port: 1344

 

Podłączenie klientów ogranicza się do zmiany ustawień przeglądarki na proxy 192.168.1.100 oraz port 3128, ale niestety zwraca to błąd:

 

 

ERROR
The requested URL could not be retrieved

The following error was encountered while trying to retrieve the URL: http://bing.com/

    ICAP protocol error.

System zwrócił wartość: [No Error]

This means that some aspect of the ICAP communication failed.

Some possible problems are:

    Serwer ICAP jest nieosiągalny.

    Odebrano błędną odpowiedź z serwera ICAP

Gdzie mogę szukać przyczyny tego błędu komunikacji?

Odnośnik do komentarza
Udostępnij na innych stronach

To oznacza, że usługa qlproxy nie działa może przywróć adres taki jak był w oryginale czyli 127.0.0.1

Hm... Wygląda na to, że się udało - zmiana ze 192.168.1.100 na domyślne 127.0.0.1 w konfiguracji Diladele, a w ustawieniach przeglądarki proxy ustawione na adres Fedory na porcie 3128. Reklamy są wycinane bardzo zgrabnie. Pozostaje dalsza konfiguracja serwera i instalacja certyfikatów SSL :)

 

Wszystkim uczestniczącym w dyskusji bardzo dziękuję za pomoc. Proszę nie zamykać wątku, bo bardzo możliwe, że niebawem tutaj wrócę!

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...