diff options
author | Vitaly Takmazov | 2016-12-28 22:38:21 +0300 |
---|---|---|
committer | Vitaly Takmazov | 2017-01-10 12:08:35 +0300 |
commit | 2f682b5e3cfc3fc5f961b60129be7bc90e0d6a03 (patch) | |
tree | 840aea9eb94d5c1f667a710d3298135854bc5002 /juick-www/src/main/java/com/juick/www/Main.java | |
parent | eb440ea4f120115613880e340b010eed5397e72c (diff) |
juick-www: now on spring-webmvc
Diffstat (limited to 'juick-www/src/main/java/com/juick/www/Main.java')
-rw-r--r-- | juick-www/src/main/java/com/juick/www/Main.java | 396 |
1 files changed, 0 insertions, 396 deletions
diff --git a/juick-www/src/main/java/com/juick/www/Main.java b/juick-www/src/main/java/com/juick/www/Main.java deleted file mode 100644 index 4fb13290..00000000 --- a/juick-www/src/main/java/com/juick/www/Main.java +++ /dev/null @@ -1,396 +0,0 @@ -/* - * Juick - * Copyright (C) 2008-2011, Ugnich Anton - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -package com.juick.www; - -import com.juick.Message; -import com.juick.server.UserQueries; -import com.mitchellbosecke.pebble.error.PebbleException; -import org.apache.commons.dbcp2.BasicDataSource; -import org.apache.commons.lang3.BooleanUtils; -import org.apache.commons.lang3.CharEncoding; -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.lang3.math.NumberUtils; -import org.springframework.jdbc.core.JdbcTemplate; -import rocks.xmpp.addr.Jid; -import rocks.xmpp.core.XmppException; -import rocks.xmpp.core.session.Extension; -import rocks.xmpp.core.session.XmppSessionConfiguration; -import rocks.xmpp.core.session.debug.LogbackDebugger; -import rocks.xmpp.extensions.component.accept.ExternalComponent; -import ru.sape.Sape; - -import javax.servlet.ServletException; -import javax.servlet.annotation.MultipartConfig; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.net.URISyntaxException; -import java.net.URLEncoder; -import java.util.Objects; -import java.util.Properties; - -/** - * - * @author Ugnich Anton - */ -@WebServlet(name = "Main", urlPatterns = {"/"}) -@MultipartConfig(fileSizeThreshold = 1024 * 1024, maxRequestSize = 1024 * 1024 * 10) -public class Main extends HttpServlet { - - JdbcTemplate sql; - JdbcTemplate sqlSearch; - String sqlSearchConnStr = "jdbc:mysql://127.0.0.1:9306?autoReconnect=true&useUnicode=yes&characterEncoding=utf8&maxAllowedPacket=512000"; - ExternalComponent xmpp; - Home home = new Home(); - Discover discover = new Discover(); - PM pm = new PM(); - Login login = new Login(); - Help help = new Help(); - User pagesUser = new User(); - UserThread pagesUserThread = new UserThread(); - NewMessage pagesNewMessage; - XMPPPost xmppPost = new XMPPPost(); - FacebookLogin loginFacebook; - VKontakteLogin loginVK = new VKontakteLogin(); - TwitterAuth twitterAuth; - SignUp signup = new SignUp(); - Settings settings; - RSS rss = new RSS(); - - @Override - public void init() throws ServletException { - - super.init(); - try { - Properties conf = new Properties(); - conf.load(getServletContext().getResourceAsStream("/WEB-INF/juick.conf")); - - BasicDataSource dataSource = new BasicDataSource(); - dataSource.setDriverClassName(conf.getProperty("datasource_driver", "com.mysql.jdbc.Driver")); - dataSource.setUrl(conf.getProperty("datasource_url")); - BasicDataSource dataSourceSearch = new BasicDataSource(); - dataSourceSearch.setDriverClassName(conf.getProperty("datasource_driver", "com.mysql.jdbc.Driver")); - dataSourceSearch.setUrl(sqlSearchConnStr); - sql = new JdbcTemplate(dataSource); - sqlSearch = new JdbcTemplate(dataSourceSearch); - boolean isXmppDisabled = BooleanUtils.toBoolean(conf.getProperty("xmpp_disabled")); - if (!isXmppDisabled) { - setupXmppComponent(Jid.of(conf.getProperty("www_xmpp_jid", "www.juick.local")), - conf.getProperty("xmpp_password"), NumberUtils.toInt(conf.getProperty("xmpp_port", StringUtils.EMPTY), 5347)); - } - twitterAuth = new TwitterAuth(conf.getProperty("twitter_consumer_key"), - conf.getProperty("twitter_consumer_secret")); - loginFacebook = new FacebookLogin(conf.getProperty("facebook_appid"), conf.getProperty("facebook_secret")); - String tmpDir = conf.getProperty("upload_tmp_dir", "/var/www/juick.com/i/tmp/"); - Utils.setTmpDir(tmpDir); - String imgPath = conf.getProperty("img_path", "/var/www/juick.com/i/"); - pagesNewMessage = new NewMessage(tmpDir, imgPath); - settings = new Settings(imgPath); - String sapeUser = conf.getProperty("sape_user", StringUtils.EMPTY); - if (!Objects.equals(sapeUser, StringUtils.EMPTY)) { - PageTemplates.sape = new Sape(sapeUser, "juick.com", 2000, 3600); - } else { - log("Sape is not initialized"); - } - } catch (Exception e) { - log(null, e); - } - } - - @Override - public void destroy() { - try { - if (xmpp != null) - xmpp.close(); - log("ExternalComponent on WWW destroyed"); - } catch (Exception e) { - log("exception on destroy", e); - } - } - - public void setupXmppComponent(final Jid componentJid, final String password, final int port) { - XmppSessionConfiguration configuration = XmppSessionConfiguration.builder() - .extensions(Extension.of(Message.class)) - .debugger(LogbackDebugger.class) - .build(); - xmpp = ExternalComponent.create(componentJid.toString(), password, configuration, "localhost", port); - xmpp.addConnectionListener(e -> log(e.toString(), e.getCause())); - try { - xmpp.connect(); - } catch (XmppException e) { - log("xmpp extension", e); - } - } - - /** - * Handles the HTTP <code>GET</code> method. - * @param request servlet request - * @param response servlet response - * @throws ServletException if a servlet-specific error occurs - * @throws IOException if an I/O error occurs - */ - @Override - protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - if (request.getCharacterEncoding() == null) { - request.setCharacterEncoding(CharEncoding.UTF_8); - } - String uri = request.getRequestURI(); - - if (uri.equals("/")) { - String tag = request.getParameter("tag"); - if (tag != null) { - Utils.sendPermanentRedirect(response, "/tag/" + URLEncoder.encode(tag, CharEncoding.UTF_8)); - } else { - com.juick.User visitor = Utils.getVisitorUser(sql, request, response); - home.doGet(sql, sqlSearch, request, response, visitor); - } - } else if (uri.equals("/post")) { - com.juick.User visitor = Utils.getVisitorUser(sql, request, response); - if (visitor.getUid() > 0) { - pagesNewMessage.doGetNewMessage(sql, request, response, visitor); - } else { - Utils.sendTemporaryRedirect(response, "/login"); - } - } else if (uri.equals("/login")) { - if (request.getQueryString() == null) { - login.doGetLoginForm(sql, request, response); - } else { - login.doGetLogin(sql, request, response); - } - } else if (uri.startsWith("/pm/")) { - com.juick.User visitor = Utils.getVisitorUser(sql, request, response); - if (visitor.getUid() == 0) { - Utils.sendTemporaryRedirect(response, "/login"); - } else { - switch (uri) { - case "/pm/inbox": - try { - pm.doGetInbox(sql, request, response, visitor); - } catch (PebbleException e) { - log("pebble exception", e); - response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - } - break; - case "/pm/sent": - try { - pm.doGetSent(sql, request, response, visitor); - } catch (PebbleException e) { - log("pebble exception", e); - response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - } - break; - default: - Errors.doGet404(sql, request, response); - break; - } - } - } else if (uri.startsWith("/rss/")) { - String uname = uri.substring(5); - int uid = UserQueries.getUIDbyName(sql, uname); - if (uid > 0) { - try { - rss.doGet(sql, response, uid); - } catch (PebbleException e) { - log("pebble exception", e); - response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - } - } else { - response.sendError(HttpServletResponse.SC_NOT_FOUND); - } - } else if (uri.equals("/logout")) { - login.doGetLogout(sql, request, response); - } else if (uri.equals("/settings")) { - try { - settings.doGet(sql, request, response); - } catch (PebbleException e) { - log("pebble exception", e); - response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - } - } else if (uri.equals("/_fblogin")) { - loginFacebook.doGet(sql, request, response); - } else if (uri.equals("/_vklogin")) { - loginVK.doGet(sql, request, response); - } else if (uri.startsWith("/_twitter")) { - twitterAuth.doGet(sql, request, response); - } else if (uri.equals("/signup")) { - try { - signup.doGet(sql, request, response); - } catch (PebbleException e) { - log("pebble exception", e); - response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - } - } else if (uri.equals("/help") || uri.equals("/help/")) { - help.doRedirectToHelpIndex(response); - } else if (uri.startsWith("/help/")) { - try { - help.doGetHelp(sql, request, response); - } catch (PebbleException e) { - log("pebble exception", e); - response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - } catch (URISyntaxException e) { - log("help exception", e); - response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - } - } else if (uri.startsWith("/tag/")) { - discover.doGet(sql, sqlSearch, request, response); - } else if (uri.matches("^/\\d+$")) { - String strID = request.getRequestURI().substring(1); - int mid = 0; - try { - mid = Integer.parseInt(strID); - } catch (NumberFormatException e) { - } - if (mid > 0) { - com.juick.User author = com.juick.server.MessagesQueries.getMessageAuthor(sql, mid); - if (author != null) { - Utils.sendPermanentRedirect(response, "/" + author.getName() + "/" + mid); - return; - } - } - Errors.doGet404(sql, request, response); - } else if (uri.matches("^/[^/]+$")) { - com.juick.User user = com.juick.server.UserQueries.getUserByName(sql, request.getRequestURI().substring(1)); - if (user != null) { - Utils.sendPermanentRedirect(response, "/" + user.getName() + "/"); - } else { - Errors.doGet404(sql, request, response); - } - } else if (uri.matches("^/.+/.*")) { - String uriparts[] = uri.split("/"); - com.juick.User user = com.juick.server.UserQueries.getUserByName(sql, uriparts[1]); - if (user != null && user.getName().equals(uriparts[1]) && !user.isBanned()) { - if (uriparts.length == 2) { // http://juick.com/username/ - pagesUser.doGetBlog(sql, sqlSearch, request, response, user); - } else if (uriparts[2].equals("tags")) { - pagesUser.doGetTags(sql, request, response, user); - } else if (uriparts[2].equals("friends")) { - pagesUser.doGetFriends(sql, request, response, user); - } else if (uriparts[2].equals("readers")) { - pagesUser.doGetReaders(sql, request, response, user); - } else { - int mid = 0; - try { - mid = Integer.parseInt(uriparts[2]); - } catch (NumberFormatException e) { - } - if (mid > 0) { - com.juick.User author = com.juick.server.MessagesQueries.getMessageAuthor(sql, mid); - if (author != null) { - if (!author.getName().equals(user.getName())) { - Utils.sendPermanentRedirect(response, "/" + author.getName() + "/" + mid); - } else { - pagesUserThread.doGetThread(sql, request, response, mid); - } - } else { - Errors.doGet404(sql, request, response); - } - } else { - Errors.doGet404(sql, request, response); - } - } - } else if (user != null && !user.isBanned()) { - Utils.sendPermanentRedirect(response, "/" + user.getName() + "/" + (uriparts.length > 2 ? uriparts[2] : StringUtils.EMPTY)); - } else { - Errors.doGet404(sql, request, response); - } - } else { - Errors.doGet404(sql, request, response); - } - } - - /** - * Handles the HTTP <code>POST</code> method. - * @param request servlet request - * @param response servlet response - * @throws ServletException if a servlet-specific error occurs - * @throws IOException if an I/O error occurs - */ - @Override - protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - if (request.getCharacterEncoding() == null) { - request.setCharacterEncoding(CharEncoding.UTF_8); - } - - String uri = request.getRequestURI(); - switch (uri) { - case "/post": { - com.juick.User visitor = Utils.getVisitorUser(sql, request, response); - if (visitor.getUid() > 0 && !visitor.isBanned()) { - pagesNewMessage.doPostMessage(sql, request, response, xmpp, visitor); - } else { - response.sendError(HttpServletResponse.SC_FORBIDDEN); - } - break; - } - case "/comment": { - com.juick.User visitor = Utils.getVisitorUser(sql, request, response); - if (visitor.getUid() > 0 && !visitor.isBanned()) { - pagesNewMessage.doPostComment(sql, request, response, xmpp, visitor); - } else { - response.sendError(HttpServletResponse.SC_FORBIDDEN); - } - break; - } - case "/like": { - com.juick.User visitor = Utils.getVisitorUser(sql, request, response); - if (visitor.getUid() > 0 && !visitor.isBanned()) { - pagesNewMessage.doPostRecomm(sql, request, response, xmpp, visitor); - } else { - response.sendError(HttpServletResponse.SC_FORBIDDEN); - } - break; - } - case "/pm/send": { - com.juick.User visitor = Utils.getVisitorUser(sql, request, response); - if (visitor.getUid() > 0 && !visitor.isBanned()) { - pm.doPostPM(sql, request, response, xmpp, visitor); - } else { - response.sendError(HttpServletResponse.SC_FORBIDDEN); - } - break; - } - case "/login": - login.doPostLogin(sql, request, response); - break; - case "/signup": - signup.doPost(sql, request, response); - break; - case "/settings": - try { - settings.doPost(sql, request, response); - } catch (PebbleException e) { - log("pebble exception", e); - response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - } - break; - case "/post2": - com.juick.User visitor = Utils.getVisitorUser(sql, request, response); - if (visitor.getUid() > 0 && !visitor.isBanned()) { - xmppPost.doPostMessage(sql, request, response, xmpp, visitor); - } else { - response.sendError(HttpServletResponse.SC_FORBIDDEN); - } - break; - default: - response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED); - break; - } - } -} |