Giter VIP home page Giter VIP logo

shepher's Introduction

LOGO

Shepher is a management tool of ZooKeeper. In Xiaomi, we use it as the configuration management center. Readme 中文版

Features

  • Visualized operation of ZooKeeper node
  • Snapshot management of ZooKeeper node
  • Modified Diff and Review function of ZooKeeper node
  • Mail operation notification of ZooKeeper node
  • CAS and LDAP integration
  • Authority management, reference to Authority management instruction

Function comparison of similar products

Product Introduction Visualized operation of nodes Snapshot management Node modified Diff and Review function Node operated mail notification CAS and LDAP log Authority management Cascade delete System status monitor
Shepher ZooKeeper management
TaoKeeper ZooKeeper cluster monitor and statement
Zkdash ZooKeeper management
Disconf ZooKeeper management
XDiamond Configuration center

Screenshots

  • Home Home

  • Node view Node view

Installation

Environment requirements

  • JDK 1.8
  • Maven 3.2 +
  • MySQL 5.6

Basic configuration

  • Modify INSERT INTO user VALUES (1,'youradmin',now()); in db/init.sql, change youradmin into your administrator user name
  • According to Parameter instruction, modify parameter configuration under the directory shepher-web/src/main/resources. If you are using a CAS login, you need to modify the CAS-related configuration and set the server.login.type to CAS; If you log in with LDAP, you will need to modify the LDAP-related configuration and set server.login.type to LDAP

Development environment deployment

Development environment deployment includes local compilation deployment and Docker deployment, you can choose a deployment based on usage.

Compile

  1. Modify parameter configuration of conf/application*.properties according to Parameter instruction

  2. Local compile

    $ mvn clean package 
    $ cd shepher-packaging/target/shepher-packaging-{version}-bin
    $ ls
    bin/(all the shell scripts)
    conf/(configuration files)
    db/init.sql
    lib(required jar files)
    Dockerfile
    docker-compose.yml
    CHANGES.txt
    NOTICE.txt
    README.md
    README-zh.md
    VERSION

    Here, {version} refers to the current Shepher version.

Local deployment

  1. Import db/init.sql in to MySQL

  2. Enter install directories

    $ cd shepher-packaging/target/shepher-packaging-{version}-bin
  3. Run the script, start Shepher service

    $ sh bin/run.sh start 
  4. Visit http://localhost:8089 or self defined server.url (Reference to Parameter instruction)

Docker deployment

MySQL and ZooKeeper will be automatic integrated when Docker deployment is used, and automatically import db/init.sql into MySQL, no self installation is needed.

  1. Install Docker, take Ubuntu system for example, install docker engine and docker-compose

  2. Enter install directories

    $ cd shepher-packaging/target/shepher-packaging-{version}-bin
  3. Run the script, start Shepher service and waiting start of each container in Docker accomplish

    $ sh bin/docker-run.sh start 
  4. Visit http://localhost:8089 or self defined server.url (Reference to Parameter instruction)

Production environment deployment

The steps for production environment deployment is similar to local compiling deployment, but pay attention to the setting of data sources, CAS/LDAP and domain names. In addition, because each company's internal mail service is relatively closed, you need to implement your own CustomMailSender class, and set mail.sender=customMailSender in conf/application.properties, so that Shepher can use the mail service normally.

  1. Import db/init.sql into MySQL

  2. Create the file conf/application-online.properties, and modify the configuration according to Parameter instruction

  3. Run the command in the Shepher root directory

    $ mvn clean package
  4. Copy shepher-packaging/target/shepher-packaging-{version}-bin to the production environment, and enter the directory

    $ cd shepher-packaging/target/shepher-packaging-{version}-bin
  5. Run the command below, start Shepher

    $ sh bin/run.sh -c conf/application.properties,conf/application-online.properties start 
  6. Visit self defined server.url (Reference to Parameter instruction)

Contributors

Long Xie (@xielong), Jinliang Ou (@oujinliang), Chuanyu Ban (@banchuanyu), Chuyang Wei (@brianway), Peng Zhang (@monsters-peng), Yaoli Liu (@iloayuil)

shepher's People

Contributors

banchuanyu avatar ihuangyaoshi avatar jhsenjaliya avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

shepher's Issues

