예제 #1
0
    def read_hosts_file(self):
        self.response = dict({"status": 0, "msg": None, "error": None})

        try:
            with open(os.path.join(self.args['hosts_path'], self.name)) as f:
                print('You are viewing hosts file %s' % t.bold(self.name))
                print('*' * 80)
                print(f.read())
                f.close()
                print('*' * 80)
                msg = 'Enjoy hosts!'
                self.__set_response(0, msg)
        except OSError as e:
            error = 'Can\'t read hosts file %s' % t.bold(self.name)
            self.__set_response(-1, None, error)
예제 #2
0
 def __overwrite():
     question = '%s %s' % ('exists, do you want overwrite it?',
                           t.underline('(yes/no)'))
     msg = '%s %s' % (t.bold(default), question)
     print(msg)
     choice = input()
     if str(choice).lower() == 'yes':
         shutil.copyfile(sys_hosts, hosts_filename)
         msg = '%s %s' % (t.bold(default), 'overwrited!')
         return self.__set_response(0, msg)
     elif str(choice).lower() == 'no':
         msg = msg = '%s %s' % (t.bold(default), 'not overwrited!')
         return self.__set_response(0, msg)
     else:
         print('Invalid choice. Retry')
         __overwrite()
예제 #3
0
    def __copy_hosts_file(self):
        def __overwrite():
            qmsg = '%s %s' % ('exists, do you want overwrite it?',t.underline('(yes/no)'))
            msg = '%s %s' % (t.bold(self.name), qmsg)
            print(msg)
            resp = input()
            if str(resp).lower() == 'yes':
                try:
                    shutil.copyfile(origin_hosts_file, new_hosts_file)
                    self.__set_title(new_hosts_file)
                    msg = '%s %s' % (t.bold(self.name), 'overwrited!')
                    self.__set_response(new_hosts_file, origin_hosts_file, msg=msg)
                except Exception as e:
                    msg = '%s %s' % (t.bold(self.name), 'not overwrited!')
                    self.__set_response(new_hosts_file, origin_hosts_file, msg=msg)
            elif str(resp).lower() == 'no':
                msg = '%s %s' % (t.bold(self.name), 'not overwrited!')
                self.__set_response(new_hosts_file, origin_hosts_file, msg=msg)
            else:
                print('Invalid choice. Retry')
                __overwrite()
                
        if self.origin != None:
            origin_hosts_file = os.path.join(self.args['hosts_path'],self.origin)
            if not os.path.exists(origin_hosts_file):
                error = 'Not found origin %s\nExit' % (t.bold(self.origin))
                raise SystemExit(error)
        else:
            origin_hosts_file = hostswitcher.lib.hosts_path()
        
        new_hosts_file = os.path.join(self.args['hosts_path'],self.args['name'][0])

        try:
            if os.path.exists(new_hosts_file) is True:
                return __overwrite()
            else:
                shutil.copyfile(
                    origin_hosts_file,
                    new_hosts_file
                )
                msg = '%s %s' % (t.bold(self.name), 'created!')
                self.__set_title(new_hosts_file)
                self.__set_response(new_hosts_file, origin_hosts_file, msg=msg)
        except Exception as e:
            # self.log.warning(e)
            error = '%s %s' % (t.bold(self.name), 'not created!')
            self.__set_response(new_hosts_file, origin_hosts_file, -1, error=error)
예제 #4
0
    def __set_file(self, origin=None):

        self.response = dict({"status": 0, "msg": None, "error": None})

        try:
            hosts_file = os.path.join(self.args['hosts_path'], self.name)
            if os.path.exists(hosts_file):
                hostswitcher.lib.change_hosts(hosts_file)
                msg = '%s %s' % (t.bold(self.name), 'set!')
                return self.__set_response(0, msg)
            else:
                error = '%s %s' % (t.bold(self.name), 'not exists!')
                # self.log.warning(error)
                return self.__set_response(-1, error=error)
        except Exception as e:
            # self.log.warning(e)
            error = '%s %s' % (t.bold(self.name), 'not set!')
            return self.__set_response(-1, error=error)
