diff options
Diffstat (limited to '')
-rw-r--r-- | sca-cpp/trunk/.gitignore | 4 | ||||
-rw-r--r-- | sca-cpp/trunk/Makefile.am | 2 | ||||
-rwxr-xr-x | sca-cpp/trunk/components/constdb/server-test | 2 | ||||
-rw-r--r-- | sca-cpp/trunk/components/http/http.composite | 4 | ||||
-rw-r--r-- | sca-cpp/trunk/components/http/url-test.scm | 2 | ||||
-rwxr-xr-x | sca-cpp/trunk/components/sqldb/pgsql-conf | 2 | ||||
-rw-r--r-- | sca-cpp/trunk/configure.ac | 3 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/Makefile.am | 19 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/Makefile.am (renamed from sca-cpp/trunk/modules/edit/Makefile.am) | 8 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/accounts.py (renamed from sca-cpp/trunk/modules/edit/accounts.py) | 2 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/apps.py (renamed from sca-cpp/trunk/modules/edit/apps.py) | 8 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/composites.py (renamed from sca-cpp/trunk/modules/edit/composites.py) | 2 | ||||
-rwxr-xr-x | sca-cpp/trunk/hosting/server/config-backup (renamed from sca-cpp/trunk/modules/edit/config-backup) | 2 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/dashboards.py (renamed from sca-cpp/trunk/modules/edit/dashboards.py) | 2 | ||||
-rwxr-xr-x | sca-cpp/trunk/hosting/server/data-backup (renamed from sca-cpp/trunk/modules/edit/data-backup) | 2 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/accounts/jane@localhost/user.account (renamed from sca-cpp/trunk/modules/edit/accounts/jane@localhost/user.account) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/accounts/jane@sca-store.com/user.account (renamed from sca-cpp/trunk/modules/edit/accounts/jane@sca-store.com/user.account) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/accounts/john@localhost/user.account (renamed from sca-cpp/trunk/modules/edit/accounts/john@localhost/user.account) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/accounts/john@sca-store.com/user.account (renamed from sca-cpp/trunk/modules/edit/accounts/john@sca-store.com/user.account) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/me360/app.composite (renamed from sca-cpp/trunk/modules/edit/apps/me360/app.composite) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/me360/app.stats (renamed from sca-cpp/trunk/modules/edit/apps/me360/app.stats) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/me360/htdocs/app.html (renamed from sca-cpp/trunk/modules/edit/apps/me360/htdocs/app.html) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/nearme/app.composite (renamed from sca-cpp/trunk/modules/edit/apps/nearme/app.composite) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/nearme/app.stats (renamed from sca-cpp/trunk/modules/edit/apps/nearme/app.stats) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/nearme/htdocs/app.html (renamed from sca-cpp/trunk/modules/edit/apps/nearme/htdocs/app.html) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/nearme2/app.composite (renamed from sca-cpp/trunk/modules/edit/apps/nearme2/app.composite) | 6 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/nearme2/app.stats (renamed from sca-cpp/trunk/modules/edit/apps/nearme2/app.stats) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/nearme2/htdocs/app.html (renamed from sca-cpp/trunk/modules/edit/apps/nearme2/htdocs/app.html) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/new/app.composite (renamed from sca-cpp/trunk/modules/edit/apps/new/app.composite) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/new/app.stats (renamed from sca-cpp/trunk/modules/edit/apps/new/app.stats) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/new/htdocs/app.html (renamed from sca-cpp/trunk/modules/edit/apps/new/htdocs/app.html) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/ourphotos/app.composite (renamed from sca-cpp/trunk/modules/edit/apps/ourphotos/app.composite) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/ourphotos/app.stats (renamed from sca-cpp/trunk/modules/edit/apps/ourphotos/app.stats) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/ourphotos/htdocs/app.html (renamed from sca-cpp/trunk/modules/edit/apps/ourphotos/htdocs/app.html) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/shoppingcart/app.composite (renamed from sca-cpp/trunk/modules/edit/apps/shoppingcart/app.composite) | 6 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/shoppingcart/app.stats (renamed from sca-cpp/trunk/modules/edit/apps/shoppingcart/app.stats) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/shoppingcart/htdocs/app.html (renamed from sca-cpp/trunk/modules/edit/apps/shoppingcart/htdocs/app.html) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/slice/app.composite (renamed from sca-cpp/trunk/modules/edit/apps/slice/app.composite) | 8 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/slice/app.stats (renamed from sca-cpp/trunk/modules/edit/apps/slice/app.stats) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/slice/htdocs/app.html (renamed from sca-cpp/trunk/modules/edit/apps/slice/htdocs/app.html) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/test/app.composite (renamed from sca-cpp/trunk/modules/edit/apps/test/app.composite) | 18 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/test/app.stats (renamed from sca-cpp/trunk/modules/edit/apps/test/app.stats) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/test/htdocs/app.html (renamed from sca-cpp/trunk/modules/edit/apps/test/htdocs/app.html) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testanimation/app.composite (renamed from sca-cpp/trunk/modules/edit/apps/testanimation/app.composite) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testanimation/app.stats (renamed from sca-cpp/trunk/modules/edit/apps/testanimation/app.stats) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testanimation/htdocs/app.html (renamed from sca-cpp/trunk/modules/edit/apps/testanimation/htdocs/app.html) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testdb/app.composite (renamed from sca-cpp/trunk/modules/edit/apps/testdb/app.composite) | 6 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testdb/app.stats (renamed from sca-cpp/trunk/modules/edit/apps/testdb/app.stats) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testdb/htdocs/app.html (renamed from sca-cpp/trunk/modules/edit/apps/testdb/htdocs/app.html) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testevents/app.composite (renamed from sca-cpp/trunk/modules/edit/apps/testevents/app.composite) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testevents/app.stats (renamed from sca-cpp/trunk/modules/edit/apps/testevents/app.stats) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testevents/htdocs/app.html (renamed from sca-cpp/trunk/modules/edit/apps/testevents/htdocs/app.html) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testhttp/app.composite (renamed from sca-cpp/trunk/modules/edit/apps/testhttp/app.composite) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testhttp/app.stats (renamed from sca-cpp/trunk/modules/edit/apps/testhttp/app.stats) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testhttp/htdocs/app.html (renamed from sca-cpp/trunk/modules/edit/apps/testhttp/htdocs/app.html) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testlogic/app.composite (renamed from sca-cpp/trunk/modules/edit/apps/testlogic/app.composite) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testlogic/app.stats (renamed from sca-cpp/trunk/modules/edit/apps/testlogic/app.stats) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testlogic/htdocs/app.html (renamed from sca-cpp/trunk/modules/edit/apps/testlogic/htdocs/app.html) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testsearch/app.composite (renamed from sca-cpp/trunk/modules/edit/apps/testsearch/app.composite) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testsearch/app.stats (renamed from sca-cpp/trunk/modules/edit/apps/testsearch/app.stats) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testsearch/htdocs/app.html (renamed from sca-cpp/trunk/modules/edit/apps/testsearch/htdocs/app.html) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testsms/app.composite (renamed from sca-cpp/trunk/modules/edit/apps/testsms/app.composite) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testsms/app.stats (renamed from sca-cpp/trunk/modules/edit/apps/testsms/app.stats) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testsms/htdocs/app.html (renamed from sca-cpp/trunk/modules/edit/apps/testsms/htdocs/app.html) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testsocial/app.composite (renamed from sca-cpp/trunk/modules/edit/apps/testsocial/app.composite) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testsocial/app.stats (renamed from sca-cpp/trunk/modules/edit/apps/testsocial/app.stats) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testsocial/htdocs/app.html (renamed from sca-cpp/trunk/modules/edit/apps/testsocial/htdocs/app.html) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testtext/app.composite (renamed from sca-cpp/trunk/modules/edit/apps/testtext/app.composite) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testtext/app.stats (renamed from sca-cpp/trunk/modules/edit/apps/testtext/app.stats) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testtext/htdocs/app.html (renamed from sca-cpp/trunk/modules/edit/apps/testtext/htdocs/app.html) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testurl/app.composite (renamed from sca-cpp/trunk/modules/edit/apps/testurl/app.composite) | 26 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testurl/app.stats (renamed from sca-cpp/trunk/modules/edit/apps/testurl/app.stats) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testurl/htdocs/app.html (renamed from sca-cpp/trunk/modules/edit/apps/testurl/htdocs/app.html) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testvalues/app.composite (renamed from sca-cpp/trunk/modules/edit/apps/testvalues/app.composite) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testvalues/app.stats (renamed from sca-cpp/trunk/modules/edit/apps/testvalues/app.stats) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testvalues/htdocs/app.html (renamed from sca-cpp/trunk/modules/edit/apps/testvalues/htdocs/app.html) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testwidgets/app.composite (renamed from sca-cpp/trunk/modules/edit/apps/testwidgets/app.composite) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testwidgets/app.stats (renamed from sca-cpp/trunk/modules/edit/apps/testwidgets/app.stats) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testwidgets/htdocs/app.html (renamed from sca-cpp/trunk/modules/edit/apps/testwidgets/htdocs/app.html) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testwidgets2/app.composite (renamed from sca-cpp/trunk/modules/edit/apps/testwidgets2/app.composite) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testwidgets2/app.stats (renamed from sca-cpp/trunk/modules/edit/apps/testwidgets2/app.stats) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testwidgets2/htdocs/app.html (renamed from sca-cpp/trunk/modules/edit/apps/testwidgets2/htdocs/app.html) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testwidgets3/app.composite (renamed from sca-cpp/trunk/modules/edit/apps/testwidgets3/app.composite) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testwidgets3/app.stats (renamed from sca-cpp/trunk/modules/edit/apps/testwidgets3/app.stats) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/testwidgets3/htdocs/app.html (renamed from sca-cpp/trunk/modules/edit/apps/testwidgets3/htdocs/app.html) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/twsms/app.composite (renamed from sca-cpp/trunk/modules/edit/apps/twsms/app.composite) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/twsms/app.stats (renamed from sca-cpp/trunk/modules/edit/apps/twsms/app.stats) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/apps/twsms/htdocs/app.html (renamed from sca-cpp/trunk/modules/edit/apps/twsms/htdocs/app.html) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/dashboards/jane@localhost/user.apps (renamed from sca-cpp/trunk/modules/edit/dashboards/jane@localhost/user.apps) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/dashboards/jane@sca-store.com/user.apps (renamed from sca-cpp/trunk/modules/edit/dashboards/jane@sca-store.com/user.apps) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/dashboards/john@localhost/user.apps (renamed from sca-cpp/trunk/modules/edit/dashboards/john@localhost/user.apps) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/dashboards/john@sca-store.com/user.apps (renamed from sca-cpp/trunk/modules/edit/dashboards/john@sca-store.com/user.apps) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/palettes/animation/palette.composite (renamed from sca-cpp/trunk/modules/edit/palettes/animation/palette.composite) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/palettes/control/palette.composite (renamed from sca-cpp/trunk/modules/edit/palettes/control/palette.composite) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/palettes/database/palette.composite (renamed from sca-cpp/trunk/modules/edit/palettes/database/palette.composite) | 6 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/palettes/http/palette.composite (renamed from sca-cpp/trunk/modules/edit/palettes/http/palette.composite) | 32 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/palettes/lists/palette.composite (renamed from sca-cpp/trunk/modules/edit/palettes/lists/palette.composite) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/palettes/logic/palette.composite (renamed from sca-cpp/trunk/modules/edit/palettes/logic/palette.composite) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/palettes/math/palette.composite (renamed from sca-cpp/trunk/modules/edit/palettes/math/palette.composite) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/palettes/python/palette.composite (renamed from sca-cpp/trunk/modules/edit/palettes/python/palette.composite) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/palettes/search/palette.composite (renamed from sca-cpp/trunk/modules/edit/palettes/search/palette.composite) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/palettes/social/palette.composite (renamed from sca-cpp/trunk/modules/edit/palettes/social/palette.composite) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/palettes/talk/palette.composite (renamed from sca-cpp/trunk/modules/edit/palettes/talk/palette.composite) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/palettes/text/palette.composite (renamed from sca-cpp/trunk/modules/edit/palettes/text/palette.composite) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/palettes/transform/palette.composite (renamed from sca-cpp/trunk/modules/edit/palettes/transform/palette.composite) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/palettes/values/palette.composite (renamed from sca-cpp/trunk/modules/edit/palettes/values/palette.composite) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/store/all/store.apps (renamed from sca-cpp/trunk/modules/edit/store/all/store.apps) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/store/featured/store.apps (renamed from sca-cpp/trunk/modules/edit/store/featured/store.apps) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/store/new/store.apps (renamed from sca-cpp/trunk/modules/edit/store/new/store.apps) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/data/store/top/store.apps (renamed from sca-cpp/trunk/modules/edit/store/top/store.apps) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/account/index.html (renamed from sca-cpp/trunk/modules/edit/htdocs/account/index.html) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/app/cache-manifest.cmf (renamed from sca-cpp/trunk/modules/edit/htdocs/app/cache-manifest.cmf) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/app/index.html (renamed from sca-cpp/trunk/modules/edit/htdocs/app/index.html) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/cache-manifest.cmf (renamed from sca-cpp/trunk/modules/edit/htdocs/cache-manifest.cmf) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/clone/index.html (renamed from sca-cpp/trunk/modules/edit/htdocs/clone/index.html) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/create/index.html (renamed from sca-cpp/trunk/modules/edit/htdocs/create/index.html) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/favicon.ico (renamed from sca-cpp/trunk/modules/edit/htdocs/favicon.ico) | bin | 2238 -> 2238 bytes | |||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/graph/index.html (renamed from sca-cpp/trunk/modules/edit/htdocs/graph/index.html) | 2 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/home/home.b64 (renamed from sca-cpp/trunk/modules/edit/htdocs/home/home.b64) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/home/home.png (renamed from sca-cpp/trunk/modules/edit/htdocs/home/home.png) | bin | 9595 -> 9595 bytes | |||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/home/index.html (renamed from sca-cpp/trunk/modules/edit/htdocs/home/index.html) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/index.html (renamed from sca-cpp/trunk/modules/edit/htdocs/index.html) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/login/index.html (renamed from sca-cpp/trunk/modules/edit/htdocs/login/index.html) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/page/index.html (renamed from sca-cpp/trunk/modules/edit/htdocs/page/index.html) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/public/app.b64 (renamed from sca-cpp/trunk/modules/edit/htdocs/public/app.b64) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/public/app.png (renamed from sca-cpp/trunk/modules/edit/htdocs/public/app.png) | bin | 147 -> 147 bytes | |||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/public/app.xcf (renamed from sca-cpp/trunk/modules/edit/htdocs/public/app.xcf) | bin | 1294 -> 1294 bytes | |||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/public/delete.b64 (renamed from sca-cpp/trunk/modules/edit/htdocs/public/delete.b64) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/public/delete.png (renamed from sca-cpp/trunk/modules/edit/htdocs/public/delete.png) | bin | 906 -> 906 bytes | |||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/public/delete.xcf (renamed from sca-cpp/trunk/modules/edit/htdocs/public/delete.xcf) | bin | 2008 -> 2008 bytes | |||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/public/grid72.b64 (renamed from sca-cpp/trunk/modules/edit/htdocs/public/grid72.b64) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/public/grid72.png (renamed from sca-cpp/trunk/modules/edit/htdocs/public/grid72.png) | bin | 138 -> 138 bytes | |||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/public/iframe.html (renamed from sca-cpp/trunk/modules/edit/htdocs/public/iframe.html) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/public/img.b64 (renamed from sca-cpp/trunk/modules/edit/htdocs/public/img.b64) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/public/img.png (renamed from sca-cpp/trunk/modules/edit/htdocs/public/img.png) | bin | 357 -> 357 bytes | |||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/public/img.xcf (renamed from sca-cpp/trunk/modules/edit/htdocs/public/img.xcf) | bin | 1639 -> 1639 bytes | |||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/public/notauth/index.html (renamed from sca-cpp/trunk/modules/edit/htdocs/public/notauth/index.html) | 2 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/public/notfound/index.html (renamed from sca-cpp/trunk/modules/edit/htdocs/public/notfound/index.html) | 2 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/public/notyet/index.html (renamed from sca-cpp/trunk/modules/edit/htdocs/public/notyet/index.html) | 2 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/public/oops/index.html (renamed from sca-cpp/trunk/modules/edit/htdocs/public/oops/index.html) | 4 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/public/touchicon.b64 (renamed from sca-cpp/trunk/modules/edit/htdocs/public/touchicon.b64) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/public/touchicon.png (renamed from sca-cpp/trunk/modules/edit/htdocs/public/touchicon.png) | bin | 606 -> 606 bytes | |||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/public/touchicon.xcf (renamed from sca-cpp/trunk/modules/edit/htdocs/public/touchicon.xcf) | bin | 3400 -> 3400 bytes | |||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/public/user.b64 (renamed from sca-cpp/trunk/modules/edit/htdocs/public/user.b64) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/public/user.png (renamed from sca-cpp/trunk/modules/edit/htdocs/public/user.png) | bin | 147 -> 147 bytes | |||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/robots.txt (renamed from sca-cpp/trunk/modules/edit/htdocs/robots.txt) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/stats/index.html (renamed from sca-cpp/trunk/modules/edit/htdocs/stats/index.html) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/htdocs/store/index.html (renamed from sca-cpp/trunk/modules/edit/htdocs/store/index.html) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/log.py (renamed from sca-cpp/trunk/modules/edit/log.py) | 0 | ||||
-rwxr-xr-x | sca-cpp/trunk/hosting/server/mkapplinks (renamed from sca-cpp/trunk/modules/edit/mkapplinks) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/pages.py (renamed from sca-cpp/trunk/modules/edit/pages.py) | 2 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/palettes.py (renamed from sca-cpp/trunk/modules/edit/palettes.py) | 2 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/selector.py | 28 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/server.composite (renamed from sca-cpp/trunk/modules/edit/edit.composite) | 164 | ||||
-rwxr-xr-x | sca-cpp/trunk/hosting/server/ssl-start (renamed from sca-cpp/trunk/modules/edit/ssl-start) | 61 | ||||
-rwxr-xr-x | sca-cpp/trunk/hosting/server/start (renamed from sca-cpp/trunk/modules/edit/start) | 51 | ||||
-rwxr-xr-x | sca-cpp/trunk/hosting/server/stop (renamed from sca-cpp/trunk/modules/edit/stop) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/store.py (renamed from sca-cpp/trunk/modules/edit/store.py) | 2 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/user.py (renamed from sca-cpp/trunk/modules/edit/user.py) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/hosting/server/util.py (renamed from sca-cpp/trunk/modules/edit/util.py) | 0 | ||||
-rw-r--r-- | sca-cpp/trunk/modules/Makefile.am | 2 | ||||
-rwxr-xr-x | sca-cpp/trunk/modules/http/http-test | 2 | ||||
-rw-r--r-- | sca-cpp/trunk/modules/http/httpd.hpp | 2 | ||||
-rwxr-xr-x | sca-cpp/trunk/modules/http/proxy-test | 2 | ||||
-rw-r--r-- | sca-cpp/trunk/modules/server/Makefile.am | 9 | ||||
-rw-r--r-- | sca-cpp/trunk/modules/server/client-test.cpp | 2 | ||||
-rw-r--r-- | sca-cpp/trunk/modules/server/client-test.hpp | 2 | ||||
-rw-r--r-- | sca-cpp/trunk/modules/server/domain-test.composite | 4 | ||||
-rwxr-xr-x | sca-cpp/trunk/modules/server/httpd-test | 12 | ||||
-rw-r--r-- | sca-cpp/trunk/modules/server/mod-eval.hpp | 918 | ||||
-rw-r--r-- | sca-cpp/trunk/modules/server/mod-wiring.cpp | 530 | ||||
-rwxr-xr-x | sca-cpp/trunk/modules/server/server-conf | 7 |
172 files changed, 825 insertions, 1161 deletions
diff --git a/sca-cpp/trunk/.gitignore b/sca-cpp/trunk/.gitignore index d1d2818389..8d56a49c91 100644 --- a/sca-cpp/trunk/.gitignore +++ b/sca-cpp/trunk/.gitignore @@ -143,8 +143,8 @@ json-value value-json element-value value-element -modules/edit/apps/*/nuvem -modules/edit/apps/*/lib +hosting/server/data/apps/*/nuvem +hosting/server/data/apps/*/lib chat-send opencl-shell opencl-test diff --git a/sca-cpp/trunk/Makefile.am b/sca-cpp/trunk/Makefile.am index 154643af17..10d04d8c0c 100644 --- a/sca-cpp/trunk/Makefile.am +++ b/sca-cpp/trunk/Makefile.am @@ -17,7 +17,7 @@ ACLOCAL_AMFLAGS = -I m4 -SUBDIRS = etc kernel modules components samples doc macos ubuntu +SUBDIRS = etc kernel modules components hosting samples doc macos ubuntu datadir=$(prefix) dist_data_DATA = AUTHORS README LICENSE COPYING NOTICE NEWS diff --git a/sca-cpp/trunk/components/constdb/server-test b/sca-cpp/trunk/components/constdb/server-test index 6d53e641ae..7e98e42bbb 100755 --- a/sca-cpp/trunk/components/constdb/server-test +++ b/sca-cpp/trunk/components/constdb/server-test @@ -32,7 +32,7 @@ EOF sleep 2 # Test -./client-test #2>/dev/null +./client-test 2>/dev/null rc=$? # Cleanup diff --git a/sca-cpp/trunk/components/http/http.composite b/sca-cpp/trunk/components/http/http.composite index 48fe1c3b55..ea0adedf51 100644 --- a/sca-cpp/trunk/components/http/http.composite +++ b/sca-cpp/trunk/components/http/http.composite @@ -80,8 +80,8 @@ <component name="scheme-test"> <implementation.scheme script="server-test.scm"/> - <service name="test"> - <binding.http uri="test"/> + <service name="scheme"> + <binding.http uri="scheme"/> </service> </component> diff --git a/sca-cpp/trunk/components/http/url-test.scm b/sca-cpp/trunk/components/http/url-test.scm index 37a5b345b2..dd92720c32 100644 --- a/sca-cpp/trunk/components/http/url-test.scm +++ b/sca-cpp/trunk/components/http/url-test.scm @@ -18,6 +18,6 @@ ; URL test case (define (get id) - "http://localhost:8090/test" + "http://localhost:8090/scheme" ) diff --git a/sca-cpp/trunk/components/sqldb/pgsql-conf b/sca-cpp/trunk/components/sqldb/pgsql-conf index 6aa705f139..4083160a02 100755 --- a/sca-cpp/trunk/components/sqldb/pgsql-conf +++ b/sca-cpp/trunk/components/sqldb/pgsql-conf @@ -98,7 +98,7 @@ host replication all samenet trust EOF # Create the db -($pgsql_prefix/bin/pg_ctl start -W -D $root/sqldb/data 2>&1 | sh $root/sqldb/logger +$pgsql_prefix/bin/pg_ctl start -W -D $root/sqldb/data 2>&1 | sh $root/sqldb/logger sti=0 while [ $sti -ne 30 ]; do st=`$pgsql_prefix/bin/pg_ctl status -D $root/sqldb/data | grep 'server is running'` diff --git a/sca-cpp/trunk/configure.ac b/sca-cpp/trunk/configure.ac index 3413bc2678..cb85c3930e 100644 --- a/sca-cpp/trunk/configure.ac +++ b/sca-cpp/trunk/configure.ac @@ -1034,7 +1034,6 @@ AC_CONFIG_FILES([Makefile modules/openid/Makefile modules/oauth/Makefile modules/wsgi/Makefile - modules/edit/Makefile components/Makefile components/cache/Makefile components/log/Makefile @@ -1045,6 +1044,8 @@ AC_CONFIG_FILES([Makefile components/queue/Makefile components/sqldb/Makefile components/webservice/Makefile + hosting/Makefile + hosting/server/Makefile samples/Makefile samples/store-scheme/Makefile samples/store-cpp/Makefile diff --git a/sca-cpp/trunk/hosting/Makefile.am b/sca-cpp/trunk/hosting/Makefile.am new file mode 100644 index 0000000000..36d24d4ffa --- /dev/null +++ b/sca-cpp/trunk/hosting/Makefile.am @@ -0,0 +1,19 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +SUBDIRS = server + diff --git a/sca-cpp/trunk/modules/edit/Makefile.am b/sca-cpp/trunk/hosting/server/Makefile.am index 6bf47676d1..d7a808c5e4 100644 --- a/sca-cpp/trunk/modules/edit/Makefile.am +++ b/sca-cpp/trunk/hosting/server/Makefile.am @@ -17,7 +17,7 @@ if WANT_PYTHON -moddir = $(prefix)/modules/edit +moddir = $(prefix)/hosting/server dist_mod_SCRIPTS = start stop ssl-start mkapplinks config-backup data-backup BUILT_SOURCES = htdocs/config.js htdocs/public/config.js @@ -31,17 +31,17 @@ not_minified = htdocs/public/iframe.html htdocs/create/index.html htdocs/page/in minified = htdocs/public/iframe-min.html htdocs/create/index-min.html htdocs/page/index-min.html htdocs/login/index-min.html htdocs/public/notfound/index-min.html htdocs/public/oops/index-min.html htdocs/graph/index-min.html htdocs/public/notauth/index-min.html htdocs/account/index-min.html htdocs/home/index-min.html htdocs/index-min.html htdocs/public/notyet/index-min.html htdocs/clone/index-min.html htdocs/stats/index-min.html htdocs/app/index-min.html htdocs/store/index-min.html htdocs/config-min.js htdocs/public/config-min.js -resources = edit.composite *.py htdocs/*.cmf htdocs/*.ico htdocs/home/*.png htdocs/app/*.cmf htdocs/home/*.b64 htdocs/*.txt htdocs/public/*.png htdocs/public/*.b64 palettes/*/palette.composite accounts/*/*.account apps/*/app.composite apps/*/app.stats apps/*/htdocs/app.html dashboards/*/user.apps store/*/store.apps ${not_minified} ${minified} +resources = server.composite *.py htdocs/*.cmf htdocs/*.ico htdocs/home/*.png htdocs/app/*.cmf htdocs/home/*.b64 htdocs/*.txt htdocs/public/*.png htdocs/public/*.b64 data/palettes/*/palette.composite data/accounts/*/*.account data/apps/*/app.composite data/apps/*/app.stats data/apps/*/htdocs/app.html data/dashboards/*/user.apps data/store/*/store.apps ${not_minified} ${minified} nobase_dist_mod_DATA = ${resources} EXTRA_DIST = ${resources} SUFFIXES = -min.html -min.js .html-min.html: - ../http/minify-html $< $@ + ../../modules/http/minify-html $< $@ .js-min.js: - ../http/minify-js $< $@ + ../../modules/http/minify-js $< $@ CLEANFILES = ${minified} diff --git a/sca-cpp/trunk/modules/edit/accounts.py b/sca-cpp/trunk/hosting/server/accounts.py index 4589f6c0cc..4a50b15981 100644 --- a/sca-cpp/trunk/modules/edit/accounts.py +++ b/sca-cpp/trunk/hosting/server/accounts.py @@ -20,7 +20,7 @@ from util import * # Convert a particular user id to an account id def accountid(user): - return ("'" + user.id(), "'user.account") + return ("'accounts", "'" + user.id(), "'user.account") # Get the current user's account def get(id, user, cache): diff --git a/sca-cpp/trunk/modules/edit/apps.py b/sca-cpp/trunk/hosting/server/apps.py index 35a4c79e33..cc84544dd5 100644 --- a/sca-cpp/trunk/modules/edit/apps.py +++ b/sca-cpp/trunk/hosting/server/apps.py @@ -21,14 +21,14 @@ from util import * # Convert an id to an app id def appid(id): - return ("'" + car(id), "'app.stats") + return ("'apps", "'" + car(id), "'app.stats") # Link implementation resources into an app def mkapplink(id): try: - os.symlink('../../../../../nuvem/nuvem-parallel/nuvem', 'apps/' + car(id) + '/nuvem') - os.symlink('../../../../components', 'apps/' + car(id) + '/lib') - os.mkdir('apps/' + car(id) + '/htdocs') + os.symlink('../../../../../../nuvem/nuvem-parallel/nuvem', 'data/apps/' + car(id) + '/nuvem') + os.symlink('../../../../../components', 'data/apps/' + car(id) + '/lib') + os.mkdir('data/apps/' + car(id) + '/htdocs') except: pass return True diff --git a/sca-cpp/trunk/modules/edit/composites.py b/sca-cpp/trunk/hosting/server/composites.py index 87569a8700..d929716bd7 100644 --- a/sca-cpp/trunk/modules/edit/composites.py +++ b/sca-cpp/trunk/hosting/server/composites.py @@ -20,7 +20,7 @@ from util import * # Convert an id to an app id def appid(id): - return ("'" + car(id), "'app.composite") + return ("'apps", "'" + car(id), "'app.composite") # Put an app into the apps db def put(id, app, cache): diff --git a/sca-cpp/trunk/modules/edit/config-backup b/sca-cpp/trunk/hosting/server/config-backup index 9951518863..5e09008fb0 100755 --- a/sca-cpp/trunk/modules/edit/config-backup +++ b/sca-cpp/trunk/hosting/server/config-backup @@ -18,5 +18,5 @@ # under the License. cd ../../ -tar czf ../config-backup.tar.gz modules/edit/*start modules/edit/*stop modules/edit/htdocs/*.js modules/edit/htdocs/public/*.js modules/edit/htdocs/home/*.b64 modules/edit/htdocs/home/*.png +tar czf ../config-backup.tar.gz hosting/server/*start hosting/server/*stop hosting/server/htdocs/*.js hosting/server/htdocs/public/*.js hosting/server/htdocs/home/*.b64 hosting/server/htdocs/home/*.png diff --git a/sca-cpp/trunk/modules/edit/dashboards.py b/sca-cpp/trunk/hosting/server/dashboards.py index f42106e0ec..22cf59f157 100644 --- a/sca-cpp/trunk/modules/edit/dashboards.py +++ b/sca-cpp/trunk/hosting/server/dashboards.py @@ -20,7 +20,7 @@ from util import * # Convert a particular user id to a dashboard id def dashboardid(user): - return ("'" + user.id(), "'user.apps") + return ("'dashboards", "'" + user.id(), "'user.apps") # Get a dashboard from the cache def getdashboard(id, cache): diff --git a/sca-cpp/trunk/modules/edit/data-backup b/sca-cpp/trunk/hosting/server/data-backup index 18cba8fbbe..f66e947f84 100755 --- a/sca-cpp/trunk/modules/edit/data-backup +++ b/sca-cpp/trunk/hosting/server/data-backup @@ -18,5 +18,5 @@ # under the License. cd ../../ -tar czf ../data-backup.tar.gz modules/edit/accounts modules/edit/apps modules/edit/dashboards modules/edit/store modules/edit/tmp/appdata +tar czf ../data-backup.tar.gz hosting/server/data diff --git a/sca-cpp/trunk/modules/edit/accounts/jane@localhost/user.account b/sca-cpp/trunk/hosting/server/data/accounts/jane@localhost/user.account index 5fca389f04..5fca389f04 100644 --- a/sca-cpp/trunk/modules/edit/accounts/jane@localhost/user.account +++ b/sca-cpp/trunk/hosting/server/data/accounts/jane@localhost/user.account diff --git a/sca-cpp/trunk/modules/edit/accounts/jane@sca-store.com/user.account b/sca-cpp/trunk/hosting/server/data/accounts/jane@sca-store.com/user.account index e0d25671b6..e0d25671b6 100644 --- a/sca-cpp/trunk/modules/edit/accounts/jane@sca-store.com/user.account +++ b/sca-cpp/trunk/hosting/server/data/accounts/jane@sca-store.com/user.account diff --git a/sca-cpp/trunk/modules/edit/accounts/john@localhost/user.account b/sca-cpp/trunk/hosting/server/data/accounts/john@localhost/user.account index 35d6f30f0b..35d6f30f0b 100644 --- a/sca-cpp/trunk/modules/edit/accounts/john@localhost/user.account +++ b/sca-cpp/trunk/hosting/server/data/accounts/john@localhost/user.account diff --git a/sca-cpp/trunk/modules/edit/accounts/john@sca-store.com/user.account b/sca-cpp/trunk/hosting/server/data/accounts/john@sca-store.com/user.account index 273335e1c7..273335e1c7 100644 --- a/sca-cpp/trunk/modules/edit/accounts/john@sca-store.com/user.account +++ b/sca-cpp/trunk/hosting/server/data/accounts/john@sca-store.com/user.account diff --git a/sca-cpp/trunk/modules/edit/apps/me360/app.composite b/sca-cpp/trunk/hosting/server/data/apps/me360/app.composite index c0fb6a425c..c0fb6a425c 100644 --- a/sca-cpp/trunk/modules/edit/apps/me360/app.composite +++ b/sca-cpp/trunk/hosting/server/data/apps/me360/app.composite diff --git a/sca-cpp/trunk/modules/edit/apps/me360/app.stats b/sca-cpp/trunk/hosting/server/data/apps/me360/app.stats index a46c727280..a46c727280 100644 --- a/sca-cpp/trunk/modules/edit/apps/me360/app.stats +++ b/sca-cpp/trunk/hosting/server/data/apps/me360/app.stats diff --git a/sca-cpp/trunk/modules/edit/apps/me360/htdocs/app.html b/sca-cpp/trunk/hosting/server/data/apps/me360/htdocs/app.html index e57e246328..e57e246328 100644 --- a/sca-cpp/trunk/modules/edit/apps/me360/htdocs/app.html +++ b/sca-cpp/trunk/hosting/server/data/apps/me360/htdocs/app.html diff --git a/sca-cpp/trunk/modules/edit/apps/nearme/app.composite b/sca-cpp/trunk/hosting/server/data/apps/nearme/app.composite index 51fc2791fb..51fc2791fb 100644 --- a/sca-cpp/trunk/modules/edit/apps/nearme/app.composite +++ b/sca-cpp/trunk/hosting/server/data/apps/nearme/app.composite diff --git a/sca-cpp/trunk/modules/edit/apps/nearme/app.stats b/sca-cpp/trunk/hosting/server/data/apps/nearme/app.stats index a072636788..a072636788 100644 --- a/sca-cpp/trunk/modules/edit/apps/nearme/app.stats +++ b/sca-cpp/trunk/hosting/server/data/apps/nearme/app.stats diff --git a/sca-cpp/trunk/modules/edit/apps/nearme/htdocs/app.html b/sca-cpp/trunk/hosting/server/data/apps/nearme/htdocs/app.html index fba4b0464c..fba4b0464c 100644 --- a/sca-cpp/trunk/modules/edit/apps/nearme/htdocs/app.html +++ b/sca-cpp/trunk/hosting/server/data/apps/nearme/htdocs/app.html diff --git a/sca-cpp/trunk/modules/edit/apps/nearme2/app.composite b/sca-cpp/trunk/hosting/server/data/apps/nearme2/app.composite index d75af57321..8038387e4a 100644 --- a/sca-cpp/trunk/modules/edit/apps/nearme2/app.composite +++ b/sca-cpp/trunk/hosting/server/data/apps/nearme2/app.composite @@ -36,19 +36,19 @@ <component x="120" y="10" name="filedb2" title="file" color="pink1"> <implementation.python script="nuvem/filedb.py"/> <service name="filedb"/> - <reference name="db" target="AppDataFileCache" visible="false"/> + <reference name="db" target="Cache" visible="false"/> <property name="host" visible="false"/> </component> <component x="410" y="260" name="filedb4" title="file" color="pink1"> <implementation.python script="nuvem/filedb.py"/> <service name="filedb"/> - <reference name="db" target="AppDataFileCache" visible="false"/> + <reference name="db" target="Cache" visible="false"/> <property name="host" visible="false"/> </component> <component x="400" y="370" name="filedb5" title="file" color="pink1"> <implementation.python script="nuvem/filedb.py"/> <service name="filedb"/> - <reference name="db" target="AppDataFileCache" visible="false"/> + <reference name="db" target="Cache" visible="false"/> <property name="host" visible="false"/> </component> <component x="270" y="260" name="get3" title="get" color="pink1"> diff --git a/sca-cpp/trunk/modules/edit/apps/nearme2/app.stats b/sca-cpp/trunk/hosting/server/data/apps/nearme2/app.stats index 9eb239d22c..9eb239d22c 100644 --- a/sca-cpp/trunk/modules/edit/apps/nearme2/app.stats +++ b/sca-cpp/trunk/hosting/server/data/apps/nearme2/app.stats diff --git a/sca-cpp/trunk/modules/edit/apps/nearme2/htdocs/app.html b/sca-cpp/trunk/hosting/server/data/apps/nearme2/htdocs/app.html index a4c407a7a4..a4c407a7a4 100644 --- a/sca-cpp/trunk/modules/edit/apps/nearme2/htdocs/app.html +++ b/sca-cpp/trunk/hosting/server/data/apps/nearme2/htdocs/app.html diff --git a/sca-cpp/trunk/modules/edit/apps/new/app.composite b/sca-cpp/trunk/hosting/server/data/apps/new/app.composite index 4beacfdf77..4beacfdf77 100644 --- a/sca-cpp/trunk/modules/edit/apps/new/app.composite +++ b/sca-cpp/trunk/hosting/server/data/apps/new/app.composite diff --git a/sca-cpp/trunk/modules/edit/apps/new/app.stats b/sca-cpp/trunk/hosting/server/data/apps/new/app.stats index 513c902468..513c902468 100644 --- a/sca-cpp/trunk/modules/edit/apps/new/app.stats +++ b/sca-cpp/trunk/hosting/server/data/apps/new/app.stats diff --git a/sca-cpp/trunk/modules/edit/apps/new/htdocs/app.html b/sca-cpp/trunk/hosting/server/data/apps/new/htdocs/app.html index eeb7becae5..eeb7becae5 100644 --- a/sca-cpp/trunk/modules/edit/apps/new/htdocs/app.html +++ b/sca-cpp/trunk/hosting/server/data/apps/new/htdocs/app.html diff --git a/sca-cpp/trunk/modules/edit/apps/ourphotos/app.composite b/sca-cpp/trunk/hosting/server/data/apps/ourphotos/app.composite index 2a7ce11f1f..2a7ce11f1f 100644 --- a/sca-cpp/trunk/modules/edit/apps/ourphotos/app.composite +++ b/sca-cpp/trunk/hosting/server/data/apps/ourphotos/app.composite diff --git a/sca-cpp/trunk/modules/edit/apps/ourphotos/app.stats b/sca-cpp/trunk/hosting/server/data/apps/ourphotos/app.stats index e685d930dd..e685d930dd 100644 --- a/sca-cpp/trunk/modules/edit/apps/ourphotos/app.stats +++ b/sca-cpp/trunk/hosting/server/data/apps/ourphotos/app.stats diff --git a/sca-cpp/trunk/modules/edit/apps/ourphotos/htdocs/app.html b/sca-cpp/trunk/hosting/server/data/apps/ourphotos/htdocs/app.html index 1ddb89fa30..1ddb89fa30 100644 --- a/sca-cpp/trunk/modules/edit/apps/ourphotos/htdocs/app.html +++ b/sca-cpp/trunk/hosting/server/data/apps/ourphotos/htdocs/app.html diff --git a/sca-cpp/trunk/modules/edit/apps/shoppingcart/app.composite b/sca-cpp/trunk/hosting/server/data/apps/shoppingcart/app.composite index 15da95cdcc..230004315d 100644 --- a/sca-cpp/trunk/modules/edit/apps/shoppingcart/app.composite +++ b/sca-cpp/trunk/hosting/server/data/apps/shoppingcart/app.composite @@ -169,19 +169,19 @@ <component name="filedb" title="file" color="pink1"> <implementation.python script="nuvem/filedb.py"/> <service name="filedb"/> - <reference name="db" target="AppDataFileCache" visible="false"/> + <reference name="db" target="Cache" visible="false"/> <property name="host" visible="false"/> </component> <component name="filedb2" title="file" color="pink1"> <implementation.python script="nuvem/filedb.py"/> <service name="filedb"/> - <reference name="db" target="AppDataFileCache" visible="false"/> + <reference name="db" target="Cache" visible="false"/> <property name="host" visible="false"/> </component> <component name="filedb3" title="file" color="pink1"> <implementation.python script="nuvem/filedb.py"/> <service name="filedb"/> - <reference name="db" target="AppDataFileCache" visible="false"/> + <reference name="db" target="Cache" visible="false"/> <property name="host" visible="false"/> </component> <component x="130" y="420" name="format1" title="format" color="cyan1"> diff --git a/sca-cpp/trunk/modules/edit/apps/shoppingcart/app.stats b/sca-cpp/trunk/hosting/server/data/apps/shoppingcart/app.stats index 4529005b54..4529005b54 100644 --- a/sca-cpp/trunk/modules/edit/apps/shoppingcart/app.stats +++ b/sca-cpp/trunk/hosting/server/data/apps/shoppingcart/app.stats diff --git a/sca-cpp/trunk/modules/edit/apps/shoppingcart/htdocs/app.html b/sca-cpp/trunk/hosting/server/data/apps/shoppingcart/htdocs/app.html index 0464f3e4c4..0464f3e4c4 100644 --- a/sca-cpp/trunk/modules/edit/apps/shoppingcart/htdocs/app.html +++ b/sca-cpp/trunk/hosting/server/data/apps/shoppingcart/htdocs/app.html diff --git a/sca-cpp/trunk/modules/edit/apps/slice/app.composite b/sca-cpp/trunk/hosting/server/data/apps/slice/app.composite index 9680b52008..714629767b 100644 --- a/sca-cpp/trunk/modules/edit/apps/slice/app.composite +++ b/sca-cpp/trunk/hosting/server/data/apps/slice/app.composite @@ -85,25 +85,25 @@ <component x="240" y="100" name="filedb1" title="file" color="pink1"> <implementation.python script="nuvem/filedb.py"/> <service name="filedb"/> - <reference name="db" target="AppDataFileCache" visible="false"/> + <reference name="db" target="Cache" visible="false"/> <property name="host" visible="false"/> </component> <component x="270" y="150" name="filedb2" title="file" color="pink1"> <implementation.python script="nuvem/filedb.py"/> <service name="filedb"/> - <reference name="db" target="AppDataFileCache" visible="false"/> + <reference name="db" target="Cache" visible="false"/> <property name="host" visible="false"/> </component> <component x="890" y="350" name="filedb3" title="file" color="pink1"> <implementation.python script="nuvem/filedb.py"/> <service name="filedb"/> - <reference name="db" target="AppDataFileCache" visible="false"/> + <reference name="db" target="Cache" visible="false"/> <property name="host" visible="false"/> </component> <component x="1100" y="190" name="filedb4" title="file" color="pink1"> <implementation.python script="nuvem/filedb.py"/> <service name="filedb"/> - <reference name="db" target="AppDataFileCache" visible="false"/> + <reference name="db" target="Cache" visible="false"/> <property name="host" visible="false"/> </component> <component x="710" y="160" name="frames1" title="frames" color="white1"> diff --git a/sca-cpp/trunk/modules/edit/apps/slice/app.stats b/sca-cpp/trunk/hosting/server/data/apps/slice/app.stats index c7d1996716..c7d1996716 100644 --- a/sca-cpp/trunk/modules/edit/apps/slice/app.stats +++ b/sca-cpp/trunk/hosting/server/data/apps/slice/app.stats diff --git a/sca-cpp/trunk/modules/edit/apps/slice/htdocs/app.html b/sca-cpp/trunk/hosting/server/data/apps/slice/htdocs/app.html index b4bc5908f6..b4bc5908f6 100644 --- a/sca-cpp/trunk/modules/edit/apps/slice/htdocs/app.html +++ b/sca-cpp/trunk/hosting/server/data/apps/slice/htdocs/app.html diff --git a/sca-cpp/trunk/modules/edit/apps/test/app.composite b/sca-cpp/trunk/hosting/server/data/apps/test/app.composite index 83a9c51e80..8fd7505562 100644 --- a/sca-cpp/trunk/modules/edit/apps/test/app.composite +++ b/sca-cpp/trunk/hosting/server/data/apps/test/app.composite @@ -1,22 +1,4 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. ---> <composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" name="app" targetNamespace="http://app"> <service name="comment1" promote="comment1"/> <service name="start1" promote="start1"/> diff --git a/sca-cpp/trunk/modules/edit/apps/test/app.stats b/sca-cpp/trunk/hosting/server/data/apps/test/app.stats index 9adad8c1a6..9adad8c1a6 100644 --- a/sca-cpp/trunk/modules/edit/apps/test/app.stats +++ b/sca-cpp/trunk/hosting/server/data/apps/test/app.stats diff --git a/sca-cpp/trunk/modules/edit/apps/test/htdocs/app.html b/sca-cpp/trunk/hosting/server/data/apps/test/htdocs/app.html index d33d4d6da7..d33d4d6da7 100644 --- a/sca-cpp/trunk/modules/edit/apps/test/htdocs/app.html +++ b/sca-cpp/trunk/hosting/server/data/apps/test/htdocs/app.html diff --git a/sca-cpp/trunk/modules/edit/apps/testanimation/app.composite b/sca-cpp/trunk/hosting/server/data/apps/testanimation/app.composite index 5c8ebd59f3..5c8ebd59f3 100644 --- a/sca-cpp/trunk/modules/edit/apps/testanimation/app.composite +++ b/sca-cpp/trunk/hosting/server/data/apps/testanimation/app.composite diff --git a/sca-cpp/trunk/modules/edit/apps/testanimation/app.stats b/sca-cpp/trunk/hosting/server/data/apps/testanimation/app.stats index 493ef39d1a..493ef39d1a 100644 --- a/sca-cpp/trunk/modules/edit/apps/testanimation/app.stats +++ b/sca-cpp/trunk/hosting/server/data/apps/testanimation/app.stats diff --git a/sca-cpp/trunk/modules/edit/apps/testanimation/htdocs/app.html b/sca-cpp/trunk/hosting/server/data/apps/testanimation/htdocs/app.html index c9f9420eb0..c9f9420eb0 100644 --- a/sca-cpp/trunk/modules/edit/apps/testanimation/htdocs/app.html +++ b/sca-cpp/trunk/hosting/server/data/apps/testanimation/htdocs/app.html diff --git a/sca-cpp/trunk/modules/edit/apps/testdb/app.composite b/sca-cpp/trunk/hosting/server/data/apps/testdb/app.composite index 51535b124c..32a023f8a7 100644 --- a/sca-cpp/trunk/modules/edit/apps/testdb/app.composite +++ b/sca-cpp/trunk/hosting/server/data/apps/testdb/app.composite @@ -30,19 +30,19 @@ <component name="filedb" title="file" color="pink1"> <implementation.python script="nuvem/filedb.py"/> <service name="filedb"/> - <reference name="db" target="AppDataFileCache" visible="false"/> + <reference name="db" target="Cache" visible="false"/> <property name="host" visible="false"/> </component> <component name="filedb2" title="file" color="pink1"> <implementation.python script="nuvem/filedb.py"/> <service name="filedb"/> - <reference name="db" target="AppDataFileCache" visible="false"/> + <reference name="db" target="Cache" visible="false"/> <property name="host" visible="false"/> </component> <component name="filedb3" title="file" color="pink1"> <implementation.python script="nuvem/filedb.py"/> <service name="filedb"/> - <reference name="db" target="AppDataFileCache" visible="false"/> + <reference name="db" target="Cache" visible="false"/> <property name="host" visible="false"/> </component> <component x="20" y="120" name="get" title="get" color="pink1"> diff --git a/sca-cpp/trunk/modules/edit/apps/testdb/app.stats b/sca-cpp/trunk/hosting/server/data/apps/testdb/app.stats index 1128933dfd..1128933dfd 100644 --- a/sca-cpp/trunk/modules/edit/apps/testdb/app.stats +++ b/sca-cpp/trunk/hosting/server/data/apps/testdb/app.stats diff --git a/sca-cpp/trunk/modules/edit/apps/testdb/htdocs/app.html b/sca-cpp/trunk/hosting/server/data/apps/testdb/htdocs/app.html index 856966ff50..856966ff50 100644 --- a/sca-cpp/trunk/modules/edit/apps/testdb/htdocs/app.html +++ b/sca-cpp/trunk/hosting/server/data/apps/testdb/htdocs/app.html diff --git a/sca-cpp/trunk/modules/edit/apps/testevents/app.composite b/sca-cpp/trunk/hosting/server/data/apps/testevents/app.composite index 61cd17ec81..61cd17ec81 100644 --- a/sca-cpp/trunk/modules/edit/apps/testevents/app.composite +++ b/sca-cpp/trunk/hosting/server/data/apps/testevents/app.composite diff --git a/sca-cpp/trunk/modules/edit/apps/testevents/app.stats b/sca-cpp/trunk/hosting/server/data/apps/testevents/app.stats index 51d6a0388e..51d6a0388e 100644 --- a/sca-cpp/trunk/modules/edit/apps/testevents/app.stats +++ b/sca-cpp/trunk/hosting/server/data/apps/testevents/app.stats diff --git a/sca-cpp/trunk/modules/edit/apps/testevents/htdocs/app.html b/sca-cpp/trunk/hosting/server/data/apps/testevents/htdocs/app.html index 6698c6faa8..6698c6faa8 100644 --- a/sca-cpp/trunk/modules/edit/apps/testevents/htdocs/app.html +++ b/sca-cpp/trunk/hosting/server/data/apps/testevents/htdocs/app.html diff --git a/sca-cpp/trunk/modules/edit/apps/testhttp/app.composite b/sca-cpp/trunk/hosting/server/data/apps/testhttp/app.composite index 6aabf6d4bb..6aabf6d4bb 100644 --- a/sca-cpp/trunk/modules/edit/apps/testhttp/app.composite +++ b/sca-cpp/trunk/hosting/server/data/apps/testhttp/app.composite diff --git a/sca-cpp/trunk/modules/edit/apps/testhttp/app.stats b/sca-cpp/trunk/hosting/server/data/apps/testhttp/app.stats index be1fc6d254..be1fc6d254 100644 --- a/sca-cpp/trunk/modules/edit/apps/testhttp/app.stats +++ b/sca-cpp/trunk/hosting/server/data/apps/testhttp/app.stats diff --git a/sca-cpp/trunk/modules/edit/apps/testhttp/htdocs/app.html b/sca-cpp/trunk/hosting/server/data/apps/testhttp/htdocs/app.html index b0c20ef5e6..b0c20ef5e6 100644 --- a/sca-cpp/trunk/modules/edit/apps/testhttp/htdocs/app.html +++ b/sca-cpp/trunk/hosting/server/data/apps/testhttp/htdocs/app.html diff --git a/sca-cpp/trunk/modules/edit/apps/testlogic/app.composite b/sca-cpp/trunk/hosting/server/data/apps/testlogic/app.composite index 659fcbacba..659fcbacba 100644 --- a/sca-cpp/trunk/modules/edit/apps/testlogic/app.composite +++ b/sca-cpp/trunk/hosting/server/data/apps/testlogic/app.composite diff --git a/sca-cpp/trunk/modules/edit/apps/testlogic/app.stats b/sca-cpp/trunk/hosting/server/data/apps/testlogic/app.stats index e557346327..e557346327 100644 --- a/sca-cpp/trunk/modules/edit/apps/testlogic/app.stats +++ b/sca-cpp/trunk/hosting/server/data/apps/testlogic/app.stats diff --git a/sca-cpp/trunk/modules/edit/apps/testlogic/htdocs/app.html b/sca-cpp/trunk/hosting/server/data/apps/testlogic/htdocs/app.html index 4e9efdaa22..4e9efdaa22 100644 --- a/sca-cpp/trunk/modules/edit/apps/testlogic/htdocs/app.html +++ b/sca-cpp/trunk/hosting/server/data/apps/testlogic/htdocs/app.html diff --git a/sca-cpp/trunk/modules/edit/apps/testsearch/app.composite b/sca-cpp/trunk/hosting/server/data/apps/testsearch/app.composite index 493e9a253a..493e9a253a 100644 --- a/sca-cpp/trunk/modules/edit/apps/testsearch/app.composite +++ b/sca-cpp/trunk/hosting/server/data/apps/testsearch/app.composite diff --git a/sca-cpp/trunk/modules/edit/apps/testsearch/app.stats b/sca-cpp/trunk/hosting/server/data/apps/testsearch/app.stats index 691c43875d..691c43875d 100644 --- a/sca-cpp/trunk/modules/edit/apps/testsearch/app.stats +++ b/sca-cpp/trunk/hosting/server/data/apps/testsearch/app.stats diff --git a/sca-cpp/trunk/modules/edit/apps/testsearch/htdocs/app.html b/sca-cpp/trunk/hosting/server/data/apps/testsearch/htdocs/app.html index ca5462f07a..ca5462f07a 100644 --- a/sca-cpp/trunk/modules/edit/apps/testsearch/htdocs/app.html +++ b/sca-cpp/trunk/hosting/server/data/apps/testsearch/htdocs/app.html diff --git a/sca-cpp/trunk/modules/edit/apps/testsms/app.composite b/sca-cpp/trunk/hosting/server/data/apps/testsms/app.composite index d2abbaae28..d2abbaae28 100644 --- a/sca-cpp/trunk/modules/edit/apps/testsms/app.composite +++ b/sca-cpp/trunk/hosting/server/data/apps/testsms/app.composite diff --git a/sca-cpp/trunk/modules/edit/apps/testsms/app.stats b/sca-cpp/trunk/hosting/server/data/apps/testsms/app.stats index be1fc6d254..be1fc6d254 100644 --- a/sca-cpp/trunk/modules/edit/apps/testsms/app.stats +++ b/sca-cpp/trunk/hosting/server/data/apps/testsms/app.stats diff --git a/sca-cpp/trunk/modules/edit/apps/testsms/htdocs/app.html b/sca-cpp/trunk/hosting/server/data/apps/testsms/htdocs/app.html index dd8f5f9f26..dd8f5f9f26 100644 --- a/sca-cpp/trunk/modules/edit/apps/testsms/htdocs/app.html +++ b/sca-cpp/trunk/hosting/server/data/apps/testsms/htdocs/app.html diff --git a/sca-cpp/trunk/modules/edit/apps/testsocial/app.composite b/sca-cpp/trunk/hosting/server/data/apps/testsocial/app.composite index 28ec9654d8..28ec9654d8 100644 --- a/sca-cpp/trunk/modules/edit/apps/testsocial/app.composite +++ b/sca-cpp/trunk/hosting/server/data/apps/testsocial/app.composite diff --git a/sca-cpp/trunk/modules/edit/apps/testsocial/app.stats b/sca-cpp/trunk/hosting/server/data/apps/testsocial/app.stats index fa487f4d81..fa487f4d81 100644 --- a/sca-cpp/trunk/modules/edit/apps/testsocial/app.stats +++ b/sca-cpp/trunk/hosting/server/data/apps/testsocial/app.stats diff --git a/sca-cpp/trunk/modules/edit/apps/testsocial/htdocs/app.html b/sca-cpp/trunk/hosting/server/data/apps/testsocial/htdocs/app.html index 5fe616ca16..5fe616ca16 100644 --- a/sca-cpp/trunk/modules/edit/apps/testsocial/htdocs/app.html +++ b/sca-cpp/trunk/hosting/server/data/apps/testsocial/htdocs/app.html diff --git a/sca-cpp/trunk/modules/edit/apps/testtext/app.composite b/sca-cpp/trunk/hosting/server/data/apps/testtext/app.composite index 7021ddb2e9..7021ddb2e9 100644 --- a/sca-cpp/trunk/modules/edit/apps/testtext/app.composite +++ b/sca-cpp/trunk/hosting/server/data/apps/testtext/app.composite diff --git a/sca-cpp/trunk/modules/edit/apps/testtext/app.stats b/sca-cpp/trunk/hosting/server/data/apps/testtext/app.stats index 35e43ff383..35e43ff383 100644 --- a/sca-cpp/trunk/modules/edit/apps/testtext/app.stats +++ b/sca-cpp/trunk/hosting/server/data/apps/testtext/app.stats diff --git a/sca-cpp/trunk/modules/edit/apps/testtext/htdocs/app.html b/sca-cpp/trunk/hosting/server/data/apps/testtext/htdocs/app.html index 1c7612d0e0..1c7612d0e0 100644 --- a/sca-cpp/trunk/modules/edit/apps/testtext/htdocs/app.html +++ b/sca-cpp/trunk/hosting/server/data/apps/testtext/htdocs/app.html diff --git a/sca-cpp/trunk/modules/edit/apps/testurl/app.composite b/sca-cpp/trunk/hosting/server/data/apps/testurl/app.composite index f42ba5fa4b..7b97b7a957 100644 --- a/sca-cpp/trunk/modules/edit/apps/testurl/app.composite +++ b/sca-cpp/trunk/hosting/server/data/apps/testurl/app.composite @@ -1,23 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. ---> <composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" name="app" targetNamespace="http://app"> + <service name="app1" promote="app1"/> <service name="email" promote="email"/> <service name="host" promote="host"/> <service name="keychain1" promote="keychain1"/> @@ -27,6 +10,11 @@ <service name="realm" promote="realm"/> <service name="url" promote="url"/> <service name="user" promote="user"/> + <component x="260" y="100" name="app1" title="app" color="green1"> + <implementation.python script="nuvem/app.py"/> + <service name="app"/> + <property name="app" visible="false"/> + </component> <component x="17" y="223" name="email" title="email" color="green1"> <implementation.python script="nuvem/email.py"/> <service name="email"/> @@ -92,7 +80,7 @@ <service name="params"/> <property name="params"/> </component> - <component x="17" y="48" name="path" title="path" color="green1"> + <component x="20" y="50" name="path" title="path" color="green1"> <implementation.python script="nuvem/path.py"/> <service name="path"/> <property name="path"/> diff --git a/sca-cpp/trunk/modules/edit/apps/testurl/app.stats b/sca-cpp/trunk/hosting/server/data/apps/testurl/app.stats index b4142f40cf..b4142f40cf 100644 --- a/sca-cpp/trunk/modules/edit/apps/testurl/app.stats +++ b/sca-cpp/trunk/hosting/server/data/apps/testurl/app.stats diff --git a/sca-cpp/trunk/modules/edit/apps/testurl/htdocs/app.html b/sca-cpp/trunk/hosting/server/data/apps/testurl/htdocs/app.html index 8c47186044..8c47186044 100644 --- a/sca-cpp/trunk/modules/edit/apps/testurl/htdocs/app.html +++ b/sca-cpp/trunk/hosting/server/data/apps/testurl/htdocs/app.html diff --git a/sca-cpp/trunk/modules/edit/apps/testvalues/app.composite b/sca-cpp/trunk/hosting/server/data/apps/testvalues/app.composite index 4ee8a0a619..4ee8a0a619 100644 --- a/sca-cpp/trunk/modules/edit/apps/testvalues/app.composite +++ b/sca-cpp/trunk/hosting/server/data/apps/testvalues/app.composite diff --git a/sca-cpp/trunk/modules/edit/apps/testvalues/app.stats b/sca-cpp/trunk/hosting/server/data/apps/testvalues/app.stats index 4b7a09cd38..4b7a09cd38 100644 --- a/sca-cpp/trunk/modules/edit/apps/testvalues/app.stats +++ b/sca-cpp/trunk/hosting/server/data/apps/testvalues/app.stats diff --git a/sca-cpp/trunk/modules/edit/apps/testvalues/htdocs/app.html b/sca-cpp/trunk/hosting/server/data/apps/testvalues/htdocs/app.html index 79bb081a97..79bb081a97 100644 --- a/sca-cpp/trunk/modules/edit/apps/testvalues/htdocs/app.html +++ b/sca-cpp/trunk/hosting/server/data/apps/testvalues/htdocs/app.html diff --git a/sca-cpp/trunk/modules/edit/apps/testwidgets/app.composite b/sca-cpp/trunk/hosting/server/data/apps/testwidgets/app.composite index 1cb1aee017..1cb1aee017 100644 --- a/sca-cpp/trunk/modules/edit/apps/testwidgets/app.composite +++ b/sca-cpp/trunk/hosting/server/data/apps/testwidgets/app.composite diff --git a/sca-cpp/trunk/modules/edit/apps/testwidgets/app.stats b/sca-cpp/trunk/hosting/server/data/apps/testwidgets/app.stats index 6a66748ab1..6a66748ab1 100644 --- a/sca-cpp/trunk/modules/edit/apps/testwidgets/app.stats +++ b/sca-cpp/trunk/hosting/server/data/apps/testwidgets/app.stats diff --git a/sca-cpp/trunk/modules/edit/apps/testwidgets/htdocs/app.html b/sca-cpp/trunk/hosting/server/data/apps/testwidgets/htdocs/app.html index d1422c10ac..d1422c10ac 100644 --- a/sca-cpp/trunk/modules/edit/apps/testwidgets/htdocs/app.html +++ b/sca-cpp/trunk/hosting/server/data/apps/testwidgets/htdocs/app.html diff --git a/sca-cpp/trunk/modules/edit/apps/testwidgets2/app.composite b/sca-cpp/trunk/hosting/server/data/apps/testwidgets2/app.composite index f387e876ed..f387e876ed 100644 --- a/sca-cpp/trunk/modules/edit/apps/testwidgets2/app.composite +++ b/sca-cpp/trunk/hosting/server/data/apps/testwidgets2/app.composite diff --git a/sca-cpp/trunk/modules/edit/apps/testwidgets2/app.stats b/sca-cpp/trunk/hosting/server/data/apps/testwidgets2/app.stats index 18f0cb50f8..18f0cb50f8 100644 --- a/sca-cpp/trunk/modules/edit/apps/testwidgets2/app.stats +++ b/sca-cpp/trunk/hosting/server/data/apps/testwidgets2/app.stats diff --git a/sca-cpp/trunk/modules/edit/apps/testwidgets2/htdocs/app.html b/sca-cpp/trunk/hosting/server/data/apps/testwidgets2/htdocs/app.html index 7efb62d247..7efb62d247 100644 --- a/sca-cpp/trunk/modules/edit/apps/testwidgets2/htdocs/app.html +++ b/sca-cpp/trunk/hosting/server/data/apps/testwidgets2/htdocs/app.html diff --git a/sca-cpp/trunk/modules/edit/apps/testwidgets3/app.composite b/sca-cpp/trunk/hosting/server/data/apps/testwidgets3/app.composite index e367b69a9c..e367b69a9c 100644 --- a/sca-cpp/trunk/modules/edit/apps/testwidgets3/app.composite +++ b/sca-cpp/trunk/hosting/server/data/apps/testwidgets3/app.composite diff --git a/sca-cpp/trunk/modules/edit/apps/testwidgets3/app.stats b/sca-cpp/trunk/hosting/server/data/apps/testwidgets3/app.stats index 2e772401c9..2e772401c9 100644 --- a/sca-cpp/trunk/modules/edit/apps/testwidgets3/app.stats +++ b/sca-cpp/trunk/hosting/server/data/apps/testwidgets3/app.stats diff --git a/sca-cpp/trunk/modules/edit/apps/testwidgets3/htdocs/app.html b/sca-cpp/trunk/hosting/server/data/apps/testwidgets3/htdocs/app.html index 393d63c2d1..393d63c2d1 100644 --- a/sca-cpp/trunk/modules/edit/apps/testwidgets3/htdocs/app.html +++ b/sca-cpp/trunk/hosting/server/data/apps/testwidgets3/htdocs/app.html diff --git a/sca-cpp/trunk/modules/edit/apps/twsms/app.composite b/sca-cpp/trunk/hosting/server/data/apps/twsms/app.composite index 66523f4754..66523f4754 100644 --- a/sca-cpp/trunk/modules/edit/apps/twsms/app.composite +++ b/sca-cpp/trunk/hosting/server/data/apps/twsms/app.composite diff --git a/sca-cpp/trunk/modules/edit/apps/twsms/app.stats b/sca-cpp/trunk/hosting/server/data/apps/twsms/app.stats index 85c97c2457..85c97c2457 100644 --- a/sca-cpp/trunk/modules/edit/apps/twsms/app.stats +++ b/sca-cpp/trunk/hosting/server/data/apps/twsms/app.stats diff --git a/sca-cpp/trunk/modules/edit/apps/twsms/htdocs/app.html b/sca-cpp/trunk/hosting/server/data/apps/twsms/htdocs/app.html index d2eaebcdd0..d2eaebcdd0 100644 --- a/sca-cpp/trunk/modules/edit/apps/twsms/htdocs/app.html +++ b/sca-cpp/trunk/hosting/server/data/apps/twsms/htdocs/app.html diff --git a/sca-cpp/trunk/modules/edit/dashboards/jane@localhost/user.apps b/sca-cpp/trunk/hosting/server/data/dashboards/jane@localhost/user.apps index 710de5f62e..710de5f62e 100644 --- a/sca-cpp/trunk/modules/edit/dashboards/jane@localhost/user.apps +++ b/sca-cpp/trunk/hosting/server/data/dashboards/jane@localhost/user.apps diff --git a/sca-cpp/trunk/modules/edit/dashboards/jane@sca-store.com/user.apps b/sca-cpp/trunk/hosting/server/data/dashboards/jane@sca-store.com/user.apps index 710de5f62e..710de5f62e 100644 --- a/sca-cpp/trunk/modules/edit/dashboards/jane@sca-store.com/user.apps +++ b/sca-cpp/trunk/hosting/server/data/dashboards/jane@sca-store.com/user.apps diff --git a/sca-cpp/trunk/modules/edit/dashboards/john@localhost/user.apps b/sca-cpp/trunk/hosting/server/data/dashboards/john@localhost/user.apps index 710de5f62e..710de5f62e 100644 --- a/sca-cpp/trunk/modules/edit/dashboards/john@localhost/user.apps +++ b/sca-cpp/trunk/hosting/server/data/dashboards/john@localhost/user.apps diff --git a/sca-cpp/trunk/modules/edit/dashboards/john@sca-store.com/user.apps b/sca-cpp/trunk/hosting/server/data/dashboards/john@sca-store.com/user.apps index 710de5f62e..710de5f62e 100644 --- a/sca-cpp/trunk/modules/edit/dashboards/john@sca-store.com/user.apps +++ b/sca-cpp/trunk/hosting/server/data/dashboards/john@sca-store.com/user.apps diff --git a/sca-cpp/trunk/modules/edit/palettes/animation/palette.composite b/sca-cpp/trunk/hosting/server/data/palettes/animation/palette.composite index 75cbf497b6..75cbf497b6 100644 --- a/sca-cpp/trunk/modules/edit/palettes/animation/palette.composite +++ b/sca-cpp/trunk/hosting/server/data/palettes/animation/palette.composite diff --git a/sca-cpp/trunk/modules/edit/palettes/control/palette.composite b/sca-cpp/trunk/hosting/server/data/palettes/control/palette.composite index f89cae2c5d..f89cae2c5d 100644 --- a/sca-cpp/trunk/modules/edit/palettes/control/palette.composite +++ b/sca-cpp/trunk/hosting/server/data/palettes/control/palette.composite diff --git a/sca-cpp/trunk/modules/edit/palettes/database/palette.composite b/sca-cpp/trunk/hosting/server/data/palettes/database/palette.composite index cca0b174b8..926fb3fa14 100644 --- a/sca-cpp/trunk/modules/edit/palettes/database/palette.composite +++ b/sca-cpp/trunk/hosting/server/data/palettes/database/palette.composite @@ -34,7 +34,7 @@ <component x="80" y="10" name="filedb" title="file" color="pink1"> <implementation.python script="nuvem/filedb.py"/> <service name="filedb"/> - <reference name="db" target="AppDataFileCache" visible="false"/> + <reference name="db" target="Cache" visible="false"/> <property name="host" visible="false"/> </component> <component x="80" y="60" name="get" title="get" color="pink1"> @@ -46,7 +46,7 @@ <component x="140" y="10" name="nosqldb" title="index **" color="pink1"> <implementation.python script="nuvem/nosqldb.py"/> <service name="nosqldb"/> - <reference name="db" target="AppDataNoSQLCache" visible="false"/> + <reference name="db" target="Cache" visible="false"/> <property name="host" visible="false"/> </component> <component x="200" y="60" name="post" title="post" color="pink1"> @@ -66,7 +66,7 @@ <component x="210" y="10" name="sqldb" title="sql **" color="pink1"> <implementation.python script="nuvem/sqldb.py"/> <service name="sqldb"/> - <reference name="db" target="AppDataSQLCache" visible="false"/> + <reference name="db" target="Cache" visible="false"/> <property name="host" visible="false"/> </component> </composite> diff --git a/sca-cpp/trunk/modules/edit/palettes/http/palette.composite b/sca-cpp/trunk/hosting/server/data/palettes/http/palette.composite index 6c8cbaa553..13f92e8954 100644 --- a/sca-cpp/trunk/modules/edit/palettes/http/palette.composite +++ b/sca-cpp/trunk/hosting/server/data/palettes/http/palette.composite @@ -18,6 +18,7 @@ * under the License. --> <composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" name="palette" targetNamespace="http://palette"> + <service name="app" promote="app"/> <service name="delete" promote="delete"/> <service name="email" promote="email"/> <service name="get" promote="get"/> @@ -31,73 +32,78 @@ <service name="put" promote="put"/> <service name="url" promote="url"/> <service name="user" promote="user"/> - <component x="80" y="170" name="delete" title="delete" color="green1"> + <component x="80" y="10" name="app" title="app" color="green1"> + <implementation.python script="nuvem/app.py"/> + <service name="app"/> + <property name="app" visible="false"/> + </component> + <component x="80" y="220" name="delete" title="delete" color="green1"> <implementation.cpp path="lib/http" library="libhttpdelete"/> <service name="delete"/> <reference name="url"/> </component> - <component x="130" y="60" name="email" title="email" color="green1"> + <component x="140" y="110" name="email" title="email" color="green1"> <implementation.python script="nuvem/email.py"/> <service name="email"/> <property name="email" visible="false"/> </component> - <component x="80" y="120" name="get" title="get" color="green1"> + <component x="80" y="170" name="get" title="get" color="green1"> <implementation.cpp path="lib/http" library="libhttpget"/> <service name="get"/> <reference name="url"/> </component> - <component x="80" y="10" name="host" title="host" color="green1"> + <component x="130" y="10" name="host" title="host" color="green1"> <implementation.python script="nuvem/host.py"/> <service name="host"/> <property name="host" visible="false"/> </component> - <component x="190" y="60" name="keychain" title="keychain" color="green1"> + <component x="210" y="110" name="keychain" title="keychain" color="green1"> <implementation.python script="nuvem/keychain.py"/> <service name="keychain"/> <reference name="name"/> <reference name="account" target="Accounts" visible="false"/> </component> - <component x="250" y="10" name="param" title="?param" color="green1"> + <component x="150" y="60" name="param" title="?param" color="green1"> <implementation.python script="nuvem/param.py"/> <service name="param"/> <property>x</property> <property name="query" visible="false"/> </component> - <component x="180" y="10" name="params" title="?params" color="green1"> + <component x="80" y="60" name="params" title="?params" color="green1"> <implementation.python script="nuvem/params.py"/> <service name="params"/> <property name="query" visible="false"/> </component> - <component x="260" y="120" name="patch" title="patch" color="green1"> + <component x="260" y="170" name="patch" title="patch" color="green1"> <implementation.cpp path="lib/http" library="libhttppatch"/> <service name="patch"/> <reference name="url"/> <reference name="content"/> </component> - <component x="130" y="10" name="path" title="path" color="green1"> + <component x="190" y="10" name="path" title="path" color="green1"> <implementation.python script="nuvem/path.py"/> <service name="path"/> <property name="path" visible="false"/> </component> - <component x="200" y="120" name="post" title="post" color="green1"> + <component x="200" y="170" name="post" title="post" color="green1"> <implementation.cpp path="lib/http" library="libhttppost"/> <service name="post"/> <reference name="url"/> <reference name="content"/> </component> - <component x="140" y="120" name="put" title="put" color="green1"> + <component x="140" y="170" name="put" title="put" color="green1"> <implementation.cpp path="lib/http" library="libhttpput"/> <service name="put"/> <reference name="url"/> <reference name="content"/> </component> - <component x="270" y="60" name="url" title="url" color="green1"> + <component x="250" y="10" name="url" title="url" color="green1"> <implementation.python script="nuvem/url.py"/> <service name="url"/> <reference name="address"/> <reference name="args"/> </component> - <component x="80" y="60" name="user" title="user" color="green1"> + <component x="80" y="110" name="user" title="user" color="green1"> <implementation.python script="nuvem/user.py"/> <service name="user"/> <property name="user" visible="false"/> diff --git a/sca-cpp/trunk/modules/edit/palettes/lists/palette.composite b/sca-cpp/trunk/hosting/server/data/palettes/lists/palette.composite index 2f4051d7b9..2f4051d7b9 100644 --- a/sca-cpp/trunk/modules/edit/palettes/lists/palette.composite +++ b/sca-cpp/trunk/hosting/server/data/palettes/lists/palette.composite diff --git a/sca-cpp/trunk/modules/edit/palettes/logic/palette.composite b/sca-cpp/trunk/hosting/server/data/palettes/logic/palette.composite index 4d84272fd5..4d84272fd5 100644 --- a/sca-cpp/trunk/modules/edit/palettes/logic/palette.composite +++ b/sca-cpp/trunk/hosting/server/data/palettes/logic/palette.composite diff --git a/sca-cpp/trunk/modules/edit/palettes/math/palette.composite b/sca-cpp/trunk/hosting/server/data/palettes/math/palette.composite index 7dc4e88f2f..7dc4e88f2f 100644 --- a/sca-cpp/trunk/modules/edit/palettes/math/palette.composite +++ b/sca-cpp/trunk/hosting/server/data/palettes/math/palette.composite diff --git a/sca-cpp/trunk/modules/edit/palettes/python/palette.composite b/sca-cpp/trunk/hosting/server/data/palettes/python/palette.composite index 2cc03ae365..2cc03ae365 100644 --- a/sca-cpp/trunk/modules/edit/palettes/python/palette.composite +++ b/sca-cpp/trunk/hosting/server/data/palettes/python/palette.composite diff --git a/sca-cpp/trunk/modules/edit/palettes/search/palette.composite b/sca-cpp/trunk/hosting/server/data/palettes/search/palette.composite index db58cdcd08..db58cdcd08 100644 --- a/sca-cpp/trunk/modules/edit/palettes/search/palette.composite +++ b/sca-cpp/trunk/hosting/server/data/palettes/search/palette.composite diff --git a/sca-cpp/trunk/modules/edit/palettes/social/palette.composite b/sca-cpp/trunk/hosting/server/data/palettes/social/palette.composite index 5e02303857..5e02303857 100644 --- a/sca-cpp/trunk/modules/edit/palettes/social/palette.composite +++ b/sca-cpp/trunk/hosting/server/data/palettes/social/palette.composite diff --git a/sca-cpp/trunk/modules/edit/palettes/talk/palette.composite b/sca-cpp/trunk/hosting/server/data/palettes/talk/palette.composite index 90a48291ca..90a48291ca 100644 --- a/sca-cpp/trunk/modules/edit/palettes/talk/palette.composite +++ b/sca-cpp/trunk/hosting/server/data/palettes/talk/palette.composite diff --git a/sca-cpp/trunk/modules/edit/palettes/text/palette.composite b/sca-cpp/trunk/hosting/server/data/palettes/text/palette.composite index 6b9214f6e4..6b9214f6e4 100644 --- a/sca-cpp/trunk/modules/edit/palettes/text/palette.composite +++ b/sca-cpp/trunk/hosting/server/data/palettes/text/palette.composite diff --git a/sca-cpp/trunk/modules/edit/palettes/transform/palette.composite b/sca-cpp/trunk/hosting/server/data/palettes/transform/palette.composite index 566278c44b..566278c44b 100644 --- a/sca-cpp/trunk/modules/edit/palettes/transform/palette.composite +++ b/sca-cpp/trunk/hosting/server/data/palettes/transform/palette.composite diff --git a/sca-cpp/trunk/modules/edit/palettes/values/palette.composite b/sca-cpp/trunk/hosting/server/data/palettes/values/palette.composite index 4cd3a9d14e..4cd3a9d14e 100644 --- a/sca-cpp/trunk/modules/edit/palettes/values/palette.composite +++ b/sca-cpp/trunk/hosting/server/data/palettes/values/palette.composite diff --git a/sca-cpp/trunk/modules/edit/store/all/store.apps b/sca-cpp/trunk/hosting/server/data/store/all/store.apps index caf7142403..caf7142403 100644 --- a/sca-cpp/trunk/modules/edit/store/all/store.apps +++ b/sca-cpp/trunk/hosting/server/data/store/all/store.apps diff --git a/sca-cpp/trunk/modules/edit/store/featured/store.apps b/sca-cpp/trunk/hosting/server/data/store/featured/store.apps index 18bd47e8dd..18bd47e8dd 100644 --- a/sca-cpp/trunk/modules/edit/store/featured/store.apps +++ b/sca-cpp/trunk/hosting/server/data/store/featured/store.apps diff --git a/sca-cpp/trunk/modules/edit/store/new/store.apps b/sca-cpp/trunk/hosting/server/data/store/new/store.apps index 18bd47e8dd..18bd47e8dd 100644 --- a/sca-cpp/trunk/modules/edit/store/new/store.apps +++ b/sca-cpp/trunk/hosting/server/data/store/new/store.apps diff --git a/sca-cpp/trunk/modules/edit/store/top/store.apps b/sca-cpp/trunk/hosting/server/data/store/top/store.apps index 18bd47e8dd..18bd47e8dd 100644 --- a/sca-cpp/trunk/modules/edit/store/top/store.apps +++ b/sca-cpp/trunk/hosting/server/data/store/top/store.apps diff --git a/sca-cpp/trunk/modules/edit/htdocs/account/index.html b/sca-cpp/trunk/hosting/server/htdocs/account/index.html index 291f6dea1c..291f6dea1c 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/account/index.html +++ b/sca-cpp/trunk/hosting/server/htdocs/account/index.html diff --git a/sca-cpp/trunk/modules/edit/htdocs/app/cache-manifest.cmf b/sca-cpp/trunk/hosting/server/htdocs/app/cache-manifest.cmf index 6ea53970aa..6ea53970aa 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/app/cache-manifest.cmf +++ b/sca-cpp/trunk/hosting/server/htdocs/app/cache-manifest.cmf diff --git a/sca-cpp/trunk/modules/edit/htdocs/app/index.html b/sca-cpp/trunk/hosting/server/htdocs/app/index.html index 0b01c1d3bd..0b01c1d3bd 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/app/index.html +++ b/sca-cpp/trunk/hosting/server/htdocs/app/index.html diff --git a/sca-cpp/trunk/modules/edit/htdocs/cache-manifest.cmf b/sca-cpp/trunk/hosting/server/htdocs/cache-manifest.cmf index cb76f773a3..cb76f773a3 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/cache-manifest.cmf +++ b/sca-cpp/trunk/hosting/server/htdocs/cache-manifest.cmf diff --git a/sca-cpp/trunk/modules/edit/htdocs/clone/index.html b/sca-cpp/trunk/hosting/server/htdocs/clone/index.html index 3642634ed6..3642634ed6 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/clone/index.html +++ b/sca-cpp/trunk/hosting/server/htdocs/clone/index.html diff --git a/sca-cpp/trunk/modules/edit/htdocs/create/index.html b/sca-cpp/trunk/hosting/server/htdocs/create/index.html index 6097053cd6..6097053cd6 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/create/index.html +++ b/sca-cpp/trunk/hosting/server/htdocs/create/index.html diff --git a/sca-cpp/trunk/modules/edit/htdocs/favicon.ico b/sca-cpp/trunk/hosting/server/htdocs/favicon.ico Binary files differindex a7b502b9e1..a7b502b9e1 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/favicon.ico +++ b/sca-cpp/trunk/hosting/server/htdocs/favicon.ico diff --git a/sca-cpp/trunk/modules/edit/htdocs/graph/index.html b/sca-cpp/trunk/hosting/server/htdocs/graph/index.html index 1732590079..6b750026b4 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/graph/index.html +++ b/sca-cpp/trunk/hosting/server/htdocs/graph/index.html @@ -61,7 +61,7 @@ var appname = ui.fragmentParams(location)['app']; var ispalette = false; if (isNil(appname)) { - appname = ui.fragmentParams()['palette']; + appname = ui.fragmentParams(location)['palette']; // Edit a palette instead of a regular app if (!isNil(appname)) diff --git a/sca-cpp/trunk/modules/edit/htdocs/home/home.b64 b/sca-cpp/trunk/hosting/server/htdocs/home/home.b64 index 9131135881..9131135881 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/home/home.b64 +++ b/sca-cpp/trunk/hosting/server/htdocs/home/home.b64 diff --git a/sca-cpp/trunk/modules/edit/htdocs/home/home.png b/sca-cpp/trunk/hosting/server/htdocs/home/home.png Binary files differindex 8f5a0b0d86..8f5a0b0d86 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/home/home.png +++ b/sca-cpp/trunk/hosting/server/htdocs/home/home.png diff --git a/sca-cpp/trunk/modules/edit/htdocs/home/index.html b/sca-cpp/trunk/hosting/server/htdocs/home/index.html index 6fb9b558bf..6fb9b558bf 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/home/index.html +++ b/sca-cpp/trunk/hosting/server/htdocs/home/index.html diff --git a/sca-cpp/trunk/modules/edit/htdocs/index.html b/sca-cpp/trunk/hosting/server/htdocs/index.html index 3bc1529dbb..3bc1529dbb 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/index.html +++ b/sca-cpp/trunk/hosting/server/htdocs/index.html diff --git a/sca-cpp/trunk/modules/edit/htdocs/login/index.html b/sca-cpp/trunk/hosting/server/htdocs/login/index.html index 9052abe8d3..9052abe8d3 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/login/index.html +++ b/sca-cpp/trunk/hosting/server/htdocs/login/index.html diff --git a/sca-cpp/trunk/modules/edit/htdocs/page/index.html b/sca-cpp/trunk/hosting/server/htdocs/page/index.html index 9482cb4e32..9482cb4e32 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/page/index.html +++ b/sca-cpp/trunk/hosting/server/htdocs/page/index.html diff --git a/sca-cpp/trunk/modules/edit/htdocs/public/app.b64 b/sca-cpp/trunk/hosting/server/htdocs/public/app.b64 index 7ed235aa14..7ed235aa14 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/public/app.b64 +++ b/sca-cpp/trunk/hosting/server/htdocs/public/app.b64 diff --git a/sca-cpp/trunk/modules/edit/htdocs/public/app.png b/sca-cpp/trunk/hosting/server/htdocs/public/app.png Binary files differindex 1f73274b76..1f73274b76 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/public/app.png +++ b/sca-cpp/trunk/hosting/server/htdocs/public/app.png diff --git a/sca-cpp/trunk/modules/edit/htdocs/public/app.xcf b/sca-cpp/trunk/hosting/server/htdocs/public/app.xcf Binary files differindex 741b7ff43f..741b7ff43f 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/public/app.xcf +++ b/sca-cpp/trunk/hosting/server/htdocs/public/app.xcf diff --git a/sca-cpp/trunk/modules/edit/htdocs/public/delete.b64 b/sca-cpp/trunk/hosting/server/htdocs/public/delete.b64 index c8137d7ab4..c8137d7ab4 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/public/delete.b64 +++ b/sca-cpp/trunk/hosting/server/htdocs/public/delete.b64 diff --git a/sca-cpp/trunk/modules/edit/htdocs/public/delete.png b/sca-cpp/trunk/hosting/server/htdocs/public/delete.png Binary files differindex fb56bae030..fb56bae030 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/public/delete.png +++ b/sca-cpp/trunk/hosting/server/htdocs/public/delete.png diff --git a/sca-cpp/trunk/modules/edit/htdocs/public/delete.xcf b/sca-cpp/trunk/hosting/server/htdocs/public/delete.xcf Binary files differindex 7691f50cc5..7691f50cc5 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/public/delete.xcf +++ b/sca-cpp/trunk/hosting/server/htdocs/public/delete.xcf diff --git a/sca-cpp/trunk/modules/edit/htdocs/public/grid72.b64 b/sca-cpp/trunk/hosting/server/htdocs/public/grid72.b64 index 34be13e5ca..34be13e5ca 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/public/grid72.b64 +++ b/sca-cpp/trunk/hosting/server/htdocs/public/grid72.b64 diff --git a/sca-cpp/trunk/modules/edit/htdocs/public/grid72.png b/sca-cpp/trunk/hosting/server/htdocs/public/grid72.png Binary files differindex cf6008171a..cf6008171a 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/public/grid72.png +++ b/sca-cpp/trunk/hosting/server/htdocs/public/grid72.png diff --git a/sca-cpp/trunk/modules/edit/htdocs/public/iframe.html b/sca-cpp/trunk/hosting/server/htdocs/public/iframe.html index e2b862dbaa..e2b862dbaa 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/public/iframe.html +++ b/sca-cpp/trunk/hosting/server/htdocs/public/iframe.html diff --git a/sca-cpp/trunk/modules/edit/htdocs/public/img.b64 b/sca-cpp/trunk/hosting/server/htdocs/public/img.b64 index 97dae687a0..97dae687a0 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/public/img.b64 +++ b/sca-cpp/trunk/hosting/server/htdocs/public/img.b64 diff --git a/sca-cpp/trunk/modules/edit/htdocs/public/img.png b/sca-cpp/trunk/hosting/server/htdocs/public/img.png Binary files differindex 2363b25e8e..2363b25e8e 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/public/img.png +++ b/sca-cpp/trunk/hosting/server/htdocs/public/img.png diff --git a/sca-cpp/trunk/modules/edit/htdocs/public/img.xcf b/sca-cpp/trunk/hosting/server/htdocs/public/img.xcf Binary files differindex ffcc124584..ffcc124584 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/public/img.xcf +++ b/sca-cpp/trunk/hosting/server/htdocs/public/img.xcf diff --git a/sca-cpp/trunk/modules/edit/htdocs/public/notauth/index.html b/sca-cpp/trunk/hosting/server/htdocs/public/notauth/index.html index f366533e17..21f70f8a65 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/public/notauth/index.html +++ b/sca-cpp/trunk/hosting/server/htdocs/public/notauth/index.html @@ -23,7 +23,7 @@ <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0"/> <meta name="apple-mobile-web-app-capable" content="yes"/> <meta name="apple-mobile-web-app-status-bar-style" content="black"/> -<base href="/notauth/"/> +<base href="/public/notauth/"/> <script type="text/javascript"> window.appcache = {}; diff --git a/sca-cpp/trunk/modules/edit/htdocs/public/notfound/index.html b/sca-cpp/trunk/hosting/server/htdocs/public/notfound/index.html index 24efb159ea..839cc3395b 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/public/notfound/index.html +++ b/sca-cpp/trunk/hosting/server/htdocs/public/notfound/index.html @@ -23,7 +23,7 @@ <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0"/> <meta name="apple-mobile-web-app-capable" content="yes"/> <meta name="apple-mobile-web-app-status-bar-style" content="black"/> -<base href="/notfound/"/> +<base href="/public/notfound/"/> <script type="text/javascript"> window.appcache = {}; diff --git a/sca-cpp/trunk/modules/edit/htdocs/public/notyet/index.html b/sca-cpp/trunk/hosting/server/htdocs/public/notyet/index.html index b8457485fb..c014c7266e 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/public/notyet/index.html +++ b/sca-cpp/trunk/hosting/server/htdocs/public/notyet/index.html @@ -23,7 +23,7 @@ <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0"/> <meta name="apple-mobile-web-app-capable" content="yes"/> <meta name="apple-mobile-web-app-status-bar-style" content="black"/> -<base href="/notyet/"/> +<base href="/public/notyet/"/> <script type="text/javascript"> window.appcache = {}; diff --git a/sca-cpp/trunk/modules/edit/htdocs/public/oops/index.html b/sca-cpp/trunk/hosting/server/htdocs/public/oops/index.html index ca3e7706e3..2ef7754919 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/public/oops/index.html +++ b/sca-cpp/trunk/hosting/server/htdocs/public/oops/index.html @@ -20,10 +20,10 @@ <html> <head> <title>Oops</title> -<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0/> +<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0"/> <meta name="apple-mobile-web-app-capable" content="yes"/> <meta name="apple-mobile-web-app-status-bar-style" content="black"/> -<base href="/oops/"/> +<base href="/public/oops/"/> <script type="text/javascript"> window.appcache = {}; diff --git a/sca-cpp/trunk/modules/edit/htdocs/public/touchicon.b64 b/sca-cpp/trunk/hosting/server/htdocs/public/touchicon.b64 index 2239f6ae0f..2239f6ae0f 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/public/touchicon.b64 +++ b/sca-cpp/trunk/hosting/server/htdocs/public/touchicon.b64 diff --git a/sca-cpp/trunk/modules/edit/htdocs/public/touchicon.png b/sca-cpp/trunk/hosting/server/htdocs/public/touchicon.png Binary files differindex f22c33d2a0..f22c33d2a0 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/public/touchicon.png +++ b/sca-cpp/trunk/hosting/server/htdocs/public/touchicon.png diff --git a/sca-cpp/trunk/modules/edit/htdocs/public/touchicon.xcf b/sca-cpp/trunk/hosting/server/htdocs/public/touchicon.xcf Binary files differindex fc713b478b..fc713b478b 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/public/touchicon.xcf +++ b/sca-cpp/trunk/hosting/server/htdocs/public/touchicon.xcf diff --git a/sca-cpp/trunk/modules/edit/htdocs/public/user.b64 b/sca-cpp/trunk/hosting/server/htdocs/public/user.b64 index 7ed235aa14..7ed235aa14 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/public/user.b64 +++ b/sca-cpp/trunk/hosting/server/htdocs/public/user.b64 diff --git a/sca-cpp/trunk/modules/edit/htdocs/public/user.png b/sca-cpp/trunk/hosting/server/htdocs/public/user.png Binary files differindex 1f73274b76..1f73274b76 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/public/user.png +++ b/sca-cpp/trunk/hosting/server/htdocs/public/user.png diff --git a/sca-cpp/trunk/modules/edit/htdocs/robots.txt b/sca-cpp/trunk/hosting/server/htdocs/robots.txt index 1f53798bb4..1f53798bb4 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/robots.txt +++ b/sca-cpp/trunk/hosting/server/htdocs/robots.txt diff --git a/sca-cpp/trunk/modules/edit/htdocs/stats/index.html b/sca-cpp/trunk/hosting/server/htdocs/stats/index.html index 81f06c95e4..81f06c95e4 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/stats/index.html +++ b/sca-cpp/trunk/hosting/server/htdocs/stats/index.html diff --git a/sca-cpp/trunk/modules/edit/htdocs/store/index.html b/sca-cpp/trunk/hosting/server/htdocs/store/index.html index bcb3ba7c85..bcb3ba7c85 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/store/index.html +++ b/sca-cpp/trunk/hosting/server/htdocs/store/index.html diff --git a/sca-cpp/trunk/modules/edit/log.py b/sca-cpp/trunk/hosting/server/log.py index 8aa3d3bd30..8aa3d3bd30 100644 --- a/sca-cpp/trunk/modules/edit/log.py +++ b/sca-cpp/trunk/hosting/server/log.py diff --git a/sca-cpp/trunk/modules/edit/mkapplinks b/sca-cpp/trunk/hosting/server/mkapplinks index a68a2896ec..a68a2896ec 100755 --- a/sca-cpp/trunk/modules/edit/mkapplinks +++ b/sca-cpp/trunk/hosting/server/mkapplinks diff --git a/sca-cpp/trunk/modules/edit/pages.py b/sca-cpp/trunk/hosting/server/pages.py index 99392aeeef..a1ec888a0f 100644 --- a/sca-cpp/trunk/modules/edit/pages.py +++ b/sca-cpp/trunk/hosting/server/pages.py @@ -20,7 +20,7 @@ from util import * # Convert an id to an app id def appid(id): - return ("'" + car(id), "'htdocs", "'app.html") + return ("'apps", "'" + car(id), "'htdocs", "'app.html") # Put an app page into the apps db def put(id, app, cache): diff --git a/sca-cpp/trunk/modules/edit/palettes.py b/sca-cpp/trunk/hosting/server/palettes.py index 5cb303e053..378f4da18f 100644 --- a/sca-cpp/trunk/modules/edit/palettes.py +++ b/sca-cpp/trunk/hosting/server/palettes.py @@ -20,7 +20,7 @@ from util import * # Convert an id to a palette id def paletteid(id): - return ("'" + car(id), "'palette.composite") + return ("'palettes", "'" + car(id), "'palette.composite") # Put a palette into the palettes db def put(id, palette, cache): diff --git a/sca-cpp/trunk/hosting/server/selector.py b/sca-cpp/trunk/hosting/server/selector.py new file mode 100644 index 0000000000..84ade136ba --- /dev/null +++ b/sca-cpp/trunk/hosting/server/selector.py @@ -0,0 +1,28 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +# App composites collection implementation +from util import * + +# Get the database to use for a particular key +def get(id, db1, db2): + if isNil(id): + return db1 + if cadr(id)[0:1].lower() < 'm': + return db1 + return db2 + diff --git a/sca-cpp/trunk/modules/edit/edit.composite b/sca-cpp/trunk/hosting/server/server.composite index 0e348fd105..d79ec3b584 100644 --- a/sca-cpp/trunk/modules/edit/edit.composite +++ b/sca-cpp/trunk/hosting/server/server.composite @@ -18,8 +18,8 @@ * under the License. --> <composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" - targetNamespace="http://edit" - name="edit"> + targetNamespace="http://server" + name="server"> <component name="User"> <implementation.python script="user.py"/> @@ -61,7 +61,7 @@ <binding.http uri="accounts"/> </service> <reference name="user" target="User"/> - <reference name="cache" target="AccountCache"/> + <reference name="cache" target="Cache"/> </component> <component name="Dashboards"> @@ -70,7 +70,7 @@ <binding.http uri="dashboards"/> </service> <reference name="user" target="User"/> - <reference name="cache" target="DashboardCache"/> + <reference name="cache" target="Cache"/> <reference name="apps" target="Apps"/> </component> @@ -79,7 +79,7 @@ <service name="AppStore"> <binding.http uri="appstore"/> </service> - <reference name="cache" target="StoreCache"/> + <reference name="cache" target="Cache"/> </component> <component name="Apps"> @@ -87,7 +87,7 @@ <service name="Apps"> <binding.http uri="apps"/> </service> - <reference name="cache" target="AppCache"/> + <reference name="cache" target="Cache"/> <reference name="store" target="AppStore"/> <reference name="composites" target="Composites"/> <reference name="pages" target="Pages"/> @@ -98,7 +98,7 @@ <service name="Composites"> <binding.http uri="composites"/> </service> - <reference name="cache" target="AppDocCache"/> + <reference name="cache" target="Doccache"/> </component> <component name="Pages"> @@ -106,7 +106,7 @@ <service name="Pages"> <binding.http uri="pages"/> </service> - <reference name="cache" target="AppDocCache"/> + <reference name="cache" target="Doccache"/> </component> <component name="Palettes"> @@ -114,157 +114,57 @@ <service name="Palettes"> <binding.http uri="palettes"/> </service> - <reference name="cache" target="PaletteDocCache"/> + <reference name="cache" target="Doccache"/> </component> - <component name="AccountCache"> + <component name="Cache"> <implementation.cpp path="../../components/cache" library="libdatacache"/> - <service name="AccountCache"> - <binding.http uri="accountcache"/> + <service name="Cache"> + <binding.http uri="cache"/> </service> <reference name="l1reader" target="Memcache"/> <reference name="l1writer" target="Memcache"/> - <reference name="l2reader" target="AccountDB"/> - <reference name="l2writer" target="AccountDB"/> + <reference name="l2reader" target="Database"/> + <reference name="l2writer" target="Database"/> </component> - <component name="AccountDB"> - <implementation.cpp path="../../components/filedb" library="libfiledb"/> - <property name="dbname">accounts</property> - <property name="format">scheme</property> - <service name="AccountDB"> - <binding.http uri="accountdb"/> - </service> - </component> - - <component name="DashboardCache"> + <component name="Doccache"> <implementation.cpp path="../../components/cache" library="libdatacache"/> - <service name="DashboardCache"> - <binding.http uri="dashboardcache"/> + <service name="Doccache"> + <binding.http uri="doccache"/> </service> <reference name="l1reader" target="Memcache"/> <reference name="l1writer" target="Memcache"/> - <reference name="l2reader" target="DashboardDB"/> - <reference name="l2writer" target="DashboardDB"/> + <reference name="l2reader" target="Documents"/> + <reference name="l2writer" target="Documents"/> </component> - <component name="DashboardDB"> - <implementation.cpp path="../../components/filedb" library="libfiledb"/> - <property name="dbname">dashboards</property> - <property name="format">scheme</property> - <service name="DashboardDB"> - <binding.http uri="dashboarddb"/> - </service> - </component> - - <component name="StoreCache"> - <implementation.cpp path="../../components/cache" library="libdatacache"/> - <service name="StoreCache"> - <binding.http uri="storecache"/> + <component name="Memcache"> + <implementation.cpp path="../../components/cache" library="libmemcache"/> + <service name="Memcache"> + <binding.http uri="memcache"/> </service> - <reference name="l1reader" target="Memcache"/> - <reference name="l1writer" target="Memcache"/> - <reference name="l2reader" target="StoreDB"/> - <reference name="l2writer" target="StoreDB"/> + <property name="servers">localhost:11211</property> </component> - <component name="StoreDB"> + <component name="Database"> <implementation.cpp path="../../components/filedb" library="libfiledb"/> - <property name="dbname">store</property> + <property name="dbname">data</property> <property name="format">scheme</property> - <service name="StoreDB"> - <binding.http uri="storedb"/> - </service> - </component> - - <component name="AppCache"> - <implementation.cpp path="../../components/cache" library="libdatacache"/> - <service name="AppCache"> - <binding.http uri="appcache"/> + <service name="Database"> + <binding.http uri="database"/> </service> - <reference name="l1reader" target="Memcache"/> - <reference name="l1writer" target="Memcache"/> - <reference name="l2reader" target="AppDB"/> - <reference name="l2writer" target="AppDB"/> </component> - <component name="AppDB"> + <component name="Documents"> <implementation.cpp path="../../components/filedb" library="libfiledb"/> - <property name="dbname">apps</property> - <property name="format">scheme</property> - <service name="AppDB"> - <binding.http uri="appdb"/> - </service> - </component> - - <component name="AppDocCache"> - <implementation.cpp path="../../components/cache" library="libdatacache"/> - <service name="AppDocCache"> - <binding.http uri="appdoccache"/> - </service> - <reference name="l1reader" target="Memcache"/> - <reference name="l1writer" target="Memcache"/> - <reference name="l2reader" target="AppDocDB"/> - <reference name="l2writer" target="AppDocDB"/> - </component> - - <component name="AppDocDB"> - <implementation.cpp path="../../components/filedb" library="libfiledb"/> - <property name="dbname">apps</property> - <property name="format">xml</property> - <service name="AppDocDB"> - <binding.http uri="appdocdb"/> - </service> - </component> - - <component name="PaletteDocCache"> - <implementation.cpp path="../../components/cache" library="libdatacache"/> - <service name="PaletteDocCache"> - <binding.http uri="palettedoccache"/> - </service> - <reference name="l1reader" target="Memcache"/> - <reference name="l1writer" target="Memcache"/> - <reference name="l2reader" target="PaletteDocDB"/> - <reference name="l2writer" target="PaletteDocDB"/> - </component> - - <component name="PaletteDocDB"> - <implementation.cpp path="../../components/filedb" library="libfiledb"/> - <property name="dbname">palettes</property> + <property name="dbname">data</property> <property name="format">xml</property> - <service name="PaletteDocDB"> - <binding.http uri="palettedocdb"/> - </service> - </component> - - <component name="AppDataFileCache"> - <implementation.cpp path="../../components/cache" library="libdatacache"/> - <service name="AppDataFileCache"> - <binding.http uri="appdatafilecache"/> - </service> - <reference name="l1reader" target="Memcache"/> - <reference name="l1writer" target="Memcache"/> - <reference name="l2reader" target="AppDataFileDB"/> - <reference name="l2writer" target="AppDataFileDB"/> - </component> - - <component name="AppDataFileDB"> - <implementation.cpp path="../../components/filedb" library="libfiledb"/> - <property name="dbname">tmp/appdata/filedb</property> - <property name="format">scheme</property> - <service name="AppDataFileDB"> - <binding.http uri="appdatafiledb"/> + <service name="Documents"> + <binding.http uri="documents"/> </service> </component> - <component name="Memcache"> - <implementation.cpp path="../../components/cache" library="libmemcache"/> - <service name="Memcache"> - <binding.http uri="memcache"/> - </service> - <property name="servers">localhost:11211</property> - </component> - <component name="Log"> <implementation.python script="log.py"/> <service name="Log"> diff --git a/sca-cpp/trunk/modules/edit/ssl-start b/sca-cpp/trunk/hosting/server/ssl-start index fdc5a8b8dc..9be614fa8e 100755 --- a/sca-cpp/trunk/modules/edit/ssl-start +++ b/sca-cpp/trunk/hosting/server/ssl-start @@ -17,15 +17,15 @@ # specific language governing permissions and limitations # under the License. -# For this module to work, add the sca-store.com domain to your /etc/hosts as follows: -# 127.0.0.1 sca-store.com +# For this module to work, add the example.com domain to your /etc/hosts as follows: +# 127.0.0.1 example.com here=`echo "import os; print os.path.realpath('$0')" | python`; here=`dirname $here` -jsprefix=`echo "import os; print os.path.realpath('$here/../js')" | python` +jsprefix=`echo "import os; print os.path.realpath('$here/../../modules/js')" | python` # Create SSL certificates -../../modules/http/ssl-ca-conf tmp sca-store.com -../../modules/http/ssl-cert-conf tmp sca-store.com server +../../modules/http/ssl-ca-conf tmp example.com +../../modules/http/ssl-cert-conf tmp example.com server # Configure and start logging if [ -x ../../components/log/scribe-cat ]; then @@ -40,7 +40,7 @@ fi ../../components/cache/memcached-start tmp 11212 # Configure server -../../modules/http/httpd-conf tmp sca-store.com 8090 htdocs +../../modules/http/httpd-conf tmp example.com 8090 htdocs ../../modules/http/httpd-event-conf tmp ../../modules/http/httpd-ssl-conf tmp 8453 @@ -66,8 +66,8 @@ fi #../../modules/http/group-auth-conf tmp jane #../../modules/http/group-auth-conf tmp admin # Configure the email addresses associated with your OpenID and OAuth ids here -../../modules/http/group-auth-conf tmp john@sca-store.com -../../modules/http/group-auth-conf tmp jane@sca-store.com +../../modules/http/group-auth-conf tmp john@example.com +../../modules/http/group-auth-conf tmp jane@example.com # Configure mod-security ../../modules/http/mod-security-conf tmp @@ -80,6 +80,7 @@ fi if [ -x ../../components/log/scribe-cat ]; then cat >tmp/conf/log.conf <<EOF # Generated by: ssl-start $* +LogLevel notice ErrorLog "|$here/../../components/log/scribe-cat server" CustomLog "|$here/../../components/log/scribe-cat server" combined @@ -97,6 +98,27 @@ SecAuditLog "|$here/../../components/log/scribe-cat secaudit" EOF +else + cat >tmp/conf/log.conf <<EOF +# Generated by: ssl=start $* +LogLevel debug +ErrorLog $here/tmp/logs/error_log +CustomLog $here/tmp/logs/access_log combined + +EOF + + cat >tmp/conf/log-ssl.conf <<EOF +# Generated by: ssl-start $* +CustomLog $here/tmp/logs/ssl_access_log sslcombined + +EOF + + cat >tmp/conf/mod-security-log.conf <<EOF +# Generated by: ssl-start $* +SecAuditLog $here/tmp/logs/secaudit_log secaudit + +EOF + fi # Configure certificate mime type @@ -124,11 +146,11 @@ EOF cat >>tmp/conf/httpd.conf <<EOF # Generated by: ssl-start $* # Configure SCA Composite -SCAContribution `pwd`/ -SCAComposite edit.composite +SCAContribution $here/ +SCAComposite server.composite # Configure SCA Composite for mass dynamic virtual Hosting -SCAVirtualContribution `pwd`/apps/ +SCAVirtualContribution $here/apps/ SCAVirtualComposite app.composite EOF @@ -142,29 +164,16 @@ Alias /home/home.b64 $here/htdocs/home/home.b64 EOF # Create app resource links -./mkapplinks . ../../../.. ../../../../../nuvem +./mkapplinks data ../../../../.. ../../../../../../nuvem # Configure app resource aliases cat >>tmp/conf/svhost-ssl.conf <<EOF # Generated by: ssl-start $* -<Location /v> -RewriteEngine on - # Map /v/<app-name>/<path> to htdocs/app/<path> -RewriteCond %{REQUEST_URI} ^/v/.+/.*$ -RewriteRule /v/(.+)/(.*)$ $here/htdocs/app/\$2 [L] - -# Redirect /v/<app-name> to /<app-name>/ -RewriteCond %{REQUEST_URI} ^/v/[^/]+$ -RewriteRule /v/([^/]+)$ /\$1/ [L,R] - -</Location> +AliasMatch /v/([^/]+)(.*)$ $here/htdocs/app\$2 EOF -# Create application database directories -mkdir -p tmp/appdata/filedb - # Start server ../../modules/http/httpd-start tmp diff --git a/sca-cpp/trunk/modules/edit/start b/sca-cpp/trunk/hosting/server/start index a6c417bbb1..da0dcecf40 100755 --- a/sca-cpp/trunk/modules/edit/start +++ b/sca-cpp/trunk/hosting/server/start @@ -17,11 +17,11 @@ # specific language governing permissions and limitations # under the License. -# For this module to work, add the sca-store.com domain to your /etc/hosts as follows: -# 127.0.0.1 sca-store.com +# For this module to work, add the example.com domain to your /etc/hosts as follows: +# 127.0.0.1 example.com here=`echo "import os; print os.path.realpath('$0')" | python`; here=`dirname $here` -jsprefix=`echo "import os; print os.path.realpath('$here/../js')" | python` +jsprefix=`echo "import os; print os.path.realpath('$here/../../modules/js')" | python` # Configure and start logging if [ -x ../../components/log/scribe-cat ]; then @@ -36,17 +36,18 @@ fi ../../components/cache/memcached-start tmp 11212 # Configure server -../../modules/http/httpd-conf tmp sca-store.com 8090 htdocs +../../modules/http/httpd-conf tmp example.com 8090 htdocs ../../modules/http/httpd-event-conf tmp # Configure Python component support -../server/server-conf tmp -../python/python-conf tmp +../../modules/server/server-conf tmp +../../modules/python/python-conf tmp # Configure server log streaming if [ -x ../../components/log/scribe-cat ]; then cat >tmp/conf/log.conf <<EOF # Generated by: start $* +LogLevel notice ErrorLog "|$here/../../components/log/scribe-cat server" CustomLog "|$here/../../components/log/scribe-cat server" combined @@ -58,6 +59,21 @@ CustomLog "|$here/../../components/log/scribe-cat server" sslcombined EOF +else + cat >tmp/conf/log.conf <<EOF +# Generated by: start $* +LogLevel debug +ErrorLog $here/tmp/logs/error_log +CustomLog $here/tmp/logs/access_log combined + +EOF + + cat >tmp/conf/log-ssl.conf <<EOF +# Generated by: start $* +CustomLog $here/tmp/logs/ssl_access_log sslcombined + +EOF + fi # Configure error pages @@ -75,11 +91,11 @@ EOF cat >>tmp/conf/httpd.conf <<EOF # Generated by: start $* # Configure SCA Composite -SCAContribution `pwd`/ -SCAComposite edit.composite +SCAContribution $here/ +SCAComposite server.composite # Configure SCA Composite for mass dynamic virtual Hosting -SCAVirtualContribution `pwd`/apps/ +SCAVirtualContribution $here/data/apps/ SCAVirtualComposite app.composite EOF @@ -93,29 +109,16 @@ Alias /home/home.b64 $here/htdocs/home/home.b64 EOF # Create app resource links -./mkapplinks . ../../../.. ../../../../../nuvem +./mkapplinks data ../../../../.. ../../../../../../nuvem # Configure app resource aliases cat >>tmp/conf/svhost.conf <<EOF # Generated by: start $* -<Location /v> -RewriteEngine on - # Map /v/<app-name>/<path> to htdocs/app/<path> -RewriteCond %{REQUEST_URI} ^/v/.+/.*$ -RewriteRule /v/(.+)/(.*)$ $here/htdocs/app/\$2 [L] - -# Redirect /v/<app-name> to /<app-name>/ -RewriteCond %{REQUEST_URI} ^/v/[^/]+$ -RewriteRule /v/([^/]+)$ /\$1/ [L,R] - -</Location> +AliasMatch /v/([^/]+)(.*)$ $here/htdocs/app\$2 EOF -# Create application database directories -mkdir -p tmp/appdata/filedb - # Start server ../../modules/http/httpd-start tmp diff --git a/sca-cpp/trunk/modules/edit/stop b/sca-cpp/trunk/hosting/server/stop index e1fd92705c..e1fd92705c 100755 --- a/sca-cpp/trunk/modules/edit/stop +++ b/sca-cpp/trunk/hosting/server/stop diff --git a/sca-cpp/trunk/modules/edit/store.py b/sca-cpp/trunk/hosting/server/store.py index 79750975a5..014c07050e 100644 --- a/sca-cpp/trunk/modules/edit/store.py +++ b/sca-cpp/trunk/hosting/server/store.py @@ -20,7 +20,7 @@ from util import * # Convert a particular store tag to a store id def storeid(tag): - return ("'" + tag, "'store.apps") + return ("'store", "'" + tag, "'store.apps") # Get a store from the cache def getstore(id, cache): diff --git a/sca-cpp/trunk/modules/edit/user.py b/sca-cpp/trunk/hosting/server/user.py index 227722ac48..227722ac48 100644 --- a/sca-cpp/trunk/modules/edit/user.py +++ b/sca-cpp/trunk/hosting/server/user.py diff --git a/sca-cpp/trunk/modules/edit/util.py b/sca-cpp/trunk/hosting/server/util.py index 24467fd2cb..24467fd2cb 100644 --- a/sca-cpp/trunk/modules/edit/util.py +++ b/sca-cpp/trunk/hosting/server/util.py diff --git a/sca-cpp/trunk/modules/Makefile.am b/sca-cpp/trunk/modules/Makefile.am index f4195dc7e8..16fe2791f7 100644 --- a/sca-cpp/trunk/modules/Makefile.am +++ b/sca-cpp/trunk/modules/Makefile.am @@ -15,5 +15,5 @@ # specific language governing permissions and limitations # under the License. -SUBDIRS = scheme atom rss js json scdl http server python opencl java openid oauth wsgi edit +SUBDIRS = scheme atom rss js json scdl http server python opencl java openid oauth wsgi diff --git a/sca-cpp/trunk/modules/http/http-test b/sca-cpp/trunk/modules/http/http-test index 7874a1037f..73cfe700a6 100755 --- a/sca-cpp/trunk/modules/http/http-test +++ b/sca-cpp/trunk/modules/http/http-test @@ -24,7 +24,7 @@ sleep 2 # Test -./curl-test +./curl-test 2>/dev/null rc=$? # Cleanup diff --git a/sca-cpp/trunk/modules/http/httpd.hpp b/sca-cpp/trunk/modules/http/httpd.hpp index f4e3767881..7c839c1306 100644 --- a/sca-cpp/trunk/modules/http/httpd.hpp +++ b/sca-cpp/trunk/modules/http/httpd.hpp @@ -205,7 +205,7 @@ const string serverName(request_rec* r, const string& def = "localhost") { /** * Return true if a request is targeting a virtual host. */ -const bool isVirtualHostRequest(const server_rec* s, const string& d, request_rec* r) { +const bool isVhostRequest(const server_rec* s, const string& d, request_rec* r) { const string rh = hostName(r); return rh != hostName(s) && http::topDomain(rh) == d; } diff --git a/sca-cpp/trunk/modules/http/proxy-test b/sca-cpp/trunk/modules/http/proxy-test index bf4e2bf460..9f3d248fdf 100755 --- a/sca-cpp/trunk/modules/http/proxy-test +++ b/sca-cpp/trunk/modules/http/proxy-test @@ -29,7 +29,7 @@ sleep 2 # Test -./curl-test +./curl-test 2>/dev/null rc=$? # Cleanup diff --git a/sca-cpp/trunk/modules/server/Makefile.am b/sca-cpp/trunk/modules/server/Makefile.am index edc0dfb251..e2fd67d9b8 100644 --- a/sca-cpp/trunk/modules/server/Makefile.am +++ b/sca-cpp/trunk/modules/server/Makefile.am @@ -25,19 +25,14 @@ moddir = $(prefix)/modules/server EXTRA_DIST = domain-test.composite client-test.scm server-test.scm htdocs/*.html htdocs/test/*.xml htdocs/test/*.txt -mod_LTLIBRARIES = libmod_tuscany_eval.la libmod_tuscany_wiring.la -noinst_DATA = libmod_tuscany_eval${libsuffix} libmod_tuscany_wiring${libsuffix} +mod_LTLIBRARIES = libmod_tuscany_eval.la +noinst_DATA = libmod_tuscany_eval${libsuffix} libmod_tuscany_eval_la_SOURCES = mod-eval.cpp libmod_tuscany_eval_la_LDFLAGS = -lxml2 -lcurl -lmozjs libmod_tuscany_eval${libsuffix}: ln -s .libs/libmod_tuscany_eval${libsuffix} -libmod_tuscany_wiring_la_SOURCES = mod-wiring.cpp -libmod_tuscany_wiring_la_LDFLAGS = -lxml2 -lcurl -lmozjs -libmod_tuscany_wiring${libsuffix}: - ln -s .libs/libmod_tuscany_wiring${libsuffix} - noinst_test_LTLIBRARIES = libimpl-test.la noinst_testdir = `pwd`/tmp noinst_DATA += libimpl-test${libsuffix} diff --git a/sca-cpp/trunk/modules/server/client-test.cpp b/sca-cpp/trunk/modules/server/client-test.cpp index 5de7ab6e7b..3f5ff20c56 100644 --- a/sca-cpp/trunk/modules/server/client-test.cpp +++ b/sca-cpp/trunk/modules/server/client-test.cpp @@ -29,7 +29,7 @@ int main() { tuscany::cout << "Testing..." << tuscany::endl; - tuscany::server::testURI = "http://localhost:8090/test"; + tuscany::server::testURI = "http://localhost:8090/scheme"; tuscany::server::testServer(); diff --git a/sca-cpp/trunk/modules/server/client-test.hpp b/sca-cpp/trunk/modules/server/client-test.hpp index 50b246a073..2dab7b6dfd 100644 --- a/sca-cpp/trunk/modules/server/client-test.hpp +++ b/sca-cpp/trunk/modules/server/client-test.hpp @@ -36,7 +36,7 @@ namespace tuscany { namespace server { -string testURI = "http://localhost:8090/test"; +string testURI = "http://localhost:8090/scheme"; bool testBlobs = true; ostream* curlWriter(const string& s, ostream* os) { diff --git a/sca-cpp/trunk/modules/server/domain-test.composite b/sca-cpp/trunk/modules/server/domain-test.composite index b003dd15cd..1819b3bf4c 100644 --- a/sca-cpp/trunk/modules/server/domain-test.composite +++ b/sca-cpp/trunk/modules/server/domain-test.composite @@ -23,8 +23,8 @@ <component name="scheme-test"> <implementation.scheme script="server-test.scm"/> - <service name="test"> - <binding.http uri="test"/> + <service name="scheme"> + <binding.http uri="scheme"/> </service> </component> diff --git a/sca-cpp/trunk/modules/server/httpd-test b/sca-cpp/trunk/modules/server/httpd-test index d541c145e9..63b268d7b3 100755 --- a/sca-cpp/trunk/modules/server/httpd-test +++ b/sca-cpp/trunk/modules/server/httpd-test @@ -41,31 +41,31 @@ rc=$? # Test ATOMPub if [ "$rc" = "0" ]; then - $curl_prefix/bin/curl http://localhost:8090/test/ >tmp/feed.xml 2>/dev/null + $curl_prefix/bin/curl http://localhost:8090/scheme/ >tmp/feed.xml 2>/dev/null diff tmp/feed.xml htdocs/test/feed.xml rc=$? fi if [ "$rc" = "0" ]; then - $curl_prefix/bin/curl http://localhost:8090/test/111 >tmp/entry.xml 2>/dev/null + $curl_prefix/bin/curl http://localhost:8090/scheme/111 >tmp/entry.xml 2>/dev/null diff tmp/entry.xml htdocs/test/entry.xml rc=$? fi if [ "$rc" = "0" ]; then - $curl_prefix/bin/curl http://localhost:8090/test/ -X POST -H "Content-type: application/atom+xml" --data @htdocs/test/entry.xml 2>/dev/null + $curl_prefix/bin/curl http://localhost:8090/scheme/ -X POST -H "Content-type: application/atom+xml" --data @htdocs/test/entry.xml 2>/dev/null rc=$? fi if [ "$rc" = "0" ]; then - $curl_prefix/bin/curl http://localhost:8090/test/111 -X PUT -H "Content-type: application/atom+xml" --data @htdocs/test/entry.xml 2>/dev/null + $curl_prefix/bin/curl http://localhost:8090/scheme/111 -X PUT -H "Content-type: application/atom+xml" --data @htdocs/test/entry.xml 2>/dev/null rc=$? fi if [ "$rc" = "0" ]; then - $curl_prefix/bin/curl http://localhost:8090/test/111 -X DELETE 2>/dev/null + $curl_prefix/bin/curl http://localhost:8090/scheme/111 -X DELETE 2>/dev/null rc=$? fi # Test JSON-RPC if [ "$rc" = "0" ]; then - $curl_prefix/bin/curl http://localhost:8090/test/ -X POST -H "Content-type: application/json-rpc" --data @htdocs/test/json-request.txt >tmp/json-result.txt 2>/dev/null + $curl_prefix/bin/curl http://localhost:8090/scheme/ -X POST -H "Content-type: application/json-rpc" --data @htdocs/test/json-request.txt >tmp/json-result.txt 2>/dev/null diff tmp/json-result.txt htdocs/test/json-result.txt rc=$? fi diff --git a/sca-cpp/trunk/modules/server/mod-eval.hpp b/sca-cpp/trunk/modules/server/mod-eval.hpp index 62d91c6236..999a5793ad 100644 --- a/sca-cpp/trunk/modules/server/mod-eval.hpp +++ b/sca-cpp/trunk/modules/server/mod-eval.hpp @@ -52,50 +52,61 @@ namespace server { namespace modeval { /** + * Set to true to wire using mod_proxy, false to wire using HTTP client redirects. + */ +const bool useModProxy = true; + +/** * Server configuration. */ class ServerConf { public: - ServerConf(apr_pool_t* p, server_rec* s) : p(p), server(s), contributionPath(""), compositeName(""), virtualHostDomain(""), virtualHostContributionPath(""), virtualHostCompositeName(""), ca(""), cert(""), key("") { + ServerConf(apr_pool_t* p, server_rec* s) : p(p), server(s) { } - ServerConf(apr_pool_t* p, const ServerConf& ssc, const string& name) : p(p), server(ssc.server), lifecycle(ssc.lifecycle), contributionPath(ssc.virtualHostContributionPath + name + "/"), compositeName(ssc.virtualHostCompositeName), virtualHostDomain(""), virtualHostContributionPath(""), virtualHostCompositeName(""), ca(ssc.ca), cert(ssc.cert), key(ssc.key) { + ServerConf(apr_pool_t* p, const ServerConf& ssc, const string& name) : p(p), server(ssc.server), lifecycle(ssc.lifecycle), vhostName(name), compositeName(ssc.vhostCompositeName), ca(ssc.ca), cert(ssc.cert), key(ssc.key), vhostContributor(ssc.vhostContributor) { + contributionPath = length(ssc.vhostContributionPath) != 0? ssc.vhostContributionPath + name + "/" : ssc.contributionPath; } const gc_pool p; server_rec* server; lambda<value(const list<value>&)> lifecycle; + string vhostName; string contributionPath; string compositeName; - string virtualHostDomain; - string virtualHostContributionPath; - string virtualHostCompositeName; + string vhostDomain; + string vhostContributionPath; + string vhostCompositeName; + string vhostContributorName; string ca; string cert; string key; + list<value> references; + list<value> services; list<value> implementations; list<value> implTree; + value vhostContributor; }; /** - * Return true if a server contains a composite configuration. + * Return true if a server contains a contribution configuration. */ -const bool hasCompositeConf(const ServerConf& sc) { - return sc.contributionPath != "" && sc.compositeName != ""; +const bool hasContributionConf(const ServerConf& sc) { + return length(sc.contributionPath) != 0; } /** * Return true if a server contains a virtual host domain configuration. */ -const bool hasVirtualDomainConf(const ServerConf& sc) { - return sc.virtualHostDomain != ""; +const bool hasVhostDomainConf(const ServerConf& sc) { + return length(sc.vhostDomain) != 0; } /** - * Return true if a server contains a virtual host composite configuration. + * Return true if a server contains a virtual host contribution configuration. */ -const bool hasVirtualCompositeConf(const ServerConf& sc) { - return sc.virtualHostContributionPath != "" && sc.virtualHostCompositeName != ""; +const bool hasVhostContributionConf(const ServerConf& sc) { + return length(sc.vhostContributionPath) != 0 || length(sc.vhostContributorName) != 0; } /** @@ -129,262 +140,6 @@ public: }; /** - * Handle an HTTP GET. - */ -const failable<int> get(const list<value>& rpath, request_rec* r, const lambda<value(const list<value>&)>& impl) { - debug(r->uri, "modeval::get::uri"); - - // Inspect the query string - const list<list<value> > args = httpd::queryArgs(r); - const list<value> ia = assoc(value("id"), args); - const list<value> ma = assoc(value("method"), args); - - // Evaluate a JSON-RPC request and return a JSON result - if (!isNil(ia) && !isNil(ma)) { - - // Extract the request id, method and params - const value id = cadr(ia); - const value func = c_str(json::funcName(string(cadr(ma)))); - - // Apply the requested function - const failable<value> val = failableResult(impl(cons(func, json::queryParams(args)))); - if (!hasContent(val)) - return mkfailure<int>(reason(val)); - - // Return JSON result - js::JSContext cx; - return httpd::writeResult(json::jsonResult(id, content(val), cx), "application/json-rpc; charset=utf-8", r); - } - - // Evaluate the GET expression - const list<value> params(append<value>(cddr(rpath), mkvalues(args))); - const failable<value> val = failableResult(impl(cons<value>("get", mklist<value>(params)))); - if (!hasContent(val)) - return mkfailure<int>(reason(val)); - const value c = content(val); - debug(c, "modeval::get::content"); - - // Check if the client requested a specific format - const list<value> fmt = assoc<value>("format", args); - - // Write as a scheme value if requested by the client - if (!isNil(fmt) && cadr(fmt) == "scheme") - return httpd::writeResult(mklist<string>(scheme::writeValue(c)), "text/plain; charset=utf-8", r); - - // Write a simple value as a JSON value - if (!isList(c)) { - js::JSContext cx; - if (isSymbol(c)) { - const list<value> lc = mklist<value>(mklist<value>("name", value(string(c)))); - debug(lc, "modeval::get::symbol"); - return httpd::writeResult(json::writeJSON(valuesToElements(lc), cx), "application/json; charset=utf-8", r); - } - const list<value> lc = mklist<value>(mklist<value>("value", c)); - debug(lc, "modeval::get::value"); - return httpd::writeResult(json::writeJSON(valuesToElements(lc), cx), "application/json; charset=utf-8", r); - } - - // Write an empty list as a JSON empty value - if (isNil((list<value>)c)) { - js::JSContext cx; - debug(list<value>(), "modeval::get::empty"); - return httpd::writeResult(json::writeJSON(list<value>(), cx), "application/json; charset=utf-8", r); - } - - // Write content-type / content-list pair - if (isString(car<value>(c)) && !isNil(cdr<value>(c)) && isList(cadr<value>(c))) - return httpd::writeResult(convertValues<string>(cadr<value>(c)), car<value>(c), r); - - // Write an assoc value as a JSON result - if (isSymbol(car<value>(c)) && !isNil(cdr<value>(c))) { - js::JSContext cx; - const list<value> lc = mklist<value>(c); - debug(lc, "modeval::get::assoc"); - debug(valuesToElements(lc), "modeval::get::assoc::element"); - return httpd::writeResult(json::writeJSON(valuesToElements(lc), cx), "application/json; charset=utf-8", r); - } - - // Write value as JSON if requested by the client - if (!isNil(fmt) && cadr(fmt) == "json") { - js::JSContext cx; - return httpd::writeResult(json::writeJSON(valuesToElements(c), cx), "application/json; charset=utf-8", r); - } - - // Convert list of values to element values - const list<value> e = valuesToElements(c); - debug(e, "modeval::get::elements"); - - // Write an ATOM feed or entry - if (isList(car<value>(e)) && !isNil(car<value>(e))) { - const list<value> el = car<value>(e); - if (isSymbol(car<value>(el)) && car<value>(el) == element && !isNil(cdr<value>(el)) && isSymbol(cadr<value>(el)) && elementHasChildren(el) && !elementHasValue(el)) { - if (cadr<value>(el) == atom::feed) - return httpd::writeResult(atom::writeATOMFeed(e), "application/atom+xml; charset=utf-8", r); - if (cadr<value>(el) == atom::entry) - return httpd::writeResult(atom::writeATOMEntry(e), "application/atom+xml; charset=utf-8", r); - } - } - - // Write any other compound value as a JSON value - js::JSContext cx; - return httpd::writeResult(json::writeJSON(e, cx), "application/json; charset=utf-8", r); -} - -/** - * Handle an HTTP POST. - */ -const failable<int> post(const list<value>& rpath, request_rec* r, const lambda<value(const list<value>&)>& impl) { - debug(r->uri, "modeval::post::url"); - - // Evaluate a JSON-RPC request and return a JSON result - const string ct = httpd::contentType(r); - if (contains(ct, "application/json-rpc") || contains(ct, "text/plain") || contains(ct, "application/x-www-form-urlencoded")) { - - // Read the JSON request - const int rc = httpd::setupReadPolicy(r); - if(rc != OK) - return rc; - const list<string> ls = httpd::read(r); - debug(ls, "modeval::post::input"); - js::JSContext cx; - const list<value> json = elementsToValues(content(json::readJSON(ls, cx))); - const list<list<value> > args = httpd::postArgs(json); - - // Extract the request id, method and params - const value id = cadr(assoc(value("id"), args)); - const value func = c_str(json::funcName(cadr(assoc(value("method"), args)))); - const list<value> params = (list<value>)cadr(assoc(value("params"), args)); - - // Evaluate the request expression - const failable<value> val = failableResult(impl(cons<value>(func, params))); - if (!hasContent(val)) - return mkfailure<int>(reason(val)); - - // Return JSON result - return httpd::writeResult(json::jsonResult(id, content(val), cx), "application/json-rpc; charset=utf-8", r); - } - - // Evaluate an ATOM POST request and return the location of the corresponding created resource - if (contains(ct, "application/atom+xml")) { - - // Read the ATOM entry - const int rc = httpd::setupReadPolicy(r); - if(rc != OK) - return rc; - const list<string> ls = httpd::read(r); - debug(ls, "modeval::post::input"); - const value entry = elementsToValues(content(atom::readATOMEntry(ls))); - - // Evaluate the POST expression - const failable<value> val = failableResult(impl(cons<value>("post", mklist<value>(cddr(rpath), entry)))); - if (!hasContent(val)) - return mkfailure<int>(reason(val)); - - // Return the created resource location - debug(content(val), "modeval::post::location"); - apr_table_setn(r->headers_out, "Location", apr_pstrdup(r->pool, c_str(httpd::url(r->uri, content(val), r)))); - r->status = HTTP_CREATED; - return OK; - } - - // Unknown content type, wrap the HTTP request struct in a value and pass it to - // the component implementation function - const failable<value> val = failableResult(impl(cons<value>("handle", mklist<value>(httpd::requestValue(r))))); - if (!hasContent(val)) - return mkfailure<int>(reason(val)); - return (int)content(val); -} - -/** - * Handle an HTTP PUT. - */ -const failable<int> put(const list<value>& rpath, request_rec* r, const lambda<value(const list<value>&)>& impl) { - debug(r->uri, "modeval::put::url"); - - // Read the ATOM entry - const int rc = httpd::setupReadPolicy(r); - if(rc != OK) - return rc; - const list<string> ls = httpd::read(r); - debug(ls, "modeval::put::input"); - const value entry = elementsToValues(content(atom::readATOMEntry(ls))); - - // Evaluate the PUT expression and update the corresponding resource - const failable<value> val = failableResult(impl(cons<value>("put", mklist<value>(cddr(rpath), entry)))); - if (!hasContent(val)) - return mkfailure<int>(reason(val)); - if (val == value(false)) - return HTTP_NOT_FOUND; - return OK; -} - -/** - * Handle an HTTP DELETE. - */ -const failable<int> del(const list<value>& rpath, request_rec* r, const lambda<value(const list<value>&)>& impl) { - debug(r->uri, "modeval::delete::url"); - - // Evaluate an ATOM delete request - const failable<value> val = failableResult(impl(cons<value>("delete", mklist<value>(cddr(rpath))))); - if (!hasContent(val)) - return mkfailure<int>(reason(val)); - if (val == value(false)) - return HTTP_NOT_FOUND; - return OK; -} - -/** - * Translate a component request. - */ -const int translateRequest(const ServerConf& sc, const list<value>& rpath, request_rec *r) { - debug(rpath, "modeval::translateRequest::path"); - if (isNil(rpath)) - return DECLINED; - - // Translate a component request - const value c = car(rpath); - if (c == string("components") || c == string("c")) { - r->handler = "mod_tuscany_eval"; - return OK; - } - - // Translate a request targeting a virtual host or virtual app - if (hasVirtualCompositeConf(sc) && !isNil(cdr(rpath))) { - const string cp = sc.virtualHostContributionPath + string(c) + "/" + sc.virtualHostCompositeName; - struct stat st; - const int s = stat(c_str(cp), &st); - if (s != -1) { - const value d = cadr(rpath); - if (d == string("components") || d == string("c")) { - r->handler = "mod_tuscany_eval"; - return OK; - } - } - } - - return DECLINED; -} - -/** - * Translate a component request. - */ -int translate(request_rec *r) { - if(r->method_number != M_GET && r->method_number != M_POST && r->method_number != M_PUT && r->method_number != M_DELETE) - return DECLINED; - - // Create a scoped memory pool - gc_scoped_pool pool(r->pool); - - httpdDebugRequest(r, "modeval::translate::input"); - - // Get the server configuration - const ServerConf& sc = httpd::serverConf<ServerConf>(r, &mod_tuscany_eval); - - // Translate the request - return translateRequest(sc, pathValues(r->uri), r); -} - -/** * Make an HTTP proxy lambda to a component reference. */ const value mkhttpProxy(const ServerConf& sc, const string& ref, const string& base) { @@ -573,7 +328,7 @@ struct appPropProxy { appPropProxy(const value& v) : v(v) { } const value operator()(unused const list<value>& params) const { - const char* n = apr_table_get(currentRequest->headers_in, "X-Request-AppName"); + const char* n = apr_table_get(currentRequest->notes, "X-Request-AppName"); const value a = n != NULL? value(string(n)) : v; debug(a, "modeval::appPropProxy::value"); return a; @@ -584,7 +339,7 @@ struct pathPropProxy { pathPropProxy(unused const value& v) { } const value operator()(unused const list<value>& params) const { - const char* u = apr_table_get(currentRequest->headers_in, "X-Request-URI"); + const char* u = apr_table_get(currentRequest->notes, "X-Request-URI"); const value v = u != NULL? pathValues(string(u)) : list<value>(); debug(v, "modeval::pathPropProxy::value"); return v; @@ -743,21 +498,79 @@ const failable<list<value> > applyLifecycleExpr(const list<value>& impls, const } /** + * Return a list of component-name + references pairs. The references are + * arranged in trees of reference-name + reference-target pairs. + */ +const list<value> componentReferenceToTargetTree(const value& c) { + return mklist<value>(scdl::name(c), mkbtree(sort(scdl::referenceToTargetAssoc(scdl::references(c))))); +} + +const list<value> componentReferenceToTargetAssoc(const list<value>& c) { + if (isNil(c)) + return c; + return cons<value>(componentReferenceToTargetTree(car(c)), componentReferenceToTargetAssoc(cdr(c))); +} + +/** + * Return a list of service-URI-path + component-name pairs. Service-URI-paths are + * represented as lists of URI path fragments. + */ +const list<value> defaultBindingURI(const string& cn, const string& sn) { + return mklist<value>(cn, sn); +} + +const list<value> bindingToComponentAssoc(const string& cn, const string& sn, const list<value>& b) { + if (isNil(b)) + return b; + const value uri(scdl::uri(car(b))); + if (isNil(uri)) + return cons<value>(mklist<value>(defaultBindingURI(cn, sn), cn), bindingToComponentAssoc(cn, sn, cdr(b))); + return cons<value>(mklist<value>(pathValues(c_str(string(uri))), cn), bindingToComponentAssoc(cn, sn, cdr(b))); +} + +const list<value> serviceToComponentAssoc(const string& cn, const list<value>& s) { + if (isNil(s)) + return s; + const string sn(scdl::name(car(s))); + const list<value> btoc(bindingToComponentAssoc(cn, sn, scdl::bindings(car(s)))); + if (isNil(btoc)) + return cons<value>(mklist<value>(defaultBindingURI(cn, sn), cn), serviceToComponentAssoc(cn, cdr(s))); + return append<value>(btoc, serviceToComponentAssoc(cn, cdr(s))); +} + +const list<value> uriToComponentAssoc(const list<value>& c) { + if (isNil(c)) + return c; + return append<value>(serviceToComponentAssoc(scdl::name(car(c)), scdl::services(car(c))), uriToComponentAssoc(cdr(c))); +} + +/** * Configure the components declared in the deployed composite. */ const failable<bool> confComponents(ServerConf& sc) { - if (!hasCompositeConf(sc)) + if (!hasContributionConf(sc)) return false; debug(sc.contributionPath, "modeval::confComponents::contributionPath"); + debug(sc.contributionPath, "modeval::confComponents::contributorName"); debug(sc.compositeName, "modeval::confComponents::compositeName"); if (sc.ca != "") debug(sc.ca, "modeval::confComponents::sslCA"); if (sc.cert != "") debug(sc.cert, "modeval::confComponents::sslCert"); if (sc.key != "") debug(sc.key, "modeval::confComponents::sslKey"); - // Read the components and get their implementation lambda functions + // Read the components and get their services, references and implementation + // lambda functions const failable<list<value> > comps = readComponents(scdl::resourcePath(sc.contributionPath, sc.compositeName)); if (!hasContent(comps)) return mkfailure<bool>(reason(comps)); + + const list<value> refs = componentReferenceToTargetAssoc(content(comps)); + debug(refs, "modeval::confComponents::references"); + sc.references = mkbtree(sort(refs)); + + const list<value> svcs = uriToComponentAssoc(content(comps)); + debug(svcs, "modeval::confComponents::services"); + sc.services = mkbtree(sort(svcs)); + sc.implementations = componentToImplementationAssoc(sc, content(comps)); debug(sc.implementations, "modeval::confComponents::implementations"); return true; @@ -781,21 +594,36 @@ const failable<bool> startComponents(ServerConf& sc) { /** * Configure and start the components deployed in a virtual host. */ -const failable<bool> virtualHostConfig(ServerConf& sc, const ServerConf& ssc, request_rec* r) { - debug(httpd::serverName(ssc.server), "modeval::virtualHostConfig::serverName"); - debug(httpd::serverName(r), "modeval::virtualHostConfig::virtualHostName"); - debug(ssc.virtualHostContributionPath, "modwiring::virtualHostConfig::virtualHostContributionPath"); - debug(sc.contributionPath, "modeval::virtualHostConfig::contributionPath"); - - // Chdir to the virtual host's contribution - if (chdir(c_str(sc.contributionPath)) != 0) - return mkfailure<bool>(string("Couldn't chdir to the deployed contribution: ") + sc.contributionPath); +const failable<bool> vhostConfig(ServerConf& sc, const ServerConf& ssc, request_rec* r) { + debug(httpd::serverName(ssc.server), "modeval::vhostConfig::serverName"); + debug(httpd::serverName(r), "modeval::vhostConfig::vhostName"); + debug(ssc.vhostContributionPath, "modeval::vhostConfig::vhostContributionPath"); + debug(sc.contributionPath, "modeval::vhostConfig::contributionPath"); // Configure the deployed components const failable<bool> cr = confComponents(sc); if (!hasContent(cr)) return cr; + // Store the virtual host configuration in the request config + + return true; +} + +/** + * Start the components deployed in a virtual host. + */ +const failable<bool> vhostStart(ServerConf& sc, const ServerConf& ssc, request_rec* r) { + debug(httpd::serverName(ssc.server), "modeval::vhostStart::serverName"); + debug(httpd::serverName(r), "modeval::vhostStart::vhostName"); + debug(ssc.vhostContributionPath, "modeval::vhostStart::vhostContributionPath"); + debug(sc.contributionPath, "modeval::vhostStart::contributionPath"); + + // Configure the components deployed in a virtual host + const failable<bool> cr = vhostConfig(sc, ssc, r); + if (!hasContent(cr)) + return cr; + // Start the configured components const failable<bool> sr = startComponents(sc); if (!hasContent(sr)) @@ -808,23 +636,441 @@ const failable<bool> virtualHostConfig(ServerConf& sc, const ServerConf& ssc, re } /** - * Cleanup a virtual host. + * Stop a virtual host. */ -const failable<bool> virtualHostCleanup(const ServerConf& sc, const ServerConf& ssc) { - if (!hasCompositeConf(sc)) +const failable<bool> vhostStop(const ServerConf& sc, unused const ServerConf& ssc) { + if (!hasContributionConf(sc)) return true; - debug("modeval::virtualHostCleanup"); + debug("modeval::vhostStop"); // Stop the component implementations applyLifecycleExpr(sc.implementations, mklist<value>("stop")); - // Chdir back to the main server's contribution - if (chdir(c_str(ssc.contributionPath)) != 0) - return mkfailure<bool>(string("Couldn't chdir to the deployed contribution: ") + ssc.contributionPath); return true; } /** + * Handle an HTTP GET. + */ +const failable<int> get(const list<value>& rpath, request_rec* r, const lambda<value(const list<value>&)>& impl) { + debug(r->uri, "modeval::get::uri"); + + // Inspect the query string + const list<list<value> > args = httpd::queryArgs(r); + const list<value> ia = assoc(value("id"), args); + const list<value> ma = assoc(value("method"), args); + + // Evaluate a JSON-RPC request and return a JSON result + if (!isNil(ia) && !isNil(ma)) { + + // Extract the request id, method and params + const value id = cadr(ia); + const value func = c_str(json::funcName(string(cadr(ma)))); + + // Apply the requested function + const failable<value> val = failableResult(impl(cons(func, json::queryParams(args)))); + if (!hasContent(val)) + return mkfailure<int>(reason(val)); + + // Return JSON result + js::JSContext cx; + return httpd::writeResult(json::jsonResult(id, content(val), cx), "application/json-rpc; charset=utf-8", r); + } + + // Evaluate the GET expression + const list<value> params(append<value>(cddr(rpath), mkvalues(args))); + const failable<value> val = failableResult(impl(cons<value>("get", mklist<value>(params)))); + if (!hasContent(val)) + return mkfailure<int>(reason(val)); + const value c = content(val); + debug(c, "modeval::get::content"); + + // Check if the client requested a specific format + const list<value> fmt = assoc<value>("format", args); + + // Write as a scheme value if requested by the client + if (!isNil(fmt) && cadr(fmt) == "scheme") + return httpd::writeResult(mklist<string>(scheme::writeValue(c)), "text/plain; charset=utf-8", r); + + // Write a simple value as a JSON value + if (!isList(c)) { + js::JSContext cx; + if (isSymbol(c)) { + const list<value> lc = mklist<value>(mklist<value>("name", value(string(c)))); + debug(lc, "modeval::get::symbol"); + return httpd::writeResult(json::writeJSON(valuesToElements(lc), cx), "application/json; charset=utf-8", r); + } + const list<value> lc = mklist<value>(mklist<value>("value", c)); + debug(lc, "modeval::get::value"); + return httpd::writeResult(json::writeJSON(valuesToElements(lc), cx), "application/json; charset=utf-8", r); + } + + // Write an empty list as a JSON empty value + if (isNil((list<value>)c)) { + js::JSContext cx; + debug(list<value>(), "modeval::get::empty"); + return httpd::writeResult(json::writeJSON(list<value>(), cx), "application/json; charset=utf-8", r); + } + + // Write content-type / content-list pair + if (isString(car<value>(c)) && !isNil(cdr<value>(c)) && isList(cadr<value>(c))) + return httpd::writeResult(convertValues<string>(cadr<value>(c)), car<value>(c), r); + + // Write an assoc value as a JSON result + if (isSymbol(car<value>(c)) && !isNil(cdr<value>(c))) { + js::JSContext cx; + const list<value> lc = mklist<value>(c); + debug(lc, "modeval::get::assoc"); + debug(valuesToElements(lc), "modeval::get::assoc::element"); + return httpd::writeResult(json::writeJSON(valuesToElements(lc), cx), "application/json; charset=utf-8", r); + } + + // Write value as JSON if requested by the client + if (!isNil(fmt) && cadr(fmt) == "json") { + js::JSContext cx; + return httpd::writeResult(json::writeJSON(valuesToElements(c), cx), "application/json; charset=utf-8", r); + } + + // Convert list of values to element values + const list<value> e = valuesToElements(c); + debug(e, "modeval::get::elements"); + + // Write an ATOM feed or entry + if (isList(car<value>(e)) && !isNil(car<value>(e))) { + const list<value> el = car<value>(e); + if (isSymbol(car<value>(el)) && car<value>(el) == element && !isNil(cdr<value>(el)) && isSymbol(cadr<value>(el)) && elementHasChildren(el) && !elementHasValue(el)) { + if (cadr<value>(el) == atom::feed) + return httpd::writeResult(atom::writeATOMFeed(e), "application/atom+xml; charset=utf-8", r); + if (cadr<value>(el) == atom::entry) + return httpd::writeResult(atom::writeATOMEntry(e), "application/atom+xml; charset=utf-8", r); + } + } + + // Write any other compound value as a JSON value + js::JSContext cx; + return httpd::writeResult(json::writeJSON(e, cx), "application/json; charset=utf-8", r); +} + +/** + * Handle an HTTP POST. + */ +const failable<int> post(const list<value>& rpath, request_rec* r, const lambda<value(const list<value>&)>& impl) { + debug(r->uri, "modeval::post::uri"); + + // Evaluate a JSON-RPC request and return a JSON result + const string ct = httpd::contentType(r); + if (contains(ct, "application/json-rpc") || contains(ct, "text/plain") || contains(ct, "application/x-www-form-urlencoded")) { + + // Read the JSON request + const int rc = httpd::setupReadPolicy(r); + if(rc != OK) + return rc; + const list<string> ls = httpd::read(r); + debug(ls, "modeval::post::input"); + js::JSContext cx; + const list<value> json = elementsToValues(content(json::readJSON(ls, cx))); + const list<list<value> > args = httpd::postArgs(json); + + // Extract the request id, method and params + const value id = cadr(assoc(value("id"), args)); + const value func = c_str(json::funcName(cadr(assoc(value("method"), args)))); + const list<value> params = (list<value>)cadr(assoc(value("params"), args)); + + // Evaluate the request expression + const failable<value> val = failableResult(impl(cons<value>(func, params))); + if (!hasContent(val)) + return mkfailure<int>(reason(val)); + + // Return JSON result + return httpd::writeResult(json::jsonResult(id, content(val), cx), "application/json-rpc; charset=utf-8", r); + } + + // Evaluate an ATOM POST request and return the location of the corresponding created resource + if (contains(ct, "application/atom+xml")) { + + // Read the ATOM entry + const int rc = httpd::setupReadPolicy(r); + if(rc != OK) + return rc; + const list<string> ls = httpd::read(r); + debug(ls, "modeval::post::input"); + const value entry = elementsToValues(content(atom::readATOMEntry(ls))); + + // Evaluate the POST expression + const failable<value> val = failableResult(impl(cons<value>("post", mklist<value>(cddr(rpath), entry)))); + if (!hasContent(val)) + return mkfailure<int>(reason(val)); + + // Return the created resource location + debug(content(val), "modeval::post::location"); + apr_table_setn(r->headers_out, "Location", apr_pstrdup(r->pool, c_str(httpd::url(r->uri, content(val), r)))); + r->status = HTTP_CREATED; + return OK; + } + + // Unknown content type, wrap the HTTP request struct in a value and pass it to + // the component implementation function + const failable<value> val = failableResult(impl(cons<value>("handle", mklist<value>(httpd::requestValue(r))))); + if (!hasContent(val)) + return mkfailure<int>(reason(val)); + return (int)content(val); +} + +/** + * Handle an HTTP PUT. + */ +const failable<int> put(const list<value>& rpath, request_rec* r, const lambda<value(const list<value>&)>& impl) { + debug(r->uri, "modeval::put::uri"); + + // Read the ATOM entry + const int rc = httpd::setupReadPolicy(r); + if(rc != OK) + return rc; + const list<string> ls = httpd::read(r); + debug(ls, "modeval::put::input"); + const value entry = elementsToValues(content(atom::readATOMEntry(ls))); + + // Evaluate the PUT expression and update the corresponding resource + const failable<value> val = failableResult(impl(cons<value>("put", mklist<value>(cddr(rpath), entry)))); + if (!hasContent(val)) + return mkfailure<int>(reason(val)); + if (val == value(false)) + return HTTP_NOT_FOUND; + return OK; +} + +/** + * Handle an HTTP DELETE. + */ +const failable<int> del(const list<value>& rpath, request_rec* r, const lambda<value(const list<value>&)>& impl) { + debug(r->uri, "modeval::delete::uri"); + + // Evaluate an ATOM delete request + const failable<value> val = failableResult(impl(cons<value>("delete", mklist<value>(cddr(rpath))))); + if (!hasContent(val)) + return mkfailure<int>(reason(val)); + if (val == value(false)) + return HTTP_NOT_FOUND; + return OK; +} + +/** + * Route a /references/component-name/reference-name request, + * to the target of the component reference. + */ +int translateReference(const ServerConf& sc, request_rec *r, const list<value>& rpath, const list<value>& apath) { + httpdDebugRequest(r, "modeval::translateReference::input"); + debug(r->uri, "modeval::translateReference::uri"); + debug(apath, "modeval::translateReference::apath"); + debug(rpath, "modeval::translateReference::rpath"); + + // Find the requested component + if (isNil(cdr(rpath))) + return HTTP_NOT_FOUND; + const list<value> comp(assoctree(cadr(rpath), sc.references)); + if (isNil(comp)) + return HTTP_NOT_FOUND; + + // Find the requested reference and target configuration + const list<value> ref(assoctree<value>(caddr(rpath), cadr(comp))); + if (isNil(ref)) + return HTTP_NOT_FOUND; + const string target(cadr(ref)); + debug(target, "modeval::translateReference::target"); + + // Route to an absolute target URI using mod_proxy or an HTTP client redirect + const list<value> pathInfo = cdddr(rpath); + if (http::isAbsolute(target)) { + if (useModProxy) { + // Build proxy URI + string turi = target + path(pathInfo) + (r->args != NULL? string("?") + r->args : string("")); + const string proxy(string("proxy:") + turi); + debug(proxy, "modeval::translateReference::proxy"); + r->filename = apr_pstrdup(r->pool, c_str(proxy)); + r->proxyreq = PROXYREQ_REVERSE; + r->handler = "proxy-server"; + apr_table_setn(r->notes, "proxy-nocanon", "1"); + return OK; + } + + debug(target, "modeval::translateReference::location"); + r->handler = "mod_tuscany_eval"; + return httpd::externalRedirect(target, r); + } + + // Route to a relative target URI using a local internal redirect + // /components/, target component name and request path info + const value tname = substr(target, 0, find(target, '/')); + const string redir = path(append(apath, cons<value>(string("c"), cons(tname, pathInfo)))); + debug(redir, "modeval::translateReference::redirect"); + r->uri = apr_pstrdup(r->pool, c_str(redir)); + r->handler = "mod_tuscany_eval"; + return OK; +} + +/** + * Find a leaf matching a request path in a tree of URI paths. + */ +const int matchPath(const list<value>& k, const list<value>& p) { + if (isNil(p)) + return true; + if (isNil(k)) + return false; + if (car(k) != car(p)) + return false; + return matchPath(cdr(k), cdr(p)); +} + +const list<value> assocPath(const value& k, const list<value>& tree) { + if (isNil(tree)) + return tree; + if (matchPath(k, car<value>(car(tree)))) + return car(tree); + if (k < car<value>(car(tree))) + return assocPath(k, cadr(tree)); + return assocPath(k, caddr(tree)); +} + +/** + * Route a service request to the component providing the requested service. + */ +int translateService(const ServerConf& sc, request_rec *r, const list<value>& rpath, const list<value>& apath) { + httpdDebugRequest(r, "modeval::translateService::input"); + debug(r->uri, "modeval::translateService::uri"); + + // Find the requested component + debug(sc.services, "modeval::translateService::services"); + const list<value> svc(assocPath(rpath, sc.services)); + if (isNil(svc)) + return DECLINED; + debug(svc, "modeval::translateService::service"); + + // Build a component-name + path-info URI + const list<value> target(append(apath, cons<value>(string("c"), cons<value>(cadr(svc), httpd::pathInfo(rpath, car(svc)))))); + debug(target, "modeval::translateService::target"); + + // Dispatch to the target component using a local internal redirect + const string redir(path(target)); + debug(redir, "modeval::translateService::redirect"); + r->uri = apr_pstrdup(r->pool, c_str(redir)); + r->handler = "mod_tuscany_eval"; + return OK; +} + +/** + * Translate a request to the target app and component. + */ +const int translateRequest(const ServerConf& sc, request_rec* r, const list<value>& rpath, const list<value>& apath) { + debug(apath, "modeval::translateRequest::apath"); + debug(rpath, "modeval::translateRequest::rpath"); + if (isNil(apath) && isNil(rpath)) + return DECLINED; + + if (!isNil(rpath)) { + + // If the request is targeting a virtual host, use the corresponding + // virtual host configuration + if (isNil(apath)) { + if (hasVhostDomainConf(sc) && hasVhostContributionConf(sc) && httpd::isVhostRequest(sc.server, sc.vhostDomain, r)) { + const string aname = httpd::hostName(r); + ServerConf vsc(r->pool, sc, aname); + if (!hasContent(vhostConfig(vsc, sc, r))) + return DECLINED; + return translateRequest(vsc, r, rpath, mklist<value>(aname)); + } + } + + // Let default handler handle a resource request + const value prefix = car(rpath); + if (prefix == string("vhosts") || prefix == string("v")) + return DECLINED; + + // Let our handler handle a component request + if (prefix == string("components") || prefix == string("c")) { + r->handler = "mod_tuscany_eval"; + return OK; + } + + // Translate a component reference request + if (prefix == string("references") || prefix == string("r")) + return translateReference(sc, r, rpath, apath); + + // Attempt to translate the request to a service request + if (translateService(sc, r, rpath, apath) == OK) + return OK; + + // Attempt to map the request to an actual file + if (isNil(apath)) { + const failable<request_rec*, int> fnr = httpd::internalSubRequest(r->uri, r); + if (!hasContent(fnr)) + return HTTP_INTERNAL_SERVER_ERROR; + request_rec* nr = content(fnr); + nr->uri = r->filename; + const int tr = ap_core_translate(nr); + if (tr != OK) + return tr; + if (ap_directory_walk(nr) == OK && ap_file_walk(nr) == OK && nr->finfo.filetype != APR_NOFILE) { + debug(nr->filename, "modeval::translateRequest::file"); + return DECLINED; + } + + // If the request is targeting a virtual app, use the corresponding + // virtual host configuration + if (hasVhostContributionConf(sc)) { + const string cp = sc.vhostContributionPath + string(prefix) + "/" + sc.vhostCompositeName; + ServerConf vsc(r->pool, sc, string(prefix)); + if (!hasContent(vhostConfig(vsc, sc, r))) + return DECLINED; + return translateRequest(vsc, r, cdr(rpath), mklist<value>(car(rpath))); + } + } + } + + // If we're in a virtual app and the request didn't match a service, + // reference or component, redirect it to /v/<uri>. This will allow + // mapping to the actual app resources using HTTPD aliases. + if (!isNil(apath)) { + if (isNil(rpath) && r->uri[strlen(r->uri) -1] != '/') { + + // Make sure a document root request ends with a '/', using + // an external redirect + const string target = string(r->uri) + string("/") + (r->args != NULL? string("?") + r->args : string(""));; + debug(target, "modeval::translateRequest::location"); + r->handler = "mod_tuscany_eval"; + return httpd::externalRedirect(target, r); + } + + // Do an internal redirect to /v/<uri> + const string redir = string("/redirect:") + string("/v") + string(r->uri); + debug(redir, "modeval::translateRequest::redirect"); + r->filename = apr_pstrdup(r->pool, c_str(redir)); + r->handler = "mod_tuscany_eval"; + return OK; + } + + return DECLINED; +} + +/** + * Translate a request. + */ +int translate(request_rec *r) { + if(r->method_number != M_GET && r->method_number != M_POST && r->method_number != M_PUT && r->method_number != M_DELETE) + return DECLINED; + + // Create a scoped memory pool + gc_scoped_pool pool(r->pool); + + httpdDebugRequest(r, "modeval::translate::input"); + + // Get the server configuration + const ServerConf& sc = httpd::serverConf<ServerConf>(r, &mod_tuscany_eval); + + // Translate the request + return translateRequest(sc, r, pathValues(r->uri), list<value>()); +} + +/** * Handle a component request. */ const int handleRequest(const ServerConf& sc, const list<value>& rpath, request_rec *r) { @@ -832,45 +1078,44 @@ const int handleRequest(const ServerConf& sc, const list<value>& rpath, request_ if (isNil(cdr(rpath))) return HTTP_NOT_FOUND; - // Handle a request targeting a virtual host or virtual app - if (hasVirtualCompositeConf(sc)) { - if (hasVirtualDomainConf(sc) && httpd::isVirtualHostRequest(sc.server, sc.virtualHostDomain, r)) { + if (hasVhostContributionConf(sc)) { + + // Handle a request targeting a component in a virtual host + if (hasVhostDomainConf(sc) && httpd::isVhostRequest(sc.server, sc.vhostDomain, r)) { // Determine the app name from the host sub-domain name, and - // store it in a header + // store it in a request note const string app = http::subDomain(httpd::hostName(r)); - apr_table_setn(r->headers_in, "X-Request-AppName", apr_pstrdup(r->pool, c_str(app))); + apr_table_setn(r->notes, "X-Request-AppName", apr_pstrdup(r->pool, c_str(app))); ServerConf vsc(r->pool, sc, app); - if (!hasContent(virtualHostConfig(vsc, sc, r))) + if (!hasContent(vhostStart(vsc, sc, r))) return HTTP_INTERNAL_SERVER_ERROR; const int rc = handleRequest(vsc, rpath, r); - virtualHostCleanup(vsc, sc); + vhostStop(vsc, sc); return rc; } + // Handle a request targeting a component in a virtual app const value c = car(rpath); if (c != string("components") && c != string("c")) { - // Determine the app name from the request URI path + // Determine the app name from the request URI path and + // store it in a request note const string app = string(c); - const string cp = sc.virtualHostContributionPath + app + "/" + sc.virtualHostCompositeName; - struct stat st; - const int s = stat(c_str(cp), &st); - if (s != -1) { - // Store the app name in a header - apr_table_setn(r->headers_in, "X-Request-AppName", apr_pstrdup(r->pool, c_str(app))); - ServerConf vsc(r->pool, sc, app); - if (!hasContent(virtualHostConfig(vsc, sc, r))) - return HTTP_INTERNAL_SERVER_ERROR; - const int rc = handleRequest(vsc, cdr(rpath), r); - virtualHostCleanup(vsc, sc); - return rc; - } + const string cp = sc.vhostContributionPath + app + "/" + sc.vhostCompositeName; + apr_table_setn(r->notes, "X-Request-AppName", apr_pstrdup(r->pool, c_str(app))); + + ServerConf vsc(r->pool, sc, app); + if (!hasContent(vhostStart(vsc, sc, r))) + return HTTP_INTERNAL_SERVER_ERROR; + const int rc = handleRequest(vsc, cdr(rpath), r); + vhostStop(vsc, sc); + return rc; } } - // Store the request uri path in a header - apr_table_setn(r->headers_in, "X-Request-URI", apr_pstrdup(r->pool, c_str(path(rpath)))); + // Store the request uri path in a request note + apr_table_setn(r->notes, "X-Request-URI", apr_pstrdup(r->pool, c_str(path(rpath)))); // Get the component implementation lambda const list<value> impl(assoctree<value>(cadr(rpath), sc.implTree)); @@ -903,11 +1148,20 @@ int handler(request_rec *r) { if(strcmp(r->handler, "mod_tuscany_eval")) return DECLINED; - // Create a scoped memory pool - gc_scoped_pool pool(r->pool); + // Nothing to do for an external redirect + if (r->status == HTTP_MOVED_TEMPORARILY) + return OK; + // Handle an internal redirect as directed by the translate hook + if (r->filename != NULL && !strncmp(r->filename, "/redirect:", 10)) { + if (r->args == NULL) + return httpd::internalRedirect(httpd::redirectURI(string(r->filename + 10), string(r->path_info)), r); + return httpd::internalRedirect(httpd::redirectURI(string(r->filename + 10), string(r->path_info), string(r->args)), r); + } + + + // Create a scope for the current request ScopedRequest sr(r); - httpdDebugRequest(r, "modeval::handler::input"); // Get the server configuration const ServerConf& sc = httpd::serverConf<ServerConf>(r, &mod_tuscany_eval); @@ -946,16 +1200,21 @@ const int postConfigMerge(const ServerConf& mainsc, server_rec* s) { ServerConf& sc = httpd::serverConf<ServerConf>(s, &mod_tuscany_eval); debug(httpd::serverName(s), "modeval::postConfigMerge::serverName"); sc.lifecycle = mainsc.lifecycle; + sc.vhostName = mainsc.vhostName; sc.contributionPath = mainsc.contributionPath; sc.compositeName = mainsc.compositeName; - sc.virtualHostDomain = mainsc.virtualHostDomain; - sc.virtualHostContributionPath = mainsc.virtualHostContributionPath; - sc.virtualHostCompositeName = mainsc.virtualHostCompositeName; + sc.vhostDomain = mainsc.vhostDomain; + sc.vhostContributionPath = mainsc.vhostContributionPath; + sc.vhostCompositeName = mainsc.vhostCompositeName; + sc.vhostContributorName = mainsc.vhostContributorName; if (sc.ca == "") sc.ca = mainsc.ca; if (sc.cert == "") sc.cert = mainsc.cert; if (sc.key == "") sc.key = mainsc.key; + sc.references = mainsc.references; + sc.services = mainsc.services; sc.implementations = mainsc.implementations; sc.implTree = mainsc.implTree; + sc.vhostContributor = mainsc.vhostContributor; return postConfigMerge(mainsc, s->next); } @@ -964,7 +1223,7 @@ int postConfig(apr_pool_t *p, unused apr_pool_t *plog, unused apr_pool_t *ptemp, gc_scoped_pool pool(p); - // Get the server configuration and determine the wiring server name + // Get the server configuration and determine the server name ServerConf& sc = httpd::serverConf<ServerConf>(s, &mod_tuscany_eval); debug(httpd::serverName(s), "modeval::postConfig::serverName"); @@ -1037,6 +1296,10 @@ void childInit(apr_pool_t* p, server_rec* s) { // Store the implementation lambda functions in a tree for fast retrieval sc.implTree = mkbtree(sort(sc.implementations)); + // Create a proxy for the vhost contributor if needed + if (length(sc.vhostContributorName) != 0) + sc.vhostContributor = mkimplProxy(sc, sc.vhostContributorName); + // Merge the updated configuration into the virtual hosts postConfigMerge(sc, s->next); @@ -1062,19 +1325,25 @@ const char* confComposite(cmd_parms *cmd, unused void *c, const char *arg) { const char* confVirtualDomain(cmd_parms *cmd, unused void *c, const char *arg) { gc_scoped_pool pool(cmd->pool); ServerConf& sc = httpd::serverConf<ServerConf>(cmd, &mod_tuscany_eval); - sc.virtualHostDomain = arg; + sc.vhostDomain = arg; return NULL; } const char* confVirtualContribution(cmd_parms *cmd, unused void *c, const char *arg) { gc_scoped_pool pool(cmd->pool); ServerConf& sc = httpd::serverConf<ServerConf>(cmd, &mod_tuscany_eval); - sc.virtualHostContributionPath = arg; + sc.vhostContributionPath = arg; + return NULL; +} +const char* confVirtualContributor(cmd_parms *cmd, unused void *c, const char *arg) { + gc_scoped_pool pool(cmd->pool); + ServerConf& sc = httpd::serverConf<ServerConf>(cmd, &mod_tuscany_eval); + sc.vhostContributorName = arg; return NULL; } const char* confVirtualComposite(cmd_parms *cmd, unused void *c, const char *arg) { gc_scoped_pool pool(cmd->pool); ServerConf& sc = httpd::serverConf<ServerConf>(cmd, &mod_tuscany_eval); - sc.virtualHostCompositeName = arg; + sc.vhostCompositeName = arg; return NULL; } const char* confCAFile(cmd_parms *cmd, unused void *c, const char *arg) { @@ -1108,7 +1377,8 @@ const command_rec commands[] = { AP_INIT_TAKE1("SCAContribution", (const char*(*)())confContribution, NULL, RSRC_CONF, "SCA contribution location"), AP_INIT_TAKE1("SCAComposite", (const char*(*)())confComposite, NULL, RSRC_CONF, "SCA composite location"), AP_INIT_TAKE1("SCAVirtualDomain", (const char*(*)())confVirtualDomain, NULL, RSRC_CONF, "SCA virtual host domain"), - AP_INIT_TAKE1("SCAVirtualContribution", (const char*(*)())confVirtualContribution, NULL, RSRC_CONF, "SCA virtual host contribution location"), + AP_INIT_TAKE1("SCAVirtualContribution", (const char*(*)())confVirtualContribution, NULL, RSRC_CONF, "SCA virtual host contribution path"), + AP_INIT_TAKE1("SCAVirtualContributor", (const char*(*)())confVirtualContributor, NULL, RSRC_CONF, "SCA virtual host contributor component"), AP_INIT_TAKE1("SCAVirtualComposite", (const char*(*)())confVirtualComposite, NULL, RSRC_CONF, "SCA virtual composite location"), AP_INIT_TAKE12("SCASetEnv", (const char*(*)())confEnv, NULL, OR_FILEINFO, "Environment variable name and optional value"), AP_INIT_TAKE1("SCAWiringSSLCACertificateFile", (const char*(*)())confCAFile, NULL, RSRC_CONF, "SCA wiring SSL CA certificate file"), @@ -1122,7 +1392,7 @@ void registerHooks(unused apr_pool_t *p) { ap_hook_post_config(postConfig, NULL, NULL, APR_HOOK_MIDDLE); ap_hook_child_init(childInit, NULL, NULL, APR_HOOK_MIDDLE); ap_hook_handler(handler, NULL, NULL, APR_HOOK_MIDDLE); - ap_hook_translate_name(translate, NULL, NULL, APR_HOOK_FIRST); + ap_hook_translate_name(translate, NULL, NULL, APR_HOOK_LAST); } } diff --git a/sca-cpp/trunk/modules/server/mod-wiring.cpp b/sca-cpp/trunk/modules/server/mod-wiring.cpp deleted file mode 100644 index 0dd0529a42..0000000000 --- a/sca-cpp/trunk/modules/server/mod-wiring.cpp +++ /dev/null @@ -1,530 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* $Rev$ $Date$ */ - -/** - * HTTPD module used to wire component references and route requests to - * target service components. - */ - -#include <sys/stat.h> - -#define WANT_HTTPD_LOG 1 -#include "string.hpp" -#include "stream.hpp" -#include "list.hpp" -#include "tree.hpp" -#include "value.hpp" -#include "monad.hpp" -#include "../scdl/scdl.hpp" -#include "../http/http.hpp" -#include "../http/httpd.hpp" - -extern "C" { -extern module AP_MODULE_DECLARE_DATA mod_tuscany_wiring; -} - -namespace tuscany { -namespace server { -namespace modwiring { - -/** - * Set to true to wire using mod_proxy, false to wire using HTTP client redirects. - */ -const bool useModProxy = true; - -/** - * Server configuration. - */ -class ServerConf { -public: - ServerConf(apr_pool_t* p, server_rec* s) : p(p), server(s), contributionPath(""), compositeName(""), virtualHostDomain(""), virtualHostContributionPath(""), virtualHostCompositeName("") { - } - - ServerConf(apr_pool_t* p, const ServerConf& ssc, const string& name) : p(p), server(ssc.server), contributionPath(ssc.virtualHostContributionPath + name + "/"), compositeName(ssc.virtualHostCompositeName), virtualHostDomain(""), virtualHostContributionPath(""), virtualHostCompositeName("") { - } - - const gc_pool p; - server_rec* server; - string contributionPath; - string compositeName; - string virtualHostDomain; - string virtualHostContributionPath; - string virtualHostCompositeName; - list<value> references; - list<value> services; -}; - -/** - * Return true if a server contains a composite configuration. - */ -const bool hasCompositeConf(const ServerConf& sc) { - return sc.contributionPath != "" && sc.compositeName != ""; -} - -/** - * Return true if a server contains a virtual host domain configuration. - */ -const bool hasVirtualDomainConf(const ServerConf& sc) { - return sc.virtualHostDomain != ""; -} - -/** - * Return true if a server contains a virtual host composite configuration. - */ -const bool hasVirtualCompositeConf(const ServerConf& sc) { - return sc.virtualHostContributionPath != "" && sc.virtualHostCompositeName != ""; -} - -/** - * Route a /references/component-name/reference-name request, - * to the target of the component reference. - */ -int translateReference(const ServerConf& sc, request_rec *r, const list<value>& rpath, const list<value>& apath) { - httpdDebugRequest(r, "modwiring::translateReference::input"); - debug(r->uri, "modwiring::translateReference::uri"); - debug(apath, "modwiring::translateReference::apath"); - debug(rpath, "modwiring::translateReference::rpath"); - - // Find the requested component - if (isNil(cdr(rpath))) - return HTTP_NOT_FOUND; - const list<value> comp(assoctree(cadr(rpath), sc.references)); - if (isNil(comp)) - return HTTP_NOT_FOUND; - - // Find the requested reference and target configuration - const list<value> ref(assoctree<value>(caddr(rpath), cadr(comp))); - if (isNil(ref)) - return HTTP_NOT_FOUND; - const string target(cadr(ref)); - debug(target, "modwiring::translateReference::target"); - - // Route to an absolute target URI using mod_proxy or an HTTP client redirect - const list<value> pathInfo = cdddr(rpath); - if (http::isAbsolute(target)) { - if (useModProxy) { - // Build proxy URI - string turi = target + path(pathInfo) + (r->args != NULL? string("?") + r->args : string("")); - const string proxy(string("proxy:") + turi); - debug(proxy, "modwiring::translateReference::proxy"); - r->filename = apr_pstrdup(r->pool, c_str(proxy)); - r->proxyreq = PROXYREQ_REVERSE; - r->handler = "proxy-server"; - apr_table_setn(r->notes, "proxy-nocanon", "1"); - return OK; - } - - debug(target, "modwiring::translateReference::location"); - r->handler = "mod_tuscany_wiring"; - return httpd::externalRedirect(target, r); - } - - // Route to a relative target URI using a local internal redirect - // /components/, target component name and request path info - const value tname = substr(target, 0, find(target, '/')); - const string tp = path(append(apath, cons<value>(string("c"), cons(tname, pathInfo)))) + (r->args != NULL? string("?") + r->args : string("")); - const string redir(string("/redirect:") + tp); - debug(redir, "modwiring::translateReference::redirect"); - r->filename = apr_pstrdup(r->pool, c_str(redir)); - r->handler = "mod_tuscany_wiring"; - return OK; -} - -/** - * Find a leaf matching a request path in a tree of URI paths. - */ -const int matchPath(const list<value>& k, const list<value>& p) { - if (isNil(p)) - return true; - if (isNil(k)) - return false; - if (car(k) != car(p)) - return false; - return matchPath(cdr(k), cdr(p)); -} - -const list<value> assocPath(const value& k, const list<value>& tree) { - if (isNil(tree)) - return tree; - if (matchPath(k, car<value>(car(tree)))) - return car(tree); - if (k < car<value>(car(tree))) - return assocPath(k, cadr(tree)); - return assocPath(k, caddr(tree)); -} - -/** - * Route a service request to the component providing the requested service. - */ -int translateService(const ServerConf& sc, request_rec *r, const list<value>& rpath, const list<value>& apath) { - httpdDebugRequest(r, "modwiring::translateService::input"); - debug(r->uri, "modwiring::translateService::uri"); - - // Find the requested component - debug(sc.services, "modwiring::translateService::services"); - const list<value> svc(assocPath(rpath, sc.services)); - if (isNil(svc)) - return DECLINED; - debug(svc, "modwiring::translateService::service"); - - // Build a component-name + path-info URI - const list<value> target(append(apath, cons<value>(string("c"), cons<value>(cadr(svc), httpd::pathInfo(rpath, car(svc)))))); - debug(target, "modwiring::translateService::target"); - - // Dispatch to the target component using a local internal redirect - const string tp(path(target) + (r->args != NULL? string("?") + r->args : string(""))); - const string redir(string("/redirect:") + tp); - debug(redir, "modwiring::translateService::redirect"); - r->filename = apr_pstrdup(r->pool, c_str(redir)); - r->handler = "mod_tuscany_wiring"; - return OK; -} - -/** - * Read the components declared in a composite. - */ -const failable<list<value> > readComponents(const string& path) { - ifstream is(path); - if (fail(is)) - return mkfailure<list<value> >(string("Could not read composite: ") + path); - return scdl::components(readXML(streamList(is))); -} - -/** - * Return a list of component-name + references pairs. The references are - * arranged in trees of reference-name + reference-target pairs. - */ -const list<value> componentReferenceToTargetTree(const value& c) { - return mklist<value>(scdl::name(c), mkbtree(sort(scdl::referenceToTargetAssoc(scdl::references(c))))); -} - -const list<value> componentReferenceToTargetAssoc(const list<value>& c) { - if (isNil(c)) - return c; - return cons<value>(componentReferenceToTargetTree(car(c)), componentReferenceToTargetAssoc(cdr(c))); -} - -/** - * Return a list of service-URI-path + component-name pairs. Service-URI-paths are - * represented as lists of URI path fragments. - */ -const list<value> defaultBindingURI(const string& cn, const string& sn) { - return mklist<value>(cn, sn); -} - -const list<value> bindingToComponentAssoc(const string& cn, const string& sn, const list<value>& b) { - if (isNil(b)) - return b; - const value uri(scdl::uri(car(b))); - if (isNil(uri)) - return cons<value>(mklist<value>(defaultBindingURI(cn, sn), cn), bindingToComponentAssoc(cn, sn, cdr(b))); - return cons<value>(mklist<value>(pathValues(c_str(string(uri))), cn), bindingToComponentAssoc(cn, sn, cdr(b))); -} - -const list<value> serviceToComponentAssoc(const string& cn, const list<value>& s) { - if (isNil(s)) - return s; - const string sn(scdl::name(car(s))); - const list<value> btoc(bindingToComponentAssoc(cn, sn, scdl::bindings(car(s)))); - if (isNil(btoc)) - return cons<value>(mklist<value>(defaultBindingURI(cn, sn), cn), serviceToComponentAssoc(cn, cdr(s))); - return append<value>(btoc, serviceToComponentAssoc(cn, cdr(s))); -} - -const list<value> uriToComponentAssoc(const list<value>& c) { - if (isNil(c)) - return c; - return append<value>(serviceToComponentAssoc(scdl::name(car(c)), scdl::services(car(c))), uriToComponentAssoc(cdr(c))); -} - -/** - * Configure the components declared in the server's deployment composite. - */ -const bool confComponents(ServerConf& sc) { - if (!hasCompositeConf(sc)) - return true; - debug(sc.contributionPath, "modwiring::confComponents::contributionPath"); - debug(sc.compositeName, "modwiring::confComponents::compositeName"); - - // Read the component configuration and store the references and service URIs - // in trees for fast retrieval later - const failable<list<value> > comps = readComponents(scdl::resourcePath(sc.contributionPath, sc.compositeName)); - if (!hasContent(comps)) - return true; - const list<value> refs = componentReferenceToTargetAssoc(content(comps)); - debug(refs, "modwiring::confComponents::references"); - sc.references = mkbtree(sort(refs)); - - const list<value> svcs = uriToComponentAssoc(content(comps)); - debug(svcs, "modwiring::confComponents::services"); - sc.services = mkbtree(sort(svcs)); - return true; -} - -/** - * Configure and start the components deployed in a virtual host. - */ -const failable<ServerConf> virtualHostConfig(ServerConf& sc, const ServerConf& ssc, request_rec* r) { - debug(httpd::serverName(ssc.server), "modwiring::virtualHostConfig::serverName"); - debug(httpd::serverName(r), "modwiring::virtualHostConfig::virtualHostName"); - debug(ssc.virtualHostContributionPath, "modwiring::virtualHostConfig::virtualHostContributionPath"); - debug(sc.contributionPath, "modwiring::virtualHostConfig::contributionPath"); - - // Configure the wiring for the deployed components - confComponents(sc); - - return sc; -} - -/** - * Translate an HTTP service or reference request and route it - * to the target component. - */ -const int translateRequest(const ServerConf& sc, request_rec *r, const list<value>& rpath, const list<value>& apath) { - debug(apath, "modwiring::translateRequest::apath"); - debug(rpath, "modwiring::translateRequest::rpath"); - if (isNil(apath) && isNil(rpath)) - return DECLINED; - - if (!isNil(rpath)) { - - // No translation needed for a component or resource request - const value c = car(rpath); - if (c == string("components") || c == string("c") || c == string("vhosts") || c == string("v")) - return DECLINED; - - // If the request is targeting a virtual host, use the corresponding - // virtual host configuration - const bool vdc = hasVirtualDomainConf(sc); - const bool vcc = hasVirtualCompositeConf(sc); - if (vdc && vcc && httpd::isVirtualHostRequest(sc.server, sc.virtualHostDomain, r)) { - ServerConf vsc(r->pool, sc, http::subDomain(httpd::hostName(r))); - if (!hasContent(virtualHostConfig(vsc, sc, r))) - return HTTP_INTERNAL_SERVER_ERROR; - return translateRequest(vsc, r, rpath, list<value>()); - } - - // Translate a component reference request - if (c == string("references") || c == string("r")) - return translateReference(sc, r, rpath, apath); - - // Attempt to translate the request to a service request - if (translateService(sc, r, rpath, apath) == OK) - return OK; - - // If the request is targeting a virtual app, use the corresponding - // virtual host configuration - if (vcc) { - const string cp = sc.virtualHostContributionPath + string(c) + "/" + sc.virtualHostCompositeName; - struct stat st; - const int s = stat(c_str(cp), &st); - if (s == -1) - return DECLINED; - ServerConf vsc(r->pool, sc, string(c)); - if (!hasContent(virtualHostConfig(vsc, sc, r))) - return HTTP_INTERNAL_SERVER_ERROR; - return translateRequest(vsc, r, cdr(rpath), mklist<value>(car(rpath))); - } - } - - // If we're in a virtual app and the request is targeting a regular - // resource, redirect it to /v/<uri>. This will allow mapping to the - // actual resources using HTTPD aliases. - if (!isNil(apath)) { - const string tp = string("/v") + string(r->uri) + (r->args != NULL? string("?") + r->args : string("")); - const string redir = string("/redirect:") + tp; - debug(redir, "modwiring::translateRequest::redirect"); - r->filename = apr_pstrdup(r->pool, c_str(redir)); - r->handler = "mod_tuscany_wiring"; - return OK; - } - - return DECLINED; -} - -/** - * Translate an HTTP service or reference request and route it - * to the target component. - */ -int translate(request_rec *r) { - if(r->method_number != M_GET && r->method_number != M_POST && r->method_number != M_PUT && r->method_number != M_DELETE) - return DECLINED; - - // Create a scoped memory pool - gc_scoped_pool pool(r->pool); - httpdDebugRequest(r, "modwiring::translate::input"); - - // Get the server configuration - const ServerConf& sc = httpd::serverConf<ServerConf>(r, &mod_tuscany_wiring); - - // Translate the request - return translateRequest(sc, r, pathValues(r->uri), list<value>()); -} - -/** - * HTTP request handler, redirect to a target component. - */ -int handler(request_rec *r) { - if(r->method_number != M_GET && r->method_number != M_POST && r->method_number != M_PUT && r->method_number != M_DELETE) - return DECLINED; - if(strcmp(r->handler, "mod_tuscany_wiring")) - return DECLINED; - if (r->filename == NULL || strncmp(r->filename, "/redirect:", 10) != 0) - return DECLINED; - - // Nothing to do for an external redirect - if (r->status == HTTP_MOVED_TEMPORARILY) - return OK; - - // Create a scoped memory pool - gc_scoped_pool pool(r->pool); - - httpdDebugRequest(r, "modwiring::handler::input"); - debug(r->uri, "modwiring::handler::uri"); - debug(r->filename, "modwiring::handler::filename"); - debug(r->path_info, "modwiring::handler::path info"); - - // Do an internal redirect - if (r->args == NULL) - return httpd::internalRedirect(httpd::redirectURI(string(r->filename + 10), string(r->path_info)), r); - return httpd::internalRedirect(httpd::redirectURI(string(r->filename + 10), string(r->path_info), string(r->args)), r); -} - -/** - * Called after all the configuration commands have been run. - * Process the server configuration and configure the wiring for the deployed components. - */ -const int postConfigMerge(const ServerConf& mainsc, server_rec* s) { - if (s == NULL) - return OK; - debug(httpd::serverName(s), "modwiring::postConfigMerge::serverName"); - ServerConf& sc = httpd::serverConf<ServerConf>(s, &mod_tuscany_wiring); - sc.contributionPath = mainsc.contributionPath; - sc.compositeName = mainsc.compositeName; - sc.virtualHostDomain = mainsc.virtualHostDomain; - sc.virtualHostContributionPath = mainsc.virtualHostContributionPath; - sc.virtualHostCompositeName = mainsc.virtualHostCompositeName; - sc.references = mainsc.references; - sc.services = mainsc.services; - return postConfigMerge(mainsc, s->next); -} - -int postConfig(apr_pool_t *p, unused apr_pool_t *plog, unused apr_pool_t *ptemp, server_rec *s) { - gc_scoped_pool pool(p); - - // Count the calls to post config, skip the first one as - // postConfig is always called twice - const string k("tuscany::modwiring::postConfig"); - const long int count = (long int)httpd::userData(k, s); - httpd::putUserData(k, (void*)(count + 1), s); - if (count == 0) - return OK; - - // Configure the wiring for the deployed components - debug(httpd::serverName(s), "modwiring::postConfig::serverName"); - ServerConf& sc = httpd::serverConf<ServerConf>(s, &mod_tuscany_wiring); - confComponents(sc); - - // Merge the config into any virtual hosts - return postConfigMerge(sc, s->next); -} - -/** - * Child process initialization. - */ -void childInit(apr_pool_t* p, server_rec* s) { - gc_scoped_pool pool(p); - if(ap_get_module_config(s->module_config, &mod_tuscany_wiring) == NULL) { - cfailure << "[Tuscany] Due to one or more errors mod_tuscany_wiring loading failed. Causing apache to stop loading." << endl; - exit(APEXIT_CHILDFATAL); - } -} - -/** - * Configuration commands. - */ -const char *confContribution(cmd_parms *cmd, unused void *c, const char *arg) { - gc_scoped_pool pool(cmd->pool); - ServerConf& sc = httpd::serverConf<ServerConf>(cmd, &mod_tuscany_wiring); - sc.contributionPath = arg; - return NULL; -} -const char *confComposite(cmd_parms *cmd, unused void *c, const char *arg) { - gc_scoped_pool pool(cmd->pool); - ServerConf& sc = httpd::serverConf<ServerConf>(cmd, &mod_tuscany_wiring); - sc.compositeName = arg; - return NULL; -} -const char *confVirtualDomain(cmd_parms *cmd, unused void *c, const char *arg) { - gc_scoped_pool pool(cmd->pool); - ServerConf& sc = httpd::serverConf<ServerConf>(cmd, &mod_tuscany_wiring); - sc.virtualHostDomain = arg; - return NULL; -} -const char *confVirtualContribution(cmd_parms *cmd, unused void *c, const char *arg) { - gc_scoped_pool pool(cmd->pool); - ServerConf& sc = httpd::serverConf<ServerConf>(cmd, &mod_tuscany_wiring); - sc.virtualHostContributionPath = arg; - return NULL; -} -const char *confVirtualComposite(cmd_parms *cmd, unused void *c, const char *arg) { - gc_scoped_pool pool(cmd->pool); - ServerConf& sc = httpd::serverConf<ServerConf>(cmd, &mod_tuscany_wiring); - sc.virtualHostCompositeName = arg; - return NULL; -} - -/** - * HTTP server module declaration. - */ -const command_rec commands[] = { - AP_INIT_TAKE1("SCAContribution", (const char*(*)())confContribution, NULL, RSRC_CONF, "SCA contribution location"), - AP_INIT_TAKE1("SCAComposite", (const char*(*)())confComposite, NULL, RSRC_CONF, "SCA composite location"), - AP_INIT_TAKE1("SCAVirtualDomain", (const char*(*)())confVirtualDomain, NULL, RSRC_CONF, "SCA virtual host domain"), - AP_INIT_TAKE1("SCAVirtualContribution", (const char*(*)())confVirtualContribution, NULL, RSRC_CONF, "SCA virtual host contribution location"), - AP_INIT_TAKE1("SCAVirtualComposite", (const char*(*)())confVirtualComposite, NULL, RSRC_CONF, "SCA virtual host composite location"), - {NULL, NULL, NULL, 0, NO_ARGS, NULL} -}; - -void registerHooks(unused apr_pool_t *p) { - ap_hook_post_config(postConfig, NULL, NULL, APR_HOOK_MIDDLE); - ap_hook_child_init(childInit, NULL, NULL, APR_HOOK_MIDDLE); - ap_hook_handler(handler, NULL, NULL, APR_HOOK_MIDDLE); - ap_hook_translate_name(translate, NULL, NULL, APR_HOOK_FIRST); -} - -} -} -} - -extern "C" { - -module AP_MODULE_DECLARE_DATA mod_tuscany_wiring = { - STANDARD20_MODULE_STUFF, - // dir config and merger - NULL, NULL, - // server config and merger - tuscany::httpd::makeServerConf<tuscany::server::modwiring::ServerConf>, NULL, - // commands and hooks - tuscany::server::modwiring::commands, tuscany::server::modwiring::registerHooks -}; - -} diff --git a/sca-cpp/trunk/modules/server/server-conf b/sca-cpp/trunk/modules/server/server-conf index 47934f973e..83eea0cc6c 100755 --- a/sca-cpp/trunk/modules/server/server-conf +++ b/sca-cpp/trunk/modules/server/server-conf @@ -31,13 +31,6 @@ else libsuffix=".so" fi -cat >>$root/conf/modules.conf <<EOF -# Generated by: server-conf $* -# Support for SCA component wiring -LoadModule mod_tuscany_wiring $here/libmod_tuscany_wiring$libsuffix - -EOF - cat >>$root/conf/httpd.conf <<EOF # Generated by: server-conf $* # Serve JavaScript client scripts |