[TMUX]

Linux 2019. 2. 26. 11:48

Ref. : https://bluesh55.github.io/2016/10/10/tmux-tutorial/



 Term

 Default 

 

 <prefix>

 ctrl + b 

 

 

 

 




Command

 Category

 Option 

 Command 

 Move Window

 Next Window

 <prefix> + n

 

 Previous Window 

 <prefix> + p

 

 Window List

 <prefix> + w

   
 Session 
# tmux ls
10: 1 windows (~

# tmux kill-session -t 3 





'Linux' 카테고리의 다른 글

[Linux][Debug] Hung task  (0) 2018.01.31
[Linux][init] Module init  (0) 2018.01.25
[Linux] Prompt 관리  (0) 2017.12.05
htaccess 에서 extention 없애기  (0) 2016.02.22
아파치 rewrite module 켜서 .htaccess 활성화하기(우분투 기준)  (0) 2016.02.22
Posted by kissuu
,

stackoverflow에는 없는게 없음. 근데 local branch information만 된다.

https://stackoverflow.com/questions/18277841/find-out-when-a-git-branch-was-created-not-the-first-commit-to-that-branch

git reflog show --date=iso [branch name]


$ git reflog show --date=iso release/v1.xx

d10bed9 refs/release/v1.xx@{2018-10-30 18:17:50 +0900}:



'잘좀하자 개발 > Git' 카테고리의 다른 글

[GIT] 범인 잡을 때 유용한 command  (0) 2018.01.25
Posted by kissuu
,


1. Issue

(1) 같은 domain에서 1번 URL을 login 후 2번 url을 login 하면, 
1번 URL 재 접속시 아래와 같은 error가 발생함
ex)

 #

 Site 

 1번

 Artifactory

 2번

 JIRA 



The server encountered an internal error that prevented it from fulfilling this request.

java.lang.RuntimeException: more than one filter accepted this request
    org.artifactory.webapp.servlet.authentication.ArtifactoryAuthenticationFilterChain.acceptFilter(ArtifactoryAuthenticationFilterChain.java:115)
    org.artifactory.webapp.servlet.AccessFilter.doFilterInternal(AccessFilter.java:187)
    org.artifactory.webapp.servlet.AccessFilter.doFilter(AccessFilter.java:165)
    org.artifactory.webapp.servlet.RequestFilter.doFilter(RequestFilter.java:67)
    org.springframework.session.web.http.SessionRepositoryFilter.doFilterInternal(SessionRepositoryFilter.java:164)
    org.springframework.session.web.http.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:80)
    org.artifactory.webapp.servlet.SessionFilter.doFilter(SessionFilter.java:62)
    org.artifactory.webapp.servlet.ArtifactoryFilter.doFilter(ArtifactoryFilter.java:116)



2. Root Cause

(1) token cookie
아래와 같은 이유로 Login 후 token 생성하여 login을 skip함.
 - Login session을 유지
 - 다른 page move시 login 절차없이 token으로 page 접속

(2) 일부 Page의 경우 이미 token 값이 생성되었으면 해당 token으로 communication 해야함
ex) Artifactory의 경우 default로는 cookie에 값이 전달되지 않지만, 
JIRA를 login 후 해당 domain에 cookie token이 생성하면, 같은 domain 접속시 default로 cookie의 값들이 포함되어 전달됨. Artifactory의 경우 token이 전달되면, 해당 token으로 permission을 check한다고 생각됨.
ex)
[Checked by Fiddler]
Request sent 106 bytes of Cookie data:

_ga=GA1.2.148576493.1541073439
_gid=GA1.2.1855707260.1541073439
crowd.token_key=QLc9doaQB9QXaXE4gPY4ug00


3. Solution

(1) Cookie 삭제

Chrome의 경우 아래로 접속하여 해당 domain의 cookie data를 삭제

chrome://settings/siteData



(2) curl을 통한 token 전달

https://stackoverflow.com/questions/46127689/artifactory-deploy-error-http-status-500-more-than-one-filter-accepted-this-r

curl http://<user_id>:<token>@docker.for.mac.localhost/artifactory/php-local/

-> 나의 경우 Artifactory의 token을 기억하고 있을 수 없고, window 상에서 curl 사용이 제한적이어서 이 부분은 고려하지 않음.


(3) Chrome Extension 사용

 Javascript 또는 PHP 상에서 Client Application 접속이 제한적임.

따라서, google chrome에서 제공하는 Chrome Extension을 통해 원하는 cookie만 삭제


[manifest.json]
{
  "name": "Remove local cookie",
  "description" : "Base Level Extension",
  "version": "1.0",
  "browser_action": {
    "default_icon": "hello_extensions.png"
  },
  "manifest_version": 2,
  "permissions": [
  "activeTab",
    "clipboardWrite",
  "cookies",
    "https://*/",
    "http://*/"
  ],
  "background": {
      "scripts": ["background.js"],
      "persistent": false
  },
  "commands": {
    "_execute_browser_action": {
      "suggested_key": {
        "default": "Ctrl+Shift+F",
        "mac": "MacCtrl+Shift+F"
      },
      "description": "Opens hello.html"
    }
  }
}

[background.js]

chrome.browserAction.onClicked.addListener(function(tab) {
alert('hi');
   //chrome.tabs.executeScript(null, {file: "remove_cookie.js"});
/*
chrome.cookies.getAll({domain: "lge.com"}, function(cookies) {
    for(var i=0; i<cookies.length;i++) {
      alert(cookies[i].domain);
      alert(cookies[i].path);
      alert(cookies[i].name);
      chrome.cookies.remove({url: "https://" + cookies[i].domain  + cookies[i].path, name: cookies[i].name});
    }
});
*/
var domain = 'domain.com';
var path = '/';
var cookie_name = 'crowd.token_key';
chrome.cookies.remove({url: "https://" + domain  + path, name: cookie_name});
});


'잘좀하자 개발 > WEB Service' 카테고리의 다른 글

HTTPS와 SSL 인증서  (0) 2016.02.24
Posted by kissuu
,