Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 486 → Rev 489

/impl/conf/language/MessageResourcesCourseUnits.properties
125,6 → 125,10
 
 
 
courseunits.contentsGrants=Permissões de Consulta dos Ficheiros de Conteúdos
courseunits.contentsGrants.PUBLIC=PUBLICAS
courseunits.contentsGrants.PRIVATE=PRIVADOS A ESTUDANTES E DOCENTES DA UNIDADE
courseunits.contentsGrants.INTERNAL=COMUNIDADE ACADÉMICA
 
 
 
/impl/conf/app.properties
81,10 → 81,12
##################################################
##Proxy Servers
#If is an HTTP Server needs encoding config if FTP needs user pass config
#This server is the server for unit contents, must be named ionline, it is hardcoded
server.ionline=ftp://www.global.estgp.pt
server.ionline.start.path=
ionline.pass=baco
ionline.user=Baco_web
ionline.use.default.credentials.to.updates.and.deletes=false
 
server.estgp.start.path=
server.estgp=http://deptal.estgp.pt:9090/static
/impl/src/java/jomm/dao/impl/AbstractDao.java
235,6 → 235,13
}
}
 
public List<CLAZZ> getAll()
{
Session s = getCurrentSession();
Query q = s.createQuery("select * from i where i in class " + getReferenceClass().getName());
return q.list();
}
 
