enable and configure VM for flatpak-cache

Signed-off-by: Leo Puvilland <leo@craftcat.dev>
This commit is contained in:
Leo Puvilland 2024-05-03 11:02:59 -07:00 committed by leo
parent 2ee9b289a2
commit fca6a0390d
17 changed files with 154 additions and 476 deletions

View file

@ -0,0 +1,33 @@
---
csi_primary_contact: admin@fedoraproject.org / sysadmin-main-members
csi_purpose: Centralized cache for any Flatpak requests from OpenQA
csi_relationship: |
This is to avoid slamming Flathub with requests during automated testing.
It hosts squid to cache anything under the flathub.org domain.
It is locked down to only allow requests from OpenQA.
* This host relies on:
The virthost it's hosted on (qvmhost-x86-02)
* Things that rely on this host:
Any requests using Flatpak from OpenQA.
If this host is down, OpenQA hosts might fail.
# For the MOTD
csi_security_category: Low
freezes: false
ipa_client_shell_groups:
- sysadmin-noc
- sysadmin-openqa
- sysadmin-main
ipa_client_sudo_groups:
- sysadmin-noc
- sysadmin-openqa
- sysadmin-main
ipa_host_group: flatpak_cache
lvm_size: 20000
max_mem_size: 2048
mem_size: 2048
num_cpus: 2
primary_auth_source: ipa
tcp_ports: [3128]

View file

@ -0,0 +1,6 @@
---
datacenter: iad2
eth0_ipv4_ip: 10.3.174.70
ks_repo: https://infrastructure.fedoraproject.org/repo/rhel/RHEL9-x86_64/
ks_url: https://infrastructure.fedoraproject.org/repo/rhel/ks/kvm-rhel
vmhost: qvmhost-x86-02.iad2.fedoraproject.org

View file

@ -117,6 +117,9 @@ busgateway01.iad2.fedoraproject.org
[busgateway_stg]
busgateway01.stg.iad2.fedoraproject.org
[flatpak_cache]
flatpak-cache01.iad2.fedoraproject.org
[github2fedmsg]
github2fedmsg01.iad2.fedoraproject.org
@ -1133,6 +1136,7 @@ debuginfod
dns_iad2
download_iad2
fedimg
flatpak_cache
github2fedmsg
ipa
ipsilon

View file

@ -33,6 +33,7 @@
- import_playbook: /srv/web/infra/ansible/playbooks/groups/dns.yml
- import_playbook: /srv/web/infra/ansible/playbooks/groups/download.yml
- import_playbook: /srv/web/infra/ansible/playbooks/groups/fedimg.yml
- import_playbook: /srv/web/infra/ansible/playbooks/groups/flatpak-cache.yml
- import_playbook: /srv/web/infra/ansible/playbooks/groups/github2fedmsg.yml
- import_playbook: /srv/web/infra/ansible/playbooks/groups/ipa.yml
- import_playbook: /srv/web/infra/ansible/playbooks/groups/ipsilon.yml

View file

@ -0,0 +1,24 @@
---
- import_playbook: "/srv/web/infra/ansible/playbooks/include/virt-create.yml"
vars:
myhosts: "flatpak_cache"
- name: make the box be real
hosts: flatpak-cache
user: root
gather_facts: True
vars_files:
- /srv/web/infra/ansible/vars/global.yml
- "/srv/private/ansible/vars.yml"
- /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml
roles:
- base
- rkhunter
- nagios_client
- zabbix/zabbix_agent
- ipa/client
- collectd/base
- sudo
- flatpak-cache

View file

