Search in sources :

Example 1 with Site

use of org.structr.web.entity.Site in project structr by structr.

the class HtmlServlet method isVisibleForSite.

/**
 * Check if the given page is visible for the requested site defined by
 * a hostname and a port.
 *
 * @param request
 * @param page
 * @return
 */
private boolean isVisibleForSite(final HttpServletRequest request, final Page page) {
    final Site site = page.getSite();
    if (site == null) {
        return true;
    }
    final String serverName = request.getServerName();
    final int serverPort = request.getServerPort();
    if (StringUtils.isNotBlank(serverName) && !serverName.equals(site.getHostname())) {
        return false;
    }
    final Integer sitePort = site.getPort();
    if (sitePort != null && serverPort != sitePort) {
        return false;
    }
    return true;
}
Also used : Site(org.structr.web.entity.Site)

Example 2 with Site

use of org.structr.web.entity.Site in project structr by structr.

the class SimpleTest method testSites.

@Test
public void testSites() {
    try (final Tx tx = app.tx()) {
        // setup two pages and two sites
        // page one -> site one, listens on one:8875
        // page two -> site two, listens on two:8875
        final Page pageOne = app.create(Page.class, "page-one");
        try {
            final Element html = pageOne.createElement("html");
            ((DOMNode) html).setProperties(((DOMNode) html).getSecurityContext(), new PropertyMap(DOMNode.visibleToPublicUsers, true));
            final Text textNode = pageOne.createTextNode("page-1");
            ((DOMNode) textNode).setProperties(((DOMNode) textNode).getSecurityContext(), new PropertyMap(DOMNode.visibleToPublicUsers, true));
            pageOne.appendChild(html);
            html.appendChild(textNode);
        } catch (DOMException dex) {
            logger.warn("", dex);
            throw new FrameworkException(422, dex.getMessage());
        }
        final Page pageTwo = app.create(Page.class, "page-two");
        try {
            final Element html = pageTwo.createElement("html");
            ((DOMNode) html).setProperties(((DOMNode) html).getSecurityContext(), new PropertyMap(DOMNode.visibleToPublicUsers, true));
            final Text textNode = pageTwo.createTextNode("page-2");
            ((DOMNode) textNode).setProperties(((DOMNode) textNode).getSecurityContext(), new PropertyMap(DOMNode.visibleToPublicUsers, true));
            pageTwo.appendChild(html);
            html.appendChild(textNode);
        } catch (DOMException dex) {
            logger.warn("", dex);
            throw new FrameworkException(422, dex.getMessage());
        }
        final PropertyMap siteOneProperties = new PropertyMap();
        final PropertyKey<Site> siteKey = StructrApp.key(Page.class, "site");
        final PropertyKey<Integer> positionKey = StructrApp.key(Page.class, "position");
        final PropertyKey<Integer> portKey = StructrApp.key(Site.class, "port");
        final PropertyKey<String> hostnameKey = StructrApp.key(Site.class, "hostname");
        siteOneProperties.put(Site.name, "site-one");
        siteOneProperties.put(Site.visibleToPublicUsers, true);
        siteOneProperties.put(hostnameKey, "localhost");
        siteOneProperties.put(portKey, 8875);
        final PropertyMap siteTwoProperties = new PropertyMap();
        siteTwoProperties.put(Site.name, "site-two");
        siteTwoProperties.put(Site.visibleToPublicUsers, true);
        siteTwoProperties.put(hostnameKey, "127.0.0.1");
        siteTwoProperties.put(portKey, 8875);
        final Site siteOne = app.create(Site.class, siteOneProperties);
        final Site siteTwo = app.create(Site.class, siteTwoProperties);
        final PropertyMap pageOneProperties = new PropertyMap();
        pageOneProperties.put(siteKey, siteOne);
        pageOneProperties.put(Page.visibleToPublicUsers, true);
        pageOneProperties.put(positionKey, 10);
        pageOne.setProperties(pageOne.getSecurityContext(), pageOneProperties);
        final PropertyMap pageTwoProperties = new PropertyMap();
        pageTwoProperties.put(siteKey, siteTwo);
        pageTwoProperties.put(Page.visibleToPublicUsers, true);
        pageTwoProperties.put(positionKey, 10);
        pageTwo.setProperties(pageTwo.getSecurityContext(), pageTwoProperties);
        tx.success();
    } catch (FrameworkException fex) {
        logger.warn("", fex);
    }
    RestAssured.given().filter(ResponseLoggingFilter.logResponseIfStatusCodeIs(200)).filter(ResponseLoggingFilter.logResponseIfStatusCodeIs(201)).filter(ResponseLoggingFilter.logResponseIfStatusCodeIs(400)).filter(ResponseLoggingFilter.logResponseIfStatusCodeIs(401)).filter(ResponseLoggingFilter.logResponseIfStatusCodeIs(403)).filter(ResponseLoggingFilter.logResponseIfStatusCodeIs(404)).filter(ResponseLoggingFilter.logResponseIfStatusCodeIs(422)).filter(ResponseLoggingFilter.logResponseIfStatusCodeIs(500)).expect().response().contentType("text/html").statusCode(200).body(Matchers.containsString("page-1")).when().get("http://localhost:8875/");
    RestAssured.given().filter(ResponseLoggingFilter.logResponseIfStatusCodeIs(200)).filter(ResponseLoggingFilter.logResponseIfStatusCodeIs(201)).filter(ResponseLoggingFilter.logResponseIfStatusCodeIs(400)).filter(ResponseLoggingFilter.logResponseIfStatusCodeIs(401)).filter(ResponseLoggingFilter.logResponseIfStatusCodeIs(403)).filter(ResponseLoggingFilter.logResponseIfStatusCodeIs(404)).filter(ResponseLoggingFilter.logResponseIfStatusCodeIs(422)).filter(ResponseLoggingFilter.logResponseIfStatusCodeIs(500)).expect().response().contentType("text/html").statusCode(200).body(Matchers.containsString("page-2")).when().get("http://127.0.0.1:8875/");
}
Also used : Site(org.structr.web.entity.Site) Tx(org.structr.core.graph.Tx) FrameworkException(org.structr.common.error.FrameworkException) DOMElement(org.structr.web.entity.dom.DOMElement) Element(org.w3c.dom.Element) Page(org.structr.web.entity.dom.Page) Text(org.w3c.dom.Text) DOMException(org.w3c.dom.DOMException) PropertyMap(org.structr.core.property.PropertyMap) DOMNode(org.structr.web.entity.dom.DOMNode) Test(org.junit.Test) StructrUiTest(org.structr.web.StructrUiTest)

