로그를 눈에 보이게 처리해야 해서 TextBox에 로그를 남기는 함수를 만들었다.

근데.. static 함수에서는 this를 사용할 수 없다...

고민하던 중 생각난 해결책은 아래와 같다.


public partial class Form1 : Form
{
    public static Form1 instance;

    public Form1(){
        InitializeComponent();
        instance = this;
    }
    
    public static void func1(){
    	instance.Log("message");
    }
    
    private void Log(string Message)
    {
    	this.Invoke(new Action(() =>
        {
            try
            {
        	    tb_log.AppendText($"[{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}] {Message}\r\n");
            }
            catch (Exception ex)
            {
        	    Console.WriteLine(ex);
            }
        }));
    }
}


...

폼 자체를 싱글톤처럼 활용하는 것이다.

어차피 중복실행을 막아놔서 상관은 없을 듯 하다.

Intro

SSL Handler가 구현되어있는 최초 버전 (버전코드 1번)이 테스트 트랙에 올라가 있다는 이유로 구글플레이에서 삭제되었다.

당장 해당 트랙을 비활성화 한 뒤 업데이트를 시도해 보았지만 Cross App Scripting Vulnerability로 리젝되어 클라이언트의 요청이 지속되는 상황이었다.

Vulnerability APK Version(s) Past Due Date
Cross-app Scripting
Your app(s) are using a WebView that is vulnerable to cross-app scripting.
To address this issue, follow the steps in this Google Help Center article.
33 August 23, 2021

저 버전코드가 보이는가? 참고로 라이브 서비스중이었던 버전코드는 13이었다.

개빡친다

많고 많은 티스토리 블로그의 해결방법은 딱 두가지였는데,
내가 시도했던 방법은 이러하다.

AndroidMenifest 수정

많고 많은 티스토리 블로그들의 해결방법을 보면 아래 한 줄을 AndroidMenifest에 추가해줌으로써 해결할 수 있다고 쓰여있다.

<meta-data android:name="android.webkit.WebView.EnableSafeBrowsing" android:value="true" />

그러나 프로젝트에는 이미 해당 메타데이터가 추가되어있는 상태였다.

webview target url string to final

private final static String target_url = "https://블라블라";

...

    webView.loadUrl(target_url);

evaluateJavascript 보안

Scheme이 "javascript:" 인 것을 죄다 evaluateJavascript로 바꿔주고,
그마저도 사전에 약속된 스크립트가 아니면 실행하지 않도록 입구컷 시켰다.

구글한테 입구컷당했다.

FCM으로 넘어오는 url 검사

bundle.getString("url").contains(target_url)

위 코드가 true일 때만 해당 URL을 로드하도록 했다.

안된다.

android:exported="false" 설정

해당 속성을 웹뷰가 있는 Activity에 넣으면 된다고 한다.
근데.. 카카오톡 등 다른 앱 intent 사용은 안하시게요? 역시 패스....하려다가 혹시나 싶어 넣어봤다.

 

앱 실행이 안된다 ㅋㅋ

Unity Project 제거

해당 프로젝트는 Unity As A Library를 이용해 Unity Player Activity와 웹뷰가 상호 통신을 한다.
일단은.. 인텐트로 처리하니 빼보자..

***구글: 응~ 안돼~ 돌아가~

Camera / File Choose Handler 제거

카메라로 사진을 찍거나 파일선택기로 파일을 가져오는 것도 역시나 인텐트로 처리했으니 일단은 지워보았다.
다른 웹뷰 서비스들은 잘 올라가있는데 이게 맞을 리 없지.

죄다 지우고 함수 하나씩 살리기

개노가다 ON
버전코드가 33(지금은 40)까지 올라간 이유가 있다.

살리다보니 handleIntent 함수에서 딱 걸렸다.

혹시?

혹시나 싶어 FCM으로 넘어오는 url 검사 부분을 주석처리 해봤다.

와 Tlqkf

결론

구글새끼들은 loadUrl 메서드로 어떤 Url을 호출하는지에 관심이 없다.
그 Url이 final로 선언한 Url을 포함하고 있더라도..