Docker 必须要指定 mysql 镜像的版本 5.x!!!

Docker 必须要指定 mysql 镜像的版本 5.x!!!

mysql:latest 当前的版本是 8.X 启动是会 NPE

Caused by: java.lang.NullPointerException: null
at com.mysql.jdbc.ConnectionImpl.getServerCharset(ConnectionImpl.java:2997) ~[mysql-connector-java-5.1.39.jar:5.1.39]
at com.mysql.jdbc.MysqlIO.sendConnectionAttributes(MysqlIO.java:1936) ~[mysql-connector-java-5.1.39.jar:5.1.39]
at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1865) ~[mysql-connector-java-5.1.39.jar:5.1.39]
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1228) ~[mysql-connector-java-5.1.39.jar:5.1.39]
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2253) ~[mysql-connector-java-5.1.39.jar:5.1.39]
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2284) ~[mysql-connector-java-5.1.39.jar:5.1.39]
... 60 common frames omitted

面包屑每次点击一个路径都是一次页面跳转

东西做的还挺好的,赞一个。提几个建议:

  1. 每次点击zk路径的面包屑都是一次页面跳转;
  2. 为何没有类似过去taobao的zkweb一样提供一个树状菜单让用户点击展开呢?
  3. 搜索框能否支持模糊搜索?

CAS搭建成功后跳转失败

CAS搭建成功,CAS登录成功,跳转到shepher首页失败,还需要更改什么配置文件,shepher需要设置成https吗

日志报错,什么原因?