@ -1,86 +0,0 @@
- name: make the app be real
# hosts: os_control_stg[0]:os_control[0]
hosts: os_control_stg[0]
user: root
gather_facts: False
vars_files:
- /srv/web/infra/ansible/vars/global.yml
- /srv/private/ansible/vars.yml
- /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml
vars:
roles:
- role: openshift/project
app: flatpak-cache
description: "Flatpak Cache"
appowners:
- leo
- kevin
- adamwill
tags:
- apply-appowners
- role: openshift/object
app: flatpak-cache
file: imagestream.yml
objectname: imagestream.yml
- role: openshift/object
app: flatpak-cache
template: buildconfig.yml
objectname: buildconfig.yml
- role: openshift/object
app: flatpak-cache
file: storage.yml
objectname: storage.yml
- role: openshift/secret-file
app: flatpak-cache
secret_name: flatpak-cache-ca
key: ca.crt
privatefile: "flatpak-cache-certs/{{env}}/pki/ca.crt"
- role: openshift/secret-file
app: flatpak-cache
secret_name: flatpak-cache-key
key: ca.key
privatefile: "flatpak-cache-certs/{{env}}/pki/private/ca.key"
- role: openshift/secret-file
app: flatpak-cache
secret_name: flatpak-cache-dhparam
key: dh.pem
privatefile: "flatpak-cache-certs/{{env}}/pki/dh.pem"
- role: openshift/object
app: flatpak-cache
template: configmap.yml
objectname: configmap.yml
- role: openshift/object
app: flatpak-cache
file: service.yml
objectname: service.yml
# Routes
- role: openshift/route
app: flatpak-cache
routename: web
host: "flatpak-cache.apps.ocp{{ env_suffix }}.fedoraproject.org"
servicename: flatpak-cache
serviceport: web
annotations:
haproxy.router.openshift.io/timeout: 5m
- role: openshift/object
app: flatpak-cache
file: route.yml
objectname: route.yml
- role: openshift/object
app: flatpak-cache
template: deployment.yml
objectname: deployment.yml

View file

@ -0,0 +1,85 @@
- name: install packages needed
package: name={{ item }} state=present
with_items:
- squid
- gettext
- nss_wrapper
- bind-utils
tags:
- flatpak-cache
- config
- name: Ensure /var/spool/squid directory exists
file:
path: /var/spool/squid
state: directory
owner: squid
group: squid
mode: 0755
tags:
- flatpak-cache
- config
- name: Ensure /etc/pki/squid directory exists
file:
path: /etc/pki/squid
state: directory
owner: squid
group: squid
mode: 0755
tags:
- flatpak-cache
- config
- name: Ensure /var/lib/squid/ssl_db exists
file:
path: /var/lib/squid/ssl_db
state: directory
owner: squid
group: squid
mode: 0755
tags:
- flatpak-cache
- config
- name: Install squid configuration file
template: src=squid.conf dest=/etc/squid/squid.conf
tags:
- flatpak-cache
- config
- name: Install SSL Certificates
copy: src={{ item.src }}
dest=/etc/pki/squid/{{ item.dest }}
owner={{ item.owner }} group={{ item.group }} mode = {{ item.mode }}
with_items:
- src: "{{private}}/files/flatpak-cache-certs/production/pki/ca.crt"
dest: ca.crt
owner: squid
group: squid
mode: "644"
- src: "{{private}}/files/flatpak-cache-certs/production/pki/private/ca.key"
dest: ca.key
owner: squid
group: squid
mode: "644"
- src: "{{private}}/files/flatpak-cache-certs/production/pki/dh.pem"
dest: dh.pem
owner: squid
group: squid
mode: "644"
- name: Generate SSL Database
command: /usr/lib64/squid/security_file_certgen -c -s /var/lib/squid/ssl_db
tags:
- flatpak-cache
- config
- name: Enable and start squid service
systemd_service:
name: squid.service
enabled: true
state: started
tags:
- flatpak-cache
- config

View file

@ -31,7 +31,7 @@ follow_x_forwarded_for allow proxies
http_port 3128 tcpkeepalive=60,30,3 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=20MB tls-cert=/etc/pki/squid/ca/ca.crt tls-key=/etc/pki/squid/key/ca.key tls-dh=prime256v1:/etc/pki/squid/dhparam/dh.pem
sslcrtd_program /usr/lib64/squid/security_file_certgen -s /tmp/ssl_db -M 20MB
sslcrtd_program /usr/lib64/squid/security_file_certgen -s /var/lib/squid/ssl_db -M 20MB
sslcrtd_children 5
ssl_bump server-first all
ssl_bump stare all

View file