예제 #5
0
        def __ask_remove():
            question = '%s %s%s%s' % ('Do you want remove', t.bold(
                self.name), '?', t.underline('(yes/no)'))
            print(question)
            choice = input()
            if str(choice).lower() == 'yes':
                try:
                    os.remove(hosts_file)
                    msg = '%s %s' % (t.bold(self.name), 'removed!')
                    return self.__set_response(0, msg)
                except Exception as e:
                    error = '%s %s' % (t.bold(self.name), 'not removed!')
                    return self.__set_response(-1, error=error)

            elif str(choice).lower() == 'no':
                error = '%s %s' % (t.bold(self.name), 'not removed!')
                return self.__set_response(-1, error=error)
            else:
                print('Invalid choice. Retry')
                __ask_remove()
예제 #6
0
 def __overwrite():
     qmsg = '%s %s' % ('exists, do you want overwrite it?',t.underline('(yes/no)'))
     msg = '%s %s' % (t.bold(self.name), qmsg)
     print(msg)
     resp = input()
     if str(resp).lower() == 'yes':
         try:
             shutil.copyfile(origin_hosts_file, new_hosts_file)
             self.__set_title(new_hosts_file)
             msg = '%s %s' % (t.bold(self.name), 'overwrited!')
             self.__set_response(new_hosts_file, origin_hosts_file, msg=msg)
         except Exception as e:
             msg = '%s %s' % (t.bold(self.name), 'not overwrited!')
             self.__set_response(new_hosts_file, origin_hosts_file, msg=msg)
     elif str(resp).lower() == 'no':
         msg = '%s %s' % (t.bold(self.name), 'not overwrited!')
         self.__set_response(new_hosts_file, origin_hosts_file, msg=msg)
     else:
         print('Invalid choice. Retry')
         __overwrite()
예제 #7
0
 def __edit_hosts_file(self):
     self.response = dict({
         "hostsfile": self.name,
         "status": 0,
         "msg": None,
         "error": None
     })
     try:
         hosts_file = os.path.join(self.args['hosts_path'], self.name)
         if os.path.exists(hosts_file):
             launch_editor(hosts_file)
             msg = 'Edit complete for %s!' % t.bold(self.name)
             return self.__set_response(0, msg)
         else:
             error = 'Can not edit %s!' % t.bold(self.name)
             return self.__set_response(-1, error=error)
     except Exception as e:
         self.log.warning(e)
         error = '%s %s' % ('Can\'t open file', t.bold(self.name))
         return self.__set_response(status=-1, error=error)
예제 #8
0
    def __remove_hosts_file(self):
        def __ask_remove():
            question = '%s %s%s%s' % ('Do you want remove', t.bold(
                self.name), '?', t.underline('(yes/no)'))
            print(question)
            choice = input()
            if str(choice).lower() == 'yes':
                try:
                    os.remove(hosts_file)
                    msg = '%s %s' % (t.bold(self.name), 'removed!')
                    return self.__set_response(0, msg)
                except Exception as e:
                    error = '%s %s' % (t.bold(self.name), 'not removed!')
                    return self.__set_response(-1, error=error)

            elif str(choice).lower() == 'no':
                error = '%s %s' % (t.bold(self.name), 'not removed!')
                return self.__set_response(-1, error=error)
            else:
                print('Invalid choice. Retry')
                __ask_remove()

        self.response = {"status": 0, "msg": None, "error": None}

        hosts_file = os.path.join(self.args['hosts_path'], self.name)
        if os.path.exists(hosts_file):
            if filecmp.cmp(hosts_file,
                           hostswitcher.lib.hosts_path(),
                           shallow=True) is False:
                try:
                    __ask_remove()
                except Exception as e:
                    self.log.error(e)
            else:
                error = 'You can\'t remove %s. Hosts file in use' % t.bold(
                    self.name)
                self.__set_response(-1, error=error)
        else:
            error = 'Nothing to remove. File %s not exists' % t.bold(self.name)
            self.__set_response(-1, error=error)
