2018年8月29日 星期三

laravel voyager 教學

說明:https://github.com/the-control-group/voyager

中文化這邊有:https://laravel-china.org/topics/4720/i-also-translated-laravels-background-extension-voyager


1.首先安裝laravel 5.5

composer create-project laravel/laravel 5.5

composer update

2.安裝voyager

composer require tcg/voyager

3.設定env
APP_URL=http://localhost:8000
DB_DATABASE=xxxx
DB_USERNAME=xxxx
DB_PASSWORD=xxxx

4.執行voyager install migrate

php artisan voyager:install

PS:如果出現錯誤可以到config/databases 調整mysql

'mysql' => [
    'driver' => 'mysql',
    'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'forge'),
    'username' => env('DB_USERNAME', 'forge'),
    'password' => env('DB_PASSWORD', ''),
    'unix_socket' => env('DB_SOCKET', ''),
    'charset' => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix' => '',
    'strict' => true,
    'engine' => null,
],


3.創建admin

php artisan voyager:admin your@email.com --create


5.網址打入 localhost:8000/admin 使用剛剛輸入的密碼登入


6.設定可以使用google analytics功能

說明:https://www.youtube.com/watch?v=Qw5HQiZIehg

在setting頁面->admin->

Google Analytics Client ID (used for admin dashboard) setting('admin.google_analytics_client_id')

填入https://console.developers.google.com/apis/dashboard
設定的 oauth 憑證的client_id。

設定完畢即可以在disable登入gmail帳號,並看到相關數據資料。




2018年8月19日 星期日

Vmware player架設centos & ftp


root/root 帳密

每次重啟都需要開啟網路服務:

service  network restart

or

systemctl status network

1.網路配置 https://blog.csdn.net/qq_33182045/article/details/55669031
2.cd /etc/sysconfig/network-scripts/ 看ifcfg-enpXXX 檔案
3.vi 此檔案
4.確定ONBOOT=yes
5.vi存檔方法ese按出後,打入wq存檔。
6.shutdown -r
7.切換su 輸入帳密
8.輸入指令安裝圖形介面
$sudo  yum groupinstall "GNOME Desktop" "Graphical Administration Tools"

9.startx 進入圖型介面


10.ctrl + alt +F1 進入圖形介面
11.ctrl+alt+F5

在VMware Player中,并不像VMware Station中提供网络编辑功能,因此如果想使用port forward功能,则需要进行手动配置。
例如在Windows操作系统中,找到vmware nat的配置文件:
C:\Documents and Settings\All Users\Application Data\VMware\vmnetnat.conf


---------------------------------------
12.安裝EPEL
yum -y install epel-release

13.安裝 VIM
yum -y install vim


14.安裝 LAMP (Linux + Apache + MySQL / MariaDB + PHP / Python / Perl)
sudo yum -y install httpd php-mysql mysql-server php70w php70w-mysql

yum -y install mysql

yum -y install mariadb-server

ls -a /usr/lib/systemd/system/mariadb.*



enable 會在作業系統啟動時,自動啟動服務
systemctl enable  mariadb

start, stop, restart 等參數操作服務,不會有訊息
systemctl start  mariadb

用 status 檢查服務狀態
systemctl status  mariadb

----------------------------------------------------------


15.開啟防火牆,讓 web (port:80, 443) 流量可以穿過 firewall
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

16.開啟防火牆,讓外部可以連接 MySQL (port:3306) 流量可以穿過 firewall
查看目前支援的 service
firewall-cmd --get-services
開啟 Mysql 3306
sudo firewall-cmd --permanent --zone=public --add-service=mysql


17.啟動 httpd 與 mysql
sudo systemctl start httpd
sudo systemctl enable httpd
sudo systemctl start mysqld
sudo systemctl enable mysqld

重啟
service httpd restart
systemctl start httpd.service

18.mysql指令
剛安裝好 MariaDB 時,建議執行一次 mysql_secure_installation 這個安全性設定工具:

sudo mysql_secure_installation

mysql -V 看版本

mysql -u root -p    第一次進來root 沒有密碼 不需要打