@ -1,10 +0,0 @@
apiVersion: image.openshift.io/v1
items:
- apiVersion: image.openshift.io/v1
kind: ImageStream
metadata:
name: flatpak-cache
labels:
build: flatpak-cache
kind: List
metadata: {}

View file

@ -1,16 +0,0 @@
apiVersion: route.openshift.io/v1
kind: Route
metadata:
annotations:
haproxy.router.openshift.io/timeout: 5m
labels:
app: flatpak-cache
name: web-direct
namespace: flatpak-cache
spec:
host: flatpak-cache.stg.fedoraproject.org
port:
targetPort: web
to:
kind: Service
name: flatpak-cache

View file

@ -1,16 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: flatpak-cache
labels:
app: flatpak-cache
service: flatpak-cache
namespace: flatpak-cache
spec:
ports:
- name: web
port: 80
targetPort: 3128
type: NodePort
selector:
app: flatpak-cache

View file

@ -1,11 +0,0 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: data
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 20Gi
storageClassName: ocs-storagecluster-cephfs

View file

@ -1,42 +0,0 @@
---
apiVersion: build.openshift.io/v1
items:
- apiVersion: build.openshift.io/v1
kind: BuildConfig
metadata:
labels:
build: flatpak-cache-build
name: flatpak-cache-build
spec:
runPolicy: Serial
source:
dockerfile: |-
FROM fedora:39
LABEL \
name="flatpak-cache" \
vendor="Fedora Infrastructure" \
license="MIT"
RUN dnf install -y \
gettext \
hostname \
nss_wrapper \
bind-utils \
squid && \
dnf autoremove -y && \
dnf clean all -y
RUN mkdir -p /var/spool/squid
EXPOSE 80
type: Dockerfile
strategy:
type: Docker
dockerStrategy:
noCache: true
output:
to:
kind: ImageStreamTag
name: flatpak-cache:latest
triggers:
- type: ImageChange
- type: ConfigChange
kind: List
metadata: {}

View file

@ -1,19 +0,0 @@
{% macro load_file(filename) %}{% include filename %}{%- endmacro -%}
---
apiVersion: v1
kind: List
metadata: {}
items:
- apiVersion: v1
kind: ConfigMap
metadata:
name: flatpak-cache-configmap
labels:
app: flatpak-cache
data:
squid.conf: |-
{{ load_file('squid.conf') | indent(6) }}
mime.conf: |-
{{ load_file('mime.conf') | indent(6) }}
start.sh: |-
{{ load_file('start.sh') | indent(6) }}

View file

@ -1,76 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: flatpak-cache
app.kubernetes.io/component: flatpak-cache
app.kubernetes.io/instance: flatpak-cache
app.kubernetes.io/name: flatpak-cache
app.kubernetes.io/part-of: flatpak-cache-app
name: flatpak-cache
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: flatpak-cache
strategy:
type: Recreate
template:
metadata:
creationTimestamp: null
labels:
app: flatpak-cache
deployment: flatpak-cache
spec:
containers:
- env:
volumeMounts:
- name: config-volume
mountPath: /etc/squid
readOnly: true
- name: data
mountPath: /var/spool/squid
- name: flatpak-cache-ca-volume
mountPath: /etc/pki/squid/ca
readOnly: true
- name: flatpak-cache-key-volume
mountPath: /etc/pki/squid/key
readOnly: true
- name: flatpak-cache-dhparam-volume
mountPath: /etc/pki/squid/dhparam
readOnly: true
imagePullPolicy: Always
image: image-registry.openshift-image-registry.svc:5000/flatpak-cache/flatpak-cache:latest
name: flatpak-cache
ports:
- containerPort: 3128
command:
- bash
args:
- /etc/squid/start.sh
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
volumes:
- name: config-volume
configMap:
name: flatpak-cache-configmap
- name: data
persistentVolumeClaim:
claimName: data
- name: flatpak-cache-ca-volume
secret:
secretName: flatpak-cache-ca
- name: flatpak-cache-key-volume
secret:
secretName: flatpak-cache-key
- name: flatpak-cache-dhparam-volume
secret:
secretName: flatpak-cache-dhparam

View file

