mirror of https://github.com/grafana/grafana
Chore: remove session storage references (#16445)
* Chore: remove session storage references * Small refactoring of the settings module * Update docs - remove references for the session storage * Update config files (sample and default configs) * Add tests for warning during the config load on defined storage cache * Remove all references to session storage * Remove macaron session dependency * Remove leftovers * Fix: address review comments * Fix: remove old deps * Fix: add skipStaticRootValidation = true to tests * Fix: improve the docs and warning message As per discussion in here - https://github.com/grafana/grafana/pull/16445/files#r273026255 * Chore: make linter happy Fixes #16148 Ref #16114pull/16714/head
parent
f175046bc1
commit
db584b3d28
@ -0,0 +1,937 @@ |
||||
# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. |
||||
|
||||
|
||||
[[projects]] |
||||
digest = "1:f8ad8a53fa865a70efbe215b0ca34735523f50ea39e0efde319ab6fc80089b44" |
||||
name = "cloud.google.com/go" |
||||
packages = ["compute/metadata"] |
||||
pruneopts = "NUT" |
||||
revision = "056a55f54a6cc77b440b31a56a5e7c3982d32811" |
||||
version = "v0.22.0" |
||||
|
||||
[[projects]] |
||||
digest = "1:167b6f65a6656de568092189ae791253939f076df60231fdd64588ac703892a1" |
||||
name = "github.com/BurntSushi/toml" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "b26d9c308763d68093482582cea63d69be07a0f0" |
||||
version = "v0.3.0" |
||||
|
||||
[[projects]] |
||||
branch = "master" |
||||
digest = "1:7d23e6e1889b8bb4bbb37a564708fdab4497ce232c3a99d66406c975b642a6ff" |
||||
name = "github.com/Unknwon/com" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "7677a1d7c1137cd3dd5ba7a076d0c898a1ef4520" |
||||
|
||||
[[projects]] |
||||
branch = "master" |
||||
digest = "1:1610787cd9726e29d8fecc2a80e43e4fced008a1f560fec6688fc4d946f17835" |
||||
name = "github.com/VividCortex/mysqlerr" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "6c6b55f8796f578c870b7e19bafb16103bc40095" |
||||
|
||||
[[projects]] |
||||
digest = "1:ebe102b61c1615d2954734e3cfe1b6b06a5088c25a41055b38661d41ad7b8f27" |
||||
name = "github.com/aws/aws-sdk-go" |
||||
packages = [ |
||||
"aws", |
||||
"aws/awserr", |
||||
"aws/awsutil", |
||||
"aws/client", |
||||
"aws/client/metadata", |
||||
"aws/corehandlers", |
||||
"aws/credentials", |
||||
"aws/credentials/ec2rolecreds", |
||||
"aws/credentials/endpointcreds", |
||||
"aws/credentials/processcreds", |
||||
"aws/credentials/stscreds", |
||||
"aws/csm", |
||||
"aws/defaults", |
||||
"aws/ec2metadata", |
||||
"aws/endpoints", |
||||
"aws/request", |
||||
"aws/session", |
||||
"aws/signer/v4", |
||||
"internal/ini", |
||||
"internal/s3err", |
||||
"internal/sdkio", |
||||
"internal/sdkrand", |
||||
"internal/sdkuri", |
||||
"internal/shareddefaults", |
||||
"private/protocol", |
||||
"private/protocol/ec2query", |
||||
"private/protocol/eventstream", |
||||
"private/protocol/eventstream/eventstreamapi", |
||||
"private/protocol/json/jsonutil", |
||||
"private/protocol/jsonrpc", |
||||
"private/protocol/query", |
||||
"private/protocol/query/queryutil", |
||||
"private/protocol/rest", |
||||
"private/protocol/restxml", |
||||
"private/protocol/xml/xmlutil", |
||||
"service/cloudwatch", |
||||
"service/ec2", |
||||
"service/ec2/ec2iface", |
||||
"service/resourcegroupstaggingapi", |
||||
"service/resourcegroupstaggingapi/resourcegroupstaggingapiiface", |
||||
"service/s3", |
||||
"service/sts", |
||||
] |
||||
pruneopts = "NUT" |
||||
revision = "62936e15518acb527a1a9cb4a39d96d94d0fd9a2" |
||||
version = "v1.16.15" |
||||
|
||||
[[projects]] |
||||
branch = "master" |
||||
digest = "1:79cad073c7be02632d3fa52f62486848b089f560db1e94536de83a408c0f4726" |
||||
name = "github.com/benbjohnson/clock" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "7dc76406b6d3c05b5f71a86293cbcf3c4ea03b19" |
||||
|
||||
[[projects]] |
||||
branch = "master" |
||||
digest = "1:707ebe952a8b3d00b343c01536c79c73771d100f63ec6babeaed5c79e2b8a8dd" |
||||
name = "github.com/beorn7/perks" |
||||
packages = ["quantile"] |
||||
pruneopts = "NUT" |
||||
revision = "3a771d992973f24aa725d07868b467d1ddfceafb" |
||||
|
||||
[[projects]] |
||||
branch = "master" |
||||
digest = "1:433a2ff0ef4e2f8634614aab3174783c5ff80120b487712db96cc3712f409583" |
||||
name = "github.com/bmizerany/assert" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "b7ed37b82869576c289d7d97fb2bbd8b64a0cb28" |
||||
|
||||
[[projects]] |
||||
branch = "master" |
||||
digest = "1:d8f9145c361920507a4f85ffb7f70b96beaedacba2ce8c00aa663adb08689d3e" |
||||
name = "github.com/bradfitz/gomemcache" |
||||
packages = ["memcache"] |
||||
pruneopts = "NUT" |
||||
revision = "1952afaa557dc08e8e0d89eafab110fb501c1a2b" |
||||
|
||||
[[projects]] |
||||
branch = "master" |
||||
digest = "1:8ecb89af7dfe3ac401bdb0c9390b134ef96a97e85f732d2b0604fb7b3977839f" |
||||
name = "github.com/codahale/hdrhistogram" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "3a0bb77429bd3a61596f5e8a3172445844342120" |
||||
|
||||
[[projects]] |
||||
digest = "1:5dba68a1600a235630e208cb7196b24e58fcbb77bb7a6bec08fcd23f081b0a58" |
||||
name = "github.com/codegangsta/cli" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "cfb38830724cc34fedffe9a2a29fb54fa9169cd1" |
||||
version = "v1.20.0" |
||||
|
||||
[[projects]] |
||||
digest = "1:a2c1d0e43bd3baaa071d1b9ed72c27d78169b2b269f71c105ac4ba34b1be4a39" |
||||
name = "github.com/davecgh/go-spew" |
||||
packages = ["spew"] |
||||
pruneopts = "NUT" |
||||
revision = "346938d642f2ec3594ed81d874461961cd0faa76" |
||||
version = "v1.1.0" |
||||
|
||||
[[projects]] |
||||
digest = "1:1b318d2dd6cea8a1a8d8ec70348852303bd3e491df74e8bca6e32eb5a4d06970" |
||||
name = "github.com/denisenkom/go-mssqldb" |
||||
packages = [ |
||||
".", |
||||
"internal/cp", |
||||
] |
||||
pruneopts = "NUT" |
||||
revision = "270bc3860bb94dd3a3ffd047377d746c5e276726" |
||||
|
||||
[[projects]] |
||||
branch = "master" |
||||
digest = "1:2da5f11ad66ff01a27a5c3dba4620b7eee2327be75b32c9ee9f87c9a8001ecbf" |
||||
name = "github.com/facebookgo/inject" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "cc1aa653e50f6a9893bcaef89e673e5b24e1e97b" |
||||
|
||||
[[projects]] |
||||
branch = "master" |
||||
digest = "1:1108df7f658c90db041e0d6174d55be689aaeb0585913b9c3c7aab51a3a6b2b1" |
||||
name = "github.com/facebookgo/structtag" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "217e25fb96916cc60332e399c9aa63f5c422ceed" |
||||
|
||||
[[projects]] |
||||
digest = "1:ade392a843b2035effb4b4a2efa2c3bab3eb29b992e98bacf9c898b0ecb54e45" |
||||
name = "github.com/fatih/color" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "5b77d2a35fb0ede96d138fc9a99f5c9b6aef11b4" |
||||
version = "v1.7.0" |
||||
|
||||
[[projects]] |
||||
branch = "master" |
||||
digest = "1:682a0aca743a1a4a36697f3d7f86c0ed403c4e3a780db9935f633242855eac9c" |
||||
name = "github.com/go-macaron/binding" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "ac54ee249c27dca7e76fad851a4a04b73bd1b183" |
||||
|
||||
[[projects]] |
||||
branch = "master" |
||||
digest = "1:6326b27f8e0c8e135c8674ddbc619fae879664ac832e8e6fa6a23ce0d279ed4d" |
||||
name = "github.com/go-macaron/gzip" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "cad1c6580a07c56f5f6bc52d66002a05985c5854" |
||||
|
||||
[[projects]] |
||||
branch = "master" |
||||
digest = "1:fb8711b648d1ff03104fc1d9593a13cb1d5120be7ba2b01641c14ccae286a9e3" |
||||
name = "github.com/go-macaron/inject" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "d8a0b8677191f4380287cfebd08e462217bac7ad" |
||||
|
||||
[[projects]] |
||||
branch = "master" |
||||
digest = "1:f43e840e8efb7b5047c1f60057702550fcdefd2b29e3a73ccea25e27d2e83fda" |
||||
name = "github.com/go-macaron/session" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "068d408f9c54c7fa7fcc5e2bdd3241ab21280c9e" |
||||
|
||||
[[projects]] |
||||
digest = "1:fddd4bada6100d6fc49a9f32f18ba5718db45a58e4b00aa6377e1cfbf06af34f" |
||||
name = "github.com/go-sql-driver/mysql" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "2cc627ac8defc45d65066ae98f898166f580f9a4" |
||||
|
||||
[[projects]] |
||||
digest = "1:a1efdbc2762667c8a41cbf02b19a0549c846bf2c1d08cad4f445e3344089f1f0" |
||||
name = "github.com/go-stack/stack" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "259ab82a6cad3992b4e21ff5cac294ccb06474bc" |
||||
version = "v1.7.0" |
||||
|
||||
[[projects]] |
||||
digest = "1:06d21295033f211588d0ad7ff391cc1b27e72b60cb6d4b7db0d70cffae4cf228" |
||||
name = "github.com/go-xorm/builder" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "1d658d7596c25394aab557ef5b50ef35bf706384" |
||||
version = "v0.3.4" |
||||
|
||||
[[projects]] |
||||
digest = "1:b26928aab0fff92592e8728c5bc9d6e404fa2017d6a8e841ae5e60a42237f6fc" |
||||
name = "github.com/go-xorm/core" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "ccc80c1adf1f6172bbc548877f50a1163041a40a" |
||||
version = "v0.6.2" |
||||
|
||||
[[projects]] |
||||
digest = "1:407316703b32d68ccf5d39bdae57d411b6954e253e07d0fff0988a3f39861f2f" |
||||
name = "github.com/go-xorm/xorm" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "1f39c590c64924f358c0d89016ac9b2bb84e9125" |
||||
version = "v0.7.1" |
||||
|
||||
[[projects]] |
||||
branch = "master" |
||||
digest = "1:ffbb19fb66f140b5ea059428d1f84246a055d1bc3d9456c1e5c3d143611f03d0" |
||||
name = "github.com/golang/protobuf" |
||||
packages = [ |
||||
"proto", |
||||
"ptypes", |
||||
"ptypes/any", |
||||
"ptypes/duration", |
||||
"ptypes/timestamp", |
||||
] |
||||
pruneopts = "NUT" |
||||
revision = "927b65914520a8b7d44f5c9057611cfec6b2e2d0" |
||||
|
||||
[[projects]] |
||||
branch = "master" |
||||
digest = "1:f14d1b50e0075fb00177f12a96dd7addf93d1e2883c25befd17285b779549795" |
||||
name = "github.com/gopherjs/gopherjs" |
||||
packages = ["js"] |
||||
pruneopts = "NUT" |
||||
revision = "8dffc02ea1cb8398bb73f30424697c60fcf8d4c5" |
||||
|
||||
[[projects]] |
||||
digest = "1:3b708ebf63bfa9ba3313bedb8526bc0bb284e51474e65e958481476a9d4a12aa" |
||||
name = "github.com/gorilla/websocket" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "ea4d1f681babbce9545c9c5f3d5194a789c89f5b" |
||||
version = "v1.2.0" |
||||
|
||||
[[projects]] |
||||
digest = "1:4e771d1c6e15ca4516ad971c34205c822b5cff2747179679d7b321e4e1bfe431" |
||||
name = "github.com/gosimple/slug" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "e9f42fa127660e552d0ad2b589868d403a9be7c6" |
||||
version = "v1.1.1" |
||||
|
||||
[[projects]] |
||||
branch = "master" |
||||
digest = "1:08e53c69cd267ef7d71eeae5d953153d0d2bc1b8e0b498731fe9acaead7001b6" |
||||
name = "github.com/grafana/grafana-plugin-model" |
||||
packages = [ |
||||
"go/datasource", |
||||
"go/renderer", |
||||
] |
||||
pruneopts = "NUT" |
||||
revision = "84176c64269d8060f99e750ee8aba6f062753336" |
||||
|
||||
[[projects]] |
||||
branch = "master" |
||||
digest = "1:58ba5285227b0f635652cd4aa82c4cfd00b590191eadd823462f0c9f64e3ae07" |
||||
name = "github.com/hashicorp/go-hclog" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "69ff559dc25f3b435631604f573a5fa1efdb6433" |
||||
|
||||
[[projects]] |
||||
digest = "1:532090ffc3b05a7e4c0229dd2698d79149f2e0683df993224a8b202f607fb605" |
||||
name = "github.com/hashicorp/go-plugin" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "e8d22c780116115ae5624720c9af0c97afe4f551" |
||||
|
||||
[[projects]] |
||||
branch = "master" |
||||
digest = "1:8925116d1edcd85fc0c014e1aa69ce12892489b48ee633a605c46d893b8c151f" |
||||
name = "github.com/hashicorp/go-version" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "23480c0665776210b5fbbac6eaaee40e3e6a96b7" |
||||
|
||||
[[projects]] |
||||
branch = "master" |
||||
digest = "1:8deb0c5545c824dfeb0ac77ab8eb67a3d541eab76df5c85ce93064ef02d44cd0" |
||||
name = "github.com/hashicorp/yamux" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "7221087c3d281fda5f794e28c2ea4c6e4d5c4558" |
||||
|
||||
[[projects]] |
||||
digest = "1:efbe016b6d198cf44f1db0ed2fbdf1b36ebf1f6956cc9b76d6affa96f022d368" |
||||
name = "github.com/inconshreveable/log15" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "0decfc6c20d9ca0ad143b0e89dcaa20f810b4fb3" |
||||
version = "v2.13" |
||||
|
||||
[[projects]] |
||||
digest = "1:1f2aebae7e7c856562355ec0198d8ca2fa222fb05e5b1b66632a1fce39631885" |
||||
name = "github.com/jmespath/go-jmespath" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "c2b33e84" |
||||
|
||||
[[projects]] |
||||
digest = "1:395b1480ae42c3fec6fff19823e66e173819f85826811387f9045c88515a7f0f" |
||||
name = "github.com/jtolds/gls" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "b4936e06046bbecbb94cae9c18127ebe510a2cb9" |
||||
|
||||
[[projects]] |
||||
digest = "1:1da1796a71eb70f1e3e085984d044f67840bb0326816ec8276231aa87b1b9fc3" |
||||
name = "github.com/klauspost/compress" |
||||
packages = [ |
||||
"flate", |
||||
"gzip", |
||||
] |
||||
pruneopts = "NUT" |
||||
revision = "6c8db69c4b49dd4df1fff66996cf556176d0b9bf" |
||||
version = "v1.2.1" |
||||
|
||||
[[projects]] |
||||
digest = "1:5e55a8699c9ff7aba1e4c8952aeda209685d88d4cb63a8766c338e333b8e65d6" |
||||
name = "github.com/klauspost/cpuid" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "ae7887de9fa5d2db4eaa8174a7eff2c1ac00f2da" |
||||
version = "v1.1" |
||||
|
||||
[[projects]] |
||||
digest = "1:b95da1293525625ef6f07be79d537b9bf2ecd7901efcf9a92193edafbd55b9ef" |
||||
name = "github.com/klauspost/crc32" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "cb6bfca970f6908083f26f39a79009d608efd5cd" |
||||
version = "v1.1" |
||||
|
||||
[[projects]] |
||||
digest = "1:7b21c7fc5551b46d1308b4ffa9e9e49b66c7a8b0ba88c0130474b0e7a20d859f" |
||||
name = "github.com/kr/pretty" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "73f6ac0b30a98e433b289500d779f50c1a6f0712" |
||||
version = "v0.1.0" |
||||
|
||||
[[projects]] |
||||
digest = "1:c3a7836b5904db0f8b609595b619916a6831cb35b8b714aec39f96d00c6155d8" |
||||
name = "github.com/kr/text" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "e2ffdb16a802fe2bb95e2e35ff34f0e53aeef34f" |
||||
version = "v0.1.0" |
||||
|
||||
[[projects]] |
||||
branch = "master" |
||||
digest = "1:7a1e592f0349d56fac8ce47f28469e4e7f4ce637cb26f40c88da9dff25db1c98" |
||||
name = "github.com/lib/pq" |
||||
packages = [ |
||||
".", |
||||
"oid", |
||||
] |
||||
pruneopts = "NUT" |
||||
revision = "d34b9ff171c21ad295489235aec8b6626023cd04" |
||||
|
||||
[[projects]] |
||||
digest = "1:08c231ec84231a7e23d67e4b58f975e1423695a32467a362ee55a803f9de8061" |
||||
name = "github.com/mattn/go-colorable" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "167de6bfdfba052fa6b2d3664c8f5272e23c9072" |
||||
version = "v0.0.9" |
||||
|
||||
[[projects]] |
||||
digest = "1:bc4f7eec3b7be8c6cb1f0af6c1e3333d5bb71072951aaaae2f05067b0803f287" |
||||
name = "github.com/mattn/go-isatty" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "0360b2af4f38e8d38c7fce2a9f4e702702d73a39" |
||||
version = "v0.0.3" |
||||
|
||||
[[projects]] |
||||
digest = "1:536979f1c56397dbf91c2785159b37dec37e35d3bffa3cd1cfe66d25f51f8088" |
||||
name = "github.com/mattn/go-sqlite3" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "323a32be5a2421b8c7087225079c6c900ec397cd" |
||||
version = "v1.7.0" |
||||
|
||||
[[projects]] |
||||
digest = "1:5985ef4caf91ece5d54817c11ea25f182697534f8ae6521eadcd628c142ac4b6" |
||||
name = "github.com/matttproud/golang_protobuf_extensions" |
||||
packages = ["pbutil"] |
||||
pruneopts = "NUT" |
||||
revision = "3247c84500bff8d9fb6d579d800f20b3e091582c" |
||||
version = "v1.0.0" |
||||
|
||||
[[projects]] |
||||
branch = "master" |
||||
digest = "1:18b773b92ac82a451c1276bd2776c1e55ce057ee202691ab33c8d6690efcc048" |
||||
name = "github.com/mitchellh/go-testing-interface" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "a61a99592b77c9ba629d254a693acffaeb4b7e28" |
||||
|
||||
[[projects]] |
||||
digest = "1:3b517122f3aad1ecce45a630ea912b3092b4729f25532a911d0cb2935a1f9352" |
||||
name = "github.com/oklog/run" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "4dadeb3030eda0273a12382bb2348ffc7c9d1a39" |
||||
version = "v1.0.0" |
||||
|
||||
[[projects]] |
||||
digest = "1:7da29c22bcc5c2ffb308324377dc00b5084650348c2799e573ed226d8cc9faf0" |
||||
name = "github.com/opentracing/opentracing-go" |
||||
packages = [ |
||||
".", |
||||
"ext", |
||||
"log", |
||||
] |
||||
pruneopts = "NUT" |
||||
revision = "1949ddbfd147afd4d964a9f00b24eb291e0e7c38" |
||||
version = "v1.0.2" |
||||
|
||||
[[projects]] |
||||
digest = "1:748946761cf99c8b73cef5a3c0ee3e040859dd713a20cece0d0e0dc04e6ceca7" |
||||
name = "github.com/patrickmn/go-cache" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "a3647f8e31d79543b2d0f0ae2fe5c379d72cedc0" |
||||
version = "v2.1.0" |
||||
|
||||
[[projects]] |
||||
digest = "1:5cf3f025cbee5951a4ee961de067c8a89fc95a5adabead774f82822efabab121" |
||||
name = "github.com/pkg/errors" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "645ef00459ed84a119197bfb8d8205042c6df63d" |
||||
version = "v0.8.0" |
||||
|
||||
[[projects]] |
||||
digest = "1:4759bed95e3a52febc18c071db28790a5c6e9e106ee201a37add6f6a056f8f9c" |
||||
name = "github.com/prometheus/client_golang" |
||||
packages = [ |
||||
"api", |
||||
"api/prometheus/v1", |
||||
"prometheus", |
||||
"prometheus/promhttp", |
||||
] |
||||
pruneopts = "NUT" |
||||
revision = "967789050ba94deca04a5e84cce8ad472ce313c1" |
||||
version = "v0.9.0-pre1" |
||||
|
||||
[[projects]] |
||||
branch = "master" |
||||
digest = "1:32d10bdfa8f09ecf13598324dba86ab891f11db3c538b6a34d1c3b5b99d7c36b" |
||||
name = "github.com/prometheus/client_model" |
||||
packages = ["go"] |
||||
pruneopts = "NUT" |
||||
revision = "99fa1f4be8e564e8a6b613da7fa6f46c9edafc6c" |
||||
|
||||
[[projects]] |
||||
branch = "master" |
||||
digest = "1:768b555b86742de2f28beb37f1dedce9a75f91f871d75b5717c96399c1a78c08" |
||||
name = "github.com/prometheus/common" |
||||
packages = [ |
||||
"expfmt", |
||||
"internal/bitbucket.org/ww/goautoneg", |
||||
"model", |
||||
] |
||||
pruneopts = "NUT" |
||||
revision = "d811d2e9bf898806ecfb6ef6296774b13ffc314c" |
||||
|
||||
[[projects]] |
||||
branch = "master" |
||||
digest = "1:c4a213a8d73fbb0b13f717ba7996116602ef18ecb42b91d77405877914cb0349" |
||||
name = "github.com/prometheus/procfs" |
||||
packages = [ |
||||
".", |
||||
"internal/util", |
||||
"nfs", |
||||
"xfs", |
||||
] |
||||
pruneopts = "NUT" |
||||
revision = "8b1c2da0d56deffdbb9e48d4414b4e674bd8083e" |
||||
|
||||
[[projects]] |
||||
branch = "master" |
||||
digest = "1:16e2136a67ec44aa2d1d6b0fd65394b3c4a8b2a1b6730c77967f7b7b06b179b2" |
||||
name = "github.com/rainycape/unidecode" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "cb7f23ec59bec0d61b19c56cd88cee3d0cc1870c" |
||||
|
||||
[[projects]] |
||||
digest = "1:d917313f309bda80d27274d53985bc65651f81a5b66b820749ac7f8ef061fd04" |
||||
name = "github.com/sergi/go-diff" |
||||
packages = ["diffmatchpatch"] |
||||
pruneopts = "NUT" |
||||
revision = "1744e2970ca51c86172c8190fadad617561ed6e7" |
||||
version = "v1.0.0" |
||||
|
||||
[[projects]] |
||||
digest = "1:a0509115762ee481fd95b60521b4dcc5ad226c54b741a4924f4f28c0cc6aabc8" |
||||
name = "github.com/smartystreets/assertions" |
||||
packages = [ |
||||
".", |
||||
"internal/go-diff/diffmatchpatch", |
||||
"internal/go-render/render", |
||||
"internal/oglematchers", |
||||
] |
||||
pruneopts = "NUT" |
||||
revision = "f487f9de1cd36ebab28235b9373028812fb47cbd" |
||||
|
||||
[[projects]] |
||||
digest = "1:4dccd132a83155851c5e9faaa134ee3a931965c666b6b3c076e238fe9b3577a4" |
||||
name = "github.com/smartystreets/goconvey" |
||||
packages = [ |
||||
"convey", |
||||
"convey/gotest", |
||||
"convey/reporting", |
||||
] |
||||
pruneopts = "NUT" |
||||
revision = "68dc04aab96ae4326137d6b77330c224063a927e" |
||||
|
||||
[[projects]] |
||||
branch = "master" |
||||
digest = "1:a66add8dd963bfc72649017c1b321198f596cb4958cb1a11ff91a1be8691020b" |
||||
name = "github.com/teris-io/shortid" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "771a37caa5cf0c81f585d7b6df4dfc77e0615b5c" |
||||
|
||||
[[projects]] |
||||
digest = "1:3d48c38e0eca8c66df62379c5ae7a83fb5cd839b94f241354c07ba077da7bc45" |
||||
name = "github.com/uber/jaeger-client-go" |
||||
packages = [ |
||||
".", |
||||
"config", |
||||
"internal/baggage", |
||||
"internal/baggage/remote", |
||||
"internal/spanlog", |
||||
"internal/throttler", |
||||
"internal/throttler/remote", |
||||
"log", |
||||
"rpcmetrics", |
||||
"thrift", |
||||
"thrift-gen/agent", |
||||
"thrift-gen/baggage", |
||||
"thrift-gen/jaeger", |
||||
"thrift-gen/sampling", |
||||
"thrift-gen/zipkincore", |
||||
"utils", |
||||
] |
||||
pruneopts = "NUT" |
||||
revision = "b043381d944715b469fd6b37addfd30145ca1758" |
||||
version = "v2.14.0" |
||||
|
||||
[[projects]] |
||||
digest = "1:0f09db8429e19d57c8346ad76fbbc679341fa86073d3b8fb5ac919f0357d8f4c" |
||||
name = "github.com/uber/jaeger-lib" |
||||
packages = ["metrics"] |
||||
pruneopts = "NUT" |
||||
revision = "ed3a127ec5fef7ae9ea95b01b542c47fbd999ce5" |
||||
version = "v1.5.0" |
||||
|
||||
[[projects]] |
||||
digest = "1:4c7d12ad3ef47bb03892a52e2609dc9a9cff93136ca9c7d31c00b79fcbc23c7b" |
||||
name = "github.com/yudai/gojsondiff" |
||||
packages = [ |
||||
".", |
||||
"formatter", |
||||
] |
||||
pruneopts = "NUT" |
||||
revision = "7b1b7adf999dab73a6eb02669c3d82dbb27a3dd6" |
||||
version = "1.0.0" |
||||
|
||||
[[projects]] |
||||
branch = "master" |
||||
digest = "1:e50cbf8eba568d59b71e08c22c2a77809ed4646ae06ef4abb32b3d3d3fdb1a77" |
||||
name = "github.com/yudai/golcs" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "ecda9a501e8220fae3b4b600c3db4b0ba22cfc68" |
||||
|
||||
[[projects]] |
||||
branch = "master" |
||||
digest = "1:758f363e0dff33cf00b234be2efb12f919d79b42d5ae3909ff9eb69ef2c3cca5" |
||||
name = "golang.org/x/crypto" |
||||
packages = [ |
||||
"ed25519", |
||||
"ed25519/internal/edwards25519", |
||||
"md4", |
||||
"pbkdf2", |
||||
] |
||||
pruneopts = "NUT" |
||||
revision = "1a580b3eff7814fc9b40602fd35256c63b50f491" |
||||
|
||||
[[projects]] |
||||
branch = "master" |
||||
digest = "1:0b3fee9c4472022a0982ee0d81e08b3cc3e595f50befd7a4b358b48540d9d8c5" |
||||
name = "golang.org/x/net" |
||||
packages = [ |
||||
"context", |
||||
"context/ctxhttp", |
||||
"http/httpguts", |
||||
"http2", |
||||
"http2/hpack", |
||||
"idna", |
||||
"internal/timeseries", |
||||
"trace", |
||||
] |
||||
pruneopts = "NUT" |
||||
revision = "2491c5de3490fced2f6cff376127c667efeed857" |
||||
|
||||
[[projects]] |
||||
branch = "master" |
||||
digest = "1:46bd4e66bfce5e77f08fc2e8dcacc3676e679241ce83d9c150ff0397d686dd44" |
||||
name = "golang.org/x/oauth2" |
||||
packages = [ |
||||
".", |
||||
"google", |
||||
"internal", |
||||
"jws", |
||||
"jwt", |
||||
] |
||||
pruneopts = "NUT" |
||||
revision = "cdc340f7c179dbbfa4afd43b7614e8fcadde4269" |
||||
|
||||
[[projects]] |
||||
branch = "master" |
||||
digest = "1:39ebcc2b11457b703ae9ee2e8cca0f68df21969c6102cb3b705f76cca0ea0239" |
||||
name = "golang.org/x/sync" |
||||
packages = ["errgroup"] |
||||
pruneopts = "NUT" |
||||
revision = "1d60e4601c6fd243af51cc01ddf169918a5407ca" |
||||
|
||||
[[projects]] |
||||
branch = "master" |
||||
digest = "1:ec21c5bf0572488865b93e30ffd9132afbf85bec0b20c2d6cbcf349cf2031ed5" |
||||
name = "golang.org/x/sys" |
||||
packages = ["unix"] |
||||
pruneopts = "NUT" |
||||
revision = "7c87d13f8e835d2fb3a70a2912c811ed0c1d241b" |
||||
|
||||
[[projects]] |
||||
digest = "1:e7071ed636b5422cc51c0e3a6cebc229d6c9fffc528814b519a980641422d619" |
||||
name = "golang.org/x/text" |
||||
packages = [ |
||||
"collate", |
||||
"collate/build", |
||||
"internal/colltab", |
||||
"internal/gen", |
||||
"internal/tag", |
||||
"internal/triegen", |
||||
"internal/ucd", |
||||
"language", |
||||
"secure/bidirule", |
||||
"transform", |
||||
"unicode/bidi", |
||||
"unicode/cldr", |
||||
"unicode/norm", |
||||
"unicode/rangetable", |
||||
] |
||||
pruneopts = "NUT" |
||||
revision = "f21a4dfb5e38f5895301dc265a8def02365cc3d0" |
||||
version = "v0.3.0" |
||||
|
||||
[[projects]] |
||||
digest = "1:dbd5568923513ee74aa626d027e2a8a352cf8f35df41d19f4e34491d1858c38b" |
||||
name = "google.golang.org/appengine" |
||||
packages = [ |
||||
".", |
||||
"cloudsql", |
||||
"internal", |
||||
"internal/app_identity", |
||||
"internal/base", |
||||
"internal/datastore", |
||||
"internal/log", |
||||
"internal/modules", |
||||
"internal/remote_api", |
||||
"internal/urlfetch", |
||||
"urlfetch", |
||||
] |
||||
pruneopts = "NUT" |
||||
revision = "150dc57a1b433e64154302bdc40b6bb8aefa313a" |
||||
version = "v1.0.0" |
||||
|
||||
[[projects]] |
||||
branch = "master" |
||||
digest = "1:3c24554c312721e98fa6b76403e7100cf974eb46b1255ea7fc6471db9a9ce498" |
||||
name = "google.golang.org/genproto" |
||||
packages = ["googleapis/rpc/status"] |
||||
pruneopts = "NUT" |
||||
revision = "7bb2a897381c9c5ab2aeb8614f758d7766af68ff" |
||||
|
||||
[[projects]] |
||||
digest = "1:840b77b6eb539b830bb760b6e30b688ed2ff484bd83466fce2395835ed9367fe" |
||||
name = "google.golang.org/grpc" |
||||
packages = [ |
||||
".", |
||||
"balancer", |
||||
"balancer/base", |
||||
"balancer/roundrobin", |
||||
"codes", |
||||
"connectivity", |
||||
"credentials", |
||||
"encoding", |
||||
"encoding/proto", |
||||
"grpclb/grpc_lb_v1/messages", |
||||
"grpclog", |
||||
"health", |
||||
"health/grpc_health_v1", |
||||
"internal", |
||||
"keepalive", |
||||
"metadata", |
||||
"naming", |
||||
"peer", |
||||
"resolver", |
||||
"resolver/dns", |
||||
"resolver/passthrough", |
||||
"stats", |
||||
"status", |
||||
"tap", |
||||
"transport", |
||||
] |
||||
pruneopts = "NUT" |
||||
revision = "1e2570b1b19ade82d8dbb31bba4e65e9f9ef5b34" |
||||
version = "v1.11.1" |
||||
|
||||
[[projects]] |
||||
branch = "v3" |
||||
digest = "1:1244a9b3856f70d5ffb74bbfd780fc9d47f93f2049fa265c6fb602878f507bf8" |
||||
name = "gopkg.in/alexcesaro/quotedprintable.v3" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "2caba252f4dc53eaf6b553000885530023f54623" |
||||
|
||||
[[projects]] |
||||
digest = "1:aea6e9483c167cc6fdf1274c442558c5dda8fd3373372be04d98c79100868da1" |
||||
name = "gopkg.in/asn1-ber.v1" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "379148ca0225df7a432012b8df0355c2a2063ac0" |
||||
version = "v1.2" |
||||
|
||||
[[projects]] |
||||
digest = "1:24bfc2e8bf971485cb5ba0f0e5b08a1b806cca5828134df76b32d1ea50f2ab49" |
||||
name = "gopkg.in/bufio.v1" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "567b2bfa514e796916c4747494d6ff5132a1dfce" |
||||
version = "v1" |
||||
|
||||
[[projects]] |
||||
digest = "1:e05711632e1515319b014e8fe4cbe1d30ab024c473403f60cf0fdeb4c586a474" |
||||
name = "gopkg.in/ini.v1" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "6529cf7c58879c08d927016dde4477f18a0634cb" |
||||
version = "v1.36.0" |
||||
|
||||
[[projects]] |
||||
digest = "1:c847b7fea4c7e6db5281a37dffc4620cb78c1227403a79e5aa290db517657ac1" |
||||
name = "gopkg.in/ldap.v3" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "5c2c0f997205c29de14cb6c35996370c2c5dfab1" |
||||
version = "v3" |
||||
|
||||
[[projects]] |
||||
digest = "1:3b0cf3a465fd07f76e5fc1a9d0783c662dac0de9fc73d713ebe162768fd87b5f" |
||||
name = "gopkg.in/macaron.v1" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "c1be95e6d21e769e44e1ec33cec9da5837861c10" |
||||
version = "v1.3.1" |
||||
|
||||
[[projects]] |
||||
branch = "v2" |
||||
digest = "1:d52332f9e9f2c6343652e13aa3fd40cfd03353520c9a48d90f21215d3012d50f" |
||||
name = "gopkg.in/mail.v2" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "5bc5c8bb07bd8d2803831fbaf8cbd630fcde2c68" |
||||
|
||||
[[projects]] |
||||
digest = "1:00126f697efdcab42f07c89ac8bf0095fb2328aef6464e070055154088cea859" |
||||
name = "gopkg.in/redis.v2" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "e6179049628164864e6e84e973cfb56335748dea" |
||||
version = "v2.3.2" |
||||
|
||||
[[projects]] |
||||
digest = "1:a50fabe7a46692dc7c656310add3d517abe7914df02afd151ef84da884605dc8" |
||||
name = "gopkg.in/square/go-jose.v2" |
||||
packages = [ |
||||
".", |
||||
"cipher", |
||||
"json", |
||||
] |
||||
pruneopts = "NUT" |
||||
revision = "ef984e69dd356202fd4e4910d4d9c24468bdf0b8" |
||||
version = "v2.1.9" |
||||
|
||||
[[projects]] |
||||
branch = "v2" |
||||
digest = "1:7c95b35057a0ff2e19f707173cc1a947fa43a6eb5c4d300d196ece0334046082" |
||||
name = "gopkg.in/yaml.v2" |
||||
packages = ["."] |
||||
pruneopts = "NUT" |
||||
revision = "5420a8b6744d3b0345ab293f6fcba19c978f1183" |
||||
|
||||
[solve-meta] |
||||
analyzer-name = "dep" |
||||
analyzer-version = 1 |
||||
input-imports = [ |
||||
"github.com/BurntSushi/toml", |
||||
"github.com/Unknwon/com", |
||||
"github.com/VividCortex/mysqlerr", |
||||
"github.com/aws/aws-sdk-go/aws", |
||||
"github.com/aws/aws-sdk-go/aws/awserr", |
||||
"github.com/aws/aws-sdk-go/aws/awsutil", |
||||
"github.com/aws/aws-sdk-go/aws/credentials", |
||||
"github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds", |
||||
"github.com/aws/aws-sdk-go/aws/credentials/endpointcreds", |
||||
"github.com/aws/aws-sdk-go/aws/defaults", |
||||
"github.com/aws/aws-sdk-go/aws/ec2metadata", |
||||
"github.com/aws/aws-sdk-go/aws/endpoints", |
||||
"github.com/aws/aws-sdk-go/aws/request", |
||||
"github.com/aws/aws-sdk-go/aws/session", |
||||
"github.com/aws/aws-sdk-go/service/cloudwatch", |
||||
"github.com/aws/aws-sdk-go/service/ec2", |
||||
"github.com/aws/aws-sdk-go/service/ec2/ec2iface", |
||||
"github.com/aws/aws-sdk-go/service/resourcegroupstaggingapi", |
||||
"github.com/aws/aws-sdk-go/service/resourcegroupstaggingapi/resourcegroupstaggingapiiface", |
||||
"github.com/aws/aws-sdk-go/service/s3", |
||||
"github.com/aws/aws-sdk-go/service/sts", |
||||
"github.com/benbjohnson/clock", |
||||
"github.com/bmizerany/assert", |
||||
"github.com/bradfitz/gomemcache/memcache", |
||||
"github.com/codegangsta/cli", |
||||
"github.com/davecgh/go-spew/spew", |
||||
"github.com/denisenkom/go-mssqldb", |
||||
"github.com/facebookgo/inject", |
||||
"github.com/fatih/color", |
||||
"github.com/go-macaron/binding", |
||||
"github.com/go-macaron/gzip", |
||||
"github.com/go-macaron/session", |
||||
"github.com/go-sql-driver/mysql", |
||||
"github.com/go-stack/stack", |
||||
"github.com/go-xorm/core", |
||||
"github.com/go-xorm/xorm", |
||||
"github.com/gorilla/websocket", |
||||
"github.com/gosimple/slug", |
||||
"github.com/grafana/grafana-plugin-model/go/datasource", |
||||
"github.com/grafana/grafana-plugin-model/go/renderer", |
||||
"github.com/hashicorp/go-hclog", |
||||
"github.com/hashicorp/go-plugin", |
||||
"github.com/hashicorp/go-version", |
||||
"github.com/inconshreveable/log15", |
||||
"github.com/jtolds/gls", |
||||
"github.com/lib/pq", |
||||
"github.com/mattn/go-isatty", |
||||
"github.com/mattn/go-sqlite3", |
||||
"github.com/opentracing/opentracing-go", |
||||
"github.com/opentracing/opentracing-go/ext", |
||||
"github.com/opentracing/opentracing-go/log", |
||||
"github.com/patrickmn/go-cache", |
||||
"github.com/prometheus/client_golang/api", |
||||
"github.com/prometheus/client_golang/api/prometheus/v1", |
||||
"github.com/prometheus/client_golang/prometheus", |
||||
"github.com/prometheus/client_golang/prometheus/promhttp", |
||||
"github.com/prometheus/client_model/go", |
||||
"github.com/prometheus/common/expfmt", |
||||
"github.com/prometheus/common/model", |
||||
"github.com/smartystreets/assertions", |
||||
"github.com/smartystreets/goconvey/convey", |
||||
"github.com/teris-io/shortid", |
||||
"github.com/uber/jaeger-client-go/config", |
||||
"github.com/yudai/gojsondiff", |
||||
"github.com/yudai/gojsondiff/formatter", |
||||
"golang.org/x/net/context/ctxhttp", |
||||
"golang.org/x/oauth2", |
||||
"golang.org/x/oauth2/google", |
||||
"golang.org/x/oauth2/jwt", |
||||
"golang.org/x/sync/errgroup", |
||||
"gopkg.in/ini.v1", |
||||
"gopkg.in/ldap.v3", |
||||
"gopkg.in/macaron.v1", |
||||
"gopkg.in/mail.v2", |
||||
"gopkg.in/redis.v2", |
||||
"gopkg.in/square/go-jose.v2", |
||||
"gopkg.in/yaml.v2", |
||||
] |
||||
solver-name = "gps-cdcl" |
||||
solver-version = 1 |
@ -1,233 +0,0 @@ |
||||
// Copyright 2013 Beego Authors
|
||||
// Copyright 2014 The Macaron Authors
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License"): you may
|
||||
// not use this file except in compliance with the License. You may obtain
|
||||
// a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
// License for the specific language governing permissions and limitations
|
||||
// under the License.
|
||||
|
||||
package session |
||||
|
||||
import ( |
||||
"database/sql" |
||||
"fmt" |
||||
"log" |
||||
"sync" |
||||
"time" |
||||
|
||||
_ "github.com/go-sql-driver/mysql" |
||||
|
||||
"github.com/go-macaron/session" |
||||
) |
||||
|
||||
// MysqlStore represents a mysql session store implementation.
|
||||
type MysqlStore struct { |
||||
c *sql.DB |
||||
sid string |
||||
lock sync.RWMutex |
||||
data map[interface{}]interface{} |
||||
expiry int64 |
||||
dirty bool |
||||
} |
||||
|
||||
// NewMysqlStore creates and returns a mysql session store.
|
||||
func NewMysqlStore(c *sql.DB, sid string, kv map[interface{}]interface{}, expiry int64) *MysqlStore { |
||||
return &MysqlStore{ |
||||
c: c, |
||||
sid: sid, |
||||
data: kv, |
||||
expiry: expiry, |
||||
dirty: false, |
||||
} |
||||
} |
||||
|
||||
// Set sets value to given key in session.
|
||||
func (s *MysqlStore) Set(key, val interface{}) error { |
||||
s.lock.Lock() |
||||
defer s.lock.Unlock() |
||||
|
||||
s.data[key] = val |
||||
s.dirty = true |
||||
return nil |
||||
} |
||||
|
||||
// Get gets value by given key in session.
|
||||
func (s *MysqlStore) Get(key interface{}) interface{} { |
||||
s.lock.RLock() |
||||
defer s.lock.RUnlock() |
||||
|
||||
return s.data[key] |
||||
} |
||||
|
||||
// Delete delete a key from session.
|
||||
func (s *MysqlStore) Delete(key interface{}) error { |
||||
s.lock.Lock() |
||||
defer s.lock.Unlock() |
||||
|
||||
delete(s.data, key) |
||||
s.dirty = true |
||||
return nil |
||||
} |
||||
|
||||
// ID returns current session ID.
|
||||
func (s *MysqlStore) ID() string { |
||||
return s.sid |
||||
} |
||||
|
||||
// Release releases resource and save data to provider.
|
||||
func (s *MysqlStore) Release() error { |
||||
newExpiry := time.Now().Unix() |
||||
if !s.dirty && (s.expiry+60) >= newExpiry { |
||||
return nil |
||||
} |
||||
|
||||
data, err := session.EncodeGob(s.data) |
||||
if err != nil { |
||||
return err |
||||
} |
||||
|
||||
_, err = s.c.Exec("UPDATE session SET data=?, expiry=? WHERE `key`=?", |
||||
data, newExpiry, s.sid) |
||||
s.dirty = false |
||||
s.expiry = newExpiry |
||||
return err |
||||
} |
||||
|
||||
// Flush deletes all session data.
|
||||
func (s *MysqlStore) Flush() error { |
||||
s.lock.Lock() |
||||
defer s.lock.Unlock() |
||||
|
||||
s.data = make(map[interface{}]interface{}) |
||||
s.dirty = true |
||||
return nil |
||||
} |
||||
|
||||
// MysqlProvider represents a mysql session provider implementation.
|
||||
type MysqlProvider struct { |
||||
c *sql.DB |
||||
expire int64 |
||||
} |
||||
|
||||
// Init initializes mysql session provider.
|
||||
// connStr: username:password@protocol(address)/dbname?param=value
|
||||
func (p *MysqlProvider) Init(expire int64, connStr string) (err error) { |
||||
p.expire = expire |
||||
|
||||
p.c, err = sql.Open("mysql", connStr) |
||||
p.c.SetConnMaxLifetime(time.Second * time.Duration(sessionConnMaxLifetime)) |
||||
if err != nil { |
||||
return err |
||||
} |
||||
return p.c.Ping() |
||||
} |
||||
|
||||
// Read returns raw session store by session ID.
|
||||
func (p *MysqlProvider) Read(sid string) (session.RawStore, error) { |
||||
expiry := time.Now().Unix() |
||||
var data []byte |
||||
err := p.c.QueryRow("SELECT data,expiry FROM session WHERE `key`=?", sid).Scan(&data, &expiry) |
||||
if err == sql.ErrNoRows { |
||||
_, err = p.c.Exec("INSERT INTO session(`key`,data,expiry) VALUES(?,?,?)", |
||||
sid, "", expiry) |
||||
} |
||||
if err != nil { |
||||
return nil, err |
||||
} |
||||
|
||||
var kv map[interface{}]interface{} |
||||
if len(data) == 0 { |
||||
kv = make(map[interface{}]interface{}) |
||||
} else { |
||||
kv, err = session.DecodeGob(data) |
||||
if err != nil { |
||||
return nil, err |
||||
} |
||||
} |
||||
|
||||
return NewMysqlStore(p.c, sid, kv, expiry), nil |
||||
} |
||||
|
||||
// Exist returns true if session with given ID exists.
|
||||
func (p *MysqlProvider) Exist(sid string) bool { |
||||
exists, err := p.queryExists(sid) |
||||
|
||||
if err != nil { |
||||
exists, err = p.queryExists(sid) |
||||
} |
||||
|
||||
if err != nil { |
||||
log.Printf("session/mysql: error checking if session exists: %v", err) |
||||
return false |
||||
} |
||||
|
||||
return exists |
||||
} |
||||
|
||||
func (p *MysqlProvider) queryExists(sid string) (bool, error) { |
||||
var data []byte |
||||
err := p.c.QueryRow("SELECT data FROM session WHERE `key`=?", sid).Scan(&data) |
||||
|
||||
if err != nil && err != sql.ErrNoRows { |
||||
return false, err |
||||
} |
||||
|
||||
return err != sql.ErrNoRows, nil |
||||
} |
||||
|
||||
// Destory deletes a session by session ID.
|
||||
func (p *MysqlProvider) Destory(sid string) error { |
||||
_, err := p.c.Exec("DELETE FROM session WHERE `key`=?", sid) |
||||
return err |
||||
} |
||||
|
||||
// Regenerate regenerates a session store from old session ID to new one.
|
||||
func (p *MysqlProvider) Regenerate(oldsid, sid string) (_ session.RawStore, err error) { |
||||
if p.Exist(sid) { |
||||
return nil, fmt.Errorf("new sid '%s' already exists", sid) |
||||
} |
||||
|
||||
if !p.Exist(oldsid) { |
||||
if _, err = p.c.Exec("INSERT INTO session(`key`,data,expiry) VALUES(?,?,?)", |
||||
oldsid, "", time.Now().Unix()); err != nil { |
||||
return nil, err |
||||
} |
||||
} |
||||
|
||||
if _, err = p.c.Exec("UPDATE session SET `key`=? WHERE `key`=?", sid, oldsid); err != nil { |
||||
return nil, err |
||||
} |
||||
|
||||
return p.Read(sid) |
||||
} |
||||
|
||||
// Count counts and returns number of sessions.
|
||||
func (p *MysqlProvider) Count() (total int) { |
||||
if err := p.c.QueryRow("SELECT COUNT(*) AS NUM FROM session").Scan(&total); err != nil { |
||||
panic("session/mysql: error counting records: " + err.Error()) |
||||
} |
||||
return total |
||||
} |
||||
|
||||
// GC calls GC to clean expired sessions.
|
||||
func (p *MysqlProvider) GC() { |
||||
var err error |
||||
if _, err = p.c.Exec("DELETE FROM session WHERE expiry + ? <= UNIX_TIMESTAMP(NOW())", p.expire); err != nil { |
||||
_, err = p.c.Exec("DELETE FROM session WHERE expiry + ? <= UNIX_TIMESTAMP(NOW())", p.expire) |
||||
} |
||||
|
||||
if err != nil { |
||||
log.Printf("session/mysql: error garbage collecting: %v", err) |
||||
} |
||||
} |
||||
|
||||
func init() { |
||||
session.Register("mysql", &MysqlProvider{}) |
||||
} |
@ -1,173 +0,0 @@ |
||||
package session |
||||
|
||||
import ( |
||||
"math/rand" |
||||
"time" |
||||
|
||||
ms "github.com/go-macaron/session" |
||||
_ "github.com/go-macaron/session/memcache" |
||||
_ "github.com/go-macaron/session/postgres" |
||||
_ "github.com/go-macaron/session/redis" |
||||
"github.com/grafana/grafana/pkg/log" |
||||
"gopkg.in/macaron.v1" |
||||
) |
||||
|
||||
const ( |
||||
SESS_KEY_USERID = "uid" |
||||
SESS_KEY_LASTLDAPSYNC = "last_ldap_sync" |
||||
) |
||||
|
||||
var sessionManager *ms.Manager |
||||
var sessionOptions *ms.Options |
||||
var StartSessionGC func() = func() {} |
||||
var GetSessionCount func() int |
||||
var sessionLogger = log.New("session") |
||||
var sessionConnMaxLifetime int64 |
||||
|
||||
func init() { |
||||
StartSessionGC = func() { |
||||
sessionManager.GC() |
||||
sessionLogger.Debug("Session GC") |
||||
time.AfterFunc(time.Duration(sessionOptions.Gclifetime)*time.Second, StartSessionGC) |
||||
} |
||||
GetSessionCount = func() int { |
||||
return sessionManager.Count() |
||||
} |
||||
} |
||||
|
||||
func Init(options *ms.Options, connMaxLifetime int64) { |
||||
var err error |
||||
sessionOptions = prepareOptions(options) |
||||
sessionConnMaxLifetime = connMaxLifetime |
||||
sessionManager, err = ms.NewManager(options.Provider, *options) |
||||
if err != nil { |
||||
panic(err) |
||||
} |
||||
|
||||
// start GC threads after some random seconds
|
||||
rndSeconds := 10 + rand.Int63n(180) |
||||
time.AfterFunc(time.Duration(rndSeconds)*time.Second, StartSessionGC) |
||||
} |
||||
|
||||
func prepareOptions(opt *ms.Options) *ms.Options { |
||||
if len(opt.Provider) == 0 { |
||||
opt.Provider = "memory" |
||||
} |
||||
if len(opt.ProviderConfig) == 0 { |
||||
opt.ProviderConfig = "data/sessions" |
||||
} |
||||
if len(opt.CookieName) == 0 { |
||||
opt.CookieName = "grafana_sess" |
||||
} |
||||
if len(opt.CookiePath) == 0 { |
||||
opt.CookiePath = "/" |
||||
} |
||||
if opt.Gclifetime == 0 { |
||||
opt.Gclifetime = 3600 |
||||
} |
||||
if opt.Maxlifetime == 0 { |
||||
opt.Maxlifetime = opt.Gclifetime |
||||
} |
||||
if opt.IDLength == 0 { |
||||
opt.IDLength = 16 |
||||
} |
||||
|
||||
return opt |
||||
} |
||||
|
||||
func GetSession() SessionStore { |
||||
return &SessionWrapper{manager: sessionManager} |
||||
} |
||||
|
||||
type SessionStore interface { |
||||
// Set sets value to given key in session.
|
||||
Set(interface{}, interface{}) error |
||||
// Get gets value by given key in session.
|
||||
Get(interface{}) interface{} |
||||
// Delete deletes a key from session.
|
||||
Delete(interface{}) interface{} |
||||
// ID returns current session ID.
|
||||
ID() string |
||||
// Release releases session resource and save data to provider.
|
||||
Release() error |
||||
// Destory deletes a session.
|
||||
Destory(*macaron.Context) error |
||||
// init
|
||||
Start(*macaron.Context) error |
||||
// RegenerateId regenerates the session id
|
||||
RegenerateId(*macaron.Context) error |
||||
} |
||||
|
||||
type SessionWrapper struct { |
||||
session ms.RawStore |
||||
manager *ms.Manager |
||||
} |
||||
|
||||
func (s *SessionWrapper) Start(c *macaron.Context) error { |
||||
// See https://github.com/grafana/grafana/issues/11155 for details on why
|
||||
// a recover and retry is needed
|
||||
defer func() error { |
||||
if err := recover(); err != nil { |
||||
var retryErr error |
||||
s.session, retryErr = s.manager.Start(c) |
||||
return retryErr |
||||
} |
||||
|
||||
return nil |
||||
}() |
||||
|
||||
var err error |
||||
s.session, err = s.manager.Start(c) |
||||
return err |
||||
} |
||||
|
||||
func (s *SessionWrapper) RegenerateId(c *macaron.Context) error { |
||||
var err error |
||||
s.session, err = s.manager.RegenerateId(c) |
||||
return err |
||||
} |
||||
|
||||
func (s *SessionWrapper) Set(k interface{}, v interface{}) error { |
||||
if s.session != nil { |
||||
return s.session.Set(k, v) |
||||
} |
||||
return nil |
||||
} |
||||
|
||||
func (s *SessionWrapper) Get(k interface{}) interface{} { |
||||
if s.session != nil { |
||||
return s.session.Get(k) |
||||
} |
||||
return nil |
||||
} |
||||
|
||||
func (s *SessionWrapper) Delete(k interface{}) interface{} { |
||||
if s.session != nil { |
||||
return s.session.Delete(k) |
||||
} |
||||
return nil |
||||
} |
||||
|
||||
func (s *SessionWrapper) ID() string { |
||||
if s.session != nil { |
||||
return s.session.ID() |
||||
} |
||||
return "" |
||||
} |
||||
|
||||
func (s *SessionWrapper) Release() error { |
||||
if s.session != nil { |
||||
return s.session.Release() |
||||
} |
||||
return nil |
||||
} |
||||
|
||||
func (s *SessionWrapper) Destory(c *macaron.Context) error { |
||||
if s.session != nil { |
||||
if err := s.manager.Destory(c); err != nil { |
||||
return err |
||||
} |
||||
s.session = nil |
||||
} |
||||
return nil |
||||
} |
@ -0,0 +1,43 @@ |
||||
package setting |
||||
|
||||
import ( |
||||
"path/filepath" |
||||
"testing" |
||||
|
||||
"github.com/grafana/grafana/pkg/log" |
||||
. "github.com/smartystreets/goconvey/convey" |
||||
) |
||||
|
||||
type testLogger struct { |
||||
log.Logger |
||||
warnCalled bool |
||||
warnMessage string |
||||
} |
||||
|
||||
func (stub *testLogger) Warn(testMessage string, ctx ...interface{}) { |
||||
stub.warnCalled = true |
||||
stub.warnMessage = testMessage |
||||
} |
||||
func TestSessionSettings(t *testing.T) { |
||||
Convey("session config", t, func() { |
||||
skipStaticRootValidation = true |
||||
|
||||
Convey("Reading session should log error ", func() { |
||||
var ( |
||||
cfg = NewCfg() |
||||
homePath = "../../" |
||||
) |
||||
|
||||
stub := &testLogger{} |
||||
cfg.Logger = stub |
||||
|
||||
cfg.Load(&CommandLineArgs{ |
||||
HomePath: homePath, |
||||
Config: filepath.Join(homePath, "pkg/setting/testdata/session.ini"), |
||||
}) |
||||
|
||||
So(stub.warnCalled, ShouldEqual, true) |
||||
So(len(stub.warnMessage), ShouldBeGreaterThan, 0) |
||||
}) |
||||
}) |
||||
} |
@ -0,0 +1,2 @@ |
||||
[session] |
||||
provider = file |
Loading…
Reference in new issue