org.I0Itec.zkclient.exception.ZkException: Unable to connect to zookeeper:2181
at org.I0Itec.zkclient.ZkConnection.connect(ZkConnection.java:71) ~[zkclient-0.9.jar!/:na]
at org.I0Itec.zkclient.ZkClient.connect(ZkClient.java:1227) ~[zkclient-0.9.jar!/:na]
at org.I0Itec.zkclient.ZkClient.(ZkClient.java:156) ~[zkclient-0.9.jar!/:na]
at org.I0Itec.zkclient.ZkClient.(ZkClient.java:130) ~[zkclient-0.9.jar!/:na]
at org.I0Itec.zkclient.ZkClient.(ZkClient.java:97) ~[zkclient-0.9.jar!/:na]
at com.xiaomi.shepher.util.ZkPool$ZkClientFactory.create(ZkPool.java:73) ~[shepher-service-1.0.jar!/:1.0]
at com.xiaomi.shepher.util.ZkPool$ZkClientFactory.create(ZkPool.java:68) ~[shepher-service-1.0.jar!/:1.0]
at org.apache.commons.pool2.BaseKeyedPooledObjectFactory.makeObject(BaseKeyedPooledObjectFactory.java:62) ~[commons-pool2-2.4.2.jar!/:2.4.2]
at org.apache.commons.pool2.impl.GenericKeyedObjectPool.create(GenericKeyedObjectPool.java:1041) ~[commons-pool2-2.4.2.jar!/:2.4.2]
at org.apache.commons.pool2.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:357) ~[commons-pool2-2.4.2.jar!/:2.4.2]
at org.apache.commons.pool2.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:279) ~[commons-pool2-2.4.2.jar!/:2.4.2]
at com.xiaomi.shepher.util.ZkPool.getZkClient(ZkPool.java:46) ~[shepher-service-1.0.jar!/:1.0]
at com.xiaomi.shepher.dao.NodeDAO.getChildren(NodeDAO.java:44) [shepher-service-1.0.jar!/:1.0]
at com.xiaomi.shepher.dao.NodeDAO$$FastClassBySpringCGLIB$$569c2375.invoke() [shepher-service-1.0.jar!/:1.0]
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) [spring-core-4.2.7.RELEASE.jar!/:4.2.7.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:720) [spring-aop-4.2.7.RELEASE.jar!/:4.2.7.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) [spring-aop-4.2.7.RELEASE.jar!/:4.2.7.RELEASE]
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136) [spring-tx-4.2.7.RELEASE.jar!/:4.2.7.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) [spring-aop-4.2.7.RELEASE.jar!/:4.2.7.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:655) [spring-aop-4.2.7.RELEASE.jar!/:4.2.7.RELEASE]
at com.xiaomi.shepher.dao.NodeDAO$$EnhancerBySpringCGLIB$$bbb3b177.getChildren() [shepher-service-1.0.jar!/:1.0]
at com.xiaomi.shepher.service.NodeService.getChildren(NodeService.java:70) [shepher-service-1.0.jar!/:1.0]
at com.xiaomi.shepher.controller.NodeController.home(NodeController.java:95) [shepher-web-1.0.jar!/:1.0]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_102]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_102]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_102]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_102]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) [spring-web-4.2.7.RELEASE.jar!/:4.2.7.RELEASE]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) [spring-web-4.2.7.RELEASE.jar!/:4.2.7.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) [spring-webmvc-4.2.7.RELEASE.jar!/:4.2.7.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:832) [spring-webmvc-4.2.7.RELEASE.jar!/:4.2.7.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:743) [spring-webmvc-4.2.7.RELEASE.jar!/:4.2.7.RELEASE]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) [spring-webmvc-4.2.7.RELEASE.jar!/:4.2.7.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:961) [spring-webmvc-4.2.7.RELEASE.jar!/:4.2.7.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(Dispa^C
[root@shepher shepher-packaging-1.0-bin]# ^C
[root@shepher shepher-packaging-1.0-bin]# ^C
[root@shepher shepher-packaging-1.0-bin]# vim nohup.out
at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:87) [spring-web-4.2.7.RELEASE.jar!/:4.2.7.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.2.7.RELEASE.jar!/:4.2.7.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [tomcat-embed-core-8.0.36.jar!/:8.0.36]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [tomcat-embed-core-8.0.36.jar!/:8.0.36]
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77) [spring-web-4.2.7.RELEASE.jar!/:4.2.7.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.2.7.RELEASE.jar!/:4.2.7.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [tomcat-embed-core-8.0.36.jar!/:8.0.36]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [tomcat-embed-core-8.0.36.jar!/:8.0.36]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121) [spring-web-4.2.7.RELEASE.jar!/:4.2.7.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.2.7.RELEASE.jar!/:4.2.7.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [tomcat-embed-core-8.0.36.jar!/:8.0.36]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [tomcat-embed-core-8.0.36.jar!/:8.0.36]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) [tomcat-embed-core-8.0.36.jar!/:8.0.36]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) [tomcat-embed-core-8.0.36.jar!/:8.0.36]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) [tomcat-embed-core-8.0.36.jar!/:8.0.36]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) [tomcat-embed-core-8.0.36.jar!/:8.0.36]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) [tomcat-embed-core-8.0.36.jar!/:8.0.36]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) [tomcat-embed-core-8.0.36.jar!/:8.0.36]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528) [tomcat-embed-core-8.0.36.jar!/:8.0.36]
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099) [tomcat-embed-core-8.0.36.jar!/:8.0.36]
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670) [tomcat-embed-core-8.0.36.jar!/:8.0.36]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520) [tomcat-embed-core-8.0.36.jar!/:8.0.36]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476) [tomcat-embed-core-8.0.36.jar!/:8.0.36]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_102]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_102]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.0.36.jar!/:8.0.36]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_102]
Caused by: java.net.UnknownHostException: zookeeper
at java.net.InetAddress.getAllByName0(InetAddress.java:1280) ~[na:1.8.0_102]
at java.net.InetAddress.getAllByName(InetAddress.java:1192) ~[na:1.8.0_102]
at java.net.InetAddress.getAllByName(InetAddress.java:1126) ~[na:1.8.0_102]
at org.apache.zookeeper.client.StaticHostProvider.(StaticHostProvider.java:61) ~[zookeeper-3.4.6.jar!/:3.4.6-1569965]
at org.apache.zookeeper.ZooKeeper.(ZooKeeper.java:445) ~[zookeeper-3.4.6.jar!/:3.4.6-1569965]
at org.apache.zookeeper.ZooKeeper.(ZooKeeper.java:380) ~[zookeeper-3.4.6.jar!/:3.4.6-1569965]
at org.I0Itec.zkclient.ZkConnection.connect(ZkConnection.java:69) ~[zkclient-0.9.jar!/:na]
... 107 common frames omitted

