Changeset 5523


Ignore:
Timestamp:
Jul 14, 2017, 8:01:04 AM (21 months ago)
Author:
Juanma
Message:

WIP

File:
1 edited

Legend:

Unmodified
Added
Removed
  • zero-lliurex-transparent-proxy/trunk/fuentes/install-files/usr/sbin/transparent-proxy.py

    r5522 r5523  
    1212
    1313class mainWindow(Gtk.Window):
    14         def __init__(self):
    15                 self.service="squid-ssl"
    16                 Gtk.Window.__init__(self,title="Transparent Proxy Manager")
    17                 self.box = Gtk.Grid()
    18                 self.add(self.box)
    19                 self.box.add(Gtk.Label(_("Enable Transparent Proxy")))
    20                 self.sw_Enable=Gtk.Switch()
    21                 self.sw_Enable.connect("state-set",self._on_sw_state)
    22                 self.box.attach(self.sw_Enable,1,0,2,1)
     14        def __init__(self):
     15                self.service="squid-ssl"
     16                Gtk.Window.__init__(self,title="Transparent Proxy Manager")
     17                self.box = Gtk.Grid()
     18                self.box.set_column_spacing(20)
     19                self.box.set_row_spacing(20)
     20                self.add(self.box)
     21                self.box.add(Gtk.Label(_("Enable Transparent Proxy")))
     22                self.sw_Enable=Gtk.Switch()
     23                self.sw_Enable.connect("state-set",self._on_sw_state)
     24                self.box.attach(self.sw_Enable,1,0,2,1)
    2325
    24                 self.sw_Enable.set_state(self._is_service_running(self.service))
    25                 if self.sw_Enable.get_state():
    26                         service_label="Service is up and running"
    27                 else:
    28                         service_label="Service is deactivated"
     26                self.sw_Enable.set_state(self._is_service_running(self.service))
     27                if self.sw_Enable.get_state():
     28                        service_label="Service up and running"
     29                else:
     30                        service_label="Service deactivated"
    2931
    30                 self.box.attach_next_to(Gtk.Label(_(service_label)),self.sw_Enable,Gtk.PositionType.BOTTOM, 1, 2)
    31                
    32         def _on_sw_state(self,widget,data):
    33                 sw_state=widget.get_state()
    34                 if sw_state:
    35                         self._enable_proxy()
    36                 else:
    37                         self._disable_proxy();
     32                self.lbl_State=Gtk.Label(_(service_label))
     33#                self.box.attach_next_to(Gtk.Label(_(service_label)),self.sw_Enable,Gtk.PositionType.BOTTOM, 1, 2)
     34                self.box.attach(self.lbl_State,0,1, 1,1)
     35               
     36        def _on_sw_state(self,widget,data):
     37                sw_state=widget.get_state()
     38                if sw_state:
     39                        self.lbl_State.set_text("Enabling transparent proxy")
     40                        self._enable_proxy()
     41                        self.lbl_State.set_text("Service up and running")
     42                else:
     43                        self.lbl_State.set_text("Disabling transparent proxy")
     44                        self._disable_proxy();
     45                        self.lbl_State.set_text("Service deactivated")
    3846
    39         def _enable_proxy(self):
    40                 if not self.is_service_running(self.service):
    41                         #Copy the original squid.conf and make the needed changes
    42                         try:
    43                                 shutil.copy ("/etc/squid/squid.conf","/etc/squid-ssl/squid.conf")
    44                                 f=open("/etc/squid-ssl/squid.conf","r")
    45                                 squidConf=f.readlines()
    46                                 close (f)
    47                                 for line in squidConf:
    48                                         print (line)
     47        def _enable_proxy(self):
     48                if not self._is_service_running(self.service):
     49                        #Copy the original squid.conf and make the needed changes
     50                        try:
     51                                shutil.copy ("/etc/squid/squid.conf","/etc/squid-ssl/squid.conf")
     52                                f=open("/etc/squid-ssl/squid.conf","r")
     53                                squidConf=f.readlines()
     54                                f.close()
     55                                squidConfSsl=[]
     56                                for line in squidConf:
     57                                    if line.startswith("hola"):
     58                                        line="hola modificado\n"
     59                                    squidConfSsl.append(line)
     60                                print(squidConfSsl)
     61                                f=open("/etc/squid-ssl/squid.conf","w")
     62                                f.writelines(squidConfSsl)
     63                                f.close()
     64                        except Exception as e:
     65                                print(str(e))
     66                        #Add iptables redirection
     67                        with open(os.devnull, 'wb') as hide_output:
     68                            subprocess.Popen(['iptables', '-t','nat','-F'], stdout=hide_output, stderr=hide_output).wait()
     69               
     70        def _disable_proxy(self):
     71            with open(os.devnull, 'wb') as hide_output:
     72                if self._is_service_running(self.service):
     73                    #stop the service
     74                    try:
     75                        subprocess.Popen(['service', name, 'stop'], stdout=hide_output, stderr=hide_output).wait()
     76                    except Exception as e:
     77                        print(str(e))
     78                #Clean the firewall
     79                try:
     80                    subprocess.Popen(['iptables', '-t','nat','-F'], stdout=hide_output, stderr=hide_output).wait()
     81                    #Remove the service
     82                    os.remove('/etc/init.d/open-ssl')
     83                except Exception as e:
     84                    print(str(e))
     85                    #Clone the postrm actions
    4986
    50                         except e as Exception:
    51                                 print(str(e))
    52                
    53         def _disable_proxy(self):
    54                 pass
    55 
    56         def _is_service_running(self,name):
    57                 retval=False
    58                 with open(os.devnull, 'wb') as hide_output:
    59                         status = subprocess.Popen(['service', name, 'status'], stdout=hide_output, stderr=hide_output).wait()
    60                 if status==0:
    61                         retval=True
    62                 return retval
     87        def _is_service_running(self,name):
     88                retval=False
     89                try:
     90                    with open(os.devnull, 'wb') as hide_output:
     91                        status = subprocess.Popen(['service', name, 'status'], stdout=hide_output, stderr=hide_output).wait()
     92                    if status==0:
     93                            retval=True
     94                except Exception as e:
     95                    print(str(e))
     96                return retval
    6397
    6498win = mainWindow()
Note: See TracChangeset for help on using the changeset viewer.