Browse Source

迁移首次提交

zuoxiupeng 1 year ago
commit
0b9a6b1cd7
14 changed files with 671 additions and 0 deletions
  1. 0 0
      .gitignore
  2. 143 0
      LICENSE.txt
  3. 40 0
      README.md
  4. 16 0
      common/autoload.php
  5. 8 0
      common/cache.php
  6. 15 0
      common/common.php
  7. 12 0
      config/config.php
  8. 95 0
      lib/Base.class.php
  9. 159 0
      lib/CodeEncoder.class.php
  10. 49 0
      lib/Config.class.php
  11. 101 0
      lib/License.class.php
  12. 3 0
      license.php
  13. 15 0
      phpEncoder.php
  14. 15 0
      phpLicense.php

+ 0 - 0
.gitignore


File diff suppressed because it is too large
+ 143 - 0
LICENSE.txt


+ 40 - 0
README.md

@@ -0,0 +1,40 @@
+# php源文件加密和License生成
+
+php加密源代码和生成许可证文件,用于某些公司保密员文件。作用不太大,防好人吧。
+
+## phpEncoder
+>Usage:
+>phpEncoder -dir <File path> [options] [args...]
+>
+>Options:
+>
+> -h | --help     显示本帮助信息
+> 
+> -v | --version  查看程序版本信息
+> 
+> -exclude <File path> 排除的目录用:分开
+> 
+> -output <File path>  输出目录
+> 
+> -level <0|1>  加密等级,默认0:简单base64编码文件,1:基于
+> 
+>base64配合随机key加密参数错误,请修改参数重试(-dir 必选)
+
+
+
+## PHPLicense
+>Usage:
+>PHPLicense -out <File path> [options] [args...]
+>
+>Options:
+>
+> -h | --help     显示本帮助信息
+> 
+> -v | --version  查看程序版本信息
+> 
+> -out            输出文件路径
+> 
+> -expiry         到期时间
+> 
+>许可证文件生成成功
+>

+ 16 - 0
common/autoload.php

@@ -0,0 +1,16 @@
+<?php
+/**
+ * 自动加载程序公共函数和类文件
+ * User: 时光弧线
+ * Date: 15/12/24
+ * Time: 12:45
+ * Email: zuoxiupeng@live.com
+ */
+require __DIR__ . '/common.php';
+require __DIR__ . '/../lib/Base.class.php';
+require __DIR__ . '/../lib/Config.class.php';
+require __DIR__ . '/../lib/CodeEncoder.class.php';
+// 生成许可证
+require __DIR__ . '/../lib/License.class.php';
+
+Config::init();

+ 8 - 0
common/cache.php

@@ -0,0 +1,8 @@
+<?php
+	if(filemtime(__FILE__) > ##########){
+		exit('许可证文件无效,请联系服务提供商');
+	}
+	if (time() > ##########) {
+		exit("许可证过期,请重新联系服务提供商,重新生成许可证");
+	}
+?>

+ 15 - 0
common/common.php

@@ -0,0 +1,15 @@
+<?php
+/**
+ * 公共函数库
+ * User: 时光弧线
+ * Date: 15/12/24
+ * Time: 12:41
+ * Email: zuoxiupeng@live.com
+ */
+
+function checkCli(){
+    if(substr(php_sapi_name(), 0, 3) !== 'cli'){
+        return false;
+    }
+    return true;
+}

+ 12 - 0
config/config.php

@@ -0,0 +1,12 @@
+<?php
+/**
+ * 配置文件
+ * User: 时光弧线
+ * Date: 15/12/24
+ * Time: 13:33
+ * Email: zuoxiupeng@live.com
+ */
+return $config = array(
+    'version' => "PHPEncoder 1.0 (cli)\nCopyright (c) 2015 时光弧线",
+    'version_license' => "PHPLicense 1.0 (cli)\nCopyright (c) 2015 时光弧线",
+);

+ 95 - 0
lib/Base.class.php

