Added basic hexfile reading that respects r/w perms

This commit is contained in:
MrYummy
2017-07-01 04:48:52 +02:00
parent 3bfc74045f
commit 0f74795159
16 changed files with 120 additions and 9 deletions

View File

@@ -51,4 +51,4 @@ $(function(){
return time + " " + unit + tail;
}
});
});
});

View File

@@ -14,4 +14,5 @@
//= require app
//= require editor
//= require highlight
//= require jquery-textcomplete
//= require jquery-textcomplete
//= require memory

View File

@@ -89,4 +89,4 @@ $(function() {
debounce: 300
});
});
});

View File

@@ -0,0 +1,19 @@
$(function() {
var data = [];
$('td').keydown(function() {
data.push(this.id, $(this).html().substr(0, 2)); //position, value
})
$('td').blur(function() {
if ((id_i = data.indexOf(this.id) != -1) && data[id_i+1] != $(this).html().substr(0, 2)) {
var int_id = this.id.split("-")[1]
$.post("/memory/update_memory?project="+$(this).closest("table").data("project")+"&file="+Math.floor((int_id/2048)+1)+"&mem_id="+int_id%2048+"&value="+$(this).html().substr(0, 2));
data.splice(id_i, 2);
}
});
$('select').change(function() {
$.get("/memory/table?project="+$(this).data("project")+"&file="+$(this).find("option:selected").text()+".hex")
});
});

View File

@@ -1026,4 +1026,11 @@ nav.pagination {
padding: 0.1em 0.2em;
border-radius: 0.2em;
text-shadow: none;
}
}
.memory-table {
width: 870px;
margin: auto;
th, td {
border: 1px solid black;
}
}

Binary file not shown.

View File

@@ -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

View File

@@ -0,0 +1,2 @@
module MemoryHelper
end

View File

@@ -173,4 +173,4 @@ class User < ActiveRecord::Base
def set_email_token
self.email_token ||= SecureRandom.hex(16)
end
end
end

View File

@@ -51,4 +51,4 @@
</div>
<% end %>
<%= paginate @threads %>
</div>
</div>

View File

@@ -25,4 +25,4 @@
</div>
<%= render partial: "/layouts/footer" %>
</body>
</html>
</html>

View File

@@ -0,0 +1,4 @@
<%= form_tag "memory/table", method: :get do %>
<%= select_tag "project", options_for_select(@projects.collect.with_index{|p, i| [@project_names[i], p]}) %>
<%= submit_tag "View Table", name: nil %>
<% end %>

View File

@@ -0,0 +1,16 @@
<table class="memory-table", data-project="<%=params[:project]%>">
<tr>
<% ["Address","0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"].each do |i| %>
<th><b><%=i%></b></th>
<% end %>
</tr>
<% @data.in_groups_of(16).each_with_index do |row, rindex| %>
<tr>
<td><b><%=(rindex*16).to_s(16).upcase.rjust(6, "0")%></b></td>
<% row.each_with_index do |hex, hindex| %>
<td contenteditable="<%=@can_edit%>" id="memory-<%=(16*rindex)+hindex%>"><%=hex.to_s.upcase.rjust(2, "0")%></td>
<% end %>
</tr>
<% end %>
</table>
<br>

View File

@@ -30,4 +30,4 @@
<span>for those who just want to mine some ore</span>
<span>and we have a freebuild world for large projects.</span>
</p>
<p>Join us now!</p>
<p>Join us now!</p>

View File

@@ -19,4 +19,4 @@
</div>
<% end %>
<%= paginate @users %>
</div>
</div>