단지 해당 Url이 final 인지 아닌지에만 관심이 있는 것 같다.

어휴..

해당부분은 이렇게 수정해 주고 업데이트를 올렸다.

 private final static String target_url = "https://블라블라";

 ...


 if(bundle.getString("url") != null) {
     final String target = target_url + bundle.getString("url");

     webView.loadUrl(target);
 }

fcm 데이터에 url 전체를 줬었는데 수정을 요청해서 url path만 주도록 바꿨다.

 

 

하........현타온다............

  1. 2021.11.29 09:50

    비밀댓글입니다

    • 2021.12.03 14:44

      비밀댓글입니다

요즘들어 유니티 프로젝트의 의뢰가 많다.

 

유니티는 자체적으로 Collaborator라는 클라우드 스토리지 서비스를 지원하지만,
commit log를 제외하면 git처럼 버전 관리할 수 있는 곳이 암만 찾아봐도 없다.

 

Github는 파일당 100MB 제한이 있고,
BitBucket은 파일당 용량 제한은 없지만 총 용량 제한이 있다. 그리고 매우 느리다..

 

그래서 그냥 시놀로지 DSM에 있는 Git Server를 활용하기로 했다.


사전에 Git ServerMariaDB 5 설치가 필요하지만,
Git을 사용하고 서버를 구축하기 위해 여기까지 찾아온 여러분께는
구태여 설명할 필요가 없을 것 같으므로 생략합니다.

Gogs 설치하기

gogs-spk 다운로드

https://github.com/alexandregz/gogs-spk

위 링크를 시놀로지 폴더 어디든 clone 한다.
git clone https://github.com/alexandregz/gogs-spk.git

gogs 바이너리 파일 다운로드 및 spk 패키징

다운로드 링크 : https://dl.gogs.io/

위 링크에 들어가 본인의 입맛대로 버전을 선택한 후 시놀로지 아키텍쳐에 맞는 tar.gz 파일의 링크를 복사하고,
위에서 clone 받았던 gogs-spk 폴더로 접근한다.

 

본인의 시놀로지 아키텍쳐를 모른다면, 시놀로지 SSH로 접속해서 uname -m 명령어를 사용하면 볼 수 있다.

아래 명령어를 사용해서 복사한 링크의 바이너리 파일을 받고, 압축을 풀어준다.

 

wget https://dl.gogs.io/0.12.3/gogs_0.12.3_linux_armv7.tar.gz
rm -rf 1_create_package/gogs/ && tar zxvf gogs_0.12.3_linux_armv7.tar.gz -C 1_create_package/

 

이제 설치파일을 만들자.

 

sh ./create_spk.sh

 

완성된 파일은 현재 폴더에 gogs.spk파일로 나온다.

패키지 설치

패키지센터의 우측상단 수동설치 버튼을 누르면 되는데, 찾아보기 버튼을 누르면
시놀로지의 경로가 아니라 현재 사용중인 PC의 경로가 나온다...ㅡㅡ


다운로드를 받거나 smb / afp / nfs 등으로 마운트되어있는 폴더의 gogs.spk파일을 선택 후 설치해 준다.

DDNS 사용하기

gogs의 기본 포트는 3000번이다.


시놀로지에서 제공해주는 DDNS *****.synology.me:3000 으로 접속하면 접속할 수 없다고 나오는데,
제어판 - 외부 엑세스 - 라우터 구성에서 3000번 포트를 추가해 주면 외부에서도 접속이 가능하다.

초기 설정

 

데이터베이스 설정

본인 시놀로지의 DB서버에 접속해 gogs에서 사용할 데이터베이스를 생성해 준다.
MySQL 계열 DB 사용자는 CharSet을 utf8_general_ci로, 엔진을 innoDB로 설정해야 한다.

또, MariaDB 5 기본설정은 인덱스 길이가 제한되어 있으므로 DB생성 전에 innodb_large_prefix 설정을 해주어야 한다.

 

SET GLOBAL innodb_file_format = BARRACUDA;
SET GLOBAL innodb_file_format_max = BARRACUDA;
SET GLOBAL innodb_large_prefix = ON;

 

설치

