From 8298fab0351ec4d26347e9686504f887d15a2392 Mon Sep 17 00:00:00 2001 From: David Benson <david@jgraph.com> Date: Mon, 16 Sep 2019 09:44:10 +0100 Subject: [PATCH] Removed sandstorm files --- etc/sandstorm/ChangeLog | 24 -- etc/sandstorm/Makefile | 23 -- etc/sandstorm/README.md | 19 - etc/sandstorm/build.sh | 6 - etc/sandstorm/description.md | 5 - etc/sandstorm/images/drawio448.png | Bin 71441 -> 0 bytes etc/sandstorm/pgp-keyring | Bin 3356 -> 0 bytes etc/sandstorm/pgp-signature | Bin 432 -> 0 bytes etc/sandstorm/rootFiles | 7 - etc/sandstorm/sandstorm-pkgdef.capnp | 118 ------ etc/sandstorm/server.c++ | 445 ---------------------- etc/sandstorm/shortDesc.txt | 1 - etc/sandstorm/ssindex.html | 539 --------------------------- etc/sandstorm/stage.sh | 49 --- 14 files changed, 1236 deletions(-) delete mode 100644 etc/sandstorm/ChangeLog delete mode 100644 etc/sandstorm/Makefile delete mode 100644 etc/sandstorm/README.md delete mode 100644 etc/sandstorm/build.sh delete mode 100644 etc/sandstorm/description.md delete mode 100644 etc/sandstorm/images/drawio448.png delete mode 100644 etc/sandstorm/pgp-keyring delete mode 100644 etc/sandstorm/pgp-signature delete mode 100644 etc/sandstorm/rootFiles delete mode 100644 etc/sandstorm/sandstorm-pkgdef.capnp delete mode 100644 etc/sandstorm/server.c++ delete mode 100644 etc/sandstorm/shortDesc.txt delete mode 100644 etc/sandstorm/ssindex.html delete mode 100644 etc/sandstorm/stage.sh diff --git a/etc/sandstorm/ChangeLog b/etc/sandstorm/ChangeLog deleted file mode 100644 index f7ebe59f0..000000000 --- a/etc/sandstorm/ChangeLog +++ /dev/null @@ -1,24 +0,0 @@ -19-APR-2016: 6.5.4 - -- Updates to draw.io 6.5.4 -- Compress resources to avoid load errors - -09-SEP-2016: 5.6.0.3 - -- Updates to draw.io 5.6.0.3 -- Fixes Saving... status -- Adds read-only permission option - -28-AUG-2015: 5.0.2.3 - -- Updates to draw.io 5.0.2.3 - -06-FEB-2015: 0.1.1.0 - -- Fixes external image export (probably) -- Fixes iconfinder calls (probably) -- Updates draw to head - -02-FEB-2015: 0.1.0.0 - -- Initial release \ No newline at end of file diff --git a/etc/sandstorm/Makefile b/etc/sandstorm/Makefile deleted file mode 100644 index 0e0b76372..000000000 --- a/etc/sandstorm/Makefile +++ /dev/null @@ -1,23 +0,0 @@ -CXX=g++ -CXXFLAGS=-O2 -Wall -CXXFLAGS2=-std=c++1y -Itmp $(CXXFLAGS) -SANDSTORM_CAPNP_DIR=/opt/sandstorm/latest/usr/include - -.PHONEY: all clean dev - -package.spk: server sandstorm-pkgdef.capnp - spk pack --keyring="drawio.key" package.spk - -dev: server sandstorm-pkgdef.capnp - spk dev - -clean: - rm -rf tmp server package.spk - -tmp/genfiles: - @mkdir -p tmp - capnp compile --src-prefix=$(SANDSTORM_CAPNP_DIR) -oc++:tmp $(SANDSTORM_CAPNP_DIR)/sandstorm/*.capnp - @touch tmp/genfiles - -server: tmp/genfiles server.c++ - $(CXX) -static server.c++ tmp/sandstorm/*.capnp.c++ -o server $(CXXFLAGS2) `pkg-config capnp-rpc --cflags --libs` \ No newline at end of file diff --git a/etc/sandstorm/README.md b/etc/sandstorm/README.md deleted file mode 100644 index f9406bf7f..000000000 --- a/etc/sandstorm/README.md +++ /dev/null @@ -1,19 +0,0 @@ -- Get the draw.io project from github -- Navigate to `drawio/etc/sandstorm` -- Create a directory named `build` -- [Install vagrant-spk](https://docs.sandstorm.io/en/latest/vagrant-spk/installation/) -- `cd build` -- `vagrant-spk setupvm diy` -- `vagrant-spk vm up` -- `cd ..` -- Invoke `./stage.sh` to stage the build files. gfind is gnu find on OS X. -- Log into the vagrant box `vagrant-spk vm ssh` -- `sudo apt-get install g++` -- [Install latest capnp](https://capnproto.org/install.html) -- In the vm, under `/opt/app/.sandstorm` run `make dev` - -To package -- Transfer the correct `sandstorm-keyring` file to `/host-dot-sandstorm` -- Update the `sandstorm-pkgdef.capnp` to the correct version (re-stage prior to packaging) -- In the host under `/opt/app/.sandstorm` `spk pack --keyring=/host-dot-sandstorm/sandstorm-keyring --pkg-def=/opt/app/.sandstorm/sandstorm-pkgdef.capnp:pkgdef /home/vagrant/sandstorm-package.spk && spk verify --details /home/vagrant/sandstorm-package.spk && mv /home/vagrant/sandstorm-package.spk /opt/app/sandstorm-drawio.spk` -- In the host under `/opt/app` `spk publish -k /host-dot-sandstorm/sandstorm-keyring sandstorm-drawio.spk` \ No newline at end of file diff --git a/etc/sandstorm/build.sh b/etc/sandstorm/build.sh deleted file mode 100644 index 138e7753a..000000000 --- a/etc/sandstorm/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -#! /bin/bash -# -# Copyright (c) 2016, JGraph Ltd -BUILD="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -cd $BUILD -make server \ No newline at end of file diff --git a/etc/sandstorm/description.md b/etc/sandstorm/description.md deleted file mode 100644 index 1d4efc82c..000000000 --- a/etc/sandstorm/description.md +++ /dev/null @@ -1,5 +0,0 @@ -**The web's most popular open source diagram editor in your Sandstorm** - -draw.io is a leading web based diagramming application designed to be simple to use, yet satisfy the power users. - -This is the official Sandstorm port of draw.io based on the [online version of draw.io](https://www.draw.io?splash=0). \ No newline at end of file diff --git a/etc/sandstorm/images/drawio448.png b/etc/sandstorm/images/drawio448.png deleted file mode 100644 index 37fe4a69bb2d08aabe0734f64b449a6a6c5d55b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71441 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 U^~pX}{cNmaYlT5QvhXMT56?32wg3PC diff --git a/etc/sandstorm/pgp-keyring b/etc/sandstorm/pgp-keyring deleted file mode 100644 index 084f73bda851426cc6426bdecd08db99583ad034..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3356 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 diff --git a/etc/sandstorm/pgp-signature b/etc/sandstorm/pgp-signature deleted file mode 100644 index a3a126ff411396b9d01d63a4e1bd652feb83ced6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 432 zcmV;h0Z;y;0RgE2R{oF;0{{X6<*Mb6#Y4?o0n2$}09D|;EJ+|?Z6I`LWgua7bZBpK zAa7<MbZBKDQ(<mob98TVZ7ykVAYpKDAa`kWXdrZGWgup6Y;13LX>MmANklpzZf0?4 zcsMh5c6x0%FlA(LXKQd_csOlnad0s=HgRe)c6VnsH*#ljHDxnvYGXBWG-G*ai2)o0 z009C31_c6D;JhpV3JDP9s^yQxL(N->+Xwz5n@`-x82gP!I+t(}s}nZamxXWzAYOM7 zvu>6$?lq8TULJGxfffk#y*i1br_LZ8Ha0?<&oPlTx#e=-lS%q0g$U&{h1?Yd7ipx! zOF&~?AY|jHq>|K6R7Ln_O2c@RT=u1EF<kBtD}Z)J?tS}6yjkBUgweDe5d)mE%>4OR z7UUnnbvDnDY<eA*Xg{yJ66)*t(o87p`&lM;QDE%`>3zaaU@%*ln)v^gJ@tW~Gjyhg z>+xvmOT?$W{XJEIJ-wdHMs?`Y)a#UHc0@_C?ihnMSe|h#HnA>8$nBJHT6qAh^3BiL a@m`$2$N|i=fVNmV^j)<2Sf0@0S?rvhqr>w6 diff --git a/etc/sandstorm/rootFiles b/etc/sandstorm/rootFiles deleted file mode 100644 index 9f19cf58c..000000000 --- a/etc/sandstorm/rootFiles +++ /dev/null @@ -1,7 +0,0 @@ -description.md -Makefile -pgp-keyring -pgp-signature -sandstorm-pkgdef.capnp -server.c++ -shortDesc.txt diff --git a/etc/sandstorm/sandstorm-pkgdef.capnp b/etc/sandstorm/sandstorm-pkgdef.capnp deleted file mode 100644 index 18c9c2741..000000000 --- a/etc/sandstorm/sandstorm-pkgdef.capnp +++ /dev/null @@ -1,118 +0,0 @@ -@0xeef286f78b0168e0; -# When cloning the example, you'll want to replace the above file ID with a new -# one generated using the `capnp id` command. - -using Spk = import "/sandstorm/package.capnp"; -using Grain = import "/sandstorm/grain.capnp"; - -# This imports: -# $SANDSTORM_HOME/latest/usr/include/sandstorm/package.capnp -# Check out that file to see the full, documented package definition format. - -const pkgdef :Spk.PackageDefinition = ( - # The package definition. Note that the spk tool looks specifically for the - # "pkgdef" constant. - - id = "a3w50h1435gsxczugm16q0amwkqm9f4crykzea53sv61pt7phk8h", - # The app ID is actually the public key used to sign the app package. - # All packages with the same ID are versions of the same app. - # - # If you are working from the example, you'll need to replace the above - # public key with one of your own. Use the `spk keygen` command to generate - # a new one. - - manifest = ( - # This manifest is included in your app package to tell Sandstorm - # about your app. - - appVersion = 3, # Increment this for every release. - - appTitle = (defaultText = "draw.io"), - - appMarketingVersion = (defaultText = "6.5.4"), - - actions = [ - # Define your "new document" handlers here. - ( title = (defaultText = "New draw.io diagram"), - nounPhrase = (defaultText = "diagram"), - command = .myCommand - # The command to run when starting for the first time. (".myCommand" - # is just a constant defined at the bottom of the file.) - ) - ], - - continueCommand = .myCommand, - # This is the command called to start your app back up after it has been - # shut down for inactivity. Here we're using the same command as for - # starting a new instance, but you could use different commands for each - # case. - - metadata = ( - icons = ( - appGrid = (png = (dpi1x = embed "client/images/drawlogo128.png")), - grain = (png = (dpi1x = embed "client/images/drawlogo48.png")), - market = (png = (dpi1x = embed "client/images/drawlogo256.png")), - ), - - website = "https://www.draw.io/", - codeUrl = "https://github.com/jgraph/draw.io", - license = (openSource = gpl3), - categories = [office, productivity], - - author = ( - upstreamAuthor = "JGraph", - contactEmail = "support@draw.io", - pgpSignature = embed "pgp-signature", - ), - pgpKeyring = embed "pgp-keyring", - - description = (defaultText = embed "description.md"), - - shortDescription = (defaultText = embed "shortDesc.txt"), - - screenshots = [ - (width = 448, height = 243, png = embed "client/images/drawio448.png") - ], - - changeLog = (defaultText = embed "ChangeLog"), - ) - ), - - sourceMap = ( - # Here we define where to look for files to copy into your package. - searchPath = [ - ( packagePath = "server", sourcePath = "server" ), - # Map server binary at "/server". - - ( packagePath = "client", sourcePath = "client" ), - # Map client directory at "/client". - ] - ), - - alwaysInclude = [ "." ] - # Always include all mapped files, whether or not they are opened during - # "spk dev". -); - -const appIndexViewInfo :Grain.UiView.ViewInfo = ( - permissions = [(name = "write", title = (defaultText = "write"), - description = (defaultText = "allows editing diagrams")), - (name = "read", title = (defaultText = "read"), - description = (defaultText = "allows viewing diagrams"))], - roles = [(title = (defaultText = "editor"), - permissions = [true, true], - verbPhrase = (defaultText = "can edit"), - default = true), - (title = (defaultText = "viewer"), - permissions = [false, true], - verbPhrase = (defaultText = "can view"))] -); - -const myCommand :Spk.Manifest.Command = ( - # Here we define the command used to start up your server. - argv = ["/server"], - environ = [ - # Note that this defines the *entire* environment seen by your app. - (key = "PATH", value = "/usr/local/bin:/usr/bin:/bin") - ] -); diff --git a/etc/sandstorm/server.c++ b/etc/sandstorm/server.c++ deleted file mode 100644 index 00bf7fa5d..000000000 --- a/etc/sandstorm/server.c++ +++ /dev/null @@ -1,445 +0,0 @@ -// Copyright (c) 2014 Sandstorm Development Group, Inc. -// Licensed under the MIT License: -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -// Hack around stdlib bug with C++14. -#include <initializer_list> // force libstdc++ to include its config -#undef _GLIBCXX_HAVE_GETS // correct broken config -// End hack. - -#include <kj/main.h> -#include <kj/debug.h> -#include <kj/io.h> -#include <kj/async-io.h> -#include <capnp/rpc-twoparty.h> -#include <capnp/serialize.h> -#include <unistd.h> -#include <stdlib.h> -#include <stdio.h> -#include <fcntl.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <dirent.h> -#include <errno.h> - -#include <sandstorm/grain.capnp.h> -#include <sandstorm/web-session.capnp.h> -#include <sandstorm/hack-session.capnp.h> - -namespace { - -#if __QTCREATOR -#define KJ_MVCAP(var) var -// QtCreator dosen't understand C++14 syntax yet. -#else -#define KJ_MVCAP(var) var = ::kj::mv(var) -// Capture the given variable by move. Place this in a lambda capture list. Requires C++14. -// -// TODO(cleanup): Move to libkj. -#endif - -typedef unsigned int uint; -typedef unsigned char byte; - -// ======================================================================================= -// Utility functions -// -// Most of these should be moved to the KJ library someday. - -kj::AutoCloseFd createFile(kj::StringPtr name, int flags, mode_t mode = 0666) { - // Create a file, returning an RAII wrapper around the file descriptor. Errors throw exceptinos. - - int fd; - KJ_SYSCALL(fd = open(name.cStr(), O_CREAT | flags, mode), name); - return kj::AutoCloseFd(fd); -} - -size_t getFileSize(int fd, kj::StringPtr filename) { - struct stat stats; - KJ_SYSCALL(fstat(fd, &stats)); - KJ_REQUIRE(S_ISREG(stats.st_mode), "Not a regular file.", filename); - return stats.st_size; -} - -kj::Maybe<kj::AutoCloseFd> tryOpen(kj::StringPtr name, int flags, mode_t mode = 0666) { - // Try to open a file, returning an RAII wrapper around the file descriptor, or null if the - // file doesn't exist. All other errors throw exceptions. - - int fd; - - while ((fd = open(name.cStr(), flags, mode)) < 0) { - int error = errno; - if (error == ENOENT) { - return nullptr; - } else if (error != EINTR) { - KJ_FAIL_SYSCALL("open(name)", error, name); - } - } - - return kj::AutoCloseFd(fd); -} - -bool isDirectory(kj::StringPtr filename) { - // Return true if the parameter names a directory, false if it's any other kind of node or - // doesn't exist. - - struct stat stats; - while (stat(filename.cStr(), &stats) < 0) { - if (errno != EINTR) { - return false; - } - } - return S_ISDIR(stats.st_mode); -} - -kj::Vector<kj::String> listDirectory(kj::StringPtr dirname) { - // Return a list of all filenames in the given directory, except "." and "..". - - kj::Vector<kj::String> entries; - - DIR* dir = opendir(dirname.cStr()); - if (dir == nullptr) { - KJ_FAIL_SYSCALL("opendir", errno, dirname); - } - KJ_DEFER(closedir(dir)); - - for (;;) { - errno = 0; - struct dirent* entry = readdir(dir); - if (entry == nullptr) { - int error = errno; - if (error == 0) { - break; - } else { - KJ_FAIL_SYSCALL("readdir", error, dirname); - } - } - - kj::StringPtr name = entry->d_name; - if (name != "." && name != "..") { - entries.add(kj::heapString(entry->d_name)); - } - } - - return entries; -} - -// ======================================================================================= -// WebSession implementation (interface declared in sandstorm/web-session.capnp) - -class WebSessionImpl final: public sandstorm::WebSession::Server { -public: - WebSessionImpl(sandstorm::UserInfo::Reader userInfo, - sandstorm::SessionContext::Client context, - sandstorm::WebSession::Params::Reader params) { - // Permission #0 is "write". Check if bit 0 in the PermissionSet is set. - auto permissions = userInfo.getPermissions(); - canWrite = permissions.size() > 0 && (permissions[0] & 1); - - // `UserInfo` is defined in `sandstorm/grain.capnp` and contains info like: - // - A stable ID for the user, so you can correlate sessions from the same user. - // - The user's display name, e.g. "Mark Miller", useful for identifying the user to other - // users. - // - The user's permissions (seen above). - - // `WebSession::Params` is defined in `sandstorm/web-session.capnp` and contains info like: - // - The hostname where the grain was mapped for this user. Every time a user opens a grain, - // it is mapped at a new random hostname for security reasons. - // - The user's User-Agent and Accept-Languages headers. - - // `SessionContext` is defined in `sandstorm/grain.capnp` and implements callbacks for - // sharing/access control and service publishing/discovery. - } - - kj::Promise<void> get(GetContext context) override { - // HTTP GET request. - - auto path = context.getParams().getPath(); - requireCanonicalPath(path); - - if (path == "var" || path == "var/") { - // Return a listing of the directory contents, one per line. - auto text = kj::strArray(listDirectory("var"), "\n"); - auto response = context.getResults().initContent(); - response.setMimeType("text/plain"); - response.getBody().setBytes( - kj::arrayPtr(reinterpret_cast<byte*>(text.begin()), text.size())); - return kj::READY_NOW; - } else if (path.startsWith("var/")) { - // Serve all files under /var with type application/octet-stream since it comes from the - // user. E.g. serving as "text/html" here would allow someone to trivially XSS other users - // of the grain by PUTing malicious HTML content. (Such an attack wouldn't be a huge deal: - // it would only allow the attacker to hijack another user's access to this grain, not to - // Sandstorm in general, and if they attacker already has write access to upload the - // malicious content, they have little to gain from hijacking another session.) - return readFile(path, context, "application/octet-stream"); - } else if (path == ".can-write") { - // Fetch "/.can-write" to determine if the user has write permission, so you can show them - // a different UI if not. - auto response = context.getResults().initContent(); - response.setMimeType("text/plain"); - response.getBody().setBytes(kj::str(canWrite).asBytes()); - return kj::READY_NOW; - } else if (path == "" || path.endsWith("/")) { - // A directory. Serve "index.html". - return readFile(kj::str("client/", path, "ssindex.html"), context, "text/html; charset=UTF-8"); - } else { - // Request for a static file. Look for it under "client/". - auto filename = kj::str("client/", path); - - // Check if it's a directory. - if (isDirectory(filename)) { - // It is. Return redirect to add '/'. - auto redirect = context.getResults().initRedirect(); - redirect.setIsPermanent(true); - redirect.setSwitchToGet(true); - redirect.setLocation(kj::str(path, '/')); - return kj::READY_NOW; - } - - // Regular file (or non-existent). - return readFile(kj::mv(filename), context, inferContentType(path)); - } - } - - kj::Promise<void> put(PutContext context) override { - // HTTP PUT request. - - auto params = context.getParams(); - auto path = params.getPath(); - requireCanonicalPath(path); - - KJ_REQUIRE(path.startsWith("var/"), "PUT only supported under /var."); - - if (!canWrite) { - context.getResults().initClientError() - .setStatusCode(sandstorm::WebSession::Response::ClientErrorCode::FORBIDDEN); - } else { - auto tempPath = kj::str(path, ".uploading"); - auto data = params.getContent().getContent(); - - kj::FdOutputStream(createFile(tempPath, O_WRONLY | O_TRUNC)) - .write(data.begin(), data.size()); - - KJ_SYSCALL(rename(tempPath.cStr(), path.cStr())); - context.getResults().initNoContent(); - } - - return kj::READY_NOW; - } - - kj::Promise<void> delete_(DeleteContext context) override { - // HTTP DELETE request. - - auto path = context.getParams().getPath(); - requireCanonicalPath(path); - - KJ_REQUIRE(path.startsWith("var/"), "DELETE only supported under /var."); - - if (!canWrite) { - context.getResults().initClientError() - .setStatusCode(sandstorm::WebSession::Response::ClientErrorCode::FORBIDDEN); - } else { - while (unlink(path.cStr()) != 0) { - int error = errno; - if (error == ENOENT) { - // Ignore file-not-found for idempotency. - break; - } else if (error != EINTR) { - KJ_FAIL_SYSCALL("unlink", error); - } - } - } - - return kj::READY_NOW; - } - -private: - bool canWrite; - // True if the user has write permission. - - void requireCanonicalPath(kj::StringPtr path) { - // Require that the path doesn't contain "." or ".." or consecutive slashes, to prevent path - // injection attacks. - // - // Note that such attacks wouldn't actually accomplish much since everything outside /var - // is a read-only filesystem anyway, containing the app package contents which are non-secret. - - KJ_REQUIRE(!path.startsWith("/")); - KJ_REQUIRE(!path.startsWith("./") && path != "."); - KJ_REQUIRE(!path.startsWith("../") && path != ".."); - - KJ_IF_MAYBE(slashPos, path.findFirst('/')) { - requireCanonicalPath(path.slice(*slashPos + 1)); - } - } - - kj::StringPtr inferContentType(kj::StringPtr filename) { - if (filename.endsWith(".html")) { - return "text/html; charset=UTF-8"; - } else if (filename.endsWith(".js")) { - return "text/javascript; charset=UTF-8"; - } else if (filename.endsWith(".css")) { - return "text/css; charset=UTF-8"; - } else if (filename.endsWith(".png")) { - return "image/png"; - } else if (filename.endsWith(".gif")) { - return "image/gif"; - } else if (filename.endsWith(".jpg") || filename.endsWith(".jpeg")) { - return "image/jpeg"; - } else if (filename.endsWith(".svg")) { - return "image/svg+xml; charset=UTF-8"; - } else if (filename.endsWith(".txt")) { - return "text/plain; charset=UTF-8"; - } else { - return "application/octet-stream"; - } - } - - kj::Promise<void> readFile( - kj::StringPtr filename, GetContext context, kj::StringPtr contentType) { - // Do we support compression? - bool canGzip = false; - for (auto accept: context.getParams().getContext().getAcceptEncoding()) { - if (accept.getContentCoding() == "gzip") { - canGzip = true; - break; - } - } - - // If compression is supported, look for file with .gz extension. - kj::Maybe<kj::AutoCloseFd> maybeFd; - bool isGzipped = false; - if (canGzip) { - maybeFd = tryOpen(kj::str(filename, ".gz"), O_RDONLY); - isGzipped = maybeFd != nullptr; - } - - // If we haven't found a suitable file yet, look for the uncompressed version. - if (maybeFd == nullptr) { - maybeFd = tryOpen(filename, O_RDONLY); - } - - // Serve it. - KJ_IF_MAYBE(fd, kj::mv(maybeFd)) { - auto size = getFileSize(*fd, filename); - kj::FdInputStream stream(kj::mv(*fd)); - auto response = context.getResults(capnp::MessageSize { size / sizeof(capnp::word) + 32, 0 }); - auto content = response.initContent(); - content.setStatusCode(sandstorm::WebSession::Response::SuccessCode::OK); - content.setMimeType(contentType); - if (isGzipped) { - content.setEncoding("gzip"); - } - stream.read(content.getBody().initBytes(size).begin(), size); - return kj::READY_NOW; - } else { - auto error = context.getResults().initClientError(); - error.setStatusCode(sandstorm::WebSession::Response::ClientErrorCode::NOT_FOUND); - return kj::READY_NOW; - } - } -}; - -// ======================================================================================= -// UiView implementation (interface declared in sandstorm/grain.capnp) - -class UiViewImpl final: public sandstorm::UiView::Server { -public: - kj::Promise<void> getViewInfo(GetViewInfoContext context) override { - auto viewInfo = context.initResults(); - - // Define a "write" permission, and then define roles "editor" and "viewer" where only "editor" - // has the "write" permission. This will allow people to share read-only. - auto perms = viewInfo.initPermissions(1); - perms[0].setName("write"); - auto write = perms[0]; - write.setName("write"); - write.initTitle().setDefaultText("write"); - - auto roles = viewInfo.initRoles(2); - auto editor = roles[0]; - editor.initTitle().setDefaultText("editor"); - editor.initVerbPhrase().setDefaultText("can edit"); - editor.initPermissions(1).set(0, true); // has "write" permission - auto viewer = roles[1]; - viewer.initTitle().setDefaultText("viewer"); - viewer.initVerbPhrase().setDefaultText("can view"); - viewer.initPermissions(1).set(0, false); // does not have "write" permission - - return kj::READY_NOW; - } - - kj::Promise<void> newSession(NewSessionContext context) override { - auto params = context.getParams(); - - KJ_REQUIRE(params.getSessionType() == capnp::typeId<sandstorm::WebSession>(), - "Unsupported session type."); - - context.getResults().setSession( - kj::heap<WebSessionImpl>(params.getUserInfo(), params.getContext(), - params.getSessionParams().getAs<sandstorm::WebSession::Params>())); - - return kj::READY_NOW; - } -}; - -// ======================================================================================= -// Program main - -class ServerMain { -public: - ServerMain(kj::ProcessContext& context): context(context), ioContext(kj::setupAsyncIo()) {} - - kj::MainFunc getMain() { - return kj::MainBuilder(context, "Sandstorm Thin Server", - "Intended to be run as the root process of a Sandstorm app.") - .callAfterParsing(KJ_BIND_METHOD(*this, run)) - .build(); - } - - kj::MainBuilder::Validity run() { - // Set up RPC on file descriptor 3. - auto stream = ioContext.lowLevelProvider->wrapSocketFd(3); - capnp::TwoPartyVatNetwork network(*stream, capnp::rpc::twoparty::Side::CLIENT); - auto rpcSystem = capnp::makeRpcServer(network, kj::heap<UiViewImpl>()); - - // Get the SandstormApi default capability from the supervisor. - // TODO(soon): We don't use this, but for some reason the connection doesn't come up if we - // don't do this restore. Cap'n Proto bug? v8capnp bug? Shell bug? - { - capnp::MallocMessageBuilder message; - auto vatId = message.getRoot<capnp::rpc::twoparty::VatId>(); - vatId.setSide(capnp::rpc::twoparty::Side::SERVER); - sandstorm::SandstormApi<>::Client api = - rpcSystem.bootstrap(vatId).castAs<sandstorm::SandstormApi<>>(); - } - - kj::NEVER_DONE.wait(ioContext.waitScope); - } - -private: - kj::ProcessContext& context; - kj::AsyncIoContext ioContext; -}; - -} // anonymous namespace - -KJ_MAIN(ServerMain) diff --git a/etc/sandstorm/shortDesc.txt b/etc/sandstorm/shortDesc.txt deleted file mode 100644 index 87ac41635..000000000 --- a/etc/sandstorm/shortDesc.txt +++ /dev/null @@ -1 +0,0 @@ -Web Diagramming \ No newline at end of file diff --git a/etc/sandstorm/ssindex.html b/etc/sandstorm/ssindex.html deleted file mode 100644 index d6220e531..000000000 --- a/etc/sandstorm/ssindex.html +++ /dev/null @@ -1,539 +0,0 @@ -<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--> -<!DOCTYPE html> -<html> -<head> - <title>Flowchart Maker & Online Diagram Software</title> - <meta charset="utf-8"> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> - <meta name="Description" content="draw.io is free online diagram software for making flowcharts, process diagrams, org charts, UML, ER and network diagrams"> - <meta name="Keywords" content="diagram, online, flow chart, flowchart maker, uml, erd"> - <meta itemprop="name" content="draw.io - free flowchart maker and diagrams online"> - <meta itemprop="description" content="draw.io is a free online diagramming application and flowchart maker . You can use it to create UML, entity relationship, - org charts, BPMN and BPM, database schema and networks. Also possible are telecommunication network, workflow, flowcharts, maps overlays and GIS, electronic - circuit and social network diagrams."> - <meta itemprop="image" content="https://lh4.googleusercontent.com/-cLKEldMbT_E/Tx8qXDuw6eI/AAAAAAAAAAs/Ke0pnlk8Gpg/w500-h344-k/BPMN%2Bdiagram%2Brc2f.png"> - <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> - <meta name="mobile-web-app-capable" content="yes"> - <meta name="apple-mobile-web-app-capable" content="yes"> - <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> - <link rel="canonical" href="https://www.draw.io"> - <script type="text/javascript"> - /** - * URL Parameters and protocol description are here: - * - * https://support.draw.io/pages/viewpage.action?pageId=12878136 - * - * Parameters for developers: - * - * - dev=1: For developers only - * - test=1: For developers only - * - drawdev=1: For developers only - * - export=URL for export: For developers only - * - pages=1: For developers only - * - page=n: For developers only - * - ignoremime=1: For developers only (see DriveClient.js). Use Cmd-S to override mime. - * - createindex=1: For depelopers only (see etc/build/README) - * - filesupport=0: For developers only (see Editor.js in core) - * - savesidebar=1: For developers only (see Sidebar.js) - * - pages=1: For developers only (see Pages.js) - * - lic=email: For developers only (see LicenseServlet.java) - * -- - * - networkshapes=1: For testing network shapes (temporary) - */ - var urlParams = (function() - { - var result = new Object(); - var params = window.location.search.slice(1).split('&'); - - for (var i = 0; i < params.length; i++) - { - idx = params[i].indexOf('='); - - if (idx > 0) - { - result[params[i].substring(0, idx)] = params[i].substring(idx + 1); - } - } - - return result; - })(); - </script> - <link rel="alternate" type="application/rss+xml" title="RSS Feed for draw.io" href="http://blog.draw.io/feed/"> - <link rel="chrome-webstore-item" href="https://chrome.google.com/webstore/detail/plgmlhohecdddhbmmkncjdmlhcmaachm"> - <link rel="apple-touch-icon" sizes="57x57" href="images/apple-touch-icon-57x57.png"> - <link rel="apple-touch-icon" sizes="60x60" href="images/apple-touch-icon-60x60.png"> - <link rel="apple-touch-icon" sizes="72x72" href="images/apple-touch-icon-72x72.png"> - <link rel="apple-touch-icon" sizes="76x76" href="images/apple-touch-icon-76x76.png"> - <link rel="apple-touch-icon" sizes="114x114" href="images/apple-touch-icon-114x114.png"> - <link rel="apple-touch-icon" sizes="120x120" href="images/apple-touch-icon-120x120.png"> - <link rel="apple-touch-icon" sizes="144x144" href="images/apple-touch-icon-144x144.png"> - <link rel="apple-touch-icon" sizes="152x152" href="images/apple-touch-icon-152x152.png"> - <link rel="apple-touch-icon" sizes="180x180" href="images/apple-touch-icon-180x180.png"> - <link rel="icon" type="image/png" href="images/favicon-32x32.png" sizes="32x32"> - <link rel="icon" type="image/png" href="images/favicon-194x194.png" sizes="194x194"> - <link rel="icon" type="image/png" href="images/favicon-96x96.png" sizes="96x96"> - <link rel="icon" type="image/png" href="images/android-chrome-192x192.png" sizes="192x192"> - <link rel="icon" type="image/png" href="images/favicon-16x16.png" sizes="16x16"> - <link rel="manifest" href="images/manifest.json"> - <link rel="mask-icon" href="images/safari-pinned-tab.svg" color="#f18808"> - <meta name="msapplication-TileColor" content="#da532c"> - <meta name="msapplication-TileImage" content="images/mstile-144x144.png"> - <meta name="msapplication-config" content="images/browserconfig.xml"> - <meta name="theme-color" content="#f18808"> - <link rel="apple-touch-startup-image" href="images/logo-flat.png"> - <link rel="stylesheet" type="text/css" href="styles/grapheditor.css"> - <style type="text/css"> - body { overflow:hidden; } - .geSidebarContainer .geTitle { color:#505050; } - .geSidebarContainer .geTitle input { - font-size:8pt; - color:#606060; - } - .geBlock { - z-index:-3; - margin:100px; - margin-top:40px; - margin-bottom:30px; - padding:20px; - } - .geBlock h1, .geBlock h2 { - margin-top:0px; - padding-top:0px; - } - .geEditor ::-webkit-scrollbar { - width:12px; - height:12px; - } - .geEditor ::-webkit-scrollbar-track { - background:whiteSmoke; - -webkit-box-shadow:inset 0 0 4px rgba(0,0,0,0.1); - } - .geEditor ::-webkit-scrollbar-thumb { - background:#c5c5c5; - border-radius:10px; - border:whiteSmoke solid 3px; - } - .geEditor ::-webkit-scrollbar-thumb:hover { - background:#b5b5b5; - } - .geTemplate { - border:1px solid transparent; - display:inline-block; - _display:inline; - vertical-align:top; - border-radius:3px; - overflow:hidden; - font-size:14pt; - cursor:pointer; - margin:5px; - } - .geFooterContainer div.geSocialFooter a { - display:inline; - padding:0px; - } - .geFooterContainer div.geSocialFooter a img { - margin-top:10px; - opacity:0.8; - } - .geFooterContainer div.geSocialFooter a img:hover { - opacity:1; - } - #geFooterItem1 { - background-color: #cdcdcd; - } - #geFooterItem1:hover { - background-color: #b0b0b0; - } - .geFooterContainer>div>img { - opacity:0.5; - background:#e5e5e5; - border:1px solid transparent; - cusor:pointer; - margin-top:3px; - margin-right:6px; - position:absolute; - right:4px; - top:12px; - padding:1px; - cursor:pointer; - } - .geFooterContainer>div>img:hover { - opacity: 1; - } - .geBlink { - animation: geBlinker 1s linear infinite; - } - @keyframes geBlinker { - 50% { opacity: 0.0; } - } - </style> - <!-- Workaround for binary XHR in IE 9/10, see App.loadUrl --> - <!--[if (IE 9)|(IE 10)]><!--> - <script type="text/vbscript"> - Function mxUtilsBinaryToArray(Binary) - Dim i - ReDim byteArray(LenB(Binary)) - For i = 1 To LenB(Binary) - byteArray(i-1) = AscB(MidB(Binary, i, 1)) - Next - mxUtilsBinaryToArray = byteArray - End Function - </script> - <!--<![endif]--> - <script type="text/javascript"> - /** - * Synchronously adds scripts to the page. - */ - function mxscript(src, onLoad, id, dataAppKey) - { - if (onLoad != null) - { - var s = document.createElement('script'); - s.setAttribute('type', 'text/javascript'); - s.setAttribute('src', src); - var r = false; - - if (id != null) - { - s.setAttribute('id', id); - } - - if (dataAppKey != null) - { - s.setAttribute('data-app-key', dataAppKey); - } - - s.onload = s.onreadystatechange = function() - { - if (!r && (!this.readyState || this.readyState == 'complete')) - { - r = true; - onLoad(); - } - }; - - var t = document.getElementsByTagName('script')[0]; - t.parentNode.insertBefore(s, t); - } - else - { - document.write('<script src="' + src + '"' + ((id != null) ? ' id="' + id +'" ' : '') + - ((dataAppKey != null) ? ' data-app-key="' + dataAppKey +'" ' : '') + '></scr' + 'ipt>'); - } - }; - - /** - * Asynchronously adds scripts to the page. - */ - function mxinclude(src) - { - var g = document.createElement('script'); g.type = 'text/javascript'; g.async = true; g.src = src; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(g, s); - }; - - // Checks for local storage and SVG support - var isLocalStorage = false; // No local storage in sandstorm because of subdomains - typeof(localStorage) != 'undefined'; - - var t0 = new Date(); - - // Public global variables - var SANDSTORM = true; - var MAX_REQUEST_SIZE = 10485760; - var MAX_AREA = 10000 * 10000; - - // CUSTOM_PARAMETERS - URLs for save and export - var EXPORT_URL = 'https://exp.draw.io/ImageExport4/export'; - - var SAVE_URL = 'save'; - var OPEN_URL = 'open'; - var PROXY_URL = 'proxy'; - - // Paths and files - var STENCIL_PATH = 'stencils'; - var SHAPES_PATH = 'shapes'; - var IMAGE_PATH = 'images'; - // Path for images inside the diagram - var GRAPH_IMAGE_PATH = 'img'; - ICONFINDER_PATH = (navigator.userAgent.indexOf('MSIE') >= 0) ? 'iconfinder' : 'https://www.draw.io/iconfinder'; - - // Used to request grapheditor/mxgraph sources in dev mode - var mxDevUrl = document.location.protocol + '//devhost.jgraph.com/mxgraph2'; - - // Used to request draw.io sources in dev mode - var drawDevUrl = ''; - - if (urlParams['drawdev'] == '1') - { - drawDevUrl = document.location.protocol + '//drawhost.jgraph.com/'; - } - - // Customizes export URL - var ex = urlParams['export']; - - if (ex != null) - { - EXPORT_URL = ex; - } - - urlParams['analytics'] = '0'; - urlParams['picker'] = '0'; - urlParams['gapi'] = '0'; - urlParams['db'] = '0'; - urlParams['od'] = '0'; - urlParams['embed'] = '1'; - - // Changes paths for local development environment - if (urlParams['dev'] == '1') - { - // Used to request draw.io sources in dev mode - var drawDevUrl = ''; - - if (urlParams['drawdev'] == '1') - { - drawDevUrl = document.location.protocol + '//drawhost.jgraph.com/'; - } - - mxscript(drawDevUrl + 'js/diagramly/Init.js'); - mxscript(geBasePath + '/Init.js'); - - // Used to request grapheditor/mxgraph sources in dev mode - var mxDevUrl = document.location.protocol + '//devhost.jgraph.com/mxgraph2'; - geBasePath = mxDevUrl + '/javascript/examples/grapheditor/www/js'; - mxBasePath = mxDevUrl + '/javascript/src'; - mxscript(mxBasePath + '/js/mxClient.js'); - - // Adds all JS code that depends on mxClient. This indirection via Devel.js is - // required in some browsers to make sure mxClient.js (and the files that it - // loads asynchronously) are available when the code loaded in Devel.js runs. - mxscript(drawDevUrl + 'js/diagramly/Devel.js'); - //mxscript(drawDevUrl + 'js/sandstorm/SandstormFile.js'); - } - else - { - mxscript('js/app.min.js'); - //mxscript('js/sandstorm/SandstormFile.js'); - } - - // Loads JSON for older browsers - if (typeof(JSON) == 'undefined') - { - mxscript('js/json/json2.min.js'); - } - - // Adds basic error handling - window.onerror = function() - { - var status = document.getElementById('geStatus'); - - if (status != null) - { - status.innerHTML = 'Page could not be loaded. Please try refreshing.'; - } - }; - </script> -</head> -<body class="geEditor"> -<div id="geInfo"> - <div class="geBlock" style="text-align:center;"> - <h3 id="geStatus">Loading... Please ensure JavaScript is enabled</h2> - </div> -</div> -<script type="text/javascript"> - -(function() -{ - EditorUi.prototype.footerHeight = 0; - - EditorUi.prototype.initializeEmbedMode = function() - { - mxUtils.get('var/drawiodiagram.xml', mxUtils.bind(this, function(req) - { - if (req.getStatus() == 200) - { - mxUtils.get('.can-write', mxUtils.bind(this, function(req2) - { - var ssFile = new SandstormFile(this, req.getText(), null); - - if (req2.getText() == "false") - { - ssFile.editable = false; - } - - this.spinner.stop(); - this.fileLoaded(ssFile); - - }), mxUtils.bind(this, function() - { - // No action, only failed to read the write status - })); - } - else if (req.getStatus() == 404) - { - this.fileLoaded(null); - } - else - { - this.handleError(null, mxResources.get('errorLoadingFile'), reconnect); - } - }), mxUtils.bind(this, function() - { - this.handleError(null, mxResources.get('errorLoadingFile'), reconnect); - })); - }; - - App.prototype.showSplash = function() - { - this.hideDialog(); - this.actions.get('new').funct(); - }; - - App.prototype.createFile = function(title, data, libs, mode, done) - { - data = (data != null) ? data : this.emptyDiagramXml; - - var error = mxUtils.bind(this, function(resp) - { - if (resp == null && this.getCurrentFile() == null && this.dialog == null) - { - this.showSplash(); - } - else if (resp != null) - { - this.handleError(resp); - } - }); - - if (done != null) - { - done(); - } - - this.fileCreated(new SandstormFile(this, data, title), libs); - }; - - //////////////// Sandstorm File /////////////////// - SandstormFile = function(ui, data, title) - { - DrawioFile.call(this, ui, data); - - this.title = title; - this.editable = true; - }; - - mxUtils.extend(SandstormFile, DrawioFile); - - SandstormFile.prototype.isAutosave = function() { return true; }; - SandstormFile.prototype.getMode = function() { return App.MODE_DEVICE; }; - SandstormFile.prototype.getTitle = function() { return this.title; }; - SandstormFile.prototype.isRenamable = function() { return this.editable; }; - SandstormFile.prototype.isEditable = function() { return this.editable; }; - - /** - * - */ - SandstormFile.prototype.save = function(revision, success, error) - { - this.saveAs(this.title, success, error); - }; - - /** - * - */ - SandstormFile.prototype.saveAs = function(title, success, error) - { - DrawioFile.prototype.save.apply(this, arguments); - this.saveFile(this.title, null, success, error); - }; - - /** - * - */ - SandstormFile.prototype.saveFile = function(title, revision, success, error, unloading) - { - var data = this.getData(); - this.title = title; - - var request = new mxXmlRequest('var/drawiodiagram.xml', data, 'PUT'); - - request.send(mxUtils.bind(this, function(req) - { - this.ui.editor.setStatus(mxUtils.htmlEntities(mxResources.get('allChangesSaved'))); - }), mxUtils.bind(this, function() - { - this.ui.editor.setStatus(mxUtils.htmlEntities(mxResources.get('unsavedChanges'))); - })); - - this.contentChanged(); - - if (success != null) - { - success(); - } - }; - //////////////// End Sandstorm File /////////////////// - - //////////////// Custom menu actions ////////////////// - - - - //////////////// End custom menu actions ////////////////// - - /** - * Main - */ - App.prototype.enableLogging = false; - - App.main(function(ui) - { - ui.actions.get('save').visible = false; - ui.actions.get('exit').visible = false; - ui.actions.get('feedback').visible = false; - - // Changes support link in Help menu - ui.actions.addAction('support...', function() - { - window.open('https://support.draw.io/display/DFS/draw.io+for+Sandstorm+Home'); - }); - }); - -// EditorUi.prototype.isExportToCanvas = function() -// { -// // LATER: Fix security error caused by foreignObjects in Safari for toDataUri (tainted canvas) -// return false; -// }; - -// // Loads and executes the plugins -// if (urlParams['offline'] != '1') -// { -// var plugins = mxSettings.getPlugins(); - -// if (plugins != null && plugins.length > 0 && urlParams['plugins'] != '0') -// { -// // Global entry point for plugins is Draw.loadPlugin. This is the only -// // long-term supported solution for access to the EditorUi instance. -// window.Draw = new Object(); -// window.Draw.loadPlugin = function(callback) -// { -// callback(ui); -// }; - -// if (plugins.length == 1 && (plugins[0].charAt(0) == '/' || -// plugins[0].indexOf(window.location.protocol + '//' + window.location.host) == 0)) -// { -// mxscript(plugins[0]); -// } -// // Loads plugins asynchronously -// else if (mxUtils.confirm(mxResources.get('pluginWarning', [plugins.join('\n')]).replace(/\\n/g, '\n'))) -// { -// for (var i = 0; i < plugins.length; i++) -// { -// mxscript(plugins[i]); -// } -// } -// } -// } -})(); -</script> -</body> -</html> - diff --git a/etc/sandstorm/stage.sh b/etc/sandstorm/stage.sh deleted file mode 100644 index 430b217ba..000000000 --- a/etc/sandstorm/stage.sh +++ /dev/null @@ -1,49 +0,0 @@ -#! /bin/bash -# -# Copyright (c) 2016, JGraph Ltd - -# https://stackoverflow.com/questions/59895/can-a-bash-script-tell-what-directory-its-stored-in -mkdir -p build/.sandstorm/client -cp -v ssindex.html build/.sandstorm/client -cp -v sandstorm-pkgdef.capnp build/.sandstorm -cp -v ChangeLog build/.sandstorm -cp -v pgp-keyring build/.sandstorm -cp -v pgp-signature build/.sandstorm -cp -v description.md build/.sandstorm -cp -v shortDesc.txt build/.sandstorm -cp -v Makefile build/.sandstorm -cp -v server.c++ build/.sandstorm -cp -v ../../war/export.html build/.sandstorm/client -cp -v ../../war/favicon.ico build/.sandstorm/client -cp -v ../../war/open.html build/.sandstorm/client -cp -v ../../war/stencils.xml build/.sandstorm/client -cp -v ../../war/search.xml build/.sandstorm/client -mkdir -p build/.sandstorm/client/images -cp -rf ../../war/images/* build/.sandstorm/client/images/ -cp -v images/drawio448.png build/.sandstorm/client/images/ -mkdir -p build/.sandstorm/client/img -cp -rf ../../war/img/* build/.sandstorm/client/img/ -mkdir -p build/.sandstorm/client/js -cp -rf ../../war/js/* build/.sandstorm/client/js/ -mkdir -p build/.sandstorm/client/mxgraph -cp -rf ../../war/mxgraph/* build/.sandstorm/client/mxgraph/ -mkdir -p build/.sandstorm/client/plugins -cp -rf ../../war/plugins/* build/.sandstorm/client/plugins/ -mkdir -p build/.sandstorm/client/resources -cp -rf ../../war/resources/* build/.sandstorm/client/resources/ -mkdir -p build/.sandstorm/client/shapes -cp -rf ../../war/shapes/* build/.sandstorm/client/shapes/ -mkdir -p build/.sandstorm/client/stencils -cp -rf ../../war/stencils/* build/.sandstorm/client/stencils/ -mkdir -p build/.sandstorm/client/styles -cp -rf ../../war/styles/* build/.sandstorm/client/styles/ -mkdir -p build/.sandstorm/client/templates -cp -rf ../../war/templates/* build/.sandstorm/client/templates/ - -echo "Compressing assets" -gfind build/.sandstorm/client -name '*.html' -o -name '*.css' -o -name '*.js' -o -name '*.txt' -o -name '*.xml' | xargs gzip -k - -echo "Creating file list" -cd build/.sandstorm -gfind ./client -type f -printf "%p\n" | cut -c 3- > sandstorm-files.list -cat ../../rootFiles >> sandstorm-files.list -- GitLab