Proftpd Manager

Posted at 2012.12.10 05:11 | Posted in Mini Project

드디어 오랜기간의 방황을 깨고 마무리가 되었습니다. ㅠ_ㅠ


빠진 기능도 있고 버그도 있겠지만(?) 다음 과제(?)를 위해서 마무리~




소개...

 

Ubuntu 에 Proftpd 와 Mysql 을 이용해서 사용자 관리와 파일 전송 기록을 남길 수가 있습니다.

 

http://www.sysadminworld.com/2011/install-proftpd-with-mysql-backend-on-debian-ubuntu/

 

 

위와 같은 테이블로 관리를 하게 됩니다.

 

유저와 그룹을 관리하고 쌓이기만 하는 전송 기록을 볼 수 있는 웹어플을 한번 만들어 봤습니다.

 

※ 원래 데이터베이스는 MySQL 인데 샘플을 위해서 SQLite 로 데이터를 옮겼습니다.

 

 


 

사용한 기능...

 

Spring Framework 3

  - Core, AOP, MVC

 

Spring Security 3

  - AuthenticationManager 를 이용한 인증 처리

  - @PreAuthorize 어노테이션을 사용한 서비스단 메소드 보안

  - MySQL 의 password() 로직을 사용한 PasswordEncoder

 

MyBatis 3

  - List<String> ↔ 콤마 구분 문자열 타입 핸들러

  - Date ↔ datetime 타입 핸들러

 

Ext JS 4

  - 컴포넌트 동적 로딩 (필요한 클래스 js 파일을 그때그때 AJAX 로 로드)

  - 페이징 가능한 Tree Grid

  - 플러그인

    - FilterBar, MultiSorting, PagingToolbarResizer 등... -_-;




화면 설명... 


최초 페이지 로딩 후 전송 이력(History)에서 시작합니다. 데이터를 불러오려다가 로그인이 안되어 있어서 인증창이 뜹니다.



로그인이 성공하게 되면 데이터를 불러옵니다.


파일명과 접속 아이피는 문제가 될 소지가 있어서 이상하게 변환시켜 놨습니다 -_-;;;


 

아래는 사용자 관리 화면입니다. 사용자를 추가/수정/삭제 할수 있습니다.



사용자의 권한이 "관리자"만 그룹/사용자 정보를 관리할 수 있습니다. 그냥 "사용자"는 변경하려고 하면 권한이 없다고 나옵니다.



아래는 그룹 관리 화면입니다. 그룹을 추가/수정/삭제 하고, 사용자를 그룹에 포함/제외 시킬 수 있습니다.





소스 다운로드...


proftpd-maven.zip


위 파일은 이클립스 프로젝트 파일입니다. 메이븐 구조로 되어있습니다.


proftpd.war.zip.001


proftpd.war.zip.002



위 2개 파일은 war 파일을 7-zip으로 분할 압축 해놓은 겁니다.


압축 해제 후 나온 war 파일을 바로 배치 후 볼 수 있습니다. (소스 파일들도 들어있슴)

'Mini Project' 카테고리의 다른 글

Image Pyramid  (0) 2014.01.30
Proftpd Manager  (0) 2012.12.10
게시판 2.0  (5) 2011.07.27
Sudoku  (0) 2011.06.09
간단한 JAVA 실행기(?)  (1) 2011.03.21
Forecast Repository  (8) 2010.11.30
Sales History API  (2) 2010.05.27
Order Entry API  (0) 2010.05.13
Human Resources API  (0) 2010.05.10
게시판 1.0  (1) 2010.03.11
비밀번호 생성기(Generate Password)  (1) 2010.02.10

댓글 (Comment)

Name*

Password*

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

Sudoku

Posted at 2011.06.09 15:33 | Posted in Mini Project
http://antop.nerv.kr/sudoku

※ 혹시나 해보고 에러 찾으면 댓글 달아주세요~ >.,<

드디어 완성이 되었네요...

서버단의 처리보다 화면(UI)의 구성에 더 투자했습니다. (화면 80%, 서버 20%)

서버단은 어노테이션(@) 방식으로 구현했습니다. 확실히 편하긴 하네요...

하지만 관리 측면에서는 xml 로 설정하는게 좋을 듯....?


프레임워크:

기타



소스 파일입니다.



테이블 스키마 파일입니다. (phpmyadmin 으로 export 함)



문제 데이터 입니다. (phpmyadmin)



'Mini Project' 카테고리의 다른 글

