Exec defines write query for database.
(rw http.ResponseWriter, r *http.Request)
| 104 | |
| 105 | // Exec defines write query for database. |
| 106 | func (a *queryAPI) Write(rw http.ResponseWriter, r *http.Request) { |
| 107 | // check privilege |
| 108 | hasPrivilege := false |
| 109 | |
| 110 | if config.GetConfig().TLSConfig == nil || !config.GetConfig().VerifyCertificate { |
| 111 | // http mode or no certificate verification required |
| 112 | hasPrivilege = true |
| 113 | } |
| 114 | |
| 115 | if r.TLS != nil && len(r.TLS.PeerCertificates) > 0 { |
| 116 | cert := r.TLS.PeerCertificates[0] |
| 117 | |
| 118 | for _, privilegedCert := range config.GetConfig().WriteCertificates { |
| 119 | if cert.Equal(privilegedCert) { |
| 120 | hasPrivilege = true |
| 121 | break |
| 122 | } |
| 123 | } |
| 124 | |
| 125 | if !hasPrivilege { |
| 126 | for _, privilegedCert := range config.GetConfig().AdminCertificates { |
| 127 | if cert.Equal(privilegedCert) { |
| 128 | hasPrivilege = true |
| 129 | break |
| 130 | } |
| 131 | } |
| 132 | } |
| 133 | } |
| 134 | |
| 135 | // forbidden |
| 136 | if !hasPrivilege { |
| 137 | sendResponse(http.StatusForbidden, false, nil, nil, rw) |
| 138 | return |
| 139 | } |
| 140 | |
| 141 | var ( |
| 142 | qm *queryMap |
| 143 | err error |
| 144 | ) |
| 145 | |
| 146 | if qm, err = parseForm(r); err != nil { |
| 147 | sendResponse(http.StatusBadRequest, false, err, nil, rw) |
| 148 | return |
| 149 | } |
| 150 | |
| 151 | log.WithFields(log.Fields{ |
| 152 | "db": qm.Database, |
| 153 | "query": qm.Query, |
| 154 | }).Info("got exec") |
| 155 | |
| 156 | var ( |
| 157 | affectedRows int64 |
| 158 | lastInsertID int64 |
| 159 | ) |
| 160 | |
| 161 | if affectedRows, lastInsertID, err = config.GetConfig().StorageInstance.Exec( |
| 162 | qm.Database, qm.Query, qm.Args...); err != nil { |
| 163 | sendResponse(http.StatusInternalServerError, false, err, nil, rw) |
nothing calls this directly
no test coverage detected