first
5
safekiso-server/modules/safekiso/client/.gitignore
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
# Ignore everything in this directory
|
||||
.output
|
||||
client.tgz
|
||||
# Except this file
|
||||
!.gitignore
|
||||
206
safekiso-server/modules/safekiso/data/AD.txt
Normal file
@@ -0,0 +1,206 @@
|
||||
면허증위조
|
||||
기록부위조
|
||||
성적표위조
|
||||
여권위조
|
||||
인증위조
|
||||
등록증위조
|
||||
졸업장위조
|
||||
증명서위조
|
||||
토익위조
|
||||
토플위조
|
||||
통장위조
|
||||
민증위조
|
||||
주민등록증위조
|
||||
levitra
|
||||
레비트라
|
||||
레비트ᄅ┠
|
||||
viagra
|
||||
비아그라
|
||||
ᄇ┃ᄋ┠그ᄅ┠
|
||||
계좌 매입
|
||||
계좌매입
|
||||
난자 공여
|
||||
난자공여
|
||||
난자 매매
|
||||
난자매매
|
||||
정자 매매
|
||||
정자매매
|
||||
신장 매매
|
||||
신장매매
|
||||
네트워크 마케팅
|
||||
네트워크마케팅
|
||||
넷버스다운
|
||||
다음 카페 구입
|
||||
다음 카페구입
|
||||
다음카페 구입
|
||||
다음카페구입
|
||||
다음 카페 매매
|
||||
다음 카페매매
|
||||
다음카페 매매
|
||||
다음카페매매
|
||||
다음 카페 판매
|
||||
다음 카페판매
|
||||
다음카페 판매
|
||||
다음카페판매
|
||||
비밀번호해킹
|
||||
비밀번호조회
|
||||
비밀번호알아내기
|
||||
비번해킹
|
||||
비번조회
|
||||
비번알아내기
|
||||
자격증 대여
|
||||
자격증대여
|
||||
자격증 임대
|
||||
자격증임대
|
||||
통장 매입
|
||||
통장매입
|
||||
통장 삽니다
|
||||
통장삽니다
|
||||
통장 팝니다
|
||||
통장팝니다
|
||||
개인 통장
|
||||
개인통장
|
||||
핸드폰 결제
|
||||
핸드폰결제
|
||||
핸드폰 깡
|
||||
핸드폰깡
|
||||
핸드폰 브릿지
|
||||
핸드폰브릿지
|
||||
복제폰
|
||||
좀비폰
|
||||
막폰
|
||||
브릿지폰
|
||||
습득폰
|
||||
주운폰
|
||||
청부 살인
|
||||
청부살인
|
||||
청부 폭력
|
||||
청부폭력
|
||||
주민 생산기
|
||||
주민생산기
|
||||
주민 생성
|
||||
주민생성
|
||||
문상 생성기
|
||||
문상생성기
|
||||
문화상품권 생성기
|
||||
문화상품권생성기
|
||||
상품권 생성기
|
||||
상품권생성기
|
||||
대출 디비
|
||||
대출디비
|
||||
디비 판매
|
||||
디비판매
|
||||
카드 복제
|
||||
카드복제
|
||||
렌즈카드
|
||||
마킹카드
|
||||
정보 이용료 결제
|
||||
정보 이용료결제
|
||||
정보이용료 결제
|
||||
정보이용료결제
|
||||
정보 이용료 결재
|
||||
정보 이용료결재
|
||||
정보이용료 결재
|
||||
정보이용료결재
|
||||
카드깡
|
||||
소액 결재
|
||||
소액결재
|
||||
소액 결제
|
||||
소액결제
|
||||
미나리약국
|
||||
대포차
|
||||
죄수번호
|
||||
아리랑치기
|
||||
졍품
|
||||
애인 대행
|
||||
애인대행
|
||||
연애 대행
|
||||
연애대행
|
||||
몰뽕
|
||||
히로뽕
|
||||
마약 고메오
|
||||
마약고메오
|
||||
GHB만들기
|
||||
커버리티키스
|
||||
작대기 술
|
||||
작대기술
|
||||
작대기 아이스
|
||||
작대기아이스
|
||||
작대기 크리스탈
|
||||
작대기크리스탈
|
||||
작대기 필로폰
|
||||
작대기필로폰
|
||||
작대기 히로뽕
|
||||
작대기히로뽕
|
||||
아이스 빙두
|
||||
아이스빙두
|
||||
아이스 술파는곳
|
||||
아이스술파는곳
|
||||
아이스 안전거래
|
||||
아이스안전거래
|
||||
아이스 얼음술
|
||||
아이스얼음술
|
||||
아이스 작대기 얼음
|
||||
아이스 작대기얼음
|
||||
아이스작대기 얼음
|
||||
아이스작대기얼음
|
||||
아이스 필로폰
|
||||
아이스필로폰
|
||||
메스암페타민
|
||||
떨액
|
||||
빙두
|
||||
물뽕
|
||||
필로폰
|
||||
대마초
|
||||
마약 판매
|
||||
마약판매
|
||||
미프진 상담
|
||||
미프진상담
|
||||
미프진 낙태
|
||||
미프진낙태
|
||||
미프진 판매
|
||||
미프진판매
|
||||
스피니시플라이 효과
|
||||
스피니시플라이효과
|
||||
스피니시플라이 구입
|
||||
스피니시플라이구입
|
||||
스페니시플라이 효과
|
||||
스페니시플라이효과
|
||||
스페니시플라이 구입
|
||||
스페니시플라이구입
|
||||
스패니시플라이 효과
|
||||
스패니시플라이효과
|
||||
스패니시플라이 구입
|
||||
스패니시플라이구입
|
||||
최음효과
|
||||
최음환각
|
||||
최음주사
|
||||
강력최음
|
||||
관계시흥분시키는약
|
||||
아흐윽수면제
|
||||
여성용최음
|
||||
여성최음
|
||||
여자흥분시키는약
|
||||
여자흥분약
|
||||
여친발정제
|
||||
윤제준희정력제
|
||||
일본직수입최음
|
||||
최음로션
|
||||
최음물
|
||||
최음성분
|
||||
최음약
|
||||
최음임신
|
||||
최음작업약
|
||||
최음작용
|
||||
최음주
|
||||
키스오브데스효과
|
||||
플라이스패니쉬
|
||||
흐윽..최음
|
||||
흥분약
|
||||
흥분제
|
||||
최음제
|
||||
여성흥분제
|
||||
최음재
|
||||
cialis
|
||||
씨알리스
|
||||
시알리스
|
||||
189
safekiso-server/modules/safekiso/data/ADULT.txt
Normal file
@@ -0,0 +1,189 @@
|
||||
풀사롱
|
||||
풀쌀롱
|
||||
풀싸롱
|
||||
룸사롱
|
||||
룸쌀롱
|
||||
룸싸롱
|
||||
ㅈㄱ만남
|
||||
조건만남
|
||||
출장만남
|
||||
sex partner
|
||||
sexpartner
|
||||
섹파
|
||||
섹스 파트너
|
||||
섹스파트너
|
||||
섹 알바
|
||||
섹알바
|
||||
섹스 알바
|
||||
섹스알바
|
||||
오르가즘
|
||||
쓰리썸
|
||||
빠구리
|
||||
항문성교
|
||||
fetish
|
||||
패티쉬
|
||||
애무
|
||||
스와핑
|
||||
떡칠줄
|
||||
섹스
|
||||
sex
|
||||
성관계
|
||||
성관ᄀ ㅖ
|
||||
성관ᄀㅖ
|
||||
구강 성교
|
||||
구강성교
|
||||
집단 성교
|
||||
집단성교
|
||||
프리쎅
|
||||
그룹섹
|
||||
그룹쎅
|
||||
그릅섹
|
||||
화상섹
|
||||
포온섹
|
||||
갱뱅
|
||||
겡뱅
|
||||
펠라치오
|
||||
포르노
|
||||
일본뽀르노
|
||||
ポルノ
|
||||
보징어
|
||||
봊지
|
||||
도끼자국
|
||||
보지빨기
|
||||
졷물
|
||||
젖탱
|
||||
젓탱
|
||||
빨통
|
||||
불알
|
||||
부랄
|
||||
봇지
|
||||
보지구녕
|
||||
보짓구녕
|
||||
보직군영
|
||||
곧츄
|
||||
巨乳
|
||||
클리토리스
|
||||
육변기
|
||||
젖은팬티흥분
|
||||
엉덩이찰싹아읏
|
||||
바나나몰
|
||||
키스방
|
||||
리얼돌
|
||||
야동사이트
|
||||
성인영화
|
||||
성인만화
|
||||
pornhub
|
||||
여인즐감
|
||||
이반시티
|
||||
아줌마야한밤
|
||||
야한동영상
|
||||
밍키넷
|
||||
부르르닷컴
|
||||
도신닷컴
|
||||
섹스 비디오
|
||||
섹스비디오
|
||||
오야넷
|
||||
소라넷
|
||||
일본섹스동영상
|
||||
늘보넷
|
||||
부커취
|
||||
무료누드
|
||||
무료망가
|
||||
무료성인게시판
|
||||
무료성인동영상
|
||||
무료성인만화
|
||||
무료성인사이트
|
||||
무료성인소설
|
||||
무료성인싸이트
|
||||
무료성인야설
|
||||
무료성인영화
|
||||
무료성인정보
|
||||
무료야동
|
||||
무료야설
|
||||
무료헨타이
|
||||
은꼴
|
||||
꼴린다
|
||||
섹시 웹툰
|
||||
섹시웹툰
|
||||
성인 웹튠
|
||||
성인웹튠
|
||||
야한 사진
|
||||
야한사진
|
||||
야한애니
|
||||
노브라
|
||||
성상납 x파일
|
||||
성상납x파일
|
||||
성상납 X파일
|
||||
성상납X파일
|
||||
야게임즈닷넷
|
||||
야시꾸리닷컴
|
||||
아줌마 야동
|
||||
아줌마야동
|
||||
아줌마 페티쉬
|
||||
아줌마페티쉬
|
||||
야하게임
|
||||
야하동영상
|
||||
야설게시판
|
||||
야설공작소
|
||||
야설소라의가이드
|
||||
여고생몰카
|
||||
여중생몰카
|
||||
화장실몰카
|
||||
여중상습폭행동영상
|
||||
여중생폭행동영상
|
||||
소피아2정품
|
||||
여성윤활제추천
|
||||
이글롱타임쿨젤
|
||||
오나홀
|
||||
성인용품
|
||||
러브젤
|
||||
애널
|
||||
노예남
|
||||
노예녀
|
||||
노예 구함
|
||||
노예구함
|
||||
노예 주인
|
||||
노예주인
|
||||
노예 구한다
|
||||
노예구한다
|
||||
야동교사
|
||||
야동교수요
|
||||
야동굿
|
||||
야동몰카
|
||||
야동보실분
|
||||
야동자료실
|
||||
여자따먹기
|
||||
여자자위
|
||||
여자따묵기
|
||||
여자옷벗기기
|
||||
여자옷벗기기게임
|
||||
여자화장실몰래카메라
|
||||
정액핥아
|
||||
정액마셔
|
||||
잠지물핥아
|
||||
잠지물마셔
|
||||
잠짓물핥아
|
||||
잠짓물마셔
|
||||
정자핥아
|
||||
정자마셔
|
||||
유두빨어
|
||||
유두빨아
|
||||
유두만져
|
||||
유두주물럭
|
||||
유두쪼물럭
|
||||
유두핥아
|
||||
유두마셔
|
||||
유방빨어
|
||||
유방빨아
|
||||
유방만져
|
||||
유방주물럭
|
||||
유방쪼물럭
|
||||
유방핥아
|
||||
유방마셔
|
||||
beeg.com
|
||||
video.fc2.com
|
||||
www.xvideos.com
|
||||
xhamster.com
|
||||
www.pornhub.com
|
||||
www.pornorama.com
|
||||
www.xvideo.com
|
||||
151
safekiso-server/modules/safekiso/data/GAMBLE.txt
Normal file
@@ -0,0 +1,151 @@
|
||||
카지노
|
||||
ᄏr지노
|
||||
ᄏrᄌl노
|
||||
카ᄌl노
|
||||
카.지.노
|
||||
바카라
|
||||
바.카.라
|
||||
ᄇrᄏrᄅr
|
||||
바ᄏrᄅr
|
||||
ᄇr카ᄅr
|
||||
ᄇrᄏr라
|
||||
온라인 카지노게임
|
||||
온라인카지노게임
|
||||
마닐라 밤문화
|
||||
마닐라밤문화
|
||||
마라톤 벳
|
||||
마라톤벳
|
||||
오션파라다이스
|
||||
원정 도박
|
||||
원정도박
|
||||
한글 도박
|
||||
한글도박
|
||||
해외양방
|
||||
온라인 경마
|
||||
온라인경마
|
||||
온라인 황금성
|
||||
온라인황금성
|
||||
과일게임
|
||||
마이크로게임
|
||||
백경게임
|
||||
사오정게임
|
||||
야마토
|
||||
바다이야기
|
||||
릴게임
|
||||
홀덤게임
|
||||
텍사스홀덤
|
||||
블랙잭
|
||||
바다포커
|
||||
목카드
|
||||
실시간 바둑이
|
||||
실시간바둑이
|
||||
실시간 환전
|
||||
실시간환전
|
||||
특수 렌즈카드
|
||||
특수렌즈카드
|
||||
포.커
|
||||
포-커
|
||||
폰타나 바둑이
|
||||
폰타나바둑이
|
||||
현찰 게임
|
||||
현찰게임
|
||||
현찰 맞고
|
||||
현찰맞고
|
||||
현금 게임
|
||||
현금게임
|
||||
현금 고스톱
|
||||
현금고스톱
|
||||
현금 도박
|
||||
현금도박
|
||||
현금 맞고
|
||||
현금맞고
|
||||
현금 바둑이
|
||||
현금바둑이
|
||||
현금 포커
|
||||
현금포커
|
||||
첫충
|
||||
매충
|
||||
체험 머니
|
||||
체험머니
|
||||
무료 충전
|
||||
무료충전
|
||||
무료 현금
|
||||
무료현금
|
||||
네임드사다리
|
||||
유출픽
|
||||
해킹 유출
|
||||
해킹유출
|
||||
사다리 유출
|
||||
사다리유출
|
||||
토토 총판
|
||||
토토총판
|
||||
와이즈 토토
|
||||
와이즈토토
|
||||
해외 토토
|
||||
해외토토
|
||||
강랜 친구들
|
||||
강랜친구들
|
||||
강랜 후기
|
||||
강랜후기
|
||||
라이브 스코어
|
||||
라이브 스코아
|
||||
라이브스코어
|
||||
라이브스코아
|
||||
라이브 배팅
|
||||
라이브 베팅
|
||||
라이브배팅
|
||||
라이브베팅
|
||||
사설배팅
|
||||
사설베팅
|
||||
배팅 프로그램
|
||||
배팅프로그램
|
||||
배팅 사이트
|
||||
배팅사이트
|
||||
베팅 프로그램
|
||||
베팅프로그램
|
||||
베팅 사이트
|
||||
베팅사이트
|
||||
메이저노리터
|
||||
메이저놀이터
|
||||
메이저토토
|
||||
메이저toto
|
||||
매이저노리터
|
||||
매이저놀이터
|
||||
매이저토토
|
||||
매이저toto
|
||||
메Ol저노리터
|
||||
메Ol저놀이터
|
||||
메Ol저토토
|
||||
메Ol저toto
|
||||
메01저노리터
|
||||
메01저놀이터
|
||||
메01저토토
|
||||
메01저toto
|
||||
사설노리터
|
||||
사설놀이터
|
||||
사설토토
|
||||
사설toto
|
||||
실전 게임
|
||||
실전게임
|
||||
실전 고스톱
|
||||
실전고스톱
|
||||
실전 맞고
|
||||
실전맞고
|
||||
실전 머니
|
||||
실전머니
|
||||
실전 현금
|
||||
실전현금
|
||||
실전 환전
|
||||
실전환전
|
||||
리얼 게임
|
||||
리얼게임
|
||||
리얼 고스톱
|
||||
리얼고스톱
|
||||
리얼 맞고
|
||||
리얼맞고
|
||||
리얼 머니
|
||||
리얼머니
|
||||
리얼 현금
|
||||
리얼현금
|
||||
리얼 환전
|
||||
리얼환전
|
||||
47
safekiso-server/modules/safekiso/data/SUICIDE.txt
Normal file
@@ -0,0 +1,47 @@
|
||||
죽고 싶을때
|
||||
죽고싶을때
|
||||
목매는
|
||||
목매달
|
||||
목매자
|
||||
죽는 방법
|
||||
죽는방법
|
||||
죽는 법
|
||||
죽는법
|
||||
지하철 투신
|
||||
지하철투신
|
||||
서서히 죽는
|
||||
서서히죽는
|
||||
수면제 구입
|
||||
수면제구입
|
||||
시안화칼륨
|
||||
독약 만드는 법
|
||||
독약 만드는법
|
||||
독약만드는 법
|
||||
독약만드는법
|
||||
독약 만들기
|
||||
독약만들기
|
||||
독약 파는곳
|
||||
독약파는곳
|
||||
마취제 구입 방법
|
||||
마취제 구입방법
|
||||
마취제구입 방법
|
||||
마취제구입방법
|
||||
jasal
|
||||
ja살
|
||||
zasal
|
||||
강력 수면제 이름
|
||||
강력 수면제이름
|
||||
강력수면제 이름
|
||||
강력수면제이름
|
||||
그라목손
|
||||
잔인하게 죽은 사진
|
||||
잔인하게 죽은사진
|
||||
잔인하게죽은 사진
|
||||
잔인하게죽은사진
|
||||
죽고 싶다
|
||||
죽고싶다
|
||||
자살
|
||||
자 살하고
|
||||
자살하고
|
||||
자 살기도자
|
||||
자살기도자
|
||||
785349
safekiso-server/modules/safekiso/data/SWEARWORD.txt
Normal file
6021
safekiso-server/modules/safekiso/data/WHITE.txt
Normal file
2472
safekiso-server/modules/safekiso/index.js
Normal file
115
safekiso-server/modules/safekiso/locales/en.json
Normal file
@@ -0,0 +1,115 @@
|
||||
{
|
||||
"LinkFamily Co., Ltd.": "LinkFamily Co., Ltd.",
|
||||
"사업자 정보가 표시되지 않고 있습니다.": "사업자 정보가 표시되지 않고 있습니다.",
|
||||
"사업자 정보가 표시되고 있습니다.": "사업자 정보가 표시되고 있습니다.",
|
||||
"지금은 점검중이 아닙니다.": "지금은 점검중이 아닙니다.",
|
||||
"지금은 점검중 입니다.": "지금은 점검중 입니다.",
|
||||
"오류 발생": "오류 발생",
|
||||
"아이쿠! 이런건 뭔지 모릅니다요!": "아이쿠! 이런건 뭔지 모릅니다요!",
|
||||
"앗차!": "앗차!",
|
||||
"로그인 한 사용자만 평가를 입력할 수 있습니다. 가입절차 없이 바로 간단하게 소셜 로그인 하세요.": "로그인 한 사용자만 평가를 입력할 수 있습니다. 가입절차 없이 바로 간단하게 소셜 로그인 하세요.",
|
||||
"로그인 한 사용자만 댓글 평가를 입력할 수 있습니다. 가입절차 없이 바로 간단하게 소셜 로그인 하세요.": "로그인 한 사용자만 댓글 평가를 입력할 수 있습니다. 가입절차 없이 바로 간단하게 소셜 로그인 하세요.",
|
||||
"로그인 한 사용자만 댓글을 입력할 수 있습니다. 가입절차 없이 바로 간단하게 소셜 로그인 하세요.": "로그인 한 사용자만 댓글을 입력할 수 있습니다. 가입절차 없이 바로 간단하게 소셜 로그인 하세요.",
|
||||
"이미 수정 가능 횟수를 모두 사용하셨어요. 더이상 의견을 수정할 수 없습니다.": "이미 수정 가능 횟수를 모두 사용하셨어요. 더이상 의견을 수정할 수 없습니다.",
|
||||
"모든 항목에 값을 입력해 주세요.": "모든 항목에 값을 입력해 주세요.",
|
||||
"임시점검": "임시점검",
|
||||
"서비스 개선을 위한 임시 점검 중입니다.": "서비스 개선을 위한 임시 점검 중입니다.",
|
||||
"알 수 없는 op :": "알 수 없는 op :",
|
||||
"점검 개시": "점검 개시",
|
||||
"지정하신 옵션으로 점검이 시작되었습니다.": "지정하신 옵션으로 점검이 시작되었습니다.",
|
||||
"점검 종료": "점검 종료",
|
||||
"점검이 종료되었습니다.": "점검이 종료되었습니다.",
|
||||
"긴급 점검 개시": "긴급 점검 개시",
|
||||
"정보 변경 완료": "정보 변경 완료",
|
||||
"입력하신 값들이 반영되었습니다.": "입력하신 값들이 반영되었습니다.",
|
||||
"정보 삭제 완료": "정보 삭제 완료",
|
||||
"더 이상 사업자 정보가 표시되지 않습니다.": "더 이상 사업자 정보가 표시되지 않습니다.",
|
||||
"관리자 메뉴": "관리자 메뉴",
|
||||
"사업자 정보": "사업자 정보",
|
||||
"공지": "공지",
|
||||
"자주 묻는 질문": "자주 묻는 질문",
|
||||
"일대일 상담": "일대일 상담",
|
||||
"유저 관리": "유저 관리",
|
||||
"로그 보기": "로그 보기",
|
||||
"사용자 로그 보기": "사용자 로그 보기",
|
||||
"크레딧 로그 보기": "크레딧 로그 보기",
|
||||
"서비스 점검": "서비스 점검",
|
||||
"파일 업로드": "파일 업로드",
|
||||
"업체명": "업체명",
|
||||
"업체명을 입력해 주세요.": "업체명을 입력해 주세요.",
|
||||
"대표자": "대표자",
|
||||
"대표자명을 입력해 주세요.": "대표자명을 입력해 주세요.",
|
||||
"주소": "주소",
|
||||
"주소를 입력해 주세요.": "주소를 입력해 주세요.",
|
||||
"전화번호": "전화번호",
|
||||
"전화번호를 입력해 주세요.": "전화번호를 입력해 주세요.",
|
||||
"이메일": "이메일",
|
||||
"이메일 주소를 입력해 주세요.": "이메일 주소를 입력해 주세요.",
|
||||
"사업자 등록번호": "사업자 등록번호",
|
||||
"사업자 등록번호를 입력해 주세요.": "사업자 등록번호를 입력해 주세요.",
|
||||
"통신판매 번호": "통신판매 번호",
|
||||
"통신판매 번호를 입력하세요. 공란으로 두시면 항목이 표시되지 않습니다.": "통신판매 번호를 입력하세요. 공란으로 두시면 항목이 표시되지 않습니다.",
|
||||
"메모": "메모",
|
||||
"간단한 소개말을 입력해 주세요.": "간단한 소개말을 입력해 주세요.",
|
||||
"사업자 정보 변경": "사업자 정보 변경",
|
||||
"사업자 정보 표시 안함": "사업자 정보 표시 안함",
|
||||
"(미리 보기)": "(미리 보기)",
|
||||
"간단 소개": "간단 소개",
|
||||
"Title": "Title",
|
||||
"Detail": "Detail",
|
||||
"Flags": "Flags",
|
||||
"Status": "Status",
|
||||
"Created": "Created",
|
||||
"Action": "Action",
|
||||
"새 공지 작성": "새 공지 작성",
|
||||
"태그는 입력하실 수 없습니다.": "태그는 입력하실 수 없습니다.",
|
||||
"제목": "제목",
|
||||
"공지 제목을 입력해 주세요.": "공지 제목을 입력해 주세요.",
|
||||
"내용": "내용",
|
||||
"공지 내용을 입력해 주세요. 태그는 입력하실 수 없습니다.": "공지 내용을 입력해 주세요. 태그는 입력하실 수 없습니다.",
|
||||
"저장": "저장",
|
||||
"미리보기": "미리보기",
|
||||
"공지사항": "공지사항",
|
||||
"자주묻는 질문": "자주묻는 질문",
|
||||
"Question": "Question",
|
||||
"Answer": "Answer",
|
||||
"새 FAQ 작성": "새 FAQ 작성",
|
||||
"유저 리스트": "유저 리스트",
|
||||
"UID": "UID",
|
||||
"Name": "Name",
|
||||
"Type": "Type",
|
||||
"Level": "Level",
|
||||
"cReal": "cReal",
|
||||
"cBonus": "cBonus",
|
||||
"Lock": "Lock",
|
||||
"Statue": "Statue",
|
||||
"점검 제목": "점검 제목",
|
||||
"임시점검, 긴급점검, 정기점검 등...": "임시점검, 긴급점검, 정기점검 등...",
|
||||
"간단한 설명": "간단한 설명",
|
||||
"무슨 무슨 사유로 점검을 진행중입니다.": "무슨 무슨 사유로 점검을 진행중입니다.",
|
||||
"완료 예정 일시": "완료 예정 일시",
|
||||
"점검 범위": "점검 범위",
|
||||
"전체 (web, api, buy)": "전체 (web, api, buy)",
|
||||
"웹 사이트만": "웹 사이트만",
|
||||
"api 호출만": "api 호출만",
|
||||
"구매만": "구매만",
|
||||
"입력대로 점검 개시": "입력대로 점검 개시",
|
||||
"전체, 완료시까지, 긴급 점검 개시": "전체, 완료시까지, 긴급 점검 개시",
|
||||
"입력대로 점검 변경": "입력대로 점검 변경",
|
||||
"질문": "질문",
|
||||
"질문을 입력해 주세요.": "질문을 입력해 주세요.",
|
||||
"답변": "답변",
|
||||
"답변 내용을 입력해 주세요. 태그는 입력하실 수 없습니다.": "답변 내용을 입력해 주세요. 태그는 입력하실 수 없습니다.",
|
||||
"자주 묻는 질문과 답변": "자주 묻는 질문과 답변",
|
||||
"수정": "수정",
|
||||
"삭제": "삭제",
|
||||
"로그 조회": "로그 조회",
|
||||
"Tag": "Tag",
|
||||
"Data": "Data",
|
||||
"Real": "Real",
|
||||
"Bonus": "Bonus",
|
||||
"Memo": "Memo",
|
||||
"By": "By",
|
||||
"Toxic Words Filter": "Toxic Words Filter",
|
||||
"Toxic Words Filter API": "Toxic Words Filter API"
|
||||
}
|
||||
115
safekiso-server/modules/safekiso/locales/ko.json
Normal file
@@ -0,0 +1,115 @@
|
||||
{
|
||||
"LinkFamily Co., Ltd.": "LinkFamily Co., Ltd.",
|
||||
"사업자 정보가 표시되지 않고 있습니다.": "사업자 정보가 표시되지 않고 있습니다.",
|
||||
"사업자 정보가 표시되고 있습니다.": "사업자 정보가 표시되고 있습니다.",
|
||||
"지금은 점검중이 아닙니다.": "지금은 점검중이 아닙니다.",
|
||||
"지금은 점검중 입니다.": "지금은 점검중 입니다.",
|
||||
"오류 발생": "오류 발생",
|
||||
"아이쿠! 이런건 뭔지 모릅니다요!": "아이쿠! 이런건 뭔지 모릅니다요!",
|
||||
"앗차!": "앗차!",
|
||||
"로그인 한 사용자만 평가를 입력할 수 있습니다. 가입절차 없이 바로 간단하게 소셜 로그인 하세요.": "로그인 한 사용자만 평가를 입력할 수 있습니다. 가입절차 없이 바로 간단하게 소셜 로그인 하세요.",
|
||||
"로그인 한 사용자만 댓글 평가를 입력할 수 있습니다. 가입절차 없이 바로 간단하게 소셜 로그인 하세요.": "로그인 한 사용자만 댓글 평가를 입력할 수 있습니다. 가입절차 없이 바로 간단하게 소셜 로그인 하세요.",
|
||||
"로그인 한 사용자만 댓글을 입력할 수 있습니다. 가입절차 없이 바로 간단하게 소셜 로그인 하세요.": "로그인 한 사용자만 댓글을 입력할 수 있습니다. 가입절차 없이 바로 간단하게 소셜 로그인 하세요.",
|
||||
"이미 수정 가능 횟수를 모두 사용하셨어요. 더이상 의견을 수정할 수 없습니다.": "이미 수정 가능 횟수를 모두 사용하셨어요. 더이상 의견을 수정할 수 없습니다.",
|
||||
"모든 항목에 값을 입력해 주세요.": "모든 항목에 값을 입력해 주세요.",
|
||||
"임시점검": "임시점검",
|
||||
"서비스 개선을 위한 임시 점검 중입니다.": "서비스 개선을 위한 임시 점검 중입니다.",
|
||||
"알 수 없는 op :": "알 수 없는 op :",
|
||||
"점검 개시": "점검 개시",
|
||||
"지정하신 옵션으로 점검이 시작되었습니다.": "지정하신 옵션으로 점검이 시작되었습니다.",
|
||||
"점검 종료": "점검 종료",
|
||||
"점검이 종료되었습니다.": "점검이 종료되었습니다.",
|
||||
"긴급 점검 개시": "긴급 점검 개시",
|
||||
"정보 변경 완료": "정보 변경 완료",
|
||||
"입력하신 값들이 반영되었습니다.": "입력하신 값들이 반영되었습니다.",
|
||||
"정보 삭제 완료": "정보 삭제 완료",
|
||||
"더 이상 사업자 정보가 표시되지 않습니다.": "더 이상 사업자 정보가 표시되지 않습니다.",
|
||||
"관리자 메뉴": "관리자 메뉴",
|
||||
"사업자 정보": "사업자 정보",
|
||||
"공지": "공지",
|
||||
"자주 묻는 질문": "자주 묻는 질문",
|
||||
"일대일 상담": "일대일 상담",
|
||||
"유저 관리": "유저 관리",
|
||||
"로그 보기": "로그 보기",
|
||||
"사용자 로그 보기": "사용자 로그 보기",
|
||||
"크레딧 로그 보기": "크레딧 로그 보기",
|
||||
"서비스 점검": "서비스 점검",
|
||||
"파일 업로드": "파일 업로드",
|
||||
"업체명": "업체명",
|
||||
"업체명을 입력해 주세요.": "업체명을 입력해 주세요.",
|
||||
"대표자": "대표자",
|
||||
"대표자명을 입력해 주세요.": "대표자명을 입력해 주세요.",
|
||||
"주소": "주소",
|
||||
"주소를 입력해 주세요.": "주소를 입력해 주세요.",
|
||||
"전화번호": "전화번호",
|
||||
"전화번호를 입력해 주세요.": "전화번호를 입력해 주세요.",
|
||||
"이메일": "이메일",
|
||||
"이메일 주소를 입력해 주세요.": "이메일 주소를 입력해 주세요.",
|
||||
"사업자 등록번호": "사업자 등록번호",
|
||||
"사업자 등록번호를 입력해 주세요.": "사업자 등록번호를 입력해 주세요.",
|
||||
"통신판매 번호": "통신판매 번호",
|
||||
"통신판매 번호를 입력하세요. 공란으로 두시면 항목이 표시되지 않습니다.": "통신판매 번호를 입력하세요. 공란으로 두시면 항목이 표시되지 않습니다.",
|
||||
"메모": "메모",
|
||||
"간단한 소개말을 입력해 주세요.": "간단한 소개말을 입력해 주세요.",
|
||||
"사업자 정보 변경": "사업자 정보 변경",
|
||||
"사업자 정보 표시 안함": "사업자 정보 표시 안함",
|
||||
"(미리 보기)": "(미리 보기)",
|
||||
"간단 소개": "간단 소개",
|
||||
"Title": "Title",
|
||||
"Detail": "Detail",
|
||||
"Flags": "Flags",
|
||||
"Status": "Status",
|
||||
"Created": "Created",
|
||||
"Action": "Action",
|
||||
"새 공지 작성": "새 공지 작성",
|
||||
"태그는 입력하실 수 없습니다.": "태그는 입력하실 수 없습니다.",
|
||||
"제목": "제목",
|
||||
"공지 제목을 입력해 주세요.": "공지 제목을 입력해 주세요.",
|
||||
"내용": "내용",
|
||||
"공지 내용을 입력해 주세요. 태그는 입력하실 수 없습니다.": "공지 내용을 입력해 주세요. 태그는 입력하실 수 없습니다.",
|
||||
"저장": "저장",
|
||||
"미리보기": "미리보기",
|
||||
"공지사항": "공지사항",
|
||||
"자주묻는 질문": "자주묻는 질문",
|
||||
"Question": "Question",
|
||||
"Answer": "Answer",
|
||||
"새 FAQ 작성": "새 FAQ 작성",
|
||||
"유저 리스트": "유저 리스트",
|
||||
"UID": "UID",
|
||||
"Name": "Name",
|
||||
"Type": "Type",
|
||||
"Level": "Level",
|
||||
"cReal": "cReal",
|
||||
"cBonus": "cBonus",
|
||||
"Lock": "Lock",
|
||||
"Statue": "Statue",
|
||||
"점검 제목": "점검 제목",
|
||||
"임시점검, 긴급점검, 정기점검 등...": "임시점검, 긴급점검, 정기점검 등...",
|
||||
"간단한 설명": "간단한 설명",
|
||||
"무슨 무슨 사유로 점검을 진행중입니다.": "무슨 무슨 사유로 점검을 진행중입니다.",
|
||||
"완료 예정 일시": "완료 예정 일시",
|
||||
"점검 범위": "점검 범위",
|
||||
"전체 (web, api, buy)": "전체 (web, api, buy)",
|
||||
"웹 사이트만": "웹 사이트만",
|
||||
"api 호출만": "api 호출만",
|
||||
"구매만": "구매만",
|
||||
"입력대로 점검 개시": "입력대로 점검 개시",
|
||||
"전체, 완료시까지, 긴급 점검 개시": "전체, 완료시까지, 긴급 점검 개시",
|
||||
"입력대로 점검 변경": "입력대로 점검 변경",
|
||||
"질문": "질문",
|
||||
"질문을 입력해 주세요.": "질문을 입력해 주세요.",
|
||||
"답변": "답변",
|
||||
"답변 내용을 입력해 주세요. 태그는 입력하실 수 없습니다.": "답변 내용을 입력해 주세요. 태그는 입력하실 수 없습니다.",
|
||||
"자주 묻는 질문과 답변": "자주 묻는 질문과 답변",
|
||||
"수정": "수정",
|
||||
"삭제": "삭제",
|
||||
"로그 조회": "로그 조회",
|
||||
"Tag": "Tag",
|
||||
"Data": "Data",
|
||||
"Real": "Real",
|
||||
"Bonus": "Bonus",
|
||||
"Memo": "Memo",
|
||||
"By": "By",
|
||||
"Toxic Words Filter": "Toxic Words Filter",
|
||||
"Toxic Words Filter API": "Toxic Words Filter API"
|
||||
}
|
||||
38
safekiso-server/modules/safekiso/routes/admin.js
Normal file
@@ -0,0 +1,38 @@
|
||||
var express = require('express');
|
||||
var router = express.Router();
|
||||
var util = require('util');
|
||||
|
||||
var utils = require('../../../src/utils');
|
||||
var crossCtl = require('../../../src/crossCtl');
|
||||
|
||||
var path = require('path');
|
||||
|
||||
var passport = require('passport');
|
||||
|
||||
// operation
|
||||
/*
|
||||
router.use(function (req, res, next) {
|
||||
|
||||
|
||||
next()
|
||||
})
|
||||
*/
|
||||
|
||||
/*
|
||||
router.use(function (req, res, next) {
|
||||
if (req.infos.userInfo.adminFlag === false) {
|
||||
res.status(401).render("main/pages/error", {
|
||||
infos: req.infos,
|
||||
errorCode: 401,
|
||||
errorMessage: "Unauthorized",
|
||||
});
|
||||
} else {
|
||||
next();
|
||||
}
|
||||
});
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
module.exports = router;
|
||||
2721
safekiso-server/modules/safekiso/routes/api/index.js
Normal file
364
safekiso-server/modules/safekiso/routes/api/v1.js
Normal file
@@ -0,0 +1,364 @@
|
||||
var express = require('express');
|
||||
var router = express.Router();
|
||||
|
||||
var utils = require('../../../../src/utils');
|
||||
var crossCtl = require('../../../../src/crossCtl');
|
||||
var localHandler = require('../../');
|
||||
|
||||
// operation
|
||||
/*
|
||||
router.use(function (req, res, next) {
|
||||
|
||||
|
||||
next()
|
||||
})
|
||||
*/
|
||||
|
||||
function response4000WithHint(req, hint) {
|
||||
localHandler.handleApiFinalResponse(
|
||||
req,
|
||||
{
|
||||
Status: {
|
||||
Code: 4000,
|
||||
Message: 'Bad request',
|
||||
Description: hint,
|
||||
},
|
||||
},
|
||||
{}
|
||||
);
|
||||
}
|
||||
|
||||
const request = require('request');
|
||||
|
||||
function handleCallbackOrNot(req, response) {
|
||||
if (req.body.callback == undefined) {
|
||||
localHandler.handleApiFinalResponse(req, response, {});
|
||||
} else {
|
||||
let options = {
|
||||
uri: req.body.callback,
|
||||
method: 'POST',
|
||||
body: response,
|
||||
json: true,
|
||||
};
|
||||
|
||||
request.post(options, function (error, response, body) {
|
||||
var logTag = crossCtl.sConfig.type + '.callback';
|
||||
var logData = {
|
||||
error: error,
|
||||
response: response,
|
||||
body: body,
|
||||
};
|
||||
crossCtl.logDebugInfo(logTag, req, logData);
|
||||
|
||||
localHandler.handleApiFinalResponse(req, response, {
|
||||
error: error,
|
||||
response: response,
|
||||
body: body,
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function handleRestOfFilterWork(req, mode, startTime) {
|
||||
let trackingId = utils.rawuuid();
|
||||
if (req.body.callback != undefined) {
|
||||
localHandler.handleApiFinalResponse(
|
||||
req,
|
||||
{
|
||||
TrackingId: trackingId,
|
||||
Status: {
|
||||
Code: 2020,
|
||||
Message: 'Accepted',
|
||||
Description:
|
||||
'Filter work created with trackingId ' + trackingId,
|
||||
},
|
||||
},
|
||||
{}
|
||||
);
|
||||
}
|
||||
let options = { quick: false, longest: true };
|
||||
if (mode == 'quick') {
|
||||
options.quick = true;
|
||||
}
|
||||
localHandler.doSearchWithLevel(
|
||||
req.keyInfo.level,
|
||||
req.body.text ? req.body.text : '',
|
||||
options,
|
||||
function (err, result) {
|
||||
if (err) {
|
||||
handleCallbackOrNot(req, {
|
||||
Status: {
|
||||
Code: 5000,
|
||||
Message: 'Internal service error',
|
||||
Description:
|
||||
'Error occurred during filtering text. error = ' +
|
||||
err,
|
||||
},
|
||||
});
|
||||
} else {
|
||||
if (req.body.mode == 'filter') {
|
||||
let filteredText = req.body.text;
|
||||
|
||||
for (var i = 0; i < result.length; i++) {
|
||||
filteredText = localHandler.splice(
|
||||
filteredText,
|
||||
result[i][0],
|
||||
result[i][1].length,
|
||||
'*'.repeat(result[i][1].length)
|
||||
);
|
||||
}
|
||||
handleCallbackOrNot(req, {
|
||||
TrackingId: trackingId,
|
||||
Status: {
|
||||
Code: 2000,
|
||||
Message: 'OK',
|
||||
Description: '',
|
||||
},
|
||||
Detected: result,
|
||||
Filtered: filteredText,
|
||||
});
|
||||
} else {
|
||||
handleCallbackOrNot(req, {
|
||||
TrackingId: trackingId,
|
||||
Status: {
|
||||
Code: 2000,
|
||||
Message: 'OK',
|
||||
Description: '',
|
||||
},
|
||||
Detected: result,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
router.post('/status', function (req, res) {
|
||||
req.workTag
|
||||
.res()
|
||||
.status(200)
|
||||
.send({ status: 'ok', data: localHandler.getDashboardData() });
|
||||
});
|
||||
|
||||
router.post('/dummycallback', function (req, res) {
|
||||
var hero = req.body;
|
||||
console.log('in dummycallback, hero=', hero);
|
||||
|
||||
req.workTag.res().status(200).send({ body: req.body });
|
||||
});
|
||||
|
||||
router.post('/filter', function (req, res) {
|
||||
|
||||
req.startTime = process.hrtime();
|
||||
let clientIP = utils.getIPFromReq(req);
|
||||
let noBurstIPKey = 'noBurstIP_' + clientIP;
|
||||
|
||||
crossCtl.redis.doEasyIncrWithExpireAt(noBurstIPKey, 1, function (
|
||||
err,
|
||||
currentCount
|
||||
) {
|
||||
if (err) {
|
||||
localHandler.handleApiFinalResponse(
|
||||
req,
|
||||
{
|
||||
Status: {
|
||||
Code: 5000,
|
||||
Message: 'Internal service error',
|
||||
Description:
|
||||
'Error occurred during check throttle limit for IP. error = ' +
|
||||
err,
|
||||
},
|
||||
},
|
||||
{}
|
||||
);
|
||||
} else {
|
||||
if (currentCount > Number.MAX_SAFE_INTEGER) {
|
||||
localHandler.handleApiFinalResponse(
|
||||
req,
|
||||
{
|
||||
Status: {
|
||||
Code: 4290,
|
||||
Message: 'Too many requests',
|
||||
Description:
|
||||
'Throttle limit exceeded. IP = ' +
|
||||
clientIP +
|
||||
', Count = ' +
|
||||
currentCount,
|
||||
},
|
||||
},
|
||||
{}
|
||||
);
|
||||
} else {
|
||||
if (req.headers['x-api-key'] == undefined) {
|
||||
localHandler.handleApiFinalResponse(
|
||||
req,
|
||||
{
|
||||
Status: {
|
||||
Code: 4010,
|
||||
Message: 'Unauthorized',
|
||||
Description:
|
||||
'This service requires an API key.',
|
||||
},
|
||||
},
|
||||
{}
|
||||
);
|
||||
} else {
|
||||
let apiKey = req.headers['x-api-key'];
|
||||
localHandler.getAPIKeyInfo(apiKey, function (err, info) {
|
||||
if (err) {
|
||||
localHandler.handleApiFinalResponse(
|
||||
req,
|
||||
{
|
||||
Status: {
|
||||
Code: 5000,
|
||||
Message: 'Internal service error',
|
||||
Description:
|
||||
'Error occurred during retrive API Key Info. API key = ' +
|
||||
apiKey +
|
||||
', error = ' +
|
||||
err,
|
||||
},
|
||||
},
|
||||
{}
|
||||
);
|
||||
} else {
|
||||
if (info == null) {
|
||||
localHandler.handleApiFinalResponse(
|
||||
req,
|
||||
{
|
||||
Status: {
|
||||
Code: 4030,
|
||||
Message: 'Unauthorized',
|
||||
Description:
|
||||
'Invalid API Key. Please verify your API key is valid. API key = ' +
|
||||
apiKey,
|
||||
},
|
||||
},
|
||||
{}
|
||||
);
|
||||
} else {
|
||||
req.keyInfo = info;
|
||||
if (req.body.text == undefined) {
|
||||
response4000WithHint(
|
||||
req,
|
||||
'Missing field : text'
|
||||
);
|
||||
} else {
|
||||
let mode = req.body.mode
|
||||
? req.body.mode
|
||||
: 'normal';
|
||||
if (
|
||||
mode != 'quick' &&
|
||||
mode != 'normal' &&
|
||||
mode != 'filter'
|
||||
) {
|
||||
response4000WithHint(
|
||||
req,
|
||||
'Bad field value. mode = ' + mode
|
||||
);
|
||||
} else {
|
||||
if (info['checksum_timeout'] != 0) {
|
||||
if (
|
||||
req.body.checksum ==
|
||||
undefined ||
|
||||
req.body.ts == undefined
|
||||
) {
|
||||
response4000WithHint(
|
||||
req,
|
||||
'Missing field : checksum, ts'
|
||||
);
|
||||
} else {
|
||||
let nowTS = Date.now();
|
||||
|
||||
|
||||
|
||||
let tsAge = parseInt(
|
||||
(nowTS - req.body.ts) /
|
||||
(1000 * 60)
|
||||
);
|
||||
|
||||
|
||||
if (
|
||||
tsAge >
|
||||
info['checksum_timeout']
|
||||
) {
|
||||
response4000WithHint(
|
||||
req,
|
||||
'Checksum Expired.'
|
||||
);
|
||||
} else {
|
||||
// do checksum work
|
||||
let serverChecksum = utils.getSHA256Hash(
|
||||
info['secret'] +
|
||||
'_' +
|
||||
req.body.ts
|
||||
);
|
||||
|
||||
if (
|
||||
serverChecksum !=
|
||||
req.body.checksum
|
||||
) {
|
||||
response4000WithHint(
|
||||
req,
|
||||
'Bad field value. checksum = ' +
|
||||
req.body
|
||||
.checksum
|
||||
);
|
||||
} else {
|
||||
handleRestOfFilterWork(
|
||||
req,
|
||||
mode,
|
||||
req.startTime
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (
|
||||
req.body.checksum !=
|
||||
undefined &&
|
||||
req.body.ts != undefined
|
||||
) {
|
||||
// do checksum work
|
||||
let serverChecksum = utils.getSHA256Hash(
|
||||
info['secret'] +
|
||||
'_' +
|
||||
req.body.ts
|
||||
);
|
||||
|
||||
if (
|
||||
serverChecksum !=
|
||||
req.body.checksum
|
||||
) {
|
||||
response4000WithHint(
|
||||
req,
|
||||
'Bad field value. checksum = ' +
|
||||
req.body.checksum
|
||||
);
|
||||
} else {
|
||||
handleRestOfFilterWork(
|
||||
req,
|
||||
mode,
|
||||
req.startTime
|
||||
);
|
||||
}
|
||||
} else {
|
||||
handleRestOfFilterWork(
|
||||
req,
|
||||
mode,
|
||||
req.startTime
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
86
safekiso-server/modules/safekiso/routes/main.js
Normal file
@@ -0,0 +1,86 @@
|
||||
var express = require('express');
|
||||
var router = express.Router();
|
||||
var util = require('util');
|
||||
var mysql = require('mysql');
|
||||
|
||||
var utils = require('../../../src/utils');
|
||||
var crossCtl = require('../../../src/crossCtl');
|
||||
const localHandler = require('../');
|
||||
localHandler.setRouterMain(router);
|
||||
|
||||
var path = require('path');
|
||||
|
||||
var passport = require('passport');
|
||||
|
||||
// import { handle } from '../client/twf/.output/server/index.mjs';
|
||||
// operation
|
||||
/*
|
||||
router.use(function (req, res, next) {
|
||||
|
||||
|
||||
next()
|
||||
})
|
||||
*/
|
||||
|
||||
function commonGate(req, res) {
|
||||
if (req.isAuthenticated() === false) {
|
||||
req.workTag
|
||||
.res()
|
||||
.redirect('/signin?loc=' + encodeURIComponent(req.infos.rawLoc));
|
||||
} else {
|
||||
res.render('main/pages/index', { infos: req.infos });
|
||||
}
|
||||
}
|
||||
|
||||
router.get('/profile', function (req, res) {
|
||||
var profileType = 'me';
|
||||
|
||||
if (req.query.pid !== undefined) {
|
||||
profileType = 'other';
|
||||
}
|
||||
|
||||
req.infos.profileType = profileType;
|
||||
|
||||
res.render('main/pages/index', { infos: req.infos });
|
||||
});
|
||||
|
||||
router.get('/profile/edit', function (req, res) {
|
||||
var profileType = 'me';
|
||||
|
||||
if (req.query.pid !== undefined) {
|
||||
profileType = 'other';
|
||||
}
|
||||
|
||||
req.infos.profileType = profileType;
|
||||
|
||||
commonGate(req, res);
|
||||
});
|
||||
|
||||
/*
|
||||
const fs = require('fs');
|
||||
router.use(function (req, res, next) {
|
||||
let clientPath = path.join(
|
||||
__dirname,
|
||||
'..',
|
||||
'client',
|
||||
crossCtl.sConfig.type,
|
||||
'.output',
|
||||
'public',
|
||||
'index.html'
|
||||
);
|
||||
fs.access(clientPath, fs.F_OK, (err) => {
|
||||
if (err) {
|
||||
res.render('main/pages/index', { infos: req.infos });
|
||||
} else {
|
||||
req.workTag
|
||||
.res()
|
||||
.status(200)
|
||||
.type('text/html')
|
||||
.sendFile(clientPath);
|
||||
}
|
||||
});
|
||||
// req.workTag.res().status(200).type('text/html').sendFile(path.join(__dirname, '..', 'wwwroot', 'text.html'))
|
||||
});
|
||||
*/
|
||||
|
||||
module.exports = router;
|
||||
@@ -0,0 +1,410 @@
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale = 1.0, user-scalable = no">
|
||||
<title>Coming Soon</title>
|
||||
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
|
||||
<link href='https://fonts.googleapis.com/css?family=Roboto+Condensed:700|Roboto+Slab:700' rel='stylesheet' type='text/css'>
|
||||
|
||||
|
||||
<style>
|
||||
/* Reset */
|
||||
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,dfn,th,var{font-style:normal;font-weight:normal;}li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}
|
||||
|
||||
@font-face {
|
||||
font-family: 'socicon';
|
||||
src: url('socicon/font/socicon-webfont.eot');
|
||||
src: url('socicon/font/socicon-webfont.eot?#iefix') format('embedded-opentype'),
|
||||
url('socicon/font/socicon-webfont.woff') format('woff'),
|
||||
url('socicon/font/socicon-webfont.ttf') format('truetype'),
|
||||
url('socicon/font/socicon-webfont.svg#sociconregular') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
text-transform: initial;
|
||||
}
|
||||
|
||||
.socicon {
|
||||
font-family: 'socicon' !important;
|
||||
}
|
||||
|
||||
html,
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: table;
|
||||
}
|
||||
|
||||
html{
|
||||
background-color: #fcf9f7;
|
||||
}
|
||||
|
||||
.dim{
|
||||
opacity: 0.3;
|
||||
}
|
||||
|
||||
body{
|
||||
margin:0;
|
||||
padding:0;
|
||||
color: #4d4d4d;
|
||||
position: relative;
|
||||
font-family: 'Roboto', sans-serif;
|
||||
text-align: left;
|
||||
background: url(/coming-soon/bg.png) left top repeat;
|
||||
}
|
||||
|
||||
.wrapper{
|
||||
display: table-cell;
|
||||
vertical-align: middle;
|
||||
padding: 40px 0;
|
||||
}
|
||||
|
||||
.left-section{
|
||||
width: 50%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.left-section img{
|
||||
float: right;
|
||||
|
||||
margin-right: 50px;
|
||||
}
|
||||
|
||||
.right-section{
|
||||
width: 50%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
h1{
|
||||
-webkit-border-radius: 20px;
|
||||
-moz-border-radius: 20px;
|
||||
border-radius: 20px;
|
||||
background: #e8ebec;
|
||||
padding: 5px 15px;
|
||||
font-family: 'Roboto Slab', serif;
|
||||
font-weight: 700;
|
||||
color: #4d4d4d;
|
||||
font-size: 49px;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: -1px;
|
||||
float: left;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.seprator{
|
||||
float: none;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.main-content{
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.main-content h2{
|
||||
font-family: 'Roboto Condensed', sans-serif;
|
||||
font-size: 37px;
|
||||
color: #396f90;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: -1px;
|
||||
}
|
||||
|
||||
.main-content p{
|
||||
font-size: 16px;
|
||||
letter-spacing: -0.5px;
|
||||
}
|
||||
|
||||
ul.social{
|
||||
width: 100%;
|
||||
float: left;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
ul.social li{
|
||||
display: inline;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
ul.social li i{
|
||||
font-size: 20px;
|
||||
line-height: 44px;
|
||||
}
|
||||
|
||||
ul.social li a{
|
||||
-webkit-box-shadow: 0px 0px 4px 0px rgba(0,0,0,0.15);
|
||||
-moz-box-shadow: 0px 0px 4px 0px rgba(0,0,0,0.15);
|
||||
box-shadow: 0px 0px 4px 0px rgba(0,0,0,0.15);
|
||||
|
||||
width: 42px;
|
||||
border: 4px solid #fff;
|
||||
height: 42px;
|
||||
float: left;
|
||||
margin-right: 10px;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
ul.social li#facebook a{
|
||||
background: #3b5998;
|
||||
}
|
||||
|
||||
ul.social li#twitter a{
|
||||
background: #55acee;
|
||||
}
|
||||
|
||||
ul.social li#linkedin a{
|
||||
background: #0077b5;
|
||||
}
|
||||
|
||||
ul.social li a:hover{
|
||||
opacity: 0.9;
|
||||
}
|
||||
|
||||
ul.info{
|
||||
width: 100%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
ul.info i{
|
||||
width: 30px;
|
||||
font-size: 20px;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
ul.info li{
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
ul.info li a{
|
||||
color: #4a4a4a;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
ul.info li a:hover{
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.watch-section{
|
||||
display: none;
|
||||
}
|
||||
|
||||
ul.social2{
|
||||
display: none;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 1024px){
|
||||
|
||||
.left-section{
|
||||
width: 30%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.left-section img{
|
||||
float: right;
|
||||
width: 70%;
|
||||
margin-right: 50px;
|
||||
}
|
||||
|
||||
|
||||
.right-section{
|
||||
width: 70%;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 768px){
|
||||
|
||||
.left-section{
|
||||
display: none;
|
||||
}
|
||||
|
||||
.watch-section{
|
||||
width: 100%;
|
||||
float: left;
|
||||
text-align: center;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.watch-section img{
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
|
||||
.right-section{
|
||||
width: 90%;
|
||||
padding: 0 5%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
|
||||
h1{
|
||||
-webkit-border-radius: 10px;
|
||||
-moz-border-radius: 10px;
|
||||
border-radius: 10px;
|
||||
background: #e8ebec;
|
||||
padding: 5px 0;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
font-family: 'Roboto Slab', serif;
|
||||
font-weight: 700;
|
||||
color: #4d4d4d;
|
||||
font-size: 35px;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: -1px;
|
||||
float: left;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
.seprator{
|
||||
float: none;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.main-content{
|
||||
margin-bottom: 20px;
|
||||
text-align: center;
|
||||
}
|
||||
.main-content h2{
|
||||
font-family: 'Roboto Condensed', sans-serif;
|
||||
font-size: 22px;
|
||||
color: #396f90;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: -0.5px;
|
||||
}
|
||||
|
||||
.main-content p{
|
||||
font-size: 15px;
|
||||
letter-spacing: -0.5px;
|
||||
}
|
||||
|
||||
ul.info{
|
||||
width: 100%;
|
||||
float: left;
|
||||
margin-bottom: 15px;
|
||||
|
||||
}
|
||||
|
||||
ul.info i{
|
||||
width: 100%;
|
||||
color: #000;
|
||||
display: block;
|
||||
font-size: 20px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
ul.info li{
|
||||
margin-bottom: 15px;
|
||||
text-align: center;
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
ul.info li a{
|
||||
color: #4a4a4a;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
ul.info li a:hover{
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
ul.social{
|
||||
display: none;
|
||||
}
|
||||
|
||||
.social-links{
|
||||
display: table;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
ul.social2{
|
||||
display: inherit;
|
||||
}
|
||||
|
||||
ul.social2{
|
||||
width: 100%;
|
||||
list-style: none;
|
||||
float: left;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
ul.social2 li{
|
||||
display: inline;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
ul.social2 li i{
|
||||
font-size: 20px;
|
||||
line-height: 44px;
|
||||
}
|
||||
|
||||
ul.social2 li a{
|
||||
-webkit-box-shadow: 0px 0px 4px 0px rgba(0,0,0,0.15);
|
||||
-moz-box-shadow: 0px 0px 4px 0px rgba(0,0,0,0.15);
|
||||
box-shadow: 0px 0px 4px 0px rgba(0,0,0,0.15);
|
||||
width: 42px;
|
||||
border: 4px solid #fff;
|
||||
height: 42px;
|
||||
float: left;
|
||||
margin: 0 5px;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
ul.social2 li#facebook a{
|
||||
background: #3b5998;
|
||||
}
|
||||
|
||||
ul.social2 li#twitter a{
|
||||
background: #55acee;
|
||||
}
|
||||
|
||||
ul.social2 li#linkedin a{
|
||||
background: #0077b5;
|
||||
}
|
||||
|
||||
ul.social2 li a:hover{
|
||||
opacity: 0.9;
|
||||
}
|
||||
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
|
||||
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
<div class="left-section"><img src="/coming-soon/inspond-CI-384.png" /></div>
|
||||
<div class="right-section">
|
||||
<h1 id="logo">Inspond Co., Ltd.</h1>
|
||||
<div class="seprator"></div>
|
||||
<div class="main-content">
|
||||
<h2>Our Website is coming soon</h2>
|
||||
<p>In the mean time connect with us with the information provided</p>
|
||||
</div>
|
||||
<ul class="social">
|
||||
<li id="facebook"><a href="https://www.facebook.com/Inspond/"><i class="fa fa-facebook"></i></a></li>
|
||||
<li id="twitter"><a href="https://twitter.com/inspond"><i class="fa fa-twitter"></i></a></li>
|
||||
</ul>
|
||||
<ul class="info">
|
||||
<li><i class="fa fa-phone-square"></i>010-5027-7214</li>
|
||||
<li><i class="fa fa-map-marker"></i>145, Gangseok-ro, Ilsandong-gu, Goyang-si,
|
||||
<br> Gyeonggi-do, Republic of Korea</li>
|
||||
<li><i class="fa fa-envelope"></i><a href="#">jolly73@inspond.com</a></li>
|
||||
</ul>
|
||||
<div class="social-links">
|
||||
<ul class="social2">
|
||||
<li id="facebook"><a href="https://www.facebook.com/Inspond/"><i class="fa fa-facebook"></i></a></li>
|
||||
<li id="twitter"><a href="https://twitter.com/inspond"><i class="fa fa-twitter"></i></a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="watch-section"><img src="/coming-soon/inspond-CI-384.png" /></div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,29 @@
|
||||
<div class="pcoded-inner-content">
|
||||
<div class="main-body">
|
||||
<div class="page-wrapper">
|
||||
<div class="page-body">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5>링크패밀리 홈페이지</h5>
|
||||
</div>
|
||||
<div class="card-block">
|
||||
<!-- start of body -->
|
||||
|
||||
<p>
|
||||
이 화면이 보이신다는건 뭔가 잘못된겁니다.
|
||||
|
||||
</p>
|
||||
|
||||
<!-- end of body -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,85 @@
|
||||
<% if (infos.loc === '/') { %>
|
||||
|
||||
<%- include("./content-home", { infos: infos }) %>
|
||||
|
||||
|
||||
<%} else if (infos.loc === '/admin/info') {%>
|
||||
|
||||
<%- include(infos.basePath + "/partials/content-admin", { infos: infos, pageTitle: '사업자 정보' }) %>
|
||||
|
||||
|
||||
<%} else if (infos.loc === '/admin/notice') {%>
|
||||
|
||||
<%- include(infos.basePath + "/partials/content-admin", { infos: infos, pageTitle: '공지' }) %>
|
||||
|
||||
|
||||
<%} else if (infos.loc === '/admin/notice/edit') {%>
|
||||
|
||||
<%- include(infos.basePath + "/partials/content-admin", { infos: infos, pageTitle: '새 공지 작성', hero: hero }) %>
|
||||
|
||||
|
||||
|
||||
<%} else if (infos.loc === '/admin/faq') {%>
|
||||
|
||||
<%- include(infos.basePath + "/partials/content-admin", { infos: infos, pageTitle: '자주묻는 질문' }) %>
|
||||
|
||||
|
||||
<%} else if (infos.loc === '/admin/faq/edit') {%>
|
||||
|
||||
<%- include(infos.basePath + "/partials/content-admin", { infos: infos, pageTitle: '새 FAQ 작성', hero: hero }) %>
|
||||
|
||||
|
||||
|
||||
<%} else if (infos.loc === '/admin/support') {%>
|
||||
|
||||
<%- include(infos.basePath + "/partials/content-admin", { infos: infos, pageTitle: '일대일 상담' }) %>
|
||||
|
||||
|
||||
<%} else if (infos.loc === '/admin/support/detail') {%>
|
||||
|
||||
<%- include(infos.basePath + "/partials/content-admin", { infos: infos, pageTitle: '일대일 상담' }) %>
|
||||
|
||||
|
||||
<%} else if (infos.loc === '/admin/users') {%>
|
||||
|
||||
<%- include(infos.basePath + "/partials/content-admin", { infos: infos, pageTitle: '유저 리스트' }) %>
|
||||
|
||||
|
||||
<%} else if (infos.loc === '/admin/users/edit') {%>
|
||||
|
||||
<%- include(infos.basePath + "/partials/content-admin", { infos: infos, pageTitle: '유저 수정', hero: hero }) %>
|
||||
|
||||
|
||||
|
||||
<%} else if (infos.loc === '/admin/logs') {%>
|
||||
|
||||
<%- include(infos.basePath + "/partials/content-admin", { infos: infos, pageTitle: '로그 조회' }) %>
|
||||
|
||||
<%} else if (infos.loc === '/admin/logs/user') {%>
|
||||
|
||||
<%- include(infos.basePath + "/partials/content-admin", { infos: infos, pageTitle: '로그 조회', hero: hero }) %>
|
||||
|
||||
|
||||
<%} else if (infos.loc === '/admin/logs/credit') {%>
|
||||
|
||||
<%- include(infos.basePath + "/partials/content-admin", { infos: infos, pageTitle: '로그 조회', hero: hero }) %>
|
||||
|
||||
|
||||
|
||||
|
||||
<%} else if (infos.loc === '/admin/maintenance') {%>
|
||||
|
||||
<%- include(infos.basePath + "/partials/content-admin", { infos: infos, pageTitle: '서비스 점검', maintenanceInfo: maintenanceInfo }) %>
|
||||
|
||||
|
||||
<%} else if (infos.loc === '/admin/upload') {%>
|
||||
|
||||
<%- include(infos.basePath + "/partials/content-admin", { infos: infos, pageTitle: '파일 업로드' }) %>
|
||||
|
||||
|
||||
<%} else {%>
|
||||
|
||||
<%- include(infos.basePath + "/partials/content-unknown", { infos: infos }) %>
|
||||
|
||||
|
||||
<%} %>
|
||||
@@ -0,0 +1,91 @@
|
||||
<nav class="pcoded-navbar">
|
||||
<div class="nav-list">
|
||||
<div class="pcoded-inner-navbar main-menu">
|
||||
|
||||
<div class="pcoded-navigation-label">메뉴</div>
|
||||
<ul class="pcoded-item pcoded-left-item">
|
||||
|
||||
|
||||
<% if (infos.userInfo.loginFlag === true) { %>
|
||||
<%} %>
|
||||
|
||||
<% if (infos.userInfo.adminFlag === true) { %>
|
||||
<li class="pcoded-hasmenu <%=(infos.loc.startsWith('/admin/')) ? 'active pcoded-trigger' : ''%>">
|
||||
<a href="javascript:void(0)" class="waves-effect waves-dark">
|
||||
<span class="pcoded-micon"><i class="fa fa-cog"></i></span>
|
||||
<span class="pcoded-mtext"><%=__('관리자 메뉴')%></span>
|
||||
</a>
|
||||
<ul class="pcoded-submenu">
|
||||
|
||||
|
||||
<li class="<%=(infos.loc ==='/admin/info') ? 'active' : ''%>">
|
||||
<a href="/admin/info" class="waves-effect waves-dark">
|
||||
<span class="pcoded-mtext"><%=__('사업자 정보')%></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="<%=(infos.loc ==='/admin/notice' || infos.loc.startsWith('/admin/notice/')) ? 'active' : ''%>">
|
||||
<a href="/admin/notice" class="waves-effect waves-dark">
|
||||
<span class="pcoded-mtext"><%=__('공지')%></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="<%=(infos.loc ==='/admin/faq' || infos.loc.startsWith('/admin/faq/')) ? 'active' : ''%>">
|
||||
<a href="/admin/faq" class="waves-effect waves-dark">
|
||||
<span class="pcoded-mtext"><%=__('자주 묻는 질문')%></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="<%=(infos.loc ==='/admin/support' || infos.loc.startsWith('/admin/support/')) ? 'active' : ''%>">
|
||||
<a href="/admin/support" class="waves-effect waves-dark">
|
||||
<span class="pcoded-mtext"><%=__('일대일 상담')%></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="<%=(infos.loc ==='/admin/users' || infos.loc.startsWith('/admin/users/')) ? 'active' : ''%>">
|
||||
<a href="/admin/users" class="waves-effect waves-dark">
|
||||
<span class="pcoded-mtext"><%=__('유저 관리')%></span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="pcoded-hasmenu <%=(infos.loc.startsWith('/admin/logs/') === true) ? 'active pcoded-trigger' : ''%>">
|
||||
<a href="javascript:void(0)" class="waves-effect waves-dark">
|
||||
<span class="pcoded-micon"><i class="feather icon-home"></i></span>
|
||||
<span class="pcoded-mtext"><%=__('로그 보기')%></span>
|
||||
</a>
|
||||
<ul class="pcoded-submenu">
|
||||
<li class="<%=(infos.loc ==='/admin/logs/user') ? 'active' : ''%>">
|
||||
<a href="/admin/logs/user" class="waves-effect waves-dark">
|
||||
<span class="pcoded-mtext"><%=__('사용자 로그 보기')%></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="<%=(infos.loc ==='/admin/logs/credit') ? 'active' : ''%>">
|
||||
<a href="/admin/logs/credit" class="waves-effect waves-dark">
|
||||
<span class="pcoded-mtext"><%=__('크레딧 로그 보기')%></span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="<%=(infos.loc ==='/admin/maintenance') ? 'active' : ''%>">
|
||||
<a href="/admin/maintenance" class="waves-effect waves-dark">
|
||||
<span class="pcoded-mtext"><%=__('서비스 점검')%></span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="<%=(infos.loc ==='/admin/upload') ? 'active' : ''%>">
|
||||
<a href="/admin/upload" class="waves-effect waves-dark">
|
||||
<span class="pcoded-mtext"><%=__('파일 업로드')%></span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
<%} %>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
4
safekiso-server/modules/safekiso/wwwroot/.gitignore
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
# Ignore everything in this directory
|
||||
*.apk
|
||||
# Except this file
|
||||
!.gitignore
|
||||
6
safekiso-server/modules/safekiso/wwwroot/about.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
This favicon was generated using the following font:
|
||||
|
||||
- Font Title: Lekton
|
||||
- Font Author: Copyright (c) 2008, 2009, 2010, Accademia di Belle Arti di Urbino (luciano.perondi@isiaurbino.net). Licensed under the SIL Open Font License, Version 1.1
|
||||
- Font Source: http://fonts.gstatic.com/s/lekton/v17/SZc43FDmLaWmWpBeXxfonUPL6Q.ttf
|
||||
- Font License: SIL Open Font License, 1.1 (http://scripts.sil.org/OFL))
|
||||
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 83 KiB |
BIN
safekiso-server/modules/safekiso/wwwroot/apple-touch-icon.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
safekiso-server/modules/safekiso/wwwroot/favicon-16x16.png
Normal file
|
After Width: | Height: | Size: 770 B |
BIN
safekiso-server/modules/safekiso/wwwroot/favicon-32x32.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
safekiso-server/modules/safekiso/wwwroot/favicon.ico
Normal file
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 84 KiB |
|
After Width: | Height: | Size: 64 KiB |
|
After Width: | Height: | Size: 99 KiB |
|
After Width: | Height: | Size: 80 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 9.1 KiB |
|
After Width: | Height: | Size: 9.3 KiB |
|
After Width: | Height: | Size: 9.3 KiB |
|
After Width: | Height: | Size: 9.4 KiB |
@@ -0,0 +1 @@
|
||||
{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
|
||||