Dec 21

1.下载源代码
目前 MiniDLNA 最新版本 1.1.5, 下载地址:
https://sourceforge.net/projects/minidlna/files/minidlna/

2.修改源文件
metadata.c

//line 840  
else if( strncmp(ctx->iformatctx->name, "matroska", 8) == 0 )  
    xasprintf(&m.mime, "video/x-matroska");  
else if( strcmp(ctx->iformatctx->name, "flv") == 0 )  
    xasprintf(&m.mime, "video/x-flv");  
//----add----  
else if( strcmp(ctx->iformat->name, "rm") == 0 )  
    xasprintf(&m.mime, "video/x-pn-realvideo");  
else if( strcmp(ctx->iformat->name, "rmvb") == 0 )  
    xasprintf(&m.mime, "video/x-pn-realvideo");  
//---end----  
if( m.mime )  
    goto video_nodlna;  

upnpglobalvars.h

// Line 169  
    "http-get:*:audio/mp4:*," \  
    "http-get:*:audio/x-wav:*," \  
    "http-get:*:audio/x-flac:*," \  
    "http-get:*:application/ogg:*," \  
//----add----  
    "http-get:*:video/x-pn-realvideo:*"  
//----end----  
  
#define DLNA_FLAG_DLNA_V1_5      0x00100000
#define DLNA_FLAG_HTTP_STALLING  0x00200000

utils.c

//line 381  
        ends_with(file, ".m2t") || ends_with(file, ".mkv")   ||  
        ends_with(file, ".vob") || ends_with(file, ".ts")    ||  
        ends_with(file, ".flv") || ends_with(file, ".xvid")  ||  
//----add----  
        ends_with(file, ".rm")  || ends_with(file, ".rmvb")  ||  
//----end----  
#ifdef TIVO_SUPPORT  
        ends_with(file, ".TiVo") ||  
#endif  
        ends_with(file, ".mov") || ends_with(file, ".3gp"));

3.编译安装

sudo apt-get install build-essential libexif-dev libjpeg-dev \  
libid3tag0-dev libFLAC-dev libvorbis-dev libsqlite3-dev libavformat-dev \  
autoconf automake  
  
./autogen.sh  
./configure  
make  
make install  
sudo cp ./linux/minidlna.inot.d.script.tmpl  /etc/init.d/minidlna  
sudo cp ./minidlna.conf  /etc/minidlna.conf  
  
# 第一次启动使用-d –v选项看有没有出错  
sudo /usr/local/sbin/minidlnad -d -v  
# 没出错就ctrl+c 结束进程  
  
# 正常启动  
sudo service minidlna start  
# 刷新列表  
sudo service minidlna restart  

4.MiniDLNA 配置

# port for HTTP (descriptions, SOAP, media transfer) traffic  
port=8200  
  
# network interfaces to serve, comma delimited  
#network_interface=eth0  
  
# specify the user account name or uid to run as  
#user=jmaggard  
  
# set this to the directory you want scanned.  
# * if you want multiple directories, you can have multiple media_dir= lines  
# * if you want to restrict a media_dir to specific content types, you  
#   can prepend the types, followed by a comma, to the directory:  
#   + "A" for audio  (eg. media_dir=A,/home/jmaggard/Music)  
#   + "V" for video  (eg. media_dir=V,/home/jmaggard/Videos)  
#   + "P" for images (eg. media_dir=P,/home/jmaggard/Pictures)  
#   + "PV" for pictures and video (eg. media_dir=PV,/home/jmaggard/digital_camera)  
media_dir=/opt  
  
# set this to merge all media_dir base contents into the root container  
# note: the default is no  
#merge_media_dirs=no  
  
# set this if you want to customize the name that shows up on your clients  
#friendly_name=My DLNA Server  
  
# set this if you would like to specify the directory where you want MiniDLNA to store its database and album art cache  
#db_dir=/var/cache/minidlna  
  
# set this if you would like to specify the directory where you want MiniDLNA to store its log file  
#log_dir=/var/log  
  
# set this to change the verbosity of the information that is logged  
# each section can use a different level: off, fatal, error, warn, info, or debug  
#log_level=general,artwork,database,inotify,scanner,metadata,http,ssdp,tivo=warn  
  
# this should be a list of file names to check for when searching for album art  
# note: names should be delimited with a forward slash ("/")  
album_art_names=Cover.jpg/cover.jpg/AlbumArtSmall.jpg/albumartsmall.jpg/AlbumArt.jpg/albumart.jpg/Album.jpg/album.jpg/Folder.jpg/folder.jpg/Thumb.jpg/thumb.jpg  
  
# set this to no to disable inotify monitoring to automatically discover new files  
# note: the default is yes  
inotify=yes  
  