2019-09-06 11:24:53.181 INFO 44992 --- [nio-8089-exec-1] org.apache.zookeeper.ZooKeeper : Initiating client connection, connectString=zookeeper:2181 sessionTimeout=30000 watcher=org.I0Itec.zkclient.ZkClient@8036f31
2019-09-06 11:24:53.183 ERROR 44992 --- [nio-8089-exec-1] com.xiaomi.shepher.util.ZkPool : Get zkClient error

org.I0Itec.zkclient.exception.ZkException: Unable to connect to zookeeper:2181
at org.I0Itec.zkclient.ZkConnection.connect(ZkConnection.java:71) ~[zkclient-0.9.jar!/:na]
at org.I0Itec.zkclient.ZkClient.connect(ZkClient.java:1227) ~[zkclient-0.9.jar!/:na]
at org.I0Itec.zkclient.ZkClient.(ZkClient.java:156) ~[zkclient-0.9.jar!/:na]
at org.I0Itec.zkclient.ZkClient.(ZkClient.java:130) ~[zkclient-0.9.jar!/:na]
at org.I0Itec.zkclient.ZkClient.(ZkClient.java:97) ~[zkclient-0.9.jar!/:na]
at com.xiaomi.shepher.util.ZkPool$ZkClientFactory.create(ZkPool.java:73) ~[shepher-service-1.0.jar!/:1.0]
at com.xiaomi.shepher.util.ZkPool$ZkClientFactory.create(ZkPool.java:68) ~[shepher-service-1.0.jar!/:1.0]
"nohup.out" 5433L, 740423C 4061,2-9 74%
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) [tomcat-embed-core-8.0.36.jar!/:8.0.36]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) [tomcat-embed-core-8.0.36.jar!/:8.0.36]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) [tomcat-embed-core-8.0.36.jar!/:8.0.36]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528) [tomcat-embed-core-8.0.36.jar!/:8.0.36]
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099) [tomcat-embed-core-8.0.36.jar!/:8.0.36]
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670) [tomcat-embed-core-8.0.36.jar!/:8.0.36]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520) [tomcat-embed-core-8.0.36.jar!/:8.0.36]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476) [tomcat-embed-core-8.0.36.jar!/:8.0.36]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_102]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_102]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.0.36.jar!/:8.0.36]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_102]
Caused by: java.net.UnknownHostException: zookeeper
at java.net.InetAddress.getAllByName0(InetAddress.java:1280) ~[na:1.8.0_102]
at java.net.InetAddress.getAllByName(InetAddress.java:1192) ~[na:1.8.0_102]
at java.net.InetAddress.getAllByName(InetAddress.java:1126) ~[na:1.8.0_102]
at org.apache.zookeeper.client.StaticHostProvider.(StaticHostProvider.java:61) ~[zookeeper-3.4.6.jar!/:3.4.6-1569965]
at org.apache.zookeeper.ZooKeeper.(ZooKeeper.java:445) ~[zookeeper-3.4.6.jar!/:3.4.6-1569965]
at org.apache.zookeeper.ZooKeeper.(ZooKeeper.java:380) ~[zookeeper-3.4.6.jar!/:3.4.6-1569965]
at org.I0Itec.zkclient.ZkConnection.connect(ZkConnection.java:69) ~[zkclient-0.9.jar!/:na]
... 107 common frames omitted

2019-09-06 11:30:13.298 INFO 44992 --- [nio-8089-exec-6] org.apache.zookeeper.ZooKeeper : Initiating client connection, connectString=zookeeper:2181 sessionTimeout=30000 watcher=org.I0Itec.zkclient.ZkClient@256edbea
2019-09-06 11:30:13.300 ERROR 44992 --- [nio-8089-exec-6] com.xiaomi.shepher.util.ZkPool : Get zkClient error