------------------------------------------
21.安裝PHP


安装第三方仓库
sudo yum install https://centos7.iuscommunity.org/ius-release.rpm
搜索新版 PHP

yum search php70u
安装新版 PHP
sudo yum install php70u-common php70u-fpm php70u-cli php70u-gd php70u-mysqlnd php70u-pdo php70u-mcrypt php70u-mbstring php70u-json php70u-opcache php70u-xml -y



如果apache打開不了php編譯,可以直接使用yum命令来安装apache的mod_php模块:

yum install mod_php70w

如果没有这个安装包,可以尝试着添加一下源:

rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm


提醒一下安裝完畢應該會有檔案在
/etc/httpd/conf.modules.d/10-php.conf


安裝php7 mbstring
yum install php70w-mbstring



-----------------------------------------------------------------------

19.安裝phpmyadmin  記得phpmyadmin原生不支持7  需要用composer安裝

https://jsnwork.kiiuo.com/archives/2118/centos-7-%E5%AE%89%E8%A3%9D-apachephp-7mysqlphpmyadminftpssh/



不得已才用yum
yum install phpmyadmin


19-1.看設定檔案
sudo vi /etc/httpd/conf.d/phpMyAdmin.conf

19-2.  錯誤 Apache Error: No matching DirectoryIndex (index.html) found [SOLVED]
vim /etc/httpd/conf/httpd.conf
Change:

<IfModule dir_module>
DirectoryIndex index.html
</IfModule>

to:

<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>

Be sure to restart Apache:

systemctl restart httpd


如果安裝phpmyadmin出現錯誤
Error: php70u-json conflicts with php-common-5.4.16-45.el7.x8664
Error: php70u-common conflicts with php-common-5.4.16-45.el7.x86_64
使用指令
yum install --skip-broken php-soap

yum install phpMyAdmin php70u-{json,tidy,process,cli,bcmath}


錯誤LOG位置
/var/log/httpd/
-----------------------------------------------------------------------

20.Linux指令

20-1.圖型介面檔案download等資料夾在 root底下
cd /root

20-2.看ip
ip addr show


21.防火牆
21-1.看狀態
service firewalld status

21-2.關閉
service firewalld stop

★★ httpd 403 forbidden 錯誤
這個問題是因為有使用 selinux 而你新增了一些檔案或目錄到「網頁目錄 /var/www/html」,明明檔案就存在,卻無法正常從瀏覽器觀看,這不是 file permission chmod 的問題,是 selinux 檔案 http 存取權限的問題,你只需要用

sudo restorecon -R -v /var/www/html/new_folder

就OK了!


檢查 SELinux 的狀態

# getenforce

暫時關閉 SELinux
# setenforce 0

--------------------------------------------------------------------------------
FTP連入設定 
https://www.jianshu.com/p/72015bc37c74
http://www.netqna.com/2014/04/centos-64-vsftpd-ftp-server.html

步驟 1:安裝 FTP 服務器
1、 安裝 vsftpd 服務器很直接,只要在終端運行下面的命令。

yum install vsftpd
2、 安裝完成後,服務先是被禁用的,因此我們需要手動啟動,並設置在下次啟動時自動啟用:

systemctl start vsftpd
systemctl enable vsftpd
3、 接下來,為了允許從外部系統訪問 FTP 服務,我們需要打開 FTP 守護進程監聽的 21 端口:

firewall-cmd --permanent --add-port=21/tcp
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload


4.啟動vsftp服務
service vsftpd start
用FileZilla即可以正常連入


-停止 Firewalld

systemctl stop firewalld

-Check the Status of Firewalld

systemctl status firewalld

-重啟
systemctl start firewalld


使用root登入:

移除ftpusers 裡面的帳號
vim /etc/vsftpd/ftpusers
找到root 前面加上#號註解


移除user_list裡面的帳號
vim /etc/vsftpd/user_list
找到root 前面加上#號註解

-重啟VSFTPd
systemctl restart vsftpd.service
--------------------------------------------------------------------------------