*****.synology.me:3000으로 접속하면 /install/ 로 리디렉션되며 첫 실행을 위한 설치단계가 나온다.

 

데이터베이스 유형은 본인이 사용하고 있는 DB 유형을 선택해 준다.
나는 MariaDB 5를 사용하고 있으므로 MySQL을 선택했다.

 

호스트 항목의 호스트 IP는 그대로 두고, 포트는 MariaDB를 처음 설치할 때 지정해주었던 포트로 변경해 준다.


사용자비밀번호 항목은 본인 DB서버의 사용자 정보를 넣으면 되고


데이터베이스 이름 항목은 위에서 생성해준 이름을 넣어준다.

 

애플리케이션 일반 설정에서는 다른건 바꿔주지 않고


데몬 사용자 계정 항목에 git을 사용할 시놀로지 계정


도메인 항목에 사용할 도메인


SSH 포트 항목에 사용중인 SSH 포트 정보


애플리케이션 URL 항목에 사용할 도메인과 포트번호를 집어넣는다.

 

 

위의 모든 정보는 /usr/local/gogs/gogs/custom/conf/app.ini 에서 수정 가능하다.

 

 

'Server > Git' 카테고리의 다른 글

[Synology] Git Server / Gogs로 나만의 Git 구축하기  (0) 2021.07.23
[Discord] 웹훅으로 GitHub 로그 받기  (0) 2020.09.16

DSM 패키지 센터 커뮤니티 소스 리스트

http://packages.synocommunity.com/
http://synology.sysco.ch/
http://www.cphub.net
http://syno.dierkse.nl/
  • 인터넷에 떠돌아다니는 리스트 중 현재는 유효하지 않은 링크는 삭제했습니다
  • 이 게시글의 패키지는 ARM 코어가 탑재된 보급형 Synology 기기에서도 사용이 가능합니다.

설치방법

  1. Perl 패키지가 필요합니다. 시놀로지 공식 패키지센터에서 설치합니다.
  2. 패키지센터 우측 상단의 설정 버튼을 누르고, 패키지 소스 탭에 위 리스트를 추가합니다. ipkg만 설치하실거면 맨 아래 cphub 링크만 추가하셔도 됩니다.
  3. 패키지센터를 종료 후 다시 엽니다.
  4. 검색창에 ipkg를 검색 후 Easy Bootstrap Installer, iPKGui 순으로 설치합니다.

설치 완료


터미널에서 사용방법

  1. 터미널에 접속합니다. ipkg의 설치 경로는 /opt/bin입니다.
  2. ipkg 명령어를 입력해봅니다.
  3. command not found: ipkg 가 뜬다면 아래 명령어를 입력해 경로를 지정해 줍니다.
    $ export PATH="$PATH:/opt/bin"

'Server' 카테고리의 다른 글

[Synology] ipkg 패키지매니저 설치하기  (2) 2021.07.23
  1. seeku 2021.09.13 14:34

    혹시 사용하시는 DSM 버젼이 6.x 인가요?
    저는 DSM 7.0을 사용하는데 Easy Bootstrap Installer 설치에서 에러가 발생하면서 진행이 안되네요..

카카오 미러서버 - apt

sudo sed -i -re 's/([a-z]{2}.)?archive.ubuntu.com|security.ubuntu.com/mirror.kakao.com/g' /etc/apt/sources.list
sudo apt update
sudo apt upgrade

카카오 미러서버 - pip

mkdir ~/.pip
echo "[global]
index-url=http://ftp.daumkakao.com/pypi/simple
trusted-host=ftp.daumkakao.com" >> ~/.pip/pip.conf
pip3 install --upgrade pip

zsh 및 oh-my-zsh 설치

sudo apt install zsh curl git
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
chsh -s /usr/bin/zsh
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ~/.zsh/zsh-syntax-highlighting
echo "source ~/.zsh/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ~/.zshrc
git clone https://github.com/zsh-users/zsh-autosuggestions ~/.zsh/zsh-autosuggestions
echo "source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh" >> ~/.zshrc
source ~/.zshrc

apt upgrade 중 not available 뜰때

sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock*
sudo dpkg --configure -a
sudo apt update

+ Recent posts