@ -1,196 +0,0 @@
## Copyright (C) 1996-2022 The Squid Software Foundation and contributors
##
## Squid software is distributed under GPLv2+ license and includes
## contributions from numerous individuals and organizations.
## Please see the COPYING and CONTRIBUTORS files for details.
##
#
# This file associates URL patterns for servers or services
# that don't automatically include Content-Type (like ftp) with a mime type
# and a graphical icon.
#
# Content-Encodings are taken from section 3.1 of RFC2068 (HTTP/1.1)
#
# This file has the format :
#
# regexp content-type icon encoding mode actions
#--------------------------------------------------------------------------------------------------------
\.gif$ image/gif silk/image.png - image +download
\.mime$ www/mime silk/page_white_text.png - ascii +download
^internal-dirup$ - silk/arrow_up.png - -
^internal-dir$ - silk/folder.png - -
^internal-link$ - silk/link.png - -
^internal-logo$ - SN.png - -
^internal-menu$ - silk/folder_table.png - -
^internal-text$ - silk/page_white_text.png - -
^internal-index$ - silk/folder_table.png - -
^internal-image$ - silk/image.png - -
^internal-sound$ - silk/music.png - -
^internal-movie$ - silk/film.png - -
^internal-telnet$ - silk/computer_link.png - -
^internal-binary$ - silk/application.png - -
^internal-unknown$ - silk/bullet_red.png - -
^internal-view$ - silk/page_white.png - -
^internal-download$ - silk/package_go.png - -
\.bin$ application/macbinary silk/application.png - image +download
\.oda$ application/oda silk/application.png - image +download
\.exe$ application/octet-stream silk/application.png - image +download
\.pdf$ application/pdf silk/page_white_acrobat.png - image +download
\.ai$ application/postscript silk/page_green.png - image +download +view
\.eps$ application/postscript silk/page_green.png - image +download +view
\.ps$ application/postscript silk/page_green.png - image +download +view
\.rtf$ text/rtf silk/page_white_picture.png - ascii +download +view
\.Z$ - silk/compress.png compress image +download
\.gz$ - silk/compress.png gzip image +download
\.bz2$ application/octet-stream silk/compress.png - image +download
\.bz$ application/octet-stream silk/compress.png - image +download
\.tgz$ application/x-tar silk/compress.png gzip image +download
\.csh$ application/x-csh silk/script.png - ascii +download +view
\.dvi$ application/x-dvi silk/page_white_text.png - image +download
\.hdf$ application/x-hdf silk/database.png - image +download
\.latex$ application/x-latex silk/page_white_text.png - ascii +download +view
\.lsm$ text/plain silk/page_white_text.png - ascii +download +view
\.nc$ application/x-netcdf silk/cd.png - image +download
\.cdf$ application/x-netcdf silk/cd.png - ascii +download
\.sh$ application/x-sh silk/script.png - ascii +download +view
\.tcl$ application/x-tcl silk/script.png - ascii +download +view
\.tex$ application/x-tex silk/page_white_text.png - ascii +download +view
\.texi$ application/x-texinfo silk/page_white_text.png - ascii +download +view
\.texinfo$ application/x-texinfo silk/page_white_text.png - ascii +download +view
\.t$ application/x-troff silk/page_white_text.png - ascii +download +view
\.roff$ application/x-troff silk/page_white_text.png - ascii +download +view
\.tr$ application/x-troff silk/page_white_text.png - ascii +download +view
\.man$ application/x-troff-man silk/page_white_magnify.png - ascii +download +view
\.me$ application/x-troff-me silk/page_white_text.png - ascii +download +view
\.ms$ application/x-troff-ms silk/page_white_text.png - ascii +download +view
\.src$ application/x-wais-source silk/script.png - ascii +download
\.zip$ application/zip silk/compress.png - image +download
\.bcpio$ application/x-bcpio silk/box.png - image +download
\.cpio$ application/x-cpio silk/box.png - image +download
\.gtar$ application/x-gtar silk/page_white_stack.png - image +download
\.rpm$ application/x-rpm silk/package.png - image +download
\.shar$ application/x-shar silk/script.png - image +download +view
\.sv4cpio$ application/x-sv4cpio silk/box.png - image +download
\.sv4crc$ application/x-sv4crc silk/box.png - image +download
\.tar$ application/x-tar silk/page_white_stack.png - image +download
\.ustar$ application/x-ustar silk/page_white_stack.png - image +download
\.au$ audio/basic silk/music.png - image +download
\.snd$ audio/basic silk/music.png - image +download
\.mp2$ audio/mpeg silk/music.png - image +download
\.mp3$ audio/mpeg silk/music.png - image +download
\.mpga$ audio/mpeg silk/music.png - image +download
\.aif$ audio/x-aiff silk/music.png - image +download
\.aiff$ audio/x-aiff silk/music.png - image +download
\.aifc$ audio/x-aiff silk/music.png - image +download
\.wav$ audio/x-wav silk/music.png - image +download
\.bmp$ image/bmp silk/image.png - image +download
\.ief$ image/ief silk/image.png - image +download
\.jpeg$ image/jpeg silk/photo.png - image +download
\.jpg$ image/jpeg silk/photo.png - image +download
\.jpe$ image/jpeg silk/photo.png - image +download
\.tiff$ image/tiff silk/photo.png - image +download
\.tif$ image/tiff silk/image.png - image +download
\.ras$ image/x-cmu-raster silk/image.png - image +download
\.pnm$ image/x-portable-anymap silk/image.png - image +download
\.pbm$ image/x-portable-bitmap silk/image.png - image +download
\.pgm$ image/x-portable-graymap silk/image.png - image +download
\.ppm$ image/x-portable-pixmap silk/image.png - image +download
\.rgb$ image/x-rgb silk/image.png - image +download
\.xbm$ image/x-xbitmap silk/image.png - image +download
\.xpm$ image/x-xpixmap silk/image.png - image +download
\.xwd$ image/x-xwindowdump silk/image.png - image +download
\.html$ text/html silk/page_world.png - ascii +download +view
\.htm$ text/html silk/page_world.png - ascii +download +view
\.css$ text/css silk/css.png - ascii +download +view
\.js$ application/x-javascript silk/script.png - ascii +download +view
\.c$ text/plain silk/page_white_c.png - ascii +download
\.h$ text/plain silk/page_white_c.png - ascii +download
\.cc$ text/plain silk/page_white_cplusplus.png - ascii +download
\.cpp$ text/plain silk/page_white_cplusplus.png - ascii +download
\.hh$ text/plain silk/page_white_c.png - ascii +download
\.m$ text/plain silk/script.png - ascii +download
\.f90$ text/plain silk/page_code.png - ascii +download
\.txt$ text/plain silk/page_white_text.png - ascii +download
\.asc$ text/plain silk/page_white_text.png - ascii +download
\.rtx$ text/richtext silk/page_white_picture.png - ascii +download +view
\.tsv$ text/tab-separated-values silk/script.png - ascii +download +view
\.etx$ text/x-setext silk/page_white_text.png - ascii +download +view
\.mpeg$ video/mpeg silk/film.png - image +download
\.mpg$ video/mpeg silk/film.png - image +download
\.mpe$ video/mpeg silk/film.png - image +download
\.qt$ video/quicktime silk/film.png - image +download
\.mov$ video/quicktime silk/film.png - image +download
\.avi$ video/x-msvideo silk/film.png - image +download
\.movie$ video/x-sgi-movie silk/film.png - image +download
\.cpt$ application/mac-compactpro silk/compress.png - image +download
\.hqx$ application/mac-binhex40 silk/page_white_zip.png - image +download
\.mwrt$ application/macwriteii silk/page_white_text.png - image +download
\.msw$ application/msword silk/script.png - image +download
\.doc$ application/msword silk/page_white_word.png - image +download +view
\.xls$ application/vnd.ms-excel silk/page_excel.png - image +download
\.ppt$ application/vnd.ms-powerpoint silk/page_white_powerpoint.png - image +download
\.wk[s1234]$ application/vnd.lotus-1-2-3 silk/script.png - image +download
\.mif$ application/vnd.mif silk/page_white_text.png - image +download
\.sit$ application/x-stuffit silk/compress.png - image +download
\.pict$ application/pict silk/picture.png - image +download
\.pic$ application/pict silk/picture.png - image +download
\.arj$ application/x-arj-compressed silk/compress.png - image +download
\.lzh$ application/x-lha-compressed silk/compress.png - image +download
\.lha$ application/x-lha-compressed silk/compress.png - image +download
\.zlib$ application/x-deflate silk/compress.png deflate image +download
README text/plain silk/information.png - ascii +download
^core$ application/octet-stream silk/bomb.png - image +download
\.core$ application/octet-stream silk/bomb.png - image +download
\.png$ image/png silk/image.png - image +download
\.cab$ application/octet-stream silk/compress.png - image +download +view
\.xpi$ application/x-xpinstall silk/plugin_add.png - image +download
\.class$ application/octet-stream silk/script_gear.png - image +download
\.java$ text/plain silk/cup.png - ascii +download
\.dcr$ application/x-director silk/script_palette.png - image +download
\.dir$ application/x-director silk/film.png - image +download
\.dxr$ application/x-director silk/film_key.png - image +download
\.djv$ image/vnd.djvu silk/image.png - image +download
\.djvu$ image/vnd.djvu silk/image.png - image +download
\.dll$ application/octet-stream silk/plugin.png - image +download
\.dms$ application/octet-stream silk/drive_disk.png - image +download
\.ez$ application/andrew-inset silk/bullet_red.png - image +download
\.ice$ x-conference/x-cooltalk silk/compress.png - image +download
\.iges$ model/iges silk/image.png - image +download
\.igs$ model/iges silk/image.png - image +download
\.kar$ audio/midi silk/music.png - image +download
\.mid$ audio/midi silk/music.png - image +download
\.midi$ audio/midi silk/music.png - image +download
\.mesh$ model/mesh silk/image.png - image +download
\.silo$ model/mesh silk/image.png - image +download
\.mxu$ video/vnd.mpegurl silk/film.png - image +download
\.pdb$ chemical/x-pdb silk/chart_line.png - image +download
\.pgn$ application/x-chess-pgn silk/bricks.png - image +download
\.ra$ audio/x-realaudio silk/music.png - image +download
\.ram$ audio/x-pn-realaudio silk/music.png - image +download
\.rm$ audio/x-pn-realaudio silk/music.png - image +download
\.sgml$ text/sgml silk/page_code.png - ascii +download
\.sgm$ text/sgml silk/page_code.png - ascii +download
\.skd$ application/x-koan silk/music.png - image +download
\.skm$ application/x-koan silk/music.png - image +download
\.skp$ application/x-koan silk/music.png - image +download
\.skt$ application/x-koan silk/music.png - image +download
\.smi$ application/smil silk/layers.png - image +download
\.smil$ application/smil silk/layers.png - image +download
\.so$ application/octet-stream silk/plugin.png - image +download
\.spl$ application/x-futuresplash silk/page_white_flash.png - image +download
\.swf$ application/x-shockwave-flash silk/page_white_flash.png - image +download
\.vcd$ application/x-cdlink silk/cd.png - image +download
\.vrml$ model/vrml silk/image.png - image +download
\.wbmp$ image/vnd.wap.wbmp silk/image.png - image +download
\.wbxml$ application/vnd.wap.wbxml silk/database_table.png - image +download
\.wmlc$ application/vnd.wap.wmlc silk/database_table.png - image +download
\.wmlsc$ application/vnd.wap.wmlscriptc silk/script.png - image +download
\.wmls$ application/vnd.wap.wmlscript silk/script.png - image +download
\.xht$ application/xhtml silk/page_world.png - ascii +download
\.xhtml$ application/xhtml silk/page_world.png - ascii +download
\.xml$ text/xml silk/page_world.png - ascii +download
\.xsl$ text/xml silk/layout.png - ascii +download
\.xyz$ chemical/x-xyz silk/chart_line.png - image +download
#
# the default
. text/plain silk/bullet_red.png - image +download +view

View file

@ -1,3 +0,0 @@
/usr/lib64/squid/security_file_certgen -c -s /tmp/ssl_db -M 4096 && \
/sbin/squid -z && \
/sbin/squid --foreground -f /etc/squid/squid.conf