# set this to yes to enable support for streaming .jpg and .mp3 files to a TiVo supporting HMO  
enable_tivo=no  
  
# set this to strictly adhere to DLNA standards.  
# * This will allow server-side downscaling of very large JPEG images,  
#   which may hurt JPEG serving performance on (at least) Sony DLNA products.  
strict_dlna=no  
  
# default presentation url is http address on port 80  
#presentation_url=http://www.mylan/index.php  
  
# notify interval in seconds. default is 895 seconds.  
notify_interval=900  
  
# serial and model number the daemon will report to clients  
# in its XML description  
serial=12345678  
model_number=1  
  
# specify the path to the MiniSSDPd socket  
#minissdpdsocket=/var/run/minissdpd.sock  
  
# use different container as root of the tree  
# possible values:  
#   + "." - use standard container (this is the default)  
#   + "B" - "Browse Directory"  
#   + "M" - "Music"  
#   + "V" - "Video"  
#   + "P" - "Pictures"  
#   + Or, you can specify the ObjectID of your desired root container (eg. 1$F for Music/Playlists)  
# if you specify "B" and client device is audio-only then "Music/Folders" will be used as root  
#root_container=.  
  
# always force SortCriteria to this value, regardless of the SortCriteria passed by the client  
#force_sort_criteria=+upnp:class,+upnp:originalTrackNumber,+dc:title  
  
# maximum number of simultaneous connections  
# note: many clients open several simultaneous connections while streaming  
#max_connections=50  

转自:http://blog.csdn.net/haven200/article/details/43039261#

Dec 10

1.导出数据库

mysqldump -u root -p wordpress > wordpress.sql
%%(输入后会让你输入进入MySQL的密码)
%%(如果导出单张表的话在数据库名后面输入表名即可)

2.导入数据库

mysql -u root -p
%%(输入同样后会让你输入MySQL的密码)
create database wordpress;
%%(创建数据库wordpress)
mysql>use wordpress;
%%(选择数据库wordpress)
mysql>source wordpress.sql;
%%(导入备份的数据库wordpress,必要时需要完整的路径)
Nov 29

语法: mount -t 类型 -o 挂接方式 源路径 目标路径

-t 详细选项:
   光盘或光盘镜像:iso9660
   DOS fat16文件系统:msdos
   Windows 9x fat32文件系统:vfat
   Windows NT ntfs文件系统:ntfs
   Mount Windows文件网络共享:smbfs(需内核支持)推荐cifs
   UNIX(LINUX) 文件网络共享:nfs
-o 详细选项:
   loop :用来把一个文件当成硬盘分区挂接上系统
   ro :采用只读方式挂接设备
   rw :采用读写方式挂接设备
   iocharset :指定访问文件系统所用字符集,例如iocharset=utf8
   remount :重新挂载

使用实例:

挂载windows文件共享:

mount -t smbfs -o username=admin,password=xxx //192.168.1.2/c$ /mnt/samba
mount -t cifs -o username=xxx,password=xxx //IP/sharename /mnt/dirname

挂载Linux文件nfs共享:

mount -t nfs -o rw 192.168.1.2:/usr/www /usr/www

挂载ISO镜像:

mount -o loop -t iso9660 /usr/mydisk.iso /home/pi/cd

挂载USB移动硬盘:

mount -t ntfs /dev/sdc1 /root/usb

挂载CDROM:

mount /dev/cdrom /home/pi/cd

取消挂载:

umount /dev/cdrom /home/pi/cd

单用户模式重新挂载根分区:

mount -o remount,rw /
Nov 21

需要编译安装 ngx_http_substitutions_filter_module 模块,试图屏蔽掉广告但是美元成功,什么时候有时间再尝试一下。

worker_processes auto;
events {
  worker_connections 1024;
}
http {
  include  mime.types;
  default_type application/octet-stream;
  sendfile on;
  gzip on;
  server {
    listen 80;
    server_name yourdomain.com;

    location / {
      proxy_pass https://thepiratebay.org/;
      proxy_set_header Accept-Encoding "";
      proxy_set_header Host thepiratebay.org;
      proxy_set_header CF-Connecting-IP "";
      proxy_set_header Via "$host";
      proxy_ssl_verify off;
      proxy_ssl_server_name on;

      subs_filter 'thepiratebay.org' $host;
    }
  }
}

参考资料:https://proxybay.one/setup.html

Nov 07

1.绕过 GFW 和 ISP 劫持

最简单和不折腾的方法是购买 VPN,次之是购买一台海外 VPS,自己安装 VPN 或 Shadowsocks 服务端。VPN 的优点是可以全局翻墙,Shadowsocks 虽然可以设置全局模式,但是对于不支持代理的本地应用是没有办法的,当然这种情况下可以试试 ProxifierPE 强制所有连接通过代理上网。