예제 #9
0
 def __overwrite():
     qmsg = '%s %s' % ('exists, do you want overwrite it?',
                       t.underline('(yes/no)'))
     msg = '%s %s' % (t.bold(self.name), qmsg)
     print(msg)
     resp = input()
     if str(resp).lower() == 'yes':
         try:
             with open(new_hosts_file, 'w') as f:
                 f.write('#HOSTSWITCHER combined from: %s\n' %
                         ','.join(self.origin))
                 f.writelines(hosts)
                 f.close()
                 msg = '%s %s' % (t.bold(self.name), 'writed!')
             self.__set_response(status=0, msg=msg)
         except Exception as e:
             error = '%s %s' % (t.bold(self.name), 'not writed!')
             self.__set_response(status=0, error=error)
     elif str(resp).lower() == 'no':
         error = '%s %s' % (t.bold(self.name), 'not overwrited!')
         self.__set_response(status=-1, error=error)
     else:
         print('Invalid choice. Retry')
         __overwrite()
예제 #10
0
 def create_new_file(self):
     self.response = dict(
         {
             "newhosts": None,
             "origin": self.origin,
             "status": 0,    
             "msg": None,
             "error": None
         }
     )
     try:
         copy_result = self.__copy_hosts_file()
         hosts_file = os.path.join(self.args['hosts_path'],self.name)
         launch_editor(hosts_file)
     except Exception as e:
         self.log.warning(e)
         error = '%s %s' % (t.bold(self.name),'not created!')
         return self.__set_response(status=-1,  error=error)
예제 #11
0
    def __read_host_file(self, hostsfile):
        buffer = list()
        try:
            with open(os.join(self.args['hosts_path'], hostsfile), 'r') as f:
                buffer = f.readlines()
                f.close()
        except Exception as e:
            self.response['missing_origin'].append(hostsfile)
            error = 'Not found %s\nExit' % (t.bold(','.join(
                self.response['missing_origin'])))
            self.__set_response(status=-1, error=error)
            return list()

        hostsfile_data = list()

        for line in buffer:
            if (not line.startswith('#')) and (not line.startswith('\n')):
                hostsfile_data.append(line)

        return hostsfile_data
예제 #12
0
    def copy_current_host_file(self):
        def __overwrite():
            question = '%s %s' % ('exists, do you want overwrite it?',
                                  t.underline('(yes/no)'))
            msg = '%s %s' % (t.bold(default), question)
            print(msg)
            choice = input()
            if str(choice).lower() == 'yes':
                shutil.copyfile(sys_hosts, hosts_filename)
                msg = '%s %s' % (t.bold(default), 'overwrited!')
                return self.__set_response(0, msg)
            elif str(choice).lower() == 'no':
                msg = msg = '%s %s' % (t.bold(default), 'not overwrited!')
                return self.__set_response(0, msg)
            else:
                print('Invalid choice. Retry')
                __overwrite()

        self.response = dict({"status": 0, "msg": None, "error": None})

        try:
            sys_hosts = self.sys_hosts_path
            default = self.file_name
            hosts_filename = os.path.join(self.args['hosts_path'], default)

            if os.path.exists(hosts_filename) is True:
                while True:
                    return __overwrite()
            else:
                shutil.copyfile(sys_hosts, hosts_filename)
                msg = '%s created\nInit completed!' % t.bold(default)
                return self.__set_response(0, msg)
        except Exception as e:
            self.log.warning(e)
            error = '[ERROR] Init not completed!'
            return self.__set_response(-1, error=error)