From b711f54b84625cdb3d4b221e66b67b4427e1b94d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoffer=20M=C3=BCller=20Madsen?= Date: Thu, 15 Jun 2017 00:45:15 +0200 Subject: [PATCH] update sqlite? --- .gitignore | 2 ++ Gemfile | 6 ++++++ docker/Dockerfile | 28 ++++++++++++++++++++++++++++ docker/build.sh | 3 +++ lib/emacscollab/collab.rb | 4 ++++ lib/emacscollab/database/sqlite.rb | 12 ++++++++++++ prompt.rb | 6 +++--- 7 files changed, 58 insertions(+), 3 deletions(-) create mode 100644 .gitignore create mode 100644 Gemfile create mode 100644 docker/Dockerfile create mode 100755 docker/build.sh diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bf7604d --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*~ +*# diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..43a2066 --- /dev/null +++ b/Gemfile @@ -0,0 +1,6 @@ +source 'https://rubygems.org' +gem 'fileutils' +gem 'tty-prompt' +gem 'colorize' +gem 'sqlite3' +gem 'scrypt' diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..75f830d --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,28 @@ +FROM ubuntu:xenial + +RUN apt-get update +RUN apt-get install -y emacs-nox ruby openssh-server +RUN apt-get install -y build-essential libsqlite3-dev sqlite3 +RUN gem install tty-prompt colorize +RUN mkdir /var/run/sshd + +# SSH login fix. Otherwise user is kicked off after login +RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd + +ADD eshell /usr/bin/ + +COPY Gemfile* /tmp/ +WORKDIR /tmp +RUN bundle install + +ENV app /app +RUN mkdir $app +WORKDIR $app + +#ENV BUNDLE_PATH /box +#ADD ../. $app + +VOLUME /home + +EXPOSE 22 +CMD ["/usr/sbin/sshd", "-D"] diff --git a/docker/build.sh b/docker/build.sh new file mode 100755 index 0000000..e59ae48 --- /dev/null +++ b/docker/build.sh @@ -0,0 +1,3 @@ +#!/bin/sh +cp ../eshell ./ +docker build -t emacs-collab:latest . diff --git a/lib/emacscollab/collab.rb b/lib/emacscollab/collab.rb index 0a0968e..82b3d00 100644 --- a/lib/emacscollab/collab.rb +++ b/lib/emacscollab/collab.rb @@ -33,6 +33,10 @@ module EmacsCollab $db.get_user(id) end + def self.get_users + $db.get_users + end + def self.change_user_password(id,password) user = get_user_by_id(id) diff --git a/lib/emacscollab/database/sqlite.rb b/lib/emacscollab/database/sqlite.rb index b814d6d..5aa432a 100644 --- a/lib/emacscollab/database/sqlite.rb +++ b/lib/emacscollab/database/sqlite.rb @@ -28,6 +28,18 @@ module EmacsCollab user end + def get_users + user_rows = @db.execute("SELECT * FROM Users") + + user_rows.map do |row| + user = User.new(row[0]) + user.pw_hash = row[1] + user.salt = row[2] + user.keys = row[3] == nil ? nil : JSON.parse(row[3]) + user + end + end + def add_user(user) @db.execute("INSERT INTO Users (name) VALUES (?)", [user.id]) diff --git a/prompt.rb b/prompt.rb index 745609c..b659751 100644 --- a/prompt.rb +++ b/prompt.rb @@ -19,7 +19,7 @@ def init end def users - choices = $users + choices = EmacsCollab.get_users user = $prompt.select("Pick a user", choices) keys_user(user) end @@ -88,12 +88,12 @@ def project_users(project) when :list project.users.each {|u| puts u.id} when :add - choices = $users + choices = EmacsCollab.get_users user = $prompt.select("Pick a user", choices) project.add_user(user) puts "Added user #{user} to #{project}".colorize(:green) when :select - choices = $users + choices = EmacsCollab.get_users # Mark already added users as "default" defaults = []