/*
* Copyright (c) 2008-2016 Computer Network Information Center (CNIC), Chinese Academy of Sciences.
*
* This file is part of Duckling project.
*
* Licensed 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.
*
*/
package cn.vlabs.umt.ui.servlet;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.duckling.vmt.api.IRestOrgService;
import net.duckling.vmt.api.impl.OrgService;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.BeanFactory;
import cn.vlabs.rest.ServiceException;
import cn.vlabs.umt.common.FirstNameGraphicsUtils;
import cn.vlabs.umt.common.util.CommonUtils;
import cn.vlabs.umt.common.util.Config;
import cn.vlabs.umt.services.role.RoleService;
import cn.vlabs.umt.services.session.SessionUtils;
import cn.vlabs.umt.services.user.bean.OauthClientBean;
import cn.vlabs.umt.services.user.bean.User;
import cn.vlabs.umt.services.user.service.IDomainService;
import cn.vlabs.umt.services.user.service.IOauthClientService;
import cn.vlabs.umt.ui.Attributes;
/**
* @author lvly
* @since 2013-9-13
*/
public class RouteServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = -4979947905914747000L;
private static final Logger LOGGER = Logger.getLogger(RouteServlet.class);
private IDomainService domainService;
private RoleService roleService;
private IOauthClientService clientService;
private Config config;
public RouteServlet() {
super();
}
public void init() {
BeanFactory factory = (BeanFactory) getServletContext().getAttribute(
Attributes.APPLICATION_CONTEXT_KEY);
domainService=(IDomainService)factory.getBean(IDomainService.BEAN_ID);
roleService=(RoleService)factory.getBean(RoleService.BEAN_ID);
config=(Config)factory.getBean(Config.BEAN_ID);
clientService=(IOauthClientService)factory.getBean(IOauthClientService.BEAN_ID);
}
@Override
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String to = request.getParameter("to");
if (CommonUtils.isNull(to)) {
response.getWriter().print("what do you wanna do?");
response.setStatus(403);
return;
}
User user=SessionUtils.getUser(request);
if(!roleService.isMemberOf("admin", user.getId())){
response.getWriter().print("what do you wanna do?<a href='logout'>logout</a>");
response.setStatus(403);
return;
}
if("sync".equals(to)){
try {
sync(request,response);
} catch (ServiceException e) {
LOGGER.error(e.getMessage(),e);
}
}else if("oauthLogo".equals(to)){
oauthLogo(request, response);
}
}
public void oauthLogo(HttpServletRequest request,HttpServletResponse response) throws IOException{
List<OauthClientBean> list=clientService.getAll();
for(OauthClientBean bean:list){
FirstNameGraphicsUtils graphics=new FirstNameGraphicsUtils();
File tmpFile=File.createTempFile(System.currentTimeMillis()+".fn.", ".png");
graphics.generate(bean.getClientName(),new FileOutputStream(tmpFile));
clientService.uploadLogoDefault(bean, tmpFile);
}
}
public void sync(HttpServletRequest request,HttpServletResponse response) throws ServiceException, IOException{
IRestOrgService orgService=new OrgService(config.getStringProp("vmt.api.url", ""));
domainService.insertOrgDomain(orgService.getAllDomains());
response.getWriter().print("success!");
return;
}
}