diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..b25c15b81fae06e1c55946ac6270bfdb293870e8
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+*~
diff --git a/files/squid/helpers/certificate/Oct15-Oct16/myCA.der b/files/squid/helpers/certificate/Oct15-Oct16/myCA.der
new file mode 100644
index 0000000000000000000000000000000000000000..ef3fb7f82ed410ab86775ad032d63b0c64c3d90e
Binary files /dev/null and b/files/squid/helpers/certificate/Oct15-Oct16/myCA.der differ
diff --git a/files/squid/helpers/certificate/Oct15-Oct16/myCA.pem b/files/squid/helpers/certificate/Oct15-Oct16/myCA.pem
new file mode 100644
index 0000000000000000000000000000000000000000..ab419a82e2e0a725acbbecfbf3d2047b1a67bd6c
--- /dev/null
+++ b/files/squid/helpers/certificate/Oct15-Oct16/myCA.pem
@@ -0,0 +1,53 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCzOA9N5QGu4gG2
+XnxmAFCHSlRt88fdreUlOv34wBXf7fvuBozStATJzW+mTvMhRH1uUuwTEiOBxl03
+9YN5M2+E7oS6IRAGBRdQimUQu9halQIuHGj7seFwLhzposd6uLHmeQmjjTPC+LYr
+yoxCbahZ3dTCvNtmT1IveVe8v8H8k0ze8wspN41VNzF4P9YLl+cM1r4/u7bSY0yh
+PUrmVNpYPayxewTB7+rKIGTY2mkutzM9pzQlJHWs39wyJdfuTiHxYSAgvABGVMXm
+A93aKDq2pHGArCBDg/fw3S0B3wxm5gMKeNulSb5gg4T9lHxHjTmWHn0BsuG5BGey
+MiMyBTt9AgMBAAECggEAB/ivXZSZDZFJ6DWtrM/IxSu+M6HLOwX4Ej7cewr4Lhyk
+vwKVku2k5OD5XVlXoRwtxBF2JKcC40vSa6HE9kgeZrhBORItZ0cksVVmh2cDiYvl
+K+3hkYho8Zdre8zcuI2shAbQMfEe40YyvCHnOTEtcsnWI89IpvVSP4BTMbcJxtUn
+SYGErmOjnM+HydkSt/kqR06OfwphysANtnzng4yc++sVsa7EpE6pvYELSWB5I2YM
+wfTGDDJIBr3FDwbHp+188cI5FYXlbot5BcYc25i2KErnFOiUhG3Z0W/tKrK5hfy5
+rJgAhpIqZaKaZqU11fKEFGMX0H2XKTNxPY+4btxoIQKBgQDsW7ai+d8LPWo6ChLh
+cSTBb/yaOdtT/uMK6PzwfCGJYW4Ykpp4pN0KZWGg1EQJb0cWkaR8ORButXhKBZlb
+drEPNaIbkMr2sHic/OipShjEKLK1cKbmYyFV4Jz0UaRDOiq2Q7Ceurs8W0ExxGe+
+m5Bp53JcG8b8hSqYSkAw/MiFRQKBgQDCHMPmN5KlW5Yc/BuEXPwgY8hUiS418A58
+sDSVvg8WQKmsd7ZG0NFbgTfj3DXmkLNIJKF/5QYLRIekuObh7UgpMa0HOB8l00F0
+xEwRBUCTtfxUArODu9G0qAdvhaVLQ4sdlpi3Sgu+jBCz5KL+juNAt51x0YLkKsCR
+DWeKLRV02QKBgBpAaX2agSJvdM/zdHtjpLBzbrv2dxzSL4dzrzxKnTL0BlVmWw/R
+R9eywPArA0+E84FXNcyyTdfuAek+y/SzryDAVTv4jgJuQUc2c+TxnOSUnJy4YWEv
+W3F9XBFqy/LHkBzkUcafeNJQVGJhrSAniReqJDKEx0oexEdb39tRCDh9AoGAGWLf
+r+0Wra+Tq0jBZIcwph/GpF+ofn9dtarpxaesm3Frf1XMrehDaR82KwOyvOuxtr6r
+rGlMaA7XWpCgCW4Z4OFRSr9pO24sglPlytgQAQFs9aPAzHq0y1aqWkh1PKmhuQXo
+BRiW/p2c1ZoSQw525BDfc3I+Fw8MTiwdnXGV+8kCgYEAwl7x+eN7dBKx72vE5TfP
+xn8nPcsUybGmLFMWrEw4gUebnTQpqC18kvH1frJFB+9VztdY+pClFFs4PJ+n0hPd
+T9y/Bi1ya2b/Va8JqDznMwQ2rxZwhoR4tYRGx226JLyHvCkjMK/NDuv4FIdbLKgk
+TAgmqByAnacxFmIJnos1z5M=
+-----END PRIVATE KEY-----
+-----BEGIN CERTIFICATE-----
+MIIEKTCCAxGgAwIBAgIJAKSwxnI20xv6MA0GCSqGSIb3DQEBCwUAMIGqMQswCQYD
+VQQGEwJTRTEVMBMGA1UECAwMT3N0ZXJnb3RsYW5kMRIwEAYDVQQHDAlMaW5rb3Bp
+bmcxHTAbBgNVBAoMFExpbmtvcGluZyB1bml2ZXJzaXR5MTcwNQYDVQQLDC5EZXBh
+cnRtZW50IG9mIENvbXB1dGVyIGFuZCBJbmZvcm1hdGlvbiBTY2llbmNlMRgwFgYD
+VQQDDA9leGFtLmlkYS5saXUuc2UwHhcNMTUxMDI4MDcwMDM5WhcNMTYxMDI3MDcw
+MDM5WjCBqjELMAkGA1UEBhMCU0UxFTATBgNVBAgMDE9zdGVyZ290bGFuZDESMBAG
+A1UEBwwJTGlua29waW5nMR0wGwYDVQQKDBRMaW5rb3BpbmcgdW5pdmVyc2l0eTE3
+MDUGA1UECwwuRGVwYXJ0bWVudCBvZiBDb21wdXRlciBhbmQgSW5mb3JtYXRpb24g
+U2NpZW5jZTEYMBYGA1UEAwwPZXhhbS5pZGEubGl1LnNlMIIBIjANBgkqhkiG9w0B
+AQEFAAOCAQ8AMIIBCgKCAQEAszgPTeUBruIBtl58ZgBQh0pUbfPH3a3lJTr9+MAV
+3+377gaM0rQEyc1vpk7zIUR9blLsExIjgcZdN/WDeTNvhO6EuiEQBgUXUIplELvY
+WpUCLhxo+7HhcC4c6aLHerix5nkJo40zwvi2K8qMQm2oWd3UwrzbZk9SL3lXvL/B
+/JNM3vMLKTeNVTcxeD/WC5fnDNa+P7u20mNMoT1K5lTaWD2ssXsEwe/qyiBk2Npp
+LrczPac0JSR1rN/cMiXX7k4h8WEgILwARlTF5gPd2ig6tqRxgKwgQ4P38N0tAd8M
+ZuYDCnjbpUm+YIOE/ZR8R405lh59AbLhuQRnsjIjMgU7fQIDAQABo1AwTjAdBgNV
+HQ4EFgQUjoDLSsvG3/cnXQzl7inTVxID/nwwHwYDVR0jBBgwFoAUjoDLSsvG3/cn
+XQzl7inTVxID/nwwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAAXAR
+DWLxxnlvBm4kg7ohQ3h9uvqAB5i2ux+CBibiyWWJEq1doG3bwsSxJcHkfsxg7x1f
+BTHlhjVJD9ZkQAnx9FXs2mhfLwe5YOjTQtlDWxjZCd025rEhkf8OMAQuIRZ82kIQ
+Pe83px+yk3os8+nEhGFDVZobYFEoK9zbk2REnDzUTtp9nY3YB8NqLvSmJEmRj/h8
+f3/CEzgkOItREwnuMlwBrPECdBTE6WCSnj19O7FTdE3eHIeKOp62+1UX3GB2h01W
+FH1EoOj8a/CsFiih9loN2jL7lTOPJDRmtOH36lWV08TfR4BuC/V2xXvWK/OZU6z1
+Wx+SJ4JjkrwYRSECmg==
+-----END CERTIFICATE-----
diff --git a/files/squid/helpers/certificate/Oct16-Oct17/myCA.der b/files/squid/helpers/certificate/Oct16-Oct17/myCA.der
new file mode 100644
index 0000000000000000000000000000000000000000..02d958b07ba45791122ceb582bf58f0ec243e2ec
Binary files /dev/null and b/files/squid/helpers/certificate/Oct16-Oct17/myCA.der differ
diff --git a/files/squid/helpers/certificate/Oct16-Oct17/myCA.pem b/files/squid/helpers/certificate/Oct16-Oct17/myCA.pem
new file mode 100644
index 0000000000000000000000000000000000000000..4e332b03538d19f32943231a941ad69dd069ce02
--- /dev/null
+++ b/files/squid/helpers/certificate/Oct16-Oct17/myCA.pem
@@ -0,0 +1,51 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDsn94STqbFmBpc
+T2cDLpkWUABW6vPZib1Xul8xF4x4ffyLjq7TxCWzpvRmmJDotIUTEDE2th+7+iKz
+JjPq8oECRy+HRddt5eUT9SktMqRkvZfeepIvxvlVSXVLlNGpk88x83KYlc9Q9mYc
+cppLdhapvy3Tb0mMlvZnSTlESYpIMVIneJ7ZcUjUEII3aBZAKe60CkJw7F+SL0RX
+niL5uP6Fc3UXptkG2FrDhRW5pG+0pm2gAEVuEE96OyUCai2DfbWd1CyxppJICsGh
+db2q01YANzB/G9yiomc+JgPzuEZLAU2TyUhnQLe6UVqZPVU/MOH+z79+dEMBI+lj
+oRMZMW7xAgMBAAECggEAVGHSZL7tlCtgwyiBuM3GRAG1jUluOlZ3UjChP7WBH3r2
+M6JnUBdzxnQ0Vd30VzgA+MJeen9KI9PYygBGpXNjdDeEiH3sjEFehtZ3n6menFpM
+LUeSmD0hrztp+9EPT6TpT4vcgvNxohKsaVqpEV4ESPZnVi4qkVtIdZ7UMDj1ejaE
+39W1nc+4c3/fBKPRfqnLBByqpKkPkw9US7gFRAXcIWMbZMfH9SZM+wKTlDRSWaS7
+1gdPBXrbeWpFTcp2dNUlaARBBNuqrE1JUIDkYrUuGrUqo5wZOa+HHT3U+0ApxnZn
+HcptUWaqokVkGRpsA53hbTuVgIRSRu3M9wC6YHplzQKBgQD6TvACvsKjg92bwCjX
+Dvv6wYsyYQm1Q8/KGhjHPqqBuCerQdwUxZx8vj6OFI6wlyOffp5H8gNECGMXublA
+InhzHUw/b7A+pEvnQu9WMxarIXU5+cJiH0I6gLv0Bg8B3br6YgeOYvrcwkECcey5
+XDgklBaaV8BeJmP3tSc9jsGrfwKBgQDyAUZxt+41HJTMlmPt8WG5TUugavrhpKVN
+wbJCBZLUOJiqCaJccmnRGkz0CNpOMYiSk9Y94ktnpn2OHDuAGeb4VR0xbrvOVTfz
+bDnT5zqdngo7Y7lyNm2maqjKuMDGFFmpt0QYz/JuZWoxooGG7oHQineRZR58tBqn
+OFqlCQrdjwKBgQChpWakLzMdS+RKWA9Hyxp5NpJBB5+wWsmO18mWqmaMfTPJCjAp
+jfBgMq/NK4N2kTRlJOzsw2LOhagQw1TaESi+FnaOJP+phIqsH3LWtQl3nJTKyvt4
+SH2JsGcw0NTSPLIqTjJZBpzBAgXfoVjh36c2IBh0tiS56Ir4hhmATHfP2wKBgAHk
+AKjixvmjP4ZZpm41dI3+DJk0PMGGh8QTv1DEumDuEEND0ADo4+q+SdueNhZmTKrY
+fNP+8JfetRxnHA/kI+nMwG2ib9Us1UMRlWISbGLO2UWdgdVil3i1XJw41Ui23/xz
+chS/iyVRpYK9wkVLl7gJXOXF5HcU8SBdUFf5uhwBAoGBAM6NRjqZo7Ej2RrD3zHS
+CLzfAm2UQ4je7JVfbUbxs9lWxMwuJpDRjVgLAlNte5DU22W3HocbjWPEwbzPT8ty
+LEzHY8t/4F6iDE3Bz/HKvjfRV6ytsTRlg0lwudtru8hrQnCCqPKsR1dJcPUOaPzr
+fCQfARvOdvH3yL/V+eJb6tPD
+-----END PRIVATE KEY-----
+-----BEGIN CERTIFICATE-----
+MIID0TCCArmgAwIBAgIJAL9A37hgqo5QMA0GCSqGSIb3DQEBCwUAMH8xCzAJBgNV
+BAYTAlNFMRUwEwYDVQQIDAxPc3RlcmdvdGxhbmQxEjAQBgNVBAcMCUxpbmtvcGlu
+ZzEdMBsGA1UECgwUTGlua29waW5nIHVuaXZlcnNpdHkxDDAKBgNVBAsMA0lEQTEY
+MBYGA1UEAwwPZXhhbS5pZGEubGl1LnNlMB4XDTE2MTAyNDA3MzgzM1oXDTE3MTAy
+NDA3MzgzM1owfzELMAkGA1UEBhMCU0UxFTATBgNVBAgMDE9zdGVyZ290bGFuZDES
+MBAGA1UEBwwJTGlua29waW5nMR0wGwYDVQQKDBRMaW5rb3BpbmcgdW5pdmVyc2l0
+eTEMMAoGA1UECwwDSURBMRgwFgYDVQQDDA9leGFtLmlkYS5saXUuc2UwggEiMA0G
+CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDsn94STqbFmBpcT2cDLpkWUABW6vPZ
+ib1Xul8xF4x4ffyLjq7TxCWzpvRmmJDotIUTEDE2th+7+iKzJjPq8oECRy+HRddt
+5eUT9SktMqRkvZfeepIvxvlVSXVLlNGpk88x83KYlc9Q9mYccppLdhapvy3Tb0mM
+lvZnSTlESYpIMVIneJ7ZcUjUEII3aBZAKe60CkJw7F+SL0RXniL5uP6Fc3UXptkG
+2FrDhRW5pG+0pm2gAEVuEE96OyUCai2DfbWd1CyxppJICsGhdb2q01YANzB/G9yi
+omc+JgPzuEZLAU2TyUhnQLe6UVqZPVU/MOH+z79+dEMBI+ljoRMZMW7xAgMBAAGj
+UDBOMB0GA1UdDgQWBBS7pEr5Or4zEVZyLsAri1w1517k/TAfBgNVHSMEGDAWgBS7
+pEr5Or4zEVZyLsAri1w1517k/TAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUA
+A4IBAQCr9gJ4njojMjwmeYHtTKpiJrpBm3T4MbryTqpWMJt9jjFO2t0GAGTkDgSr
+/TKR/jhMjONmOyR8tV7wYZF7tfONfVPmjLBcQI+ND+U1p+367M6njn36JcWJyQbn
++A+W+wPOkNnSFHZdpSlh0FVwJ7OfXSuNEgYGlPKCk4Rz1ZPhtY8ZklwUDAKgaWpw
+oMCLW6gtk66HjOGyOn9ab28xF+ja7D3qZ3rya6PfZqnynFdybEhE7J1Ug6xEKXMb
+jb2hAinFHbHA9FscRatr74LZe1/nbDEjliupIO97DDej1aLzUrEYi9pBuMUDHZlj
+bthnAbaf9BCJlAUNxf0gkMTQgNQH
+-----END CERTIFICATE-----
diff --git a/files/squid/helpers/certificate/Oct17-Oct18/myCA.der b/files/squid/helpers/certificate/Oct17-Oct18/myCA.der
new file mode 100644
index 0000000000000000000000000000000000000000..f7b96938c3cf5ed165e3d6f495f6ae14db60fea5
Binary files /dev/null and b/files/squid/helpers/certificate/Oct17-Oct18/myCA.der differ
diff --git a/files/squid/helpers/certificate/Oct17-Oct18/myCA.pem b/files/squid/helpers/certificate/Oct17-Oct18/myCA.pem
new file mode 100644
index 0000000000000000000000000000000000000000..5acfc288a2390b835282c5f8cb7d91914ea68d2f
--- /dev/null
+++ b/files/squid/helpers/certificate/Oct17-Oct18/myCA.pem
@@ -0,0 +1,53 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC7rcmVvvNo5LFN
+U7vK46lbFTUoENe5BKOKA8ejvGa7q3NHH9kzVzHQzipaN3vuzUC2jLXMUVhSE+6M
+KQG1UlmXzGe0nMjh/g88x1UaUvk+KWtMGxMJIENNqb0XkCo2gtIM+o+N7rbWsAS6
+2VzNO7KtShUdJDbHyEv6r1VLEsCh8LQXfL+VjmYeH0fMbtM3JsTBP8XpghYZinPe
+YtCPTIFBb7ed9lUWMUJOK505aB0lIvshkvYdMl8/3ca0LiwwOM2Ll1Q0ijAvB0cf
+rSNrD5ypFwAMmumpYH2a+xVKpI1EWvz3v/3Z2hcpRfLe5JPdINU7ZbG5oy0upnS6
+xBeIf32rAgMBAAECggEAaquXFM6ISIkbIQlDhkipXESMhu4zvkwdq3cEhFKzzVzg
+U3+NkvmvLa/QMKCyhwMQEfGd7rgZS+VaQz2XY/ifRYD/PI+UOaaOAIyHGUQpt6QR
+ARuuURSOTFj6Sac95uep/Yh4CUKxlwpKVezvKxMQNiASKhMIM7rrPFtlThslc6SC
++U/AlY7ZBcTyWAliqncFi5gHzV+UWbnnMDFTUOWFh13nQCBNyUwnM/v8S9YQE3+P
+RmFRkF8cxfkXTJQP82RrhswNapi5+lurmJl02LkBsvQlwA3H/kPjcJ1riNt+9/j9
+kx/9uUxnHXJm/HL0UDHosw/y69T4cw2VbC6XWmRM+QKBgQDptfgP5syngCWJ5xqO
+uestEnBcVPHPJpJLyxlWj2WB/JD9dL0iZxtj1sra+HVMKEbrVHZBkPQWldXCZDno
+vtQgJ0ZYzggDcLSCnnceXgN1lsGLdCStbAUQzBqdyg5CWpFhKs/TloqIHrrvdd2r
+ir30nZ0ja/+Lt0e8BIdTv1YgpQKBgQDNk/OqtGc2vX5q+GcWQf4WxJs5vKYz7inj
+Q/nxSzpWzNJ50aQmqpdTdXPLTmVWErXYKReCiZ0AgCZ0Oqc84h+C504u8qXooLtl
+vFRPtuLGuVV1HdKDqP2kg7Yfjsdn6aS7pAx7ROI9QCc0mVXbAGaRmfp3HcyeDOfA
+nDQfRl0EDwKBgHjk3X30SNc4jbKJLo64E7RL/n10n2UlsbWtSN0i7kJQUPwbIB8k
+sOFzYZnlvl930j+3gDiob+si9OFKkT4ZQIelaVlUsoZ9DZMnv7ygqy9vnYyytqpS
+30fyHK6Ur82ZJezahYkRLXX+V3q5QMKU0XAw+/Ev05AFbgEPYqVqq3XVAoGATzk9
+JgPv4sCT/1VLJOC5sryBtXZl9o1JxzNjFwIOsXStiBSqVdxYBOm2fhrwIoODYJI1
+ZTDzOEYqi5Au8t+RlTjegGkyVrvafBJfy3iHXF3/+OpNPj/Zv5SikvbLEdiQi19l
+D/wz07btZO/SjltRK7tTMqRhPmdqyGdqDsNnBTECgYEAjXxaShFfZxJCJkcyEX1u
+Z8BG+gQsOgaLcO/GGi1npIkAMvonDOeYWuFIah7Etu+tVNj7fdFzyjPnhWPQbiBk
+SI5y6IfpZ2zussVLW7Tp1r8KVww3E18ACK0eItkeULAVi3fUCpoEFuZTTcSDUABO
+JdELgkTC9FIPRQUVcAQRIX0=
+-----END PRIVATE KEY-----
+-----BEGIN CERTIFICATE-----
+MIIEITCCAwmgAwIBAgIJAIzUCRNPmxv5MA0GCSqGSIb3DQEBCwUAMIGmMQswCQYD
+VQQGEwJTRTEVMBMGA1UECAwMT3N0ZXJnb3RsYW5kMRIwEAYDVQQHDAlMaW5rb3Bp
+bmcxHTAbBgNVBAoMFExpbmtvcGluZyB1bml2ZXJzaXR5MRAwDgYDVQQLDAdJREEv
+VVBQMRgwFgYDVQQDDA9leGFtLmlkYS5saXUuc2UxITAfBgkqhkiG9w0BCQEWEmV4
+YW1hZG1AaWRhLmxpdS5zZTAeFw0xNzEwMDkxMTQwMTRaFw0xODEwMDkxMTQwMTRa
+MIGmMQswCQYDVQQGEwJTRTEVMBMGA1UECAwMT3N0ZXJnb3RsYW5kMRIwEAYDVQQH
+DAlMaW5rb3BpbmcxHTAbBgNVBAoMFExpbmtvcGluZyB1bml2ZXJzaXR5MRAwDgYD
+VQQLDAdJREEvVVBQMRgwFgYDVQQDDA9leGFtLmlkYS5saXUuc2UxITAfBgkqhkiG
+9w0BCQEWEmV4YW1hZG1AaWRhLmxpdS5zZTCCASIwDQYJKoZIhvcNAQEBBQADggEP
+ADCCAQoCggEBALutyZW+82jksU1Tu8rjqVsVNSgQ17kEo4oDx6O8Zrurc0cf2TNX
+MdDOKlo3e+7NQLaMtcxRWFIT7owpAbVSWZfMZ7ScyOH+DzzHVRpS+T4pa0wbEwkg
+Q02pvReQKjaC0gz6j43uttawBLrZXM07sq1KFR0kNsfIS/qvVUsSwKHwtBd8v5WO
+Zh4fR8xu0zcmxME/xemCFhmKc95i0I9MgUFvt532VRYxQk4rnTloHSUi+yGS9h0y
+Xz/dxrQuLDA4zYuXVDSKMC8HRx+tI2sPnKkXAAya6algfZr7FUqkjURa/Pe//dna
+FylF8t7kk90g1TtlsbmjLS6mdLrEF4h/fasCAwEAAaNQME4wHQYDVR0OBBYEFJfs
+0fxCYdRGobtPy8TafBU8yheEMB8GA1UdIwQYMBaAFJfs0fxCYdRGobtPy8TafBU8
+yheEMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAEfsVY9w8VdFD1Md
+i1m2snETircJUhyaeBz7++TIs4sSFzqaVq+WeOImD0iaf7c0AUanTc0Tj+4CW+dJ
+qsAKwP1axRJPkMA9OPg8SOa3qyVrab1glxtaEJSBGfhfdeh6bTpsfzxWEdhRRc7A
+1T27Cwf9ZGyXoCs7myml8WT3A/KygBou2dF6ms7FcZEHDuzAQkTytXlOM2wC8OB4
+/YA9+uje2tV+gS6/sWNDEw1VCrR/saEjs7fpvUsuYK8TIp0nWxGVo9YBCfSV1NJG
+tkY0JD5Rlbm+rGIH/p4qC3ZcK7uhjvQNmENZXFVTPVaDvpS4QBEeS7eOCpjB0uU4
++fGlJXQ=
+-----END CERTIFICATE-----
diff --git a/files/squid/helpers/certificate/Oct18-Oct19/myCA.der b/files/squid/helpers/certificate/Oct18-Oct19/myCA.der
new file mode 100644
index 0000000000000000000000000000000000000000..ffb6288d268560531242ebd6fc96149b50a893f1
Binary files /dev/null and b/files/squid/helpers/certificate/Oct18-Oct19/myCA.der differ
diff --git a/files/squid/helpers/certificate/Oct18-Oct19/myCA.pem b/files/squid/helpers/certificate/Oct18-Oct19/myCA.pem
new file mode 100644
index 0000000000000000000000000000000000000000..37a9364421d78072642eccc7d556f0f7a5c96b8e
--- /dev/null
+++ b/files/squid/helpers/certificate/Oct18-Oct19/myCA.pem
@@ -0,0 +1,53 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC2svfv8cME8Quc
+TRZPPkZzlB/Q+EtGaVjP4eUzoYJDYZmVvYm8PUPTm0Gt6y2FTAKB0MPQXK9YOPtq
+ZkHgYd48YtG19unBCM2jAUcjS+OTGcFdVT76f09N/wcmE+CyLn+MJ+BFt0iiF923
+4Q+BIjXce0QZ7dayB0xA+BpUfN38LV0NcEdS2oE2grsS7Yb4GUe8WhY7zWZ0FscR
+y3VGA6o+nFqWg/Oj6tqnbih0R+F58SNXxfJr45T82mayqZpUVVMsRnL9CY31twmZ
+jA+u1bRQQiQWzDAUU0jS7YwNubfAYbY3CSz9nUHeuC/tb56q6SkQuuDfsi6CNMiz
+gVP68IVfAgMBAAECggEBAIBRpw6iEUVRP8Rh6D90D+txp/8PxV8I8tXfZSokT+ef
+j026uBi8Nv1S2Iic23X58vDWfhHEZ2thakRK2g4M7xgemAhkCb4IvtW0OhCyZn6U
+4lj5XKh37m1rp8u4vmKngfIgt8Z/esZOWO2jZ05dhtL6yNQlVlvoAEjJeUTKBufs
+i7tj+Kv+InOT4jG4OTR2eTBYZWwGr35uCx1582OJuNvVtUfbhXM+8vaa+KHgfIsP
+VKxb2WhIVl3IVkeJA3Vm3FVfTzT88V/+GRpRPsQoGAggWaSsnxVjeKk/eEYLc3ZQ
+IPGT/Yegrp7eutJWGXAVrnUSWZ4gIQFDtjJ3ijJ654ECgYEA66C85Hz1Aw1VW1aS
+CYpcEr4oLgk6OC28yyvXRS0ibELwFCvBKJ2eZWnxuULSHNLJKtxakYaBrR1VzTns
+XA8B33f5ZvUmFK1PPHYswaVMppQLRAN9K2XjmfJOvsnl0QWdYcLVw1fKXADgPjJ/
+MOVYSzVopEbhvv9Z6RFQ5eplgOECgYEAxn67qU/spH4wmdhw60+NdQZIp7yDTK3s
+CKubWnUEokWsHPaei+VzHvilI2gAe6dvVqQ9FcqkzAUfHHst3CPJroW67f8fZ0fD
+ZQXcTRV/xp+dUjGNFkRfp4KHUs0qzF5yYOFQZL6a5waf7fymWYPxqyziDjudTqJo
+TswxF/iZjj8CgYEAjYmtTbb92kp9FnOnH5H8Aso1CopCbZKT0JtSIVyeS9fdrNAn
+pEUh65s7N2S7H9NCQbvBr57TcHCppLCBmT7uihTgPIdPy6Xbbd8yvVOU+o79QWqz
+GomGsWfLA3H12Zv80Mefbkri5GcmTFY67t0lL3AynlNxsTBkCst7A9DMDiECgYAC
+NHYxM0oVqbEwhE78zi1sF13HPzjWKThuADoBjzs18kAvMi4gr7PPrENpWUZoGTwL
+YlerXkzmV0g5MMUZpOwgnCuvaR4YL5vkC2SfFpYMxskgmJxQmwHVAoYuTUkkbAgp
+O1eBRvzBhDlSk3PlmqmclSsNrWvZ68Ps3CfPdFuAUQKBgQCizQAmblLOcOU7t4FG
+vrOljpAMdy5k7UX9WCJfh2oj2oeqps4QX8sP5jMCJ/xqV38laZwilzYclBkBxYkV
+8UORV5adcPwzDtbWEJwXGl+lexqoCqE5bzw902MsGs1lNUaLq0slzHi5MiSTABw5
+8StCdOB8ScACT8sA7PSLtB5tFg==
+-----END PRIVATE KEY-----
+-----BEGIN CERTIFICATE-----
+MIIEMTCCAxmgAwIBAgIJAJkeAuBCh3BcMA0GCSqGSIb3DQEBCwUAMIGuMQswCQYD
+VQQGEwJTRTEbMBkGA1UECAwSw4PClnN0ZXJnw4PCtnRsYW5kMRUwEwYDVQQHDAxM
+aW5rw4PCtnBpbmcxIDAeBgNVBAoMF0xpbmvDg8K2cGluZyB1bml2ZXJzaXR5MQww
+CgYDVQQLDANJREExGDAWBgNVBAMMD2V4YW0uaWRhLmxpdS5zZTEhMB8GCSqGSIb3
+DQEJARYSZXhhbWFkbUBpZGEubGl1LnNlMB4XDTE4MTAxMDA5MDA1NFoXDTE5MTAx
+MDA5MDA1NFowga4xCzAJBgNVBAYTAlNFMRswGQYDVQQIDBLDg8KWc3RlcmfDg8K2
+dGxhbmQxFTATBgNVBAcMDExpbmvDg8K2cGluZzEgMB4GA1UECgwXTGlua8ODwrZw
+aW5nIHVuaXZlcnNpdHkxDDAKBgNVBAsMA0lEQTEYMBYGA1UEAwwPZXhhbS5pZGEu
+bGl1LnNlMSEwHwYJKoZIhvcNAQkBFhJleGFtYWRtQGlkYS5saXUuc2UwggEiMA0G
+CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC2svfv8cME8QucTRZPPkZzlB/Q+EtG
+aVjP4eUzoYJDYZmVvYm8PUPTm0Gt6y2FTAKB0MPQXK9YOPtqZkHgYd48YtG19unB
+CM2jAUcjS+OTGcFdVT76f09N/wcmE+CyLn+MJ+BFt0iiF9234Q+BIjXce0QZ7day
+B0xA+BpUfN38LV0NcEdS2oE2grsS7Yb4GUe8WhY7zWZ0FscRy3VGA6o+nFqWg/Oj
+6tqnbih0R+F58SNXxfJr45T82mayqZpUVVMsRnL9CY31twmZjA+u1bRQQiQWzDAU
+U0jS7YwNubfAYbY3CSz9nUHeuC/tb56q6SkQuuDfsi6CNMizgVP68IVfAgMBAAGj
+UDBOMB0GA1UdDgQWBBRqv5AZRJwtXuUX6AHrlLX0aUbIHjAfBgNVHSMEGDAWgBRq
+v5AZRJwtXuUX6AHrlLX0aUbIHjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUA
+A4IBAQAdQTEGj98+KhIxefx7zoyj8diEo1Qz9Kjqby33B7Hfn2Itlzp+gYODrvXv
+gigBuWKzNgc6T58v665OAmkYcnAPhRG81WB7Uj62BC7ELJDplkKPLa+Ah9FAYmWN
+ol9ntDX05xcuSPI0xfSENoy2A4zLPV/F8uriNG0+KaDPEo5TwyqaFi2m03+JS15/
+nRGtTKs+m6eeeCiSkPBuub8RRSpV1QW25ZDOySIsk5zGTMpBpbmvnNQT5gcKskJG
+e8ulxklbx4txHe4WnEzr78bD7LA78FNZfaBi+R/K6kVCg2hZuVWh73dULFJqew7y
+E92s6UhmHuLFxZhI0MYoAxJaoYl1
+-----END CERTIFICATE-----
diff --git a/files/squid/helpers/rules.d/cplusplus.rules b/files/squid/helpers/rules.d/cplusplus.rules
new file mode 100644
index 0000000000000000000000000000000000000000..1730bb6ef9c7247be2512fe7fed6f89faa07dd24
--- /dev/null
+++ b/files/squid/helpers/rules.d/cplusplus.rules
@@ -0,0 +1,20 @@
+// C++ reference
+^https?://www\.cplusplus\.com/forum.*       false
+^https?://www\.cplusplus\.com/article.*     false
+^https?://www\.cplusplus\.com/info.*        false
+^https?://www\.cplusplus\.com/doc.*         false
+^https?://www\.cplusplus\.com/contact.*     false
+^https?://www\.cplusplus\.com/.*             true
+
+^https?://en\.cppreference\.com/w/cpp/language/typeid     true
+^https?://en\.cppreference\.com/w/cpp/language.*     false
+^https?://en\.cppreference\.com/w/cpp/preprocessor.* false
+^https?://en\.cppreference\.com/w/cpp/keyword.*      false
+^https?://en\.cppreference\.com/w/c/language.*       false
+^https?://en\.cppreference\.com/w/c/preprocessor.*   false
+^https?://en\.cppreference\.com/w/c/keyword.*        false
+^https?://en\.cppreference\.com/?                    true
+^https?://en\.cppreference\.com/w/?                  true
+^https?://en\.cppreference\.com/w/cpp/.*             true
+^https?://en\.cppreference\.com/mwiki/index.php\?.*  true
+^https?://en\.cppreference\.com/mwiki/load.php\?.*   true
diff --git a/files/squid/helpers/rules.d/default.rules b/files/squid/helpers/rules.d/default.rules
new file mode 100644
index 0000000000000000000000000000000000000000..b0f64719d09a4c70dbd2001ae988f44d90b2b238
--- /dev/null
+++ b/files/squid/helpers/rules.d/default.rules
@@ -0,0 +1,10 @@
+// Default rules
+
+^https?://www\.ida\.liu\.se/mall11/.*   true
+^https?://www\.ida\.liu\.se/~examadmx?/.*           true
+^https?://www\.ida\.liu\.se/~examadmx?/.*           true
+^https?://help\.opera\.com/errorpage/.*             true
+^https?://tentix\.ida\.liu\.se:3128/squid-internal-mgr/info       true
+
+// Firefox
+^https?://detectportal\.firefox\.com/success\.txt true
diff --git a/files/squid/helpers/rules.d/dn.rules b/files/squid/helpers/rules.d/dn.rules
new file mode 100644
index 0000000000000000000000000000000000000000..b46a7f7143ec8c24b11a8d5949292bc185072cbb
--- /dev/null
+++ b/files/squid/helpers/rules.d/dn.rules
@@ -0,0 +1,2 @@
+// C++ reference
+^https?://www\.dn\.se/.*       true
diff --git a/files/squid/helpers/rules.d/essa.rules b/files/squid/helpers/rules.d/essa.rules
new file mode 100644
index 0000000000000000000000000000000000000000..051602e7ee35d3f7b593891ba81735e9b308844b
--- /dev/null
+++ b/files/squid/helpers/rules.d/essa.rules
@@ -0,0 +1,5 @@
+// LISAM
+^https?://docs\.python\.org/3/library/.*            true
+^https?://docs\.python\.org/3/_static/.*            true
+^https?://docs\.python\.org/3/search\.html\?.*      true
+^https?://docs\.python\.org/3/searchindex\.js$      true
diff --git a/files/squid/helpers/rules.d/java.rules b/files/squid/helpers/rules.d/java.rules
new file mode 100644
index 0000000000000000000000000000000000000000..c3aa81f78e88c47b259e6312a9a31411c6d4d974
--- /dev/null
+++ b/files/squid/helpers/rules.d/java.rules
@@ -0,0 +1,5 @@
+// Java API reference 
+^https?://docs\.oracle\.com/javase/7/docs/api/.*  true
+
+// Ahmed Java API reference
+^https?://www\.ida\.liu\.se/~TDDC77/extra/api-7/.*  true
diff --git a/files/squid/helpers/rules.d/opendsa.rules b/files/squid/helpers/rules.d/opendsa.rules
new file mode 100644
index 0000000000000000000000000000000000000000..220b9b9e046fd83039f550e040485fb819f38674
--- /dev/null
+++ b/files/squid/helpers/rules.d/opendsa.rules
@@ -0,0 +1,40 @@
+// OpenDSA
+
+// New setup on tentix
+
+^https?://www\.ida\.liu\.se/edu/ugrad/datortenta/OpenDSA/Books/TDDI16_190827/.*  true
+^https?://www\.ida\.liu\.se/edu/ugrad/datortenta/OpenDSA/Books/TDDE22_190827/.*  true
+^https?://www\.ida\.liu\.se/edu/ugrad/datortenta/OpenDSA/Books/TDDD86_190827/.*  true
+^https?://www\.ida\.liu\.se/edu/ugrad/datortenta/OpenDSA/lib/.*                  true
+^https?://www\.ida\.liu\.se/edu/ugrad/datortenta/OpenDSA/JSAV/.*                 true
+^https?://www\.ida\.liu\.se/edu/ugrad/datortenta/OpenDSA/AV/.*                   true
+^https?://www\.ida\.liu\.se/edu/ugrad/datortenta/OpenDSA/DataStructures/.*       true
+^https?://www\.ida\.liu\.se/edu/ugrad/datortenta/OpenDSA/SourceCode/.*           true
+^https?://www\.ida\.liu\.se/edu/ugrad/datortenta/OpenDSA/Exercises/.*            true
+^https?://www\.ida\.liu\.se/edu/ugrad/datortenta/OpenDSA/khan-exercises/.*       true
+
+
+^https?://www\.ida\.liu\.se/~examadm/OpenDSA/Books/TDDI16_190110/.*   false
+^https?://www\.ida\.liu\.se/~examadm/OpenDSA/Books/TDDC91_190110/.*   false
+
+^https?://www\.ida\.liu\.se/~examadm/OpenDSA/Books/TDDD86_181219/.*   false
+
+^https?://www\.ida\.liu\.se/~examadm/OpenDSA/Books/TDDC91_181029/.*   false
+^https?://www\.ida\.liu\.se/~examadm/OpenDSA/Books/TDDI16_181029/.*   false
+
+^https?://www\.ida\.liu\.se/~examadm/OpenDSA/Books/TDDD86_180828/.*   false
+^https?://www\.ida\.liu\.se/~examadm/OpenDSA/Books/TDDC91_180828/.*   false
+^https?://www\.ida\.liu\.se/~examadm/OpenDSA/Books/TDDI16_180828/.*   false
+
+^https?://www\.ida\.liu\.se/~examadm/OpenDSA/Books/TDDD86_180404/.*   false
+^https?://www\.ida\.liu\.se/~examadm/OpenDSA/Books/TDDI16_170822/.*   false
+^https?://www\.ida\.liu\.se/~examadm/OpenDSA/Books/TDDC91_170104/.*   false
+^https?://tentix\.ida\.liu\.se:12000/api/v1/.*                        true
+^https?://exam\.ida\.liu\.se:12000/api/v1/.*                          true
+^https?://cdn\.mathjax\.org/mathjax/.*                                true
+^https?://cdnjs\.cloudflare\.com/ajax/libs/mathjax/.*                 true
+^https?://code\.jquery\.com/jquery-.*.js                              true
+^https?://code\.jquery\.com/ui/.*/jquery-ui.css$                      true
+^https?://code\.jquery\.com/ui/.*/jquery-ui.js$                       true
+^https?://code\.jquery\.com/ui/.*/jquery-ui.min.js$                   true
+^https?://d3js.org/d3-selection-multi.v1.min.js                       true
diff --git a/files/squid/helpers/rules.d/python.rules b/files/squid/helpers/rules.d/python.rules
new file mode 100644
index 0000000000000000000000000000000000000000..77149faadcf177e06a2a3d16a4ae447f56510cde
--- /dev/null
+++ b/files/squid/helpers/rules.d/python.rules
@@ -0,0 +1,5 @@
+// Python library reference
+^https?://docs\.python\.org/3/library/.*            true
+^https?://docs\.python\.org/3/_static/.*            true
+^https?://docs\.python\.org/3/search\.html\?.*      true
+^https?://docs\.python\.org/3/searchindex\.js$      true
diff --git a/files/squid/helpers/rules.d/rstudio.rules b/files/squid/helpers/rules.d/rstudio.rules
new file mode 100644
index 0000000000000000000000000000000000000000..c978bae6520485f8def6d7209402fd064fb9e830
--- /dev/null
+++ b/files/squid/helpers/rules.d/rstudio.rules
@@ -0,0 +1,46 @@
+// RStudio rules
+// ^https?://cran\.rstudio\.com/.*           true
+
+^https?://cran\.rstudio\.com/src/.*           true
+^https?://cran\.r-project\.org/src/.*         true
+
+// ^https?://cran\.rstudio\.com/src/contrib/.*           true
+
+// 732A51
+^https://bioconductor\.org/packages/.*  true
+^https://bioconductor\.org/biocLite\.R  true
+
+// 732G33
+^https?://raw\.githubusercontent\.com/STIMALiU/KursRprgm/master/Labs/Tests/.* true
+
+// 732GA98
+^https?://plot\.ly/r/reference.*                       true
+^https?://ggplot2\.tidyverse\.org/.*                    true
+^https?://shiny\.rstudio\.com/reference/shiny/.*        true
+^https?://www\.jasondavies\.com/wordtree/.*             true
+
+// For plot.ly
+^https?://fonts\.googleapis\.com/css\?family=.*          true
+^https?://cdnjs\.cloudflare\.com/ajax/libs/.*\.js        true
+^https?://ajax\.googleapis\.com/ajax/libs/.*\.js         true
+^https?://maxcdn\.bootstrapcdn\.com/.*\.js               true
+^https?://maxcdn\.bootstrapcdn\.com/.*\.css              true
+^https?://plot\.ly/gh-pages/documentation/static/.*      true
+^https?://images\.plot\.ly/assets/.*                     true
+^https?://images\.plot\.ly/excel/.*\.png                 true
+^https?://plot\.ly/images/plotly-ico\.png                true
+^https?://help\.plot\.ly/stylesheets/.*                  true
+^https?://cdn\.jsdelivr\.net/.*\.js                      true
+^https?://www\.googletagmanager\.com/gtag/js\?.*         true
+^https?://.*-dsn\.algolia\.net/1/indexes/\*/queries\?x-algolia-api-key=.* true
+
+// For shiny.rstudio.com
+^https?://shiny\.rstudio\.com/lib/.*             true
+^https?://shiny\.rstudio\.com/css/.*             true
+^https?://shiny\.rstudio.com/images/.*\.svg      true
+^https?://cdn\.bizible\.com/scripts/.*\.js       true
+^https?://cdn\.bizible\.com/m/ipv\?.*            true
+^https?://cdn\.bizible\.com/BizibleAcct\.js\?.*  true
+
+// For jasondavies
+^https?://www\.jasondavies\.com/.*\.js          true
diff --git a/files/squid/helpers/rules.d/ruby.rules b/files/squid/helpers/rules.d/ruby.rules
new file mode 100644
index 0000000000000000000000000000000000000000..aeecf446ee08a9b1547fd34aa19dcb1c07d4ee03
--- /dev/null
+++ b/files/squid/helpers/rules.d/ruby.rules
@@ -0,0 +1,4 @@
+// Ruby documentation
+^https?://ruby-doc\.org/.*  true
+^https?://rubular\.com/.*   true
+^https?://api\.rubygems\.org/.* true
diff --git a/files/squid/helpers/rules.d/sas.rules b/files/squid/helpers/rules.d/sas.rules
new file mode 100644
index 0000000000000000000000000000000000000000..50a32e3398442fe9f49b97ccc5127a4ed7d8c0dc
--- /dev/null
+++ b/files/squid/helpers/rules.d/sas.rules
@@ -0,0 +1,10 @@
+// SAS tenta
+^https?://sas-exam\.edu\.liu\.se/.* true
+^https?://salamix2\.ida\.liu\.se/.* true
+^https?://www\.gstatic\.com/.* true
+
+// Requested by examiner, but may contain forums?
+// support.sas.com
+// documentation.sas.com
+^https?://documentation\.sas\.com/.* true
+^https?://support\.sas\.com/.* true
diff --git a/files/squid/helpers/squid-url-rewrite.py b/files/squid/helpers/squid-url-rewrite.py
new file mode 100755
index 0000000000000000000000000000000000000000..e6ac941a960998137b401ab7b03d47e512b4545b
--- /dev/null
+++ b/files/squid/helpers/squid-url-rewrite.py
@@ -0,0 +1,94 @@
+#!/usr/bin/env python3
+
+import sys
+import re
+import datetime
+
+errorpage = "http://www.ida.liu.se/~examadm/empty"
+basedir = "/usr/libexec/squid/helpers"
+
+def modify_url(line, ruleset):
+### [channel-ID <SP>] URL <SP> client_ip "/" fqdn <SP> user <SP> method [<SP> kv-pairs]<NL>
+    list = line.split(' ')
+
+    if list[0].isdigit():
+        url = list[1]
+    else:
+        url = list[0]
+
+    for i in list[2:]:
+        if i == "CONNECT":
+            return "OK"
+        
+    if url == "https://www.ida.liu.se/~examadm/start.html":
+        return "OK rewrite-url=\"https://www.ida.liu.se/edu/ugrad/datortenta/start.html"
+        
+    r = re.match('https://www\.ida\.liu\.se/~opendsa/(.*)', url)
+    if r != None:
+        return "OK rewrite-url=\"http://exam.ida.liu.se:12000/" + r.group(1) + "\""
+
+    for i in ruleset:
+        
+        if i[0].match(url) != None:
+#        if re.match(i[0], url) != None:
+
+            if i[1]:
+                return "OK"
+            else:
+                return "OK rewrite-url=\"" + errorpage + "\""
+
+    return "OK rewrite-url=\"" + errorpage + "\""
+    
+    # return "OK status=302 url=\"" + errorpage + "\""
+    # "status" can only be used in the "Using an HTTP redirector" case,
+    # not in the "Using a re-writer to mangle the URL as it passes" case
+    # RTFM: https://wiki.squid-cache.org/Features/Redirectors
+
+
+def load_rules(ruleset, filename):
+    with open(filename, 'r') as f:
+
+        for line in f:
+            if not re.match('(^#.*)|(^//.*)|(^;.*)|(^--.*)|^ *$', line):
+                columns = line.strip().split()
+                ruleset.append( [ re.compile(columns[0]), columns[1].lower() == 'true' ] )
+#              ruleset.append( [ columns[0], columns[1].lower() == 'true' ] )
+
+
+def main():
+    
+    ruleset = list()
+    load_rules(ruleset, basedir + "/rules.d/default.rules")
+    load_rules(ruleset, basedir + "/rules.d/rstudio.rules")
+    load_rules(ruleset, basedir + "/rules.d/cplusplus.rules")
+    load_rules(ruleset, basedir + "/rules.d/opendsa.rules")
+    load_rules(ruleset, basedir + "/rules.d/python.rules")
+    load_rules(ruleset, basedir + "/rules.d/java.rules")
+    load_rules(ruleset, basedir + "/rules.d/ruby.rules")
+    load_rules(ruleset, basedir + "/rules.d/sas.rules")
+#    load_rules(ruleset, basedir + "/rules.d/dn.rules")
+
+    with open('/tmp/access.log', 'a') as log:
+        try:
+            while True:
+            
+                line = sys.stdin.readline().strip()
+
+                log.write('{}: {}\n'.format(datetime.datetime.now().strftime("%Y-%m-%d_%H-%M"), line))
+                log.flush()
+
+                log.write("From: " + line + "\n")
+                log.flush()
+            
+                new_url = modify_url(line, ruleset)
+
+                log.write("To: " + new_url + "\n")
+                log.flush()
+
+                sys.stdout.write(new_url + '\n')
+                sys.stdout.flush()
+        except Exception as e:
+            sys.stderr.write( e )
+            sys.stderr.flush()
+
+main()
diff --git a/files/squid/squid.conf b/files/squid/squid.conf
new file mode 100644
index 0000000000000000000000000000000000000000..f5098c7017cfe555facb9642d12bf5d398a18647
--- /dev/null
+++ b/files/squid/squid.conf
@@ -0,0 +1,145 @@
+# klaar@ida 2015,2016,2019:
+#
+# Inititate cache dir:
+# /home/examadm/lsw/sbin/squid -z
+#
+# Rotate logs:
+# /home/examadm/lsw/sbin/squid -k rotate
+#
+# Starting: (ssl_crtd not running stable on nfs, locking problem)
+# ulimit -Sn 4096
+# mkdir -p /tmp/squid/var/lib
+# /home/examadm/lsw/libexec/ssl_crtd -c -s /tmp/squid/var/lib/ssl_db
+# /home/examadm/lsw/sbin/squid -YC
+#
+# Stopping:
+# /home/examadm/lsw/sbin/squid -k shutdown
+#
+# Manager-URL:
+# http://tentix.ida.liu.se:3128/squid-internal-mgr/info
+#
+# Yearly update of certificate:
+# 1. Generate certificate:
+#  openssl req -new -newkey rsa:2048 -sha256 -days 365 -nodes -x509 -keyout myCA.pem -out myCA.pem
+#  openssl x509 -in myCA.pem -outform DER -out myCA.der
+#
+# 2. Change config option "http_port" below
+# 3. Add the "-----BEGIN CERTIFICATE-----" part from the PEM file to
+#  ~/.config/curl/curl_ca_bundle.crt
+#    to let curl know about the new CA (needed for RStudio HTTPS
+#    downloads, the module for RStudio will set CURL_CA_BUNDLE
+#    environment variable.)
+# 4. Change in exam environment, (after added in Chromium myCA.der end up "somewhere" in ~/.pki/*
+#    Use this command to edit chrome exam template settings:
+#  env -i XAUTHORITY=/home/examadm/.Xauthority DISPLAY=$DISPLAY HOME=/home/examadm/Version-3.1/sea/env/courses/template_student_home_files/owned_by_uid chromium-browser --proxy-server="exam.ida.liu.se:3128" --temp-profile
+
+#
+# Recommended minimum configuration:
+#
+
+# Example rule allowing access from your local networks.
+# Adapt to list your (internal) IP networks from where browsing
+# should be allowed
+acl localnet src 10.0.0.0/8	# RFC1918 possible internal network
+acl localnet src 172.16.0.0/12	# RFC1918 possible internal network
+acl localnet src 192.168.0.0/16	# RFC1918 possible internal network
+acl localnet src fc00::/7       # RFC 4193 local private network range
+acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines
+acl ad srcdomain ad.liu.se
+acl edu srcdomain edu.liu.se
+acl ida srcdomain ida.liu.se
+acl isy srcdomain isy.liu.se
+
+acl SSL_ports port 443
+acl Safe_ports port 80		# http
+acl Safe_ports port 443		# https
+acl Safe_ports port 3128 	# squid cachemgr
+acl Safe_ports port 12000 	# opendsa
+# acl Safe_ports port 21		# ftp
+# acl Safe_ports port 70		# gopher
+# acl Safe_ports port 210		# wais
+# acl Safe_ports port 1025-65535	# unregistered ports
+# acl Safe_ports port 280		# http-mgmt
+# acl Safe_ports port 488		# gss-http
+# acl Safe_ports port 591		# filemaker
+# acl Safe_ports port 777		# multiling http
+acl CONNECT method CONNECT
+
+#
+# Recommended minimum Access Permission configuration:
+#
+# Deny requests to certain unsafe ports
+http_access deny !Safe_ports
+
+# Deny CONNECT to other than secure SSL ports
+http_access deny CONNECT !SSL_ports
+
+# Only allow cachemgr access from localhost
+http_access allow localhost manager
+http_access allow ida manager
+http_access deny manager
+
+# We strongly recommend the following be uncommented to protect innocent
+# web applications running on the proxy server who think the only
+# one who can access services on "localhost" is a local user
+http_access deny to_localhost
+
+#
+# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
+#
+url_rewrite_program /usr/libexec/squid/helpers/squid-url-rewrite.py
+logfile_rotate 6
+
+#auth_param negotiate program /usr/lib64/squid/negotiate_kerberos_auth
+# auth_param basic program /usr/libexec/squid/helpers/squid-auth-param.py
+# auth_param basic children 5 startup=5 idle=1
+# auth_param basic realm Squid proxy-caching web server
+# auth_param basic credentialsttl 5 hours
+
+# acl student proxy_auth REQUIRED
+# http_access deny !student
+
+# Example rule allowing access from your local networks.
+# Adapt localnet in the ACL section to list your (internal) IP networks
+# from where browsing should be allowed
+http_access allow all
+http_access allow localnet
+http_access allow ad
+http_access allow edu
+http_access allow ida
+http_access allow isy
+http_access allow localhost
+
+# And finally deny all other access to this proxy
+http_access deny all
+
+# Squid normally listens to port 3128
+# http_port 3128
+http_port 3128 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/usr/libexec/squid/helpers/certificate/Oct18-Oct19/myCA.pem
+always_direct allow all
+ssl_bump server-first all
+
+# Inititate with:
+# /usr/lib64/squid/ssl_crtd -c -s /var/lib/ssl_db
+sslcrtd_program /usr/lib64/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB
+sslcrtd_children 32 startup=5 idle=1
+
+# the following two options are unsafe and not always necessary:
+sslproxy_cert_error allow all
+sslproxy_flags DONT_VERIFY_PEER
+workers 8
+
+# Uncomment and adjust the following to add a disk cache directory.
+cache_dir ufs /var/cache/squid 128 16 256 max-size=4MB
+cache_mem 256 MB
+
+# Leave coredumps in the first cache dir
+coredump_dir /var/cache/squid
+
+#
+# Add any of your own refresh_pattern entries above these.
+#
+refresh_pattern ^ftp:		1440	20%	10080
+refresh_pattern ^gopher:	1440	0%	1440
+refresh_pattern -i (/cgi-bin/|\?) 0	0%	0
+refresh_pattern .		0	20%	4320
diff --git a/manifests/init.pp b/manifests/init.pp
index 46e9466f3e308cd1fbec5f8ca79c245fdd85ac03..dc93df542014228498f0e6a96316b697bd4402c2 100644
--- a/manifests/init.pp
+++ b/manifests/init.pp
@@ -1,4 +1,5 @@
 class aes {
+  include aes::squid_filter
   include ::liurepo::centos_sclo_rh
 
   package {
@@ -32,12 +33,36 @@ class aes {
     sshkey     => 'AAAAB3NzaC1yc2EAAAABIwAAAQEAwq552ev0T5YyWDUoEi2hY8hhm6iZHoSnfXNjCpW8eeigSd66FMdaXfWCmwLP/u3Cmino/x5SQQuo1f1RbbHuRQ3iztT/+LIJdqIjCf5rlTKhWx4Goo+weWpNlikHB6A8A1JWbY7yq/sMCiLjO4yYQ606BzwOGY+D0Wsq6lIoadL8USQJU2WKIjHOoAqPdV4HpCk3VxI/KanjyUivXKHq6eVH4yc0m97w9B/5M2UGET5nF2hx5SsoWkd4V3rALGsD3iUwfqxgOaZv62qwldEjFCsBamQfaQGNCJFYdJkmpNTlO46ywV4IC1wFbv7xqPIL33HFK5Q2TepsvdMK3ZRpWQ==', # lint:ignore:140chars
   }
 
+  ::users::liu_user { 'vikol94':
+    commonname => 'Viktor Olsson',
+    shell      => '/bin/bash',
+    sshkey     => 'AAAAB3NzaC1yc2EAAAABIwAAAQEA0GeKSAjEV2RxxybyX6OYJ7ZcKS1g1lkv7XLsnEL9etQtNyKTS399XmYrBlBHZf7BTuZFzcwatDJ7YFdvFo0nCtU2P0HsS/Jgfy3Lv7/cXZFH+J52kw/3vOkMh9aEVLjfPGL6GNzICOtq0mpOXaxKR6zYBYaKH7JXU+oJnFUwW07iwopeW/eAwnxWDHIISGF9qcNkvmGcRod2EtnEbThz912prTFE6iZDtr/6QxcuJh5GxuhXgrebjHaVAS15kAJYoko+j2waPtSpT5+/SXb6S0/jA1M3GkF1dxLrwUE99pdwsPVff4D4uzIvFQaOx4jmLuxMDerbMgitEs9djGimFQ==', # lint:ignore:140chars
+  }
+
+  ::users::liu_user { 'magni54':
+    commonname => 'Magnus Nielsen',
+    shell      => '/bin/bash',
+    sshkey     => 'AAAAB3NzaC1yc2EAAAABIwAAAQEAvWbp0OXIj3hIHpv6J88TCEXq/Ne46VcM8XAC+A4bDIuL2rOtMjTy5OmcAQwMPmyOh2x9xla5gCsEeNNPIKp2ujzsHqjlwl+0QD1teEOF/dnm2M0bTLOEUZhysyGRtn09o+hInAlswlq+3AVIeUo5A9xK7B+VX5Ap9RA4CNaR3/nuMLrNLP/xVyLEGazIXmh0O/pGhQV6KorJlyNYMtHCakLRzKWyP63Bs7uAGsotBntxyueKXa/RqAkMCnrlPT+z3UfxTmT0cjBCuvVdiEEhQ6MfIMzXaoqRBmbq42EpmSVZrXyTcR6s6Cz5/jSxSi17GcbH9twhRSXm+XfYFIhv9w==', # lint:ignore:140chars
+  }
+
+  ::users::liu_user { 'torjo38':
+    commonname => 'Torbjörn Jonsson',
+    shell      => '/bin/bash',
+    sshkey     => 'AAAAB3NzaC1yc2EAAAADAQABAAACAQDbYFQ5iuox4ZxjleyIR4Pebp045xV1AhcaGXLNsBAMEk08d5ExPVXdoTsNcV9aGDH3mMnhihe4d3bY8xh919n5f500VY6TI1BQKDYUq5HXxbgfl6AG96WntcRc8OIKo31hjMc4o+GPawgvpit7cWs4tWBAxoenJcB43m99AaVH6xd8e6DYC6os6Zv69hu+hD/01aFzJEnANAAsDRqr5b+LUy/qKeRWzT1zGSzWUOeJBHS9rGXHIPmgoOs7FMCtT3w/lzoehxDNCsOUG8aBBb4jH7zDB59fYE3bp55lxjx176AraFHv/H/hcB6EGkqyOyMppHi2B0uPRxlTFOtNVSHptqKINh9NMYAniv+ZUGylJZMSWSQkRSI7U65EvfOaLFTHB/+IBfWAaXjcA0fNcm3lG0tCRXg3rbpumQ2ikq23FpFzNHG+T+383pJjeOjvZB26ij5C+vZ+jEJyXyL528OjO8sOmHEeR6lyc2UjAeHbf7//+gv/bo7wDTSMZVySLKXVwxY+eCEAwh8aVQHCmwx/qWmfE9FuKYZ6AZfdCPpCSQOZY97aQTMMAcSgLV2sYrMim9QpylkH0h4RLhBo76w+83Cg1uprv1ypag0RXIOu+BV0gOHAa3DxhCgWtf9JR3B4YDAq8GaYuVRq9Q6c9+iPo+EmQEdbU+7X4Loj34auOw==', # lint:ignore:140chars
+  }
+
   ::server_firewall::rules_file { '45-permit_squid.rules':
     content => @(EOF),
     service squid is tcp/3128
+    service sclogin is tcp/23431
+    service aesms is tcp/23816
+
     policy chain INPUT is
       accept service:squid from class:liu-nets
+      accept service:sclogin from class:liu-nets
+      accept service:aesms from class:liu-nets
     end policy
     |-EOF
   }
+
 }
diff --git a/manifests/squid_filter.pp b/manifests/squid_filter.pp
new file mode 100644
index 0000000000000000000000000000000000000000..6c8355996914cc7c156aefa20e1d51748ef3a20d
--- /dev/null
+++ b/manifests/squid_filter.pp
@@ -0,0 +1,65 @@
+class aes::squid_filter {
+
+  package { "squid" :
+    ensure => "present",
+  }
+
+  file { '/etc/squid/squid.conf':
+    ensure => file,
+    mode   => '0644',
+    owner  => root,
+    group  => root,
+    content => file("${module_name}/squid/squid.conf"),
+  }
+  
+  file { '/usr/libexec/squid/helpers':
+    ensure => directory,
+    recurse => true,
+    purge => true,
+    force => true,
+    owner  => squid,
+    group  => squid,
+    mode => '0644',
+    source => "puppet:///modules/${module_name}/squid/helpers",
+  }
+
+  file { '/usr/libexec/squid/helpers/squid-url-rewrite.py':
+    ensure => file,
+    owner  => squid,
+    group  => squid,
+    mode => '0755',
+    source => "puppet:///modules/${module_name}/squid/helpers/squid-url-rewrite.py",
+  }
+
+  file { '/var/cache/squid' :
+    ensure => directory,
+    mode   => '0750',
+    owner  => squid,
+    group  => squid,
+  }
+
+  file { '/var/log/squid' :
+    ensure => directory,
+    mode   => '0750',
+    owner  => squid,
+    group  => squid,
+  }
+
+  file { '/var/lib/ssl_db' :
+    ensure => directory,
+    mode   => '0750',
+    owner  => squid,
+    group  => squid,
+  }
+
+  exec { '/usr/lib64/squid/ssl_crtd -c -s /var/lib/ssl_db' : 
+    user => "squid",
+    group => "squid",
+    creates => '/var/lib/ssl_db/certs',
+  }
+
+  service { "squid" : 
+    ensure => "running",
+  }
+
+}