From 0613b72254c09cfebcda6e018ad0353c80f047d6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=90=9A=E8=87=B4=E8=BF=9C?=
Date: Fri, 31 Jul 2020 15:58:47 +0800
Subject: [PATCH] feat: prepare to release (#352)
* feat(ManagerAPI): added ASF header
* feat(FE): aded ASF Header
* feat(FE): added ASF header
* fix(FE): update PluginDrawer
* feat: remove some images
* feat: added LICENSE
* feat: update Version
* feat: added NOTICE & CODE_OF_CONDUCT
* feat: added initial CHANGELOG
* feat: rename CODE_OF_CONDUCT
* feat: revert version
* feat: update LICENSE
* feat: update License
---
.eslintrc.js | 16 ++
.prettierrc.js | 16 ++
.stylelintrc.js | 16 ++
CHANGELOG.md | 36 +++
CODE_OF_CONDUCT.md | 105 +++++++++
Dockerfile | 17 ++
LICENSE | 218 ++++++++++++++++++
NOTICE | 5 +
README-dashboard.md | 18 ++
README.md | 18 ++
api/docker-compose.yml | 16 ++
api/route/ssl_test.go | 16 ++
api/route/upstream.go | 16 ++
api/service/upstream.go | 17 ++
compose/README.md | 19 ++
compose/apisix_conf/config.yaml | 16 ++
compose/docker-compose.yml | 16 ++
compose/gen-config-yaml.sh | 17 ++
.../provisioning/dashboards/all.yaml | 16 ++
.../provisioning/datasources/all.yaml | 16 ++
compose/manager_conf/build.sh | 17 ++
compose/prometheus_conf/prometheus.yml | 16 ++
config/config.ts | 16 ++
config/defaultSettings.ts | 16 ++
config/proxy.ts | 21 +-
config/routes.ts | 16 ++
jest.config.js | 16 ++
licenses/LICENSE-ant-design-pro.txt | 21 ++
mock/notices.ts | 114 ++-------
mock/route.ts | 18 +-
mock/user.ts | 168 ++------------
netlify.toml | 16 ++
package.json | 6 +-
public/home_bg.png | Bin 203330 -> 0 bytes
public/icons/icon-128x128.png | Bin 1329 -> 0 bytes
public/icons/icon-192x192.png | Bin 1856 -> 0 bytes
public/icons/icon-512x512.png | Bin 5082 -> 0 bytes
public/pro_icon.svg | 1 -
src/access.ts | 16 ++
src/app.tsx | 16 ++
src/components/ActionBar/ActionBar.tsx | 16 ++
src/components/ActionBar/index.ts | 16 ++
src/components/ActionBar/locales/en-US.ts | 16 ++
src/components/ActionBar/locales/zh-CN.ts | 16 ++
src/components/Footer/index.tsx | 16 ++
src/components/HeaderDropdown/index.less | 23 ++
src/components/HeaderDropdown/index.tsx | 23 ++
src/components/NoticeIcon/NoticeList.less | 23 ++
src/components/NoticeIcon/NoticeList.tsx | 25 +-
src/components/NoticeIcon/index.less | 23 ++
src/components/NoticeIcon/index.tsx | 25 +-
src/components/PageLoading/index.tsx | 23 ++
src/components/PanelSection/index.tsx | 16 ++
src/components/PluginForm/PluginForm.tsx | 16 ++
src/components/PluginForm/README.md | 18 ++
src/components/PluginForm/data.ts | 16 ++
src/components/PluginForm/index.ts | 16 ++
src/components/PluginForm/locales/en-US.ts | 16 ++
src/components/PluginForm/locales/zh-CN.ts | 16 ++
src/components/PluginForm/service.ts | 16 ++
src/components/PluginForm/transformer.ts | 16 ++
src/components/PluginForm/typing.d.ts | 16 ++
src/components/PluginModal/index.tsx | 16 ++
src/components/PluginPage/PluginCard.tsx | 16 ++
src/components/PluginPage/PluginDrawer.tsx | 17 +-
src/components/PluginPage/PluginPage.tsx | 16 ++
src/components/PluginPage/data.ts | 16 ++
src/components/PluginPage/index.ts | 16 ++
src/components/PluginPage/locales/en-US.ts | 16 ++
src/components/PluginPage/locales/zh-CN.ts | 16 ++
src/components/PluginPage/service.ts | 16 ++
src/components/PluginPage/typing.d.ts | 16 ++
.../RightContent/AvatarDropdown.tsx | 23 ++
src/components/RightContent/index.less | 23 ++
src/components/RightContent/index.tsx | 23 ++
src/constants.ts | 16 ++
src/e2e/__mocks__/antd-pro-merge-less.js | 23 ++
src/e2e/baseLayout.e2e.js | 23 ++
src/global.less | 16 ++
src/global.tsx | 16 ++
src/helpers.tsx | 16 ++
src/iconfont.ts | 16 ++
src/locales/en-US.ts | 16 ++
src/locales/en-US/component.ts | 16 ++
src/locales/en-US/globalHeader.ts | 16 ++
src/locales/en-US/menu.ts | 16 ++
src/locales/en-US/pwa.ts | 16 ++
src/locales/en-US/setting.ts | 16 ++
src/locales/en-US/settingDrawer.ts | 16 ++
src/locales/zh-CN.ts | 16 ++
src/locales/zh-CN/component.ts | 16 ++
src/locales/zh-CN/globalHeader.ts | 16 ++
src/locales/zh-CN/menu.ts | 16 ++
src/locales/zh-CN/pwa.ts | 16 ++
src/locales/zh-CN/setting.ts | 16 ++
src/locales/zh-CN/settingDrawer.ts | 16 ++
src/pages/404.tsx | 23 ++
src/pages/Consumer/Create.tsx | 16 ++
src/pages/Consumer/List.tsx | 16 ++
src/pages/Consumer/components/Preview.tsx | 16 ++
src/pages/Consumer/components/Step1.tsx | 16 ++
src/pages/Consumer/index.ts | 16 ++
src/pages/Consumer/locales/en-US.ts | 16 ++
src/pages/Consumer/locales/zh-CN.ts | 16 ++
src/pages/Consumer/service.ts | 16 ++
src/pages/Consumer/typing.d.ts | 16 ++
src/pages/Metrics/Metrics.tsx | 16 ++
src/pages/Metrics/index.ts | 16 ++
src/pages/Metrics/locales/en-US.ts | 16 ++
src/pages/Metrics/locales/zh-CN.ts | 16 ++
src/pages/Metrics/service.ts | 16 ++
src/pages/Route/Create.less | 16 ++
src/pages/Route/Create.tsx | 16 ++
src/pages/Route/List.tsx | 16 ++
.../components/CreateStep4/CreateStep4.tsx | 16 ++
.../Route/components/CreateStep4/index.ts | 16 ++
.../components/ResultView/ResultView.tsx | 16 ++
.../Route/components/ResultView/index.ts | 16 ++
.../components/Step1/MatchingRulesView.tsx | 16 ++
src/pages/Route/components/Step1/MetaView.tsx | 16 ++
.../components/Step1/RequestConfigView.tsx | 16 ++
src/pages/Route/components/Step1/index.tsx | 16 ++
.../Step2/HttpHeaderRewriteView.tsx | 16 ++
.../components/Step2/RequestRewriteView.tsx | 16 ++
src/pages/Route/components/Step2/index.tsx | 16 ++
src/pages/Route/constants.ts | 16 ++
src/pages/Route/index.ts | 16 ++
src/pages/Route/locales/en-US.ts | 16 ++
src/pages/Route/locales/zh-CN.ts | 16 ++
src/pages/Route/service.ts | 16 ++
src/pages/Route/transform.ts | 16 ++
src/pages/Route/typing.d.ts | 16 ++
src/pages/SSL/Create.less | 16 ++
src/pages/SSL/Create.tsx | 16 ++
src/pages/SSL/List.tsx | 16 ++
.../SSL/components/CertificateForm/index.tsx | 16 ++
.../components/CertificateUploader/index.tsx | 16 ++
src/pages/SSL/components/Step1/index.tsx | 16 ++
src/pages/SSL/components/Step2/index.tsx | 16 ++
src/pages/SSL/locales/en-US.ts | 16 ++
src/pages/SSL/locales/zh-CN.ts | 16 ++
src/pages/SSL/service.ts | 16 ++
src/pages/SSL/style.less | 16 ++
src/pages/SSL/typing.d.ts | 16 ++
src/pages/Setting/Setting.tsx | 16 ++
src/pages/Setting/index.ts | 16 ++
src/pages/Setting/locales/en-US.ts | 16 ++
src/pages/Setting/locales/zh-CN.ts | 16 ++
src/pages/Setting/service.ts | 16 ++
src/pages/Setting/style.less | 16 ++
src/pages/Setting/typingd.d.ts | 16 ++
src/pages/Upstream/Create.tsx | 16 ++
src/pages/Upstream/List.tsx | 16 ++
src/pages/Upstream/components/Preview.tsx | 16 ++
src/pages/Upstream/components/Step1.tsx | 16 ++
src/pages/Upstream/constants.ts | 16 ++
src/pages/Upstream/index.ts | 16 ++
src/pages/Upstream/locales/en-US.ts | 16 ++
src/pages/Upstream/locales/zh-CN.ts | 16 ++
src/pages/Upstream/service.ts | 16 ++
src/pages/Upstream/transform.ts | 16 ++
src/pages/Upstream/typing.d.ts | 16 ++
src/pages/document.ejs | 25 +-
src/service-worker.js | 23 ++
src/services/API.d.ts | 16 ++
src/services/login.ts | 16 ++
src/services/user.ts | 16 ++
src/transforms/global.ts | 16 ++
src/typings.d.ts | 16 ++
tests/PuppeteerEnvironment.js | 16 ++
tests/beforeTest.js | 16 ++
tests/getBrowser.js | 16 ++
tests/run-tests.js | 16 ++
173 files changed, 3102 insertions(+), 264 deletions(-)
create mode 100644 CHANGELOG.md
create mode 100644 CODE_OF_CONDUCT.md
create mode 100644 LICENSE
create mode 100644 NOTICE
create mode 100644 licenses/LICENSE-ant-design-pro.txt
delete mode 100644 public/home_bg.png
delete mode 100644 public/icons/icon-128x128.png
delete mode 100644 public/icons/icon-192x192.png
delete mode 100644 public/icons/icon-512x512.png
delete mode 100644 public/pro_icon.svg
diff --git a/.eslintrc.js b/.eslintrc.js
index b882c20e87..f8549393c8 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -1,3 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (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.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
module.exports = {
extends: [require.resolve('@umijs/fabric/dist/eslint')],
globals: {
diff --git a/.prettierrc.js b/.prettierrc.js
index 7b597d7891..64d2db1003 100644
--- a/.prettierrc.js
+++ b/.prettierrc.js
@@ -1,3 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (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.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
const fabric = require('@umijs/fabric');
module.exports = {
diff --git a/.stylelintrc.js b/.stylelintrc.js
index c2030787de..22ebf981d1 100644
--- a/.stylelintrc.js
+++ b/.stylelintrc.js
@@ -1,3 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (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.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
const fabric = require('@umijs/fabric');
module.exports = {
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000000..d72bc3b781
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,36 @@
+
+
+# Table of Contents
+
+- [1.0.0](#100)
+
+## 1.0.0
+
+This release is mainly to build some basic panels and resolve License issue.
+
+### Core
+
+- Dashboard initial. [#1](https://github.com/apache/incubator-apisix-dashboard/pull/1)
+- Resolve licence issues.
+- Remove unused files from the Dashboard boilerplate.
+- Support panel to list, create and modify Route, Consumer, Service, SSL and Upstream.
+- Support custom configuration for Plugin dialog.
+
+[Back to TOC](#table-of-contents)
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
new file mode 100644
index 0000000000..573c48b8c9
--- /dev/null
+++ b/CODE_OF_CONDUCT.md
@@ -0,0 +1,105 @@
+
+
+_The following is copied for your convenience from . If there's a discrepancy between the two, let us know or submit a PR to fix it._
+
+# Code of Conduct
+
+## Introduction
+
+This code of conduct applies to all spaces managed by the Apache Software Foundation, including IRC, all public and private mailing lists, issue trackers, wikis, blogs, Twitter, and any other communication channel used by our communities. A code of conduct which is specific to in-person events (ie., conferences) is codified in the published ASF anti-harassment policy.
+
+We expect this code of conduct to be honored by everyone who participates in the Apache community formally or informally, or claims any affiliation with the Foundation, in any Foundation-related activities and especially when representing the ASF, in any role.
+
+This code **is not exhaustive or complete**. It serves to distill our common understanding of a collaborative, shared environment and goals. We expect it to be followed in spirit as much as in the letter, so that it can enrich all of us and the technical communities in which we participate.
+
+## Specific Guidelines
+
+We strive to:
+
+1. **Be open.** We invite anyone to participate in our community. We preferably use public methods of communication for project-related messages, unless discussing something sensitive. This applies to messages for help or project-related support, too; not only is a public support request much more likely to result in an answer to a question, it also makes sure that any inadvertent mistakes made by people answering will be more easily detected and corrected.
+
+2. **Be `empathetic`, welcoming, friendly, and patient.** We work together to resolve conflict, assume good intentions, and do our best to act in an empathetic fashion. We may all experience some frustration from time to time, but we do not allow frustration to turn into a personal attack. A community where people feel uncomfortable or threatened is not a productive one. We should be respectful when dealing with other community members as well as with people outside our community.
+
+3. **Be collaborative.** Our work will be used by other people, and in turn we will depend on the work of others. When we make something for the benefit of the project, we are willing to explain to others how it works, so that they can build on the work to make it even better. Any decision we make will affect users and colleagues, and we take those consequences seriously when making decisions.
+
+4. **Be inquisitive.** Nobody knows everything! Asking questions early avoids many problems later, so questions are encouraged, though they may be directed to the appropriate forum. Those who are asked should be responsive and helpful, within the context of our shared goal of improving Apache project code.
+
+5. **Be careful in the words that we choose.** Whether we are participating as professionals or volunteers, we value professionalism in all interactions, and take responsibility for our own speech. Be kind to others. Do not insult or put down other participants. Harassment and other exclusionary behaviour are not acceptable. This includes, but is not limited to:
+
+ - Violent threats or language directed against another person.
+ - Sexist, racist, or otherwise discriminatory jokes and language.
+ - Posting sexually explicit or violent material.
+ - Posting (or threatening to post) other people's personally identifying information ("doxing").
+ - Sharing private content, such as emails sent privately or non-publicly, or unlogged forums such as IRC channel history.
+ - Personal insults, especially those using racist or sexist terms.
+ - Unwelcome sexual attention.
+ - Excessive or unnecessary profanity.
+ - Repeated harassment of others. In general, if someone asks you to stop, then stop.
+ - Advocating for, or encouraging, any of the above behaviour.
+
+6. **Be concise.** Keep in mind that what you write once will be read by hundreds of persons. Writing a short email means people can understand the conversation as efficiently as possible. Short emails should always strive to be empathetic, welcoming, friendly and patient. When a long explanation is necessary, consider adding a summary.
+
+ Try to bring new ideas to a conversation so that each mail adds something unique to the thread, keeping in mind that the rest of the thread still contains the other messages with arguments that have already been made.
+
+ Try to stay on topic, especially in discussions that are already fairly large.
+
+7. **Step down considerately.** Members of every project come and go. When somebody leaves or disengages from the project they should tell people they are leaving and take the proper steps to ensure that others can pick up where they left off. In doing so, they should remain respectful of those who continue to participate in the project and should not misrepresent the project's goals or achievements. Likewise, community members should respect any individual's choice to leave the project.
+
+## Diversity Statement
+
+Apache welcomes and encourages participation by everyone. We are committed to being a community that everyone feels good about joining. Although we may not be able to satisfy everyone, we will always work to treat everyone well.
+
+No matter how you identify yourself or how others perceive you: we welcome you. Though no list can hope to be comprehensive, we explicitly honour diversity in: age, culture, ethnicity, genotype, gender identity or expression, language, national origin, neurotype, phenotype, political beliefs, profession, race, religion, sexual orientation, socioeconomic status, subculture and technical ability.
+
+Though we welcome people fluent in all languages, Apache development is conducted in English.
+
+Standards for behaviour in the Apache community are detailed in the Code of Conduct above. We expect participants in our community to meet these standards in all their interactions and to help others to do so as well.
+
+## Reporting Guidelines
+
+While this code of conduct should be adhered to by participants, we recognize that sometimes people may have a bad day, or be unaware of some of the guidelines in this code of conduct. When that happens, you may reply to them and point out this code of conduct. Such messages may be in public or in private, whatever is most appropriate. However, regardless of whether the message is public or not, it should still adhere to the relevant parts of this code of conduct; in particular, it should not be abusive or disrespectful.
+
+If you believe someone is violating this code of conduct, you may reply to them and point out this code of conduct. Such messages may be in public or in private, whatever is most appropriate. Assume good faith; it is more likely that participants are unaware of their bad behaviour than that they intentionally try to degrade the quality of the discussion. Should there be difficulties in dealing with the situation, you may report your compliance issues in confidence to either:
+
+- President of the Apache Software Foundation: Sam Ruby (rubys at intertwingly dot net)
+
+or one of our volunteers:
+
+- [Mark Thomas](http://home.apache.org/~markt/coc.html)
+- [Joan Touzet](http://home.apache.org/~wohali/)
+- [Sharan Foga](http://home.apache.org/~sharan/coc.html)
+
+If the violation is in documentation or code, for example inappropriate pronoun usage or word choice within official documentation, we ask that people report these privately to the project in question at private@project.apache.org, and, if they have sufficient ability within the project, to resolve or remove the concerning material, being mindful of the perspective of the person originally reporting the issue.
+
+## End Notes
+
+This Code defines **empathy** as "a vicarious participation in the emotions, ideas, or opinions of others; the ability to imagine oneself in the condition or predicament of another." **Empathetic** is the adjectival form of empathy.
+
+This statement thanks the following, on which it draws for content and inspiration:
+
+- [CouchDB Project Code of conduct](http://couchdb.apache.org/conduct.html)
+- [Fedora Project Code of Conduct](http://fedoraproject.org/code-of-conduct)
+- [Speak Up! Code of Conduct](http://speakup.io/coc.html)
+- [Django Code of Conduct](https://www.djangoproject.com/conduct/)
+- [Debian Code of Conduct](http://www.debian.org/vote/2014/vote_002)
+- [Twitter Open Source Code of Conduct](https://github.com/twitter/code-of-conduct/blob/master/code-of-conduct.md)
+- [Mozilla Code of Conduct/Draft](https://wiki.mozilla.org/Code_of_Conduct/Draft#Conflicts_of_Interest)
+- [Python Diversity Appendix](https://www.python.org/community/diversity/)
+- [Python Mentors Home Page](http://pythonmentors.com/)
diff --git a/Dockerfile b/Dockerfile
index c3a6f6c1e2..90d4fde5ea 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,3 +1,20 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (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.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
# phase-build
FROM node:12 as builder
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000000..a216e9c267
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,218 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+=======================================================================
+Apache APISIX Dashboard Subcomponents:
+
+The Apache APISIX Dashboard project contains subcomponents with separate copyright
+notices and license terms. Your use of the source code for the these
+subcomponents is subject to the terms and conditions of the following
+licenses.
+
+========================================================================
+MIT licenses
+========================================================================
+
+The following components are provided under the MIT License. See project link for details.
+The text of each license is also included at licenses/LICENSE-[project].txt.
+
+ files from ant-design-pro: https://github.com/ant-design/ant-design-pro MIT
\ No newline at end of file
diff --git a/NOTICE b/NOTICE
new file mode 100644
index 0000000000..ba0415537e
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,5 @@
+Apache APISIX
+Copyright 2019-2020 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
\ No newline at end of file
diff --git a/README-dashboard.md b/README-dashboard.md
index 74f87484ed..b1c8c13814 100644
--- a/README-dashboard.md
+++ b/README-dashboard.md
@@ -1,3 +1,21 @@
+
# READMD for Dashboard
This project is initialized with [Ant Design Pro](https://pro.ant.design). Follow is the quick guide for how to use.
diff --git a/README.md b/README.md
index 97b8f0b43e..3a80faece9 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,21 @@
+
# Apache APISIX Dashboard
Dashboard for [Apache APISIX](https://github.com/apache/incubator-apisix-dashboard)
diff --git a/api/docker-compose.yml b/api/docker-compose.yml
index 79760d7ae4..4f838116d0 100644
--- a/api/docker-compose.yml
+++ b/api/docker-compose.yml
@@ -1,3 +1,19 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (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.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
version: "3"
services:
diff --git a/api/route/ssl_test.go b/api/route/ssl_test.go
index a4a2308de7..3952b6bd55 100644
--- a/api/route/ssl_test.go
+++ b/api/route/ssl_test.go
@@ -1,3 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (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.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package route
import (
diff --git a/api/route/upstream.go b/api/route/upstream.go
index ac319a2d4a..0bff0cbc92 100644
--- a/api/route/upstream.go
+++ b/api/route/upstream.go
@@ -1,3 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (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.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package route
import (
diff --git a/api/service/upstream.go b/api/service/upstream.go
index e63edeed96..5c41979220 100644
--- a/api/service/upstream.go
+++ b/api/service/upstream.go
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (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.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
package service
import (
diff --git a/compose/README.md b/compose/README.md
index 73a117731a..66e83a3577 100644
--- a/compose/README.md
+++ b/compose/README.md
@@ -1,3 +1,22 @@
+
+
## Deploy
```sh
diff --git a/compose/apisix_conf/config.yaml b/compose/apisix_conf/config.yaml
index bbdc65b95d..014cfc4e4b 100644
--- a/compose/apisix_conf/config.yaml
+++ b/compose/apisix_conf/config.yaml
@@ -1,3 +1,19 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (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.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
apisix:
node_listen: 9080 # APISIX listening port
enable_heartbeat: true
diff --git a/compose/docker-compose.yml b/compose/docker-compose.yml
index c36495bd7c..9e0707e668 100644
--- a/compose/docker-compose.yml
+++ b/compose/docker-compose.yml
@@ -1,3 +1,19 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (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.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
version: "3"
services:
diff --git a/compose/gen-config-yaml.sh b/compose/gen-config-yaml.sh
index 794b63be2b..d9d07d6f08 100644
--- a/compose/gen-config-yaml.sh
+++ b/compose/gen-config-yaml.sh
@@ -1,3 +1,20 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (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.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
#!/bin/sh
export etcd_url='http://192.17.5.10:2379'
diff --git a/compose/grafana_conf/provisioning/dashboards/all.yaml b/compose/grafana_conf/provisioning/dashboards/all.yaml
index c58cbc61f6..26a9599efe 100644
--- a/compose/grafana_conf/provisioning/dashboards/all.yaml
+++ b/compose/grafana_conf/provisioning/dashboards/all.yaml
@@ -1,3 +1,19 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (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.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
apiVersion: 1
providers:
diff --git a/compose/grafana_conf/provisioning/datasources/all.yaml b/compose/grafana_conf/provisioning/datasources/all.yaml
index 4245eac0e4..3812d4f7b1 100644
--- a/compose/grafana_conf/provisioning/datasources/all.yaml
+++ b/compose/grafana_conf/provisioning/datasources/all.yaml
@@ -1,3 +1,19 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (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.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
datasources:
- access: 'proxy'
editable: true
diff --git a/compose/manager_conf/build.sh b/compose/manager_conf/build.sh
index efedb1c9fa..03e0db3946 100755
--- a/compose/manager_conf/build.sh
+++ b/compose/manager_conf/build.sh
@@ -1,3 +1,20 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (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.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
#!/bin/sh
pwd=`pwd`
diff --git a/compose/prometheus_conf/prometheus.yml b/compose/prometheus_conf/prometheus.yml
index 0804c81527..73f08e9fe1 100644
--- a/compose/prometheus_conf/prometheus.yml
+++ b/compose/prometheus_conf/prometheus.yml
@@ -1,3 +1,19 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (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.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
global:
scrape_interval: 15s # By default, scrape targets every 15 seconds.
diff --git a/config/config.ts b/config/config.ts
index b378773981..e826c76ff8 100644
--- a/config/config.ts
+++ b/config/config.ts
@@ -1,3 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (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.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
import { defineConfig } from 'umi';
import defaultSettings from './defaultSettings';
diff --git a/config/defaultSettings.ts b/config/defaultSettings.ts
index 0245a762f1..472afa2455 100644
--- a/config/defaultSettings.ts
+++ b/config/defaultSettings.ts
@@ -1,3 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (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.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
import { Settings as LayoutSettings } from '@ant-design/pro-layout';
export default {
diff --git a/config/proxy.ts b/config/proxy.ts
index e189b0f91b..7de0befe1c 100644
--- a/config/proxy.ts
+++ b/config/proxy.ts
@@ -1,9 +1,18 @@
-/**
- * 在生产环境 代理是无法生效的,所以这里没有生产环境的配置
- * The agent cannot take effect in the production environment
- * so there is no configuration of the production environment
- * For details, please see
- * https://pro.ant.design/docs/deploy
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (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.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
export default {
dev: {
diff --git a/config/routes.ts b/config/routes.ts
index 14bb77bbbc..9851a957e2 100644
--- a/config/routes.ts
+++ b/config/routes.ts
@@ -1,3 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (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.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
const routes = [
{
path: '/',
diff --git a/jest.config.js b/jest.config.js
index 4c4eeaf7c8..56d4294ace 100644
--- a/jest.config.js
+++ b/jest.config.js
@@ -1,3 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (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.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
module.exports = {
testURL: 'http://localhost:8000',
testEnvironment: './tests/PuppeteerEnvironment',
diff --git a/licenses/LICENSE-ant-design-pro.txt b/licenses/LICENSE-ant-design-pro.txt
new file mode 100644
index 0000000000..b68fd1b633
--- /dev/null
+++ b/licenses/LICENSE-ant-design-pro.txt
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2019 Alipay.inc
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
\ No newline at end of file
diff --git a/mock/notices.ts b/mock/notices.ts
index b9e3bf2948..23522efb86 100644
--- a/mock/notices.ts
+++ b/mock/notices.ts
@@ -1,103 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (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.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
import { Request, Response } from 'express';
const getNotices = (req: Request, res: Response) => {
- res.json([
- {
- id: '000000001',
- avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png',
- title: '你收到了 14 份新周报',
- datetime: '2017-08-09',
- type: 'notification',
- },
- {
- id: '000000002',
- avatar: 'https://gw.alipayobjects.com/zos/rmsportal/OKJXDXrmkNshAMvwtvhu.png',
- title: '你推荐的 曲妮妮 已通过第三轮面试',
- datetime: '2017-08-08',
- type: 'notification',
- },
- {
- id: '000000003',
- avatar: 'https://gw.alipayobjects.com/zos/rmsportal/kISTdvpyTAhtGxpovNWd.png',
- title: '这种模板可以区分多种通知类型',
- datetime: '2017-08-07',
- read: true,
- type: 'notification',
- },
- {
- id: '000000004',
- avatar: 'https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png',
- title: '左侧图标用于区分不同的类型',
- datetime: '2017-08-07',
- type: 'notification',
- },
- {
- id: '000000005',
- avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png',
- title: '内容不要超过两行字,超出时自动截断',
- datetime: '2017-08-07',
- type: 'notification',
- },
- {
- id: '000000006',
- avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg',
- title: '曲丽丽 评论了你',
- description: '描述信息描述信息描述信息',
- datetime: '2017-08-07',
- type: 'message',
- clickClose: true,
- },
- {
- id: '000000007',
- avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg',
- title: '朱偏右 回复了你',
- description: '这种模板用于提醒谁与你发生了互动,左侧放『谁』的头像',
- datetime: '2017-08-07',
- type: 'message',
- clickClose: true,
- },
- {
- id: '000000008',
- avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg',
- title: '标题',
- description: '这种模板用于提醒谁与你发生了互动,左侧放『谁』的头像',
- datetime: '2017-08-07',
- type: 'message',
- clickClose: true,
- },
- {
- id: '000000009',
- title: '任务名称',
- description: '任务需要在 2017-01-12 20:00 前启动',
- extra: '未开始',
- status: 'todo',
- type: 'event',
- },
- {
- id: '000000010',
- title: '第三方紧急代码变更',
- description: '冠霖提交于 2017-01-06,需在 2017-01-07 前完成代码变更任务',
- extra: '马上到期',
- status: 'urgent',
- type: 'event',
- },
- {
- id: '000000011',
- title: '信息安全考试',
- description: '指派竹尔于 2017-01-09 前完成更新并发布',
- extra: '已耗时 8 天',
- status: 'doing',
- type: 'event',
- },
- {
- id: '000000012',
- title: 'ABCD 版本发布',
- description: '冠霖提交于 2017-01-06,需在 2017-01-07 前完成代码变更任务',
- extra: '进行中',
- status: 'processing',
- type: 'event',
- },
- ]);
+ res.json([]);
};
export default {
diff --git a/mock/route.ts b/mock/route.ts
index 418d10f1ab..7cef9385a6 100644
--- a/mock/route.ts
+++ b/mock/route.ts
@@ -1,5 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (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.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
export default {
'/api/auth_routes': {
- '/form/advanced-form': { authority: ['admin', 'user'] },
+ '/form/advanced-form': { authority: ['admin'] },
},
};
diff --git a/mock/user.ts b/mock/user.ts
index 24fa3f7fcd..b1aae89d5e 100644
--- a/mock/user.ts
+++ b/mock/user.ts
@@ -1,154 +1,20 @@
-import { Request, Response } from 'express';
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (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.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
-function getFakeCaptcha(req: Request, res: Response) {
- return res.json('captcha-xxx');
-}
-// 代码中会兼容本地 service mock 以及部署站点的静态数据
export default {
- // 支持值为 Object 和 Array
- 'GET /api/currentUser': {
- name: 'Serati Ma',
- avatar: 'https://gw.alipayobjects.com/zos/antfincdn/XAosXuNZyF/BiazfanxmamNRoxxVxka.png',
- userid: '00000001',
- email: 'antdesign@alipay.com',
- signature: '海纳百川,有容乃大',
- title: '交互专家',
- group: '蚂蚁金服-某某某事业群-某某平台部-某某技术部-UED',
- tags: [
- {
- key: '0',
- label: '很有想法的',
- },
- {
- key: '1',
- label: '专注设计',
- },
- {
- key: '2',
- label: '辣~',
- },
- {
- key: '3',
- label: '大长腿',
- },
- {
- key: '4',
- label: '川妹子',
- },
- {
- key: '5',
- label: '海纳百川',
- },
- ],
- notifyCount: 12,
- unreadCount: 11,
- country: 'China',
- geographic: {
- province: {
- label: '浙江省',
- key: '330000',
- },
- city: {
- label: '杭州市',
- key: '330100',
- },
- },
- address: '西湖区工专路 77 号',
- phone: '0752-268888888',
- },
- // GET POST 可省略
- 'GET /api/users': [
- {
- key: '1',
- name: 'John Brown',
- age: 32,
- address: 'New York No. 1 Lake Park',
- },
- {
- key: '2',
- name: 'Jim Green',
- age: 42,
- address: 'London No. 1 Lake Park',
- },
- {
- key: '3',
- name: 'Joe Black',
- age: 32,
- address: 'Sidney No. 1 Lake Park',
- },
- ],
- 'POST /api/login/account': (req: Request, res: Response) => {
- const { password, userName, type } = req.body;
- if (password === 'ant.design' && userName === 'admin') {
- res.send({
- status: 'ok',
- type,
- currentAuthority: 'admin',
- });
- return;
- }
- if (password === 'ant.design' && userName === 'user') {
- res.send({
- status: 'ok',
- type,
- currentAuthority: 'user',
- });
- return;
- }
- if (type === 'mobile') {
- res.send({
- status: 'ok',
- type,
- currentAuthority: 'admin',
- });
- return;
- }
-
- res.send({
- status: 'error',
- type,
- currentAuthority: 'guest',
- });
- },
- 'POST /api/register': (req: Request, res: Response) => {
- res.send({ status: 'ok', currentAuthority: 'user' });
- },
- 'GET /api/500': (req: Request, res: Response) => {
- res.status(500).send({
- timestamp: 1513932555104,
- status: 500,
- error: 'error',
- message: 'error',
- path: '/base/category/list',
- });
- },
- 'GET /api/404': (req: Request, res: Response) => {
- res.status(404).send({
- timestamp: 1513932643431,
- status: 404,
- error: 'Not Found',
- message: 'No message available',
- path: '/base/category/list/2121212',
- });
- },
- 'GET /api/403': (req: Request, res: Response) => {
- res.status(403).send({
- timestamp: 1513932555104,
- status: 403,
- error: 'Unauthorized',
- message: 'Unauthorized',
- path: '/base/category/list',
- });
- },
- 'GET /api/401': (req: Request, res: Response) => {
- res.status(401).send({
- timestamp: 1513932555104,
- status: 401,
- error: 'Unauthorized',
- message: 'Unauthorized',
- path: '/base/category/list',
- });
- },
-
- 'GET /api/login/captcha': getFakeCaptcha,
+ 'GET /api/currentUser': {},
};
diff --git a/netlify.toml b/netlify.toml
index 5236d3b61d..cb87419ccc 100644
--- a/netlify.toml
+++ b/netlify.toml
@@ -1,3 +1,19 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (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.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
[build]
publish = "dist/"
diff --git a/package.json b/package.json
index f4a8a302c7..3ef7703780 100644
--- a/package.json
+++ b/package.json
@@ -1,8 +1,8 @@
{
"name": "apisix-dashboard",
- "version": "1.1.0",
+ "version": "1.1.1",
"private": true,
- "description": "Dashboard for APISIX",
+ "description": "Dashboard for Apache APISIX",
"scripts": {
"analyze": "cross-env ANALYZE=1 umi build",
"build": "umi build",
@@ -31,6 +31,7 @@
"test:component": "umi test ./src/components",
"tsc": "tsc"
},
+ "license": "Apache-2.0",
"husky": {
"hooks": {
"commit-msg": "node scripts/verifyCommit.js",
@@ -106,7 +107,6 @@
"prettier": "^2.0.1",
"pro-download": "1.0.1",
"puppeteer-core": "^4.0.1",
- "react-helmet-async": "1.0.6",
"stylelint": "^13.0.0"
},
"engines": {
diff --git a/public/home_bg.png b/public/home_bg.png
deleted file mode 100644
index 7c92a4bef248fd9a6cba50e72c5a641ee4cdca2f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 203330
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
hT8KQk~~$DlRp#)bTR3=28tw%pp2iC=4zC*
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