I have reproduced this on a standard apache config:
2014-06-26 09:24:43.733549 7fc57effd700 20 RGWWQ:
2014-06-26 09:24:43.733551 7fc57effd700 20 req: 0x7fc56c00b180
2014-06-26 09:24:43.733554 7fc57effd700 10 allocated request
req=0x7fc56c00c1f0
2014-06-26 09:24:43.733622 7fc5377ae700 20 dequeued request
req=0x7fc56c00b180
2014-06-26 09:24:43.733628 7fc5377ae700 20 RGWWQ: empty
2014-06-26 09:24:43.733662 7fc5377ae700 20 DOCUMENT_ROOT=/var/www
2014-06-26 09:24:43.733668 7fc5377ae700 20 FCGI_ROLE=RESPONDER
2014-06-26 09:24:43.733669 7fc5377ae700 20 GATEWAY_INTERFACE=CGI/1.1
2014-06-26 09:24:43.733670 7fc5377ae700 20 HTTP_ACCEPT=*/*
2014-06-26 09:24:43.733670 7fc5377ae700 20 HTTP_AUTHORIZATION=
2014-06-26 09:24:43.733671 7fc5377ae700 20 HTTP_CONNECTION=Keep-Alive
2014-06-26 09:24:43.733671 7fc5377ae700 20 HTTP_HOST=ubuntu.example.com:8080
2014-06-26 09:24:43.733672 7fc5377ae700 20 HTTP_USER_AGENT=Wget/1.12
(linux-gnu)
2014-06-26 09:24:43.733673 7fc5377ae700 20
PATH=/sbin:/usr/sbin:/bin:/usr/bin
2014-06-26 09:24:43.733673 7fc5377ae700 20 QUERY_STRING=
2014-06-26 09:24:43.733674 7fc5377ae700 20 REMOTE_ADDR=1.1.1.1
2014-06-26 09:24:43.733674 7fc5377ae700 20 REMOTE_PORT=43402
2014-06-26 09:24:43.733675 7fc5377ae700 20 REQUEST_METHOD=HEAD
2014-06-26 09:24:43.733675 7fc5377ae700 20
REQUEST_URI=/ubuntu/pool/main/a/adduser/adduser_3.113+nmu3ubuntu3_all.deb
2014-06-26 09:24:43.733676 7fc5377ae700 20
SCRIPT_FILENAME=/var/www/s3gw.fcgi
2014-06-26 09:24:43.733677 7fc5377ae700 20
SCRIPT_NAME=/ubuntu/pool/main/a/adduser/adduser_3.113+nmu3ubuntu3_all.deb
2014-06-26 09:24:43.733677 7fc5377ae700 20
SCRIPT_URI=http://ubuntu.example.com:8080/ubuntu/pool/main/a/adduser/adduser_3.113+nmu3ubuntu3_all.deb
2014-06-26 09:24:43.733678 7fc5377ae700 20
SCRIPT_URL=/ubuntu/pool/main/a/adduser/adduser_3.113+nmu3ubuntu3_all.deb
2014-06-26 09:24:43.733679 7fc5377ae700 20 SERVER_ADDR=1.1.1.1
2014-06-26 09:24:43.733680 7fc5377ae700 20 [email protected]
2014-06-26 09:24:43.733680 7fc5377ae700 20 SERVER_NAME=ubuntu.example.com
2014-06-26 09:24:43.733681 7fc5377ae700 20 SERVER_PORT=8080
2014-06-26 09:24:43.733681 7fc5377ae700 20 SERVER_PROTOCOL=HTTP/1.0
2014-06-26 09:24:43.733682 7fc5377ae700 20 SERVER_SIGNATURE=
2014-06-26 09:24:43.733682 7fc5377ae700 20 SERVER_SOFTWARE=Apache/2.2.15
(CentOS)
2014-06-26 09:24:43.733683 7fc5377ae700 1 ====== starting new request
req=0x7fc56c00b180 =====
2014-06-26 09:24:43.733696 7fc5377ae700 2 req 1:0.000012::HEAD
/ubuntu/pool/main/a/adduser/adduser_3.113+nmu3ubuntu3_all.deb::initializing
2014-06-26 09:24:43.733700 7fc5377ae700 10 host=ubuntu.example.com:8080
rgw_dns_name=example.com
2014-06-26 09:24:43.733732 7fc5377ae700 10
s->object=ubuntu/pool/main/a/adduser/adduser_3.113 nmu3ubuntu3_all.deb
s->bucket=ubuntu
2014-06-26 09:24:43.733737 7fc5377ae700 2 req 1:0.000054:s3:HEAD
/ubuntu/pool/main/a/adduser/adduser_3.113+nmu3ubuntu3_all.deb::getting op
2014-06-26 09:24:43.733744 7fc5377ae700 2 req 1:0.000061:s3:HEAD
/ubuntu/pool/main/a/adduser/adduser_3.113+nmu3ubuntu3_all.deb:get_obj:authorizing
2014-06-26 09:24:43.733751 7fc5377ae700 2 req 1:0.000068:s3:HEAD
/ubuntu/pool/main/a/adduser/adduser_3.113+nmu3ubuntu3_all.deb:get_obj:reading
permissions
2014-06-26 09:24:43.733785 7fc5377ae700 20 get_obj_state:
rctx=0x7fc5377ad640 obj=.rgw:ubuntu state=0x7fc56c015228 s->prefetch_data=0
2014-06-26 09:24:43.733791 7fc5377ae700 10 cache get: name=.rgw+ubuntu :
miss
2014-06-26 09:24:43.735748 7fc5377ae700 10 cache put: name=.rgw+ubuntu
2014-06-26 09:24:43.735759 7fc5377ae700 10 adding .rgw+ubuntu to cache
LRU end
2014-06-26 09:24:43.735765 7fc5377ae700 20 get_obj_state: s->obj_tag was
set empty
2014-06-26 09:24:43.735770 7fc5377ae700 20 Read xattr: user.rgw.idtag
2014-06-26 09:24:43.735772 7fc5377ae700 20 Read xattr: user.rgw.manifest
2014-06-26 09:24:43.735776 7fc5377ae700 10 cache get: name=.rgw+ubuntu :
type miss (requested=17, cached=22)
2014-06-26 09:24:43.735780 7fc5377ae700 20 get_obj_state:
rctx=0x7fc5377ad640 obj=.rgw:ubuntu state=0x7fc56c015228 s->prefetch_data=0
2014-06-26 09:24:43.735783 7fc5377ae700 20 get_obj_state:
rctx=0x7fc5377ad640 obj=.rgw:ubuntu state=0x7fc56c015228 s->prefetch_data=0
2014-06-26 09:24:43.735785 7fc5377ae700 20 state for obj=.rgw:ubuntu is
not atomic, not appending atomic test
2014-06-26 09:24:43.735807 7fc5377ae700 20 rados->read obj-ofs=0
read_ofs=0 read_len=524288
2014-06-26 09:24:43.737560 7fc5377ae700 20 rados->read r=0 bl.length=129
2014-06-26 09:24:43.737604 7fc5377ae700 10 cache put: name=.rgw+ubuntu
2014-06-26 09:24:43.737610 7fc5377ae700 10 moving .rgw+ubuntu to cache
LRU end
2014-06-26 09:24:43.737623 7fc5377ae700 20 rgw_get_bucket_info: bucket
instance: ubuntu(@{i=.rgw.buckets.index}.rgw.buckets[default.58906.10])
2014-06-26 09:24:43.737631 7fc5377ae700 20 reading from
.rgw:.bucket.meta.ubuntu:default.58906.10
2014-06-26 09:24:43.737666 7fc5377ae700 20 get_obj_state:
rctx=0x7fc5377ad640 obj=.rgw:.bucket.meta.ubuntu:default.58906.10
state=0x7fc56c018098 s->prefetch_data=0
2014-06-26 09:24:43.737674 7fc5377ae700 10 cache get:
name=.rgw+.bucket.meta.ubuntu:default.58906.10 : miss
2014-06-26 09:24:43.740007 7fc5377ae700 10 cache put:
name=.rgw+.bucket.meta.ubuntu:default.58906.10
2014-06-26 09:24:43.740027 7fc5377ae700 10 adding
.rgw+.bucket.meta.ubuntu:default.58906.10 to cache LRU end
2014-06-26 09:24:43.740032 7fc5377ae700 10 updating xattr:
name=user.rgw.acl bl.length()=229
2014-06-26 09:24:43.740040 7fc5377ae700 20 get_obj_state: s->obj_tag was
set empty
2014-06-26 09:24:43.740043 7fc5377ae700 20 Read xattr: user.rgw.acl
2014-06-26 09:24:43.740045 7fc5377ae700 20 Read xattr: user.rgw.idtag
2014-06-26 09:24:43.740046 7fc5377ae700 20 Read xattr: user.rgw.manifest
2014-06-26 09:24:43.740053 7fc5377ae700 10 cache get:
name=.rgw+.bucket.meta.ubuntu:default.58906.10 : type miss
(requested=17, cached=22)
2014-06-26 09:24:43.740060 7fc5377ae700 20 get_obj_state:
rctx=0x7fc5377ad640 obj=.rgw:.bucket.meta.ubuntu:default.58906.10
state=0x7fc56c018098 s->prefetch_data=0
2014-06-26 09:24:43.740065 7fc5377ae700 20 get_obj_state:
rctx=0x7fc5377ad640 obj=.rgw:.bucket.meta.ubuntu:default.58906.10
state=0x7fc56c018098 s->prefetch_data=0
2014-06-26 09:24:43.740068 7fc5377ae700 20 state for
obj=.rgw:.bucket.meta.ubuntu:default.58906.10 is not atomic, not
appending atomic test
2014-06-26 09:24:43.740112 7fc5377ae700 20 rados->read obj-ofs=0
read_ofs=0 read_len=524288
2014-06-26 09:24:43.742027 7fc5377ae700 20 rados->read r=0 bl.length=188
2014-06-26 09:24:43.742058 7fc5377ae700 10 cache put:
name=.rgw+.bucket.meta.ubuntu:default.58906.10
2014-06-26 09:24:43.742063 7fc5377ae700 10 moving
.rgw+.bucket.meta.ubuntu:default.58906.10 to cache LRU end
2014-06-26 09:24:43.742105 7fc5377ae700 15 Read
AccessControlPolicy<AccessControlPolicy
xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Owner><ID>centosmirror</ID><DisplayName>CentOS
mirror</DisplayName></Owner><AccessControlList><Grant><Grantee
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="Group"><URI>http://acs.amazonaws.com/groups/global/AllUsers</URI></Grantee><Permission>READ</Permission></Grant><Grant><Grantee
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="CanonicalUser"><ID>centosmirror</ID><DisplayName>CentOS
mirror</DisplayName></Grantee><Permission>FULL_CONTROL</Permission></Grant></AccessControlList></AccessControlPolicy>
2014-06-26 09:24:43.742169 7fc5377ae700 20 get_obj_state:
rctx=0x7fc5377ad640 obj=ubuntu:ubuntu/pool/main/a/adduser/adduser_3.113
nmu3ubuntu3_all.deb state=0x7fc56c01ec18 s->prefetch_data=1
2014-06-26 09:24:43.744128 7fc5377ae700 15 Read
AccessControlPolicy<AccessControlPolicy
xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Owner><ID>centosmirror</ID><DisplayName>CentOS
mirror</DisplayName></Owner><AccessControlList><Grant><Grantee
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="Group"><URI>http://acs.amazonaws.com/groups/global/AllUsers</URI></Grantee><Permission>READ</Permission></Grant><Grant><Grantee
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="CanonicalUser"><ID>centosmirror</ID><DisplayName>CentOS
mirror</DisplayName></Grantee><Permission>FULL_CONTROL</Permission></Grant></AccessControlList></AccessControlPolicy>
2014-06-26 09:24:43.744159 7fc5377ae700 5 Searching permissions for
uid=anonymous mask=49
2014-06-26 09:24:43.744164 7fc5377ae700 5 Permissions for user not found
2014-06-26 09:24:43.744166 7fc5377ae700 5 Searching permissions for
group=1 mask=49
2014-06-26 09:24:43.744168 7fc5377ae700 5 Found permission: 1
2014-06-26 09:24:43.744171 7fc5377ae700 5 Searching permissions for
group=2 mask=49
2014-06-26 09:24:43.744173 7fc5377ae700 5 Permissions for group not found
2014-06-26 09:24:43.744174 7fc5377ae700 5 Getting permissions
id=anonymous owner=centosmirror perm=1
2014-06-26 09:24:43.744176 7fc5377ae700 10 uid=anonymous requested perm
(type)=1, policy perm=1, user_perm_mask=15, acl perm=1
2014-06-26 09:24:43.744183 7fc5377ae700 10 read_permissions on
ubuntu(@{i=.rgw.buckets.index}.rgw.buckets[default.58906.10]):ubuntu/pool/main/a/adduser/adduser_3.113
nmu3ubuntu3_all.deb only_bucket=0 ret=-2
2014-06-26 09:24:43.744245 7fc5377ae700 2 req 1:0.010561:s3:HEAD
/ubuntu/pool/main/a/adduser/adduser_3.113+nmu3ubuntu3_all.deb:get_obj:http
status=404
2014-06-26 09:24:43.744254 7fc5377ae700 1 ====== req done
req=0x7fc56c00b180 http_status=404 ======
2014-06-26 09:24:43.744271 7fc5377ae700 20 process_request() returned -2
# wget --spider
http://ubuntu.ewr.vultr.com:8080/ubuntu/pool/main/a/adduser/adduser_3.113+nmu3ubuntu3_all.deb
--debug
DEBUG output created by Wget 1.12 on linux-gnu.
Spider mode enabled. Check if remote file exists.
--2014-06-26 09:24:43--
http://ubuntu.example:8080/ubuntu/pool/main/a/adduser/adduser_3.113+nmu3ubuntu3_all.deb
Connecting to examplecom|x|:8080... connected.
Created socket 3.
Releasing 0x00000000016378f0 (new refcount 1).
---request begin---
HEAD /ubuntu/pool/main/a/adduser/adduser_3.113+nmu3ubuntu3_all.deb HTTP/1.0
User-Agent: Wget/1.12 (linux-gnu)
Accept: */*
Host: ubuntu.example.com:8080
Connection: Keep-Alive
---request end---
HTTP request sent, awaiting response...
---response begin---
HTTP/1.1 404
Date: Thu, 26 Jun 2014 13:24:43 GMT
Server: Apache/2.2.15 (CentOS)
Content-Length: 75
Accept-Ranges: bytes
Connection: close
Content-Type: application/xml
---response end---
404
Closed fd 3
Remote file does not exist -- broken link!!!
# wget --spider
http://ubuntu.example.com:8080/ubuntu/pool/main/a/adduser/adduser_3.113%2Bnmu3ubuntu3_all.deb
--debug
DEBUG output created by Wget 1.12 on linux-gnu.
Spider mode enabled. Check if remote file exists.
--2014-06-26 09:23:53--
http://ubuntu.example.com:8080/ubuntu/pool/main/a/adduser/adduser_3.113%2Bnmu3ubuntu3_all.deb
Connecting to ubuntu.example.com|x|:8080... connected.
Created socket 3.
Releasing 0x0000000001c098f0 (new refcount 1).
---request begin---
HEAD /ubuntu/pool/main/a/adduser/adduser_3.113%2Bnmu3ubuntu3_all.deb
HTTP/1.0
User-Agent: Wget/1.12 (linux-gnu)
Accept: */*
Host: ubuntu.example.com:8080
Connection: Keep-Alive
---request end---
HTTP request sent, awaiting response...
---response begin---
HTTP/1.1 200
Date: Thu, 26 Jun 2014 13:23:53 GMT
Server: Apache/2.2.15 (CentOS)
Content-Length: 169360
Accept-Ranges: bytes
Last-Modified: Thu, 12 Jun 2014 22:34:31 GMT
ETag: "98c532cd738cfce59d448ed96ea5c8e7"
x-amz-meta-mtime: 1383833915
Connection: close
Content-Type: application/octet-stream
---response end---
200
Length: 169360 (165K) [application/octet-stream]
Closed fd 3
Remote file exists.
My httpd config looks like this one:
https://github.com/ceph/ceph/blob/master/doc/radosgw/rgw.conf
On 6/26/2014 2:59 AM, Yehuda Sadeh wrote:
The gateway itself supports these kind of characters. Usually we see
this issue when there's something in front of the web server (like a
load balancer) that modifies the requests. Another possibility is the
web server configuration that might be rewriting the requests. In this
case it seems that you're using nginx which is outside of our usual
test environment, so it might be related.
Yehuda
On Jun 25, 2014 5:39 PM, "Brian Rak" <[email protected]> wrote:
Unfortunately, both the client and actual files are outside of my control
here.... In the case that I noticed, the client is the Ubuntu installer, and
the files are part of the Ubuntu archives content.
On 6/25/2014 8:07 PM, Gerard Toonstra wrote:
the + is a reserved character in the HTTP protocol, which means it may have
specific meaning in a specific part of the URL, but not everywhere.
The earliest HTTP specification re-encoded spaces in the URL as + characters
after the question mark and form fields for posts that were
sent with urlencode.
Best is to prevent these characters in filenames or percentage encode the URL
explicitly.
Rgds,
G>
On Wed, Jun 25, 2014 at 8:41 PM, Brian Rak <[email protected]> wrote:
ceph version 0.80.1 (a38fe1169b6d2ac98b427334c12d7cf81f809b74)
I'll try to take a look through the bug tracker, but I didn't see anything
obvious at first glance.
On 6/25/2014 7:33 PM, Gregory Farnum wrote:
Unfortunately Yehuda's out for a while as he could best handle this,
but it sounds familiar so I think you probably want to search the list
archives and the bug tracker (http://tracker.ceph.com/projects/rgw).
What version precisely are you on?
-Greg
Software Engineer #42 @ http://inktank.com | http://ceph.com
On Wed, Jun 25, 2014 at 2:58 PM, Brian Rak <[email protected]> wrote:
I'm trying to find an issue with RadosGW and special characters in
filenames. Specifically, it seems that filenames with a + in them are not
being handled correctly, and that I need to explicitly escape them.
For example:
---request begin---
HEAD /ubuntu/pool/main/a/adduser/adduser_3.113+nmu3ubuntu3_all.deb HTTP/1.0
User-Agent: Wget/1.12 (linux-gnu)
Will fail with a 404 error, but
---request begin---
HEAD /ubuntu/pool/main/a/adduser/adduser_3.113%2Bnmu3ubuntu3_all.deb
HTTP/1.0
User-Agent: Wget/1.12 (linux-gnu)
will work properly.
I enabled debug mode on radosgw, and see this:
2014-06-25 17:30:37.383029 7f7ca7fff700 20 RGWWQ:
2014-06-25 17:30:37.383040 7f7ca7fff700 20 req: 0x7f7ca000b180
2014-06-25 17:30:37.383053 7f7ca7fff700 10 allocated request
req=0x7f7ca0015ef0
2014-06-25 17:30:37.383064 7f7c6cfa9700 20 dequeued request
req=0x7f7ca000b180
2014-06-25 17:30:37.383070 7f7c6cfa9700 20 RGWWQ: empty
2014-06-25 17:30:37.383121 7f7c6cfa9700 20 CONTENT_LENGTH=
2014-06-25 17:30:37.383123 7f7c6cfa9700 20 CONTENT_TYPE=
2014-06-25 17:30:37.383124 7f7c6cfa9700 20 DOCUMENT_ROOT=/etc/nginx/html
2014-06-25 17:30:37.383125 7f7c6cfa9700 20
DOCUMENT_URI=/ubuntu/pool/main/a/adduser/adduser_3.113+nmu3ubuntu3_all.deb
2014-06-25 17:30:37.383126 7f7c6cfa9700 20 FCGI_ROLE=RESPONDER
2014-06-25 17:30:37.383127 7f7c6cfa9700 20 GATEWAY_INTERFACE=CGI/1.1
2014-06-25 17:30:37.383128 7f7c6cfa9700 20 HTTP_ACCEPT=*/*
2014-06-25 17:30:37.383129 7f7c6cfa9700 20 HTTP_CONNECTION=Keep-Alive
2014-06-25 17:30:37.383129 7f7c6cfa9700 20 HTTP_HOST=xxx
2014-06-25 17:30:37.383130 7f7c6cfa9700 20 HTTP_USER_AGENT=Wget/1.12
(linux-gnu)
2014-06-25 17:30:37.383131 7f7c6cfa9700 20 QUERY_STRING=
2014-06-25 17:30:37.383131 7f7c6cfa9700 20 REDIRECT_STATUS=200
2014-06-25 17:30:37.383132 7f7c6cfa9700 20 REMOTE_ADDR=yyy
2014-06-25 17:30:37.383133 7f7c6cfa9700 20 REMOTE_PORT=43855
2014-06-25 17:30:37.383134 7f7c6cfa9700 20 REQUEST_METHOD=HEAD
2014-06-25 17:30:37.383134 7f7c6cfa9700 20
REQUEST_URI=/ubuntu/pool/main/a/adduser/adduser_3.113+nmu3ubuntu3_all.deb
2014-06-25 17:30:37.383135 7f7c6cfa9700 20
SCRIPT_NAME=/ubuntu/pool/main/a/adduser/adduser_3.113+nmu3ubuntu3_all.deb
2014-06-25 17:30:37.383136 7f7c6cfa9700 20 SERVER_ADDR=yyy
2014-06-25 17:30:37.383136 7f7c6cfa9700 20 SERVER_NAME=xxx
2014-06-25 17:30:37.383137 7f7c6cfa9700 20 SERVER_PORT=80
2014-06-25 17:30:37.383138 7f7c6cfa9700 20 SERVER_PROTOCOL=HTTP/1.0
2014-06-25 17:30:37.383138 7f7c6cfa9700 20 SERVER_SOFTWARE=nginx/1.4.6
2014-06-25 17:30:37.383140 7f7c6cfa9700 1 ====== starting new request
req=0x7f7ca000b180 =====
2014-06-25 17:30:37.383152 7f7c6cfa9700 2 req 1:0.000013::HEAD
/ubuntu/pool/main/a/adduser/adduser_3.113+nmu3ubuntu3_all.deb::initializing
2014-06-25 17:30:37.383158 7f7c6cfa9700 10 host=xxxx rgw_dns_name=xxxx
2014-06-25 17:30:37.383199 7f7c6cfa9700 10
s->object=ubuntu/pool/main/a/adduser/adduser_3.113 nmu3ubuntu3_all.deb
s->bucket=ubuntu
2014-06-25 17:30:37.383207 7f7c6cfa9700 2 req 1:0.000068:s3:HEAD
/ubuntu/pool/main/a/adduser/adduser_3.113+nmu3ubuntu3_all.deb::getting op
2014-06-25 17:30:37.383211 7f7c6cfa9700 2 req 1:0.000072:s3:HEAD
/ubuntu/pool/main/a/adduser/adduser_3.113+nmu3ubuntu3_all.deb:get_obj:authorizing
2014-06-25 17:30:37.383218 7f7c6cfa9700 2 req 1:0.000079:s3:HEAD
/ubuntu/pool/main/a/adduser/adduser_3.113+nmu3ubuntu3_all.deb:get_obj:reading
permissions
2014-06-25 17:30:37.383268 7f7c6cfa9700 20 get_obj_state:
rctx=0x7f7c6cfa8640 obj=.rgw:ubuntu state=0x7f7c6800c0a8 s->prefetch_data=0
2014-06-25 17:30:37.383279 7f7c6cfa9700 10 cache get: name=.rgw+ubuntu :
miss
It seems that Ceph is attempting to urldecode the filename, even when it
shouldn't be. (Going by
http://stackoverflow.com/questions/1005676/urls-and-plus-signs ). Is this a
bug, or is this the desired behavior?
_______________________________________________
ceph-users mailing list
[email protected]
http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com
_______________________________________________
ceph-users mailing list
[email protected]
http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com
_______________________________________________
ceph-users mailing list
[email protected]
http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com
_______________________________________________
ceph-users mailing list
[email protected]
http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com
_______________________________________________
ceph-users mailing list
[email protected]
http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com