proxy: well known service icons (#5453)
* proxy: add logo discovery * use a static url for testing * well known service icons * better fitting avatars
|
@ -4,20 +4,6 @@ import (
|
|||
"context"
|
||||
"encoding/base64"
|
||||
"errors"
|
||||
"io"
|
||||
"iter"
|
||||
"mime"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"golang.org/x/net/html"
|
||||
"golang.org/x/sync/semaphore"
|
||||
|
||||
"github.com/pomerium/pomerium/internal/httputil"
|
||||
"github.com/pomerium/pomerium/internal/log"
|
||||
"github.com/pomerium/pomerium/internal/urlutil"
|
||||
)
|
||||
|
||||
// errors
|
||||
|
@ -30,201 +16,38 @@ type LogoProvider interface {
|
|||
|
||||
// NewLogoProvider creates a new LogoProvider.
|
||||
func NewLogoProvider() LogoProvider {
|
||||
return newFaviconDiscoveryLogoProvider()
|
||||
return multiLogoProvider{newWellKnownLogoProvider(), newFaviconDiscoveryLogoProvider()}
|
||||
}
|
||||
|
||||
type faviconCacheValue struct {
|
||||
sem *semaphore.Weighted
|
||||
url string
|
||||
err error
|
||||
expiry time.Time
|
||||
}
|
||||
type multiLogoProvider []LogoProvider
|
||||
|
||||
type faviconDiscoveryLogoProvider struct {
|
||||
mu sync.Mutex
|
||||
cache map[string]*faviconCacheValue
|
||||
successTTL time.Duration
|
||||
failureTTL time.Duration
|
||||
}
|
||||
|
||||
func newFaviconDiscoveryLogoProvider() *faviconDiscoveryLogoProvider {
|
||||
return &faviconDiscoveryLogoProvider{
|
||||
cache: make(map[string]*faviconCacheValue),
|
||||
successTTL: time.Hour,
|
||||
failureTTL: 10 * time.Minute,
|
||||
}
|
||||
}
|
||||
|
||||
func (p *faviconDiscoveryLogoProvider) GetLogoURL(ctx context.Context, _, to string) (string, error) {
|
||||
p.mu.Lock()
|
||||
v, ok := p.cache[to]
|
||||
if !ok {
|
||||
v = &faviconCacheValue{
|
||||
sem: semaphore.NewWeighted(1),
|
||||
}
|
||||
p.cache[to] = v
|
||||
}
|
||||
p.mu.Unlock()
|
||||
|
||||
// take the semaphore
|
||||
err := v.sem.Acquire(ctx, 1)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
defer v.sem.Release(1)
|
||||
|
||||
// if we have a valid cached url or error, return it
|
||||
if v.expiry.After(time.Now()) {
|
||||
return v.url, v.err
|
||||
}
|
||||
|
||||
// attempt to discover the logo url and save the url or the error
|
||||
v.url, v.err = p.discoverLogoURL(ctx, to)
|
||||
if v.err == nil {
|
||||
v.expiry = time.Now().Add(p.successTTL)
|
||||
} else {
|
||||
v.expiry = time.Now().Add(p.failureTTL)
|
||||
}
|
||||
|
||||
return v.url, v.err
|
||||
}
|
||||
|
||||
func (p *faviconDiscoveryLogoProvider) discoverLogoURL(ctx context.Context, rawURL string) (string, error) {
|
||||
u, err := urlutil.ParseAndValidateURL(rawURL)
|
||||
if err != nil {
|
||||
return "", ErrLogoNotFound
|
||||
}
|
||||
|
||||
if !(u.Scheme == "http" || u.Scheme == "https") {
|
||||
return "", ErrLogoNotFound
|
||||
}
|
||||
|
||||
req, err := http.NewRequestWithContext(ctx, http.MethodGet, rawURL, nil)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
t := httputil.GetInsecureTransport()
|
||||
c := &http.Client{
|
||||
Transport: t,
|
||||
}
|
||||
|
||||
res, err := c.Do(req)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
defer res.Body.Close()
|
||||
|
||||
// look for any logos in the html
|
||||
r := io.LimitReader(res.Body, 10*1024)
|
||||
for link := range findIconLinksInHTML(r) {
|
||||
linkURL, err := u.Parse(link)
|
||||
if err != nil {
|
||||
func (p multiLogoProvider) GetLogoURL(ctx context.Context, from, to string) (string, error) {
|
||||
for _, pp := range p {
|
||||
url, err := pp.GetLogoURL(ctx, from, to)
|
||||
if errors.Is(err, ErrLogoNotFound) {
|
||||
continue
|
||||
} else if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
logoURL := p.fetchLogoURL(ctx, c, linkURL)
|
||||
if logoURL != "" {
|
||||
return logoURL, nil
|
||||
}
|
||||
}
|
||||
|
||||
// try just the /favicon.ico
|
||||
logoURL := p.fetchLogoURL(ctx, c, u.ResolveReference(&url.URL{Path: "/favicon.ico"}))
|
||||
if logoURL != "" {
|
||||
return logoURL, nil
|
||||
return url, nil
|
||||
}
|
||||
|
||||
return "", ErrLogoNotFound
|
||||
}
|
||||
|
||||
func (p *faviconDiscoveryLogoProvider) fetchLogoURL(ctx context.Context, client *http.Client, logoURL *url.URL) string {
|
||||
req, err := http.NewRequestWithContext(ctx, http.MethodGet, logoURL.String(), nil)
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
|
||||
res, err := client.Do(req)
|
||||
if err != nil {
|
||||
log.Ctx(ctx).Debug().Str("url", logoURL.String()).Err(err).Msg("error fetching logo contents")
|
||||
return ""
|
||||
}
|
||||
defer res.Body.Close()
|
||||
|
||||
if res.StatusCode/100 != 2 {
|
||||
log.Ctx(ctx).Debug().Int("status-code", res.StatusCode).Str("url", logoURL.String()).Msg("error fetching logo contents")
|
||||
return ""
|
||||
}
|
||||
|
||||
const maxImageSize = 1024 * 1024
|
||||
bs, err := io.ReadAll(io.LimitReader(res.Body, maxImageSize))
|
||||
if err != nil {
|
||||
log.Ctx(ctx).Debug().Str("url", logoURL.String()).Err(err).Msg("error reading logo contents")
|
||||
return ""
|
||||
}
|
||||
|
||||
// first use the Content-Type header to determine the format
|
||||
if mtype, _, err := mime.ParseMediaType(res.Header.Get("Content-Type")); err == nil {
|
||||
if isSupportedImageType(mtype) {
|
||||
return "data:" + mtype + ";base64," + base64.StdEncoding.EncodeToString(bs)
|
||||
}
|
||||
log.Ctx(ctx).Debug().Str("mime-type", mtype).Str("url", logoURL.String()).Msg("rejecting logo")
|
||||
return ""
|
||||
}
|
||||
|
||||
// next try to use mimetype sniffing
|
||||
mtype := http.DetectContentType(bs)
|
||||
if isSupportedImageType(mtype) {
|
||||
return "data:" + mtype + ";base64," + base64.StdEncoding.EncodeToString(bs)
|
||||
}
|
||||
|
||||
log.Ctx(ctx).Debug().Str("mime-type", mtype).Str("url", logoURL.String()).Msg("rejecting logo")
|
||||
return ""
|
||||
}
|
||||
const (
|
||||
mediaTypePNG = "image/png"
|
||||
mediaTypeSVG = "image/svg+xml"
|
||||
)
|
||||
|
||||
func isSupportedImageType(mtype string) bool {
|
||||
return mtype == "image/vnd.microsoft.icon" ||
|
||||
mtype == "image/png" ||
|
||||
mtype == "image/svg+xml" ||
|
||||
mtype == mediaTypePNG ||
|
||||
mtype == mediaTypeSVG ||
|
||||
mtype == "image/jpeg" ||
|
||||
mtype == "image/gif"
|
||||
}
|
||||
|
||||
func findIconLinksInHTML(r io.Reader) iter.Seq[string] {
|
||||
return func(yield func(string) bool) {
|
||||
z := html.NewTokenizer(r)
|
||||
for {
|
||||
tt := z.Next()
|
||||
if tt == html.ErrorToken {
|
||||
return
|
||||
}
|
||||
|
||||
switch tt {
|
||||
case html.StartTagToken, html.SelfClosingTagToken:
|
||||
name, attr := parseTag(z)
|
||||
if name == "link" && attr["href"] != "" && (attr["rel"] == "shortcut icon" || attr["rel"] == "icon") {
|
||||
if !yield(attr["href"]) {
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func parseTag(z *html.Tokenizer) (name string, attributes map[string]string) {
|
||||
n, hasAttr := z.TagName()
|
||||
name = string(n)
|
||||
if !hasAttr {
|
||||
return name, attributes
|
||||
}
|
||||
attributes = make(map[string]string)
|
||||
for {
|
||||
k, v, m := z.TagAttr()
|
||||
attributes[string(k)] = string(v)
|
||||
if !m {
|
||||
break
|
||||
}
|
||||
}
|
||||
return name, attributes
|
||||
func dataURL(mimeType string, data []byte) string {
|
||||
return "data:" + mimeType + ";base64," + base64.StdEncoding.EncodeToString(data)
|
||||
}
|
||||
|
|
208
proxy/portal/logo_provider_favicon.go
Normal file
|
@ -0,0 +1,208 @@
|
|||
package portal
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/base64"
|
||||
"io"
|
||||
"iter"
|
||||
"mime"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"golang.org/x/net/html"
|
||||
"golang.org/x/sync/semaphore"
|
||||
|
||||
"github.com/pomerium/pomerium/internal/httputil"
|
||||
"github.com/pomerium/pomerium/internal/log"
|
||||
"github.com/pomerium/pomerium/internal/urlutil"
|
||||
)
|
||||
|
||||
type faviconCacheValue struct {
|
||||
sem *semaphore.Weighted
|
||||
url string
|
||||
err error
|
||||
expiry time.Time
|
||||
}
|
||||
|
||||
type faviconDiscoveryLogoProvider struct {
|
||||
mu sync.Mutex
|
||||
cache map[string]*faviconCacheValue
|
||||
successTTL time.Duration
|
||||
failureTTL time.Duration
|
||||
}
|
||||
|
||||
func newFaviconDiscoveryLogoProvider() *faviconDiscoveryLogoProvider {
|
||||
return &faviconDiscoveryLogoProvider{
|
||||
cache: make(map[string]*faviconCacheValue),
|
||||
successTTL: time.Hour,
|
||||
failureTTL: 10 * time.Minute,
|
||||
}
|
||||
}
|
||||
|
||||
func (p *faviconDiscoveryLogoProvider) GetLogoURL(ctx context.Context, _, to string) (string, error) {
|
||||
p.mu.Lock()
|
||||
v, ok := p.cache[to]
|
||||
if !ok {
|
||||
v = &faviconCacheValue{
|
||||
sem: semaphore.NewWeighted(1),
|
||||
}
|
||||
p.cache[to] = v
|
||||
}
|
||||
p.mu.Unlock()
|
||||
|
||||
// take the semaphore
|
||||
err := v.sem.Acquire(ctx, 1)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
defer v.sem.Release(1)
|
||||
|
||||
// if we have a valid cached url or error, return it
|
||||
if v.expiry.After(time.Now()) {
|
||||
return v.url, v.err
|
||||
}
|
||||
|
||||
// attempt to discover the logo url and save the url or the error
|
||||
v.url, v.err = p.discoverLogoURL(ctx, to)
|
||||
if v.err == nil {
|
||||
v.expiry = time.Now().Add(p.successTTL)
|
||||
} else {
|
||||
v.expiry = time.Now().Add(p.failureTTL)
|
||||
}
|
||||
|
||||
return v.url, v.err
|
||||
}
|
||||
|
||||
func (p *faviconDiscoveryLogoProvider) discoverLogoURL(ctx context.Context, rawURL string) (string, error) {
|
||||
u, err := urlutil.ParseAndValidateURL(rawURL)
|
||||
if err != nil {
|
||||
return "", ErrLogoNotFound
|
||||
}
|
||||
|
||||
if !(u.Scheme == "http" || u.Scheme == "https") {
|
||||
return "", ErrLogoNotFound
|
||||
}
|
||||
|
||||
req, err := http.NewRequestWithContext(ctx, http.MethodGet, rawURL, nil)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
t := httputil.GetInsecureTransport()
|
||||
c := &http.Client{
|
||||
Transport: t,
|
||||
}
|
||||
|
||||
res, err := c.Do(req)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
defer res.Body.Close()
|
||||
|
||||
// look for any logos in the html
|
||||
r := io.LimitReader(res.Body, 10*1024)
|
||||
for link := range findIconLinksInHTML(r) {
|
||||
linkURL, err := u.Parse(link)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
logoURL := p.fetchLogoURL(ctx, c, linkURL)
|
||||
if logoURL != "" {
|
||||
return logoURL, nil
|
||||
}
|
||||
}
|
||||
|
||||
// try just the /favicon.ico
|
||||
logoURL := p.fetchLogoURL(ctx, c, u.ResolveReference(&url.URL{Path: "/favicon.ico"}))
|
||||
if logoURL != "" {
|
||||
return logoURL, nil
|
||||
}
|
||||
|
||||
return "", ErrLogoNotFound
|
||||
}
|
||||
|
||||
func (p *faviconDiscoveryLogoProvider) fetchLogoURL(ctx context.Context, client *http.Client, logoURL *url.URL) string {
|
||||
req, err := http.NewRequestWithContext(ctx, http.MethodGet, logoURL.String(), nil)
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
|
||||
res, err := client.Do(req)
|
||||
if err != nil {
|
||||
log.Ctx(ctx).Debug().Str("url", logoURL.String()).Err(err).Msg("error fetching logo contents")
|
||||
return ""
|
||||
}
|
||||
defer res.Body.Close()
|
||||
|
||||
if res.StatusCode/100 != 2 {
|
||||
log.Ctx(ctx).Debug().Int("status-code", res.StatusCode).Str("url", logoURL.String()).Msg("error fetching logo contents")
|
||||
return ""
|
||||
}
|
||||
|
||||
const maxImageSize = 1024 * 1024
|
||||
bs, err := io.ReadAll(io.LimitReader(res.Body, maxImageSize))
|
||||
if err != nil {
|
||||
log.Ctx(ctx).Debug().Str("url", logoURL.String()).Err(err).Msg("error reading logo contents")
|
||||
return ""
|
||||
}
|
||||
|
||||
// first use the Content-Type header to determine the format
|
||||
if mtype, _, err := mime.ParseMediaType(res.Header.Get("Content-Type")); err == nil {
|
||||
if isSupportedImageType(mtype) {
|
||||
return "data:" + mtype + ";base64," + base64.StdEncoding.EncodeToString(bs)
|
||||
}
|
||||
log.Ctx(ctx).Debug().Str("mime-type", mtype).Str("url", logoURL.String()).Msg("rejecting logo")
|
||||
return ""
|
||||
}
|
||||
|
||||
// next try to use mimetype sniffing
|
||||
mtype := http.DetectContentType(bs)
|
||||
if isSupportedImageType(mtype) {
|
||||
return "data:" + mtype + ";base64," + base64.StdEncoding.EncodeToString(bs)
|
||||
}
|
||||
|
||||
log.Ctx(ctx).Debug().Str("mime-type", mtype).Str("url", logoURL.String()).Msg("rejecting logo")
|
||||
return ""
|
||||
}
|
||||
|
||||
func findIconLinksInHTML(r io.Reader) iter.Seq[string] {
|
||||
return func(yield func(string) bool) {
|
||||
z := html.NewTokenizer(r)
|
||||
for {
|
||||
tt := z.Next()
|
||||
if tt == html.ErrorToken {
|
||||
return
|
||||
}
|
||||
|
||||
switch tt {
|
||||
case html.StartTagToken, html.SelfClosingTagToken:
|
||||
name, attr := parseTag(z)
|
||||
if name == "link" && attr["href"] != "" && (attr["rel"] == "shortcut icon" || attr["rel"] == "icon") {
|
||||
if !yield(attr["href"]) {
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func parseTag(z *html.Tokenizer) (name string, attributes map[string]string) {
|
||||
n, hasAttr := z.TagName()
|
||||
name = string(n)
|
||||
if !hasAttr {
|
||||
return name, attributes
|
||||
}
|
||||
attributes = make(map[string]string)
|
||||
for {
|
||||
k, v, m := z.TagAttr()
|
||||
attributes[string(k)] = string(v)
|
||||
if !m {
|
||||
break
|
||||
}
|
||||
}
|
||||
return name, attributes
|
||||
}
|
190
proxy/portal/logo_provider_well_known.go
Normal file
|
@ -0,0 +1,190 @@
|
|||
package portal
|
||||
|
||||
import (
|
||||
"context"
|
||||
_ "embed"
|
||||
"net"
|
||||
"path/filepath"
|
||||
|
||||
"github.com/pomerium/pomerium/internal/urlutil"
|
||||
)
|
||||
|
||||
var (
|
||||
//go:embed logos/activemq.svg
|
||||
activemqLogo []byte
|
||||
//go:embed logos/aerospike.svg
|
||||
aerospikeLogo []byte
|
||||
//go:embed logos/cassandra.svg
|
||||
cassandraLogo []byte
|
||||
//go:embed logos/clickhouse.svg
|
||||
clickhouseLogo []byte
|
||||
//go:embed logos/cloudera.svg
|
||||
clouderaLogo []byte
|
||||
//go:embed logos/cockroachdb.svg
|
||||
cockroachdbLogo []byte
|
||||
//go:embed logos/consul.svg
|
||||
consulLogo []byte
|
||||
//go:embed logos/couchbase.svg
|
||||
couchbaseLogo []byte
|
||||
//go:embed logos/couchdb.svg
|
||||
couchdbLogo []byte
|
||||
//go:embed logos/cratedb.svg
|
||||
cratedbLogo []byte
|
||||
//go:embed logos/elasticsearch.svg
|
||||
elasticsearchLogo []byte
|
||||
//go:embed logos/etcd.svg
|
||||
etcdLogo []byte
|
||||
//go:embed logos/ftp.svg
|
||||
ftpLogo []byte
|
||||
//go:embed logos/hadoop.svg
|
||||
hadoopLogo []byte
|
||||
//go:embed logos/hbase.svg
|
||||
hbaseLogo []byte
|
||||
//go:embed logos/ibmmq.svg
|
||||
ibmmqLogo []byte
|
||||
//go:embed logos/influxdb.svg
|
||||
influxdbLogo []byte
|
||||
//go:embed logos/kafka.svg
|
||||
kafkaLogo []byte
|
||||
//go:embed logos/machbase.png
|
||||
machbaseLogo []byte
|
||||
//go:embed logos/mariadb.svg
|
||||
mariadbLogo []byte
|
||||
//go:embed logos/meilisearch.svg
|
||||
meilisearchLogo []byte
|
||||
//go:embed logos/memcached.svg
|
||||
memcachedLogo []byte
|
||||
//go:embed logos/mongodb.svg
|
||||
mongodbLogo []byte
|
||||
//go:embed logos/mqtt.svg
|
||||
mqttLogo []byte
|
||||
//go:embed logos/nfs.svg
|
||||
nfsLogo []byte
|
||||
//go:embed logos/neo4j.svg
|
||||
neo4jLogo []byte
|
||||
//go:embed logos/opentext.svg
|
||||
opentextLogo []byte
|
||||
//go:embed logos/oracle.svg
|
||||
oracleLogo []byte
|
||||
//go:embed logos/postgres.svg
|
||||
postgresLogo []byte
|
||||
//go:embed logos/rabbitmq.svg
|
||||
rabbitmqLogo []byte
|
||||
//go:embed logos/redis.svg
|
||||
redisLogo []byte
|
||||
//go:embed logos/riak.svg
|
||||
riakLogo []byte
|
||||
//go:embed logos/sphinx.png
|
||||
sphinxLogo []byte
|
||||
//go:embed logos/ssh.svg
|
||||
sshLogo []byte
|
||||
//go:embed logos/typesense.svg
|
||||
typesenseLogo []byte
|
||||
//go:embed logos/zookeeper.svg
|
||||
zookeeperLogo []byte
|
||||
)
|
||||
|
||||
type wellKnownLogoProvider struct{}
|
||||
|
||||
func newWellKnownLogoProvider() LogoProvider {
|
||||
return &wellKnownLogoProvider{}
|
||||
}
|
||||
|
||||
func (p *wellKnownLogoProvider) GetLogoURL(_ context.Context, _, to string) (string, error) {
|
||||
u, err := urlutil.ParseAndValidateURL(to)
|
||||
if err != nil {
|
||||
return "", ErrLogoNotFound
|
||||
}
|
||||
|
||||
if !(u.Scheme == "tcp" ||
|
||||
u.Scheme == "udp") {
|
||||
return "", ErrLogoNotFound
|
||||
}
|
||||
|
||||
host := u.Host
|
||||
if len(u.Path) > 1 {
|
||||
_, host = filepath.Split(u.Path)
|
||||
}
|
||||
|
||||
_, portStr, err := net.SplitHostPort(host)
|
||||
if err != nil {
|
||||
return "", ErrLogoNotFound
|
||||
}
|
||||
|
||||
switch portStr {
|
||||
case "21": // ftp
|
||||
return dataURL(mediaTypeSVG, ftpLogo), nil
|
||||
case "22": // ssh
|
||||
return dataURL(mediaTypeSVG, sshLogo), nil
|
||||
case "111", "2049": // nfs
|
||||
return dataURL(mediaTypeSVG, nfsLogo), nil
|
||||
case "1414": // ibmmq
|
||||
return dataURL(mediaTypeSVG, ibmmqLogo), nil
|
||||
case "1521": // oracle
|
||||
return dataURL(mediaTypeSVG, oracleLogo), nil
|
||||
case "1883", "8883", "14567":
|
||||
return dataURL(mediaTypeSVG, mqttLogo), nil
|
||||
case "2181": // zookeeper
|
||||
return dataURL(mediaTypeSVG, zookeeperLogo), nil
|
||||
case "2379": // etcd
|
||||
return dataURL(mediaTypeSVG, etcdLogo), nil
|
||||
case "3000": // aerospike
|
||||
return dataURL(mediaTypeSVG, aerospikeLogo), nil
|
||||
case "3306": // mariadb
|
||||
return dataURL(mediaTypeSVG, mariadbLogo), nil
|
||||
case "4200": // cratedb
|
||||
return dataURL(mediaTypeSVG, cratedbLogo), nil
|
||||
case "5432": // postgres
|
||||
return dataURL(mediaTypeSVG, postgresLogo), nil
|
||||
case "5433": // vertica
|
||||
return dataURL(mediaTypeSVG, opentextLogo), nil
|
||||
case "5652", "5653", "5654", "5655", "5656": // machbase
|
||||
return dataURL(mediaTypePNG, machbaseLogo), nil
|
||||
case "5672": // rabbitmq
|
||||
return dataURL(mediaTypeSVG, rabbitmqLogo), nil
|
||||
case "5984": // couchdb
|
||||
return dataURL(mediaTypeSVG, couchdbLogo), nil
|
||||
case "6379": // redis
|
||||
return dataURL(mediaTypeSVG, redisLogo), nil
|
||||
case "7180", "7183": // cloudera
|
||||
return dataURL(mediaTypeSVG, clouderaLogo), nil
|
||||
case "7474", "7473": // neo4j
|
||||
return dataURL(mediaTypeSVG, neo4jLogo), nil
|
||||
case "7700": // meilisearch
|
||||
return dataURL(mediaTypeSVG, meilisearchLogo), nil
|
||||
case "8020", "50070": // hadoop
|
||||
return dataURL(mediaTypeSVG, hadoopLogo), nil
|
||||
case "8086": // influxdb
|
||||
return dataURL(mediaTypeSVG, influxdbLogo), nil
|
||||
case "8070", "8085", "9090", "9095", "16000", "16010": // hbase
|
||||
return dataURL(mediaTypeSVG, hbaseLogo), nil
|
||||
case "8091": // couchbase
|
||||
return dataURL(mediaTypeSVG, couchbaseLogo), nil
|
||||
case "8098": // riak
|
||||
return dataURL(mediaTypeSVG, riakLogo), nil
|
||||
case "8108": // typesense
|
||||
return dataURL(mediaTypeSVG, typesenseLogo), nil
|
||||
case "8500", "8501", "8502", "8503": // consul
|
||||
return dataURL(mediaTypeSVG, consulLogo), nil
|
||||
case "9000", "9100": // clickhouse
|
||||
return dataURL(mediaTypeSVG, clickhouseLogo), nil
|
||||
case "9042", "9160", "9142": // cassandra
|
||||
return dataURL(mediaTypeSVG, cassandraLogo), nil
|
||||
case "9092": // kafka
|
||||
return dataURL(mediaTypeSVG, kafkaLogo), nil
|
||||
case "9200", "9300": // elasticsearch
|
||||
return dataURL(mediaTypeSVG, elasticsearchLogo), nil
|
||||
case "9306", "9312": // sphinx
|
||||
return dataURL(mediaTypePNG, sphinxLogo), nil
|
||||
case "11211": // memcached
|
||||
return dataURL(mediaTypeSVG, memcachedLogo), nil
|
||||
case "26257": // cockroachdb
|
||||
return dataURL(mediaTypeSVG, cockroachdbLogo), nil
|
||||
case "27017": // mongodb
|
||||
return dataURL(mediaTypeSVG, mongodbLogo), nil
|
||||
case "61616": // activemq
|
||||
return dataURL(mediaTypeSVG, activemqLogo), nil
|
||||
}
|
||||
|
||||
return "", ErrLogoNotFound
|
||||
}
|
1
proxy/portal/logos/activemq.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64" viewBox="0 0 18.062 18.062"><g transform="matrix(1.750568 0 0 1.750568 -73.527298 -246.88563)"><use xlink:href="#A" fill="#c12766"/><use xlink:href="#A" x="-3.042" y="1.746" fill="#3e489f"/><use xlink:href="#A" x="-.018" y="3.5" fill="#714099"/><use xlink:href="#A" x="-3.025" y="-1.73" fill="#78932c"/><use xlink:href="#A" x="-.002" y="-3.48" fill="#cf242a"/><g fill="#fff"><circle r=".292" cy="142.702" cx="47.824"/><circle r=".292" cy="144.449" cx="44.8"/><circle r=".292" cy="147.927" cx="44.784"/><circle r=".292" cy="149.68" cx="47.806"/></g><path d="M47.64 142.783l-2.648 1.517m-.204.377l.01 3.052m.2.325l2.624 1.56" fill="none" stroke="#fff" stroke-width=".097"/><circle r=".292" cy="146.181" cx="47.825" fill="#fff"/><path d="M47.815 142.907l.01 3.052m.005.446l.01 3.052m-.196-3.157l-2.648 1.517m.012-3.23l2.624 1.56" fill="none" stroke="#fff" stroke-width=".097"/></g><defs><path id="A" d="M48.782 147.85l-1.925-.006-.957-1.67.967-1.664 1.925.006.957 1.67z"/></defs></svg>
|
After Width: | Height: | Size: 1.1 KiB |
1
proxy/portal/logos/aerospike.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 81 81" fill="#fff" fill-rule="evenodd" stroke="#000" stroke-linecap="round" stroke-linejoin="round"><use xlink:href="#A" x=".5" y=".5"/><symbol id="A" overflow="visible"><g stroke="none" fill-rule="nonzero"><path d="M0 0h80v80H0V0z" fill="#b0252a"/><path d="M48.842 29.877L25.977 40.063l22.865 10.253V29.877h0zM20.082 42.37l-5.328-2.281 5.328-2.463 45.165-20.43v5.439l-11.854 5.257v24.412l11.854 5.312v5.189L20.082 42.37h0z"/></g></symbol></svg>
|
After Width: | Height: | Size: 542 B |
1
proxy/portal/logos/cassandra.svg
Normal file
After Width: | Height: | Size: 10 KiB |
1
proxy/portal/logos/clickhouse.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg height="2500" viewBox="27 24.5 100.1 100.1" width="2417" xmlns="http://www.w3.org/2000/svg"><path d="m27 25.7c0-.6.5-1.2 1.2-1.2h8.8c.6 0 1.2.5 1.2 1.2v97.7c0 .6-.5 1.2-1.2 1.2h-8.8c-.6 0-1.2-.5-1.2-1.2zm22.2 0c0-.6.5-1.2 1.2-1.2h8.8c.6 0 1.2.5 1.2 1.2v97.7c0 .6-.5 1.2-1.2 1.2h-8.8c-.6 0-1.2-.5-1.2-1.2zm22.2 0c0-.6.5-1.2 1.2-1.2h8.8c.6 0 1.2.5 1.2 1.2v97.7c0 .6-.5 1.2-1.2 1.2h-8.8c-.6 0-1.2-.5-1.2-1.2zm22.2 0c0-.6.5-1.2 1.2-1.2h8.8c.6 0 1.2.5 1.2 1.2v97.7c0 .6-.5 1.2-1.2 1.2h-8.8c-.6 0-1.2-.5-1.2-1.2zm22.3 38.9c0-.6.5-1.2 1.2-1.2h8.8c.6 0 1.2.5 1.2 1.2v19.9c0 .6-.5 1.2-1.2 1.2h-8.8c-.6 0-1.2-.5-1.2-1.2z" fill="#161616"/></svg>
|
After Width: | Height: | Size: 640 B |
1
proxy/portal/logos/cloudera.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 81 17" fill="#fff" fill-rule="evenodd" stroke="#000" stroke-linecap="round" stroke-linejoin="round"><use xlink:href="#A" x=".5" y=".5"/><symbol id="A" overflow="visible"><path d="M69.017 3.524c-.787 0-1.552.104-2.295.311-.35.098-.679.223-.988.374-.06-.093-.13-.18-.215-.262-.291-.282-.641-.422-1.049-.422h-1.574v11.925h3.06V9.257c0-1.204.204-1.673.613-2.09s1.035-.621 1.881-.621h1.32V3.524h-.752zM13.15 0h-1.575v13.981c0 .415.146.762.438 1.045s.641.423 1.049.423h1.574V1.467A1.4 1.4 0 0 0 14.2.422 1.46 1.46 0 0 0 13.15 0zm8.013 13.027c1.82 0 2.395-1.94 2.395-3.582s-.576-3.607-2.395-3.607-2.373 1.965-2.373 3.607.552 3.582 2.373 3.582zm.003-9.793c3.452 0 5.365 2.314 5.365 6.172 0 3.843-1.914 6.15-5.365 6.15-3.52 0-5.347-2.307-5.347-6.15 0-3.858 1.827-6.172 5.347-6.172zM5.343 13.027c-1.82 0-2.373-1.94-2.373-3.582s.553-3.607 2.373-3.607c.945 0 1.553.533 1.92 1.272h3.18c-.639-2.461-2.397-3.876-5.097-3.876C1.826 3.235 0 5.548 0 9.407c0 3.843 1.826 6.15 5.346 6.15 2.699 0 4.455-1.414 5.093-3.866H8.354s-.561.015-.877.319c-.55.528-.998 1.019-2.134 1.019zm32.078-9.072c-.277-.297-.634-.444-1.072-.444h-1.53v7.472c0 .711-.211 1.23-.634 1.556a2.28 2.28 0 0 1-1.426.489 2.28 2.28 0 0 1-1.425-.489c-.423-.326-.635-.845-.635-1.556V5.022c0-.415-.138-.77-.415-1.066s-.633-.444-1.071-.444h-1.53v6.934c0 2.104.582 3.407 1.618 4.134s2.177.977 3.459.977 2.428-.252 3.46-.977 1.618-2.03 1.618-4.134V5.022c0-.415-.138-.77-.415-1.066zM49.503.422A1.46 1.46 0 0 0 48.453 0h-1.535v4.421c-.465-.437-1.446-1.186-2.931-1.186-3.125 0-4.931 2.313-4.931 6.172 0 3.843 1.855 6.15 5.432 6.15 3.492 0 5.435-2.288 5.45-6.101h.001V1.467a1.4 1.4 0 0 0-.437-1.045zm-5.018 12.606c-1.849 0-2.411-1.941-2.411-3.582s.562-3.607 2.411-3.607c1.837 0 2.426 1.941 2.434 3.577v.039c-.002 1.639-.588 3.573-2.434 3.573zm17.283-4.315a1.54 1.54 0 0 1-.158.697c-.066.132-.151.255-.258.37a1.35 1.35 0 0 1-1.027.444h-6.217c.079 1.42.791 2.805 2.329 2.805 1.135 0 1.582-.492 2.134-1.019.316-.303.876-.319.876-.319h2.086c-.639 2.453-2.394 3.866-5.094 3.866-3.519 0-5.346-2.306-5.346-6.149 0-3.859 1.827-6.172 5.346-6.172 2.7 0 4.459 1.415 5.097 3.876.115.44.189.915.23 1.42l.002.181zm-5.331-2.873c-1.268 0-2.108.953-2.199 2.086h4.414c-.007-1.133-.979-2.086-2.214-2.086zM80 6.538c0-1.057-.423-1.879-1.268-2.466-.816-.557-2.041-.837-3.673-.837-1.458 0-2.58.338-3.367 1.013-.699.587-1.125 1.388-1.241 2.299h2.93c.146-.37.395-.595.717-.713a3.16 3.16 0 0 1 1.093-.177c.509 0 .869.066 1.245.199.444.156.678.418.678.858 0 .472-.64.912-1.923 1.082-1.542.203-2.76.372-3.868 1.2-.712.531-1.161 1.506-1.161 2.738 0 1.321.404 2.253 1.18 2.841.692.524 1.816.972 3.637.972 1.632 0 2.856-.362 3.672-.92.845-.587 1.321-1.264 1.349-2.501V6.538zm-3.287 5.798c-.467.461-1.108.692-1.924.692-.254 0-1.057-.058-1.391-.384-.244-.237-.393-.48-.393-.912 0-.317.111-.618.305-.827.431-.464.904-.529 1.923-.756.675-.151 1.503-.403 1.929-.646v.898c0 .807.018 1.476-.448 1.936h0z" stroke="none" fill="#004e6f" fill-rule="nonzero"/></symbol></svg>
|
After Width: | Height: | Size: 3 KiB |
1
proxy/portal/logos/cockroachdb.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-12.06 13.62 64 64" width="64" height="64"><defs><filter height="71.5" width="56.2" y="41.4" x="555.7" filterUnits="userSpaceOnUse" ><feColorMatrix values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0"/></filter></defs><path d="M26.95 31.978c-2.308.563-4.673.788-7.037.788-2.42 0-4.785-.28-7.037-.788 1.858-2.984 4.28-5.63 7.037-7.825 2.76 2.196 5.18 4.84 7.037 7.825zM48.173 14.75c-2.927-.788-5.9-1.182-8.895-1.126-6.868 0-13.624 2.027-19.366 5.855C14.17 15.652 7.47 13.57.546 13.625c-3.096 0-6.08.394-8.895 1.126-1.182.28-2.364.676-3.5 1.126-.056.056-.113.113-.056.17.507 1.07 1.07 2.14 1.633 3.153.056.056.113.056.17.056a31.33 31.33 0 0 1 10.64-1.858 30.99 30.99 0 0 1 16.157 4.504c-2.984 2.533-5.573 5.573-7.544 8.95-1.07 1.745-1.914 3.603-2.646 5.517C5.04 40.253 4.31 44.42 4.31 48.53c0 9.908 4.166 18.86 10.8 25.22a20.29 20.29 0 0 0 1.633 1.464c.45.394.9.732 1.35 1.07.563.45 1.182.9 1.8 1.295.056.056.113.056.17 0 .62-.394 1.182-.844 1.8-1.295.45-.338.9-.676 1.35-1.07a20.1 20.1 0 0 0 1.633-1.464c6.643-6.36 10.753-15.313 10.753-25.22 0-4.954-1.07-9.852-3.096-14.356l-.676-1.407c-.338-.676-.732-1.35-1.126-1.97-2.027-3.378-4.56-6.418-7.544-8.95 4.898-2.927 10.47-4.504 16.157-4.504 3.603 0 7.262.62 10.64 1.858.056 0 .113 0 .17-.056.62-1.013 1.126-2.083 1.633-3.096.056-.056 0-.17-.056-.17-1.182-.45-2.364-.844-3.547-1.126z" fill="#151f34"/><path d="M31.734 48.585c0 8.276-3.2 15.82-8.5 21.393-.957-3.04-1.407-6.193-1.407-9.345 0-8.276 3.2-15.82 8.5-21.393a31.83 31.83 0 0 1 1.407 9.345" fill="#348540"/><path d="M18.054 60.576a31.83 31.83 0 0 1-1.407 9.345c-5.46-5.8-8.5-13.455-8.5-21.393 0-3.265.507-6.418 1.464-9.345a31.43 31.43 0 0 1 8.444 21.393" fill="#7dbc42"/></svg>
|
After Width: | Height: | Size: 1.7 KiB |
1
proxy/portal/logos/consul.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="64.74 19 64 64" width="64" height="64"><path d="M95.84 57.577c-3.656.004-6.625-2.95-6.635-6.602s2.942-6.623 6.6-6.64 6.634 2.93 6.656 6.58a6.56 6.56 0 0 1-1.92 4.7 6.62 6.62 0 0 1-4.7 1.95" fill="#961d59"/><path d="M108.738 53.977c-1.687 0-3.056-1.367-3.056-3.053s1.368-3.053 3.056-3.053 3.056 1.367 3.056 3.053a3.04 3.04 0 0 1-.893 2.161 3.05 3.05 0 0 1-2.163.892m11.183 2.878a2.93 2.93 0 0 1-3.61 1.939 2.93 2.93 0 0 1-2.016-3.565 2.93 2.93 0 0 1 3.524-2.09c1.548.376 2.5 1.923 2.165 3.477 0 .08 0 .15-.063.238m-2.16-7.865c-1.206.3-2.475-.155-3.2-1.155s-.795-2.345-.15-3.405 1.87-1.625 3.1-1.43a3.06 3.06 0 0 1 2.5 2.322 3.17 3.17 0 0 1 0 1.197c-.167 1.23-1.087 2.222-2.302 2.482m10.937 7.524c-.292 1.66-1.876 2.77-3.538 2.478s-2.772-1.873-2.482-3.533 1.873-2.772 3.535-2.482a3.07 3.07 0 0 1 2.58 3.259.8.8 0 0 0-.063.27m-2.524-7.658a3.05 3.05 0 0 1-3.505-2.506c-.275-1.66.846-3.225 2.507-3.5a3.05 3.05 0 0 1 3.507 2.502 3.31 3.31 0 0 1 0 .793 3.03 3.03 0 0 1-2.508 2.712m-2.127 18.236a3.1 3.1 0 0 1-3.913 1.342c-1.457-.618-2.213-2.233-1.754-3.746a3.1 3.1 0 0 1 6.048 1.162c-.024.444-.155.872-.38 1.253m-1.103-28.052c-1.475.83-3.342.308-4.172-1.166a3.06 3.06 0 0 1 1.167-4.167c1.473-.83 3.342-.3 4.172 1.163.315.534.45 1.154.38 1.768a3.06 3.06 0 0 1-1.54 2.379M95.96 81.688c-11.093.178-21.42-5.632-27.02-15.2a30.66 30.66 0 0 1 0-30.978c5.6-9.568 15.927-15.377 27.02-15.2a30.45 30.45 0 0 1 18.652 6.343l-3.754 4.892c-7.413-5.67-17.405-6.644-25.776-2.515S71.4 41.678 71.4 51.004s5.304 17.844 13.673 21.98a24.59 24.59 0 0 0 25.783-2.49l3.746 4.9a30.47 30.47 0 0 1-18.652 6.295z" fill="#d62783"/></svg>
|
After Width: | Height: | Size: 1.6 KiB |
1
proxy/portal/logos/couchbase.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" height="64" viewBox="0.6 0.1 14.733 14.737" width="64"><path d="M7.967.1A7.37 7.37 0 0 0 .598 7.468a7.37 7.37 0 0 0 7.368 7.368 7.37 7.37 0 0 0 7.368-7.368A7.37 7.37 0 0 0 7.967.1zm4.975 8.66c0 .445-.256.835-.757.924-.868.156-2.694.245-4.218.245s-3.35-.1-4.218-.245a.89.89 0 0 1-.757-.924V5.888c0-.445.345-.857.757-.924.256-.045.857-.1 1.325-.1.178 0 .323.134.323.345v2.015l2.582-.056 2.582.056V5.22c0-.2.145-.345.323-.345.467 0 1.07.045 1.325.1.423.067.757.48.757.924l-.022 2.872z" fill="#ed2226"/></svg>
|
After Width: | Height: | Size: 546 B |
1
proxy/portal/logos/couchdb.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 81 54" fill="#fff" fill-rule="evenodd" stroke="#000" stroke-linecap="round" stroke-linejoin="round"><use xlink:href="#A" x=".5" y=".5"/><symbol id="A" overflow="visible"><path d="M65 35c0 3.316-1.746 4.94-5 4.998V40H20v-.002c-3.254-.058-5-1.682-5-4.998s1.746-4.94 5-4.997V30h40v.003c3.254.057 5 1.682 5 4.997m-5 7.503V42.5H20v.003c-3.254.057-5 1.682-5 4.998s1.746 4.939 5 4.997v.002h40v-.003c3.254-.057 5-1.681 5-4.997s-1.746-4.94-5-4.997m12.5-27.497v-.003c-3.254.058-5 1.682-5 4.998v27.5c0 3.315 1.746 4.939 5 4.997v-.005C77.38 52.32 80 47.446 80 37.5V25c0-6.63-2.62-9.879-7.5-9.995m-65-.003v.003C2.62 15.121 0 18.37 0 25v12.5c0 9.946 2.62 14.819 7.5 14.992v.005c3.254-.057 5-1.681 5-4.997V20c0-3.315-1.746-4.94-5-4.998m65-2.502C72.5 4.212 68.134.15 60 .007V0H20v.007C11.867.15 7.5 4.212 7.5 12.5v.004C12.38 12.59 15 15.027 15 20s2.62 7.41 7.5 7.496v.004h35v-.004C62.38 27.41 65 24.973 65 20s2.62-7.41 7.5-7.496V12.5z" stroke="none" fill="#e42528" fill-rule="nonzero"/></symbol></svg>
|
After Width: | Height: | Size: 1.1 KiB |
1
proxy/portal/logos/cratedb.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 81 62" fill="#fff" fill-rule="evenodd" stroke="#000" stroke-linecap="round" stroke-linejoin="round"><use xlink:href="#A" x=".5" y=".5"/><symbol id="A" overflow="visible"><path d="M60.253 0v19.933H80v20.103H40.169v20.217H20.084V40.169H0V20.084h40.169V0h20.084" stroke="none" fill="#54d2f4" fill-rule="nonzero"/></symbol></svg>
|
After Width: | Height: | Size: 422 B |
1
proxy/portal/logos/elasticsearch.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg width="2500" height="2500" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet"><path d="M255.96 134.393c0-21.521-13.373-40.117-33.223-47.43a75.239 75.239 0 0 0 1.253-13.791c0-39.909-32.386-72.295-72.295-72.295-23.193 0-44.923 11.074-58.505 30.088-6.686-5.224-14.835-7.94-23.402-7.94-21.104 0-38.446 17.133-38.446 38.446 0 4.597.836 9.194 2.298 13.373C13.582 81.739 0 100.962 0 122.274c0 21.522 13.373 40.327 33.431 47.64-.835 4.388-1.253 8.985-1.253 13.79 0 39.7 32.386 72.087 72.086 72.087 23.402 0 44.924-11.283 58.505-30.088 6.686 5.223 15.044 8.149 23.611 8.149 21.104 0 38.446-17.134 38.446-38.446 0-4.597-.836-9.194-2.298-13.373 19.64-7.104 33.431-26.327 33.431-47.64z" fill="#FFF"/><path d="M100.085 110.364l57.043 26.119 57.669-50.565a64.312 64.312 0 0 0 1.253-12.746c0-35.52-28.834-64.355-64.355-64.355-21.313 0-41.162 10.447-53.072 27.998l-9.612 49.73 11.074 23.82z" fill="#F4BD19"/><path d="M40.953 170.75c-.835 4.179-1.253 8.567-1.253 12.955 0 35.52 29.043 64.564 64.564 64.564 21.522 0 41.372-10.656 53.49-28.208l9.403-49.729-12.746-24.238-57.251-26.118-56.207 50.774z" fill="#3CBEB1"/><path d="M40.536 71.918l39.073 9.194 8.775-44.506c-5.432-4.179-11.91-6.268-18.805-6.268-16.925 0-30.924 13.79-30.924 30.924 0 3.552.627 7.313 1.88 10.656z" fill="#E9478C"/><path d="M37.192 81.32c-17.551 5.642-29.67 22.567-29.67 40.954 0 17.97 11.074 34.059 27.79 40.327l54.953-49.73-10.03-21.52-43.043-10.03z" fill="#2C458F"/><path d="M167.784 219.852c5.432 4.18 11.91 6.478 18.596 6.478 16.925 0 30.924-13.79 30.924-30.924 0-3.761-.627-7.314-1.88-10.657l-39.073-9.193-8.567 44.296z" fill="#95C63D"/><path d="M175.724 165.317l43.043 10.03c17.551-5.85 29.67-22.566 29.67-40.954 0-17.97-11.074-33.849-27.79-40.326l-56.415 49.311 11.492 21.94z" fill="#176655"/></svg>
|
After Width: | Height: | Size: 1.8 KiB |
8
proxy/portal/logos/etcd.svg
Normal file
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg width="800px" height="800px" viewBox="0 -4 256 256" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid">
|
||||
<g>
|
||||
<path d="M252.386416,128.063547 C251.184178,128.164306 249.976215,128.21125 248.692682,128.21125 C241.246821,128.21125 234.023088,126.465143 227.505812,123.267189 C229.675566,110.820018 230.598427,98.2801018 230.356834,85.7859855 C223.291109,75.5658167 215.215504,65.9227222 206.100249,57.0387552 C210.05504,49.6238086 215.901352,43.2439318 223.19951,38.7200816 L226.333344,36.7827608 L223.891083,34.029063 C211.309948,19.8621183 196.294566,8.90915678 179.270875,1.47703537 L175.875983,0 L175.013807,3.58839447 C172.983742,11.9513917 168.740414,19.4957219 162.914712,25.550422 C151.717868,19.5987709 140.020663,14.7886736 127.958208,11.1453196 C115.924377,14.7806586 104.247783,19.5770161 93.0555185,25.5195073 C87.253861,19.4728222 83.0208379,11.9468117 80.9987879,3.60785927 L80.1308865,0.0206097959 L76.74859,1.49077524 C59.9390115,8.81526771 44.5102892,20.0647813 32.1352518,34.0210481 L29.686121,36.7804708 L32.81652,38.7177916 C40.091778,43.224467 45.9220603,49.5665592 49.8699812,56.9414311 C40.7822062,65.7910485 32.715761,75.4032283 25.6557609,85.5764526 C25.3809637,98.0648439 26.25688,110.696359 28.4369384,123.315279 C21.9517226,126.483463 14.7680638,128.210105 7.37143701,128.210105 C6.07301986,128.210105 4.85818689,128.163161 3.67770358,128.064692 L0,127.78417 L0.344641587,131.456148 C2.14685374,150.033589 7.91530662,167.703054 17.4988617,183.979068 L19.3697732,187.155267 L22.1784304,184.7714 C28.6876909,179.250265 36.552618,175.594316 44.9156152,174.120716 C50.4287356,185.393129 56.9631859,195.984274 64.3758425,205.817437 C76.2035754,209.954281 88.5270884,213.042315 101.253637,214.880022 C102.474195,223.296834 101.5021,232.002183 98.1816328,240.051453 L96.7813116,243.462374 L100.382301,244.254706 C109.602895,246.282481 118.904783,247.315261 128.013167,247.315261 L155.636019,244.254706 L159.240443,243.462374 L157.836687,240.044583 C154.52538,231.995313 153.553284,223.279659 154.773842,214.861702 C167.450012,213.022851 179.727725,209.941686 191.511949,205.817437 C198.931475,195.976259 205.47165,185.378244 210.993931,174.090946 C219.383263,175.555387 227.292844,179.213625 233.842179,184.750791 L236.650837,187.131222 L238.512588,183.963038 C248.113318,167.666415 253.880626,149.998095 255.655358,131.450423 L256,127.785315 L252.386416,128.063547 L252.386416,128.063547 Z M167.490086,172.959697 C154.422331,176.513742 141.150767,178.307939 127.958208,178.307939 C114.730154,178.307939 101.47462,176.514887 88.3954147,172.959697 C81.2197707,161.809798 75.5463519,149.865276 71.4633223,137.289866 C67.3974676,124.772849 65.0181812,111.659294 64.327753,98.156443 C72.7743344,87.7130014 82.3796442,78.564542 92.9925442,70.8633483 C103.777192,63.019031 115.509891,56.6460241 127.958208,51.8519565 C140.385915,56.6471691 152.096859,63.011016 162.856317,70.8221287 C173.510437,78.564542 183.158111,87.7839907 191.645912,98.2926967 C190.922279,111.718834 188.514368,124.75682 184.441644,137.253226 C180.368919,149.826346 174.67718,161.808653 167.490086,172.959697 L167.490086,172.959697 Z M138.750871,109.962421 C138.750871,119.194465 146.232227,126.662081 155.451676,126.662081 C164.668834,126.662081 172.142175,119.19561 172.142175,109.962421 C172.142175,100.765872 164.668834,93.2696314 155.451676,93.2696314 C146.232227,93.2696314 138.750871,100.765872 138.750871,109.962421 L138.750871,109.962421 Z M117.172415,109.962421 C117.172415,119.194465 109.692204,126.662081 100.472755,126.662081 C91.2464364,126.662081 83.7868353,119.19561 83.7868353,109.962421 C83.7868353,100.769307 91.2475814,93.2730664 100.472755,93.2730664 C109.692204,93.2730664 117.172415,100.769307 117.172415,109.962421 L117.172415,109.962421 Z" fill="#419EDA">
|
||||
</path>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.9 KiB |
29
proxy/portal/logos/ftp.svg
Normal file
|
@ -0,0 +1,29 @@
|
|||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg fill="#000000" version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
width="800px" height="800px" viewBox="0 0 98.385 98.385"
|
||||
xml:space="preserve">
|
||||
<g>
|
||||
<g>
|
||||
<path d="M61.838,54.803c-0.793,0-1.33,0.053-1.611,0.129v5.085c0.332,0.075,0.742,0.103,1.304,0.103
|
||||
c2.069,0,3.349-1.047,3.349-2.785C64.879,55.75,63.805,54.803,61.838,54.803z"/>
|
||||
<path d="M53.155,31.677c-2.188-2.187-5.734-2.187-7.922,0L20.356,56.555c-2.188,2.188-2.188,5.734,0,7.923l24.876,24.875
|
||||
c2.188,2.188,5.734,2.188,7.922,0l24.877-24.877c1.051-1.05,1.641-2.476,1.641-3.961s-0.59-2.91-1.641-3.962L53.155,31.677z
|
||||
M40.153,55.161h-6.618v3.937h6.184v3.168h-6.184v6.925h-3.884V51.967h10.502V55.161z M55.026,55.238h-4.703v13.951H46.44V55.238
|
||||
h-4.65v-3.271h13.236V55.238z M67.178,61.293c-1.33,1.229-3.322,1.815-5.621,1.815c-0.512,0-0.971-0.024-1.33-0.103v6.184h-3.857
|
||||
V52.198c1.201-0.205,2.889-0.358,5.264-0.358c2.401,0,4.139,0.461,5.289,1.405c1.1,0.845,1.814,2.274,1.814,3.962
|
||||
C68.736,58.918,68.2,60.349,67.178,61.293z"/>
|
||||
<path d="M78.445,22.433c-0.545-0.039-1.046-0.318-1.366-0.762c-3.998-5.545-10.51-8.976-17.444-8.976
|
||||
c-0.502,0-1.004,0.018-1.506,0.053c-0.451,0.032-0.896-0.103-1.255-0.378c-4.198-3.229-9.314-4.979-14.675-4.979
|
||||
c-9.579,0-18.069,5.614-21.936,14.088c-0.266,0.583-0.816,0.985-1.452,1.065C8.221,23.867,0,32.926,0,43.869
|
||||
c0,9.697,6.46,17.908,15.301,20.574c-0.534-1.225-0.82-2.553-0.82-3.928c0-1.766,0.472-3.455,1.338-4.94
|
||||
c-4.343-2.114-7.351-6.559-7.351-11.706c0-7.182,5.843-13.024,13.025-13.024c0.363,0,0.719,0.029,1.074,0.059
|
||||
c2.069,0.159,3.943-1.183,4.447-3.19c1.752-6.979,7.996-11.854,15.184-11.854c4.107,0,7.994,1.586,10.944,4.466
|
||||
c1.009,0.984,2.439,1.401,3.82,1.114c0.879-0.182,1.777-0.275,2.672-0.275c5.027,0,9.519,2.826,11.719,7.377
|
||||
c0.772,1.6,2.464,2.553,4.232,2.371c0.44-0.045,0.879-0.066,1.307-0.066c7.183,0,13.025,5.843,13.025,13.024
|
||||
c0,5.147-3.008,9.591-7.351,11.706c0.866,1.484,1.338,3.173,1.338,4.938c0,1.376-0.287,2.705-0.821,3.931
|
||||
c8.842-2.666,15.301-10.877,15.301-20.575C98.387,32.542,89.575,23.229,78.445,22.433z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.3 KiB |
1
proxy/portal/logos/hadoop.svg
Normal file
After Width: | Height: | Size: 14 KiB |
1
proxy/portal/logos/hbase.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 81 64" fill="#fff" fill-rule="evenodd" stroke="#000" stroke-linecap="round" stroke-linejoin="round"><use xlink:href="#A" x=".5" y=".5"/><symbol id="A" overflow="visible"><path d="M45.877 37.539l-6.17.013v.082c-1.944 0-3.888.006-5.832-.002-2.065-.008-3.669.914-4.918 2.485-1.802 2.266-3.217 4.884-5.958 6.277-.303.154-.547.754-.514 1.12.02.224.597.474.962.58a20.47 20.47 0 0 0 9.868.414c4.691-.945 8.92-2.797 11.967-6.668.698-.887 1.179-1.982 1.594-3.046.293-.751-.03-1.273-.997-1.254zM7.314 31.628L5.79 29.527c-.401-.568-.779-.697-1.358-.162C2 31.617 1.129 37.318 2.768 40.171l4.546-8.543zm65.32 1.217c-1.179-.232-1.293-.72-1.805-1.355-2.675-3.316-4.663-6.39-8.172-9.823-5.649-5.891-12.669-8.937-20.862-9.39-4.445-.246-8.828.131-13.194.796-2.1.319-3.477-.499-4.492-2.184-.383-.636-.792-1.31-.95-2.02-.584-2.62-1.092-5.258-1.576-7.899-.175-.955-.447-1.177-1.334-.786a5.02 5.02 0 0 0-2.865 3.278c-.376 1.278-.712 2.634-.692 3.95.047 3.027.277 6.053.522 9.072.136 1.68-.102 3.137-1.265 4.476-1.322 1.523-2.461 3.205-3.688 4.812C7.823 31.575 4.13 37.792 1.735 44.727.517 48.251-.418 51.819.191 55.612c.207 1.288.312 2.593.465 3.889.184 1.56 2.323 3.434 3.894 3.408 1.803-.03 3.365-.78 4.728-1.845 2.407-1.88 5.065-3.296 7.786-4.639 3.24-1.6 6.215-3.597 8.727-6.228.185-.194.332-.424.522-.669-1.282-.309-2.46-.537-3.602-.884-1.245-.378-1.492-1.31-.653-2.322.281-.339.682-.576 1.013-.876.963-.873 1.987-1.693 2.856-2.652.825-.911 1.455-1.995 2.221-2.962 1.375-1.737 3.163-2.716 5.407-2.76 1.347-.026 2.697-.048 4.044-.017 1.065.024 1.917-.318 2.755-1.005 2.052-1.681 3.801-3.365 5.999-4.843 3.485-1.948 6.099-2.783 9.45-2.446 6.018.605 10.509 3.79 14.147 8.402.134.17.248.407.223.65s-.376.127-.376.127l-4.293-4.488c-.753 1.048-1.146 1.766-1.768 2.528-.849 1.04-1.892 1.943-2.62 3.056-1.183 1.807-.679 4.502.92 5.55.136-.209.361-.406.393-.63.123-.866.194-1.519 1.221-1.586.466-.03.133-.574 1.018-.621.276.021.255.255.531.234.223-.032.322-.416.563-.52.478-.207 1.113-.182 1.583-.162.872.036 1.288-.422 1.402-.981.075-.368.109-.658.29-1.305.417 1.667 1.503 2.17 2.849 2.158.637-.006 1.291-.138 1.905-.028 1.495.095 1.76.431 2.602.751 1.299.493 2.479 1.088 2.928 2.625.133-.042.393-.074.531-.34s.135-.626.146-1.078c.123-5.11-2.457-8.731-7.362-10.257zm-52.773 7.982c1.181-.019 1.359.252.863 1.281-.111.229-.222.481-.242.729-.157 1.994-1.137 3.42-2.867 4.407-.874.499-1.64 1.189-2.52 1.676-.483.267-1.234.553-1.617.354-.207-.107-.323-.388-.42-.707-.185-.614-.233-1.271-.087-1.896.731-3.135 3.718-5.792 6.89-5.843h0zm-7.115 10.669c.012-.266 1.24-1.323 1.551-1.273s.293.27.294.589-1.229 1.421-1.821 1.053c-.138-.118-.059-.318-.024-.37h0zm11.623-1.066c-1.561 1.444-3.303 2.601-4.997 3.668-1.323.834-2.767 1.477-4.111 2.281-2.047 1.225-4.056 2.512-6.077 3.779-1.506.945-2.97 1.993-4.908 1.944.03-.161.026-.275.058-.286 2.038-.715 3.542-2.067 4.933-3.704.84-.988 2.099-1.672 3.264-2.322 2.438-1.361 4.413-3.157 5.918-5.518 1.074-1.684 1.116-1.617 2.896-.839.916.4 1.701.543 3.023.997h0zm28.69-23.894c2.337-.048 3.407.223 5.063.611 1.312.318 2.23 1.196 2.766 1.906-2.09-.639-3.147-.983-5.216-1.168-4.446-.531-8.349.857-11.772 3.654-1.448 1.183-2.883 2.398-4.187 3.731-.771.788-.787.994-2.64.877 1.639-2.537 3.134-5.106 4.598-7.651 4.735-8.232 16.636-6.822 20.725-2.048.167.195.42.712.42.712s-3.87-2.07-6.716-2.07c-1.714 0-2.144.127-3.204.309-.28.048-.747.29-.743.7s.59.394.907.439h0zm24.96 14.971c-1.243-1.924-3.12-1.508-4.878-1.515-.524-.002-1.048.028-1.572.047-.885.032-1.631-.175-2.017-1.085-.099-.234-.348-.596-.555-.633a.44.44 0 0 0-.305.263c-.798 1.697-2.346 1.965-3.952 1.999-.929.02-1.691.148-2.148 1.071-.088.179-.541.385-.619.322-.198-.159-.441-.52-.379-.702.237-.691.489-1.417.916-1.996 1.083-1.47 2.265-2.869 3.507-4.421l1.888 1.986c.522.533 1.009 1.13 1.621 1.532.323.212 1.021.245 1.288.031.231-.184.259-.922.08-1.255-.366-.682-.943-1.247-1.41-1.877-.348-.471-.658-.969-1.072-1.585 4.185-.747 10.4 4.334 9.606 7.819h0z" stroke="none" fill="#000" fill-rule="nonzero"/></symbol></svg>
|
After Width: | Height: | Size: 4 KiB |
1
proxy/portal/logos/ibmmq.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><defs><linearGradient id="m8ldm9sv5a" x1="1567.5" y1="4147.997" x2="1567.5" y2="4133.997" gradientTransform="translate(-1564 -4125.995)" gradientUnits="userSpaceOnUse"><stop offset=".2"></stop><stop offset=".95" stop-opacity="0"></stop></linearGradient><linearGradient id="4wi3l9hesb" x1="-109.091" y1="1678.695" x2="-109.091" y2="1667.695" gradientTransform="matrix(1.898 0 0 1.4 229.866 -2319.016)" xlink:href="#m8ldm9sv5a"></linearGradient><linearGradient id="qlf0vvr9ac" x1="2702.282" y1="1029.564" x2="2702.282" y2="1022.564" gradientTransform="matrix(.875 0 0 1.471 -2352.401 -1488.757)" gradientUnits="userSpaceOnUse"><stop offset=".3"></stop><stop offset="1" stop-opacity="0"></stop></linearGradient><linearGradient id="3rha502e4d" x1="-54.063" y1="3514.585" x2="-54.063" y2="3484.509" gradientTransform="matrix(1.994 0 0 .399 122.807 -1387.263)" gradientUnits="userSpaceOnUse"><stop offset=".28"></stop><stop offset=".95" stop-opacity="0"></stop></linearGradient><linearGradient id="tyljju2ejf" y1="32" x2="32" gradientUnits="userSpaceOnUse"><stop offset=".1" stop-color="#08bdba"></stop><stop offset=".9" stop-color="#0f62fe"></stop></linearGradient><mask id="e9zu2nboke" x="0" y="0" width="32" height="32" maskUnits="userSpaceOnUse"><path d="M16 30v-2a12 12 0 1 0-3.107-23.6l-.518-1.932A14 14 0 1 1 16 30z" fill="#fff"></path><path d="M16 25a9.009 9.009 0 0 1-8.682-11.382l1.93.527A7.007 7.007 0 0 0 16 23z" fill="#fff"></path><path d="M9 28.125A14 14 0 0 1 3.878 9l1.732 1A12.011 12.011 0 0 0 10 26.392z" fill="#fff"></path><path transform="rotate(180 3.5 15.002)" fill="url(#m8ldm9sv5a)" d="M1 8.003h5v14H1z"></path><path transform="rotate(60 22.77 23.884)" fill="url(#4wi3l9hesb)" d="M18.024 16.182h9.492v15.403h-9.492z"></path><path transform="rotate(-60 12.689 20.176)" fill="url(#qlf0vvr9ac)" d="M8.531 15.03h8.315v10.294H8.531z"></path><path d="m22.364 22.367-1.414-1.414a7 7 0 1 0-9.9-9.9L9.636 9.638a9 9 0 0 1 12.728 12.729z" fill="#fff"></path><path transform="rotate(90 15 9.003)" fill="url(#3rha502e4d)" d="M12 3.003h6v12h-6z"></path><path d="M14 27.003h4v4h-4z"></path></mask></defs><g data-name="Layer 2"><g data-name="Light theme icons"><g mask="url(#e9zu2nboke)"><path fill="url(#tyljju2ejf)" d="M0 0h32v32H0z"></path></g><path d="M20 16a4 4 0 0 0-4-4 3.956 3.956 0 0 0-2.019.566L8.927 7.515A2.027 2.027 0 0 0 9 7a2 2 0 1 0-2 2 2.048 2.048 0 0 0 .512-.072l5.055 5.053A3.944 3.944 0 0 0 12 16a4 4 0 0 0 3 3.858v7.412a2 2 0 1 0 2 0v-7.412A4 4 0 0 0 20 16zm-6 0a2 2 0 1 1 2 2 2 2 0 0 1-2-2z" fill="#001d6c"></path></g></g></svg>
|
After Width: | Height: | Size: 2.6 KiB |
1
proxy/portal/logos/influxdb.svg
Normal file
After Width: | Height: | Size: 11 KiB |
1
proxy/portal/logos/kafka.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg width="154" height="250" viewBox="0 0 256 416" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid"><path d="M201.816 230.216c-16.186 0-30.697 7.171-40.634 18.461l-25.463-18.026c2.703-7.442 4.255-15.433 4.255-23.797 0-8.219-1.498-16.076-4.112-23.408l25.406-17.835c9.936 11.233 24.409 18.365 40.548 18.365 29.875 0 54.184-24.305 54.184-54.184 0-29.879-24.309-54.184-54.184-54.184-29.875 0-54.184 24.305-54.184 54.184 0 5.348.808 10.505 2.258 15.389l-25.423 17.844c-10.62-13.175-25.911-22.374-43.333-25.182v-30.64c24.544-5.155 43.037-26.962 43.037-53.019C124.171 24.305 99.862 0 69.987 0 40.112 0 15.803 24.305 15.803 54.184c0 25.708 18.014 47.246 42.067 52.769v31.038C25.044 143.753 0 172.401 0 206.854c0 34.621 25.292 63.374 58.355 68.94v32.774c-24.299 5.341-42.552 27.011-42.552 52.894 0 29.879 24.309 54.184 54.184 54.184 29.875 0 54.184-24.305 54.184-54.184 0-25.883-18.253-47.553-42.552-52.894v-32.775a69.965 69.965 0 0 0 42.6-24.776l25.633 18.143c-1.423 4.84-2.22 9.946-2.22 15.24 0 29.879 24.309 54.184 54.184 54.184 29.875 0 54.184-24.305 54.184-54.184 0-29.879-24.309-54.184-54.184-54.184zm0-126.695c14.487 0 26.27 11.788 26.27 26.271s-11.783 26.27-26.27 26.27-26.27-11.787-26.27-26.27c0-14.483 11.783-26.271 26.27-26.271zm-158.1-49.337c0-14.483 11.784-26.27 26.271-26.27s26.27 11.787 26.27 26.27c0 14.483-11.783 26.27-26.27 26.27s-26.271-11.787-26.271-26.27zm52.541 307.278c0 14.483-11.783 26.27-26.27 26.27s-26.271-11.787-26.271-26.27c0-14.483 11.784-26.27 26.271-26.27s26.27 11.787 26.27 26.27zm-26.272-117.97c-20.205 0-36.642-16.434-36.642-36.638 0-20.205 16.437-36.642 36.642-36.642 20.204 0 36.641 16.437 36.641 36.642 0 20.204-16.437 36.638-36.641 36.638zm131.831 67.179c-14.487 0-26.27-11.788-26.27-26.271s11.783-26.27 26.27-26.27 26.27 11.787 26.27 26.27c0 14.483-11.783 26.271-26.27 26.271z" style="fill:#231f20"/></svg>
|
After Width: | Height: | Size: 1.8 KiB |
BIN
proxy/portal/logos/machbase.png
Normal file
After Width: | Height: | Size: 21 KiB |
1
proxy/portal/logos/mariadb.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64" viewBox="0 0 45.025 44.217"><defs><clipPath id="A"><use xlink:href="#B"/></clipPath><path id="B" d="M0 0h191.356v57.344H0z"/></defs><path clip-path="url(#A)" d="M75.198 5.328c-1.872.047-2.977.863-3.34 2.42.48.418 1.126.6 1.77.572 1.415-.06 2.817-1.138 2.42-2.965-.298-.025-.582-.035-.85-.027M84.84 0h-.167c-1.335.043-1.542.767-4.425 1.477-2.912.717-5.725.028-8.86 1.344C62.025 6.748 60.03 20.293 51.52 25.1c-6.36 3.593-12.512 5.188-18.28 6.995-3.792 1.188-7.552 2.556-10.988 5.516-2.667 2.3-3.4 4.085-6.177 6.97-2.835 2.933-11.553-2.258-15.8 1.54a.84.84 0 0 0 .014 1.253c.92.805 2.67 2.722 4.336 3.314-.528 1-3.513 3.946-2.904 5.42.64 1.55 8.04.497 14.88-3.633 3.185-1.924 5.723-4.696 10.685-5.357 6.42-.855 13.817.55 21.25 1.62-1.103 3.286-3.315 5.473-5.088 8.1-.55.592 1.103.658 2.986.3 3.4-.838 5.832-1.513 8.4-3 3.143-1.83 3.62-6.52 7.474-7.534 1.864 2.865 6.5 3.83 10.074 2.3.198-.084.392-.177.582-.275.43-.375.178-.813-.086-1.135a6.21 6.21 0 0 1-.362-.364c-2.012-2.162-2.472-7.266-1.58-9.748 1.017-2.824 2.022-7.343 3.046-11.075 1.1-4 1.506-9.063 2.837-11.106 2.002-3.072 4.215-4.127 6.136-5.86s3.68-3.42 3.62-7.384C86.547.734 85.946.03 84.84 0m.204 4.163C84.647 6.897 82.9 8.4 80.836 9.85c-1.8 1.27-3.794 2.493-5.07 4.477-1.305 2.03-2.134 8.985-4.16 15.852-1.68 5.698-4.184 11.335-8.467 14.05-.278.176-.645.015-.704-.3-.3-1.592-.24-4.5-.734-3.56-.62 1.77-1.322 3.458-2.143 5.027-2.52 4.816-6.166 8.505-12.057 9.95a.53.53 0 0 1-.552-.82c2.718-3.77 5.15-7.825 5.447-14.014.025-.534-.646-.778-.983-.364-1.284 1.583-1.6 5.347-3.477 6.506-1.474.16-2.967.16-4.47.07-6.17-.37-12.502-2.226-18.274-.373-3.93 1.262-8.057 4.85-11.386 6.293C9.894 54.33 8.04 55.93 3.1 55.82c-.505-.68 2.062-3.623 2.934-4.893.278-.407-.317-.835-.874-1.1-1.338-.614-2.68-2.28-4.107-2.93.183-.337.83-.674 1.187-.88 3.24-1.88 11.832 2.124 14.14-.143 1.425-1.398 2.385-2.626 3.353-4.05.94-1.38 2.368-2.838 3.847-4.047a31.3 31.3 0 0 1 1.94-1.435c2.52-1.724 3.907-1.852 7.17-3.064 4.152-1.544 9.293-2.898 13.747-4.6 2.752-1.053 5.744-2.35 8.183-4.17.58-.432 1.127-.893 1.634-1.386 6.964-6.8 8.345-18.766 19.2-19.882 1.314-.135 2.248-.192 3.228-.223 1.096-.03 2.18-.3 3.263-.818.334-.146 2.324-1.35 2.996-.768.448.388.115 2.492.086 2.72" transform="matrix(.52012 0 0 .52012 0 7.19564)" fill="#444b5e"/></svg>
|
After Width: | Height: | Size: 2.3 KiB |
23
proxy/portal/logos/meilisearch.svg
Normal file
|
@ -0,0 +1,23 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="256px" height="150px" viewBox="0 0 256 150" version="1.1" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid">
|
||||
<title>Meilisearch</title>
|
||||
<defs>
|
||||
<linearGradient x1="153.820608%" y1="-7.63826138%" x2="19.1721041%" y2="89.2387581%" id="meilisearchLinearGradient-1">
|
||||
<stop stop-color="#FF5CAA" offset="0%"></stop>
|
||||
<stop stop-color="#FF4E62" offset="100%"></stop>
|
||||
</linearGradient>
|
||||
<linearGradient x1="117.3253%" y1="-7.63849731%" x2="-17.3229972%" y2="89.2384892%" id="meilisearchLinearGradient-2">
|
||||
<stop stop-color="#FF5CAA" offset="0%"></stop>
|
||||
<stop stop-color="#FF4E62" offset="100%"></stop>
|
||||
</linearGradient>
|
||||
<linearGradient x1="80.8280376%" y1="-7.63849731%" x2="-53.8207274%" y2="89.2384892%" id="meilisearchLinearGradient-3">
|
||||
<stop stop-color="#FF5CAA" offset="0%"></stop>
|
||||
<stop stop-color="#FF4E62" offset="100%"></stop>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g>
|
||||
<path d="M0,149.288164 L47.2969003,28.2765777 C53.9619323,11.2236595 70.3991566,0 88.708206,0 L117.222863,0 L69.9260625,121.01158 C63.2610305,138.064539 46.8238061,149.288164 28.5145533,149.288164 L0,149.288164 Z" fill="url(#meilisearchLinearGradient-1)"></path>
|
||||
<path d="M69.3864299,149.288571 L116.68323,28.2769847 C123.348262,11.2240054 139.785487,0.000356092382 158.09474,0.000356092382 L186.609193,0.000356092382 L139.312393,121.011987 C132.647361,138.064946 116.210136,149.288571 97.9008835,149.288571 L69.3864299,149.288571 Z" fill="url(#meilisearchLinearGradient-2)"></path>
|
||||
<path d="M138.77683,149.288571 L186.07363,28.2769847 C192.738662,11.2240054 209.174869,0.000356092382 227.484122,0.000356092382 L256,0.000356092382 L208.702792,121.011987 C202.036743,138.064946 185.600536,149.288571 167.291283,149.288571 L138.77683,149.288571 Z" fill="url(#meilisearchLinearGradient-3)"></path>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.9 KiB |
1
proxy/portal/logos/memcached.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64"><defs><linearGradient id="A" x1="255.894" x2="255.894" y1="59.789" gradientUnits="userSpaceOnUse" y2="-452"><stop stop-color="#574c4a" offset="0%"/><stop stop-color="#80716d" offset="100%"/></linearGradient><linearGradient id="B" x1="380.442" x2="191.971" y1="-51.758" y2="-382.305" gradientUnits="userSpaceOnUse"><stop stop-color="#268d83" offset="0%"/><stop stop-color="#2ea19e" offset="100%"/></linearGradient><radialGradient id="C" cx="62.417" cy="142.923" r="9.213" fx="62.417" fy="142.923" gradientUnits="userSpaceOnUse" gradientTransform="matrix(2.02,0,0,2.02,92.53,-356.82)"><stop stop-color="#db7c7c" offset="0%"/><stop stop-color="#c83737" offset="100%"/></radialGradient><radialGradient id="D" cx="96.726" cy="142.923" r="9.213" fx="96.726" fy="142.923" gradientUnits="userSpaceOnUse" gradientTransform="matrix(2.02,0,0,2.02,92.53,-356.82)"><stop stop-color="#db7c7c" offset="0%"/><stop stop-color="#c83737" offset="100%"/></radialGradient></defs><g transform="matrix(.125052 0 0 .125052 .000001 56.523492)"><path d="M0-106.196v-179.82C0-431.255 20.725-452 165.814-452h180.164c145.084 0 165.8 20.745 165.8 165.983v179.82c0 145.238-20.725 165.983-165.812 165.983H165.812C20.73 59.787 0 39.042 0-106.196z" fill="url(#A)"/><path d="M110.488-355.497C85.34-196.062 98.497-46.8 98.497-46.8h78.63c-7.48-39.802-34.32-221.642-11.993-222.24 11.966 1.9 66.64 154.267 66.64 154.267s12.04-1.5 24.155-1.5 24.16 1.5 24.16 1.5 54.68-152.37 66.64-154.267c22.34.598-4.505 182.438-11.98 222.24h78.633s13.162-149.272-12-308.706h-72.8c-13.857.162-66.58 92.63-72.64 92.63s-58.784-92.457-72.64-92.62z" fill="url(#B)"/><path d="M240.422-65.4c0 10.278-8.333 18.6-18.612 18.6s-18.6-8.333-18.6-18.6 8.333-18.612 18.6-18.612 18.612 8.332 18.612 18.612z" fill="url(#C)"/><path d="M308.66-65.4c0 10.278-8.332 18.6-18.6 18.6s-18.6-8.333-18.6-18.6 8.322-18.612 18.604-18.612 18.604 8.332 18.604 18.612z" fill="url(#D)"/><path d="M397.664-350.226c11.348 76.812 14 150.532 13.802 205.444-.214 56.168-3.432 92.66-3.432 92.66h-66.2l-7.113 5.33h78.64s13.16-149.27-11.992-308.705zm-208.373-1.94c20.66 22.98 56.4 83.966 61.3 83.966-13.1-16.75-45.27-70.192-61.3-83.965zm-29.48 77.802c-22.33.6 4.514 182.44 11.996 222.242H103.16l-4.66 5.33h78.634c-7.444-39.598-34.05-219.824-12.33-222.24-2.02-3.04-3.77-5.137-4.996-5.332zm181.6 0c-11.964 1.9-66.64 154.27-66.64 154.27s-12.04-1.5-24.154-1.5c-7.17 0-13.34.442-17.514.83l-1.3 6s12.04-1.498 24.154-1.498 24.158 1.5 24.158 1.5 54.26-151.372 66.476-154.27c-1.315-3.334-2.94-5.272-5.164-5.332z" opacity=".1"/><path d="M110.5-355.497C85.334-196.063 98.495-46.8 98.495-46.8l4.63-5.205c-2.37-35.218-8.7-162.572 12.696-298.17h72.8c1.54.017 3.6 1.28 6 3.33-4.767-5.302-8.73-8.63-11.33-8.662zm218.077 0c-13.857.164-66.58 92.628-72.637 92.628 2.47 3.16 4.477 5.34 5.33 5.34 6.06 0 58.78-92.464 72.638-92.63h64.248l3.224-5.33zm-158.435 91.795c17.685 26.56 61.642 148.94 61.642 148.94l1.286-5.97c-10.853-29.757-52.205-141.32-62.595-142.97-.113.003-.222-.012-.333 0zm181.925 0c11.862 30.254-10.592 181.1-17.326 216.9l7.14-5.567c9.108-53.42 31.03-210.78 10.195-211.34z" opacity=".3" fill="#fff"/></g></svg>
|
After Width: | Height: | Size: 3.1 KiB |
1
proxy/portal/logos/mongodb.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 32 32"><path d="M15.9.087l.854 1.604c.192.296.4.558.645.802.715.715 1.394 1.464 2.004 2.266 1.447 1.9 2.423 4.01 3.12 6.292.418 1.394.645 2.824.662 4.27.07 4.323-1.412 8.035-4.4 11.12-.488.488-1.01.94-1.57 1.342-.296 0-.436-.227-.558-.436-.227-.383-.366-.82-.436-1.255-.105-.523-.174-1.046-.14-1.586v-.244C16.057 24.21 15.796.21 15.9.087z" fill="#599636"/><path d="M15.9.034c-.035-.07-.07-.017-.105.017.017.35-.105.662-.296.96-.21.296-.488.523-.767.767-1.55 1.342-2.77 2.963-3.747 4.776-1.3 2.44-1.97 5.055-2.16 7.808-.087.993.314 4.497.627 5.508.854 2.684 2.388 4.933 4.375 6.885.488.47 1.01.906 1.55 1.325.157 0 .174-.14.21-.244a4.78 4.78 0 0 0 .157-.68l.35-2.614L15.9.034z" fill="#6cac48"/><path d="M16.754 28.845c.035-.4.227-.732.436-1.063-.21-.087-.366-.26-.488-.453-.105-.174-.192-.383-.26-.575-.244-.732-.296-1.5-.366-2.248v-.453c-.087.07-.105.662-.105.75a17.37 17.37 0 0 1-.314 2.353c-.052.314-.087.627-.28.906 0 .035 0 .07.017.122.314.924.4 1.865.453 2.824v.35c0 .418-.017.33.33.47.14.052.296.07.436.174.105 0 .122-.087.122-.157l-.052-.575v-1.604c-.017-.28.035-.558.07-.82z" fill="#c2bfbf"/></svg>
|
After Width: | Height: | Size: 1.2 KiB |
21
proxy/portal/logos/mqtt.svg
Normal file
|
@ -0,0 +1,21 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 24.3.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.2" baseProfile="tiny" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||
y="0px" viewBox="0 0 320 320" overflow="visible" xml:space="preserve">
|
||||
<g id="black_bg" display="none">
|
||||
</g>
|
||||
<g id="logos">
|
||||
<g>
|
||||
<path fill="#FFFFFF" d="M7.1,133.9v46.7c73.8,0.1,134,59.3,135,132.4h45.5C186.5,214.6,106.1,134.8,7.1,133.9z"/>
|
||||
<path fill="#FFFFFF" d="M7.1,37.3v46.7c127.4,0.1,231.1,102.5,232.1,228.9h45.5C283.7,161.4,159.7,38.3,7.1,37.3z"/>
|
||||
<path fill="#FFFFFF" d="M312.9,193.5V97.6c-11.8-16.1-25.9-33.4-40.4-47.8c-16-15.9-34.1-30.1-52.3-42.7H119
|
||||
C207.3,38.9,278.1,107.2,312.9,193.5z"/>
|
||||
<path fill="#660066" d="M7.1,180.6v117.1c0,8.4,6.8,15.3,15.3,15.3H142C141,239.8,80.9,180.7,7.1,180.6z"/>
|
||||
<path fill="#660066" d="M7.1,84.1v49.8c99,0.9,179.4,80.7,180.4,179.1h51.7C238.2,186.6,134.5,84.2,7.1,84.1z"/>
|
||||
<path fill="#660066" d="M312.9,297.6V193.5C278.1,107.2,207.3,38.9,119,7.1H22.4c-8.4,0-15.3,6.8-15.3,15.3v15
|
||||
c152.6,0.9,276.6,124,277.6,275.6h13C306.1,312.9,312.9,306.1,312.9,297.6z"/>
|
||||
<path fill="#660066" d="M272.6,49.8c14.5,14.4,28.6,31.7,40.4,47.8V22.4c0-8.4-6.8-15.3-15.3-15.3h-77.3
|
||||
C238.4,19.7,256.6,33.9,272.6,49.8z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
1
proxy/portal/logos/neo4j.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 72 81" fill="#fff" fill-rule="evenodd" stroke="#000" stroke-linecap="round" stroke-linejoin="round"><use xlink:href="#A" x=".5" y=".5"/><symbol id="A" overflow="visible"><g stroke="none" fill-rule="nonzero"><path d="M67.287 36.308c0 18.582-15.061 33.644-33.644 33.644S0 54.89 0 36.308 15.061 2.664 33.644 2.664c18.582-.016 33.644 15.061 33.644 33.644" fill="#008cc1"/><path d="M14.915 25.272c0 1.484-1.206 2.69-2.689 2.69s-2.69-1.206-2.69-2.69a2.69 2.69 0 0 1 2.69-2.689 2.68 2.68 0 0 1 2.689 2.689m.456 7.384c0 1.483-1.206 2.69-2.689 2.69s-2.69-1.206-2.69-2.69a2.69 2.69 0 0 1 2.69-2.689 2.68 2.68 0 0 1 2.689 2.689m1.646 7.825c0 1.483-1.206 2.689-2.689 2.689s-2.69-1.206-2.69-2.689 1.206-2.69 2.69-2.69c1.483-.016 2.689 1.19 2.689 2.69m3.684 7.009c0 1.483-1.206 2.69-2.69 2.69a2.69 2.69 0 0 1-2.689-2.69 2.69 2.69 0 0 1 2.689-2.689c1.483-.016 2.69 1.19 2.69 2.689"/><use xlink:href="#C"/><use xlink:href="#C" x="4.89" y="-5.787"/><path d="M40.213 10.586c0 1.483-1.206 2.689-2.69 2.689s-2.689-1.206-2.689-2.689 1.206-2.689 2.689-2.689 2.69 1.206 2.69 2.689"/><use xlink:href="#C" x="-16.366" y="-49.178"/><path d="M52.209 10.358c9.902 0 17.93 8.028 17.93 17.93s-8.028 17.93-17.93 17.93-17.93-8.028-17.93-17.93 8.028-17.93 17.93-17.93" fill="#66b245"/><path d="M52.21 46.699c-10.152 0-18.411-8.259-18.411-18.41s8.259-18.41 18.411-18.41 18.41 8.259 18.41 18.41-8.259 18.41-18.41 18.41h0zm0-35.86c-9.622 0-17.45 7.828-17.45 17.45s7.828 17.45 17.45 17.45 17.45-7.828 17.45-17.45-7.828-17.45-17.45-17.45h0z"/><path d="M27.645 50.18c8.102 0 14.67 6.568 14.67 14.67s-6.568 14.67-14.67 14.67-14.67-6.568-14.67-14.67 6.568-14.67 14.67-14.67" fill="#66b245"/><path d="M27.645 80c-8.354 0-15.15-6.797-15.15-15.15s6.796-15.15 15.15-15.15 15.15 6.796 15.15 15.15S36 80 27.645 80h0zm0-29.34a14.21 14.21 0 0 0-14.19 14.19 14.21 14.21 0 0 0 14.19 14.19 14.21 14.21 0 0 0 14.19-14.19 14.21 14.21 0 0 0-14.19-14.19h0z"/><path d="M15.567.48c5.401 0 9.78 4.379 9.78 9.78s-4.379 9.78-9.78 9.78-9.78-4.379-9.78-9.78S10.166.48 15.567.48" fill="#66b245"/><path d="M15.566 20.521c-5.658 0-10.26-4.603-10.26-10.26S9.909 0 15.566 0s10.26 4.603 10.26 10.26-4.603 10.26-10.26 10.26h0zm0-19.56c-5.128 0-9.3 4.172-9.3 9.3s4.172 9.3 9.3 9.3 9.3-4.172 9.3-9.3-4.172-9.3-9.3-9.3h0z"/></g></symbol><defs ><path id="C" d="M49.504 57.287c0 1.483-1.206 2.689-2.69 2.689s-2.689-1.206-2.689-2.689 1.206-2.69 2.689-2.69 2.69 1.206 2.69 2.69"/></defs></svg>
|
After Width: | Height: | Size: 2.5 KiB |
35
proxy/portal/logos/nfs.svg
Normal file
|
@ -0,0 +1,35 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
width="128" height="128" version="1.1">
|
||||
<title>Folder NFS Icon</title>
|
||||
<desc>This is shape (source) for Clarity vector icon theme for gtk</desc>
|
||||
<metadata>
|
||||
<rdf:RDF>
|
||||
<cc:Work rdf:about="">
|
||||
<dc:title>Folder NFS Icon</dc:title>
|
||||
<dc:description>This is shape (source) for Clarity vector icon theme for gtk</dc:description>
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>Jakub Jankiewicz</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<dc:rights>
|
||||
<cc:Agent>
|
||||
<dc:title>Jakub Jankiewicz</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:rights>
|
||||
<dc:date>2010</dc:date>
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<cc:license rdf:resource="http://creativecommons.org/licenses/by-sa/3.0/" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<path d="M 15.15625 16.84375 C 11.062788 16.84375 7.75 20.156538 7.75 24.25 L 7.75 37.375 L 7.75 48.59375 L 7.75 89.125 C 7.75 93.218456 11.062788 96.5 15.15625 96.5 L 58.15625 96.5 L 58.15625 101.15625 L 52.21875 101.15625 C 50.78024 101.15625 49.625 102.31149 49.625 103.75 L 49.625 108.5625 C 49.625 110.00101 50.78024 111.15625 52.21875 111.15625 L 75.78125 111.15625 C 77.21976 111.15625 78.375 110.00101 78.375 108.5625 L 78.375 103.75 C 78.375 102.31149 77.21976 101.15625 75.78125 101.15625 L 69.84375 101.15625 L 69.84375 96.5 L 112.84375 96.5 C 116.93721 96.5 120.25 93.218456 120.25 89.125 L 120.25 37.375 C 120.25 33.281538 116.93713 30.02515 112.84375 30 L 53.40625 30 L 53.40625 24.25 C 53.40625 20.156538 50.124712 16.84375 46.03125 16.84375 L 15.15625 16.84375 z M 74.90625 53.125 C 76.20042 53.12502 77.279989 53.331779 78.1875 53.75 C 79.102884 54.168259 79.70801 54.704571 80 55.34375 C 80.299859 55.975073 80.468738 57.03949 80.46875 58.5625 L 80.46875 59.3125 L 75.84375 59.3125 L 75.84375 57.90625 C 75.843743 57.243394 75.774613 56.806516 75.65625 56.625 C 75.537873 56.443516 75.33869 56.375016 75.0625 56.375 C 74.762624 56.375016 74.532821 56.505385 74.375 56.75 C 74.225059 56.994647 74.156245 57.346612 74.15625 57.84375 C 74.156245 58.482962 74.232635 58.957719 74.40625 59.28125 C 74.571962 59.604807 75.039144 60.011066 75.8125 60.46875 C 78.029953 61.786612 79.423923 62.874388 80 63.71875 C 80.576055 64.56313 80.874988 65.903121 80.875 67.78125 C 80.874988 69.146453 80.698533 70.165414 80.375 70.8125 C 80.059336 71.45959 79.446633 71.995586 78.53125 72.4375 C 77.615847 72.871523 76.559007 73.09375 75.34375 73.09375 C 74.010111 73.09375 72.884455 72.848795 71.9375 72.34375 C 70.99843 71.838706 70.385728 71.187493 70.09375 70.40625 C 69.80177 69.625012 69.624999 68.529975 69.625 67.09375 L 69.625 65.8125 L 74.28125 65.8125 L 74.28125 68.15625 C 74.281245 68.874364 74.342483 69.326079 74.46875 69.53125 C 74.602897 69.736427 74.824808 69.843753 75.15625 69.84375 C 75.487679 69.843753 75.717167 69.729167 75.875 69.46875 C 76.040711 69.20834 76.124993 68.82544 76.125 68.3125 C 76.124993 67.184046 75.995255 66.440975 75.6875 66.09375 C 75.371841 65.746539 74.582682 65.156564 73.34375 64.34375 C 72.104809 63.523061 71.277455 62.933402 70.875 62.5625 C 70.472541 62.191618 70.143304 61.686241 69.875 61.03125 C 69.614586 60.376282 69.499999 59.517994 69.5 58.5 C 69.499999 57.032229 69.660357 55.959921 70.03125 55.28125 C 70.410032 54.602614 71.038517 54.097552 71.875 53.71875 C 72.711477 53.332094 73.722546 53.12502 74.90625 53.125 z M 47.125 53.53125 L 51.28125 53.53125 L 54.09375 62.15625 L 54.09375 53.53125 L 58.25 53.53125 L 58.25 72.6875 L 53.875 72.6875 L 51.28125 63.96875 L 51.28125 72.6875 L 47.125 72.6875 L 47.125 53.53125 z M 60.25 53.53125 L 68.6875 53.53125 L 68.6875 57.375 L 65.21875 57.375 L 65.21875 61 L 68.3125 61 L 68.3125 64.65625 L 65.21875 64.65625 L 65.21875 72.6875 L 60.25 72.6875 L 60.25 53.53125 z M 7.75 102.90625 L 7.75 109.40625 L 47.34375 109.40625 C 47.34265 109.36265 47.34375 109.32515 47.34375 109.28125 L 47.34375 103.84375 C 47.34375 103.52401 47.3816 103.20934 47.4375 102.90625 L 7.75 102.90625 z M 80.5625 102.90625 C 80.6184 103.20934 80.65625 103.52401 80.65625 103.84375 L 80.65625 109.28125 C 80.65625 109.32515 80.65735 109.36265 80.65625 109.40625 L 120.25 109.40625 L 120.25 102.90625 L 80.5625 102.90625 z "/>
|
||||
</svg>
|
After Width: | Height: | Size: 4.8 KiB |
9
proxy/portal/logos/opentext.svg
Normal file
|
@ -0,0 +1,9 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="680px" height="536px" viewBox="0 0 680 536" fill="none" aria-hidden="true">
|
||||
<path d="M554.266 195.006C554.266 188.91 559.279 183.83 565.448 183.83H624.131C627.93 183.83 631.442 181.967 633.517 178.744L678.159 109.919C683.031 102.471 677.661 92.6614 668.772 92.6614H566.38C560.218 92.6614 555.206 87.6448 555.206 81.486V11.3156C555.206 5.15681 550.186 0 544.024 0H437.188C431.026 0 426.007 5.00967 426.007 11.1754V206.49C388.397 134.217 312.84 84.8281 225.702 84.8281C101.053 84.8281 0 185.827 0 310.411C0 434.994 101.053 536 225.702 536C312.973 536 388.628 486.457 426.182 414.009C426.834 445.805 429.96 470.86 444.57 492.433C472.372 532.966 521.381 535.475 566.093 535.475C586.871 535.475 602.42 533.541 624.846 530.171C630.363 529.316 634.45 524.586 634.45 519.065V439.072C634.45 432.766 629.22 427.686 622.841 427.896L588.021 429.185C553.411 429.185 554.273 406.526 554.273 379.411L554.266 195.006ZM225.695 411.676C169.739 411.676 124.383 366.337 124.383 310.411C124.383 254.484 169.746 209.145 225.695 209.145C281.644 209.145 327.008 254.484 327.008 310.411C327.008 366.337 281.644 411.676 225.695 411.676Z" fill="url(#paint0_linear_16_6366799d3abf59c)"/>
|
||||
<defs><linearGradient class="cerosgradient" data-cerosgradient="true" id="CerosGradient_id14c0f50a1" gradientUnits="userSpaceOnUse" x1="50%" y1="100%" x2="50%" y2="0%"><stop offset="0%" stop-color="#d1d1d1"/><stop offset="100%" stop-color="#d1d1d1"/></linearGradient>
|
||||
<linearGradient id="paint0_linear_16_6366799d3abf59c" x1="364.5" y1="145.5" x2="700.5" y2="509.5" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#00008B"/>
|
||||
<stop offset="1" stop-color="#1A6AFF"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
After Width: | Height: | Size: 1.7 KiB |
1
proxy/portal/logos/oracle.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64"><path d="M0 0h64v64H0z" fill="#e30613"/><path d="M20.2 52.2C8.93 52.2 0 43.056 0 32c0-11.27 9.143-20.2 20.2-20.2h23.6C55.07 11.8 64 20.944 64 32c0 11.27-9.143 20.2-20.2 20.2zm23.176-7.23c7.23 0 13.183-5.953 13.183-13.183s-5.953-13.183-13.183-13.183H20.837c-7.23 0-13.183 5.953-13.183 13.183S13.608 44.97 20.837 44.97z" fill="#fff"/></svg>
|
After Width: | Height: | Size: 402 B |
1
proxy/portal/logos/postgres.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" height="64" viewBox="0 0 25.6 25.6" width="64"><style><![CDATA[.B{stroke-linecap:round}.C{stroke-linejoin:round}.D{stroke-linejoin:miter}.E{stroke-width:.716}]]></style><g fill="none" stroke="#fff"><path d="M18.983 18.636c.163-1.357.114-1.555 1.124-1.336l.257.023c.777.035 1.793-.125 2.4-.402 1.285-.596 2.047-1.592.78-1.33-2.89.596-3.1-.383-3.1-.383 3.053-4.53 4.33-10.28 3.227-11.687-3.004-3.84-8.205-2.024-8.292-1.976l-.028.005c-.57-.12-1.2-.19-1.93-.2-1.308-.02-2.3.343-3.054.914 0 0-9.277-3.822-8.846 4.807.092 1.836 2.63 13.9 5.66 10.25C8.29 15.987 9.36 14.86 9.36 14.86c.53.353 1.167.533 1.834.468l.052-.044a2.01 2.01 0 0 0 .021.518c-.78.872-.55 1.025-2.11 1.346-1.578.325-.65.904-.046 1.056.734.184 2.432.444 3.58-1.162l-.046.183c.306.245.285 1.76.33 2.842s.116 2.093.337 2.688.48 2.13 2.53 1.7c1.713-.367 3.023-.896 3.143-5.81" fill="#000" stroke="#000" stroke-linecap="butt" stroke-width="2.149" class="D"/><path d="M23.535 15.6c-2.89.596-3.1-.383-3.1-.383 3.053-4.53 4.33-10.28 3.228-11.687-3.004-3.84-8.205-2.023-8.292-1.976l-.028.005a10.31 10.31 0 0 0-1.929-.201c-1.308-.02-2.3.343-3.054.914 0 0-9.278-3.822-8.846 4.807.092 1.836 2.63 13.9 5.66 10.25C8.29 15.987 9.36 14.86 9.36 14.86c.53.353 1.167.533 1.834.468l.052-.044a2.02 2.02 0 0 0 .021.518c-.78.872-.55 1.025-2.11 1.346-1.578.325-.65.904-.046 1.056.734.184 2.432.444 3.58-1.162l-.046.183c.306.245.52 1.593.484 2.815s-.06 2.06.18 2.716.48 2.13 2.53 1.7c1.713-.367 2.6-1.32 2.725-2.906.088-1.128.286-.962.3-1.97l.16-.478c.183-1.53.03-2.023 1.085-1.793l.257.023c.777.035 1.794-.125 2.39-.402 1.285-.596 2.047-1.592.78-1.33z" fill="#336791" stroke="none"/><g class="E"><g class="B"><path d="M12.814 16.467c-.08 2.846.02 5.712.298 6.4s.875 2.05 2.926 1.612c1.713-.367 2.337-1.078 2.607-2.647l.633-5.017M10.356 2.2S1.072-1.596 1.504 7.033c.092 1.836 2.63 13.9 5.66 10.25C8.27 15.95 9.27 14.907 9.27 14.907m6.1-13.4c-.32.1 5.164-2.005 8.282 1.978 1.1 1.407-.175 7.157-3.228 11.687" class="C"/><path d="M20.425 15.17s.2.98 3.1.382c1.267-.262.504.734-.78 1.33-1.054.49-3.418.615-3.457-.06-.1-1.745 1.244-1.215 1.147-1.652-.088-.394-.69-.78-1.086-1.744-.347-.84-4.76-7.29 1.224-6.333.22-.045-1.56-5.7-7.16-5.782S7.99 8.196 7.99 8.196" stroke-linejoin="bevel"/></g><g class="C"><path d="M11.247 15.768c-.78.872-.55 1.025-2.11 1.346-1.578.325-.65.904-.046 1.056.734.184 2.432.444 3.58-1.163.35-.49-.002-1.27-.482-1.468-.232-.096-.542-.216-.94.23z"/><path d="M11.196 15.753c-.08-.513.168-1.122.433-1.836.398-1.07 1.316-2.14.582-5.537-.547-2.53-4.22-.527-4.22-.184s.166 1.74-.06 3.365c-.297 2.122 1.35 3.916 3.246 3.733" class="B"/></g></g><g fill="#fff" class="D"><path d="M10.322 8.145c-.017.117.215.43.516.472s.558-.202.575-.32-.215-.246-.516-.288-.56.02-.575.136z" stroke-width=".239"/><path d="M19.486 7.906c.016.117-.215.43-.516.472s-.56-.202-.575-.32.215-.246.516-.288.56.02.575.136z" stroke-width=".119"/></g><path d="M20.562 7.095c.05.92-.198 1.545-.23 2.524-.046 1.422.678 3.05-.413 4.68" class="B C E"/></g></svg>
|
After Width: | Height: | Size: 3 KiB |
2
proxy/portal/logos/rabbitmq.svg
Normal file
|
@ -0,0 +1,2 @@
|
|||
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg width="800px" height="800px" viewBox="-7.5 0 271 271" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid"><path d="M245.44 108.308h-85.09a7.738 7.738 0 0 1-7.735-7.734v-88.68C152.615 5.327 147.29 0 140.726 0h-30.375c-6.568 0-11.89 5.327-11.89 11.894v88.143c0 4.573-3.697 8.29-8.27 8.31l-27.885.133c-4.612.025-8.359-3.717-8.35-8.325l.173-88.241C54.144 5.337 48.817 0 42.24 0H11.89C5.321 0 0 5.327 0 11.894V260.21c0 5.834 4.726 10.56 10.555 10.56H245.44c5.834 0 10.56-4.726 10.56-10.56V118.868c0-5.834-4.726-10.56-10.56-10.56zm-39.902 93.233c0 7.645-6.198 13.844-13.843 13.844H167.69c-7.646 0-13.844-6.199-13.844-13.844v-24.005c0-7.646 6.198-13.844 13.844-13.844h24.005c7.645 0 13.843 6.198 13.843 13.844v24.005z" fill="#F60"/></svg>
|
After Width: | Height: | Size: 870 B |
1
proxy/portal/logos/redis.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 81 70" fill="#fff" fill-rule="evenodd" stroke="#000" stroke-linecap="round" stroke-linejoin="round"><use xlink:href="#A" x=".5" y=".5"/><symbol id="A" overflow="visible"><g stroke="none" fill-rule="nonzero"><path d="M76.866 52.612c-4.269 2.225-26.385 11.319-31.094 13.773s-7.324 2.431-11.043.653S7.473 55.753 3.233 53.727C1.114 52.714 0 51.86 0 51.052v-8.086s30.64-6.671 35.587-8.445 6.663-1.839 10.872-.297S75.84 40.308 80 41.831l-.002 7.972c.001.799-.959 1.676-3.133 2.809" fill="#912626"/><path d="M76.864 44.574c-4.269 2.224-26.385 11.318-31.093 13.772s-7.324 2.431-11.043.653S7.473 47.714 3.234 45.689s-4.328-3.421-.164-5.052l32.517-12.589c4.946-1.774 6.662-1.839 10.872-.296s26.193 10.292 30.353 11.816 4.321 2.781.052 5.006" fill="#c6302b"/><path d="M76.866 39.528c-4.269 2.225-26.385 11.319-31.094 13.774s-7.324 2.43-11.043.652S7.473 42.669 3.233 40.643C1.114 39.63 0 38.776 0 37.969v-8.087s30.64-6.67 35.587-8.445 6.663-1.839 10.872-.297S75.84 27.223 80 28.747l-.002 7.973c.001.799-.959 1.676-3.133 2.809" fill="#912626"/><path d="M76.864 31.49c-4.269 2.225-26.385 11.318-31.093 13.773s-7.324 2.43-11.043.652S7.473 34.631 3.234 32.605s-4.328-3.421-.164-5.052l32.517-12.588c4.946-1.774 6.662-1.839 10.872-.297S72.652 24.96 76.812 26.484s4.321 2.781.052 5.006h0" fill="#c6302b"/><path d="M76.866 25.959c-4.269 2.225-26.385 11.319-31.094 13.774s-7.324 2.43-11.043.652S7.473 29.1 3.233 27.075C1.114 26.062 0 25.208 0 24.401v-8.087s30.64-6.67 35.587-8.444 6.663-1.839 10.872-.297S75.84 13.655 80 15.179l-.002 7.972c.001.798-.959 1.675-3.133 2.808" fill="#912626"/><path d="M76.864 17.921c-4.269 2.225-26.385 11.319-31.093 13.773s-7.324 2.43-11.043.653S7.473 21.062 3.234 19.036s-4.328-3.421-.164-5.052L35.588 1.396c4.946-1.775 6.662-1.838 10.872-.296s26.193 10.292 30.353 11.816 4.321 2.78.052 5.005" fill="#c6302b"/><path d="M49.776 10.054l-6.878.714-1.54 3.705-2.487-4.134-7.942-.714 5.926-2.137-1.778-3.281 5.548 2.17 5.231-1.713-1.414 3.392 5.333 1.997m-8.827 17.975l-12.837-5.324 18.394-2.823-5.558 8.147M23.15 12.113c5.43 0 9.831 1.706 9.831 3.811s-4.402 3.811-9.831 3.811-9.831-1.706-9.831-3.811 4.402-3.811 9.831-3.811"/><path d="M57.905 11.067l10.886 4.302-10.877 4.298-.009-8.6" fill="#621b1c"/><path d="M45.861 15.831l12.044-4.764.009 8.6-1.181.462-10.872-4.298" fill="#9a2928"/></g></symbol></svg>
|
After Width: | Height: | Size: 2.4 KiB |
1
proxy/portal/logos/riak.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 81 81" fill="#fff" fill-rule="evenodd" stroke="#000" stroke-linecap="round" stroke-linejoin="round"><use xlink:href="#A" x=".5" y=".5"/><symbol id="A" overflow="visible"><g stroke="none" fill-rule="nonzero"><path d="M42.952 68.621c-.006-.977-.164-13.531-4.147-24.333C34.657 33.041 27.627 23.62 27.627 23.62s14.552 8.858 21.23 16.239c5.755 6.36 10.779 16.374 12.058 19.023h0c-1.387 1.024-2.287 2.671-2.287 4.527 0 3.106 2.518 5.624 5.624 5.624s5.624-2.518 5.624-5.624c0-3.011-2.367-5.47-5.342-5.617-.889-2.271-4.651-11.138-12.233-19.691-8.787-9.912-21.02-16.52-21.02-16.52s13.216 4.218 19.895 7.17c5.928 2.621 15.734 8.067 17.862 9.257-.187.559-.288 1.158-.288 1.78 0 3.106 2.518 5.624 5.624 5.624S80 42.895 80 39.789s-2.518-5.624-5.624-5.624c-1.183 0-2.281.365-3.187.99h0c-2.162-1.423-11.011-6.996-24.37-12.097-15.466-5.905-26.854-7.944-26.854-7.944l-1.969 4.429s7.478 4.956 14.86 20.984c6.772 14.704 6.332 25.769 6.214 27.497-2.559.527-4.483 2.793-4.483 5.508 0 3.106 2.518 5.624 5.624 5.624s5.624-2.518 5.624-5.624c0-2.11-1.163-3.95-2.883-4.912z" fill="#3d4c67"/><path d="M19.965 15.888c0 2.951-2.392 5.343-5.343 5.343S9.28 18.839 9.28 15.888s2.392-5.343 5.342-5.343 5.343 2.392 5.343 5.343" fill="#f6861a"/><g fill="#3d4c67"><path d="M45.835 5.624c0 3.106-2.518 5.624-5.624 5.624s-5.624-2.518-5.624-5.624S37.105 0 40.211 0s5.624 2.518 5.624 5.624"/><use xlink:href="#C"/><use xlink:href="#C" x="-48.506" y="47.662"/><path d="M11.248 39.789c0 3.106-2.518 5.624-5.624 5.624S0 42.895 0 39.789s2.518-5.624 5.624-5.624 5.624 2.518 5.624 5.624"/></g></g></symbol><defs ><path id="C" d="M69.877 16.169c0 3.106-2.518 5.624-5.624 5.624s-5.624-2.518-5.624-5.624 2.518-5.624 5.624-5.624 5.624 2.518 5.624 5.624"/></defs></svg>
|
After Width: | Height: | Size: 1.8 KiB |
BIN
proxy/portal/logos/sphinx.png
Normal file
After Width: | Height: | Size: 27 KiB |
117
proxy/portal/logos/ssh.svg
Normal file
|
@ -0,0 +1,117 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="1024"
|
||||
height="1024"
|
||||
viewBox="0 0 270.93334 270.93335"
|
||||
version="1.1"
|
||||
id="svg5"
|
||||
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||
sodipodi:docname="unofficial_ssh_logo.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<title
|
||||
id="title31118">Unofficial SSH Logo</title>
|
||||
<sodipodi:namedview
|
||||
id="namedview7"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="true"
|
||||
inkscape:document-units="px"
|
||||
showgrid="false"
|
||||
inkscape:zoom="0.35455948"
|
||||
inkscape:cx="1817.7486"
|
||||
inkscape:cy="781.25115"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="974"
|
||||
inkscape:window-x="-11"
|
||||
inkscape:window-y="-11"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1"
|
||||
units="px"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
showguides="false" />
|
||||
<defs
|
||||
id="defs2">
|
||||
<rect
|
||||
x="215.7607"
|
||||
y="431.52139"
|
||||
width="1284.6927"
|
||||
height="1212.7725"
|
||||
id="rect4401-2" />
|
||||
</defs>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<rect
|
||||
style="fill:#323330;fill-opacity:1;stroke-width:0;paint-order:stroke fill markers"
|
||||
id="rect20116"
|
||||
width="270.93332"
|
||||
height="270.93332"
|
||||
x="0"
|
||||
y="0" />
|
||||
<g
|
||||
aria-label="SSH"
|
||||
transform="matrix(0.26459082,0,0,0.26490621,-13.684176,24.697131)"
|
||||
id="text4399"
|
||||
style="font-size:466.667px;line-height:1.25;white-space:pre;shape-inside:url(#rect4401-2);fill:#ffffff">
|
||||
<path
|
||||
d="m 229.29311,801.47903 c -1.86667,1.86667 -2.33334,5.60001 0,7.93334 29.86669,29.40002 71.86672,46.20004 114.33341,46.20004 70.93338,0 115.73342,-42.93337 115.73342,-96.13341 0,-47.13336 -28.46669,-72.33338 -65.33338,-88.20006 l -41.53337,-17.26668 c -26.13335,-10.73334 -44.80003,-18.20001 -44.80003,-37.33335 0,-18.20002 14.46668,-29.86669 42.00003,-29.86669 24.73335,0 43.40003,8.86667 62.53338,24.73335 2.8,2.33333 6.53334,1.4 8.40001,-0.93334 l 27.53335,-34.53335 c 1.86667,-1.86667 1.86667,-5.60001 -0.46667,-7.93334 -24.73335,-24.73335 -61.13338,-40.13336 -98.00007,-40.13336 -62.06671,0 -108.26674,39.20002 -108.26674,91.46673 0,48.0667 34.06669,73.26671 64.86671,86.33339 l 42.00003,18.20001 c 28.46669,12.13335 43.8667,18.66668 43.8667,39.6667 0,19.60001 -14.46668,33.60002 -47.60003,33.60002 -26.13336,0 -54.13338,-13.53334 -75.13339,-33.13336 -2.8,-2.33333 -6.53334,-1.86666 -8.40001,0.46667 z"
|
||||
style="font-family:'Falling Sky';-inkscape-font-specification:'Falling Sky'"
|
||||
id="path30940" />
|
||||
<path
|
||||
d="m 476.15874,801.47903 c -1.86667,1.86667 -2.33334,5.60001 0,7.93334 29.86669,29.40002 71.86672,46.20004 114.33341,46.20004 70.93339,0 115.73342,-42.93337 115.73342,-96.13341 0,-47.13336 -28.46669,-72.33338 -65.33338,-88.20006 l -41.53336,-17.26668 c -26.13336,-10.73334 -44.80004,-18.20001 -44.80004,-37.33335 0,-18.20002 14.46668,-29.86669 42.00003,-29.86669 24.73335,0 43.40003,8.86667 62.53338,24.73335 2.8,2.33333 6.53334,1.4 8.40001,-0.93334 l 27.53335,-34.53335 c 1.86667,-1.86667 1.86667,-5.60001 -0.46667,-7.93334 -24.73335,-24.73335 -61.13337,-40.13336 -98.00007,-40.13336 -62.06671,0 -108.26674,39.20002 -108.26674,91.46673 0,48.0667 34.06669,73.26671 64.86671,86.33339 l 42.00003,18.20001 c 28.46669,12.13335 43.8667,18.66668 43.8667,39.6667 0,19.60001 -14.46668,33.60002 -47.60003,33.60002 -26.13335,0 -54.13337,-13.53334 -75.13339,-33.13336 -2.8,-2.33333 -6.53334,-1.86666 -8.40001,0.46667 z"
|
||||
style="font-family:'Falling Sky';-inkscape-font-specification:'Falling Sky'"
|
||||
id="path30942" />
|
||||
<path
|
||||
d="m 749.62476,844.4124 c 0,2.33333 2.33333,5.6 6.06667,5.6 h 54.13337 c 2.33334,0 5.6,-1.86667 5.6,-5.6 V 714.67897 H 927.89155 V 844.4124 c 0,2.33333 1.86667,5.6 5.6,5.6 h 54.13337 c 2.33334,0 6.06668,-1.86667 6.06668,-5.6 V 539.21218 c 0,-2.33333 -2.33334,-5.6 -6.06668,-5.6 h -54.13337 c -2.33333,0 -5.6,1.86667 -5.6,5.6 V 655.87893 H 815.4248 V 539.21218 c 0,-2.33333 -1.86666,-5.6 -5.6,-5.6 h -54.13337 c -2.33334,0 -6.06667,1.86667 -6.06667,5.6 z"
|
||||
style="font-family:'Falling Sky';-inkscape-font-specification:'Falling Sky'"
|
||||
id="path30944" />
|
||||
</g>
|
||||
</g>
|
||||
<metadata
|
||||
id="metadata31116">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:title>Unofficial SSH Logo</dc:title>
|
||||
<dc:date>2022-02-25</dc:date>
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>Jessie Kirk</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<dc:source>https://github.com/voodootikigod/logo.js/blob/1544bdeed/js.svg</dc:source>
|
||||
<dc:description>Based on Unofficial JavaScript Logo by Chris Williams.</dc:description>
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/by/4.0/" />
|
||||
</cc:Work>
|
||||
<cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/by/4.0/">
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Distribution" />
|
||||
<cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#Notice" />
|
||||
<cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#Attribution" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
|
||||
</cc:License>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
</svg>
|
After Width: | Height: | Size: 5.9 KiB |
7
proxy/portal/logos/typesense.svg
Normal file
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="256px" height="255px" viewBox="0 0 256 255" version="1.1" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid">
|
||||
<title>typesense</title>
|
||||
<g>
|
||||
<path d="M75.1044528,80.3030095 C75.6550209,83.0543548 75.9300557,85.7135236 75.9300557,88.2815123 C75.9300557,90.6656462 75.6550209,93.2331367 75.1044528,95.984482 L40.1658052,95.7094471 L40.1658052,188.145582 C40.1658052,195.848551 43.7422053,199.700036 50.894906,199.700036 L71.8030378,199.700036 C73.0870321,202.818095 73.7287802,205.936153 73.7287802,209.053714 C73.7287802,212.171772 73.5454236,214.097515 73.1787104,214.830941 C64.7423144,215.931579 56.0303852,216.481648 47.0435208,216.481648 C29.2531983,216.481648 20.3580122,208.870357 20.3580122,193.647774 L20.3580122,95.7094471 L0.825323877,95.984482 C0.275108125,93.2331367 0,90.6656462 0,88.2815123 C0,85.7135236 0.275108125,83.0543548 0.825323877,80.3030095 L20.3580122,80.5780443 L20.3580122,51.691908 C20.3580122,46.7399348 21.0916379,43.2552628 22.5588892,41.2377922 C24.0261405,39.0369153 26.868915,37.9364768 31.0872126,37.9364768 L38.5151475,37.9364768 L40.1658052,39.5871345 L40.1658052,80.8535775 L75.1044528,80.3030095 Z M85.5806403,205.557792 C85.7593465,201.537897 86.8564035,197.152648 88.8668474,192.401547 C91.0609615,187.468265 93.5280989,183.631047 96.2682595,180.889894 C110.703743,188.747006 123.401806,192.676059 134.367413,192.676059 C140.39378,192.676059 145.238702,191.48816 148.89225,189.112858 C152.729467,186.737059 154.650558,183.539708 154.650558,179.519317 C154.650558,173.12412 149.716283,168.007664 139.847734,164.170446 L124.498863,158.41462 C101.475557,150.009475 89.9639045,136.578717 89.9639045,118.123338 C89.9639045,111.545463 91.1503146,105.698298 93.5280989,100.581843 C96.0845893,95.2827095 99.5544666,90.8061211 103.942695,87.1515808 C108.509629,83.3143631 113.900597,80.3905324 120.115599,78.3805848 C126.325637,76.3706373 133.270356,75.3654154 140.944791,75.3654154 C144.414668,75.3654154 148.251886,75.6399278 152.456444,76.18796 C156.839708,76.7359921 161.227936,77.5585367 165.611201,78.6546009 C169.999429,79.5684842 174.199023,80.6645484 178.219911,81.9437864 C182.240798,83.2230245 185.710676,84.5931048 188.634506,86.0550202 C188.634506,90.6234437 187.72112,95.3740482 185.894346,100.307827 C184.067572,105.241605 181.600435,108.895649 178.492934,111.271447 C164.05745,104.875754 151.543057,101.678403 140.944791,101.678403 C136.194187,101.678403 132.446322,102.865806 129.706161,105.241605 C126.966001,107.43423 125.59592,110.357564 125.59592,114.012104 C125.59592,119.676592 130.162855,124.153677 139.301688,127.442366 L156.020638,133.472705 C168.078338,137.675278 177.0335,143.431104 182.881162,150.740185 C188.728824,158.049265 191.652654,166.545749 191.652654,176.230628 C191.652654,189.204196 186.807733,199.619289 177.122853,207.476401 C167.437974,215.151333 153.553501,218.988551 135.46447,218.988551 C117.737815,218.988551 101.108217,214.511466 85.5806403,205.557792 Z M236.388119,253.589123 L236.388119,0.828727039 C239.149792,0.276242847 242.28169,0 245.783811,0 C249.466042,0 252.873106,0.276242847 256,0.828727039 L256,253.589123 C252.873106,254.141458 249.466042,254.418125 245.783811,254.418125 C242.28169,254.418125 239.149792,254.141458 236.388119,253.589123 Z" fill="#1035BC"></path>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.3 KiB |
1
proxy/portal/logos/zookeeper.svg
Normal file
After Width: | Height: | Size: 14 KiB |
|
@ -39,7 +39,17 @@ const RouteCard: FC<RouteCardProps> = ({ route }) => {
|
|||
<CardHeader
|
||||
avatar={
|
||||
route.logo_url ? (
|
||||
<Avatar src={route.logo_url} />
|
||||
<Avatar
|
||||
src={route.logo_url}
|
||||
variant="square"
|
||||
slotProps={{
|
||||
img: {
|
||||
sx: {
|
||||
objectFit: "scale-down",
|
||||
},
|
||||
},
|
||||
}}
|
||||
/>
|
||||
) : route.type === "tcp" ? (
|
||||
<Avatar>TCP</Avatar>
|
||||
) : route.type === "udp" ? (
|
||||
|
|