org.I0Itec.zkclient.exception.ZkException: Unable to connect to zookeeper:2181
at org.I0Itec.zkclient.ZkConnection.connect(ZkConnection.java:71) ~[zkclient-0.9.jar!/:na]
at org.I0Itec.zkclient.ZkClient.connect(ZkClient.java:1227) ~[zkclient-0.9.jar!/:na]
at org.I0Itec.zkclient.ZkClient.(ZkClient.java:156) ~[zkclient-0.9.jar!/:na]
at org.I0Itec.zkclient.ZkClient.(ZkClient.java:130) ~[zkclient-0.9.jar!/:na]
at org.I0Itec.zkclient.ZkClient.(ZkClient.java:97) ~[zkclient-0.9.jar!/:na]
at com.xiaomi.shepher.util.ZkPool$ZkClientFactory.create(ZkPool.java:73) ~[shepher-service-1.0.jar!/:1.0]
at com.xiaomi.shepher.util.ZkPool$ZkClientFactory.create(ZkPool.java:68) ~[shepher-service-1.0.jar!/:1.0]
at org.apache.commons.pool2.BaseKeyedPooledObjectFactory.makeObject(BaseKeyedPooledObjectFactory.java:62) ~[commons-pool2-2.4.2.jar!/:2.4.2]
at org.apache.commons.pool2.impl.GenericKeyedObjectPool.create(GenericKeyedObjectPool.java:1041) ~[commons-pool2-2.4.2.jar!/:2.4.2]
at org.apache.commons.pool2.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:357) ~[commons-pool2-2.4.2.jar!/:2.4.2]
at org.apache.commons.pool2.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:279) ~[commons-pool2-2.4.2.jar!/:2.4.2]
at com.xiaomi.shepher.util.ZkPool.getZkClient(ZkPool.java:46) ~[shepher-service-1.0.jar!/:1.0]
at com.xiaomi.shepher.dao.NodeDAO.getData(NodeDAO.java:71) [shepher-service-1.0.jar!/:1.0]
at com.xiaomi.shepher.dao.NodeDAO$$FastClassBySpringCGLIB$$569c2375.invoke() [shepher-service-1.0.jar!/:1.0]
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) [spring-core-4.2.7.RELEASE.jar!/:4.2.7.RELEASE]

How to Import db/init.sql in to MySQL?

Hi, I've been searching for this since I am a newbie in Ubuntu, how to exactly import db/init.sql into MySQL? I've used sudo mysql -u my_username shepher < ~/shepher/db/init.sql but this ask me for a password Enter password: ERROR 1045 (28000): Access denied for user 'my_username@'localhost' (using password: YES) I simply don't know. How to correctly import db/init.sql into MySQL?

Insecure Transport: Mail Transmission

Email email = new HtmlEmail();
email.setHostName(hostname);
email.setAuthenticator(new DefaultAuthenticator(username, password));
email.setSmtpPort(port);
email.setFrom(from, fromname);
email.setSubject(title);
email.setMsg(content);
email.addTo(mailAddress.split(mailAddressEndSeparator));
email.send();

Establishing an unencrypted connection to a mail server allows an attacker to carry out a man-in-the-middle attack and read all the mail transmissions.
SSL/TLS connection is a better choice

通过docker启动,访问网址直接报错了

Shepher Error Page
nested exception is org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet successfully received from the server was 3 milliseconds ago. The last packet sent successfully to the server was 3 milliseconds ago. ### The error may exist in com/xiaomi/shepher/dao/UserMapper.java (best guess) ### The error may involve com.xiaomi.shepher.dao.UserMapper.getByName ### The error occurred while executing a query ### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet successfully received from the server was 3 milliseconds ago. The last packet sent successfully to the server was 3 milliseconds ago. ,click here to home page

Etcd support

Does Shepher have any plan to support Etcd? Or who plans to add this feature?

反射型xss

您好:
我是奇安信代码卫士的工作人员,在我们的开源代码检测项目中发现shepher存在一处反射型xss漏洞和重定向漏洞,详细信息如下:
图片
接收了请求中的referer请求头,而该请求头是不可信的,最后该参数用于重定向,且如果使用javascript://还可能导致xss漏洞

文件数据库管理

现在看来权限需要依赖mysql,对于大公司来说,员工比较多可以使用mysql,但对于小公司或者产品team来说,权限不会设置的那么细且权限数据并不会太多,是否可以考虑将支持一下内存数据库或者小文件数据库,这样可以减少mysql的依赖,且不必为了这个还需要安装一个mysql

Start shepher failed.

Master branch.
Shepher start failed with this message:

sh bin/run.sh start
bin/run.sh: line 14: $'\r': command not found
bin/run.sh: line 16: $'\r': command not found
: No such file or directoryn
bin/run.sh: line 22: $'\r': command not found
bin/run.sh: line 46: syntax error near unexpected token `$'in\r''
'in/run.sh: line 46: `    case $OPT in

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.