summaryrefslogtreecommitdiff
path: root/app/controllers/memory_controller.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers/memory_controller.rb')
-rw-r--r--app/controllers/memory_controller.rb53
1 files changed, 53 insertions, 0 deletions
diff --git a/app/controllers/memory_controller.rb b/app/controllers/memory_controller.rb
new file mode 100644
index 0000000..6d5947e
--- /dev/null
+++ b/app/controllers/memory_controller.rb
@@ -0,0 +1,53 @@
+class MemoryController < ApplicationController
+
+ before_filter :logged_in
+
+ def index
+ current_uuid = current_user.uuid.gsub("-", "")
+ Dir.chdir("/etc/minecraft/redstoner/plugins/JavaUtils/memory/players/#{current_uuid}")
+ psjson = JSON.parse(File.read("projects.json"))
+ @projects = psjson["owns"] + psjson["read"] + psjson["write"]
+ @project_names = @projects.collect{|p| (data = JSON.parse(File.read(File.expand_path("../..")+"/projects/#{p}/project.json")))["name"] + " | #{"own" if data["owner"] == current_uuid}#{"write" if data["write"].include? current_uuid}#{"read" if data["read"].include? current_uuid}"}
+
+ end
+
+ def list
+ render :index
+ end
+
+ def table
+ Dir.chdir("/etc/minecraft/redstoner/plugins/JavaUtils/memory/projects/#{params[:project]}")
+ @data = []
+ Dir.glob('*').reverse.each do |f|
+ File.open(Dir.pwd+"/#{f}") do |file|
+ @data.concat(file.read.unpack("C*").map{|h| h.to_s(16)})
+ if JSON.parse((jf = File.open(Dir.pwd+"/project.json")).read)["read"].include? current_user.uuid.gsub("-","")
+ @can_edit = false
+ else
+ @can_edit = true
+ end
+ jf.close
+ end
+ end
+ end
+
+ def update_memory
+ Dir.chdir("/etc/minecraft/redstoner/plugins/JavaUtils/memory/projects/#{params[:project]}")
+ new_text = ""
+ File.open("#{params[:file]}.hex"){|f| new_text = f.read.unpack("C*").collect{|h| h.to_s(16)}}
+ new_text[params[:mem_id].to_i] = params[:value]
+ File.open("#{params[:file]}.hex", "w") do |f|
+ f.write((new_text.collect{|h| h.to_s.to_i(16)}).pack("C*").force_encoding("UTF-8"))
+ end
+ render nothing: true
+ end
+
+ private
+
+ def logged_in
+ unless current_user
+ flash[:alert] = "Please log in before viewing memory files."
+ redirect_to home_statics_path
+ end
+ end
+end