/**
* Return all objects related to the implementation of this DAO with no
* filters.
/impl/src/java/pt/estgp/estgweb/services/ftpservices/FtpRequestForm.java
5,6 → 5,9
import java.io.InputStream;
import java.util.List;
 
import pt.estgp.estgweb.domain.CourseUnit;
import pt.estgp.estgweb.domain.views.CourseUnitView;
 
/**
* @author Jorge
* @date 26/Fev/2009
13,9 → 16,11
public class FtpRequestForm
{
 
CourseUnitView courseUnitView;
boolean savePassword = false;
String startPath;
String serverUrl;
String serverConfName;
 
String username;
String password;
26,6 → 31,22
String folderToDelete;
 
 
public CourseUnitView getCourseUnitView() {
return courseUnitView;
}
 
public void setCourseUnitView(CourseUnitView courseUnitView) {
this.courseUnitView = courseUnitView;
}
 
public String getServerConfName() {
return serverConfName;
}
 
public void setServerConfName(String serverConfName) {
this.serverConfName = serverConfName;
}
 
public boolean isSavePassword()
{
return savePassword;
/impl/src/java/pt/estgp/estgweb/services/ftpservices/FtpService.java
6,10 → 6,10
import pt.estgp.estgweb.services.email.IAddress;
import pt.estgp.estgweb.services.email.impl.DefaultPopEmail;
import pt.estgp.estgweb.services.email.impl.DefaultAddress;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.UserImpl;
import pt.estgp.estgweb.domain.UserSessionImpl;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.utils.ConfigProperties;
import pt.estgp.estgweb.web.utils.DatesUtils;
import pt.estgp.estgweb.web.FtpServer;
import org.apache.log4j.Logger;
42,34 → 42,59
 
private static final String FTP_PASSWORD = "pt.estgp.estgweb.services.ftpservices.FtpService.FTP_PASSWORD";
 
 
public String run(FtpRequestForm ftpRequestForm, UserSession userSession) throws IOException
{
if(ftpRequestForm.isSavePassword() && ftpRequestForm.getPassword() != null && ftpRequestForm.getPassword().trim().length() > 0)
{
((UserSessionImpl)userSession).put(FTP_PASSWORD,DesUtils.getInstance().encrypt(ftpRequestForm.getPassword()));
}
String passwordCode = (String) ((UserSessionImpl)userSession).get(FTP_PASSWORD);
 
boolean isStaticAccess = ConfigProperties.getBooleanProperty(ftpRequestForm.getServerConfName()+".use.default.credentials.to.updates.and.deletes");
String password;
if(passwordCode != null)
String username;
//This only works for Contents of CourseUnits, if user uses SavePassword than the password saved will be used
if(!ftpRequestForm.isSavePassword() && isStaticAccess)
{
logger.info("using saved password");
password = DesUtils.getInstance().decrypt(passwordCode);
if(ftpRequestForm.getCourseUnitView() != null)
{
CourseUnitImpl courseUnit = (CourseUnitImpl) DaoFactory.getCourseUnitDaoImpl().load(ftpRequestForm.getCourseUnitView().getId());
if(!courseUnit.isOwnedBy(userSession.getUser(),true))
{
logger.warn("Trying to admin FTP Folder, no permission for username:" + userSession.getUsername());
return "errors.ftp.no.permission";
}
username = ConfigProperties.getProperty(ftpRequestForm.getServerConfName() + ".user");
password = ConfigProperties.getProperty(ftpRequestForm.getServerConfName() + ".pass");
}
else
return "errors.ftp.no.permission";
}
else
{
logger.info("trying pop 3 password");
password = DesUtils.getInstance().decrypt(userSession.getUser().getPop3password());
if(ftpRequestForm.isSavePassword() && ftpRequestForm.getPassword() != null && ftpRequestForm.getPassword().trim().length() > 0)
{
((UserSessionImpl)userSession).put(FTP_PASSWORD,DesUtils.getInstance().encrypt(ftpRequestForm.getPassword()));
}
String passwordCode = (String) ((UserSessionImpl)userSession).get(FTP_PASSWORD);
 
if(passwordCode != null)
{
logger.info("using saved password");
password = DesUtils.getInstance().decrypt(passwordCode);
}
else
{
logger.info("trying pop 3 password");
password = DesUtils.getInstance().decrypt(userSession.getUser().getPop3password());
}
username = ftpRequestForm.getUsername();
if(username == null || username.trim().length() == 0)
username = userSession.getUsername();
}
String username = ftpRequestForm.getUsername();
if(username == null || username.trim().length() == 0)
username = userSession.getUsername();
FtpServer server = FtpServer.getNewServer(ftpRequestForm.getServerUrl(),username,password);
FTPClient client = server.getClient();
String result = "ftp.operation.success";
client.setFileType(FTP.BINARY_FILE_TYPE);
client.changeWorkingDirectory(ftpRequestForm.getStartPath());
if(ftpRequestForm.getFilesToImport() != null)
{
{
for(FileItem item: ftpRequestForm.getFilesToImport())
{
 
/impl/src/java/pt/estgp/estgweb/domain/enums/CourseUnitContentsGrants.java
New file
0,0 → 1,30
package pt.estgp.estgweb.domain.enums;
 
/**
* @author Jorge Machado
* @date 11/Mai/2010
* @time 15:54:05
* @email machadofisher@gmail.com
*/
public enum CourseUnitContentsGrants {
 
PUBLIC,
PRIVATE,
INTERNAL;
 
private CourseUnitContentsGrants()
{
}
 
public static CourseUnitContentsGrants parse(String grants)
{
if(grants == null)
return PUBLIC;
for(CourseUnitContentsGrants c: values())
{
if(grants.equals(c.name()))
return c;
}
return PUBLIC;
}
}
/impl/src/java/pt/estgp/estgweb/domain/CourseUnitImpl.java
1,5 → 1,7
package pt.estgp.estgweb.domain;
 
import pt.estgp.estgweb.domain.enums.CourseUnitContentsGrants;
 
import java.io.Serializable;
import java.util.List;
 