使用 Shadowsocks 可能遇到的另一个问题是,因为 Shadowsocks 使用的是 SOCKS5 类型的代理,当本地应用只支持 HTTP/HTTPS 类型代理时,就需要自己解决 HTTP 转换为 SOCKS5 的问题。当然,这个问题使用 Privoxy 就能很好地解决。

本节主要介绍如何组合使用 Shadowsocks 和 Privoxy,并假设你已经安装并配置好了 Shadowsocks(Linux 中可以安装 shadowsocks-qt5 或 命令行版本的 Shadowsocks)。

Shadowsocks 与 Privoxy 组合使用的示意图如下所示:

Shadowsocks-Privoxy

假设你已经配置好了 Shadowsocks,接下来配置 Privoxy。

Windows 系统中右键点击 Privoxy 托盘图标,依次点击 Edit – Main Configuration 打开配置文件;Linux 系统中 Privoxy 的配置文件位于/etc/privoxy/config。
配置文件修改为:

# 把 HTTP 流量转发到本机 127.0.0.1:1080 的 Shadowsocks
forward-socks5 / 127.0.0.1:1080 .
# 可选,默认只监听本地连接 127.0.0.1:8118
# 可以允许局域网中的连接
listen-address 0.0.0.0:8118

启动 Shadowsocks 和 Privoxy 后,把本地应用的代理设置为 HTTP/HTTPS 类型的 127.0.0.1:8118,就可以绕过 GFW 和 ISP 了。如果局域网中的其他 PC 或手机也希望使用该电脑上网(假设该电脑 IP 地址为 192.168.1.10),把它们的代理设置为 19.168.1.10:8118 即可。

目前,有一个讨巧的的办法替代这两者的组合:使用 Lantern —— 一款开源的安全上网工具。它使用的是 HTTP 类型代理,本地端口为 8787,也就是说,把本地应用的代理设置为 127.0.0.1:8787 就可以使用 HTTP 类型的代理了。而且使用它,也无需自己购买 VPS。

Lantern 默认非全局代理,可以在设置中改为全局模式。

另一方面,Lantern 只监听本机 127.0.0.1:8787 的连接,如果局域网中的电脑或手机也想通过这台电脑翻墙(假设该电脑 IP 地址为 192.168.1.10),那么也需要配合 Privoxy 使用。这时,Privoxy 的配置应该如下:

# 监听局域网中连接到本地 8118 端口的连接,转发给 8787 端口的 Lantern
forward / 127.0.0.1:8787
listen-address 127.0.0.1:8118 # 可改为 0.0.0.0:8118 允许局域网的连接

2.匿名上网

网络中保持匿名的办法是使用 Tor,匿名的意思是隐藏你当前的 IP 地址。Internet 上有很多志愿者运行着 Tor 中继节点,Tor 能保证从出发点的流量至少经过三个不同的中继节点到达目的地址,而且这三个不同的中继不会每次都相同。

形象地说,你想把一封匿名信交给小明,在大街上随便找了一陌生人 A 让 A 帮忙转交,A 走了一段路程后随便找了一个陌生人 B 让 B 帮忙转交,B 走了一段路程后随便找了一个陌生人 C 让 C 帮忙转交,最终 C 按照信封上的地址找到了小明并把信交给了他。小明只知道是 C 转交了这封信,至于是谁写的这封信,他就无从得知了。A、B、C 分别对应着 Tor 网络的中继节点,这种投递匿名信的方式就起到了隐藏 IP 地址的效果。

如下图所示,使用 Tor 从本机经过三跳访问了 Google。

Shadowsocks-Privoxy

Tor 浏览器

为了方便使用 Tor,Tor 开发者把 Tor 集成到了定制版的 Firefox 中,简单设置一下就能正常使用。

Tor 浏览器专为大陆等网络环境加入了流量混淆的选项。首次打开浏览器时会弹出 Tor 状态检查,点击设置配置 Tor 网桥,勾选互联网提供商(ISP)是否对 Tor 网络连接进行了封锁或审查中的是,把下一步中的网桥类型选择meek-amazon或meek-azure。这两者在大陆没被完全封锁,因此可以用来做跳板网桥。

不过随着网络环境的恶化,Tor 提供的网桥类型都不可用时,就需要使用自己的 Shadowsocks 或 Lantern 代理了。

首次打开 Tor 浏览器,在 Tor 设置中勾选互联网提供商(ISP)是否对 Tor 网络连接进行了封锁或审查中的否,在下一步是否需要本地代理访问互联网?中选择是,下一步中设置你的代理:

  • 使用 Shadowsocks 则设置为 SOCKS5 类型的 127.0.0.1:1080;
  • 使用 Lantern 则设置为 HTTP/HTTPS 类型的 127.0.0.1:8787;