Image Pyramid  (0) 2014.01.30
Proftpd Manager  (0) 2012.12.10
게시판 2.0  (5) 2011.07.27
Sudoku  (0) 2011.06.09
간단한 JAVA 실행기(?)  (1) 2011.03.21
Forecast Repository  (8) 2010.11.30
Sales History API  (2) 2010.05.27
Order Entry API  (0) 2010.05.13
Human Resources API  (0) 2010.05.10
게시판 1.0  (1) 2010.03.11
비밀번호 생성기(Generate Password)  (1) 2010.02.10

댓글 (Comment)

Name*

Password*

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

간단한 JAVA 실행기(?)

Posted at 2011.03.21 18:00 | Posted in Mini Project
http://antop.nerv.kr/java

아주 간단한 JAVA 코드 테스트 하려고 이클립스 키고 프로젝트, 클래스 만들고 하기 귀찮아서 웹에서 바로 테스트 해볼 수 있는 걸 만들어 봤습니다.

크게 Ext JS 3.3.1Spring 3.0.5를 사용 했습니다.



아래 화면이 실행 화면입니다. ㅎㅎ



JAVA 에서 main 메소드 안에 들어갈 내용을 작성하면 됩니다.

public class ? {

	public static void main(String[] args) {
		// 작성
	}

}
작성 후 "실행" 버튼을 누르면 sysout으로 출력된 결과를 볼 수 있습니다.

"저장" 버튼은 작성한 소스를 java 파일로 다운로드 받을 수 있습니다.

"로그 삭제" 버튼은 아래의 Console 로그를 삭제합니다.
 


아래 그림은 화면 레이아웃입니다.

실제 기능 구현 하는것보다 레이아웃 잡는게 훨~씬 손이 많이 가는군요 ㅠㅠ




아래 그림은 간단한 흐름입니다. 



사용자가 소스를 작성해서 "실행" 버튼을 누르면 ExtJS에 의햇 비동기 폼 서브밋이 됩니다.

그럼 스프링 MVC 에서 받아서 java 파일 작성하고, 컴파일하고, 실행해서 결과 클리이언트에게 보내줍니다. (JSON)



파일 다운로드의 경우에는 java 파일 작성까지만 하고 바로 다운로드 받게 합니다.



짜잘한 기술로는

- textarea에서 탭키로 들여쓰기 가능
- AJAX 환경에서의 파일 다운로드(IFRAME을 생성하여 그곳으로 파일 다운로드 요청)





※ java.io 패키지는 사용 할 수 없게 했습니다. ㅎㅎ

'Mini Project' 카테고리의 다른 글

Image Pyramid  (0) 2014.01.30
Proftpd Manager  (0) 2012.12.10
게시판 2.0  (5) 2011.07.27
Sudoku  (0) 2011.06.09
간단한 JAVA 실행기(?)  (1) 2011.03.21
Forecast Repository  (8) 2010.11.30
Sales History API  (2) 2010.05.27
Order Entry API  (0) 2010.05.13
Human Resources API  (0) 2010.05.10
게시판 1.0  (1) 2010.03.11
비밀번호 생성기(Generate Password)  (1) 2010.02.10
  1. 비밀댓글입니다

댓글 (Comment)

Name*

Password*

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

Forecast Repository

Posted at 2010.11.30 15:05 | Posted in Mini Project

