@@ -28,10 +28,11 @@ func main() {
2828 allowHTTP2 := fs .BoolLong ("h2" , "Allow HTTP2" )
2929 ttl := fs .UintLong ("ttl" , 0 , "Time to Live in seconds (0 is infinite time)" )
3030 responseTables := fs .StringListLong ("response-table" , "List of database tables used to store response data" )
31- forceCreateTables := fs .BoolLong ("force-create-tables" , "Force create response tables if not exists" )
3231 caCert := fs .StringLong ("ca-cert" , "" , "Path to CA Certificate file (required to HTTPS proxy)" )
3332 caCertKey := fs .StringLong ("ca-cert-key" , "" , "Path to CA Certificate Key file (required to HTTPS proxy)" )
3433 readOnly := fs .BoolLong ("ro" , "Read Only mode. Do not store new HTTP responses" )
34+ rfc9111 := fs .BoolLong ("rfc9111" , "Use RFC9111 spec" )
35+ shared := fs .BoolLong ("shared" , "Enable shared cache mode" )
3536 _ = fs .String ('c' , "config" , "" , "config file (optional)" )
3637
3738 if err := ff .Parse (fs , os .Args [1 :],
@@ -49,8 +50,8 @@ func main() {
4950 }
5051
5152 if * verbose {
52- fmt .Printf ("Using options: port=%d db-params=%s, h2=%v, ttl=%d, response-tables=%v, force-create-tables=%v, ca-cert=%s, ca-cert-key=%s, read-only=%v\n " ,
53- * port , * dbParams , * allowHTTP2 , * ttl , * responseTables , * forceCreateTables , * caCert , * caCertKey , * readOnly )
53+ fmt .Printf ("Using options: port=%d db-params=%s, h2=%v, ttl=%d, response-tables=%v, ca-cert=%s, ca-cert-key=%s, read-only=%v\n " ,
54+ * port , * dbParams , * allowHTTP2 , * ttl , * responseTables , * caCert , * caCertKey , * readOnly )
5455 }
5556
5657 dbs := make ([]* sql.DB , 0 )
@@ -99,12 +100,11 @@ func main() {
99100 }
100101 } else {
101102 tableList = * responseTables
102- if * forceCreateTables {
103- err := db .CreateResponseTables (sqlDB , tableList ... )
104- if err != nil {
105- log .Fatalf ("force create tables on DB %q: %v" , dsn , err )
106- }
103+ err := db .CreateResponseTables (sqlDB , tableList ... )
104+ if err != nil {
105+ log .Fatalf ("force create tables on DB %q: %v" , dsn , err )
107106 }
107+
108108 }
109109 }
110110 if len (dbs ) == 1 {
@@ -140,18 +140,36 @@ func main() {
140140 proxy .Logger .Printf ("INFO: Starting HTTP Proxy..." )
141141 }
142142
143- proxy .OnRequest ().Do (& requestHandler {
144- querier : repository ,
145- verbose : * verbose ,
146- ttl : * ttl ,
147- readOnly : * readOnly ,
148- })
149- if ! * readOnly {
150- proxy .OnResponse ().Do (& responseHandler {
151- writer : repository ,
152- verbose : * verbose ,
143+ if * rfc9111 {
144+ proxy .OnRequest ().Do (& requestRFC9111Handler {
145+ shared : * shared ,
146+ querier : repository ,
147+ verbose : * verbose ,
148+ readOnly : * readOnly ,
149+ })
150+ } else {
151+ proxy .OnRequest ().Do (& requestHandler {
152+ querier : repository ,
153+ verbose : * verbose ,
154+ ttl : * ttl ,
155+ readOnly : * readOnly ,
153156 })
154157 }
158+ if ! * readOnly {
159+ if * rfc9111 {
160+ proxy .OnResponse ().Do (& responseRFC9111Handler {
161+ shared : * shared ,
162+ writer : repository ,
163+ verbose : * verbose ,
164+ })
165+ } else {
166+ proxy .OnResponse ().Do (& responseHandler {
167+ writer : repository ,
168+ verbose : * verbose ,
169+ })
170+ }
171+
172+ }
155173
156174 lis , err := net .Listen ("tcp" , fmt .Sprintf (":%d" , * port ))
157175 if err != nil {
0 commit comments