The script pushes syslogs to the syslog of the system on every execution. If any changes made to the squid file, the pac file is updated by checking the hash of the old and new states of the file. Also the squid proceess is restarted if any change has been made.
import hashlib import os import syslog import datetime import shutil import subprocess squid_config_file_path="/etc/squid/kutuphane_veritabanlari.squid" squid_config_file = open(squid_config_file_path) readFile = squid_config_file.read() pac_file_root="/var/www/html" hash_file="%s/hash_file"%pac_file_root old_pac_file="%s/proxy.pac"%pac_file_root date_=datetime.datetime.now() backup_file="%s/pac_backup_file_%s.pac"%(pac_file_root,date_) new_pac_filee="%s/new_pac_file.pac"%pac_file_root sha1Hash = hashlib.sha1(readFile) sha1Hashed = sha1Hash.hexdigest() if os.path.exists(hash_file): hash_filee = open(hash_file,'r') readHash = hash_filee.readline() hash_filee.close() if not readHash==sha1Hashed: syslog.syslog(syslog.LOG_WARNING,"Hashes are different kutuphane_veritabanlari.squid config file has been modified the old hash :%s new hash:%s "%(readHash,sha1Hashed)) shutil.copyfile(old_pac_file,backup_file) new_pac_file = open(new_pac_filee,"w+") new_pac_file.write("function FindProxyForURL(url, host) {\n") new_pac_file.write("var proxyserver = 'proxy2.iyte.edu.tr:8080';\n") new_pac_file.write("var proxylist = new Array(\n") with open(squid_config_file_path) as openfileobject: for line in openfileobject: if (line[0].isalpha() or line.startswith(".")): new_pac_file.write('"%s",\n' % (line.rstrip())) new_pac_file.write('"dummy.com"\n);\n') new_pac_file.write("for(var i=0; i<proxylist.length; i++) {\n") new_pac_file.write("\tvar value = proxylist[i];\n") new_pac_file.write("\t\tif (dnsDomainIs(host, value) ) {\n") new_pac_file.write("\t\treturn 'PROXY '+proxyserver;\n") new_pac_file.write("\t}\n") new_pac_file.write("}\n") new_pac_file.write("return 'DIRECT';\n") new_pac_file.write("}") new_pac_file.close() os.remove(hash_file) hash_file_create=open(hash_file,'w') hash_file_create.write(sha1Hashed) hash_file_create.close() shutil.copyfile(new_pac_filee,old_pac_file) subprocess.call("%s %s %s" % ('service', 'squid', 'reload'),shell=True) else: syslog.syslog(syslog.LOG_WARNING,"Hashes are same kutuphane_veritabanlari.squid config file hasn't been changed.") else: hash_file_create=open(hash_file,'w') hash_file_create.write(sha1Hashed) hash_file_create.close() squid_config_file.close()