vmware player 14 架設centos NAT網路設定

參考這篇:http://blog.xuite.net/sphjlc062218/thinking/32175554-VMware%E6%9E%B6%E8%A8%AD%E4%BC%BA%E6%9C%8D%E5%99%A8%E5%85%81%E8%A8%B1%E5%A4%96%E9%83%A8%E9%80%A3%E5%85%A5%E8%A7%A3%E6%B1%BA%E6%96%B9%E6%A1%88%28NAT+mode%29


在vmware player 14以上版本是沒有Virtual Network Editor
需要先安裝 vmware workstation,再從資料夾打開
C:\Program Files (x86)\VMware\VMware Workstation\vmnetcfg.exe
才能進行設定。

*勾選自動獲取dhcp






設定完畢情況下,應該可以直接在本機打入localhost:8888 進入虛擬機網頁。

以下是需要注意的事項

1.建議設定vm連接方式為nat,使用dhcp自動抓取。


2.每次重啟都需要開啟網路服務:service  network restart

3.cd /etc/sysconfig/network-scripts/
看ifcfg-enpXXX 檔案

4.啟動 httpd 與 mysql
sudo systemctl start httpd
sudo systemctl enable httpd
sudo systemctl start mysqld
sudo systemctl enable mysqld


5.如果本機可以連入,但是外網卻不行,請注意本機的防火牆設定是不是有允許port連入,win系列可以先關閉防火牆確定。


2018年8月15日 星期三

Laravel hide whoops error

在設定Laravel錯誤時候,
會設定DEBUG方便偵錯,

APP_ENV=local
APP_DEBUG=true

但是DEBUG時候再Woops錯誤時候會顯示ENV DB帳密等資訊,

可以藉由調整Laravel底下的 config/app.php來避免顯示過多的
調整以下限制會在Whoops輸出錯誤資訊時候,將對應的帳密等ENV設定顯示****

1.全部阻擋
'debug_blacklist' => [
        // '_COOKIE' => array_keys($_COOKIE),
        '_SERVER' => array_keys($_SERVER),
        '_ENV' => array_keys($_ENV),        
    ],
2.阻擋顯示指定的參數
'debug_blacklist' => [
        '_ENV' => [
            'APP_KEY',
            'DB_PASSWORD',
            'REDIS_PASSWORD',
            'MAIL_PASSWORD',
            'PUSHER_APP_KEY',
            'PUSHER_APP_SECRET',
        ],
        '_SERVER' => [
            'APP_KEY',
            'DB_PASSWORD',
            'REDIS_PASSWORD',
            'MAIL_PASSWORD',
            'PUSHER_APP_KEY',
            'PUSHER_APP_SECRET',
        ],
        '_POST' => [
            'password',
        ],
    ], 

2018年8月13日 星期一

ckeditor + ckfinder 應用在Laravel




一.ckeditor提供編輯器功能

在view的頁面加載editor  full js

<!-- 新 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css">

<!-- 可选的Bootstrap主题文件(一般不用引入) -->
<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap-theme.min.css">

<!-- jQuery文件。务必在bootstrap.min.js 之前引入 -->
<script src="https://cdn.bootcss.com/jquery/1.11.1/jquery.min.js"></script>

<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script src="https://cdn.bootcss.com/bootstrap/3.3.0/js/bootstrap.min.js"></script>

<script src="//cdn.ckeditor.com/4.10.0/full/ckeditor.js"></script>
<textarea id="editor1" name="editor1" cols="100" rows="30" name="update_context">

</textarea>
<script >

var editor = CKEDITOR.replace( 'editor1' );
CKFinder.setupCKEditor( editor );
</script>

二.ckfinder 
1.Laravel  下安裝 ,版本需要大於5.5 且需要extension gd等
 
composer require ckfinder/ckfinder-laravel-package
2.Run the command to download the CKFinder code.
 
php artisan ckfinder:download

3.Publish the CKFinder connector configuration and assets.
 
php artisan vendor:publish --tag=ckfinder

4.Create a directory for CKFinder files and allow for write access to it. By default CKFinder expects the files to be placed in public/userfiles (this can be altered in the configuration).
 