Example 3 with Site

use of org.structr.web.entity.Site in project structr by structr.

the class SiteTest method test01BasicSites.

@Test
public void test01BasicSites() {
    try (final Tx tx = app.tx()) {
        final Site site1 = createTestNode(Site.class, new NodeAttribute<>(StructrApp.key(AbstractNode.class, "name"), "site1"), new NodeAttribute<>(StructrApp.key(Site.class, "hostname"), "test1.example.com"));
        final Site site2 = createTestNode(Site.class, new NodeAttribute<>(StructrApp.key(AbstractNode.class, "name"), "site2"), new NodeAttribute<>(StructrApp.key(Site.class, "hostname"), "test2.example.com"));
        site1.setProperty(StructrApp.key(Site.class, "visibleToAuthenticatedUsers"), true);
        site2.setProperty(StructrApp.key(Site.class, "visibleToAuthenticatedUsers"), true);
        site1.setProperty(StructrApp.key(Site.class, "visibleToPublicUsers"), true);
        site2.setProperty(StructrApp.key(Site.class, "visibleToPublicUsers"), true);
        final Page page1 = Page.createSimplePage(securityContext, "site1page1");
        final Page page2 = Page.createSimplePage(securityContext, "site1page2");
        final Page page3 = Page.createSimplePage(securityContext, "site2page1");
        final Page page4 = Page.createSimplePage(securityContext, "site2page2");
        makePublicRecursively(page1);
        makePublicRecursively(page2);
        makePublicRecursively(page3);
        makePublicRecursively(page4);
        page1.setProperty(StructrApp.key(Page.class, "position"), 10);
        page2.setProperty(StructrApp.key(Page.class, "position"), 10);
        page3.setProperty(StructrApp.key(Page.class, "position"), 10);
        page4.setProperty(StructrApp.key(Page.class, "position"), 10);
        page1.setProperty(StructrApp.key(Page.class, "site"), site1);
        page2.setProperty(StructrApp.key(Page.class, "site"), site1);
        page3.setProperty(StructrApp.key(Page.class, "site"), site2);
        page4.setProperty(StructrApp.key(Page.class, "site"), site2);
        tx.success();
    } catch (FrameworkException fex) {
        fex.printStackTrace();
        fail("Unexpected exception");
    }
    RestAssured.basePath = "";
    // tests
    RestAssured.given().header("Host", "test1.example.com").expect().statusCode(200).when().get("/site1page1");
    RestAssured.given().header("Host", "test1.example.com").expect().statusCode(200).when().get("/site1page2");
    RestAssured.given().header("Host", "test1.example.com").expect().statusCode(404).when().get("/site2page1");
    RestAssured.given().header("Host", "test1.example.com").expect().statusCode(404).when().get("/site2page2");
    RestAssured.given().header("Host", "test2.example.com").expect().statusCode(404).when().get("/site1page1");
    RestAssured.given().header("Host", "test2.example.com").expect().statusCode(404).when().get("/site1page2");
    RestAssured.given().header("Host", "test2.example.com").expect().statusCode(200).when().get("/site2page1");
    RestAssured.given().header("Host", "test2.example.com").expect().statusCode(200).when().get("/site2page2");
}
Also used : Site(org.structr.web.entity.Site) Tx(org.structr.core.graph.Tx) FrameworkException(org.structr.common.error.FrameworkException) Page(org.structr.web.entity.dom.Page) Test(org.junit.Test) StructrUiTest(org.structr.web.StructrUiTest)

