Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pg_query integration #691

Merged
merged 20 commits into from
Sep 17, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Initial setup
  • Loading branch information
Zhaars committed Oct 31, 2023
commit 19be5f1a219f6b66b9be315ea22819bd081ba3cc
5 changes: 3 additions & 2 deletions acrablock/dataEncryptor.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@ package acrablock

import (
"context"

"github.com/cossacklabs/acra/acrastruct"
"github.com/cossacklabs/acra/decryptor/base"
"github.com/cossacklabs/acra/encryptor"
"github.com/cossacklabs/acra/encryptor/config"
encryptor "github.com/cossacklabs/acra/encryptor/base"
"github.com/cossacklabs/acra/encryptor/base/config"
"github.com/cossacklabs/acra/keystore"
)

Expand Down
2 changes: 1 addition & 1 deletion cmd/acra-server/acra-server.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ import (
"github.com/cossacklabs/acra/decryptor/base"
"github.com/cossacklabs/acra/decryptor/mysql"
"github.com/cossacklabs/acra/decryptor/postgresql"
"github.com/cossacklabs/acra/encryptor/config_loader"
"github.com/cossacklabs/acra/encryptor/base/config_loader"
"github.com/cossacklabs/acra/keystore"
"github.com/cossacklabs/acra/keystore/filesystem"
"github.com/cossacklabs/acra/keystore/keyloader"
Expand Down
13 changes: 7 additions & 6 deletions cmd/acra-server/common/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,18 +21,19 @@ import (
"flag"
"io/ioutil"

log "github.com/sirupsen/logrus"
"go.opencensus.io/trace"

acracensor "github.com/cossacklabs/acra/acra-censor"
"github.com/cossacklabs/acra/encryptor"
encryptorConfig "github.com/cossacklabs/acra/encryptor/config"
"github.com/cossacklabs/acra/encryptor/config_loader"
"github.com/cossacklabs/acra/encryptor/base"
encryptorConfig "github.com/cossacklabs/acra/encryptor/base/config"
"github.com/cossacklabs/acra/encryptor/base/config_loader"
"github.com/cossacklabs/acra/keystore"
"github.com/cossacklabs/acra/logging"
"github.com/cossacklabs/acra/network"
"github.com/cossacklabs/acra/sqlparser/dialect"
mysqlDialect "github.com/cossacklabs/acra/sqlparser/dialect/mysql"
pgDialect "github.com/cossacklabs/acra/sqlparser/dialect/postgresql"
log "github.com/sirupsen/logrus"
"go.opencensus.io/trace"
)

// Config describes AcraServer configuration
Expand All @@ -55,7 +56,7 @@ type Config struct {
censor acracensor.AcraCensorInterface
TraceToLog bool
tableSchema encryptorConfig.TableSchemaStore
dataEncryptor encryptor.DataEncryptor
dataEncryptor base.DataEncryptor
keystore keystore.ServerKeyStore
traceOptions []trace.StartOption
serviceName string
Expand Down
2 changes: 2 additions & 0 deletions cmd/acra-translator/grpc_api/api.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 5 additions & 3 deletions crypto/acrablock.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@ package crypto

import (
"fmt"

"github.com/sirupsen/logrus"

"github.com/cossacklabs/acra/acrablock"
"github.com/cossacklabs/acra/decryptor/base"
"github.com/cossacklabs/acra/encryptor"
"github.com/cossacklabs/acra/encryptor/config"
encryptor "github.com/cossacklabs/acra/encryptor/base"
"github.com/cossacklabs/acra/encryptor/base/config"
"github.com/cossacklabs/acra/logging"
"github.com/cossacklabs/acra/utils"
"github.com/sirupsen/logrus"
)

// AcraBlockEnvelopeID represent AcraBlock EnvelopeID will be serialized inside CryptoContainer
Expand Down
4 changes: 2 additions & 2 deletions crypto/acrastruct.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import (

"github.com/cossacklabs/acra/acrastruct"
"github.com/cossacklabs/acra/decryptor/base"
"github.com/cossacklabs/acra/encryptor"
"github.com/cossacklabs/acra/encryptor/config"
encryptor "github.com/cossacklabs/acra/encryptor/base"
"github.com/cossacklabs/acra/encryptor/base/config"
"github.com/cossacklabs/acra/logging"
"github.com/cossacklabs/acra/utils"
)
Expand Down
2 changes: 1 addition & 1 deletion crypto/encryptor.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package crypto

import (
"github.com/cossacklabs/acra/encryptor/config"
"github.com/cossacklabs/acra/encryptor/base/config"
)

// EncryptHandler wraps RegistryHandler as standalone CryptoEnvelope encryptor
Expand Down
2 changes: 1 addition & 1 deletion crypto/prometheus.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package crypto

import (
"github.com/cossacklabs/acra/decryptor/base"
"github.com/cossacklabs/acra/encryptor"
encryptor "github.com/cossacklabs/acra/encryptor/base"
)

// PrometheusContainerHandlerWrapper wraps ContainerHandler with adding prometheus metrics logic
Expand Down
3 changes: 2 additions & 1 deletion crypto/reencryptor.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@ package crypto

import (
"context"

"github.com/cossacklabs/acra/decryptor/base"
"github.com/cossacklabs/acra/encryptor/config"
"github.com/cossacklabs/acra/encryptor/base/config"
"github.com/cossacklabs/acra/keystore"
)

Expand Down
5 changes: 3 additions & 2 deletions crypto/registry_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,12 @@ import (
"bytes"
"encoding/binary"
"errors"

"github.com/cossacklabs/acra/acrablock"
"github.com/cossacklabs/acra/acrastruct"
"github.com/cossacklabs/acra/decryptor/base"
"github.com/cossacklabs/acra/encryptor"
"github.com/cossacklabs/acra/encryptor/config"
encryptor "github.com/cossacklabs/acra/encryptor/base"
"github.com/cossacklabs/acra/encryptor/base/config"
"github.com/cossacklabs/acra/keystore"
)

Expand Down
2 changes: 1 addition & 1 deletion decryptor/base/mocks/BoundValue.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

19 changes: 15 additions & 4 deletions decryptor/base/observers.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,24 +19,35 @@ package base
import (
"context"

pg_query "github.com/pganalyze/pg_query_go/v4"
"github.com/sirupsen/logrus"

"github.com/cossacklabs/acra/encryptor/config"
"github.com/cossacklabs/acra/encryptor/base/config"
"github.com/cossacklabs/acra/logging"
"github.com/cossacklabs/acra/sqlparser"
)

// OnQueryObject interface for result of OnQuery call
type OnQueryObject interface {
Statement() (sqlparser.Statement, error)
// PgStatement temporal method not to break the interface
PgStatement() (*pg_query.ParseResult, error)
Query() string
}

// onQueryObject store result of QueryObserver.OnQuery call to reuse statements/queries between calls and do not parse/encode queries/statements
type onQueryObject struct {
statement sqlparser.Statement
parser *sqlparser.Parser
query string
statement sqlparser.Statement
pgStatement *pg_query.ParseResult
parser *sqlparser.Parser
query string
}

func (obj *onQueryObject) PgStatement() (*pg_query.ParseResult, error) {
if obj.pgStatement != nil {
return obj.pgStatement, nil
}
return pg_query.Parse(obj.query)
}

// Statement return stored statement or parse query
Expand Down
2 changes: 1 addition & 1 deletion decryptor/base/proxy.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ import (
"fmt"
"net"

"github.com/cossacklabs/acra/encryptor/base/config"
"github.com/cossacklabs/acra/network"

acracensor "github.com/cossacklabs/acra/acra-censor"
"github.com/cossacklabs/acra/encryptor/config"
"github.com/cossacklabs/acra/keystore"
"github.com/cossacklabs/acra/sqlparser"
)
Expand Down
3 changes: 2 additions & 1 deletion decryptor/base/type_awareness/encoder.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ import (
"context"
"sync"

"github.com/cossacklabs/acra/encryptor/config/common"
"github.com/sirupsen/logrus"

"github.com/cossacklabs/acra/encryptor/base/config/common"
)

// DataTypeFormat represent common interface about DB type
Expand Down
7 changes: 4 additions & 3 deletions decryptor/mysql/data_encoder.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,14 @@ import (
"github.com/cossacklabs/acra/decryptor/base"
"github.com/cossacklabs/acra/decryptor/base/type_awareness"
base_mysql "github.com/cossacklabs/acra/decryptor/mysql/base"
"github.com/sirupsen/logrus"

// explicitly import types package to force calls of init functions to register supported types
_ "github.com/cossacklabs/acra/decryptor/mysql/types"
"github.com/cossacklabs/acra/encryptor"
"github.com/cossacklabs/acra/encryptor/config"
encryptor "github.com/cossacklabs/acra/encryptor/base"
"github.com/cossacklabs/acra/encryptor/base/config"
"github.com/cossacklabs/acra/logging"
"github.com/cossacklabs/acra/utils"
"github.com/sirupsen/logrus"
)

// BaseMySQLDataProcessor implements processor and encode/decode binary intX values to text format which acceptable by Tokenizer
Expand Down
7 changes: 4 additions & 3 deletions decryptor/mysql/prepared_statement_sql_observer.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,9 @@ import (
"github.com/sirupsen/logrus"

"github.com/cossacklabs/acra/decryptor/base"
"github.com/cossacklabs/acra/encryptor"
"github.com/cossacklabs/acra/encryptor/config"
encryptor "github.com/cossacklabs/acra/encryptor/base"
"github.com/cossacklabs/acra/encryptor/base/config"
"github.com/cossacklabs/acra/encryptor/mysql"
"github.com/cossacklabs/acra/hmac"
"github.com/cossacklabs/acra/logging"
"github.com/cossacklabs/acra/sqlparser"
Expand All @@ -39,7 +40,7 @@ func NewMySQLPreparedStatementsQuery(proxyHandler *Handler, parser *sqlparser.Pa
parser,
nil,
schemaStore,
&encryptor.MysqlDBDataCoder{},
&mysql.MysqlDBDataCoder{},
nil,
}
}
Expand Down
4 changes: 2 additions & 2 deletions decryptor/mysql/prepared_statements.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ import (

"github.com/cossacklabs/acra/decryptor/base"
base_mysql "github.com/cossacklabs/acra/decryptor/mysql/base"
"github.com/cossacklabs/acra/encryptor"
"github.com/cossacklabs/acra/encryptor/config"
encryptor "github.com/cossacklabs/acra/encryptor/base"
"github.com/cossacklabs/acra/encryptor/base/config"
"github.com/cossacklabs/acra/logging"
tokens "github.com/cossacklabs/acra/pseudonymization/common"
"github.com/cossacklabs/acra/sqlparser"
Expand Down
9 changes: 5 additions & 4 deletions decryptor/mysql/proxy.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,9 @@ package mysql
import (
"github.com/cossacklabs/acra/crypto"
"github.com/cossacklabs/acra/decryptor/base"
"github.com/cossacklabs/acra/encryptor"
"github.com/cossacklabs/acra/encryptor/config"
encryptor "github.com/cossacklabs/acra/encryptor/base"
"github.com/cossacklabs/acra/encryptor/base/config"
"github.com/cossacklabs/acra/encryptor/mysql"
"github.com/cossacklabs/acra/hmac"
hashDecryptor "github.com/cossacklabs/acra/hmac/decryptor"
"github.com/cossacklabs/acra/keystore"
Expand Down Expand Up @@ -68,7 +69,7 @@ func (factory *proxyFactory) New(clientID []byte, clientSession base.ClientSessi
// register Query processor first before other processors because it match SELECT queries for ColumnEncryptorConfig structs
// and store it in AccessContext for next decryptions/encryptions and all other processors rely on that
// use nil dataEncryptor to avoid extra computations
queryEncryptor, err := encryptor.NewMysqlQueryEncryptor(factory.setting.TableSchemaStore(), sqlParser, nil)
queryEncryptor, err := mysql.NewQueryEncryptor(factory.setting.TableSchemaStore(), sqlParser, nil)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -156,7 +157,7 @@ func (factory *proxyFactory) New(clientID []byte, clientSession base.ClientSessi

// register query processors/encryptors only if have some
queryDataEncryptor := encryptor.NewChainDataEncryptor(chainEncryptors...)
queryEncryptor, err := encryptor.NewMysqlQueryEncryptor(factory.setting.TableSchemaStore(), sqlParser, queryDataEncryptor)
queryEncryptor, err := mysql.NewQueryEncryptor(factory.setting.TableSchemaStore(), sqlParser, queryDataEncryptor)
if err != nil {
return nil, err
}
Expand Down
4 changes: 2 additions & 2 deletions decryptor/mysql/type_conversion.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ import (
"github.com/cossacklabs/acra/decryptor/base"
"github.com/cossacklabs/acra/decryptor/base/type_awareness"
base_mysql "github.com/cossacklabs/acra/decryptor/mysql/base"
"github.com/cossacklabs/acra/encryptor/config"
"github.com/cossacklabs/acra/encryptor/config/common"
"github.com/cossacklabs/acra/encryptor/base/config"
"github.com/cossacklabs/acra/encryptor/base/config/common"
)

// TypeConfiguration represent configurations details of specific type
Expand Down
5 changes: 3 additions & 2 deletions decryptor/mysql/types/blob.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,13 @@ import (
"encoding/base64"
"fmt"

log "github.com/sirupsen/logrus"

"github.com/cossacklabs/acra/decryptor/base"
"github.com/cossacklabs/acra/decryptor/base/type_awareness"
base_mysql "github.com/cossacklabs/acra/decryptor/mysql/base"
"github.com/cossacklabs/acra/encryptor/config/common"
"github.com/cossacklabs/acra/encryptor/base/config/common"
"github.com/cossacklabs/acra/logging"
log "github.com/sirupsen/logrus"
)

// BlobDataTypeEncoder is encoder of TypeBlob in MySQL
Expand Down
5 changes: 3 additions & 2 deletions decryptor/mysql/types/long.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,13 @@ import (
"fmt"
"strconv"

log "github.com/sirupsen/logrus"

"github.com/cossacklabs/acra/decryptor/base"
"github.com/cossacklabs/acra/decryptor/base/type_awareness"
base_mysql "github.com/cossacklabs/acra/decryptor/mysql/base"
"github.com/cossacklabs/acra/encryptor/config/common"
"github.com/cossacklabs/acra/encryptor/base/config/common"
"github.com/cossacklabs/acra/utils"
log "github.com/sirupsen/logrus"
)

// LongDataTypeEncoder is encoder of TypeLong in MySQL
Expand Down
5 changes: 3 additions & 2 deletions decryptor/mysql/types/long_long.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,13 @@ import (
"fmt"
"strconv"

log "github.com/sirupsen/logrus"

"github.com/cossacklabs/acra/decryptor/base"
"github.com/cossacklabs/acra/decryptor/base/type_awareness"
base_mysql "github.com/cossacklabs/acra/decryptor/mysql/base"
"github.com/cossacklabs/acra/encryptor/config/common"
"github.com/cossacklabs/acra/encryptor/base/config/common"
"github.com/cossacklabs/acra/utils"
log "github.com/sirupsen/logrus"
)

// LongLongDataTypeEncoder is encoder of TypeLongLong in MySQL
Expand Down
5 changes: 3 additions & 2 deletions decryptor/mysql/types/string.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,12 @@ import (
"fmt"
"unicode/utf8"

log "github.com/sirupsen/logrus"

"github.com/cossacklabs/acra/decryptor/base"
"github.com/cossacklabs/acra/decryptor/base/type_awareness"
base_mysql "github.com/cossacklabs/acra/decryptor/mysql/base"
"github.com/cossacklabs/acra/encryptor/config/common"
log "github.com/sirupsen/logrus"
"github.com/cossacklabs/acra/encryptor/base/config/common"
)

// StringDataTypeEncoder is encoder of TypeString in MySQL
Expand Down
4 changes: 2 additions & 2 deletions decryptor/postgresql/data_encoder.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ import (
"github.com/cossacklabs/acra/decryptor/base"
"github.com/cossacklabs/acra/decryptor/base/type_awareness"
"github.com/cossacklabs/acra/decryptor/postgresql/types"
"github.com/cossacklabs/acra/encryptor"
"github.com/cossacklabs/acra/encryptor/config"
encryptor "github.com/cossacklabs/acra/encryptor/base"
"github.com/cossacklabs/acra/encryptor/base/config"
"github.com/cossacklabs/acra/logging"
"github.com/cossacklabs/acra/utils"
)
Expand Down
7 changes: 4 additions & 3 deletions decryptor/postgresql/packet_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,12 @@ import (
"errors"
"io"

"github.com/cossacklabs/acra/decryptor/base"
"github.com/cossacklabs/acra/encryptor"
"github.com/cossacklabs/acra/logging"
"github.com/jackc/pgx/v5/pgproto3"
"github.com/sirupsen/logrus"

"github.com/cossacklabs/acra/decryptor/base"
encryptor "github.com/cossacklabs/acra/encryptor/base"
"github.com/cossacklabs/acra/logging"
)

// PacketHandler hold state of postgresql packet and process data rows
Expand Down
Loading