mkdir -m 777 public/userfiles
5.laravel config 會多出一個設定檔案
 
config/ckfinder.php
6.在view頁面引入
 
@include('ckfinder::setup')
7.上傳的圖片位置會出現在 userfiles 資料夾底下。

8.程式碼範例
 

<!-- 新 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css">

<!-- Bootstrap主题文件(一般不用引入) -->
<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap-theme.min.css">

<!-- jQuery文件。在bootstrap.min.js 之前引入 -->
<script src="https://cdn.bootcss.com/jquery/1.11.1/jquery.min.js"></script>

<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script src="https://cdn.bootcss.com/bootstrap/3.3.0/js/bootstrap.min.js"></script>

<script src="//cdn.ckeditor.com/4.10.0/full/ckeditor.js"></script>
@include('ckfinder::setup')
<textarea id="editor1" name="editor1" cols="100" rows="30" name="update_context">

</textarea>
<script >

var editor = CKEDITOR.replace( 'editor1' );
CKFinder.setupCKEditor( editor );
</script>


9.資料夾權限等級劃分
 (不是用laravel session  因為laravel session無法在config設定檔用)

在登入的controller控制器使用php session

//登入
Session::put('userDatas',$account);
$_SESSION['ckfinder_file'] = Session::get('userDatas');

//登出
session_destroy();

在  config/ckfinder.php 加入以下片段

//最前面
session_start();

if(isset($_SESSION['ckfinder_file'])) {

    $ckfinder_file = $_SESSION['ckfinder_file'];
} else {
    $ckfinder_file = "temp";
}

// Backend 調整

$config['backends']['default'] = array(

    'name'         => 'default',
    'adapter'      => 'local',
    'baseUrl'      => env('APP_URL').'userfiles/'.$ckfinder_file."/",
    'root'         => public_path('userfiles/').$ckfinder_file."/",
    'chmodFiles'   => 0777,
    'chmodFolders' => 0755,
    'filesystemEncoding' => 'UTF-8'

);

2018年8月12日 星期日

Laravel apache alias mod Rewrite 設定

有一個固定IP,但在資料夾底下有多個專案,需要重新改向路徑。

1.httpd.conf設定

 
LoadModule rewrite_module modules/mod_rewrite.so

需要拿掉註解#啟用
2.在httpd.conf 增加對應資料夾別名
 

Alias /shop55 "C:/website/www/laravel55/shop55/public"
<Directory "C:/website/www/laravel55/shop55/public">
</Directory>

Alias /white55 "C:/website/www/laravel55/white55/public"
<Directory "C:/website/www/laravel55/white55/public">
</Directory>


3.在對應的專案資料夾public下需要新增 .htaccess檔案 並寫入RewriteBase /Alias name

舉例:white55下的 C:/website/www/laravel55/white55/public

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    RewriteBase /white55
</IfModule>

4.重啟apache

 
c:\Apache24\bin\httpd -k restart

5.額外問題,用main當路徑會有導向失敗的問題?,用mainIndex就沒問題?

2018年8月11日 星期六

jQuery File Upload 檔案上傳套件 應用在laravel 紀錄

說明: https://blueimp.github.io/jQuery-File-Upload/

在Laravel框架下,因為MVC分開原因,需要做以下設定。

1.View: 引入Js,跟html語法。
  	

jQuery File Upload Demo

Basic Plus UI version


File Upload widget with multiple file selection, drag&drop support, progress bars, validation and preview images, audio and video for jQuery.
Supports cross-domain, chunked and resumable file uploads and client-side image resizing.
Works with any server-side platform (PHP, Python, Ruby on Rails, Java, Node.js, Go etc.) that supports standard HTML form file uploads.


Add files...
 

Demo Notes

  • The maximum file size for uploads in this demo is 999 KB (default file size is unlimited).
  • Only image files (JPG, GIF, PNG) are allowed in this demo (by default there is no file type restriction).
  • Uploaded files will be deleted automatically after 5 minutes or less (demo files are stored in memory).
  • You can drag & drop files from your desktop on this webpage (see Browser support).
  • Please refer to the project website and documentation for more information.
  • Built with the Bootstrap CSS framework and Icons from Glyphicons.