2011년 2월 10일 - 수정 사항
 - json-taglib 수정(http://antop.tistory.com/99). 이에 따른 js에서 강제 파싱부분 제거
 - ExtJS 3.3.1 업그레이(아무 변화 없음 -_-) 및 필요한 라이브러리만 담음
 - IE에서 열라 느린거 해결 못함 ㅠ_ㅠ

forecast.part1.rar
forecast.part2.rar

해보시려면 sql(/WEB-INF/sql/*.sql)로 스키마 세팅하고, WEB-INF/applicationContext.xml 에서 DB 설정을 해줘야 합니다.

 


http://antop.nerv.kr/forecast


새로 개편하여 화면을 만들었습니다. 데이터베이스 구조만 빼고 완전 다 바뀌었군요....

  1. Cron을 이용하여 돌리던 배치(스케쥴링)를 Quartz를 이용(Spring과 연동)하여 처리 하였습니다.
  2. 화면은 ExtJS 3.2.1 + (Hightcharts 2.0.5 + jQuery 1.4.3)을 사용하였습니다
  3. 서버단은 쓰던대로 Spring 2.5.6.SEC02를 사용하였습니다.

아래 그림은 전체 흐름 구상입니다.



그림의 서버단은 다 따로 돌아가게 그려졌는데 -_-.. 다 스프링과 연동되어 돌아갑니다.

클라이언트에서는 풀 AJAX를 사용하고 서버에서는 url로 요청을 받고 json으로 응답합니다.

클라이언트의 레이아웃 구성은 아래 그림과 같습니다.



center의 tab panel의 레이아웃 구성은 아래와 같습니다.




Parameter

URL 요청 파라미터와 응답 아래와 같습니다.

- 현재날씨 목록 : http://antop.nerv.kr/forecast/whole.do?action=list&stn_id=100&from_date=2010-07-01&to_date=2010-07-14

 파라미터  필수  포맷  설명 
 stn_id  ○   숫자  지역 코드 
 from_date  ○   yyyy-MM-dd  시작 날짜
 to_date  ○  yyyy-MM-dd  마지막 날짜

- 현재날씨 상세 : http://antop.nerv.kr/forecast/whole.do?action=detail&stn_id=100&date=2010-07-08
 파라미터  필수  포맷  설명
 stn_id  ○  숫자  지역 코드
 to_date  ○  yyyy-MM-dd  날짜

- 현재날씨 제한 날짜 : http://antop.nerv.kr/forecast/whole.do?action=limit

- 현재날씨 지역 목록 : http://antop.nerv.kr/forecast/whole.do?action=stn


- 동네예보 목록 : http://antop.nerv.kr/forecast/town.do?action=list&area=1100000000&from_date=2010-08-02&to_date=2010-08-10
 파라미터  필수  포맷  설명
 area  ○  숫자(10자리)  지역 코드
 from_date  ○  yyyy-MM-dd  시작 날짜
 to_date  ○  yyyy-MM-dd  마지막 날짜

- 동네예보 상세 : http://antop.nerv.kr/forecast/town.do?action=detail&area=1100000000&date=2010-10-01
 파라미터  필수  포맷  설명
 area  ○  숫자(10자리)  지역 코드
 date  ○  yyyy-MM-dd  날짜

- 동네예보 제한 날짜 : http://antop.nerv.kr/forecast/town.do?action=limit

- 동네예보 지역 목록 : http://antop.nerv.kr/forecast/api.do?action=area
 파라미터  필수  포맷  설명
 parent  ×  숫자(10자리)  상위 지역 코드


- 주간예보 목록 : http://antop.nerv.kr/forecast/week.do?action=list
 파라미터  필수  포맷  설명
 location  ○  문자(8자리)  도시 코드
 from_date  ○  yyyy-MM-dd  시작 날짜
 to-date  ○  yyyy-MM-dd  마지막 날짜

- 주간예보 제한 날짜 : http://antop.nerv.kr/forecast/week.do?action=limit

- 주간예보 지방 목록 : http://antop.nerv.kr/forecast/api.do?action=province

- 주간예보 도시 코드 : http://antop.nerv.kr/forecast/api.do?action=location
 파라미터  필수  포맷  설명
 province  ×  문자(8자리)  지방 코드


Database Structure

테이블은 하이버네이트로 생성하였습니다.

동네예보



주간예보



전국예보



※ Toad Data Modeler 3.5 로 뽑아낸 데이터베이스 구조 입니다.









이전 버전의 forecast 보기




hey30 님의 질문 답변

아래는 조금 더 자세하게 그린 그림입니다.



이 프로젝트를 이해 하려면 최소한 'ExtJS'와 'Spring MVC', 'JSON' 정도는 아셔야 합니다. ㅠ_ㅠ

클라이언트단과 서버단은 완전히 분리 되어 있습니다. 100% AJAX[각주:2]로만 주고 받습니다.

클라이언트단은 꼭 ExtJS가 아니어도 되고, 서버단도 역시 뭘로 만들던지 JSON으로 응답만 하면 됩니다.



클라이언트에서 서버와 통신하는 객체는 JsonStore 밖에 없습니다. Store에서 알아서 서버에 요청 후 받아서 처리합니다.

store의 config properties를 autoLoad: true로 설정 하면 자동으로 요청 url을 만들어 서버단에 요청합니다.

그러면 서버단에서 contorller - (service - service impl) - (dao - dao impl) 을 거쳐서 controller에서 mav를 리턴하면 마지막에 해당 JSP 까지 가게 됩니다.

JSP에서는 jstl + json-taglib를 이용해서 JSON을 출력합니다.

그걸 다시 클라이언트단의 ExtJS Store에서 받아서 처리하게 됩니다.



vo(Value Object)는 뭐 자기가 정해서 쓰는거니.. 적당히.... ㅠ_ㅠ

  1. 계속해서 발생되는 자료를 축적하여 두었다가 일정 시점 단위로 일괄해서 처리하는 자료처리 방식으로서 배치 데이터 처리라고도 한다. [본문으로]
  2. 비동기 방식의 자바스크립트와 XML(Asynchronous JavaScript and XML). 웹상에서 JavaScript + CSS + DHTML + DOM + XMLHttpRequest + XML 등과 같은 현존하는 스크립트 언어를 통해서 서버와 통신을 하는 개발 방식 [본문으로]

'Mini Project' 카테고리의 다른 글

Image Pyramid  (0) 2014.01.30
Proftpd Manager  (0) 2012.12.10
게시판 2.0  (5) 2011.07.27
Sudoku  (0) 2011.06.09
간단한 JAVA 실행기(?)  (1) 2011.03.21
Forecast Repository  (8) 2010.11.30
Sales History API  (2) 2010.05.27
Order Entry API  (0) 2010.05.13
Human Resources API  (0) 2010.05.10
게시판 1.0  (1) 2010.03.11
비밀번호 생성기(Generate Password)  (1) 2010.02.10
  1. 우훗- 님 쫌 짱인듯 -
    돌아가는 모습도 캡쳐해놨으면 더욱더 대단했을텐데..! ^^
  2. hey30
    위에 미니프로젝트를 실제 적용하여 공부하고 있습니다
    다만 무지하여 이해가 되지 않는 부분이 좀 있어서 그러는데요
    질문이 있습니다.
    1. web단에서 처리하는 방식
    2. jsp jstl에서 spring 컨트롤러로 값을 넘겨준후 동작방식
    3. spring controller에서 mav로 리턴시 json의 내용을 web에서 어떻게 받아 처리하는지
    4. 한개의 화면을 만든다고 할때 파일을 만들어주어야 되는 순서
    ex) jsp->js->applicationContext.xml->forecast-servlet.xml->controller->service->service_impl->model
    ->dao->dao_impl <-이런식의 순서가 맞는지 의문입니다. 그리고 이걸 일일이 다 날코딩으로 만들어야되는지?
    그리고 vo는 디자인패턴으로 볼때 어느시점에서 쓰는것이 좋은지?
    이런것들이 궁금합니다.
    좀 번거로우시겠지만 무지한 개발자 업그레이드하는 기회가 될수 있도록 좀 도와주세요
  3. hey30
    친절하게 받아주셔서 감사합니다~
    학수고대하며 본문 바로 아래 답변을 기다리겠습니다.
  4. 비밀댓글입니다
    • 2012.06.28 22:55 신고 [Edit/Del]
      지금 받아오는거는 WSDL 이 아니라 그냥 일반 XML 입니다.

      그냥 Java(소켓이었나.. HttpClient 였나.. URL 이었나..)로 XML 파싱 했습니다. ^^

댓글 (Comment)

Name*

Password*

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

Eclipse + Apatana 를 이용하여 jQuery Code Assist를 사용하다가, Ext JS도 지원하길래 써봤는데 별로 기능이 쉬원치 않더군요...

그래서 ExtJS를 지원하는 다른 것을 찾았습니다~

http://www.spket.com/

Ext JS 외에 다른 것(jQuery, Flex, 등)도 이것저것 지원되네요.


Installation

Eclipse Galileo 에서 설치하였습니다.

일단 Ext JS 라이브러리가 어딘가에 있어야 합니다.


Help - Install New Software...



Add 클릭



http://www.spket.com/update/ 등록

Spket IDE 선택



Next



Finish



플러그인 설치 후 이클립스를 재시작 합니다.

WIndow - Preferences



Spket - JavaScript Profiles

New... 클릭



Name 입력



추가한 이름(ExtJS) 선택 후 Add Library 클릭



Library를 ExtJS로 선택합니다.



추가된 라이브러리 선택 후 Add FIle 클릭



Ext JS 라이브러리 파일들 중에 ext.jsb2 파일을 선택합니다.



잘 등록 되었습니다.



ExtJS를 선택 하고 Default를 클릭하여 기본 프로파일이 되게 하니다.



General - Editors - File Associations 에서 *.js 파일의 편집기를 Spket JavaScript Editor로 설정합니다.



이제 js 파일을 작성해봅시다.

만족할 만큼 Code Assist 기능이 작동 하는군요 ㅎㅎ



API 문서 번갈아서 볼 수고는 좀 덜었네요 ㅎㅎ



'JavaScript > Ext JS' 카테고리의 다른 글

Eclipse + SpketIDE = Ext JS Code Assist 사용하기  (2) 2010.07.12
  1. 웹앱공부하면서 js코드힌트 어떻게 안되는 건가 고민했는데
    덕분에 수월하게 볼 수 있을 거 같습니다.
    좋은 정보 감사합니다^^
  2. 조성민
    좋은 정보 감사합니다~
    그런데 이렇게 사용할 경우 ExtJS관련 Code Assist 는 만족할 만 하지만
    alert와 같은 기본 스크립트(?) 등은 assist가 안되네요.. 혹시 방법 없을까요??

댓글 (Comment)

Name*

Password*

Link (Your Website)

Comment

SECRET | 비밀글로 남기기