Example 4 with Site

use of org.structr.web.entity.Site in project structr by structr.

the class SiteTest method test02Sites.

@Test
public void test02Sites() {
    try (final Tx tx = app.tx()) {
        final Site site1 = createTestNode(Site.class, new NodeAttribute<>(StructrApp.key(AbstractNode.class, "name"), "site1"), new NodeAttribute<>(StructrApp.key(Site.class, "hostname"), "test1.example.com"));
        final Site site2 = createTestNode(Site.class, new NodeAttribute<>(StructrApp.key(AbstractNode.class, "name"), "site2"), new NodeAttribute<>(StructrApp.key(Site.class, "hostname"), "test2.example.com"));
        site1.setProperty(StructrApp.key(Site.class, "visibleToAuthenticatedUsers"), true);
        site2.setProperty(StructrApp.key(Site.class, "visibleToAuthenticatedUsers"), true);
        site1.setProperty(StructrApp.key(Site.class, "visibleToPublicUsers"), true);
        site2.setProperty(StructrApp.key(Site.class, "visibleToPublicUsers"), true);
        final Page page1 = Page.createSimplePage(securityContext, "site1page1");
        final Page page2 = Page.createSimplePage(securityContext, "site1page2");
        final Page page3 = Page.createSimplePage(securityContext, "site2page1");
        final Page page4 = Page.createSimplePage(securityContext, "site2page2");
        // makePublicRecursively(page1);
        makePublicRecursively(page2);
        // makePublicRecursively(page3);
        makePublicRecursively(page4);
        page1.setProperty(StructrApp.key(Page.class, "position"), 10);
        page2.setProperty(StructrApp.key(Page.class, "position"), 10);
        page3.setProperty(StructrApp.key(Page.class, "position"), 10);
        page4.setProperty(StructrApp.key(Page.class, "position"), 10);
        page1.setProperty(StructrApp.key(Page.class, "site"), site1);
        page2.setProperty(StructrApp.key(Page.class, "site"), site1);
        page3.setProperty(StructrApp.key(Page.class, "site"), site2);
        page4.setProperty(StructrApp.key(Page.class, "site"), site2);
        tx.success();
    } catch (FrameworkException fex) {
        fex.printStackTrace();
        fail("Unexpected exception");
    }
    RestAssured.basePath = "";
    // tests
    RestAssured.given().header("Host", "test1.example.com").expect().statusCode(404).when().get("/site1page1");
    RestAssured.given().header("Host", "test1.example.com").expect().statusCode(200).when().get("/site1page2");
    RestAssured.given().header("Host", "test1.example.com").expect().statusCode(404).when().get("/site2page1");
    RestAssured.given().header("Host", "test1.example.com").expect().statusCode(404).when().get("/site2page2");
    RestAssured.given().header("Host", "test2.example.com").expect().statusCode(404).when().get("/site1page1");
    RestAssured.given().header("Host", "test2.example.com").expect().statusCode(404).when().get("/site1page2");
    RestAssured.given().header("Host", "test2.example.com").expect().statusCode(404).when().get("/site2page1");
    RestAssured.given().header("Host", "test2.example.com").expect().statusCode(200).when().get("/site2page2");
}
Also used : Site(org.structr.web.entity.Site) Tx(org.structr.core.graph.Tx) FrameworkException(org.structr.common.error.FrameworkException) Page(org.structr.web.entity.dom.Page) Test(org.junit.Test) StructrUiTest(org.structr.web.StructrUiTest)

Aggregations

Site (org.structr.web.entity.Site)4 Test (org.junit.Test)3 FrameworkException (org.structr.common.error.FrameworkException)3 Tx (org.structr.core.graph.Tx)3 StructrUiTest (org.structr.web.StructrUiTest)3 Page (org.structr.web.entity.dom.Page)3 PropertyMap (org.structr.core.property.PropertyMap)1 DOMElement (org.structr.web.entity.dom.DOMElement)1 DOMNode (org.structr.web.entity.dom.DOMNode)1 DOMException (org.w3c.dom.DOMException)1 Element (org.w3c.dom.Element)1 Text (org.w3c.dom.Text)1