2.在route需要設定any方式  (讓post,get,delete.都可以通過)

Route::any('/file','HomeController@file');



3.需要加載PHP UploadHandler class,在Laravel裡面可以用composer加載
EX:放在white/tool工具資料夾,將UploadHandler檔案加入namespace,用composer dump-autoload 更新加載。
UploadHandler檔案需要做以下調整:


namespace white\tool;

class UploadHandler

{

  //public function __construct 裡面的script_url調整位置

  'script_url' => 'https://myurl/laravel55/shop55/public/file',

}
4.在加載的js裡面有一個檔案,main.js需要調整 Url設定,用來指向route設定的方法
    $('#fileupload').fileupload({
        // Uncomment the following to send cross-domain cookies:
        //xhrFields: {withCredentials: true},
        url:'https://myurl/laravel55/shop55/public/file'
    });



5.調整php.ini設定
extension=php_gd2.dll
6.錯誤說明:
-如果跳出$等jquery錯誤,可能是沒有先加入jquery的function
-刪除檔案跳出405 not method allow,可能是route沒有設定正確 (any方法,確定route對),或參考3.4路徑確定正確
-上傳跳出Filed to resize image,需要調整5 php.ini設定
-記得檔案資料夾權限要設定允許寫入跟讀取

2018年7月10日 星期二

SSH登入 + FTP登入 google cloud說明

照這篇做可以使用FTP連線登入
https://sammy197.tw/4061/%E5%9C%A8gcp%EF%BC%88google-cloud-platform%EF%BC%89%E4%B8%8A%E9%80%8F%E9%81%8Eftp%E4%B8%8A%E5%82%B3%E6%AA%94%E6%A1%88/

權限設定請參考這篇
http://xtony77.logdown.com/posts/209067-ubuntu-notes-using-ssh-key-login

如果要用cmder使用密碼連入。

可以在Server上設定 ssh的允許密碼登入方式

cd /ctc/ssh
vi sshd_config

PasswordAuthentication yes 
PermitRootLogin yes
UsePrivilegeSeparation no

重新啟動
service ssh restart

在Server上需要設定root帳號

第一次設定root帳號需要打入密碼

sudo passwd root

輸入密碼,設定完畢。

--------------------------------------------------------------------------------------------------

在本地端的cmder使用
ssh root@ip

輸入root的密碼 就可以登入囉!


PS:如果出現Permission denied (publickey)
P請注意ssh資料夾的權限是否設定正確,不能設定成777

1.
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

2.
home/使用者/.ssh
chmod 600 ~/.ssh/authorized_keys

記得重啟
service ssh restart

2018年6月6日 星期三

Redis 安裝教學

在window下使用Redis
文章:http://www.runoob.com/redis/redis-install.html
文章:https://www.xiabingbao.com/php/2017/08/27/window-php-redis.html


1.到redis下載版本 並解壓縮
https://github.com/MicrosoftArchive/redis/releases

本次下載的是 C:\website\Redis-x64-3.2.100


2.CD到Redis目錄
//利用 Redis Desktop Manager 查看資料
//1.啟動
redis-server.exe redis.windows.conf

開啟另一個服務窗 

//2.連入redis

redis-cli -h host -p port -a password

redis-cli -h 127.0.0.1 -p 6379 -a "mypass"

redis-cli

//3.設定值
set myKey abc


//4.取得值
get myKey

PHP使用Redis擴展方法

一樣使用上面安裝Redis-x64-3.2.100

1.下載php ext擴展dll

php_igbinary.dll和php_redis.dll
(1) php_igbinary.dll: php_igbinary-2.0.1-5.6-ts-vc11-x64.zip
https://windows.php.net/downloads/pecl/releases/igbinary/2.0.1/

(2).php_redis.dll:php_redis-2.2.7-5.6-ts-vc11-x64.zip
https://windows.php.net/downloads/pecl/releases/redis/2.2.7/