@@ -0,0 +1,95 @@
+<?php
+/**
+ * 程序基础类
+ * User: 时光弧线
+ * Date: 15/12/24
+ * Time: 12:23
+ * Email: zuoxiupeng@live.com
+ */
+class Base{
+
+    private static $filePath    = ''; // 要加密的路径
+    private static $outFilePath = ''; // 输出路径
+    private static $level       = '0';// 编码级别
+
+    /*
+     * 命令行启动函数
+     */
+    public static function main(){
+        $i = 1;
+        $argc = $_SERVER['argc'];   // 参数格式
+        $argv = $_SERVER['argv'];   // 参数值数组
+
+        $handle = '';               // 处理函数
+
+        if($argc > 1) {
+            while ($i < $argc) {
+                switch ($argv[$i++]) {
+                    case '--help':
+                        echo self::help();
+                        break;
+                    case '-h':
+                        echo self::help();
+                        break;
+                    case '--version':
+                        echo self::version();
+                        break;
+                    case '-v':
+                        echo self::version();
+                        break;
+                    case '-dir':
+                        $handle = 'encode';
+                        self::$filePath = $argv[$i];
+                        break;
+                    case '-output':
+                        self::$outFilePath = $argv[$i];
+                        break;
+                    case '-level':
+                        self::$level = $argv[$i];
+                        break;
+                }
+            }
+            if($handle == 'encode'){
+                self::$handle();
+            }else{
+                echo '参数错误,请修改参数重试(-dir 必选)';
+            }
+        }else{
+            echo '请输入要加密的php文件根目录';
+        }
+        echo "\n";
+        exit;
+    }
+
+    /**
+     * 显示帮助信息
+     */
+    private static function help(){
+        return ""
+        . "Usage:\n"
+        . "phpEncoder -dir <File path> [options] [args...]\n"
+        . "Options:\n"
+        . " -h | --help     显示本帮助信息\n"
+        . " -v | --version  查看程序版本信息\n"
+        . " -exclude <File path> 排除的目录用:分开\n"
+        . " -output <File path>  输出目录\n"
+        . " -level <0|1>  加密等级,默认0:简单base64编码文件,1:基于base64配合随机key加密"
+        ;
+    }
+
+    /*
+     * 显示版本
+     */
+    private static function version(){
+        return Config::getConfig('version');
+    }
+
+    /**
+     * 加密文件的路径
+     */
+    private static function encode(){
+        CodeEncoder::$level = self::$level; // 设置编码级别
+        echo CodeEncoder::encode(self::$filePath, self::$outFilePath);  // 执行编码
+    }
+
+}

File diff suppressed because it is too large
+ 159 - 0
lib/CodeEncoder.class.php


+ 49 - 0
lib/Config.class.php

@@ -0,0 +1,49 @@
+<?php
+/**
+ * 操作配置文件
+ * User: 时光弧线
+ * Date: 15/12/24
+ * Time: 13:36
+ * Email: zuoxiupeng@live.com
+ */
+class Config{
+    // 保存配置文件
+    private static $config = array();
+
+    /**
+     * 初始化配置数组
+     */
+    public function __construct(){
+        if(!self::$config){
+            self::$config = require __DIR__ . '/../config/config.php';
+        }
+    }
+
+    public static function init(){
+        if(!self::$config){
+            self::$config = require __DIR__ . '/../config/config.php';
+        }
+    }
+
+    /**
+     * 获取配置信息
+     * @param $key                  配置下标
+     * @return bool|string|array    返回对应下标值
+     */
+    public static function getConfig($key){
+        // self::init();
+        if(!empty($key)){
+            return self::$config[$key];
+        }
+        return false;
+    }
+
+    /**
+     * 设置配置信息,只对本次有效
+     * @param $key      下标
+     * @param $value    值
+     */
+    public static function setConfig($key, $value){
+        self::$config[$key] = $value;
+    }
+}

+ 101 - 0
lib/License.class.php

