-
-
-
diff --git a/CodeSmith/Repository.cst b/CodeSmith/Repository.cst
deleted file mode 100644
index aeb7ccb9990fb9e6000c4e5d631e9f24b3f93824..0000000000000000000000000000000000000000
--- a/CodeSmith/Repository.cst
+++ /dev/null
@@ -1,49 +0,0 @@
-<%--
-Name: 数据访问
-Author: yubaolee
-Description:
---%>
-<%@ CodeTemplate Language="C#" Encoding="utf-8" TargetLanguage="C#" Debug="False" Description="数据访问" %>
-<%@ Property Name="ModuleName" Type="String" Category="Context" Description="模块名称" %>
-<%@ Map Name="CSharpAlias" Src="System-CSharpAlias" Description="System to C# Type Map" %>
-<%@ Assembly Name="SchemaExplorer" %>
-<%@ Import Namespace="SchemaExplorer" %>
-using System.Collections.Generic;
-using System.Linq;
-using OpenAuth.Domain;
-using OpenAuth.Domain.Interface;
-
-namespace OpenAuth.Repository
-{
- public class <%=ModuleName%>Repository :BaseRepository<<%=ModuleName%>>, I<%=ModuleName%>Repository
- {
-
- public IEnumerable<<%=ModuleName%>> Load<%=ModuleName%>s(int pageindex, int pagesize)
- {
- return Context.<%=ModuleName%>s.OrderBy(u => u.Id).Skip((pageindex - 1) * pagesize).Take(pagesize);
- }
-
- public IEnumerable<<%=ModuleName%>> LoadInOrgs(params int[] orgId)
- {
- var result = from <%=ModuleName.ToLower()%> in Context.<%=ModuleName%>s where orgId.Contains(<%=ModuleName.ToLower()%>.Id)
- select <%=ModuleName.ToLower()%>;
- return result;
-
- }
-
- public int Get<%=ModuleName%>CntInOrgs(params int[] orgIds)
- {
- return LoadInOrgs(orgIds).Count();
- }
-
- public IEnumerable<<%=ModuleName%>> LoadInOrgs(int pageindex, int pagesize, params int[] orgIds)
- {
- return LoadInOrgs(orgIds).OrderBy(u =>u.Id).Skip((pageindex -1)*pagesize).Take(pagesize);
- }
-
- public void Delete(int id)
- {
- Delete(u =>u.Id == id);
- }
- }
-}
diff --git a/CodeSmith/editDlg.js.cst b/CodeSmith/editDlg.js.cst
deleted file mode 100644
index 03a585155a853d244aee1311901bf514d6d06ab8..0000000000000000000000000000000000000000
--- a/CodeSmith/editDlg.js.cst
+++ /dev/null
@@ -1,251 +0,0 @@
-<%--
-Name: 编辑修改JS
-Author: yubaolee
-Description: 编辑修改JS
---%>
-<%@ CodeTemplate Language="C#" TargetLanguage="C#" Debug="False" Encoding="utf-8" Description="添加模块" %>
-<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="Context"
-Description="连接的数据库" %>
-<%@ Property Name="ModuleName" Type="String" Category="Context" Description="模块名称" %>
-<%@ Map Name="CSharpAlias" Src="System-CSharpAlias" Description="System to C# Type Map" %>
-<%@ Assembly Name="SchemaExplorer" %>
-<%@ Import Namespace="SchemaExplorer" %>
-<%@ Assembly Src="Util.cs" %>
-<%@ Import Namespace="Util" %>
-
-
-//grid列表模块
-function MainGrid() {
- var url = '/<%=ModuleName%>/Load?parentId=';
- var selectedId = 0; //ztree选中的模块
- this.maingrid = $('#maingrid').datagrid({
- showToolbar: false,
- filterThead: false,
- target: $(this),
- columns: [
- <% foreach (ColumnSchema column in this.SourceTable.Columns) { %>
- {
- name: '<%=column.Name%>',
- label: '<%=Tools.GetDescription(column)%>',
- width: 100
- <%if(column.IsPrimaryKeyMember){ %>
- , hide: true
- <%} %>
- <%else if(CSharpAlias[column.SystemType.FullName] == "bool") {%>
- ,align: 'center',
- items: [{ 'false': '否' }, { 'true': '是' }],
- <%} %>
- <%else if(CSharpAlias[column.SystemType.FullName] == "int") {%>
- , align: 'center',
- items: [{ '0': '默认' }, { '1': '状态1' }],
- <%} %>
- },
- <% } %>
- ],
- dataUrl: url + selectedId,
- fullGrid: true,
- showLinenumber: true,
- showCheckboxcol: true,
- paging: true,
- filterMult: false,
- showTfoot: false,
- height: '100%'
- });
- this.reload = function (id) {
- if (id != undefined) selectedId = id;
- this.maingrid.datagrid('reload', { dataUrl: url+ selectedId });
- };
-};
-MainGrid.prototype = new Grid();
-var list = new MainGrid();
-
-//左边分类导航树
-var ztree = function () {
- var url = '/<%=ModuleName%>/LoadForTree';
- var setting = {
- view: { selectedMulti: false },
- data: {
- key: {
- name: 'Name',
- title: 'Name'
- },
- simpleData: {
- enable: true,
- idKey: 'Id',
- pIdKey: 'ParentId',
- rootPId: 'null'
- }
- },
- callback: { onClick: zTreeOnClick }
- };
- $.getJSON(url, function (json) {
- $.fn.zTree.init($("#tree"), setting, json).expandAll(true);
- });
- function zTreeOnClick(event, treeId, treeNode) {
- list.reload(treeNode.Id);
- }
-
- return {
- reload:function() {
- $.getJSON(url, function (json) {
- $.fn.zTree.init($("#tree"), setting, json).expandAll(true);
- });
- }
- }
-}();
-
-<%if(Tools.NeedCascade(SourceTable)){ %>
-//编辑时,选择上级弹出的树
-var parentTree = function () {
- var nameDom = "#ParentName";
- var idDom = "#ParentId";
- var zTreeObj;
- var setting = {
- view: {
- selectedMulti: false
- },
- check: {
- enable: true,
- chkStyle: "radio", //单选
- radioType: "all"
- },
- data: {
- key: {
- name: 'Name',
- title: 'Name'
- },
- simpleData: {
- enable: true,
- idKey: 'Id',
- pIdKey: 'ParentId',
- rootPId: 'null'
- }
- },
- callback: {
- onClick: zTreeOnClick,
- onCheck: zTreeCheck
- }
- };
-
- function zTreeCheck(event, treeId, treeNode) {
- var nodes = zTreeObj.getCheckedNodes(true);
- var ids = nodes.map(function (e) { return e.Id; }).join(",");
- var names = nodes.map(function (e) { return e.Name; }).join(",");
-
- $(nameDom).val(names);
- $(idDom).val(ids);
- }
- function zTreeOnClick(event, treeId, treeNode) {
- zTreeObj.checkNode(treeNode, !treeNode.checked, true, true);
- event.preventDefault();
- }
-
- return {
- show:function() {
- $.getJSON('/<%=ModuleName%>/LoadForTree', function (json) {
- zTreeObj = $.fn.zTree.init($('#j_select_tree1'), setting, json);
- var orgstr = $(idDom).val();
- var name = '';
- if (orgstr != '') {
- var nodeIds = orgstr.split(',');
- $.each(nodeIds, function () {
- var node = zTreeObj.getNodeByParam("Id", this, null);
- name += ',' + node.Name;
- zTreeObj.checkNode(node, true, true);
- });
- $(nameDom).val(name.substr(1)); //显示名称
- }
- zTreeObj.expandAll(true);
- });
- }
- };
-}();
-<%} %>
-
-//添加(编辑)对话框
-var editDlg = function () {
- var update = false;
- var show = function () {
- BJUI.dialog({ id: 'editDlg', title: '编辑对话框', target: '#editDlg' });
- $("#btnSave").on("click", function() {
- editDlg.save();
- });
- }
- return {
- add: function () { //弹出添加
- update = false;
- show();
- $.CurrentDialog.find("form")[0].reset(); //reset方法只能通过dom调用
- $("#Id").val(0);
-
- <%if(Tools.NeedCascade(SourceTable)){
- Response.WriteLine("parentTree.show();");
- }%>
- },
- update: function (ret) { //弹出编辑框
- update = true;
- show();
- <% foreach (ColumnSchema column in this.SourceTable.Columns) { %>
- <%if(column.IsPrimaryKeyMember){%>
- $('#<%=column.Name%>').val(ret.<%=column.Name%>);
- <%}else if(CSharpAlias[column.SystemType.FullName] == "bool") {%>
- $('#<%=column.Name%>').selectpicker('val', ret.<%=column.Name%>?"true":"false");
- <%}else if(CSharpAlias[column.SystemType.FullName] == "int") {%>
- $('#<%=column.Name%>').selectpicker('val', ret.<%=column.Name%>);
- <%} else{ %>
- $('#<%=column.Name%>').val(ret.<%=column.Name%>);
- <%} %>
- <% } %>
- <%if(Tools.NeedCascade(SourceTable)){
- Response.WriteLine("parentTree.show();");
- }%>
- },
- save: function() { //编辑-->保存
- $('#editForm').isValid(function (v) {
- if (!v) return; //验证没通过
- $("#editForm").bjuiajax('ajaxForm', {
- reload: false,
- callback:function(json) {
- list.reload();
- ztree.reload();
- }
- });
- });
- }
- };
-}();
-
-//删除
-function del() {
- var selected = list.getSelectedObj();
- if (selected == null) return;
-
- $.getJSON('/<%=ModuleName%>/Delete?Id=' + selected.Id, function (data) {
- if (data.statusCode == "200") {
- list.reload();
- ztree.reload();
- }
- else {
- $(this).alertmsg('warn', data.message);
- }
- });
-}
-
-//自定义的编辑按钮
-function edit() {
- var selected = list.getSelectedObj();
- if (selected == null) {
- return;
- }
- editDlg.update(selected);
-}
-
-function add() {
- editDlg.add();
-}
-
-function refresh() {
- list.reload();
-}
-
-//@@ sourceURL=<%=ModuleName%>.js
\ No newline at end of file
diff --git a/Infrastructure/Cache/CacheContext.cs b/Infrastructure/Cache/CacheContext.cs
new file mode 100644
index 0000000000000000000000000000000000000000..f063e6fecd7366a046fcb711ed0472241ec7dc80
--- /dev/null
+++ b/Infrastructure/Cache/CacheContext.cs
@@ -0,0 +1,44 @@
+// ***********************************************************************
+// Assembly : Helper
+// Author : yubaolee
+// Created : 12-16-2016
+//
+// Last Modified By : yubaolee
+// Last Modified On : 12-21-2016
+// 使用微软默认带超时的Cache
+// File: CacheContext.cs
+// ***********************************************************************
+
+using System;
+using System.Web;
+
+namespace Infrastructure.Cache
+{
+ public class CacheContext : ICacheContext
+ {
+ private readonly System.Web.Caching.Cache _objCache = HttpRuntime.Cache;
+ public override T Get
(string key)
+ {
+ System.Web.Caching.Cache objCache = HttpRuntime.Cache;
+ return (T) objCache[key];
+ }
+
+ public override bool Set(string key, T t, DateTime expire)
+ {
+ var obj = Get(key);
+ if (obj != null)
+ {
+ Remove(key);
+ }
+
+ _objCache.Insert(key, t, null, expire, System.Web.Caching.Cache.NoSlidingExpiration);
+ return true;
+ }
+
+ public override bool Remove(string key)
+ {
+ _objCache.Remove(key);
+ return true;
+ }
+ }
+}
diff --git a/Infrastructure/Cache/CacheObj.cs b/Infrastructure/Cache/CacheObj.cs
deleted file mode 100644
index d1d59ac3aae210579e429ac6d3ac5f76474f09b0..0000000000000000000000000000000000000000
--- a/Infrastructure/Cache/CacheObj.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-using System;
-
-namespace Helper.Cache
-{
- [Serializable]
- public class CacheObj
- {
- public string key { get; set; }
-
- public T Obj { get; set; }
-
- public DateTime InvalidTime { get; set; }
-
- public DateTime CreateTime { get; set; }
- }
-}
\ No newline at end of file
diff --git a/Infrastructure/Cache/CacheProvider.cs b/Infrastructure/Cache/CacheProvider.cs
index 667eff5dc2068202effccdad7e4a29940fe5d6fe..18c0255b754dd0aaf3d029f0394b2bc9142e9346 100644
--- a/Infrastructure/Cache/CacheProvider.cs
+++ b/Infrastructure/Cache/CacheProvider.cs
@@ -1,7 +1,7 @@
using System;
using System.Globalization;
-namespace Helper.Cache
+namespace Infrastructure.Cache
{
///
/// 缓存工厂
diff --git a/Infrastructure/Cache/EnyimMemcachedContext.cs b/Infrastructure/Cache/EnyimMemcachedContext.cs
index 24e407b756b925cb1ba2096d7d673383f104b9bf..64640dcf58292ede9bb9e286f001746df6eedee0 100644
--- a/Infrastructure/Cache/EnyimMemcachedContext.cs
+++ b/Infrastructure/Cache/EnyimMemcachedContext.cs
@@ -10,40 +10,29 @@
// ***********************************************************************
+using System;
using Enyim.Caching;
using Enyim.Caching.Memcached;
-namespace Helper.Cache
+namespace Infrastructure.Cache
{
public sealed class EnyimMemcachedContext : ICacheContext
{
- private readonly MemcachedClient _memcachedClient = new MemcachedClient("memcached");
-
- public override void Init()
- {
- }
+ private static readonly MemcachedClient _memcachedClient = new MemcachedClient();
public override T Get(string key)
{
return _memcachedClient.Get(key);
}
- public override bool Set(string key, T t)
+ public override bool Set(string key, T t, DateTime expire)
{
- return _memcachedClient.Store(StoreMode.Set, key, t);
+ return _memcachedClient.Store(StoreMode.Set, key, t, expire);
}
public override bool Remove(string key)
{
return _memcachedClient.Remove(key);
}
-
- public override void Dispose()
- {
- if (_memcachedClient != null)
- {
- _memcachedClient.Dispose();
- }
- }
}
}
\ No newline at end of file
diff --git a/Infrastructure/Cache/HttpApplicationContext.cs b/Infrastructure/Cache/HttpApplicationContext.cs
deleted file mode 100644
index 3913cf5bab8c992d3a385455e436ad09b06653de..0000000000000000000000000000000000000000
--- a/Infrastructure/Cache/HttpApplicationContext.cs
+++ /dev/null
@@ -1,65 +0,0 @@
-// ***********************************************************************
-// Assembly : Helper
-// Author : Administrator
-// Created : 09-21-2016
-//
-// Last Modified By : Administrator
-// Last Modified On : 11-09-2016
-// Contact :
-// File: HttpApplicationContext.cs
-// ***********************************************************************
-
-
-using System;
-using System.Web;
-
-namespace Helper.Cache
-{
- ///
- /// 基于HttpApplication的存储
- /// 李玉宝新增于2016-11-09 9:30:51
- ///
- public sealed class HttpApplicationContext : ICacheContext
- {
-
- public override void Init()
- {
- }
-
- public override T Get(string key)
- {
- return (T) HttpContext.Current.Application[key];
- }
-
- public override bool Set(string key, T t)
- {
- try
- {
- HttpContext.Current.Application[key] = t;
- return true;
- }
- catch (Exception)
- {
- return false;
- }
- }
-
- public override bool Remove(string key)
- {
- try
- {
- HttpContext.Current.Application[key] = null;
- return true;
- }
- catch (Exception)
- {
- return false;
- }
- }
-
- public override void Dispose()
- {
-
- }
- }
-}
\ No newline at end of file
diff --git a/Infrastructure/Cache/ICacheContext.cs b/Infrastructure/Cache/ICacheContext.cs
index a087c618c85d041f86a0f0adae010bff70d694de..cbb3718bad5e4575ffc98698935935979148de33 100644
--- a/Infrastructure/Cache/ICacheContext.cs
+++ b/Infrastructure/Cache/ICacheContext.cs
@@ -1,24 +1,19 @@
using System;
-namespace Helper.Cache
+namespace Infrastructure.Cache
{
///
/// 缓存接口
///
- public abstract class ICacheContext : IDisposable
+ public abstract class ICacheContext
{
- ///
- /// 初始化缓存组件
- ///
- public abstract void Init();
-
///
/// 获取缓存项
///
/// 缓存对象类型
/// 键
/// 缓存对象
- public abstract T Get(string key) where T : class;
+ public abstract T Get(string key) ;
///
/// 设置缓存项
@@ -27,7 +22,7 @@ namespace Helper.Cache
/// 键
/// 缓存对象
/// true成功,false失败
- public abstract bool Set(string key, T t) where T : class;
+ public abstract bool Set(string key, T t, DateTime expire);
///
/// 移除一个缓存项
@@ -36,9 +31,5 @@ namespace Helper.Cache
/// true成功,false失败
public abstract bool Remove(string key);
- ///
- /// 释放缓存组件
- ///
- public abstract void Dispose();
}
}
\ No newline at end of file
diff --git a/Infrastructure/Cache/ObjCacheProvider.cs b/Infrastructure/Cache/ObjCacheProvider.cs
index 84c52d1cb80a4b79fba218e6e790bcdc9ebcaf02..127158fc6d9dc26f4ae4e2c04659676d93b95498 100644
--- a/Infrastructure/Cache/ObjCacheProvider.cs
+++ b/Infrastructure/Cache/ObjCacheProvider.cs
@@ -1,39 +1,34 @@
// ***********************************************************************
-// Assembly : OpenAuth.WebApi
-// Author : yubaolee
-// Created : 07-11-2016
+// Assembly : Helper
+// Author : Administrator
+// Created : 12-21-2016
//
-// Last Modified By : yubaolee
-// Last Modified On : 07-11-2016
+// Last Modified By : Administrator
+// Last Modified On : 12-22-2016
// Contact :
-// File: CacheObjService.cs
+// File: ObjCacheProvider.cs
// ***********************************************************************
+
using System;
-namespace Helper.Cache
+namespace Infrastructure.Cache
{
///
- /// 带超时结构的缓存
+ /// 缓存工厂实现
+ /// 这样做是方便换其他的缓存时(如memcachedContext)只换这一个地方即可
///
public class ObjCacheProvider : CacheProvider
{
public ObjCacheProvider()
{
- SetCacheInstance(new HttpApplicationContext());
+ SetCacheInstance(new CacheContext());
}
- public bool Create(string key, T val)
+ public bool Create(string key, T val, DateTime expire)
{
- var cacheobj = new CacheObj
- {
- key = key,
- InvalidTime = DateTime.Now.AddMinutes(5),
- CreateTime = DateTime.Now,
- Obj = val
- };
//设置缓存
- return CacheContext.Set(key, cacheobj);
+ return CacheContext.Set(key, val, expire);
}
///
@@ -43,18 +38,7 @@ namespace Helper.Cache
/// The key.
public T GetCache(string key)
{
- var cache = CacheContext.Get>(key);
- if (cache == null) return default(T);
-
- if (cache.InvalidTime > DateTime.Now)
- {
- return cache.Obj;
- }
-
- //移除无效Session缓存
- Remove(key);
-
- return default(T);
+ return CacheContext.Get(key);
}
public void Remove(string key)
diff --git a/Infrastructure/CommonHelper.cs b/Infrastructure/CommonHelper.cs
new file mode 100644
index 0000000000000000000000000000000000000000..e59f6a272fd3c20fd8a1753ec77961deb492ad38
--- /dev/null
+++ b/Infrastructure/CommonHelper.cs
@@ -0,0 +1,122 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Text;
+
+namespace Infrastructure
+{
+ ///
+ /// 常用公共类
+ ///
+ public class CommonHelper
+ {
+ #region Stopwatch计时器
+ ///
+ /// 计时器开始
+ ///
+ ///
+ public static Stopwatch TimerStart()
+ {
+ Stopwatch watch = new Stopwatch();
+ watch.Reset();
+ watch.Start();
+ return watch;
+ }
+ ///
+ /// 计时器结束
+ ///
+ ///
+ ///
+ public static string TimerEnd(Stopwatch watch)
+ {
+ watch.Stop();
+ double costtime = watch.ElapsedMilliseconds;
+ return costtime.ToString();
+ }
+ #endregion
+
+ #region 删除数组中的重复项
+ ///
+ /// 删除数组中的重复项
+ ///
+ ///
+ ///
+ public static string[] RemoveDup(string[] values)
+ {
+ List list = new List();
+ for (int i = 0; i < values.Length; i++)//遍历数组成员
+ {
+ if (!list.Contains(values[i]))
+ {
+ list.Add(values[i]);
+ };
+ }
+ return list.ToArray();
+ }
+ #endregion
+
+ #region 自动生成日期编号
+ ///
+ /// 自动生成编号 201008251145409865
+ ///
+ ///
+ public static string CreateNo()
+ {
+ Random random = new Random();
+ string strRandom = random.Next(1000, 10000).ToString(); //生成编号
+ string code = DateTime.Now.ToString("yyyyMMddHHmmss") + strRandom;//形如
+ return code;
+ }
+ #endregion
+
+ #region 生成0-9随机数
+ ///
+ /// 生成0-9随机数
+ ///
+ /// 生成长度
+ ///
+ public static string RndNum(int codeNum)
+ {
+ StringBuilder sb = new StringBuilder(codeNum);
+ Random rand = new Random();
+ for (int i = 1; i < codeNum + 1; i++)
+ {
+ int t = rand.Next(9);
+ sb.AppendFormat("{0}", t);
+ }
+ return sb.ToString();
+
+ }
+ #endregion
+
+ #region 删除最后一个字符之后的字符
+ ///
+ /// 删除最后结尾的一个逗号
+ ///
+ public static string DelLastComma(string str)
+ {
+ return str.Substring(0, str.LastIndexOf(","));
+ }
+ ///
+ /// 删除最后结尾的指定字符后的字符
+ ///
+ public static string DelLastChar(string str, string strchar)
+ {
+ return str.Substring(0, str.LastIndexOf(strchar));
+ }
+ ///
+ /// 删除最后结尾的长度
+ ///
+ ///
+ ///
+ ///
+ public static string DelLastLength(string str, int Length)
+ {
+ if (string.IsNullOrEmpty(str))
+ return "";
+ str = str.Substring(0, str.Length - Length);
+ return str;
+ }
+ #endregion
+ }
+}
diff --git a/Infrastructure/GenericHelpers.cs b/Infrastructure/GenericHelpers.cs
index 43182db4403a5536aef7968c0e84f6132464f13a..284ff92f36c395c3205fad34bd2a67863fe1e61d 100644
--- a/Infrastructure/GenericHelpers.cs
+++ b/Infrastructure/GenericHelpers.cs
@@ -29,7 +29,12 @@ namespace Infrastructure
Func parentIdSelector,
K rootId = default(K))
{
- foreach (var c in collection.Where(c => parentIdSelector(c).Equals(rootId)))
+ foreach (var c in collection.Where(u =>
+ {
+ var selector = parentIdSelector(u);
+ return (rootId == null && selector == null)
+ || (rootId != null &&rootId.Equals(selector));
+ }))
{
yield return new TreeItem
{
@@ -38,5 +43,33 @@ namespace Infrastructure
};
}
}
+ ///
+ /// 把数组转为逗号连接的字符串
+ ///
+ ///
+ ///
+ ///
+ public static string ArrayToString(dynamic data, string Str)
+ {
+ string resStr = Str;
+ foreach (var item in data)
+ {
+ if (resStr != "")
+ {
+ resStr += ",";
+ }
+
+ if (item is string)
+ {
+ resStr += item;
+ }
+ else
+ {
+ resStr += item.Value;
+
+ }
+ }
+ return resStr;
+ }
}
}
\ No newline at end of file
diff --git a/Infrastructure/Infrastructure.csproj b/Infrastructure/Infrastructure.csproj
index e63e35dadfb12b3ecbac146c480fdff6d66d0b96..bb9c618b550187cbc3b5ebb496cd36b7457eea21 100644
--- a/Infrastructure/Infrastructure.csproj
+++ b/Infrastructure/Infrastructure.csproj
@@ -80,12 +80,12 @@
-
+
-
+
@@ -93,9 +93,11 @@
+
+
@@ -110,18 +112,18 @@
-
-
\ No newline at end of file
diff --git a/Infrastructure/Json.cs b/Infrastructure/Json.cs
new file mode 100644
index 0000000000000000000000000000000000000000..f30ccaf0c0ea4b645192f2c535a3bc8369ef0af7
--- /dev/null
+++ b/Infrastructure/Json.cs
@@ -0,0 +1,45 @@
+using System.Collections.Generic;
+using System.Data;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Converters;
+using Newtonsoft.Json.Linq;
+
+namespace Infrastructure
+{
+ ///
+ /// Json操作
+ ///
+ public static class Json
+ {
+ public static object ToJson(this string Json)
+ {
+ return Json == null ? null : JsonConvert.DeserializeObject(Json);
+ }
+ public static string ToJson(this object obj)
+ {
+ var timeConverter = new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" };
+ return JsonConvert.SerializeObject(obj, timeConverter);
+ }
+ public static string ToJson(this object obj, string datetimeformats)
+ {
+ var timeConverter = new IsoDateTimeConverter { DateTimeFormat = datetimeformats };
+ return JsonConvert.SerializeObject(obj, timeConverter);
+ }
+ public static T ToObject(this string Json)
+ {
+ return Json == null ? default(T) : JsonConvert.DeserializeObject(Json);
+ }
+ public static List ToList(this string Json)
+ {
+ return Json == null ? null : JsonConvert.DeserializeObject>(Json);
+ }
+ public static DataTable ToTable(this string Json)
+ {
+ return Json == null ? null : JsonConvert.DeserializeObject(Json);
+ }
+ public static JObject ToJObject(this string Json)
+ {
+ return Json == null ? JObject.Parse("{}") : JObject.Parse(Json.Replace(" ", ""));
+ }
+ }
+}
diff --git a/Infrastructure/Md5.cs b/Infrastructure/Md5.cs
new file mode 100644
index 0000000000000000000000000000000000000000..2589bdca44b417e2674f525d1a7978642a89958c
--- /dev/null
+++ b/Infrastructure/Md5.cs
@@ -0,0 +1,31 @@
+using System;
+using System.Security.Cryptography;
+using System.Text;
+
+namespace Infrastructure
+{
+ public class Md5
+ {
+ public static string Encrypt(string str)
+ {
+
+ string pwd = String.Empty;
+
+ MD5 md5 = MD5.Create();
+
+ // 编码UTF8/Unicode
+ byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(str));
+
+ // 转换成字符串
+ for (int i = 0; i < s.Length; i++)
+ {
+ //格式后的字符是小写的字母
+ //如果使用大写(X)则格式后的字符是大写字符
+ pwd = pwd + s[i].ToString("X");
+
+ }
+
+ return pwd;
+ }
+ }
+}
diff --git a/Infrastructure/Response.cs b/Infrastructure/Response.cs
index fb627d8c448b76c784329caf013057e01fd6ba2e..aa62d021a1bc9f59861a5dbdd690bd7b288d1edc 100644
--- a/Infrastructure/Response.cs
+++ b/Infrastructure/Response.cs
@@ -2,8 +2,33 @@
{
public class Response
{
- public bool Status = true;
- public string Message = "操作成功";
- public dynamic Result;
+ ///
+ /// 操作消息【当Status不为 200时,显示详细的错误信息】
+ ///
+ public string Message { get; set; }
+
+ ///
+ /// 操作状态码,200为正常
+ ///
+ public int Code { get; set; }
+
+ public Response()
+ {
+ Code = 200;
+ Message = "操作成功";
+ }
+ }
+
+
+ ///
+ /// WEBAPI通用返回泛型基类
+ ///
+ ///
+ public class Response : Response
+ {
+ ///
+ /// 回传的结果
+ ///
+ public T Result { get; set; }
}
}
diff --git a/OpenAuth.Mvc/Content/plugins/datatables/extensions/Responsive/Readme.md b/Infrastructure/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
similarity index 100%
rename from OpenAuth.Mvc/Content/plugins/datatables/extensions/Responsive/Readme.md
rename to Infrastructure/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
diff --git a/OpenAuth.Mvc/Content/plugins/ckeditor/LICENSE.md b/LICENSE
similarity index 35%
rename from OpenAuth.Mvc/Content/plugins/ckeditor/LICENSE.md
rename to LICENSE
index cf70e61e62fc327f2111f3192625d07370a96174..712acfe8bb67052aa3472a48367a31f497a5cb2a 100644
--- a/OpenAuth.Mvc/Content/plugins/ckeditor/LICENSE.md
+++ b/LICENSE
@@ -1,1264 +1,502 @@
-Software License Agreement
-==========================
-
-CKEditor - The text editor for Internet - http://ckeditor.com
-Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
-
-Licensed under the terms of any of the following licenses at your
-choice:
-
- - GNU General Public License Version 2 or later (the "GPL")
- http://www.gnu.org/licenses/gpl.html
- (See Appendix A)
-
- - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- http://www.gnu.org/licenses/lgpl.html
- (See Appendix B)
-
- - Mozilla Public License Version 1.1 or later (the "MPL")
- http://www.mozilla.org/MPL/MPL-1.1.html
- (See Appendix C)
-
-You are not required to, but if you want to explicitly declare the
-license you have chosen to be bound to when using, reproducing,
-modifying and distributing this software, just include a text file
-titled "legal.txt" in your version of this software, indicating your
-license choice. In any case, your choice will not restrict any
-recipient of your version of this software to use, reproduce, modify
-and distribute this software under any of the above licenses.
-
-Sources of Intellectual Property Included in CKEditor
------------------------------------------------------
-
-Where not otherwise indicated, all CKEditor content is authored by
-CKSource engineers and consists of CKSource-owned intellectual
-property. In some specific instances, CKEditor will incorporate work
-done by developers outside of CKSource with their express permission.
-
-Trademarks
-----------
-
-CKEditor is a trademark of CKSource - Frederico Knabben. All other brand
-and product names are trademarks, registered trademarks or service
-marks of their respective holders.
-
----
-
-Appendix A: The GPL License
----------------------------
-
-GNU GENERAL PUBLIC LICENSE
-Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software-to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
-GNU GENERAL PUBLIC LICENSE
-TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-END OF TERMS AND CONDITIONS
-
-
-Appendix B: The LGPL License
-----------------------------
-
-GNU LESSER GENERAL PUBLIC LICENSE
-Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL. It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
-Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software-to make sure the software is free for all its users.
-
- This license, the Lesser General Public License, applies to some
-specially designated software packages-typically libraries-of the
-Free Software Foundation and other authors who decide to use it. You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
- When we speak of free software, we are referring to freedom of use,
-not price. Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
- To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights. These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
- For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you. You must make sure that they, too, receive or can get the source
-code. If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it. And you must show them these terms so they know their rights.
-
- We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
- To protect each distributor, we want to make it very clear that
-there is no warranty for the free library. Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
- Finally, software patents pose a constant threat to the existence of
-any free program. We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder. Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
- Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License. This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License. We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
- When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library. The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom. The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
- We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License. It also provides other free software developers Less
-of an advantage over competing non-free programs. These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries. However, the Lesser license provides advantages in certain
-special circumstances.
-
- For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard. To achieve this, non-free programs must be
-allowed to use the library. A more frequent case is that a free
-library does the same job as widely used non-free libraries. In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
- In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software. For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
- Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
- The precise terms and conditions for copying, distribution and
-modification follow. Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library". The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
-GNU LESSER GENERAL PUBLIC LICENSE
-TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
- A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
- The "Library", below, refers to any such software library or work
-which has been distributed under these terms. A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language. (Hereinafter, translation is
-included without limitation in the term "modification".)
-
- "Source code" for a work means the preferred form of the work for
-making modifications to it. For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
- Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it). Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
- 1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
- You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
- 2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) The modified work must itself be a software library.
-
- b) You must cause the files modified to carry prominent notices
- stating that you changed the files and the date of any change.
-
- c) You must cause the whole of the work to be licensed at no
- charge to all third parties under the terms of this License.
-
- d) If a facility in the modified Library refers to a function or a
- table of data to be supplied by an application program that uses
- the facility, other than as an argument passed when the facility
- is invoked, then you must make a good faith effort to ensure that,
- in the event an application does not supply such function or
- table, the facility still operates, and performs whatever part of
- its purpose remains meaningful.
-
- (For example, a function in a library to compute square roots has
- a purpose that is entirely well-defined independent of the
- application. Therefore, Subsection 2d requires that any
- application-supplied function or table used by this function must
- be optional: if the application does not supply it, the square
- root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library. To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License. (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.) Do not make any other change in
-these notices.
-
- Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
- This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
- 4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
- If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library". Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
- However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library". The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
- When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library. The
-threshold for this to be true is not precisely defined by law.
-
- If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work. (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
- Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
- 6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
- You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License. You must supply a copy of this License. If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License. Also, you must do one
-of these things:
-
- a) Accompany the work with the complete corresponding
- machine-readable source code for the Library including whatever
- changes were used in the work (which must be distributed under
- Sections 1 and 2 above); and, if the work is an executable linked
- with the Library, with the complete machine-readable "work that
- uses the Library", as object code and/or source code, so that the
- user can modify the Library and then relink to produce a modified
- executable containing the modified Library. (It is understood
- that the user who changes the contents of definitions files in the
- Library will not necessarily be able to recompile the application
- to use the modified definitions.)
-
- b) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (1) uses at run time a
- copy of the library already present on the user's computer system,
- rather than copying library functions into the executable, and (2)
- will operate properly with a modified version of the library, if
- the user installs one, as long as the modified version is
- interface-compatible with the version that the work was made with.
-
- c) Accompany the work with a written offer, valid for at
- least three years, to give the same user the materials
- specified in Subsection 6a, above, for a charge no more
- than the cost of performing this distribution.
-
- d) If distribution of the work is made by offering access to copy
- from a designated place, offer equivalent access to copy the above
- specified materials from the same place.
-
- e) Verify that the user has already received a copy of these
- materials or that you have already sent this user a copy.
-
- For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it. However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
- It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system. Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
- 7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
- a) Accompany the combined library with a copy of the same work
- based on the Library, uncombined with any other library
- facilities. This must be distributed under the terms of the
- Sections above.
-
- b) Give prominent notice with the combined library of the fact
- that part of it is a work based on the Library, and explaining
- where to find the accompanying uncombined form of the same work.
-
- 8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License. Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License. However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
- 9. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Library or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
- 10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-
- 11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all. For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded. In such case, this License incorporates the limitation as if
-written in the body of this License.
-
- 13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation. If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
- 14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission. For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this. Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-NO WARRANTY
-
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-END OF TERMS AND CONDITIONS
-
-
-Appendix C: The MPL License
----------------------------
-
-MOZILLA PUBLIC LICENSE
-Version 1.1
-
-1. Definitions.
-
- 1.0.1. "Commercial Use" means distribution or otherwise making the
- Covered Code available to a third party.
-
- 1.1. "Contributor" means each entity that creates or contributes to
- the creation of Modifications.
-
- 1.2. "Contributor Version" means the combination of the Original
- Code, prior Modifications used by a Contributor, and the Modifications
- made by that particular Contributor.
-
- 1.3. "Covered Code" means the Original Code or Modifications or the
- combination of the Original Code and Modifications, in each case
- including portions thereof.
-
- 1.4. "Electronic Distribution Mechanism" means a mechanism generally
- accepted in the software development community for the electronic
- transfer of data.
-
- 1.5. "Executable" means Covered Code in any form other than Source
- Code.
-
- 1.6. "Initial Developer" means the individual or entity identified
- as the Initial Developer in the Source Code notice required by Exhibit
- A.
-
- 1.7. "Larger Work" means a work which combines Covered Code or
- portions thereof with code not governed by the terms of this License.
-
- 1.8. "License" means this document.
-
- 1.8.1. "Licensable" means having the right to grant, to the maximum
- extent possible, whether at the time of the initial grant or
- subsequently acquired, any and all of the rights conveyed herein.
-
- 1.9. "Modifications" means any addition to or deletion from the
- substance or structure of either the Original Code or any previous
- Modifications. When Covered Code is released as a series of files, a
- Modification is:
- A. Any addition to or deletion from the contents of a file
- containing Original Code or previous Modifications.
-
- B. Any new file that contains any part of the Original Code or
- previous Modifications.
-
- 1.10. "Original Code" means Source Code of computer software code
- which is described in the Source Code notice required by Exhibit A as
- Original Code, and which, at the time of its release under this
- License is not already Covered Code governed by this License.
-
- 1.10.1. "Patent Claims" means any patent claim(s), now owned or
- hereafter acquired, including without limitation, method, process,
- and apparatus claims, in any patent Licensable by grantor.
-
- 1.11. "Source Code" means the preferred form of the Covered Code for
- making modifications to it, including all modules it contains, plus
- any associated interface definition files, scripts used to control
- compilation and installation of an Executable, or source code
- differential comparisons against either the Original Code or another
- well known, available Covered Code of the Contributor's choice. The
- Source Code can be in a compressed or archival form, provided the
- appropriate decompression or de-archiving software is widely available
- for no charge.
-
- 1.12. "You" (or "Your") means an individual or a legal entity
- exercising rights under, and complying with all of the terms of, this
- License or a future version of this License issued under Section 6.1.
- For legal entities, "You" includes any entity which controls, is
- controlled by, or is under common control with You. For purposes of
- this definition, "control" means (a) the power, direct or indirect,
- to cause the direction or management of such entity, whether by
- contract or otherwise, or (b) ownership of more than fifty percent
- (50%) of the outstanding shares or beneficial ownership of such
- entity.
-
-2. Source Code License.
-
- 2.1. The Initial Developer Grant.
- The Initial Developer hereby grants You a world-wide, royalty-free,
- non-exclusive license, subject to third party intellectual property
- claims:
- (a) under intellectual property rights (other than patent or
- trademark) Licensable by Initial Developer to use, reproduce,
- modify, display, perform, sublicense and distribute the Original
- Code (or portions thereof) with or without Modifications, and/or
- as part of a Larger Work; and
-
- (b) under Patents Claims infringed by the making, using or
- selling of Original Code, to make, have made, use, practice,
- sell, and offer for sale, and/or otherwise dispose of the
- Original Code (or portions thereof).
-
- (c) the licenses granted in this Section 2.1(a) and (b) are
- effective on the date Initial Developer first distributes
- Original Code under the terms of this License.
-
- (d) Notwithstanding Section 2.1(b) above, no patent license is
- granted: 1) for code that You delete from the Original Code; 2)
- separate from the Original Code; or 3) for infringements caused
- by: i) the modification of the Original Code or ii) the
- combination of the Original Code with other software or devices.
-
- 2.2. Contributor Grant.
- Subject to third party intellectual property claims, each Contributor
- hereby grants You a world-wide, royalty-free, non-exclusive license
-
- (a) under intellectual property rights (other than patent or
- trademark) Licensable by Contributor, to use, reproduce, modify,
- display, perform, sublicense and distribute the Modifications
- created by such Contributor (or portions thereof) either on an
- unmodified basis, with other Modifications, as Covered Code
- and/or as part of a Larger Work; and
-
- (b) under Patent Claims infringed by the making, using, or
- selling of Modifications made by that Contributor either alone
- and/or in combination with its Contributor Version (or portions
- of such combination), to make, use, sell, offer for sale, have
- made, and/or otherwise dispose of: 1) Modifications made by that
- Contributor (or portions thereof); and 2) the combination of
- Modifications made by that Contributor with its Contributor
- Version (or portions of such combination).
-
- (c) the licenses granted in Sections 2.2(a) and 2.2(b) are
- effective on the date Contributor first makes Commercial Use of
- the Covered Code.
-
- (d) Notwithstanding Section 2.2(b) above, no patent license is
- granted: 1) for any code that Contributor has deleted from the
- Contributor Version; 2) separate from the Contributor Version;
- 3) for infringements caused by: i) third party modifications of
- Contributor Version or ii) the combination of Modifications made
- by that Contributor with other software (except as part of the
- Contributor Version) or other devices; or 4) under Patent Claims
- infringed by Covered Code in the absence of Modifications made by
- that Contributor.
-
-3. Distribution Obligations.
-
- 3.1. Application of License.
- The Modifications which You create or to which You contribute are
- governed by the terms of this License, including without limitation
- Section 2.2. The Source Code version of Covered Code may be
- distributed only under the terms of this License or a future version
- of this License released under Section 6.1, and You must include a
- copy of this License with every copy of the Source Code You
- distribute. You may not offer or impose any terms on any Source Code
- version that alters or restricts the applicable version of this
- License or the recipients' rights hereunder. However, You may include
- an additional document offering the additional rights described in
- Section 3.5.
-
- 3.2. Availability of Source Code.
- Any Modification which You create or to which You contribute must be
- made available in Source Code form under the terms of this License
- either on the same media as an Executable version or via an accepted
- Electronic Distribution Mechanism to anyone to whom you made an
- Executable version available; and if made available via Electronic
- Distribution Mechanism, must remain available for at least twelve (12)
- months after the date it initially became available, or at least six
- (6) months after a subsequent version of that particular Modification
- has been made available to such recipients. You are responsible for
- ensuring that the Source Code version remains available even if the
- Electronic Distribution Mechanism is maintained by a third party.
-
- 3.3. Description of Modifications.
- You must cause all Covered Code to which You contribute to contain a
- file documenting the changes You made to create that Covered Code and
- the date of any change. You must include a prominent statement that
- the Modification is derived, directly or indirectly, from Original
- Code provided by the Initial Developer and including the name of the
- Initial Developer in (a) the Source Code, and (b) in any notice in an
- Executable version or related documentation in which You describe the
- origin or ownership of the Covered Code.
-
- 3.4. Intellectual Property Matters
- (a) Third Party Claims.
- If Contributor has knowledge that a license under a third party's
- intellectual property rights is required to exercise the rights
- granted by such Contributor under Sections 2.1 or 2.2,
- Contributor must include a text file with the Source Code
- distribution titled "LEGAL" which describes the claim and the
- party making the claim in sufficient detail that a recipient will
- know whom to contact. If Contributor obtains such knowledge after
- the Modification is made available as described in Section 3.2,
- Contributor shall promptly modify the LEGAL file in all copies
- Contributor makes available thereafter and shall take other steps
- (such as notifying appropriate mailing lists or newsgroups)
- reasonably calculated to inform those who received the Covered
- Code that new knowledge has been obtained.
-
- (b) Contributor APIs.
- If Contributor's Modifications include an application programming
- interface and Contributor has knowledge of patent licenses which
- are reasonably necessary to implement that API, Contributor must
- also include this information in the LEGAL file.
-
- (c) Representations.
- Contributor represents that, except as disclosed pursuant to
- Section 3.4(a) above, Contributor believes that Contributor's
- Modifications are Contributor's original creation(s) and/or
- Contributor has sufficient rights to grant the rights conveyed by
- this License.
-
- 3.5. Required Notices.
- You must duplicate the notice in Exhibit A in each file of the Source
- Code. If it is not possible to put such notice in a particular Source
- Code file due to its structure, then You must include such notice in a
- location (such as a relevant directory) where a user would be likely
- to look for such a notice. If You created one or more Modification(s)
- You may add your name as a Contributor to the notice described in
- Exhibit A. You must also duplicate this License in any documentation
- for the Source Code where You describe recipients' rights or ownership
- rights relating to Covered Code. You may choose to offer, and to
- charge a fee for, warranty, support, indemnity or liability
- obligations to one or more recipients of Covered Code. However, You
- may do so only on Your own behalf, and not on behalf of the Initial
- Developer or any Contributor. You must make it absolutely clear than
- any such warranty, support, indemnity or liability obligation is
- offered by You alone, and You hereby agree to indemnify the Initial
- Developer and every Contributor for any liability incurred by the
- Initial Developer or such Contributor as a result of warranty,
- support, indemnity or liability terms You offer.
-
- 3.6. Distribution of Executable Versions.
- You may distribute Covered Code in Executable form only if the
- requirements of Section 3.1-3.5 have been met for that Covered Code,
- and if You include a notice stating that the Source Code version of
- the Covered Code is available under the terms of this License,
- including a description of how and where You have fulfilled the
- obligations of Section 3.2. The notice must be conspicuously included
- in any notice in an Executable version, related documentation or
- collateral in which You describe recipients' rights relating to the
- Covered Code. You may distribute the Executable version of Covered
- Code or ownership rights under a license of Your choice, which may
- contain terms different from this License, provided that You are in
- compliance with the terms of this License and that the license for the
- Executable version does not attempt to limit or alter the recipient's
- rights in the Source Code version from the rights set forth in this
- License. If You distribute the Executable version under a different
- license You must make it absolutely clear that any terms which differ
- from this License are offered by You alone, not by the Initial
- Developer or any Contributor. You hereby agree to indemnify the
- Initial Developer and every Contributor for any liability incurred by
- the Initial Developer or such Contributor as a result of any such
- terms You offer.
-
- 3.7. Larger Works.
- You may create a Larger Work by combining Covered Code with other code
- not governed by the terms of this License and distribute the Larger
- Work as a single product. In such a case, You must make sure the
- requirements of this License are fulfilled for the Covered Code.
-
-4. Inability to Comply Due to Statute or Regulation.
-
- If it is impossible for You to comply with any of the terms of this
- License with respect to some or all of the Covered Code due to
- statute, judicial order, or regulation then You must: (a) comply with
- the terms of this License to the maximum extent possible; and (b)
- describe the limitations and the code they affect. Such description
- must be included in the LEGAL file described in Section 3.4 and must
- be included with all distributions of the Source Code. Except to the
- extent prohibited by statute or regulation, such description must be
- sufficiently detailed for a recipient of ordinary skill to be able to
- understand it.
-
-5. Application of this License.
-
- This License applies to code to which the Initial Developer has
- attached the notice in Exhibit A and to related Covered Code.
-
-6. Versions of the License.
-
- 6.1. New Versions.
- Netscape Communications Corporation ("Netscape") may publish revised
- and/or new versions of the License from time to time. Each version
- will be given a distinguishing version number.
-
- 6.2. Effect of New Versions.
- Once Covered Code has been published under a particular version of the
- License, You may always continue to use it under the terms of that
- version. You may also choose to use such Covered Code under the terms
- of any subsequent version of the License published by Netscape. No one
- other than Netscape has the right to modify the terms applicable to
- Covered Code created under this License.
-
- 6.3. Derivative Works.
- If You create or use a modified version of this License (which you may
- only do in order to apply it to code which is not already Covered Code
- governed by this License), You must (a) rename Your license so that
- the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape",
- "MPL", "NPL" or any confusingly similar phrase do not appear in your
- license (except to note that your license differs from this License)
- and (b) otherwise make it clear that Your version of the license
- contains terms which differ from the Mozilla Public License and
- Netscape Public License. (Filling in the name of the Initial
- Developer, Original Code or Contributor in the notice described in
- Exhibit A shall not of themselves be deemed to be modifications of
- this License.)
-
-7. DISCLAIMER OF WARRANTY.
-
- COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
- WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
- DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
- THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
- IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
- YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
- COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
- OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
- ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
-
-8. TERMINATION.
-
- 8.1. This License and the rights granted hereunder will terminate
- automatically if You fail to comply with terms herein and fail to cure
- such breach within 30 days of becoming aware of the breach. All
- sublicenses to the Covered Code which are properly granted shall
- survive any termination of this License. Provisions which, by their
- nature, must remain in effect beyond the termination of this License
- shall survive.
-
- 8.2. If You initiate litigation by asserting a patent infringement
- claim (excluding declatory judgment actions) against Initial Developer
- or a Contributor (the Initial Developer or Contributor against whom
- You file such action is referred to as "Participant") alleging that:
-
- (a) such Participant's Contributor Version directly or indirectly
- infringes any patent, then any and all rights granted by such
- Participant to You under Sections 2.1 and/or 2.2 of this License
- shall, upon 60 days notice from Participant terminate prospectively,
- unless if within 60 days after receipt of notice You either: (i)
- agree in writing to pay Participant a mutually agreeable reasonable
- royalty for Your past and future use of Modifications made by such
- Participant, or (ii) withdraw Your litigation claim with respect to
- the Contributor Version against such Participant. If within 60 days
- of notice, a reasonable royalty and payment arrangement are not
- mutually agreed upon in writing by the parties or the litigation claim
- is not withdrawn, the rights granted by Participant to You under
- Sections 2.1 and/or 2.2 automatically terminate at the expiration of
- the 60 day notice period specified above.
-
- (b) any software, hardware, or device, other than such Participant's
- Contributor Version, directly or indirectly infringes any patent, then
- any rights granted to You by such Participant under Sections 2.1(b)
- and 2.2(b) are revoked effective as of the date You first made, used,
- sold, distributed, or had made, Modifications made by that
- Participant.
-
- 8.3. If You assert a patent infringement claim against Participant
- alleging that such Participant's Contributor Version directly or
- indirectly infringes any patent where such claim is resolved (such as
- by license or settlement) prior to the initiation of patent
- infringement litigation, then the reasonable value of the licenses
- granted by such Participant under Sections 2.1 or 2.2 shall be taken
- into account in determining the amount or value of any payment or
- license.
-
- 8.4. In the event of termination under Sections 8.1 or 8.2 above,
- all end user license agreements (excluding distributors and resellers)
- which have been validly granted by You or any distributor hereunder
- prior to termination shall survive termination.
-
-9. LIMITATION OF LIABILITY.
-
- UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
- (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
- DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
- OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR
- ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
- CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,
- WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
- COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
- INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
- LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
- RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
- PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
- EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO
- THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
-
-10. U.S. GOVERNMENT END USERS.
-
- The Covered Code is a "commercial item," as that term is defined in
- 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
- software" and "commercial computer software documentation," as such
- terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
- C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
- all U.S. Government End Users acquire Covered Code with only those
- rights set forth herein.
-
-11. MISCELLANEOUS.
-
- This License represents the complete agreement concerning subject
- matter hereof. If any provision of this License is held to be
- unenforceable, such provision shall be reformed only to the extent
- necessary to make it enforceable. This License shall be governed by
- California law provisions (except to the extent applicable law, if
- any, provides otherwise), excluding its conflict-of-law provisions.
- With respect to disputes in which at least one party is a citizen of,
- or an entity chartered or registered to do business in the United
- States of America, any litigation relating to this License shall be
- subject to the jurisdiction of the Federal Courts of the Northern
- District of California, with venue lying in Santa Clara County,
- California, with the losing party responsible for costs, including
- without limitation, court costs and reasonable attorneys' fees and
- expenses. The application of the United Nations Convention on
- Contracts for the International Sale of Goods is expressly excluded.
- Any law or regulation which provides that the language of a contract
- shall be construed against the drafter shall not apply to this
- License.
-
-12. RESPONSIBILITY FOR CLAIMS.
-
- As between Initial Developer and the Contributors, each party is
- responsible for claims and damages arising, directly or indirectly,
- out of its utilization of rights under this License and You agree to
- work with Initial Developer and Contributors to distribute such
- responsibility on an equitable basis. Nothing herein is intended or
- shall be deemed to constitute any admission of liability.
-
-13. MULTIPLE-LICENSED CODE.
-
- Initial Developer may designate portions of the Covered Code as
- "Multiple-Licensed". "Multiple-Licensed" means that the Initial
- Developer permits you to utilize portions of the Covered Code under
- Your choice of the NPL or the alternative licenses, if any, specified
- by the Initial Developer in the file described in Exhibit A.
-
-EXHIBIT A -Mozilla Public License.
-
- ``The contents of this file are subject to the Mozilla Public License
- Version 1.1 (the "License"); you may not use this file except in
- compliance with the License. You may obtain a copy of the License at
- http://www.mozilla.org/MPL/
-
- Software distributed under the License is distributed on an "AS IS"
- basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
- License for the specific language governing rights and limitations
- under the License.
-
- The Original Code is ______________________________________.
-
- The Initial Developer of the Original Code is ________________________.
- Portions created by ______________________ are Copyright (C) ______
- _______________________. All Rights Reserved.
-
- Contributor(s): ______________________________________.
-
- Alternatively, the contents of this file may be used under the terms
- of the _____ license (the "[___] License"), in which case the
- provisions of [______] License are applicable instead of those
- above. If you wish to allow use of your version of this file only
- under the terms of the [____] License and not to allow others to use
- your version of this file under the MPL, indicate your decision by
- deleting the provisions above and replace them with the notice and
- other provisions required by the [___] License. If you do not delete
- the provisions above, a recipient may use your version of this file
- under either the MPL or the [___] License."
-
- [NOTE: The text of this Exhibit A may differ slightly from the text of
- the notices in the Source Code files of the Original Code. You should
- use the text of this Exhibit A rather than the text found in the
- Original Code Source Code for Your Modifications.]
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+(This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.)
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+ When we speak of free software, we are referring to freedom of use,
+not price. Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+ To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard. To achieve this, non-free programs must be
+allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library. It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+ {description}
+ Copyright (C) 2018 李玉宝
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+ {signature of Ty Coon}, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
diff --git a/OpenAuth.App/AppManager.cs b/OpenAuth.App/AppManager.cs
new file mode 100644
index 0000000000000000000000000000000000000000..8e272e9d4db621d658d5e7ea89bbb6a8d6429f04
--- /dev/null
+++ b/OpenAuth.App/AppManager.cs
@@ -0,0 +1,38 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using OpenAuth.App.Request;
+using OpenAuth.App.Response;
+using OpenAuth.Repository.Domain;
+
+namespace OpenAuth.App
+{
+ ///
+ /// 分类管理
+ ///
+ public class AppManager : BaseApp
+ {
+ public void Add(Application Application)
+ {
+ if (string.IsNullOrEmpty(Application.Id))
+ {
+ Application.Id = Guid.NewGuid().ToString();
+ }
+ Repository.Add(Application);
+ }
+
+ public void Update(Application Application)
+ {
+ Repository.Update(u =>u.Id,Application);
+ }
+
+
+ public List GetList(QueryAppListReq request)
+ {
+ var applications = UnitWork.Find(null) ;
+
+ return applications.ToList();
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/OpenAuth.App/ApplyTransitionHistoryApp.cs b/OpenAuth.App/ApplyTransitionHistoryApp.cs
deleted file mode 100644
index 0136bd761d1a4e564bde30cbeb84dae81993d9d2..0000000000000000000000000000000000000000
--- a/OpenAuth.App/ApplyTransitionHistoryApp.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-using System;
-using OpenAuth.Domain;
-using OpenAuth.Domain.Interface;
-
-namespace OpenAuth.App
-{
- public class ApplyTransitionHistoryApp
- {
- private IRepository _repository;
-
- public ApplyTransitionHistoryApp(IRepository repository)
- {
- _repository = repository;
- }
-
- public ApplyTransitionHistory Get(Guid processId, string currentstate, string nextState)
- {
- return _repository.FindSingle(h => h.ApplyId == processId && !h.TransitionTime.HasValue &&
- h.InitialState == currentstate && h.DestinationState == nextState);
- }
-
- public void Add(ApplyTransitionHistory historyItem)
- {
- _repository.Add(historyItem);
- }
-
- public void Update(ApplyTransitionHistory historyItem)
- {
- _repository.Update(u =>u.Id, historyItem);
- }
-
- public void DeleteByProcess(Guid processId)
- {
- _repository.Delete(dth =>
- dth.ApplyId == processId && !dth.TransitionTime.HasValue);
- }
- }
-}
\ No newline at end of file
diff --git a/OpenAuth.Domain/Service/AuthoriseService.cs b/OpenAuth.App/AuthoriseService.cs
similarity index 58%
rename from OpenAuth.Domain/Service/AuthoriseService.cs
rename to OpenAuth.App/AuthoriseService.cs
index 49975d078d07680bdf2a71c651b8ce9d3af69603..64918228bae94b545592d13ab4eb01fd94f044fe 100644
--- a/OpenAuth.Domain/Service/AuthoriseService.cs
+++ b/OpenAuth.App/AuthoriseService.cs
@@ -1,136 +1,131 @@
-// ***********************************************************************
-// Assembly : OpenAuth.Domain
-// Author : yubaolee
-// Created : 04-21-2016
-//
-// Last Modified By : yubaolee
-// Last Modified On : 04-21-2016
-// Contact : Microsoft
-// File: AuthenService.cs
-// ***********************************************************************
-
-using OpenAuth.Domain.Interface;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-
-namespace OpenAuth.Domain.Service
-{
- ///
- /// 领域服务
- /// 用户授权服务
- ///
- public class AuthoriseService
- {
- protected IUnitWork _unitWork;
- protected User _user;
-
- private List _userRoleIds; //用户角色GUID
-
- public AuthoriseService(IUnitWork unitWork)
- {
- _unitWork = unitWork;
- }
-
- public List Modules
- {
- get { return GetModulesQuery().ToList(); }
- }
-
- public List Roles
- {
- get { return GetRolesQuery().ToList(); }
- }
-
- public List ModuleElements
- {
- get { return GetModuleElementsQuery().ToList(); }
- }
-
- public List Resources
- {
- get { return GetResourcesQuery().ToList(); }
- }
-
- public List Orgs
- {
- get { return GetOrgsQuery().ToList(); }
- }
-
- public User User
- {
- get { return _user; }
- set
- {
- _user = value;
- _userRoleIds = _unitWork.Find(u => u.FirstId == _user.Id && u.Key == "UserRole").Select(u => u.SecondId).ToList();
- }
- }
-
- public void Check(string userName, string password)
- {
- var _user = _unitWork.FindSingle(u => u.Account == userName);
- if (_user == null)
- {
- throw new Exception("用户帐号不存在");
- }
- _user.CheckPassword(password);
- }
-
- ///
- /// 用户可访问的机构
- ///
- /// IQueryable<Org>.
- public virtual IQueryable GetOrgsQuery()
- {
- var orgids = _unitWork.Find(
- u =>
- (u.FirstId == _user.Id && u.Key == "UserOrg") ||
- (u.Key == "RoleOrg" && _userRoleIds.Contains(u.FirstId))).Select(u => u.SecondId);
- return _unitWork.Find(u => orgids.Contains(u.Id));
- }
-
- ///
- /// 获取用户可访问的资源
- ///
- /// IQueryable<Resource>.
- public virtual IQueryable GetResourcesQuery()
- {
- var resourceIds = _unitWork.Find(
- u =>
- (u.FirstId == _user.Id && u.Key == "UserResource") ||
- (u.Key == "RoleResource" && _userRoleIds.Contains(u.FirstId))).Select(u => u.SecondId);
- return _unitWork.Find(u => resourceIds.Contains(u.Id));
- }
-
- ///
- /// 模块菜单权限
- ///
- public virtual IQueryable GetModuleElementsQuery()
- {
- var elementIds = _unitWork.Find(
- u =>
- (u.FirstId == _user.Id && u.Key == "UserElement") ||
- (u.Key == "RoleElement" && _userRoleIds.Contains(u.FirstId))).Select(u => u.SecondId);
- return _unitWork.Find(u => elementIds.Contains(u.Id));
- }
-
- ///
- /// 得出最终用户拥有的模块
- ///
- public virtual IQueryable GetModulesQuery()
- {
- var moduleIds = _unitWork.Find(
- u =>
- (u.FirstId == _user.Id && u.Key == "UserModule") ||
- (u.Key == "RoleModule" && _userRoleIds.Contains(u.FirstId))).Select(u => u.SecondId);
- return _unitWork.Find(u => moduleIds.Contains(u.Id)).OrderBy(u => u.SortNo);
- }
-
- //用户角色
- public virtual IQueryable GetRolesQuery()
- {
- return _unitWork.Find(u => _userRoleIds.Contains(u.Id));
- }
- }
+// ***********************************************************************
+// Assembly : OpenAuth.Domain
+// Author : yubaolee
+// Created : 04-21-2016
+//
+// Last Modified By : yubaolee
+// Last Modified On : 04-21-2016
+// Contact : Microsoft
+// File: AuthenService.cs
+// ***********************************************************************
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using OpenAuth.Repository.Domain;
+
+namespace OpenAuth.App
+{
+ ///
+ /// 领域服务
+ /// 用户授权服务
+ ///
+ public class AuthoriseService :BaseApp
+ {
+
+ protected User _user;
+
+ private List _userRoleIds; //用户角色GUID
+
+ public List Modules
+ {
+ get { return GetModulesQuery().ToList(); }
+ }
+
+ public List Roles
+ {
+ get { return GetRolesQuery().ToList(); }
+ }
+
+ public List ModuleElements
+ {
+ get { return GetModuleElementsQuery().ToList(); }
+ }
+
+ public List Resources
+ {
+ get { return GetResourcesQuery().ToList(); }
+ }
+
+ public List Orgs
+ {
+ get { return GetOrgsQuery().ToList(); }
+ }
+
+ public User User
+ {
+ get { return _user; }
+ set
+ {
+ _user = value;
+ _userRoleIds = UnitWork.Find(u => u.FirstId == _user.Id && u.Key == Define.USERROLE).Select(u => u.SecondId).ToList();
+ }
+ }
+
+ public void Check(string userName, string password)
+ {
+ var _user = Repository.FindSingle(u => u.Account == userName);
+ if (_user == null)
+ {
+ throw new Exception("用户帐号不存在");
+ }
+ _user.CheckPassword(password);
+ }
+
+ ///
+ /// 用户可访问的机构
+ ///
+ /// IQueryable<Org>.
+ public virtual IQueryable GetOrgsQuery()
+ {
+ var orgids = UnitWork.Find(
+ u =>
+ (u.FirstId == _user.Id && u.Key == Define.USERORG) ||
+ (u.Key == Define.ROLEORG && _userRoleIds.Contains(u.FirstId))).Select(u => u.SecondId);
+ return UnitWork.Find(u => orgids.Contains(u.Id));
+ }
+
+ ///
+ /// 获取用户可访问的资源
+ ///
+ /// IQueryable<Resource>.
+ public virtual IQueryable GetResourcesQuery()
+ {
+ var resourceIds = UnitWork.Find(
+ u =>
+ (u.FirstId == _user.Id && u.Key == Define.USERRESOURCE) ||
+ (u.Key == Define.ROLERESOURCE && _userRoleIds.Contains(u.FirstId))).Select(u => u.SecondId);
+ return UnitWork.Find(u => resourceIds.Contains(u.Id));
+ }
+
+ ///
+ /// 模块菜单权限
+ ///
+ public virtual IQueryable GetModuleElementsQuery()
+ {
+ var elementIds = UnitWork.Find(
+ u =>
+ (u.FirstId == _user.Id && u.Key == Define.USERELEMENT) ||
+ (u.Key == Define.ROLEELEMENT && _userRoleIds.Contains(u.FirstId))).Select(u => u.SecondId);
+ return UnitWork.Find(u => elementIds.Contains(u.Id));
+ }
+
+ ///
+ /// 得出最终用户拥有的模块
+ ///
+ public virtual IQueryable GetModulesQuery()
+ {
+ var moduleIds = UnitWork.Find(
+ u =>
+ (u.FirstId == _user.Id && u.Key == Define.USERMODULE) ||
+ (u.Key == Define.ROLEMODULE && _userRoleIds.Contains(u.FirstId))).Select(u => u.SecondId);
+ return UnitWork.Find(u => moduleIds.Contains(u.Id)).OrderBy(u => u.SortNo);
+ }
+
+ //用户角色
+ public virtual IQueryable GetRolesQuery()
+ {
+ return UnitWork.Find(u => _userRoleIds.Contains(u.Id));
+ }
+ }
}
\ No newline at end of file
diff --git a/OpenAuth.App/AuthorizeApp.cs b/OpenAuth.App/AuthorizeApp.cs
index 67e862c838970cc99797f9c6add32d280a64eeb2..75a5f3dc794529f6462ac69c58a677743c0b1a79 100644
--- a/OpenAuth.App/AuthorizeApp.cs
+++ b/OpenAuth.App/AuthorizeApp.cs
@@ -1,44 +1,55 @@
-using System.Linq;
-using Infrastructure;
-using OpenAuth.App.ViewModel;
-using OpenAuth.Domain.Service;
-
-namespace OpenAuth.App
-{
- ///
- /// 加载用户所有可访问的资源/机构/模块
- /// 李玉宝新增于2016-07-19 10:53:30
- ///
- public class AuthorizeApp
- {
- private readonly AuthoriseFactory _factory;
-
- public AuthorizeApp(AuthoriseFactory service)
- {
- _factory = service;
- }
-
- public UserWithAccessedCtrls GetAccessedControls(string username)
- {
- var service = _factory.Create(username);
- var user = new UserWithAccessedCtrls
- {
- User = service.User,
- Orgs = service.Orgs,
- Modules = service.Modules.MapToList(),
- Resources = service.Resources,
- Roles = service.Roles
- };
-
- foreach (var moduleView in user.Modules)
- {
- moduleView.Elements =
- service.ModuleElements.Where(u => u.ModuleId == moduleView.Id).OrderBy(u => u.Sort).ToList();
- }
-
- user.ModuleWithChildren = user.Modules.GenerateTree(c => c.Id, c => c.ParentId);
-
- return user;
- }
- }
+using System.Linq;
+using Infrastructure;
+using OpenAuth.App.Response;
+using OpenAuth.Repository.Domain;
+using OpenAuth.Repository.Interface;
+
+namespace OpenAuth.App
+{
+ ///
+ /// 加载用户所有可访问的资源/机构/模块
+ /// 李玉宝新增于2016-07-19 10:53:30
+ ///
+ public class AuthorizeApp
+ {
+ public SystemAuthService AuthService { get; set; }
+ public AuthoriseService AuthoriseService { get; set; }
+
+ public IUnitWork _unitWork { get; set; }
+ public AuthoriseService Create(string loginuser)
+ {
+ if (loginuser == "System")
+ {
+ return AuthService;
+ }
+ else
+ {
+ AuthoriseService.User = _unitWork.FindSingle(u => u.Account == loginuser);
+ return AuthoriseService;
+ }
+ }
+
+ public UserWithAccessedCtrls GetAccessedControls(string username)
+ {
+ var service = Create(username);
+ var user = new UserWithAccessedCtrls
+ {
+ User = service.User,
+ Orgs = service.Orgs,
+ Modules = service.Modules.OrderBy(u => u.SortNo).ToList().MapToList(),
+ Resources = service.Resources,
+ Roles = service.Roles
+ };
+
+ var ModuleElements=service.ModuleElements;
+
+ foreach (var moduleView in user.Modules)
+ {
+ moduleView.Elements =
+ ModuleElements.Where(u => u.ModuleId == moduleView.Id).OrderBy(u => u.Sort).ToList();
+ }
+
+ return user;
+ }
+ }
}
\ No newline at end of file
diff --git a/OpenAuth.Mvc/AutofacExt.cs b/OpenAuth.App/AutofacExt.cs
similarity index 61%
rename from OpenAuth.Mvc/AutofacExt.cs
rename to OpenAuth.App/AutofacExt.cs
index 5818281b2742bed75f69ab8dbd2d94104acd9245..d8f1f141af81fe77b314a94cc136cfc6d14793c0 100644
--- a/OpenAuth.Mvc/AutofacExt.cs
+++ b/OpenAuth.App/AutofacExt.cs
@@ -12,17 +12,17 @@
// IOC扩展
// ***********************************************************************
-using Autofac;
-using Autofac.Configuration;
-using Autofac.Integration.Mvc;
-using OpenAuth.App;
using System.Reflection;
+using System.Web.Http;
using System.Web.Mvc;
-using OpenAuth.Domain.Interface;
-using OpenAuth.Domain.Service;
+using Autofac;
+using Autofac.Integration.Mvc;
+using Autofac.Integration.WebApi;
using OpenAuth.Repository;
+using OpenAuth.Repository.Interface;
+using IContainer = Autofac.IContainer;
-namespace OpenAuth.Mvc
+namespace OpenAuth.App
{
public static class AutofacExt
{
@@ -33,38 +33,38 @@ namespace OpenAuth.Mvc
var builder = new ContainerBuilder();
//注册数据库基础操作和工作单元
- builder.RegisterGeneric(typeof(BaseRepository<>)).As(typeof(IRepository<>));
- builder.RegisterType(typeof (UnitWork)).As(typeof (IUnitWork));
-
- //注册WebConfig中的配置
- builder.RegisterModule(new ConfigurationSettingsReader("autofac"));
+ builder.RegisterGeneric(typeof(BaseRepository<>)).As(typeof(IRepository<>)).PropertiesAutowired();
+ builder.RegisterType(typeof(UnitWork)).As(typeof(IUnitWork)).PropertiesAutowired();
//注册app层
- builder.RegisterAssemblyTypes(Assembly.GetAssembly(typeof (UserManagerApp)));
+ builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly()).PropertiesAutowired();
- //注册领域服务
- builder.RegisterAssemblyTypes(Assembly.GetAssembly(typeof(AuthoriseService)))
- .Where(u =>u.Namespace== "OpenAuth.Domain.Service");
+ // 注册controller,使用属性注入
+ builder.RegisterControllers(Assembly.GetCallingAssembly()).PropertiesAutowired();
- // Register your MVC controllers.
- builder.RegisterControllers(typeof(MvcApplication).Assembly);
+ //注册所有的ApiControllers
+ builder.RegisterApiControllers(Assembly.GetCallingAssembly()).PropertiesAutowired();
- // OPTIONAL: Register model binders that require DI.
- builder.RegisterModelBinders(Assembly.GetExecutingAssembly());
+ builder.RegisterModelBinders(Assembly.GetCallingAssembly());
builder.RegisterModelBinderProvider();
// OPTIONAL: Register web abstractions like HttpContextBase.
- builder.RegisterModule();
+ //builder.RegisterModule