如果通过局域网中其他计算机的配置联网,把 127.0.0.1 改为那台计算机的 IP 地址。

使用了代理的 Tor 浏览器原理示意图如下(以 Tor + Shadowsocks 组合为例):

Shadowsocks-Privoxy

Tor Expert Bundle

Tor 浏览器适用于使用浏览器匿名上网的场景,如果打算让本地应用(如其他浏览器、Linux 中的 Terminal 等)也使用 Tor 隐藏 IP 地址,那么就需要自己手动配置 Tor 了。从 Tor 官网下载 操作系统对应的 Expert Bundle,它只包含 Tor 工具,不含浏览器。

假设你已经配置好了 Shadowsocks,接下来,为 Tor 配置 Shadowsocks 代理。

Windows 系统中,打开 %AppData%/tor 目录(如果不存在则创建该目录),新建 torrc 文件,内容如下:

## 通过 SOCKS5 代理
SOCKS5Proxy 127.0.0.1:1080
## 如果使用 HTTP/HTTPS 代理
# HTTPSProxy 127.0.0.1:8118
## 如果只允许特定端口的网络连接,如 80 和 443
ReachableAddresses *:80,*:443
ReachableAddresses reject *:*

Linux 系统中,Tor 的配置文件位于 /etc/tor/torrc,配置内容同上。

启动 Shadowsocks 和 Tor,因为 Tor 监听的是 SOCKS5 类型的本地 9050 端口,把需要匿名的本地应用代理设置为 SOCKS5 类型,代理地址设置为 127.0.0.1:9050,实现匿名上网。

还是老问题,如果本地应用只支持 HTTP/HTTPS 代理类型,那么仍需要使用 Privoxy,修改其配置文件为:

forward-socks5 / 127.0.0.1:9050 .
listen-address 127.0.0.1:8118    # 可改为 0.0.0.0:8118 允许局域网的连接

这样一来,本地应用的代理设置为 HTTP/HTTPS 类型的 127.0.0.1:8118 就可以实现匿名上网了。
Privoxy + Tor + Shadowsocks 组合使用示意图如下所示:

Shadowsocks-Privoxy

使用 Tor 匿名访问网络除了应用于渗透测试,另一个应用场景是编写爬虫变换 IP 地址爬取站点,减小被网站屏蔽的可能性。

在 Linux Terminal 中,使用 export 命令设置代理,可以只在当前 Terminal 中生效,

export http_proxy=http://127.0.0.1:8118
export https_proxy=https://127.0.0.1:8118

3.总结

接下来简要归纳上述内容,给出每种组合的配置内容。

Privoxy + Shadowsocks 组合 —— 翻墙
配置 Privoxy,Linux 系统中位于 /etc/privoxy/config:

forward-socks5 / 127.0.0.1:1080 .
listen-address 127.0.0.1:8118    # 可改为 0.0.0.0:8118 允许局域网的连接

本地代理需设置为 HTTP/HTTPS 类型的 127.0.0.1:8118。
如果不使用 Privoxy,本地代理需设置为 SOCKS5 类型的 127.0.0.1:1080。

Privoxy + Tor + Shadowsocks 组合 —— 匿名上网
配置 Privoxy,Linux 系统中位于 /etc/privoxy/config:

forward-socks5 / 127.0.0.1:9050 .
listen-address 0.0.0.0:8118    # 可改为 0.0.0.0:8118 允许局域网的连接

配置 Tor,Windows 系统中位于 %AppData%/tor/torrc,Linux 系统中位于 /etc/tor/torrc:

SOCKS5Proxy 127.0.0.1:1080    # Shadowsocks 代理地址
ReachableAddresses *:80,*:443
ReachableAddresses reject *:*

本地代理需设置为 HTTP/HTTPS 类型的 127.0.0.1:8118。
如果不使用 Privoxy,本地代理需设置为 SOCKS5 类型的 127.0.0.1:9050。

Privoxy + Tor + Lantern 组合 —— 匿名上网
配置 Privoxy,Linux 系统中位于 /etc/privoxy/config:

forward-socks5 / 127.0.0.1:9050 .
listen-address 0.0.0.0:8118    # 可改为 0.0.0.0:8118 允许局域网的连接

配置 Tor,Windows 系统中位于 %AppData%/tor/torrc,Linux 系统中位于 /etc/tor/torrc:

HTTPSProxy 127.0.0.1:8787    # Lantern 代理地址
ReachableAddresses *:80,*:443
ReachableAddresses reject *:*

本地代理需设置为 HTTP/HTTPS 类型的 127.0.0.1:8118。
如果不使用 Privoxy,本地代理需设置为 SOCKS5 类型的 127.0.0.1:9050。

转自:https://g2ex.github.io/2016/05/20/Tips-on-Chinternet/