@@ -0,0 +1,101 @@
+<?php
+/**
+ * 生成许可证主文件
+ * User: 时光弧线
+ * Date: 15/12/30
+ * Time: 10:40
+ * Email: zuoxiupeng@live.com
+ */
+class License{
+
+    private static $filePath;   // 输出路径
+    private static $expiryDate; // 截止日期
+
+    /*
+     * 命令行启动函数
+     */
+    public static function main(){
+        $i = 1;
+        $argc = $_SERVER['argc'];   // 参数格式
+        $argv = $_SERVER['argv'];   // 参数值数组
+
+        $handle = '';               // 处理函数
+
+        if($argc > 1) {
+            while ($i < $argc) {
+                switch ($argv[$i++]) {
+                    case '--help':
+                        echo self::help();
+                        break;
+                    case '-h':
+                        echo self::help();
+                        break;
+                    case '--version':
+                        echo self::version();
+                        break;
+                    case '-v':
+                        echo self::version();
+                        break;
+                    case '-out':
+                        if(!is_dir($argv[$i])){
+                            echo "输出目录不存在,请更改输出目录,或省略该参数\n";exit;
+                        }
+                        self::$filePath = rtrim($argv[$i], "/\\") . '/license.php';
+                        break;
+                    case '-expiry':
+                        self::$expiryDate = $argv[$i];
+                        break;
+                }
+            }
+            if(!self::$filePath) self::$filePath = __DIR__ . '/../license.php';
+            self::createLicense();
+        }else{
+            self::$filePath = __DIR__ . '/../license.php';
+            self::createLicense();
+        }
+        echo "\n";
+        exit;
+    }
+
+    /**
+     * 生成License许可证
+     */
+    private static function createLicense(){
+        date_default_timezone_set('PRC');
+        $dateTime = self::$expiryDate ? strtotime(self::$expiryDate) : time() + 30 * 24 * 60 * 60; // 到期时间
+        $contents = file_get_contents(__DIR__ . '/../common/cache.php'); // 验证文件内容
+        $contents = str_replace('##########', $dateTime, $contents);
+        $fileName = __DIR__ . '/../cache_' . time() . '.php';   // 临时文件名
+        file_put_contents($fileName, $contents);
+        $contents = CodeEncoder::encodeKey($fileName);
+        if(file_put_contents(self::$filePath, $contents) > 0){
+            echo '许可证文件生成成功';
+        }else{
+            echo '许可证文件写文件是吧';
+        }
+        unlink($fileName);  // 删除临时文件
+    }
+
+    /**
+     * 显示帮助信息
+     */
+    private static function help(){
+        return ""
+        . "Usage:\n"
+        . "PHPLicense -out <File path> [options] [args...]\n"
+        . "Options:\n"
+        . " -h | --help     显示本帮助信息\n"
+        . " -v | --version  查看程序版本信息\n"
+        . " -out            输出文件路径\n"
+        . " -expiry         到期时间\n"
+        ;
+    }
+
+    /*
+     * 显示版本
+     */
+    private static function version(){
+        return Config::getConfig('version_license');
+    }
+
+}

File diff suppressed because it is too large
+ 3 - 0
license.php


+ 15 - 0
phpEncoder.php

@@ -0,0 +1,15 @@
+#!/usr/bin/env php
+<?php
+/**
+ * PHP CLI shell 程入口
+ * 用语加密php源程序
+ * User: 时光弧线
+ * Date: 15/12/24
+ * Time: 11:19
+ * Email: zuoxiupeng@live.com
+ */
+require __DIR__ . '/common/autoload.php';
+
+// 确保这个脚本只能运行在 SHELL 中
+if (!checkCli()) exit("This Programe can only be run in CLI mode.\n");
+Base::main();

+ 15 - 0
phpLicense.php

@@ -0,0 +1,15 @@
+#!/usr/bin/env php
+<?php
+/**
+ * PHP CLI shell 程入口
+ * 用于生成license
+ * User: 时光弧线
+ * Date: 15/12/24
+ * Time: 12:40
+ * Email: zuoxiupeng@live.com
+ */
+
+require __DIR__ . '/common/autoload.php';
+// 确保这个脚本只能运行在 SHELL 中
+if (!checkCli()) exit("This Programe can only be run in CLI mode.\n");
+License::main();