12,11 → 14,26
*/
public class CourseUnitImpl extends CourseUnit implements ICanManage
{
 
CourseUnitContentsGrants courseUnitContentsGrants = null;
 
public Serializable getSerializable()
{
return getId();
}
 
 
public CourseUnitContentsGrants getCourseUnitContentsGrants() {
if(courseUnitContentsGrants == null)
courseUnitContentsGrants = CourseUnitContentsGrants.parse(super.getContentsGrants());
return courseUnitContentsGrants;
}
 
public void setCourseUnitContentsGrants(CourseUnitContentsGrants courseUnitContentsGrants) {
super.setContentsGrants(courseUnitContentsGrants.name());
this.courseUnitContentsGrants = courseUnitContentsGrants;
}
 
public boolean isValid()
{
return true; //To change body of implemented methods use File | Settings | File Templates.
84,4 → 101,7
return false;
 
}
 
 
}
/impl/src/java/pt/estgp/estgweb/domain/dao/DaoUtils.java
12,7 → 12,7
* @see pt.estgp.estgweb.domain.dao
*/
public class DaoUtils
{
{
public static Criterion createSearchQuery(String query, SearchTypeEnum searchTypeEnum, String field1, String field2)
{
/impl/src/java/pt/estgp/estgweb/domain/views/CourseUnitView.java
32,6 → 32,7
private String courseName;
private String semestre;
private String importYear;
private String contentsGrants;
private BlogView blog;
private String pathIntranet;
private String normalizedName;
112,6 → 113,7
this.semestre = courseUnit.getSemestre();
this.courseCode = courseUnit.getCourseCode();
this.objectives = courseUnit.getObjectives();
this.contentsGrants = courseUnit.getContentsGrants();
if(courseUnit.getProgramStreamId() != null)
{
programStreamId = courseUnit.getProgramStreamId();
234,6 → 236,14
return courseUnitAssignements;
}
 
public String getContentsGrants() {
return contentsGrants;
}
 
public void setContentsGrants(String contentsGrants) {
this.contentsGrants = contentsGrants;
}
 
public void setId(long id)
{
this.id = id;
262,6 → 272,7
public void persistViewInObject(CourseUnit c)
{
c.setObjectives(objectives);
c.setContentsGrants(contentsGrants);
}
 
public void persistViewAdminInObject(CourseUnit c)
/impl/src/java/pt/estgp/estgweb/web/FtpServer.java
143,7 → 143,7
int port = url.getPort();
if (port <= 0)
port = 21;
logger.info("Connecting to " + host + "in port:" + port);
logger.info("Connecting to " + host + " in port:" + port);
FtpServer ftpServer = new FtpServer(host, port, user, pass);
servers.put(urlStr, ftpServer);
return ftpServer;
/impl/src/java/pt/estgp/estgweb/web/LayoutController.java
47,6 → 47,7
String server = ConfigProperties.getProperty("server." + serverParameter);
 
 
 
if (serverParameter == null || server == null || server.length() == 0 || path == null || layout == null)
throw new FileNotFoundException("url not found for server:" + server + " and path:" + path);
 
63,6 → 64,8
path = startPath + path;
request.setAttribute("path", path);
request.setAttribute("server", server);
request.setAttribute("serverConfName", serverParameter);
request.setAttribute("requestedStartPath", startPath);
 
String proxyHost = ConfigProperties.getProperty(serverParameter + ".proxy.host");
String proxyPort = ConfigProperties.getProperty(serverParameter + ".proxy.port");
/impl/src/java/pt/estgp/estgweb/web/UserSessionProxy.java
70,5 → 70,10
return (UserSession) request.getAttribute(Globals.USER_SESSION_KEY);
}
 
public static boolean isAuthenticated(HttpServletRequest request)
{
return request.getAttribute(Globals.USER_SESSION_KEY) != null && ((UserSession)request.getAttribute(Globals.USER_SESSION_KEY)).getUser() != null;
}
 
 
}
/impl/src/java/pt/estgp/estgweb/web/FtpManager.java
8,6 → 8,7
import pt.estgp.estgweb.services.ftpservices.FtpRequestForm;
import pt.estgp.estgweb.web.controllers.ApplicationDispatchController;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.estgp.estgweb.domain.views.CourseUnitView;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
 
69,6 → 70,7
String startPath = (String) request.getAttribute(DirWebProxy.FTP_ACTUAL_PATH_KEY);
if (startPath == null)
startPath = (String) request.getAttribute(LayoutController.FTP_ACTUAL_PATH_KEY);
String serverConfName = (String) request.getAttribute("serverConfName");
String savePassword = (String) request.getAttribute("savePassword");
String newFolder = (String) request.getAttribute("newFolder");
String deleteFile = (String) request.getAttribute("deleteFile");
83,6 → 85,10
{
 
FtpRequestForm ftpRequestForm = new FtpRequestForm();
CourseUnitView courseUnitView = (CourseUnitView) request.getAttribute("CourseUnitView");
if(courseUnitView != null)
ftpRequestForm.setCourseUnitView(courseUnitView);
ftpRequestForm.setServerConfName(serverConfName);
ftpRequestForm.setUsername(username);
ftpRequestForm.setPassword(password);
if (savePassword != null && savePassword.trim().length() > 0)
104,7 → 110,6
messageBack.addError(request, result);
else
messageBack.addMessage(request, result);
 
}
catch (Exception e)
{
/impl/src/doc/baco.ppt
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/impl/src/updates/db/update6.sql
New file
0,0 → 1,2
ALTER TABLE `courseunit` ADD COLUMN `contentsGrants` VARCHAR(100) NOT NULL default 'INTERNAL' AFTER `status`;
ALTER TABLE `courseunit` ADD INDEX `pathIntranetIndex`(`pathIntranet`);
/impl/src/hbm/pt/estgp/estgweb/domain/CourseUnit.hbm.xml
27,6 → 27,7
<property name="programStreamId" type="string" index="programStreamIdIndex" />
<property name="validProgram" type="boolean" index="validProgramIndex"/>
<property name="status" type="boolean" index="statusIndex" />
<property name="contentsGrants" type="string"/>
<many-to-one name="validatorUser" class="pt.estgp.estgweb.domain.Teacher" lazy="false" outer-join="true"/>
<many-to-one name="course" class="pt.estgp.estgweb.domain.Course" lazy="false" outer-join="true"/>
<set name="blogs" cascade="delete" lazy="true" order-by="saveDate asc">
/impl/src/web/user/courseunits/courseunit.jsp
49,7 → 49,18
<html:textarea styleClass="textarea" property="courseUnitView.objectives"/>
</baco:canManage>
</p>
<baco:canManage name="CourseUnitView">
<h2><bean:message key="courseunits.contentsGrants"/></h2>
<p>
<html:select property="courseUnitView.contentsGrants">
<%--<html:option value="PUBLIC"><bean:message key="courseunits.contentsGrants.PUBLIC"/></html:option>--%>
<html:option value="INTERNAL"><bean:message key="courseunits.contentsGrants.INTERNAL"/></html:option>
<html:option value="PRIVATE"><bean:message key="courseunits.contentsGrants.PRIVATE"/></html:option>
</html:select>
</p>
</baco:canManage>
<h2><bean:message key="courseunit.programfilepath"/></h2>
<p>
<baco:canManage name="CourseUnitView">
<logic:equal value="false" name="CourseUnitView" property="validProgram">
<html:file property="programFile"/>
/impl/src/web/user/courseunits/menu.jsp
4,6 → 4,10
<%@ page import="pt.estgp.estgweb.web.utils.RequestUtils" %>
<%@ page import="java.util.List" %>
<%@ page import="pt.estgp.estgweb.utils.DatesUtils" %>
<%@ page import="pt.estgp.estgweb.domain.enums.CourseUnitContentsGrants" %>
<%@ page import="pt.estgp.estgweb.web.UserSessionProxy" %>
<%@ page import="pt.estgp.estgweb.domain.UserImpl" %>
<%@ page import="pt.estgp.estgweb.domain.UserSession" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
73,7 → 77,17
<html:link action="${user}/startLoadCourseUnitStudents${fromAction}?courseUnitView.id=${CourseUnitView.id}"><bean:message key="courseunit.students"/></html:link>
</li>
 
<baco:isAuthenticated>
<%
UserSession userSession = UserSessionProxy.loadUserSessionFromRequest(request);
CourseUnitContentsGrants contentsGrants = CourseUnitContentsGrants.parse(CourseUnitView.getContentsGrants());
if ( contentsGrants == CourseUnitContentsGrants.PUBLIC ||
(contentsGrants == CourseUnitContentsGrants.INTERNAL && UserSessionProxy.isAuthenticated(request)) ||
(contentsGrants == CourseUnitContentsGrants.PRIVATE && UserSessionProxy.isAuthenticated(request) &&
(((UserImpl) ((userSession.getUser()))).isTeacherOfCourseUnit(CourseUnitView.getId()) ||
((UserImpl) ((userSession.getUser()))).isStudentfCourseUnit(CourseUnitView.getId()))))
{
%>
<li>
<html:link action="/user/startLoadCourseUnitContentsFromHome?courseUnitView.id=${CourseUnitView.id}"><bean:message key="courseunit.menu.contents"/></html:link>
</li>
83,7 → 97,9
<li>
<html:link action="/user/startLoadCourseUnitGradesFromHome?courseUnitView.id=${CourseUnitView.id}"><bean:message key="courseunit.menu.grades"/></html:link>
</li>
</baco:isAuthenticated>
<%
}
%>