2.將兩個dll檔案放到php/ext下,並在php.ini 追加以下兩條

extension=php_igbinary.dll
extension=php_redis.dll

3.重啟apache
c:\Apache24\bin\httpd -k restart

4.創建一個test.php檔案,測試是否擴展成功
phpinfo();

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
echo "Connection to server sucessfully";
echo "Server is running: " . $redis->ping();


畫面上應該會顯示phpinfo()確定是不是有redis資訊且顯示
Connection to server sucessfullyServer is running: +PONG

2018年5月23日 星期三

Laravel呼叫方法

說明:https://stackoverflow.com/questions/28573860/laravel-requestall-should-not-be-called-statically/28574081

輔助方法:https://docs.laravel-dojo.com/laravel/5.2/helpers

1. static方法
use Request;

public static function test(Request $request)
{ 
    $data= Request::all();
}


2.  一般方法
use Illuminate\Http\Request;

public static function test(Request $request)
{
   $age = \Request::input('age');
   $data = $request->all();
}



3.輔助方法

use Illuminate\Http\Request;

public static function test(Request $request)
{
    $data= request()->all();
}



2018年5月21日 星期一

mysql常用指令

Mysql需要啟動服務

cd到mysql bin底下有mysql執行檔的地方

1.安裝
mysqld install

2.啟動服務
net start mysql

3.停止服務
net stop mysql

4.mysql 遠端連線  -u:mysql account   -h:ip   -P:port
mysql -uroot -p -hlocalhost -P33600

進入 mysql> 底下下指令

1.顯示DB
show databases;

2.使用databases mydatabase
use mydatabase;

3.查詢 task 底下的tabel mytable
select * from mytable;

4.顯示資料庫中的所有table
 show tables from mytable;

5.顯示資料表的結構
desc mytable;

6.顯示狀態
status;


2018年5月16日 星期三

cmder 在windows下 中文問題

參考網址:http://www.rehack.cn/techshare/devtools/842.html

1.
在cmder的資料夾底下 cmder/config/user-aliases
追加以下代碼

l=ls --show-control-chars
la=ls -aF --show-control-chars
ll=ls -alF --show-control-chars
ls=ls --show-control-chars -F


2.
Settings > Startup > Environment
追加
set LANG=zh_CN.utf-8


3.
修改cmder資料夾底下 vendor/clink.lua文件
把20行set_prompt_filter這個函數調整成


function set_prompt_filter()
    -- get_cwd() is differently encoded than the clink.prompt.value, so everything other than
    -- pure ASCII will get garbled. So try to parse the current directory from the original prompt
    -- and only if that doesn't work, use get_cwd() directly.
    -- The matching relies on the default prompt which ends in X:\PATH\PATH>
    -- (no network path possible here!)
    local old_prompt = clink.prompt.value
    local cwd = old_prompt:match('.*(.:[^>]*)>')
    if cwd == nil then cwd = clink.get_cwd() end
    
    -- environment systems like pythons virtualenv change the PROMPT and usually
    -- set some variable. But the variables are differently named and we would never
    -- get them all, so try to parse the env name out of the PROMPT.
    -- envs are usually put in round or square parentheses and before the old prompt
    local env = old_prompt:match('.*%(([^%)]+)%).+:')
    -- also check for square brackets
    if env == nil then env = old_prompt:match('.*%[([^%]]+)%].+:') end
    
    -- build our own prompt
    -- orig: $E[1;32;40m$P$S{git}{hg}$S$_$E[1;30;40m{lamb}$S$E[0m
    -- color codes: "\x1b[1;37;40m"
    local cmder_prompt = "\x1b[1;32;40m{cwd} {git}{hg} \n\x1b[1;30;40m{lamb} \x1b[0m"
    cmder_prompt = string.gsub(cmder_prompt, "{cwd}", cwd)
    if env == nil then
        lambda = "λ"
    else
        lambda = "("..env..") λ"
    end
    clink.prompt.value = string.gsub(cmder_prompt, "{lamb}", lambda)
end